<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Здоровий глузд: дописи з тегом автоматизація</title>
<link>https://blog-archive.alexkolodko.com/tags/avtomatizaciya-2/</link>
<description>Олександр Колодько. Інформаційний та навігаційний дизайнер. Співзасновник команди ARC, співзасновник та головний дизайнер в Агентах змін (А3). Пишу про дизайн і цікаве мені · alexkolodko.com · wayfinding.systems</description>
<author></author>
<language>uk</language>
<generator>Aegea 11.3 (v4134)</generator>

<itunes:subtitle>Олександр Колодько. Інформаційний та навігаційний дизайнер. Співзасновник команди ARC, співзасновник та головний дизайнер в Агентах змін (А3). Пишу про дизайн і цікаве мені · alexkolodko.com · wayfinding.systems</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Швидке розпізнавання тексту з екрана чи файлів у macOS</title>
<guid isPermaLink="false">166</guid>
<link>https://blog-archive.alexkolodko.com/all/automation-shortcuts-macos-ocr/</link>
<pubDate>Sun, 25 Jan 2026 19:28:43 +0200</pubDate>
<author></author>
<comments>https://blog-archive.alexkolodko.com/all/automation-shortcuts-macos-ocr/</comments>
<description>
&lt;p&gt;Ті, хто користуються macOS починаючи з версії 11, могли помітити, що у Preview є можливість виділяти та копіювати текст з зображень. У систему вбудований непоганий розпізнавач тексту (OCR). Але не всі знають, що його можна викликати не тільки у Preview, а застосувати до будь-чого.&lt;/p&gt;
&lt;p&gt;За допомогою Shortcuts я створив два сценарії розпізнавання тексту: з виділеної частини екрана, як при скриншоті, та з вибраного файлу у Finder. Результат копіюється образу в буфер і його можна образу вставляти куди треба. При цьому можна також додати гарячі клавіші для виклику кожного, наприклад, для розпізнавання з екрану у мене це ⌘7.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/automation-shortcuts-macos-ocr-1.png" width="2400" height="1564" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/automation-shortcuts-macos-ocr-2.mp4#t=0.001" width="2560" height="1604.4444444444" controls alt="" /&gt;

&lt;/div&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/automation-shortcuts-macos-ocr-3.mp4#t=0.001" width="2560" height="1604.4444444444" controls alt="" /&gt;

&lt;/div&gt;
&lt;p&gt;Нижче викладаю самі файли Shortcuts, які можете додати собі. Продуктивної роботи всім 🦾&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.icloud.com/shortcuts/dd40af84219846368d24a2222b110d4b"&gt;Розпізнавання з частини екрану&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.icloud.com/shortcuts/295019a1b8a14a1095ac99f5fa961a62"&gt;Розпізнавання з файлу&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
</item>

<item>
<title>QA: Кодинг у дизайні</title>
<guid isPermaLink="false">163</guid>
<link>https://blog-archive.alexkolodko.com/all/qa-design-and-coding/</link>
<pubDate>Sun, 29 Sep 2024 15:13:08 +0200</pubDate>
<author></author>
<comments>https://blog-archive.alexkolodko.com/all/qa-design-and-coding/</comments>
<description>
&lt;p&gt;&lt;b&gt;Q: Привіт! Хотів спитати, бо я іноді заходжу на твій сайт, і часто бачу кодінг. Як взагалі відносишся до кодінгу у дизайні? думаю, може варто вивчити щось і закодіть, бо я бачу ти часто використовуєш програмування у дизайні&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;A: В принципі, для дизайну, як такого, кодінг не потрібен. Це просто додатковий інструмент для спрощення деяких видів задач у повсякденній роботі. Або ж можливість самостійно можна закривати більшу частину рутини, без додаткової комунікації (комусь, як мені, це в плюс 😅).&lt;/p&gt;
&lt;p&gt;Мені нещодавно сказали, що вже є термін Design Engineer, про дизайнерів-кодерів. Виходить це оформлюється в цілий напрям, особливо з розвитком технічних інструментів.&lt;/p&gt;
&lt;p&gt;Ще мені особисто просто подобається програмування, я його розумію і тому, напевно, часто використовую. Але мої знання все одно неглибокі, я досконало не знаю жодної мови програмування.&lt;/p&gt;
&lt;p&gt;Основне — розуміти алгоритми, як взагалі працюють будь-які програми (змінні, умови, цикли, типи даних тощо). З цим знанням вже можна пошукати в Гуглі рішення чи приклади коду на Stackoverflow в цей алгоритм. Зараз все частіше ще питаю у ChatGPT/Gemini/Claude3 і вони все частіше видають робочий код.&lt;/p&gt;
&lt;p&gt;І дивлячись на практики розробників, можна собі в дизайн роботу щось теж взяти. Наприклад CI/CD (continuous integration and continuous delivery). Це автоматична збірка коду, його тестування та публікація. Це дозволяє дуже швидко вносити зміни.&lt;/p&gt;
&lt;p&gt;У дизайні цей приклад можна порівняти з підтримкою проєкта та оновленням макетів.&lt;/p&gt;
&lt;p&gt;Наприклад, схема метро має кілька видів: у вагон біла, у вагон прозора, на стенди та на стінах швидкісний трамвай (при чому з відміткою на кожній станції, це 18 макетів). Коли перейменовують якусь станцію чи відбуваються якісь зміни, то потрібно оновлювати цей весь парк.&lt;/p&gt;
&lt;p&gt;Є два основних макети в АІ: біла схема і темна. Далі всі світлі через різні шаблони в ID готуються під різні розміри (вагон, стенд, трамвай). А в кінці окремі скрипти нарізають, масштабують і перейменовують однаково всі трамвайні схеми. Щось ще перезберігається в TIFF, бо так вимагає типографія.&lt;/p&gt;
&lt;p&gt;Налаштування цього займає певний час, але потім окупається. Бо робити це все руками при кожному оновленні займає кожен раз купу часу. Якщо ви стикаєтесь з тим що вже більше трьох разів робите одні і ті самі дії, то можна подумати як то автоматизувати. Бо один раз це випадковість, два — збіг, три — тенденція 😌&lt;/p&gt;
&lt;p&gt;&lt;hr&gt;&lt;/p&gt;
&lt;div&gt;&lt;div style="float: left;"&gt;&lt;p&gt;&lt;span style="font-weight:bold; font-size: 3em"&gt;&lt;b&gt;?&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div style="padding: 1em 0 0 4em"&gt;&lt;p&gt;Якщо у вас є питання або приклад дизайну, які потрібно подивитись та прокоментувати, напишіть на &lt;a href="mailto:alexkolodko@gmail.com"&gt;пошту&lt;/a&gt; або у &lt;a href="https://t.me/alexkolodko"&gt;телеграм&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;</description>
</item>

<item>
<title>Автоматизація Excel та Word</title>
<guid isPermaLink="false">148</guid>
<link>https://blog-archive.alexkolodko.com/all/automation-excel-and-word/</link>
<pubDate>Sat, 15 Jun 2024 10:44:45 +0200</pubDate>
<author></author>
<comments>https://blog-archive.alexkolodko.com/all/automation-excel-and-word/</comments>
<description>
&lt;p&gt;Гарний &lt;a href="https://x.com/MisterDimon/status/1801676484093816850"&gt;тред&lt;/a&gt; про автоматизацію документів у ЗСУ на основі шаблонів Word та даних в Excel.&lt;/p&gt;
&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="uk" dir="ltr"&gt;Може комусь згодиться. Тред, як я роблю 100 рапортів на відпустку менше ніж за 10 хвилин🧵&lt;/p&gt;
&lt;p&gt;&amp;mdash; Mr.Dimon (@MisterDimon) &lt;a href="https://twitter.com/MisterDimon/status/1801676484093816850?ref_src=twsrc%5Etfw"&gt;June 14, 2024&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;Ще:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.google.com/document/d/1h8wstTB5kuBmGWpUb3ro4v56_4QcxFeqObB06d0mTVQ/edit"&gt;Тред, як один Google Doc&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.dropbox.com/scl/fi/ickva9ob4k7i3jmfbso9c/Excel-Word.pdf?rlkey=13jk6e89ykpz8lpn3t5vvfpf6&amp;dl=0"&gt;Тред, як PDF&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;hr&gt;&lt;/p&gt;
&lt;p&gt;Дано: треба зробити 100 рапортів на відпустку для військовослужбовців. Для прикладу візьмемо уявну базу даних в Excel із В/Ч де служать 100 найбагатших зі списку Форбс 2021 (у прикладі всі адреси і телефони, посади і звання вигадані)&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/GQDXOXOWYAAeiwr.jpeg" width="1628" height="909" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Щоб це зробити я користуюсь функцією «злиття» у Word. Тепер покроково. Підготуємо шаблон рапорту на відпустку (за основу взято зразок із turbota.mil.gov.ua) виділяємо жирним або курсивом поля, які треба змінити: адреса, телефон, звання, посада, ПІБ, ПІБ в родовому відмінку&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/GQDXPIzW4AEJO7y.jpeg" width="1929" height="1039" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Далі переходимо у вкладку «Розсилки». Вибираємо «Розпочати злиття» і «Майстер злиття електронних повідомлень»&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/GQDXPx-XEAAMKGQ.jpeg" width="1920" height="969" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Справа відкриється вікно для злиття документів. У перших двох кроках нічого не змінюємо. На першому кроці залишаємо «Листи». Переходимо до другого кроку і там лишаємо «Поточний документ»&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/GQDXQgMXsAAxowW.jpeg" width="1929" height="983" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/GQDXQgUWMAAFccW.jpeg" width="1929" height="983" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;На третьому кроці лишаємо активним «Використання списку». Далі натискаємо «Огляд» та вибираємо файл Excel зі створеним списком військовослужбовців, яким треба зробити рапорт&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/GQDXRIvW4AATqCH.jpeg" width="1845" height="803" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Якщо у файлі Excel було декілька аркушів, то обираємо той, де внесені наші дані&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/GQDXRuaWMAE9Noc.jpeg" width="1908" height="964" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;У наступному вікні відкриється наш список із військовослужбовцями і їх даними. При потребі його можна редагувати використовуючи доступні у вікні параметри. Я ж лишаю все без змін&lt;/p&gt;
&lt;p&gt;Переходимо до четвертого кроку. Заповнюємо поля, які мають змінюватися. Виділяємо текст, який буде змінюватися, наприклад «адреса». У вікні «Злиття», тому що справа обираємо «Інші елементи»&lt;br /&gt;
та додаємо поле злиття адреса&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/GQDXS7nWEAAoZyM.jpeg" width="1920" height="969" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;І так покроково робимо зі всіма полями для злиття&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/GQDXS7oXAAADIgA.jpeg" width="1926" height="966" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/GQDXSWbXAAAGOx2.jpeg" width="1923" height="975" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Переходимо до пʼятого кроку і бачмо, що всі поля для злиття змінилися на дані, що були у нашій Excel таблиці. Якщо натискати на стрілки у вікні «Злиття» то вони будуть відповідно змінюватися&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/GQDXTugWQAAhNCC.jpeg" width="1024" height="532" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;На завершальному шостому кроці зберігаємо результати у 100 рапортів. Для цього у вікні «Злиття» обираємо «Змінити окремі листи», або зверху у вкладці розсилки обираємо «Завершити і обʼєднати». Залишаємо активним поле «Усі» та натискаємо ОК&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/GQDXUrEXIAA4DRN.jpeg" width="1024" height="520" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;На виході отримуємо 100 рапортів. При потребі, перевіряємо чи немає помилок і друкуємо&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/GQDXVH-W8AELc4w.jpeg" width="1899" height="984" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Дякую, всім хто дочитав до кінця. Якщо інформація була корисною пишіть і діліться своїми лайфхаками, що спрощують боротьбу зі святою українською бюрократією😉&lt;/p&gt;
&lt;p&gt;&lt;hr&gt;&lt;/p&gt;
&lt;p&gt;Від себе додам ще посилання:&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Зразки документів від МО&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://turbota.mil.gov.ua/zrazky-documentiv"&gt;https://turbota.mil.gov.ua/zrazky-documentiv&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Зразки рапортів&lt;/b&gt;&lt;br /&gt;
Ще один сайт з рапортами&lt;/p&gt;
&lt;p&gt;&lt;a href="https://legal100.org.ua/uchasnykam-rosiisko-ukrainskoi-viiny/zrazky-raportiv-ta-zaiav/"&gt;https://legal100.org.ua/uchasnykam-rosiisko-ukrainskoi-viiny/zrazky-raportiv-ta-zaiav/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Інструменти і поради з автоматизації документів від Bot&amp;Partners&lt;/b&gt;&lt;br /&gt;
Підбірка інструментів автоматизації документів (ворд, ексель, гугл тощо):&lt;/p&gt;
&lt;p&gt;&lt;a href="https://bot-partners.notion.site/f8233690f8554651adb43f144231c83c"&gt;https://bot-partners.notion.site/f8233690f8554651adb43f144231c83c&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Doc Variables (Google Docs)&lt;/b&gt;&lt;br /&gt;
Розширення для Гугл Документів для замінили зміниих у тексті документу. Воно працює в межах одного документу, без таблиць.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://workspace.google.com/u/0/marketplace/app/doc_variables/232821636920"&gt;https://workspace.google.com/u/0/marketplace/app/doc_variables/232821636920&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Відмінювання ПІБ&lt;/b&gt;&lt;br /&gt;
Робив простий сайт де можна пачкою закинути і відмінювати піб. Щоб вставити в таблицю і з неї вже автоматизовувати. Робив для знайомого діловоду.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://pib.a3.kyiv.ua/"&gt;http://pib.a3.kyiv.ua/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Там є режим де всі відмінки разом і кнопка приведення до формату на документи.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://pib.a3.kyiv.ua/all"&gt;http://pib.a3.kyiv.ua/all&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Заповнення ПДФ-форм&lt;/b&gt;&lt;br /&gt;
Користуватись для заповнення PDF, як окремої форми можна цим:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://phihag.github.io/pdfform.js/docs/demo.html"&gt;https://phihag.github.io/pdfform.js/docs/demo.html&lt;/a&gt;&lt;/p&gt;
</description>
</item>

<item>
<title>Скрипти Adobe Illustrator та InDesign</title>
<guid isPermaLink="false">147</guid>
<link>https://blog-archive.alexkolodko.com/all/adobe-illustrator-and-indesign-scripts/</link>
<pubDate>Mon, 10 Jun 2024 22:29:54 +0200</pubDate>
<author></author>
<comments>https://blog-archive.alexkolodko.com/all/adobe-illustrator-and-indesign-scripts/</comments>
<description>
&lt;p&gt;У роботі все частіше якісь повторювані дії переношу у скрипти. І створив підбірку своїх місцями доволі простих скриптів і хочу з вами поділитись&lt;/p&gt;
&lt;p&gt;Сторінка:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://alexkolodko.github.io/adobe-scripts/"&gt;alexkolodko.github.io/adobe-scripts&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Репозиторій на Github:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://github.com/alexkolodko/adobe-scripts"&gt;github.com/alexkolodko/adobe-scripts&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Найцікавіші скрипти&lt;/h3&gt;
&lt;p&gt;Масштабує об’єкти у заданій пропорції, наприклад, якщо є макет наліпки на якій qr-код розміром 50×50, а потрібно масштабувати весь макет під розмір коду 80×80 (не у відсотках).&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/scale-objects-x2.mov#t=0.001" width="1852" height="1360" controls alt="" /&gt;

&lt;/div&gt;
&lt;p&gt;По розміру шрифту рахує приблизну відстань читабельності і це можна вивести текстом;&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/font-distance-readability-x2.mov#t=0.001" width="1852" height="1360" controls alt="" /&gt;

&lt;/div&gt;
&lt;p&gt;Нумерує об’єкти зліва-направо та зверху-вниз, наприклад, щоб пронумерувати варіанти дизайну;&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/numbering-objects-x2.mov#t=0.001" width="1852" height="1360" controls alt="" /&gt;

&lt;/div&gt;
&lt;p&gt;Виводить текстом всі кольори CMYK вибраних об’єктів.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/list-of-cmyk-colors-x2.mov#t=0.001" width="1998" height="1440" controls alt="" /&gt;

&lt;/div&gt;
&lt;p&gt;&lt;hr&gt;&lt;br /&gt;
У створенні скриптів мені дуже допомагає ChatGPT, я його навіть співавтором вказав 😅.&lt;/p&gt;
&lt;p&gt;Рік тому писав про автоматизацію з ChatGPT: &lt;a href="https://blog.alexkolodko.com/all/adobe-scripting-with-chatgpt/"&gt;частина 1&lt;/a&gt; та &lt;a href="https://blog.alexkolodko.com/all/design-automation-with-chatgpt-part2/"&gt;частина 2&lt;/a&gt;. Весь час користувався суто безкоштовною версією ChatGPT 3.5, так і не купив доступ до версії 4, але результат і без того виходив робочий. Також за цей час порівнював і інші моделі (MS Copilot, Claude), але вони видають гірший результат коду, який частіше не працює.&lt;/p&gt;
&lt;p&gt;І ще нагадаю, що &lt;a href="https://github.com/agentyzmin/adobe-scripts"&gt;в А3 теж є гарні скрипти транслітерації та збереження файлів&lt;/a&gt;, може будуть корисні. &lt;/p&gt;
</description>
</item>

<item>
<title>Скорочувач посилань на своєму сайті та генерація QR-кодів</title>
<guid isPermaLink="false">132</guid>
<link>https://blog-archive.alexkolodko.com/all/url-shortener-with-qr/</link>
<pubDate>Fri, 09 Feb 2024 18:58:17 +0200</pubDate>
<author></author>
<comments>https://blog-archive.alexkolodko.com/all/url-shortener-with-qr/</comments>
<description>
&lt;p&gt;Під час роботи над проєктом ознакування в заповіднику Тустані стикнувся з задач показувати на табличках QR код з більш детальною інформацією про обʼєкти. Але самі посиланні вели на &lt;a href="https://wiki.tustan.ua/index.php/%D0%9F%D0%B5%D1%80%D1%88%D0%B0_%D0%BB%D1%96%D0%BD%D1%96%D1%8F_%D0%BE%D0%B1%D0%BE%D1%80%D0%BE%D0%BD%D0%B8"&gt;wiki-сайт&lt;/a&gt;, тому посилання були дуже довгими. Відповідно QR-коди містили більше точок і потреб вали більших розмірів, інакше камера їх просто не зчитувала. Тому треба було мати короткі посилання, які б перенаправляли на потрібні сторінки. Тоді це питання вирішив якось адмін сайту.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="2348" data-ratio="1.8117283950617"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/tustan-2.png" width="2348" height="1296" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/tustan-1.png" width="2140" height="1604" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-caption"&gt;&lt;a href="https://guide.tustan.ua/preview/1/guide/1?ui.scrollTo=%D0%97%D1%83%D0%BF%D0%B8%D0%BD%D0%BA%D0%B0%201&amp;ui.player=%D0%97%D1%83%D0%BF%D0%B8%D0%BD%D0%BA%D0%B0%201&amp;ui.collapsible.expand=%D0%97%D1%83%D0%BF%D0%B8%D0%BD%D0%BA%D0%B0%201"&gt;Довге посилання&lt;/a&gt;, що перенаправляє потім в апці на потрібний розділ&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Потім вже в іншому кейсі стикнувся з необхідністю зробити на табличці QR, який в майбутньому можна було б змінити чи перенаправити.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/irpin.jpeg" width="951" height="960" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Табличка біля монумента в Ірпені&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Авжеж є різні сервіси, на кшталт bit.ly, але опція зміни посилань платна і заради одного-двох випадків не вартує того. Окрім цього будь-які зовнішні сервіси можуть в якусь мить закритись і ніяких даних потім не лишиться, на відміну від надрукованого десь посилання.&lt;/p&gt;
&lt;p&gt;Тож я пішов пошукати альтернативи та знайшов два непоганих методи, якщо ви маєте свій сайт чи хостинг. Можливо посилання буде вже не таке коротке, як це було б з коротким доменом, але це дасть зручний інтерфейс, який коротко та у зрозумілому вигляді передавати якісь довгі посилання на ті ж Гугл Документи чи інші сторінки.&lt;/p&gt;
&lt;h2&gt;htaccess — шлях адміна&lt;/h2&gt;
&lt;p&gt;Якщо ви адміністратор сайту, то логічно можна прописати редіректи (перенаправлення) у файлі &lt;i&gt;.htaccess&lt;/i&gt;. Але це дещо складно адмініструвати та треба знати як.&lt;/p&gt;
&lt;p&gt;Наприклад, коли ми міняли структуру сайту А3, то зробили додаткові редіректи, щоб працювали посилання, які були десь використані раніше: &lt;i&gt;&lt;a href="http://a3.kyiv.ua/metromap"&gt;a3.kyiv.ua/metromap&lt;/a&gt; &lt;/i&gt; → &lt;i&gt;&lt;a href="http://a3.kyiv.ua/projects/metromap"&gt;a3.kyiv.ua/projects/metromap&lt;/a&gt;&lt;/i&gt;.&lt;/p&gt;
&lt;p&gt;Рядок у файлі виглядає так:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;Redirect /metromap /projects/metromap&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;JS + TXT — найпростіше рішення&lt;/h2&gt;
&lt;p&gt;Інше рішення яке я знайшов — &lt;a href="https://github.com/robsd/js-url-shortener"&gt;js-url-shotener&lt;/a&gt; — це JS-скрипт, який зчитуватиме введену адресу та окремий TXT-файл в якому зберігатимуться самі редіректи. У самому текстовому файлі перенаправлення записуються у дуже простому вигляді: коротке посилання, далі стрілка з символів &lt;i&gt;=&gt;&lt;/i&gt; і далі довге посилання.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;i&gt;Shortlink =&gt; Longlink&lt;/i&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;І далі використовуємо  посилання має бути через символ решітки #. Наприклад, якщо ми розмістимо скрипт і текстовий файл у піддиректорії з назвою l, то коротке посилання матиме вигляд:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://wayfinding.systems/l#a"&gt; wayfinding.systems/l#a &lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/js&amp;txt-x2.mp4#t=0.001" width="2560" height="1600" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;Як працює скрипт&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Плюси:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Все працює максимально просто, як текст.&lt;/li&gt;
&lt;li&gt;Якщо посилання зникне чи буде не потрібно, то коротке посилання вестиме на головний сайт і не видаватиме помилку.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Мінуси:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Потрібно додавати до адреси символ #.&lt;/li&gt;
&lt;li&gt;Немає адмінки та статистики переходів чи якоїсь аналітики.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Додаємо адмінку&lt;/h3&gt;
&lt;p&gt;А в якості адмінки, яка дасть доступ не через FTP, а прямо на сайті, є простий файловий менеджер на PHP — &lt;a href="https://github.com/pheditor/pheditor"&gt;Pheditor&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;NB: Якщо розмістити всі файли та піддиректорії, то Pheditor матиме доступ тільки до них, а та решти сайту ні.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;i&gt;site.com\l\&lt;/i&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/pheditor-x2.mp4#t=0.001" width="2560" height="1600" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;Як працює адмінка Pheditor&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;Yourls — PHP-рішення зі зручною адмінкою та &lt;s&gt;блекджеком&lt;/s&gt; плагінами&lt;/h2&gt;
&lt;p&gt;Якщо маєте хостинг з підтримкою PHP, то є гарне опенсорс рішення, яке ви можете встановити, наприклад, на піддомені — движок &lt;a href="https://yourls.org/"&gt;Yourls&lt;/a&gt;. По факту база даних з адмінкою, в якій ви вписуєте довге посилання і короткий відповідник. Сервіс містить аналітику для відстеження кількості переходів та звідки були ці переходи.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/yourls-site.png" width="2400" height="1500" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Сайт Yourls&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Приємний плюс — можливість створити свій плагін, що розширятиме функції сайту або знайти &lt;a href="https://github.com/YOURLS/awesome"&gt;у цій прекрасній галереї&lt;/a&gt; вже готовий. Також можна створити свою тему оформлення, якщо хочете зробити сайт подібним до інших своїх сторінок.&lt;/p&gt;
&lt;p&gt;Для оформлення рекомендую тему &lt;a href="https://sleeky.flynntes.com/"&gt;Sleeky&lt;/a&gt;, яка виглядає найбільш сучасно і простою. Плюс ця тема містить модуль для додавання посилань без входу в адмінку, може буде корисно і можна цю сторінку оформити під себе.&lt;/p&gt;
&lt;h2&gt;Бонус: плагін, що генерує QR-код&lt;/h2&gt;
&lt;p&gt;Захотілось мати можливість швидко створити QR-код для нових коротких посилань.&lt;/p&gt;
&lt;p&gt;Тож &lt;a href="https://github.com/alexkolodko/yourls-local-qr-code/tree/main"&gt;зробив плагін&lt;/a&gt;, який при додаванні до посилання сполучення &lt;i&gt;.qr&lt;/i&gt;, на сайті відкривається окрема сторінка зі згенерованим кодом який можна зберегти у векторних форматах SVG та PDF, або растрових PNG та JPG.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/yourls-short-qr-x2.mp4#t=0.001" width="2560" height="1600" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;Як працює плагін&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Стиль QR-коду за замовчуванням чорний на прозорому тлі, але через параметри можна на це впливати. Наприклад, жовтий код (ff0, без символу #), тло кольору tomato та відступ від краю у 3 клітинки:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;color=ff0&lt;/li&gt;
&lt;li&gt;background=tomato&lt;/li&gt;
&lt;li&gt;padding=3&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/qr-custom.png" width="1600" height="1200" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Якщо ви хочете зафіксувати стиль, який буде застосовувати одразу при генерації, то у файлі плагіну&lt;i&gt; plugin.php&lt;/i&gt; пропишіть потрібні параметри, тоді вони передаватимуться разом з текстом.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;header(&amp;#039;Location: /qr?content=&amp;#039;.YOURLS_SITE.&amp;#039;/&amp;#039;.$keyword.&amp;#039;&amp;amp;color=ff0&amp;amp;background=tomato&amp;amp;padding=3&amp;#039;);&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;hr&gt;&lt;/p&gt;
&lt;div&gt;&lt;div style="float: left;"&gt;&lt;p&gt;&lt;span style="font-weight:bold; font-size: 3em"&gt;&lt;b&gt;₴&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div style="padding: 1em 0 0 4em"&gt;&lt;p&gt;Якщо вам було цікаво та корисно, можете пригостити мене кавою ☕️, задонатити чи підписатись:&lt;/p&gt;
&lt;ul&gt;
&lt;li style="margin-bottom:0;"&gt;на &lt;a href="https://base.mono.bank/EDCkFUWg3Tp64e"&gt;Базу&lt;/a&gt;&lt;/li&gt;
&lt;li style="margin-bottom:0;"&gt;на &lt;a href="https://www.buymeacoffee.com/alexkolodko?l=uk"&gt;Buy Me a Coffee&lt;/a&gt;&lt;/li&gt;
&lt;li style="margin-bottom:0;"&gt;напряму &lt;a href="https://alexkolodko.com/pay/"&gt;на картку Монобанку&lt;/a&gt; або &lt;a href="https://send.monobank.ua/5jVrTaRziu"&gt;через сайт&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;/div&gt;</description>
</item>

<item>
<title>Додаємо у Google Sheets посилання на всі файли у теці Google Drive</title>
<guid isPermaLink="false">130</guid>
<link>https://blog-archive.alexkolodko.com/all/link-to-images-from-gdrive-to-gsheet/</link>
<pubDate>Mon, 25 Dec 2023 12:40:44 +0200</pubDate>
<author></author>
<comments>https://blog-archive.alexkolodko.com/all/link-to-images-from-gdrive-to-gsheet/</comments>
<description>
&lt;p&gt;Досліджував автоматизацію у Фігмі (напишу окремо). В ній для автоматизованого додавання картинок, потрібно давати на них прямі посилання. Можна завантажувати файли на FTP або копіювати напряму з сайтів. Але часто це не дуже зручно і якщо ви працюєте з Google Drive та тримаєте там робочі файли, то буває потрібно отримати прямі посилання на картинки у Драйві.&lt;/p&gt;
&lt;p&gt;Також буває необхідно скопіювати багато прямих посилань на файли, наприклад, щоб вставити їх у брендбук або відправити клієнту.&lt;/p&gt;
&lt;p&gt;Тож я створив простий гугл-скрипт для використання Google Sheets. Працює так:&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Додаєте до вашої таблиці скрипт через &lt;i&gt;Extensions/Apps Script&lt;/i&gt;, вставляєте код, запускаєте та даєте всі доступи до вашого облікового запису, оновлюєте сторінку з таблицею.&lt;/li&gt;
&lt;li&gt;У комірку &lt;i&gt;A1&lt;/i&gt; вставляєте посилання на теку у Драйві (вона може бути як публічною, так і ні), треба взяти посилання з вікна &lt;i&gt;Share&lt;/i&gt;, яке містить в собі …/&lt;i&gt;folder/…&lt;/i&gt;.&lt;/li&gt;
&lt;li&gt;У меню з’явиться новий пункт Links to files, в якому можна вибрати один з варіантів.&lt;/li&gt;
&lt;li&gt;Скрипт створить заголовки колонок і вставить всі дані у рядки нижче.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/List-Files-in-Folder---Demo-x2.mov#t=0.001" width="2560" height="1600" controls alt="" /&gt;

&lt;/div&gt;
&lt;p&gt;Скрипт виводить такі колонки:&lt;br /&gt;
- &lt;b&gt;Name&lt;/b&gt; — повна назва файлу&lt;br /&gt;
- &lt;b&gt;Type&lt;/b&gt; — розширення файлу, знаходить по назві файлу&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Date&lt;/b&gt; — дата та час зміни файлу&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Size, KB&lt;/b&gt; — розмір у КБ&lt;br /&gt;
- &lt;b&gt;URL&lt;/b&gt; — посилання на файл (якщо вся тека доступна для перегляду не тільки вам, то всі файли в ній теж будуть доступні)&lt;br /&gt;
- &lt;b&gt;URL Download&lt;/b&gt; — інший формат прямого посилання на файли, який можна використати, наприклад, щоб вставити картинку у таблицю функцією &lt;i&gt;=IMAGE()&lt;/i&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Я зробив кілька варіантів функцій у скрипті:&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Вивід всіх файлів по черзі у певній теці.&lt;/li&gt;
&lt;li&gt;Вивід окремих типів файлів (картинки, відео, документи тощо).&lt;/li&gt;
&lt;li&gt;І окремою опцією вивід всіх файлів у тій теці та у всіх підтеках (додається ще колонка Folder з назвою теки).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;hr&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.dropbox.com/scl/fi/n44gl8dpk5w809mljvjy0/List-Files-in-Folder.gs?rlkey=hruc1cfuhtoci3c39lu8yhf8i&amp;dl=0"&gt;Завантажити скрипт&lt;/a&gt; або переглянути на &lt;a href="https://gist.github.com/alexkolodko/791507868c326c859059e67ddff0497b"&gt;Github Gist&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;hr&gt;&lt;/p&gt;
&lt;div&gt;&lt;div style="float: left;"&gt;&lt;p&gt;&lt;span style="font-weight:bold; font-size: 3em"&gt;&lt;b&gt;₴&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div style="padding: 1em 0 0 4em"&gt;&lt;p&gt;Якщо вам було цікаво та корисно, можете пригостити мене кавою ☕️: картка Монобанку: &lt;tt&gt;4441114450427339&lt;/tt&gt; або &lt;a href="https://send.monobank.ua/5jVrTaRziu"&gt;через сайт&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;</description>
</item>

<item>
<title>Конвеєр: масштабування PDF-файлів за допомогою pdfscale</title>
<guid isPermaLink="false">125</guid>
<link>https://blog-archive.alexkolodko.com/all/automation-pdfscale/</link>
<pubDate>Thu, 07 Dec 2023 17:47:49 +0200</pubDate>
<author></author>
<comments>https://blog-archive.alexkolodko.com/all/automation-pdfscale/</comments>
<description>
&lt;p&gt;Іноді буває треба робити однакові макети у різних масштабах. Наприклад, якій знаки, що можуть зчитуватись зблизька і здалека. І можна під ці випадки робити окремі макети, але оновлювати весь цей парк знаків не зручно.&lt;/p&gt;
&lt;p&gt;Краще мати якийсь один майстер-макет, як компонент у Фігмі, який можна розтягнути або зменшити до потрібного розміру. Для цього можна зробити основу в AI/ID, а масштабні копії робити в окремому ID, де макет буде вставлений лінком, і будуть налаштовані нові розміри. Потім це все діло можна експортувати у PDF вже у новому розмірі.&lt;/p&gt;
&lt;p&gt;Але це знову зайві дії: оновити майстер-файл, відкрити копії, оновити лінки, експортувати, зберегти у потрібну теку. А якщо у вас в одному файлі ще й різні макети які потрібно нарізати, то взагалі жах.&lt;/p&gt;
&lt;p&gt;Тому виходом може бути вже масштабування вже готових PDF-файлів, з одного розміру в різні. В принципі так працює експорт для екранів в Adobe Illustrator або ж у Фігмі, але це для екранів, а в тому ж Індизайні таких функцій взагалі немає.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/pdfscale-principle.png" width="1200" height="675" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Принцип масштабування&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;Скрипт pdfscale&lt;/h2&gt;
&lt;p&gt;Знайшов гарний bash-скрипт саме для масштабування PDF — &lt;a href="https://github.com/tavinus/pdfScale"&gt;pdfscale&lt;/a&gt; (для роботи він потребує встановлених gs, iamgemagick, xpdf, все написано у документації в розділі &lt;i&gt;Dependencies&lt;/i&gt;). Сам скрипт можна встановити як команду у терміналі, наприклад, через wget&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;wget -q -O /tmp/pdfScale.sh &amp;#039;https://raw.githubusercontent.com/tavinus/pdfScale/master/pdfScale.sh&amp;#039; &amp;amp;&amp;amp; bash /tmp/pdfScale.sh --install&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;У документації детально розписані всі функції і є приклади. Тож скрипт дозволяє масштабувати та змінювати розміри PDF: має вбудовані друкарські розміри і можливість вказати свої довільні у різних видах величин.&lt;/p&gt;
&lt;p&gt;Наприклад, можна макет розтягнути до 1500×1500 мм:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;bash pdfScale.sh -r &amp;quot;custom mm 1500 1500&amp;quot; file.pdf newfile.pdf&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;де:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i&gt;— r «custom mm 1500 1500»&lt;/i&gt; — ключ resize, довільний розмір, у mm, а далі ширина та висота.&lt;/li&gt;
&lt;li&gt;&lt;i&gt;file.pdf&lt;/i&gt; — вихідний файл&lt;/li&gt;
&lt;li&gt;&lt;i&gt;newfile.pdf&lt;/i&gt; — змінений файл&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;При цьому не важливо у якому розмірі оригінал, він масштабується пропорційно.&lt;/p&gt;
&lt;p&gt;Все це можна упакувати у цикл, який буде змінювати розмір всіх pff-файлів у теці й одразу складати їх у іншу теку 1500:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/bin/bash

for i in *.pdf
do
pdfScale -r &amp;quot;custom mm 1434 1500&amp;quot; $i 1500/$i
echo &amp;quot;$i - Done&amp;quot;
done&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Або ж те саме можна викликати одним рядком у Терміналі:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;for i in *.pdf; pdfScale -r &amp;quot;custom mm 1434 1500&amp;quot; $i 1500/$i; echo &amp;quot;$i - Done&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;Додаткове перейменування&lt;/h2&gt;
&lt;p&gt;Далі також всі змасштабовані файли можна перейменувати. наприклад, основні макети я мав у розмірі 660×690 мм і відповідно у самих файлах був написаний цей розмір. Для цього у скрипт додав рядок, з функцією rename, що заміняє у нових файлах текст «-660x690» на «-1434x150»:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;rename &amp;#039;s/-660x690/-1434x1500/g&amp;#039; 1500/$i&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Весь скрипт:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/bin/bash

for i in *.pdf
do
pdfScale -r &amp;quot;custom mm 1434 1500&amp;quot; $i 1500/$i
echo &amp;quot;$i - Done&amp;quot;
    rename &amp;#039;s/-660x690/-1434x1500/g&amp;#039; 1500/$i
done&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Або для Термінала:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;for i in *.pdf; pdfScale -r &amp;quot;custom mm 1434 1500&amp;quot; $i 1500/$i;rename &amp;#039;s/-660x690/-1434x1500/g&amp;#039; 1500/$i; echo &amp;quot;$i - Done&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/01-bash-x2.mp4#t=0.001" width="2560" height="1510.8431044109" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;Як працює скрипт&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;CMD-файл&lt;/h2&gt;
&lt;p&gt;І далі можна перетворити це на виконуваний command-файл, який можна просто запускати з теки.&lt;/p&gt;
&lt;p&gt;Сам код:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/bin/bash

# Change directory to be where the command is.
cd &amp;quot;$(cd &amp;quot;$(dirname &amp;quot;$0&amp;quot;)&amp;quot; &amp;gt; /dev/null &amp;amp;&amp;amp; pwd)&amp;quot;

# Run commands
for i in *.pdf
do
pdfScale -r &amp;quot;custom mm 1434 1500&amp;quot; $i 1500/$i
rename &amp;#039;s/-660x690/-1434x1500/g&amp;#039; 1500/$i
echo &amp;quot;$i - Done&amp;quot;
done&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Завантажити &lt;a href="https://www.dropbox.com/scl/fi/fc61wol3kummir3fchu5k/pdfscale.command?rlkey=q7lvg6z6tuc66rcyqus2qyc8n&amp;dl=0"&gt;pdfscale.command&lt;/a&gt; — приклад виконавчого файлу запуску скрипту. Розміри та назви тільки вкажіть свої.&lt;/p&gt;
&lt;p&gt;А якщо потрібно зробити кілька розмірів, то можна скопіювати рядки pdfScale та rename і&lt;br /&gt;
вказати додаткові розміри.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/02-cmd-x2.mp4#t=0.001" width="2560" height="1510.8431044109" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;Як це виглядає в роботі&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;hr&gt;&lt;/p&gt;
&lt;div&gt;&lt;div style="float: left;"&gt;&lt;p&gt;&lt;span style="font-weight:bold; font-size: 3em"&gt;&lt;b&gt;₴&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div style="padding: 1em 0 0 4em"&gt;&lt;p&gt;Якщо вам було цікаво та корисно, можете пригостити мене кавою ☕️: картка Монобанку: &lt;tt&gt;4441114450427339&lt;/tt&gt; або &lt;a href="https://send.monobank.ua/5jVrTaRziu"&gt;через сайт&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;</description>
</item>

<item>
<title>Конвеєр: автоматизоване нарізання PDF на різні файли</title>
<guid isPermaLink="false">124</guid>
<link>https://blog-archive.alexkolodko.com/all/automation-pdf-split/</link>
<pubDate>Thu, 30 Nov 2023 17:07:41 +0200</pubDate>
<author></author>
<comments>https://blog-archive.alexkolodko.com/all/automation-pdf-split/</comments>
<description>
&lt;p&gt;В роботі над дизайном багатьох макетів буває дуже зручно їх всі робити в одному файлі: можна простіше копіювати елементи та стилі, мати єдину базу символів, бачити загальну картинку одразу на всіх макетах тощо.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/ai-file.jpg" width="2400" height="1381" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Багато макетів різних розмірів у Adobe Illustrator&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Але редактори погано пристосовані для збереження потім таких робочих файлів, що йтимуть на виробництво. Процес збереження купи файлів починає нагадувати нудну справу, в якій ви вибираєте що зберігати, якось розділяєте на окремі файли та при збереженні у різні формати правильно називаєте все. Така безглузда трата робочого часу і це нууудно 🥱. І в такій ручній роботі точно виникатимуть помилки, тож доведеться починати наново.&lt;/p&gt;
&lt;p&gt;У ІнДизайні є можливість зберігати PDF посторінково. Але можливості обмежені й потім все одно треба перейменовувати файли, як треба. У Ілюстраторі взагалі така опція є тільки для збереження окремих артбордів для екранів (у RGB), тож для друку це не підходить. І вирішувати це можна сторонніми скриптами, як-то скрипт для збереження файлу у різні формати, який ми робили для своєї роботи.&lt;/p&gt;
&lt;p&gt;Але це не вирішує задачу, коли у вас частина макетів двосторонні й ці різні сторони мають зберегтись, наприклад, в один PDF на кілька сторінок.&lt;/p&gt;
&lt;p&gt;А якщо вже після збереження потрібно буде внести якісь зміни, то весь цей нудний процес треба робити спочатку і добре якщо не для всіх файлів.&lt;/p&gt;
&lt;h2&gt;Конвеєр та алгоритм&lt;/h2&gt;
&lt;p&gt;Мені цікаво шукати і організовувати дизайн-конвеєр під такі задачі, оскільки вони точно повторюватимуться, тож автоматизація дає шалену економію часу, який можна витратити на цікавіші речі.&lt;/p&gt;
&lt;p&gt;Колись писав про &lt;a href="https://blog.alexkolodko.com/all/mass-rename/"&gt;масове перейменування файлів&lt;/a&gt;, які перед цим нарізав в Акробаті на окремі файли. Але це все одно довго, треба ще швидше.&lt;/p&gt;
&lt;p&gt;Спочатку потрібно подумати над наявними можливостями й алгоритмом. Кожен редактор може за раз зберігати всі або діапазон сторінок у суцільний PDF-файл. Тож якщо мати інструкцію, яка скаже які сторінки мають піти в який файл і як ці файли назвати. Така інструкція — своєрідна «маска», яку можна застосувати для файлу.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;1-2=filename01
3=filename02
4-5=filename03
6-8 10=filename04
…&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;де:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1-2 — сторінки документа (може містити одну цифру, діапазон через дефіс, перелік окремих сторінок через пробіл, також доступні параметри початку і кінця документа &lt;tt&gt;start-10&lt;/tt&gt; чи &lt;tt&gt;57-end&lt;/tt&gt; )&lt;/li&gt;
&lt;li&gt;= — технічний розділювач (у назвах файлах його не повинно бути)&lt;/li&gt;
&lt;li&gt;filename01 — назва вашого майбутнього PDF-файлу, в який в який увійдуть сторінки з діапазону (без розширення .pdf)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;bash + PDFtk&lt;/h2&gt;
&lt;p&gt;Для цього bash (потрібна версія 4 і вище, перевіряється у терміналі через &lt;tt&gt;bash -v&lt;/tt&gt;, встановлюється через &lt;tt&gt; brew install bash&lt;/tt&gt;) та &lt;a href="https://www.pdflabs.com/tools/pdftk-server/"&gt;PDF Toolkit (PDFtk&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;За допомогою ChatGPT в кілька ітерацій зробив скрипт, що бере вказаний PDF-файл, окремо бере текстову «маску» у TXT, як масив назв, в яких&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/bin/bash

input_file=&amp;quot;Tustan-Signs-All.pdf&amp;quot;
data_file=&amp;quot;range.txt&amp;quot;

# Read page ranges and custom names from the external file into a single array
readarray -t page_data &amp;lt; &amp;quot;$data_file&amp;quot;

# Loop through the array and split the PDF
for data in &amp;quot;${page_data[@]}&amp;quot;; do
    IFS=&amp;quot;=&amp;quot; read -r range custom_name &amp;lt;&amp;lt;&amp;lt; &amp;quot;$data&amp;quot;
    output_file=&amp;quot;${custom_name// /_}.pdf&amp;quot;  # Replace spaces with underscores in the custom name
    pdftk &amp;quot;$input_file&amp;quot; cat $range output &amp;quot;$output_file&amp;quot;
    echo &amp;quot;$output_file — Done&amp;quot;
done&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Для більшої універсальності я виніс вказання файлів, як аргументів у командному рядку. Тож тепер можна скопіювати скрипт у потрібну теку та запустити командою:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;bash splitter-pro.sh filename.pdf mask.txt&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;де:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;filename.pdf — назва вашого PDF-файлу&lt;/li&gt;
&lt;li&gt;mask.txt — текстовий файл з «маскою»&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Сам скрипт виглядає так ($1 — перший аргумент, тобто PDF-файл; $2 — другий аргумент, тобто TXT-файл):&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/bin/bash

input_file=$1
data_file=$2

# Read page ranges and custom names from the external file into a single array. Requaire bash 4.0
readarray -t page_data &amp;lt; &amp;quot;$data_file&amp;quot;

# Loop through the array and split the PDF
for data in &amp;quot;${page_data[@]}&amp;quot;; do
    IFS=&amp;quot;=&amp;quot; read -r range custom_name &amp;lt;&amp;lt;&amp;lt; &amp;quot;$data&amp;quot;
    output_file=&amp;quot;${custom_name// /_}.pdf&amp;quot;  # Replace spaces with underscores in the custom name
    pdftk &amp;quot;$input_file&amp;quot; cat $range output &amp;quot;$output_file&amp;quot;
    echo &amp;quot;$output_file — Done&amp;quot;
done&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Приклад «маски», де спочатку номери сторінок, символ =, а далі назва файла (Проект-Знак-Точка-Розмір):&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;1-2=Tustan-WF-Sign-Т1-400x600
3=Tustan-WF-Sign-Т2.1-200x350
4=Tustan-WF-Sign-Т2.2-200x350
5=Tustan-WF-Sign-Т3.1-200x350
6=Tustan-WF-Sign-Т3.2-200x350
7-8=Tustan-WF-Sign-Т4.1-T4.2-200x600
9-10=Tustan-WF-Sign-Т4.3-T4.4-200x600
11=Tustan-WF-Sign-Т5.1-200x600
12=Tustan-WF-Sign-Т5.2-200x600
13=Tustan-WF-Sign-Т6.1-200x600
14=Tustan-WF-Sign-Т6.2-200x600
15=Tustan-WF-Sign-Т7.1-200x600
16=Tustan-WF-Sign-Т7.2-200x600
17=Tustan-WF-Sign-Т8.1-200x600
18=Tustan-WF-Sign-Т8.2-200x600
19=Tustan-WF-Sign-Т9.1-200x600
20=Tustan-WF-Sign-Т9.2-200x600
21=Tustan-WF-Sign-Т9.3-200x600
22-23=Tustan-WF-Sign-Т10-200x600
…&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Весь процес виглядає ось так:&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/tustan-wf-signs-automation-x2.mp4#t=0.001" width="2560" height="1507.1428571429" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;Розділення PDF-файлу по «масці»&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Також можна цей підхід використовувати для нарізання макетів по одному і одразу з правильним перейменуванням файлів. Колись робив скрипт для перейменування пачки файлів, але тепер можна цей крок пропустити й робити все швидше.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/metromap-tram-x2.mp4#t=0.001" width="2560" height="1477.9676158571" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;Розділення на файли по одній сторінці&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;Нюанси&lt;/h2&gt;
&lt;p&gt;&lt;b&gt;№1. &lt;/b&gt;Порядок артбордів/сторінок у файлі має завжди зберігатись і співпадає з «маскою». Тож при зміні порядку, треба міняти й маску.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;№2. &lt;/b&gt;При збереженні PDF з Ілюстратора рекомендую прибирати прапорець &lt;i&gt;Preserve Illustrator Editing Capabilities&lt;/i&gt;. Так при розділенні PDF у файлі не буде нічого, що було поза потрібного артборду. Якщо ж цей прапорець увімкнутий, то навіть якщо ви бачитиме у прев’ю лише один артборд, все одно при відкритті файлу в Ілюстраторі в ньому будуть всі артборди й об’єкти, що були в оригінальному AI-файлі.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/ai-save-pdf-settings.png" width="1436" height="1182" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Налаштування при збереженні PDF&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;b&gt;№3. &lt;/b&gt;Як і з будь-якою автоматизацією її треба уважно перевірити, коли створюєте. Наприклад, можна помилково вказати не ті сторінки в «масці» і файл нарізатиметься неправильно.&lt;/p&gt;
&lt;h2&gt;Бонус №1: запуск скрипку одразу в теці&lt;/h2&gt;
&lt;p&gt;Щоб ще прискорити процес і навіть не запускати консоль, то можна зібрати виконавчий файл .command, який запускатиме все в наявній теці. &lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/bin/bash

# Change directory to be where the command is.
cd &amp;quot;$(cd &amp;quot;$(dirname &amp;quot;$0&amp;quot;)&amp;quot; &amp;gt; /dev/null &amp;amp;&amp;amp; pwd)&amp;quot;
 # Run script with arguments
bash pdf-splitter.sh metromap_tram_v1.12.pdf Metromap-Tram-Range.txt&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Єдина маніпуляція, яку треба зробити — дати системі права на виконання скрипту в нашій теці:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;chmod u+x splitter.command&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Таким чином у теку копіюються сам bash-скрипт, маска .txt, вхідний .pdf та у command файлі замінюються значення. Тепер просто зберігаєте PDF, запускайте файл, п’єте каву ☕️, готово.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/command-file-x2.mov#t=0.001" width="2560" height="1469.3914014517" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;Скрипт упакований у виконавчий файл&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;Бонус №2: артборди в AI → «маска»&lt;/h2&gt;
&lt;p&gt;Якщо ви називали артборди в Ілюстраторі так, як би ви хотіли мати готові файли, то можна теж це використати і скриптом вже в самому AI зберегти всі назви артбордів, як «маску» у текстовому файлі. Знову ChatGPT запропонував доволі простий скрипт, що робить на робочому столі готовий txt-файл з маскою.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/ai-artboards-to-txt-x2.mp4#t=0.001" width="2560" height="1470.8207705193" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;Робота скрипта&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Трохи допиляв, що він робив одразу потрібний вигляд:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;// Function to export artboard names to a text file
function exportArtboardNames() {
    var doc = app.activeDocument;
    var artboards = doc.artboards;
    var file = new File(&amp;quot;~/Desktop/artboard_names.txt&amp;quot;);
    file.open(&amp;quot;w&amp;quot;);

    for (var i = 0; i &amp;lt; artboards.length; i++) {
        var artboard = artboards[i];
        var artboardName = artboard.name;
        file.writeln(&amp;quot;&amp;quot; + (i + 1) + &amp;quot;=&amp;quot; + artboardName);
    }

    file.close();
    alert(&amp;quot;Artboard names exported to ~/Desktop/artboard_names.txt&amp;quot;);
}

// Run the exportArtboardNames function
exportArtboardNames();&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Напевно було б можна написати скрипт саме для Ілюстратора, який би з «маскою» зберігав певні артборди, але всі подібні скрипти в Adobe Illustrator працюють доволі повільно. Тому найшвидше створювати конвеєр іншими інструментами.&lt;/p&gt;
&lt;h2&gt;Бонус №3: зробити зі скрипта окрему cli-програму (Mac OS)&lt;/h2&gt;
&lt;p&gt;Копіювати скрипт у кожну теку не зручно, тож можна піти далі і зробити з цього скрипта cli-програму, яку можна буде викликати просто у певній теці одразу з терміналу (описав як зробити це у Mac OS, але думаю у Windows це так само можливо; якщо хтось напише як це зробити, то додам у статтю).&lt;/p&gt;
&lt;p&gt;Для цього модифікуємо спочатку сам скрипт. У першому рядку міняємо шлях до bash:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/usr/local/bin/bash

input_file=$1
data_file=$2

# Read page ranges and custom names from the external file into a single array. Requaire bash 4.0
readarray -t page_data &amp;lt; &amp;quot;$data_file&amp;quot;

# Loop through the array and split the PDF
for data in &amp;quot;${page_data[@]}&amp;quot;; do
    IFS=&amp;quot;=&amp;quot; read -r range custom_name &amp;lt;&amp;lt;&amp;lt; &amp;quot;$data&amp;quot;
    output_file=&amp;quot;${custom_name// /_}.pdf&amp;quot;  # Replace spaces with underscores in the custom name
    pdftk &amp;quot;$input_file&amp;quot; cat $range output &amp;quot;$output_file&amp;quot;
    echo &amp;quot;$output_file — Done&amp;quot;
done&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Потім краще прибрати розширення і назвати файл так, як ви будете викликати команду. У моєму випадку — &lt;i&gt;pdfsplitter&lt;/i&gt;.&lt;/p&gt;
&lt;p&gt;Далі скопіювати файл у директорію /&lt;i&gt;usr/local/bin&lt;/i&gt;, можна одразу в терміналі:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;sudo cp pdfsplitter /usr/local/bin&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Тепер можна у терміналі викликати нашу команду. Якщо ж при цьому буде відображатись помилка доступу, на кшталт, «&lt;i&gt;zsh: permission denied: pdfsplitter&lt;/i&gt;», то треба дати системі дозвіл використати нашу програму. Наприклад, командою:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;chmod 755 /usr/local/bin/pdfsplitter&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Відтепер ви самі додали програму у термінал і її можна запускати у будь-якій теці, не копіюючи туди скрипт.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/script-as-cli-program-x2.mp4#t=0.001" width="2560" height="1470.8207705193" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;Скрипт, як cli-програма&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;hr&gt;&lt;br /&gt;
Завантажити скрипти:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.dropbox.com/scl/fi/zpdpqvcjau4ps7qaoqn9b/pdf-splitter.sh?rlkey=nsgiia85dj5noveqgoab3o9hz&amp;dl=0"&gt;pdf-splitter.sh&lt;/a&gt; — розділювач PDF&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.dropbox.com/scl/fi/sequwpl5crthcnsyb8pfn/artboard-names-to-file.jsx?rlkey=0eysee0w68fa99c8yg9vpu4p4&amp;dl=0"&gt;artboard-names-to-file.jsx&lt;/a&gt; — назви артбордів AI у TXT файл&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.dropbox.com/scl/fi/303ikqdr93bt0ypzwgzet/splitter.command?rlkey=7uj309zmg2ijodxpqr42zx1qo&amp;dl=0"&gt;splitter.command&lt;/a&gt; — приклад виконавчого файлу запуску скрипта; має розміщуватись в одній теці з маскою та pdf-splitter.sh.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;hr&gt;&lt;/p&gt;
&lt;div&gt;&lt;div style="float: left;"&gt;&lt;p&gt;&lt;span style="font-weight:bold; font-size: 3em"&gt;&lt;b&gt;₴&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div style="padding: 1em 0 0 4em"&gt;&lt;p&gt;Якщо вам було цікаво та корисно, можете пригостити мене кавою ☕️: картка Монобанку: &lt;tt&gt;4441114450427339&lt;/tt&gt; або &lt;a href="https://send.monobank.ua/5jVrTaRziu"&gt;через сайт&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;</description>
</item>

<item>
<title>Автоматизація дизайну з ChatGPT. Частина 2: скрипти для InDesign, Figma, Google Docs, Automator</title>
<guid isPermaLink="false">94</guid>
<link>https://blog-archive.alexkolodko.com/all/design-automation-with-chatgpt-part2/</link>
<pubDate>Fri, 24 Mar 2023 22:37:31 +0200</pubDate>
<author></author>
<comments>https://blog-archive.alexkolodko.com/all/design-automation-with-chatgpt-part2/</comments>
<description>
&lt;p&gt;Продовжую експерименти написання простих скриптів з допомогою ChatGPT. Тут &lt;a href="https://blog.alexkolodko.com/all/adobe-scripting-with-chatgpt/"&gt;перша частина&lt;/a&gt; зі скриптами для Adobe Illustrator.&lt;/p&gt;
&lt;h2&gt;1. Заміна шрифтів у InDesign&lt;/h2&gt;
&lt;p&gt;Перше, що захотілося зробити, це перенести скрипт з Ілюстратора в Індизайн (хоч скрипти й схожі, але у програм всередині різна специфіка).&lt;/p&gt;
&lt;p&gt;Тож спочатку я спробував подібними до попередніх запитами згенерувати скрипт. Але з 5-6 спроб робочого коду не вийшло. Тому далі я знайшов &lt;a href="https://community.adobe.com/t5/indesign-discussions/font-replacement-scripting-javascript/td-p/11021763"&gt;у спільноті Адоб&lt;/a&gt; шматок коду схожий на те, що мені треба.&lt;/p&gt;
&lt;p&gt;Але для його використання для різних накреслень і шрифтів не вистачало масиву значень на початку та циклу його виконання. Тому я скопіював код і попросив ChatGPT додати мені ці модулі. І за кілька уточнень вийшло робоче рішення.&lt;/p&gt;
&lt;p&gt;Далі зробив ще одну версію, попросивши додати виклик модального вікна, в яке можна ввести руками потрібні назви шрифтів. І він мені це теж зробив:&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/automation-1-1-2-indesign-x4-noaudio.mp4#t=0.001" width="2560" height="1600" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;Створення скрипту заміни шрифту в InDesign&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Завантажити скрипти:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.dropbox.com/s/lgcoaglq2yl7lkn/Font%20Replacer%20INDD.jsx?dl=0"&gt;Версія&lt;/a&gt;, яка заміняє усі шрифти у всіх фреймах;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.dropbox.com/s/sh4p04jj41wq4j9/Font%20Replacer%20INDD%20Selected.jsx?dl=0"&gt;Версія&lt;/a&gt;, яка заміняє шрифт лише у виділеному тексті;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.dropbox.com/s/zdouo1ppa8sq9ka/Font%20Replacer%20INDD%20SelectedORNot.jsx?dl=0"&gt;Версія&lt;/a&gt;, заміняє шрифт або у виділених фреймах, або в усіх;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.dropbox.com/s/6ifotvcavyeinit/Font%20Replacer%20INDD%20with%20window.jsx?dl=0"&gt;Версія&lt;/a&gt; з двома вікнами введення назви старого і нового шрифтів;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.dropbox.com/s/eiazxfnj92d09ze/Font%20Replacer%20INDD%20ww2.jsx?dl=0"&gt;Версія&lt;/a&gt; з одним вікном, в якому можна ввести кілька шрифтів.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;1.2. Заміна стилів у InDesign&lt;/h2&gt;
&lt;p&gt;Окрім зміни шрифтів, попросив придумати скрипт, для заміни одних стилів на інші та ще попросив додати вікно, в якому ці назви можна ввести. Отримав &lt;a href="https://www.dropbox.com/s/l252xyt2flartv8/Change%20style%20with%20one%20window.jsx?dl=0"&gt;такий скрипт&lt;/a&gt;.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/indesign-1-2-1-changestyles-x2.mp4#t=0.001" width="2560" height="1600" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;Скрипт для InDesign, який заміняє один стиль на інший&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;А далі попросив замість полів для введення тексту зробити спадні списки зі всіма наявними стилями у документі. Але скрипт сходу не запрацював, але його можна об’єднати з попередніми.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/indesign-1-2-2-changestyles-dropdowns-x2.mp4#t=0.001" width="2560" height="1600" controls alt="" /&gt;

&lt;/div&gt;
&lt;h2&gt;2. Збереження Google Docs у тій самій теці на Драйві&lt;/h2&gt;
&lt;p&gt;У мене є потреба періодично зберігати поруч з Гугл Документом також і PDF, який я потім можу відправити. При збереженні через меню документів сам документ у мене завантажується у Downloads, як і решта файлів. Але потім мені потрібно знову завантажувати PDF у ту саму теку на драйв. Не складно, але це витрата часу.&lt;/p&gt;
&lt;p&gt;Шукав приклади скриптів, які  б могли зберігати PDF у ту саму теку, але робочих не знайшов. І от попросив ChatGPT запропонувати мені такий скрипт. І з першого разу отримав робочий варіант:&lt;/p&gt;
&lt;pre&gt;
function onOpen() {
  var ui = DocumentApp.getUi();
  ui.createAddonMenu()
      .addItem(’Convert to PDF’, ’convertDocToPDF’)
      .addToUi();
}

function convertDocToPDF() {
  var docFile = DocumentApp.getActiveDocument().getId();
  var doc = DriveApp.getFileById(docFile);
  var pdfFile = DriveApp.createFile(doc.getAs(’application/pdf’)).setName(doc.getName() + «.pdf»);
  var parentFolder = doc.getParents().next();
  pdfFile.makeCopy(parentFolder);
  pdfFile.setTrashed(true);
}

&lt;/pre&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/google-script-with-chatgpt-x2.mp4#t=0.001" width="2560" height="1600" controls alt="" /&gt;

&lt;/div&gt;
&lt;p&gt;Також ChatGPT описав інструкцію, як цей скрипт опублікувати, щоб він працював не тільки у конкретному документі, але це виявилось не так просто, як зробити скрипт 😅.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="2400" data-ratio="1.6"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-2-1.png" width="2400" height="1500" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-2-2.png" width="2400" height="1500" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;3. Транслітерація тексту в Figma&lt;/h2&gt;
&lt;p&gt;Колись для транслітерації назв зробили разом з програмістами простий сайт з простим JS, якій заміняв літери на інші за певними правилами. Потім з цього створили скрипти для AI та ID. А потім я стикнувся з такою з задачею у Фігмі, але робочих рішень не знайшов. Щось покрутив, але кинув, бо моїх знань було недостатньо.&lt;/p&gt;
&lt;p&gt;І от спробував згодувати цю задачу ChatGPT. Взяв увесь наявний скрипт, як приклад, і попросив придумати, як з цього скрипту зробити скрипт для Фігми. Спочатку запропонований код транслітерував всі тексти на сторінці. Через уточнення він це робив для виділеного тексту, а якщо не виділений, то вже для всього.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/automation-3-figma-x2.mp4#t=0.001" width="2560" height="1600" controls alt="" /&gt;

&lt;/div&gt;
&lt;p&gt;І у першому варіанті цей код навіть працює, транслітерує, лишилось тільки допиляти для виключень і різних випадків. Далі вже можна туди додати якийсь інтерфейс за потреби. Тест вважаю вдалим.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="2400" data-ratio="1.6"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-3-1.png" width="2400" height="1500" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-3-2.png" width="2400" height="1500" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-3-3.png" width="2400" height="1500" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-caption"&gt;Код транслітерації для Фігми від ChatGPT&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;4. Створення регулярних виразів для GREP / RegEx&lt;/h2&gt;
&lt;p&gt;Про грепи (або регулярні вирази, або regex) розповідав у лекції і все хотів написати детальну статтю зі всіма посиланнями, які назбирав, але все не знаходив час. GREP дуже потужна штука, але в неї був дуже високий поріг входу, щоб розуміти як будувати потрібні правильні вирази.&lt;/p&gt;
&lt;p&gt;І от тепер з ChatGPT цей поріг можна вважати зниженим, бо він дуже гарно конструює навіть складні вирази.&lt;/p&gt;
&lt;p&gt;Наприклад, давайте в Індизайні після всіх прийменників додамо нерозривні пробіли у всьому тексті через GREP-стилі. Для цього потрібно знайти у тексті всі прийменники. Тож створюємо стиль для символів без перенесень (no break) та питаємо у ChatGPT список всіх прийменників у вигляді регулярного виразу.&lt;/p&gt;
&lt;p&gt;Він розуміє українську і віддає згенерований вираз вже у потрібній формі. Єдине що цей regex не зовсім підійде у Індизайн, тому уточнюємо що це має бути саме GREP для Індизайну і отримуємо робочий запит.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/automation-4-1-indesign-grep-find-x4.mp4#t=0.001" width="2560" height="1600" controls alt="" /&gt;

&lt;/div&gt;
&lt;p&gt;Так само можна конструювати грепи, які знаходять прізвища та ініціали, одиниці вимірювання, дати та місяці, номери телефонів у різних видах тощо. Далі потім знайдені дані (одразу всі, в усьому тексті) можна або переформатовувати або задавати їм потрібний стиль.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="2400" data-ratio="1.6"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-4-1.png" width="2400" height="1500" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-4-2.png" width="2400" height="1500" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-4-3.png" width="1694" height="950" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-4-4.png" width="1650" height="1936" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-4-5.png" width="1614" height="1074" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-4-6.png" width="2400" height="1500" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-4-7.png" width="2400" height="1500" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-4-8.png" width="2400" height="1500" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-4-9.png" width="1604" height="1176" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-caption"&gt;Приклади різних регулярних виразів&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Регулярні вирази — дуже технічно-орієнтований інструмент. Тому тепер до цього інструменту є людино-орієнтований інтерфейс, який трансформує ваш запит у зрозумілу машині форму.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/automation-4-2-indesign-grep-replace-x4.mp4#t=0.001" width="2560" height="1600" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;GREP заміни кириличних лапок латинськими&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;5.1 Зібрати відео зі скріншотів (з використанням ffmpeg)&lt;/h2&gt;
&lt;p&gt;Також в лекції згадував, що також у автоматизації дуже допомагають різні консольні команди (cli, command line interface), які заточені на певні дії. З ними така сама ситуація — щоб ними користуватись, потрібно розбиратись в прикладах та документації, що теж техно-орієнтованість.&lt;/p&gt;
&lt;p&gt;Тому тут можна теж ChatGPT використовувати, як посередника для пошуку потрібної команди з потрібними параметрами. Наприклад, маємо купу скріншотів зроблених автоматично з різницею у 4-5 секунд, з яких хочемо зробити скрінкаст.&lt;/p&gt;
&lt;p&gt;Для роботи з відео є потужна програма &lt;a href="https://ffmpeg.org/download.html"&gt;ffmpeg&lt;/a&gt;, яка працює з командного рядка. Тож попросив ChatGPT запропонувати команду для ffmpeg, яка б об’єднала картинки у відео. З першого разу отримуємо варіант, який на 100% працює та робить відео з заданою кількістю кадрів, які можна скоригувати.&lt;/p&gt;
&lt;pre&gt;
ffmpeg -framerate 30 -pattern_type glob -i ’/path/to/folder/*.jpg’ -c:v libx264 -pix_fmt yuv420p /path/to/output.mp4
&lt;/pre&gt;
&lt;p&gt;Таким чином не потрібні ніякі додаткові програми, для створення відео з картинок: за допомогою Автоматора робимо скріншоти, а через ffmpeg отримуємо відео.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/automation-5-1-x4.mp4#t=0.001" width="2560" height="1600" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;Збір відео з окремих картинок&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;5.2 Компресія відео (з використанням ffmpeg)&lt;/h2&gt;
&lt;p&gt;Так само можна пошукати запити і на інші задачі з відео, наприклад, перезберегти з певною компресією чи зміною розміру, або прискоренням.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/automation-5-2-compress-video-x4-noaudio.mp4#t=0.001" width="2560" height="1600" controls alt="" /&gt;

&lt;/div&gt;
&lt;p&gt;Раніше я шукав налаштування команд на Stackoverflow, а зараз швидше спитати у ChatGPT. Приклади запитів.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="2400" data-ratio="1.6"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-5-2-1-compress-video.png" width="2400" height="1500" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/_automation-5-2-2-compress-video.png" width="2400" height="1500" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Компресія відео з ffmpeg&lt;/p&gt;
&lt;h2&gt;6. Зміна в наявному скрипті для Автоматора (Apple Script)&lt;/h2&gt;
&lt;p&gt;До попереднього пункту: для створення скрінкасту у мене був скрипт, який робив скріншот екрану і клав у потрібну теку в Дропбоксі, а потім зі скріншотів збиралося відео.&lt;/p&gt;
&lt;p&gt;Зараз Дропбокс змінив і виходить старий скрипт некоректно працює. Йти шукати у документації до AppleScript як змінити шлях було б довго. Тому скопіював наявний скрипт і попросив замінити шлях збереження скріншотів у теку /&lt;i&gt;Desktop&lt;/i&gt;.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/automation-6-applescript-x4.mp4#t=0.001" width="2560" height="1600" controls alt="" /&gt;

&lt;/div&gt;
&lt;h2&gt;7. Збереження в TIFF у Adobe Illustrator&lt;/h2&gt;
&lt;p&gt;Ще попросив зробити скрипт для швидкого збереження артборду у TIFF з заданим DPI. Отримав отакий варіант, який видавав помилку. Знайшов у спільноті Адоба відповідь зі схожою частиною, та побачив що один з параметрів замість IBM має називатись IBMPC, замінив, запрацювало. Тобто весь скрипт робочий, але помилка була в одному з параметрів. &lt;a href="https://www.dropbox.com/s/g6u54xerw8lg4v4/toTIFF.jsx?dl=0"&gt;Завантажити скрипт&lt;/a&gt;.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/automation-7-1-w2400.png" width="2400" height="1500" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Збереження артбоду в TIFF 300dpi&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;8. OSM Overpass Query&lt;/h2&gt;
&lt;p&gt;Деякі системи хоч і доступні всім, але поріг входу в них занадто високий. Але ChatGPT і тут зможе допомогти його подолати.&lt;/p&gt;
&lt;p&gt;У OpenStreetMap (карта/база даних, які відкриті для всіх) зберігається величезна база геоданих, доступ до яких не суперпростий. І в OSM є мова запитів Overpass, яка дозволяє вивантажувати / запитувати якусь певну частину тих даних. Так от Overpass супер-неінтуітивна мова, і тут Chat GPT допомагає перекласти запит з людської на машинну.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://twitter.com/lemonodor/status/1636849040548675584"&gt;twitter.com/lemonodor/status/1636849040548675584&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;P.S.&lt;/h2&gt;
&lt;p&gt;І це я скористався лише безкоштовною версією ChatGPT (модель GPT 3.5), і вже відчув, що стаю продуктивнішим ніби маю ще один механізований маніпулятор на додачу до рук, який розуміє що я хочу зробити та робить це швидше,&lt;/p&gt;
&lt;p&gt;Тепер спробую модель Codex (Github Copilot), яка створювалась як раз для написання коду, а також GPT4. Напишу потім, що з цього вийшло.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Також хотів проілюструвати цю думку згенерувавши картинку людини з ще оною механізованою рукою, накшталт, технодесандників з Вархаммеру, але з 20 спроб у Midjourney v4 мого задуму не вийшло&lt;/i&gt; ¯\_(ツ)_/¯&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1024" data-ratio="1"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/alexkolodko_man_with_extra_bionic_robotic_mechanical_manipulato_5e4ed387-75ea-434f-80ad-54a6bbf25a92-transformed.png" width="1024" height="1024" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/alexkolodko_man_with_extra_bionic_robotic_mechanical_manipulato_c97b8485-4aa5-4fcc-aba3-c6bbdc06f756-transformed.png" width="1024" height="1024" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/alexkolodko_man_with_augmentics_stay_with_laptop_at_the_large_f_35d6b34f-06c8-42a9-bb5f-a9f7d0228c89.png" width="1024" height="1024" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/alexkolodko_man_with_augmentics_stay_with_laptop_at_the_large_f_366792c8-fc63-431c-adb1-e75029104bb6.png" width="1024" height="1024" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/alexkolodko_man_with_augmentics_stay_with_laptop_at_the_large_f_b5de7f02-f43b-4fd6-b01c-4c33fcdace3e.png" width="1024" height="1024" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/alexkolodko_man_with_bionic_robotic_mechanical_manipulator_in_h_4edd41d4-5a33-488d-ad2c-58255555764f.png" width="1024" height="1024" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/alexkolodko_man_with_bionic_robotic_mechanical_manipulator_in_h_79d5dd21-a324-4f24-b5c2-ce37832c925b.png" width="1024" height="1024" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/alexkolodko_man_with_extra_bionic_robotic_mechanical_manipulato_5e4ed387-75ea-434f-80ad-54a6bbf25a92.png" width="1024" height="1024" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/alexkolodko_man_with_extra_bionic_robotic_mechanical_manipulato_15cc879c-6032-47b5-883c-56ccb48732cb.png" width="1024" height="1024" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/alexkolodko_man_with_extra_bionic_robotic_mechanical_manipulato_bb7622b8-8dac-41de-9925-d14892d79a05.png" width="1024" height="1024" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/alexkolodko_man_with_extra_bionic_robotic_mechanical_manipulato_c97b8485-4aa5-4fcc-aba3-c6bbdc06f756.png" width="1024" height="1024" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/alexkolodko_techmarine_warhammer_40k_style_with_robotic_arm_sit_092b8d8f-7132-4b40-9394-dd83607d6cb8.png" width="1024" height="1024" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/alexkolodko_techno_spacemarine_warhammer40k_style_with_robotic__b100e5a6-8d87-4b47-83cf-3151991a242a.png" width="1024" height="1024" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;hr&gt;&lt;/p&gt;
&lt;div&gt;&lt;div style="float: left;"&gt;&lt;p&gt;&lt;span style="font-weight:bold; font-size: 3em"&gt;&lt;b&gt;?&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div style="padding: 1em 0 0 4em"&gt;&lt;p&gt;Якщо у вас приклади вашого повторюваного дизайн-процесу, який ви повторюєте щоразу і витрачаєте свій час, напишіть на &lt;a href="mailto:alexkolodko@gmail.com"&gt;пошту&lt;/a&gt; або у &lt;a href="https://t.me/alexkolodko"&gt;телеграм&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;hr&gt;&lt;/p&gt;
&lt;div&gt;&lt;div style="float: left;"&gt;&lt;p&gt;&lt;span style="font-weight:bold; font-size: 3em"&gt;&lt;b&gt;₴&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div style="padding: 1em 0 0 4em"&gt;&lt;p&gt;Якщо вам було цікаво та корисно, можете пригостити мене кавою ☕️: картка Монобанку: &lt;tt&gt;4441114450427339&lt;/tt&gt; або &lt;a href="https://send.monobank.ua/5jVrTaRziu"&gt;через сайт&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;</description>
</item>

<item>
<title>ChatGPT як помічник з автоматизації</title>
<guid isPermaLink="false">93</guid>
<link>https://blog-archive.alexkolodko.com/all/adobe-scripting-with-chatgpt/</link>
<pubDate>Wed, 15 Mar 2023 11:37:29 +0200</pubDate>
<author></author>
<comments>https://blog-archive.alexkolodko.com/all/adobe-scripting-with-chatgpt/</comments>
<description>
&lt;p&gt;Знайшов для себе цікавий кейс застосування ChatGPT — створення простих скриптів для Ілюстратора.&lt;/p&gt;
&lt;p&gt;У лекції про дизайн-конвеєр я розповідав, що можна дуже прискорити роботу автоматизуючі окремі дії. І тут дуже допомагають екшени та різного роду скрипти. Але екшени покривають точно не всі функції, а поріг входу у скрипти доволі високий.&lt;/p&gt;
&lt;p&gt;Так от, нейромережа може допомогти створювати прості скрипти (до об’ємних вони поки не доросли).&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/Screen-Recording-2023-03-14-at-23.32.20-x2.mp4#t=0.001" width="2560" height="1600" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;ChatGPT → JSX → Adobe Illustrator&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Наприклад, є задача: маємо купу інфографіки для звіту двома мовами. І в усіх картинках треба поміняти шрифт на інший та замінити кому на крапку у числах (45,5% → 45.5%).&lt;/p&gt;
&lt;p&gt;У картинках використовуються різні накреслення, тож просто все виділити і поміняти не підходить. Треба йти в Find/Replace font і там вручну задавати зміну кожного накреслення. Довго. Те саме  заміною символів: Find and Replace, ввести символи, замінити, підтвердити. Довго.&lt;/p&gt;
&lt;p&gt;Спочатку, як завжди, пошукав у гуглі відповідь, бо можливо хтось вже писав такий код. Сходу не знайшов щось робоче.&lt;/p&gt;
&lt;p&gt;Тож далі я запитав у ChatGPT, щоб він описав скрипт, який би замінював один шрифт на інший. Вийшов скрипт, який міняє шрифт, але робить все одним накресленням. Другим запитом я уточнив, щоб і накреслення враховувалось. Перевірив — працює. Тож у кожному документі просто запускався скрипт і все саме мінялось.&lt;/p&gt;
&lt;p&gt;На цю задачу можна було залучити програміста, який на цьому розуміється, але з конкретною простою задачею навіть безплатний ChatGPT впорався непогано.&lt;/p&gt;
&lt;p&gt;Далі можна ще допиляти скрипт додати заміну кількох шрифтів на інші. І ось, ще один службовий інструмент у вас є.&lt;/p&gt;
&lt;p&gt;Авжеж, не весь код працює або не враховує якісь крайні ситуації. Але через кілька уточнень можна спробувати трохи іншу версію.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="2400" data-ratio="1.6"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/adobe-scripting-with-chatpgpt-1.png" width="2400" height="1500" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/adobe-scripting-with-chatpgpt-2.png" width="2400" height="1500" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-caption"&gt;Відповіді ChatGPT&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Ось вам приклад цього скрипта, який я частково докрутив: &lt;a href="https://www.dropbox.com/s/5c26qlafyo225sq/Font%20Replacer.jsx?dl=0"&gt;https://www.dropbox.com/s/5c26qlafyo225sq/Font%20Replacer.jsx?dl=0&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; На початку у масиві вказуються назви старого і нового шрифтів та їхні накреслення. Також можна вказати декілька змін для різних шрифтів і накреслень.&lt;/p&gt;
&lt;pre&gt;
{
«oldFontName» : «Daikon»,  // Назва старого шрифта
«oldFontWeight» : «Bold»,  // Накреслення старого шрифта
«newFontName» : «DM Sans», // Назва нового шрифта
«newFontWeight» : «Bold»   // Накреслення нового шрифта
},

&lt;/pre&gt;
&lt;p&gt;Не обов’язково треба вивчати кодування для програм Адоб, буде достатньо розуміння, що ви хочете отримати в результаті. Чим простіша і точкова задача, тим буде простіше поставити питання нейромережі й отримати більш-менш робоче рішення. &lt;/p&gt;
&lt;p&gt;І замість витрачання на часу на ручне клацання в інтерфейсі, можна створювати такі скрипти. Для своєї задачі я зекономив десь пів години, але чим більше картинок, тим більша буде й економія.&lt;/p&gt;
&lt;p&gt;Цікаво, як з такою задачею впрорається анонсований вчора GPT-4. Уявіть плагін, який би працював безпосередньо в Ілюстраторі, в який можна написати задачу і він видаватиме робочий скрипт, який можна запускати одразу у редакторі.&lt;/p&gt;
</description>
</item>

<item>
<title>Автоматизація з кастомізацією</title>
<guid isPermaLink="false">91</guid>
<link>https://blog-archive.alexkolodko.com/all/automatisation-with-customisation/</link>
<pubDate>Mon, 06 Mar 2023 22:26:12 +0200</pubDate>
<author></author>
<comments>https://blog-archive.alexkolodko.com/all/automatisation-with-customisation/</comments>
<description>
&lt;p&gt;Після того, як я опублікував відео про генератори, мене попросили зробити такий інструмент для створення табличок Природного заповідного фонду України для дерев. Зробив першу ітерацію:&lt;br /&gt;
&lt;a href="https://g.wayfinding.systems/pzfu"&gt;g.wayfinding.systems/pzfu &lt;/a&gt;&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/pzfu-demo-speedx4.mp4#t=0.001" width="2560" height="1736.245912361" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;Демо роботи генератора&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;Процес&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://capture.dropbox.com/aA9xUetXOC0PBMjo"&gt;Новий стиль заповідників&lt;/a&gt; розробляла студія happy, дуже велика і змістовна робота. В основі стилю був зроблений патерн, який повторює текстуру дерева. І на цих табличках він також використовується.&lt;/p&gt;
&lt;p&gt;У матеріалах з брендбука ця текстура зроблена однією великою картинкою, щоб потім дизайнер міг на свій розсуд її вставляти у макети та обирати зручний ракурс. У макетах, які мені дали як приклад, текстура для всіх табличок однакова. Але мені хотілося не просто відтворити, а зробити так, щоб для кожної таблички цей патерн був унікальним.&lt;/p&gt;
&lt;p&gt;Перша думка була — треба на основі алгоритму якось генерувати подібні лінії. Але я не маю достатньо знань, що створити потрібний алгоритм.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/tree-random-texture-2400.png" width="2400" height="906" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Але трохи подумав, як можна обійтись тією однією текстурою. Придумав такий підхід:&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;обрізаємо текстуру, щоб отримати рівний прямокутник великого розміру (у 3-4 рази більший за розмір таблички);&lt;/li&gt;
&lt;li&gt;беремо цю текстуру і вставляємо у маску, що має розмір самої таблички;&lt;/li&gt;
&lt;li&gt;випадково міняємо:  &lt;br /&gt;
a) положення текстури у масці,  &lt;br /&gt;
b) масштаб текстури від 100 до 120%,&lt;br /&gt;
c) віддзеркалення текстури по осі x.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Таким чином маючи одну фіксовану текстуру можна отримати безліч комбінацій. Хоча підхід неідеальний: при певних параметрах текстура занадто сильно з’їжджає в якийсь з боків.&lt;/p&gt;
&lt;p&gt; За допомогу окрема подяка dnipro.design, Ігорю та Максиму Крижановським.&lt;/p&gt;
</description>
</item>

<item>
<title>{Генератор} + Паркувальні таблички Києва</title>
<guid isPermaLink="false">76</guid>
<link>https://blog-archive.alexkolodko.com/all/generator-kyivparking/</link>
<pubDate>Thu, 03 Nov 2022 18:43:51 +0200</pubDate>
<author></author>
<comments>https://blog-archive.alexkolodko.com/all/generator-kyivparking/</comments>
<description>
&lt;p&gt;У мене є ідея замість окремих інструментів, створити один спільний генератор, в який можна потім буде простіше додавати різні макети по різних містах, і він стане такою точкою генерації всього: від табличок до розкладів транспорту.&lt;/p&gt;
&lt;p&gt;Першим підпроєктом став генератор паркувальних інформаційних табличок Києва — &lt;a href="https://g.wayfinding.systems/kyivparking "&gt;g.wayfinding.systems/kyivparking &lt;/a&gt;&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;iframe src="https://www.youtube.com/embed/f-KxvLUCaNU?enablejsapi=1" allow="autoplay" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;У залежності від зони паркування, змінюється колір таблички, тарифи та штрафи, а також генерується унікальний qr-код який містить номер паркомісця, що дозволить у майбутньому на лендингу використати цей номер. Наприклад, щоб одразу вести у застосунок Київ Цифровий, в якому буде вже обраний автоматично потрібний паркувальний майданчик, тож потрібно буде лише натиснути одну кнопку і почати паркування.&lt;/p&gt;
&lt;p&gt;p.s. А ще зацініть фавікону і логотип, який можна написати текстом — {△}&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/generator-favicon.png" width="982" height="254" alt="" /&gt;
&lt;/div&gt;
</description>
</item>

<item>
<title>Автоматизація дизайну: генератори макетів</title>
<guid isPermaLink="false">75</guid>
<link>https://blog-archive.alexkolodko.com/all/automation-online-generators/</link>
<pubDate>Thu, 03 Nov 2022 18:32:36 +0200</pubDate>
<author></author>
<comments>https://blog-archive.alexkolodko.com/all/automation-online-generators/</comments>
<description>
&lt;p&gt;Одним з напрямків автоматизації, яким я цікавлюсь, є створення нових інструментів — онлайнових генераторів макетів, які дають можливість прямо з браузера отримати готовий макет зроблений за всіма правилами, в розмірах, в кривих, готовий до друку.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;iframe src="https://www.youtube.com/embed/2fa3ddVkJVk?enablejsapi=1" allow="autoplay" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;div class="e2-text-caption"&gt;Приклади створених генераторів&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Генератори макетів підвищують ефективність роботи, дозволяють:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;☑️ за той самий час зробити більшу кількість макетів;&lt;/li&gt;
&lt;li&gt;☑️ створювати макети без залучення дизайнерів;&lt;/li&gt;
&lt;li&gt;☑️ не шукати та не купувати шрифти.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Які переваги дає такий генератор:&lt;br /&gt;
 🟢 Відповідність дизайну. Неможливо зробити неправильний макет.&lt;/p&gt;
&lt;p&gt;🟢 Економія коштів та людських ресурсів. Автоматичне створення макетів займає менше робочого часу та зменшує витрати на роботу.  Можна взагалі не залучати дизайнера для створення чергових типових макетів.&lt;/p&gt;
&lt;p&gt;🟢 Унеможливлення помилок. Менше ручної роботи зменшує кількість можливих помилок при введенні тексту.&lt;/p&gt;
&lt;p&gt;🟢 Масове впровадження. Дає можливість обробити більше макетів за той самий проміжок часу, а відповідно впровадити велику кількість носіїв.&lt;/p&gt;
&lt;p&gt;🟢 Не потрібні шрифти. Виконавцям не треба купляти ліценцію на шрифт кожен раз, а передавати їм шрифти зазвичай забороняє ліценція. Генератор віддає макети «в кривих», тому потрібна лише одна ліценція для сайту під час розробки.&lt;/p&gt;
&lt;p&gt;Онлайн-генератор макетів буде корисним для навігаційних та інформаційних знаків: адресні покажчики, навігаційні покажчики, інформаційні знаки зі змінною інформацією, розклади на зупинках, дорожні знаки тощо. А також буде корисним при створенні фірмових макетів зі змінною інформацією: візитівки, бейджі, наліпки з qr-кодами тощо.&lt;/p&gt;
&lt;p&gt;Приклади реалізованих публічних генераторів:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://touristroadsign.a3.kyiv.ua/b-1-constructor.php"&gt;Туристична навігація на дорогах України&lt;/a&gt;: ми написали правила та додатково зробили для деяких типів знаків генератор макетів.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://streetsigns.dnipro.design/signs/name"&gt;Адресні таблички Дніпра&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://kyivstreetsign.a3.kyiv.ua/#template-1-11-1"&gt;Адресні покажчики Києва&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://g.wayfinding.systems/kyivparking"&gt; Паркувальні таблички Києва&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;✉️&lt;br /&gt;
Якщо зацікавило і вам у роботі потенційно може бути корисним подібний генератор, напишіть на адресу &lt;a href="mailto:generator@wayfinding.systems"&gt;generator@wayfinding.systems&lt;/a&gt; або в особисті у телеграмі &lt;a href="t.me/alexkolodko"&gt;t.me/alexkolodko&lt;/a&gt; чи на пошту &lt;a href="mailto:alexkolodko@gmail.com"&gt;alexkolodko@gmail.com&lt;/a&gt;&lt;/p&gt;
</description>
</item>

<item>
<title>QA: Автоматизація компресії зображень</title>
<guid isPermaLink="false">64</guid>
<link>https://blog-archive.alexkolodko.com/all/qa-automation-image-compression/</link>
<pubDate>Wed, 12 Oct 2022 11:50:53 +0200</pubDate>
<author></author>
<comments>https://blog-archive.alexkolodko.com/all/qa-automation-image-compression/</comments>
<description>
&lt;p&gt;&lt;b&gt;Q:  А якщо до імдж компресії? Чи можно автонакидувати термінальні команди?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;A: По компресії є кілька методів. Зняв відео, а нижче опис:&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;iframe src="https://www.youtube.com/embed/mNzGMuvwl60?enablejsapi=1" allow="autoplay" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;div class="e2-text-caption"&gt;Автоматитизація компресії зображень&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;1. ImageOptim&lt;/h2&gt;
&lt;p&gt; На Мак є програма &lt;a href="https://imageoptim.com/mac"&gt;ImageOptim&lt;/a&gt;. Пачкою оптимізує будь-яку кількість картинок. Працює на алгоритмі &lt;a href="https://pngquant.org"&gt;PNGQuant&lt;/a&gt; і також доступний, як програма для терміналу.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/ImageOptim-app@2x.png" width="514" height="166" alt="" /&gt;
&lt;/div&gt;
&lt;h2&gt;2. Terminal: optipng, jpegopti, gifsicle, svgo&lt;/h2&gt;
&lt;p&gt;Є кілька програм оптимізації зображень для термінала:&lt;/p&gt;
&lt;p&gt;а) Для PNG є &lt;b&gt;PNGQuant&lt;/b&gt;, &lt;b&gt;pngcrush&lt;/b&gt; та &lt;b&gt;optipng&lt;/b&gt;. Останній також вміє конвертувати BMP, GIF, TIFF у PNG, сайт. На його прикладі і подивимось.&lt;/p&gt;
&lt;p&gt;Працює так: оптимізує всі файли PNG у теці&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;optipng *.png&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Або ще отакий :&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;find . -name &amp;#039;*.png&amp;#039; | xargs optipng -nc -nb -o7 -full&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;А отак рекурсивно шукає та оптимізує PNG у всіх підтеках:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;find . -iname &amp;quot;*.png&amp;quot; -exec optipng -o7 {} \;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;б) &lt;b&gt;jpegopti&lt;/b&gt; для JPG. &lt;a href="https://github.com/tjko/jpegoptim"&gt;Github&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Працює так:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;jpegoptim -m70 img-name&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;-m70 — відсоток стискання&lt;/p&gt;
&lt;p&gt;в) &lt;b&gt;gifsicle&lt;/b&gt; для GIF. &lt;a href="https://www.lcdf.org/gifsicle/"&gt;Сайт&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Для одного зображення:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;gifsicle --batch -V -O2 image-name.gif&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Так само рекурсивно шукає та оптимізує GIF у всіх підтеках:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;find . -iname &amp;quot;*.gif&amp;quot; -exec gifsicle --batch -V -O2 {} \;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;г) svgo для SVG.&lt;/p&gt;
&lt;p&gt;Працює так для всіх файлів:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;svgo *.svg&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Інсталюються всі вони через Homebrew:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;brew install optipng&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;3.1 Automator: quick action&lt;/h2&gt;
&lt;p&gt;Попередні команди збираємо у окремий bash-скріпт, сценарій для автоматора та сценарій на теку.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/automator-workflow-quick-action.png" width="847" height="1200" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Сценарій будується так:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;отримання файлів (у даному випадку всі виділені)&lt;/li&gt;
&lt;li&gt;встановлення хз як змінних для скрипта (Set Value та Get Value)&lt;/li&gt;
&lt;li&gt;запуск bash-скрипта на виділених файлах (Run Shell Script, з налаштуваннями Shell /bin/bash та Pass Input: as arguments)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://www.dropbox.com/sh/qxjv55wg5utwziz/AAAn1n04lDgklL1G0ijjppNVa?dl=0"&gt; Завантажити цей сценарій&lt;/a&gt; (попередньо треба встановити термінальні команди optipng, jpegopti, pngcrush, svgo).&lt;/p&gt;
&lt;p&gt;Сам скрипт:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;export PATH=/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/munki:$PATH

BIN_PATH=~/Library/Services/.bin

for f in &amp;quot;$@&amp;quot;; do
    if [ -d $f ]; then
        echo &amp;quot;TODO: nothing to compress now!&amp;quot;
    elif [[ $f == *.png ]]; then
        if hash optipng 2&amp;gt;/dev/null; then
            optipng -o7 &amp;quot;$f&amp;quot;
        else
            $BIN_PATH/optipng -o7 &amp;quot;$f&amp;quot;
        fi
        if hash pngcrush 2&amp;gt;/dev/null; then
            pngcrush -brute -reduce -ow &amp;quot;$f&amp;quot;
        else
            $BIN_PATH/pngcrush -brute -reduce -ow &amp;quot;$f&amp;quot;
        fi
    elif [[ $f == *.jpg ]]; then
        if hash jpegoptim 2&amp;gt;/dev/null; then
            jpegoptim &amp;quot;$f&amp;quot; --strip-all --force --all-progressive --size=150k
        else
            echo &amp;quot;No jpegoptim installed, skipped.&amp;quot;
        fi
    elif [[ $f == *.svg ]]; then
        if hash svgo 2&amp;gt;/dev/null; then
            svgo &amp;quot;$f&amp;quot;
        else
            echo &amp;quot;No SVGO installed, skipped.&amp;quot;
        fi
    else
        echo &amp;quot;TODO: nothing to compress now!&amp;quot;
    fi
done;&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;3.2 Automator: folder action&lt;/h2&gt;
&lt;p&gt;А на теку попередній сценарій підлаштовується просто з відключеним першим кроком. А на теку попередній сценарій підлаштовується просто з відключеним першим кроком. &lt;a href="https://www.dropbox.com/sh/29ntmizetk2w3wo/AAB_R1ieTaHli6267gIxUzT-a?dl=0"&gt;Завантажити скрипт для теки&lt;/a&gt;.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/automator-workflow-folder.png" width="855" height="1200" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;&lt;hr&gt;&lt;/p&gt;
&lt;div&gt;&lt;div style="float: left;"&gt;&lt;p&gt;&lt;span style="font-weight:bold; font-size: 3em"&gt;&lt;b&gt;?&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div style="padding: 1em 0 0 4em"&gt;&lt;p&gt;Розкажіть, будь ласка, які дії з файлами вам доводиться періодично повторювати? Які рутинні задачі у вас бувають? Мені цікаво, які задачі можливо автоматизувати. Напишіть на &lt;a href="mailto:alexkolodko@gmail.com"&gt;пошту&lt;/a&gt; або у &lt;a href="https://t.me/alexkolodko"&gt;телеграм&lt;/a&gt;. ▶️ Більше у телеграм-каналі «Здоровий глузд» — &lt;a href="https://t.me/alexkolodko1"&gt;https://t.me/alexkolodko1&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;p&gt;—&lt;/p&gt;
</description>
</item>

<item>
<title>QA: Автоматизоване перейменування файлів</title>
<guid isPermaLink="false">63</guid>
<link>https://blog-archive.alexkolodko.com/all/qa-rename/</link>
<pubDate>Tue, 11 Oct 2022 23:50:07 +0200</pubDate>
<author></author>
<comments>https://blog-archive.alexkolodko.com/all/qa-rename/</comments>
<description>
&lt;p&gt;&lt;b&gt;Q: Часто доводиться додавати декілька слів на початку назв 10 файлів у папці. Цікаво, чи можна зробити так, щоб можна було прописувати ці декілька слів один раз, а вони додавалися до назв всіх файлів у папці автоматично?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;A: Так, на Маку по перше можна напіввручну через функцію перейменування файлів додавати всім файлам на початку назви певне слово.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;iframe src="https://www.youtube.com/embed/RLHfAcvF_6E?enablejsapi=1" allow="autoplay" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;А також в Автоматорі → Rename Finder Items. Там серед варіантів є додавання тексту до чи після назви файлу. До речі, ця функція в Автоматорі більш просунута, ніж звичайне перейменування у Finder. І використовувати можна або через контекстне меню → Quick Actions, або створити автоматизацію для теки.&lt;/p&gt;
&lt;p&gt;Ще можна перейменовувати файли у певному форматі, наприклад, по днях року, за допомогою  bash-скрипта: &lt;a href="https://blog.alexkolodko.com/all/mass-rename/"&gt;https://blog.alexkolodko.com/all/mass-rename/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;hr&gt;&lt;/p&gt;
&lt;div&gt;&lt;div style="float: left;"&gt;&lt;p&gt;&lt;span style="font-weight:bold; font-size: 3em"&gt;&lt;b&gt;?&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div style="padding: 1em 0 0 4em"&gt;&lt;p&gt;Розкажіть, будь ласка, які дії з файлами вам доводиться періодично повторювати? Які рутинні задачі у вас бувають? Мені цікаво, які задачі можливо автоматизувати. Напишіть на &lt;a href="mailto:alexkolodko@gmail.com"&gt;пошту&lt;/a&gt; або у &lt;a href="https://t.me/alexkolodko"&gt;телеграм&lt;/a&gt;. ▶️ Більше у телеграм-каналі «Здоровий глузд» — &lt;a href="https://t.me/alexkolodko1"&gt;https://t.me/alexkolodko1&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;p&gt;—&lt;/p&gt;
</description>
</item>

<item>
<title>Автоматизація у папках у Mac OS за допомогою Automator</title>
<guid isPermaLink="false">59</guid>
<link>https://blog-archive.alexkolodko.com/all/macos-folder-automation/</link>
<pubDate>Fri, 07 Oct 2022 17:07:45 +0200</pubDate>
<author></author>
<comments>https://blog-archive.alexkolodko.com/all/macos-folder-automation/</comments>
<description>
&lt;p&gt;На Маку можна на певні теки повісити автоматизацію, при чому можна створити доволі багато різних дій, які обмежені тільки функціями Автоматора (а при знанні Apple Script так і взагалі будь-що у системі можна зробити). Реалізація дещо крива, але в цілому працює.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;iframe src="https://www.youtube.com/embed/b9FgHx6RE2c?enablejsapi=1" allow="autoplay" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;div class="e2-text-caption"&gt;Швидке демо: файл HEIC конвертується у JPG, а далі копіїються у окрему теку, зменшується на 50% та у назву додається текст «_50%».&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;Як це працює&lt;/h2&gt;
&lt;p&gt;Для цього знадобляться два системні інструменти: &lt;b&gt;Automator&lt;/b&gt; та &lt;b&gt;Folder Action Setup&lt;/b&gt;. У Автоматорі створюється саме автоматизація для теки (folder action), обирається конкретна тека та налаштовується конкретна послідовність дій (workflow) з файлами, які до неї потрапляють. &lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/automator-create-folder-action.png" width="2400" height="1786" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Створення дії для теки в Автоматорі&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Приклади послідовностей:&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Конвертація картинок у формат JPG.&lt;/li&gt;
&lt;li&gt;Збереження копії картинки у теці під назвою «50», конвертування картинки у JPG, зміна розміру та  додавання до назви тексту «_50%».&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="2400" data-ratio="1.3437849944009"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/automator-flow-1-convert.png" width="2400" height="1786" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/automator-flow-2-resize-rename-move.png" width="2400" height="1786" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-caption"&gt;Приклади послідовностей&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;У Folder Action збираються всі наявні дії на теках, які можна переглянути, додати, вимкнути чи видалити. При цьому створивши одну послідовність дій, її можна застосовувати для різних тек. А також для однієї теки можна налаштувати будь-яку кількість сценаріїв, які відтворюватимуться послідовно: наприклад, конвертувати всі картинки у JPG, а потім зробити копію з розміром 50% від оригіналу та покласти цю копію в окрему теку.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="2400" data-ratio="1.2182741116751"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/folder-actions-setup-1.png" width="2400" height="1970" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/folder-actions-setup-2-add-action.png" width="2400" height="2100" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-caption"&gt;Інтерфейс Folder Action Setup&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Також детальне пояснення автоматизації тек: &lt;a href="https://macosxautomation.com/automator/folder-action/index.html"&gt;https://macosxautomation.com/automator/folder-action/index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;hr&gt;&lt;/p&gt;
&lt;div&gt;&lt;div style="float: left;"&gt;&lt;p&gt;&lt;span style="font-weight:bold; font-size: 3em"&gt;&lt;b&gt;?&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div style="padding: 1em 0 0 4em"&gt;&lt;p&gt;Розкажіть, будь ласка, які дії з файлами вам доводиться періодично повторювати? Які рутинні задачі у вас бувають? Мені цікаво, які задачі можливо автоматизувати. Напишіть на &lt;a href="mailto:alexkolodko@gmail.com"&gt;пошту&lt;/a&gt; або у &lt;a href="https://t.me/alexkolodko"&gt;телеграм&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;</description>
</item>

<item>
<title>Автоматизація у папках Dropbox</title>
<guid isPermaLink="false">47</guid>
<link>https://blog-archive.alexkolodko.com/all/dropbox-folder-automatisation/</link>
<pubDate>Thu, 06 Oct 2022 23:34:37 +0200</pubDate>
<author></author>
<comments>https://blog-archive.alexkolodko.com/all/dropbox-folder-automatisation/</comments>
<description>
&lt;p&gt;У Дропбоксі є така неочевидна функція: деякі типові автоматизації для окремих тек, в яких відбувається якась проста дія:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;сортування файлів за певним параметром;&lt;br /&gt;
* перейменування файлів (наприклад, додати до назви слово, назву теки чи дату);&lt;br /&gt;
* автоматичне збереження PDF поруч з кожним файлом (корисно для текстових документів та таблиць)&lt;br /&gt;
* конвертація всіх картинок у формат PNG або JPG (наприклад, переводити фото з HEIC у JPG);&lt;/li&gt;
&lt;li&gt;конвертація відео у MOV або MP4 (це відео зберіг через цю функцію, MOV→MP4, розмір не змінився);&lt;/li&gt;
&lt;li&gt;розпаковування архіву;&lt;/li&gt;
&lt;li&gt;конвертація аудіо у MP3 або WAV;&lt;/li&gt;
&lt;li&gt;переведення аудіо у текст.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="e2-text-video"&gt;
&lt;iframe src="https://www.youtube.com/embed/rxAejg3naCU?enablejsapi=1" allow="autoplay" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;Довідка, як увімкнути автоматизацію: &lt;a href="https://help.dropbox.com/organize/dropbox-automations"&gt;help.dropbox.com/organize/dropbox-automations&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;—&lt;br /&gt;
Музика: Yevhen Lokhmatov&lt;br /&gt;
&lt;a href="https://www.lokhmatovmusic.com"&gt;https://www.lokhmatovmusic.com&lt;/a&gt;&lt;/p&gt;
</description>
</item>

<item>
<title>Дизайн-конвеєр: автоматизація роботи та масовий дизайн (лекція)</title>
<guid isPermaLink="false">48</guid>
<link>https://blog-archive.alexkolodko.com/all/dizayn-konveyer-avtomatizaciya-roboti-ta-masoviy-dizayn-lekciya/</link>
<pubDate>Mon, 01 Aug 2022 22:58:00 +0200</pubDate>
<author></author>
<comments>https://blog-archive.alexkolodko.com/all/dizayn-konveyer-avtomatizaciya-roboti-ta-masoviy-dizayn-lekciya/</comments>
<description>
&lt;p&gt;Взяв участь у &lt;a href="https://cases.media/creativepractice/marathon"&gt;Марафоні Креативної практики&lt;/a&gt; від Cases на підтримку ЗСУ, та записав лекцію про автоматизацію дизайну, дизайн-конвеєр та можливість створювати масовий дизайн. А взагалі це про підвищення власної продуктивності і цінності, як спеціаліста.&lt;/p&gt;
&lt;p&gt;По-перше, в основі продуктивної роботи лежить просунуте знання можливостей робочих інструментів (як і що робити швидше), вивчення нових інструментів у зв’язці з робочими (гугл-таблиці, термінальні команди тощо) та створення своїх інструментів під задачі (форматування даних, генератори макетів тощо). Розповідаю на прикладі дизайну паркувальних табличок та інших навігаційних проєктів, в яких кількість макетів легко може сягати 500+ шт.&lt;/p&gt;
&lt;p&gt;По-друге, щоб почати робити велику кількість макетів, потрібно подивитись на процес дизайну, як на алгоритм і створити конвеєр, на якому можна автоматизовувати якусь окрему частину створення макета та робити це швидко і багато. Наприклад, згенерувати 3000+ qr-кодів та вставити їх у макети в Індизайні.&lt;/p&gt;
&lt;p&gt;Подивитись лекцію можна на ютуб-каналі Креативної практики:&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;iframe src="https://www.youtube.com/embed/YkFWijLZDvg?enablejsapi=1" allow="autoplay" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;Або на сторінці марафону: &lt;a href="https://cases.media/creativepractice/marathon"&gt;https://cases.media/creativepractice/marathon&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ставайте крутішими спеціалістами та зробіть переказ в один з фондів на підтримку ЗСУ для наближення нашої перемоги ✊🇺🇦&lt;/p&gt;
</description>
</item>

<item>
<title>Генератор адресних покажчиків Дніпра</title>
<guid isPermaLink="false">41</guid>
<link>https://blog-archive.alexkolodko.com/all/dnipro-streetsigns-generator/</link>
<pubDate>Wed, 16 Feb 2022 20:38:21 +0200</pubDate>
<author></author>
<comments>https://blog-archive.alexkolodko.com/all/dnipro-streetsigns-generator/</comments>
<description>
&lt;p&gt;Команда &lt;a href="https://dnipro.design"&gt;dnipro.design&lt;/a&gt; розробили нові адресні покажчики Дніпра, описали у правилах та &lt;a href="https://www.dropbox.com/s/377c1kscx7h5j7t/streetsigns.pdf?dl=0&amp;utm_source=streetsigns&amp;fbclid=IwAR17EfC7O-wrPODckH1Tgd0HgFybT17CCRjGX4Vzeghsq5VkuROOmYWu_xc"&gt;затвердили&lt;/a&gt; правила нових адресних покажчиків. Розумію, який то об’єм. Гарна велика робота, респектую всій команді 👏&lt;/p&gt;
&lt;p&gt;А для того, щоб правила не лишались на папері ми допомогли створити інструмент для генерації всіх видів макетів:&lt;/p&gt;
&lt;p&gt;👉 &lt;a href="https://streetsigns.dnipro.design/g-name.html"&gt;https://streetsigns.dnipro.design/g-name.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Такий інструмент допомагає всім охочим зробити потрібні макети за всіма правилами.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Вам не потрібен дизайнер.&lt;/li&gt;
&lt;li&gt;Вам не потрібно шукати чи купувати необхідні шрифти.&lt;/li&gt;
&lt;li&gt;Вам не потрібна ліценція Adobe, Corel чи інших програм.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="e2-text-video"&gt;
&lt;iframe src="https://www.youtube.com/embed/EtIg5--4d_c?enablejsapi=1" allow="autoplay" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;div class="e2-text-caption"&gt;Як працює генератор&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Хочете табличку → Заповнюєте кілька полів → Натискаєте кнопку → Отримуєте готовий до виробництва макет → Замовляєте покажчик → Вішаєте.&lt;/p&gt;
&lt;p&gt;Дуже просто, правда?&lt;/p&gt;
&lt;p&gt;А далі процес безкінечно масштабується на величезні об’єми знаків через застосування таблиць: заповнюєте таблицю у відповідному форматі → вставляєте посилання → отримуєте 100500 готових макетів.&lt;/p&gt;
&lt;p&gt;Окрім очевидних плюсів є ще кілька.&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Прагматичне. Чим менше людини у процесі, тим менша ймовірність людських помилок, які призводять до витрат уваги, часу на знаходження і виправлення цих помилок.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Егоїстичне. Навіщо витрачати час на нецікаву роботу по створенню ще одного типового макету, якщо можна той самий час приділити вивчення чогось або просто відпочинку.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="3"&gt;
&lt;li&gt;Футуристичне. Чим далі, тим більше роботи на себе заберуть машини, тож варто йти попереду.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Застосовувати можна всюди де є багато макетів з різними даними:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;адресні покажчики&lt;/li&gt;
&lt;li&gt;розклади транспорту&lt;/li&gt;
&lt;li&gt;навігаційні покажчики та вказівники&lt;/li&gt;
&lt;li&gt;паркувальні та інформаційні таблички&lt;/li&gt;
&lt;li&gt;дорожні знаки&lt;/li&gt;
&lt;li&gt;автомобільні номери&lt;/li&gt;
&lt;li&gt;тощо…&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Вважаю майбутнє не тільки за розробкою дизайну, а й за створенням інструментів для створення дизайну. Уявіть брендбук, який не просто у ПДФці розповідає, як робити якийсь макет, а одразу його робить за всіма правилами.&lt;/p&gt;
&lt;p&gt;Ми зробили генератор табличок Києва, тепер Дніпра, а в роботі ще кілька таких інструментів, які покажемо згодом. А якщо у вас є потреба спростити собі роботу або зробити у себе такий інструмент, то напишіть мені (або розкажіть про це вашому знайомому меру чи головному архітектору 😉).&lt;/p&gt;
</description>
</item>

<item>
<title>Автоматизація з Google Sheets</title>
<guid isPermaLink="false">29</guid>
<link>https://blog-archive.alexkolodko.com/all/automatisation-with-google-sheets/</link>
<pubDate>Sun, 16 May 2021 22:50:44 +0200</pubDate>
<author></author>
<comments>https://blog-archive.alexkolodko.com/all/automatisation-with-google-sheets/</comments>
<description>
&lt;p&gt;У контексті автоматизації таблиці можна застосовувати для переформатування (роз’єднання та з’єднання тексту, заміна тексту іншим і так далі) вхідних даних у необхідному вигляді для подальшої роботи у Data Merge в InDesign, JSON для використання на сайтах, консольних командах тощо.&lt;/p&gt;
&lt;p&gt;Найцікавіші функції у Google Sheets:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;tt&gt;CONCATENATE&lt;/tt&gt; — об’єднання текстів з різних комірок та з заданим вручну текстом. Наприклад, &lt;tt&gt;CONCATENATE (A1;»-«;B1;».svg»)&lt;/tt&gt; візьме текст з A1, додасть дефіс, додасть текст з B1 та в кінці додасть «.svg».&lt;/li&gt;
&lt;li&gt;&lt;tt&gt;JOIN&lt;/tt&gt; — схоже на &lt;tt&gt;CONCATENATE&lt;/tt&gt;, об’єднає два тексти з вказаним розділювачем між ними. Наприклад, &lt;tt&gt;JOIN(»—«;A1;B1)&lt;/tt&gt; візьме текст з A1, додасть два дефіси та додасть текст з B1.&lt;/li&gt;
&lt;li&gt;&lt;tt&gt;SPLIT&lt;/tt&gt; — розділить текст у комірці на кілька частин по вказаному символу-розділювачу. Наприклад, &lt;tt&gt;SPLIT(B3; “-”)&lt;/tt&gt; розділить текст з комірки B3 на дві частини: ліворуч від дефіса “-” та праворуч від нього. Розділені дані будуть у кількох комірках праворуч від комірки з формулою.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/function-split@2x.png" width="658" height="171" alt="" /&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;tt&gt;SUBSTITUTE&lt;/tt&gt; — замінить текст в комірці іншим. Наприклад, &lt;tt&gt;SUBSTITUTE (A1;«ex«;«pex»)&lt;/tt&gt; візьме текст з комірки A1 та замінить всі комбінації «ex» на «pex».&lt;/li&gt;
&lt;li&gt;&lt;tt&gt;REPLACE&lt;/tt&gt; — замінить певну кількість символів тексту в комірці, яка починається з певної позиції. Наприклад, &lt;tt&gt;REPLACE(A1;2;4;«0000»)&lt;/tt&gt; візьме текст з комірки A1, та починаючи з другого символу заміняємо чотири символи на «0000».&lt;/li&gt;
&lt;li&gt;&lt;tt&gt;REGEXREPLACE&lt;/tt&gt; — замінить частини тексту іншим через регулярні вирази (regex). Наприклад, &lt;tt&gt;REGEXREPLACE(A1; $E$2; «„)&lt;/tt&gt; візьме текст з A1, подивиться у комірку E2, сприйме текст звідти, як &lt;a href="https://github.com/google/re2/blob/master/doc/syntax.txt"&gt;регулярні вирази&lt;/a&gt;, та замінить все що підходить на пропонований текст.&lt;/li&gt;
&lt;li&gt;&lt;tt&gt;REGEXEXTRACT&lt;/tt&gt; — видалить частину тексту за допомогою регулярних виразів.&lt;/li&gt;
&lt;li&gt;&lt;tt&gt;LEFT, MID, RIGHT&lt;/tt&gt; — функції, які дозволяють взяти конкретну кількість символів з лівої частини, з середини або з правої частини від тексту. Наприклад, &lt;tt&gt;LEFT(A1, 2)&lt;/tt&gt; візьме перші два символи з A1, &lt;tt&gt;MID(A1, 5, 2)&lt;/tt&gt; візьме два символи з A1 після п’ятого символу, а &lt;tt&gt;RIGHT(A1, 2)&lt;/tt&gt; візьме останні два символи.&lt;/li&gt;
&lt;li&gt;&lt;tt&gt;LOWER()&lt;/tt&gt; — робить всі літери маленькими (lower case).&lt;/li&gt;
&lt;li&gt;&lt;tt&gt;UPPER()&lt;/tt&gt; — робить всі літери великими (UPPER CASE він же ALL CAPS).&lt;/li&gt;
&lt;li&gt;&lt;tt&gt;PROPER()&lt;/tt&gt; — робить всі перші літери великі, а ніші маленькі (Title Case).&lt;/li&gt;
&lt;li&gt;&lt;tt&gt;SENTENCE()&lt;/tt&gt; — робить перша літера речення велика, інші маленькі (Sentence case).&lt;/li&gt;
&lt;li&gt;&lt;tt&gt;TRIM&lt;/tt&gt; — прибирає в тексті всі пробіли.&lt;/li&gt;
&lt;li&gt;&lt;tt&gt;GOOGLETRANSLATE(A2;“uk»;«en»)&lt;/tt&gt; — переклад тексту в комірці A2 з української &lt;i&gt;uk&lt;/i&gt; на англійську &lt;i&gt;en&lt;/i&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Рекомендую переглянути &lt;a href="https://support.google.com/docs/table/25273?hl=en"&gt;всі функції Google Sheets&lt;/a&gt;. Функції в MS Excel можуть відрізнятись, але в ньому можна робити більшість таких самих дій.&lt;/p&gt;
&lt;h2&gt;CSV та Data Merge&lt;/h2&gt;
&lt;p&gt;Наприклад, у навігації потрібно створити список орендарів з номерами корпусів та офісів. На вході ми маємо базу орендарів у виглядів excel-таблиці, яка записана у якійсь своїй логіці у базі даних. Можна переформатувати цю таблицю вручну, але такий список постійно оновлюється. І, щоб кожен раз не робити вручну, краще мати інструмент, який зробить це за тебе. &lt;/p&gt;
&lt;p&gt;Отримуємо &lt;a href="https://docs.google.com/spreadsheets/d/199OB6-NLIyMUcCXg7xI-8n-tY1DIAULMCM1g9b-sYW8/edit#gid=0"&gt;таблицю&lt;/a&gt;, в яку можна копіювати дані з бази та отримувати правильно відформатовані дані. Потім ці дані можна підключати з зовнішнього csv-файлу в InDesign (панель Data Merge) або Illustrator (панель Variables).&lt;/p&gt;
&lt;p&gt;Далі по кроках.&lt;/p&gt;
&lt;p&gt;У окремій комірці через символ «|» перелічуємо конструкції, які треба буде прибирати включно з пробілами, наприклад, «ТОВ », «ФОП » тощо. Потім за допомогою &lt;tt&gt;REGEXREPLACE&lt;/tt&gt; у кожному рядку видаляємо всі конструкції, перелічені у першій комірці та отримуємо назву орендаря без зайвого тексту, який у навігації буде зайвим.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/bc-01@2x.png" width="1200" height="708" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;За допомогою &lt;tt&gt;SPLIT&lt;/tt&gt; розділяємо номер, щоб відокремити номер корпусу за входу, наприклад, 1(D), від номера офісу.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/bc-02@2x.png" width="1200" height="708" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Через &lt;tt&gt;PROPER&lt;/tt&gt; форматуємо кожну назву в однаковій вигляд з першою прописною та іншими заголовними.&lt;br /&gt;
￼&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/bc-03@2x.png" width="1200" height="708" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;За допомогою &lt;tt&gt;LEFT, MIDDLE, RIGHT&lt;/tt&gt; виокремлюємо з номерів входів та офісів окремі фрагменти, щоб сформувати номер у форматі &lt;i&gt;1D-003&lt;/i&gt;.&lt;br /&gt;
￼￼￼￼&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1200" data-ratio="1.6949152542373"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/bc-04@2x.png" width="1200" height="708" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/bc-05@2x.png" width="1200" height="708" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/bc-06@2x.png" width="1200" height="708" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/bc-07@2x.png" width="1200" height="708" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Через &lt;tt&gt;CONCATENATE&lt;/tt&gt; об‘єднуємо номер в одну сутність та додаємо розділювач-тире.&lt;br /&gt;
￼&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/bc-11@2x.png" width="1200" height="708" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Далі цю таблицю можна експортувати у CSV та під’єднати у макет в InDesign через панель Data Merge. Про це у мене було окреме відео:&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;iframe src="https://www.youtube.com/embed/m6HxcWWCFz4?enablejsapi=1" allow="autoplay" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2&gt;JSON&lt;/h2&gt;
&lt;p&gt;Якщо буде потрібно для сайту сформувати JSON-файл з даними для автодоповнення у формі чи десь ще, наприклад, у генератори покажчиків підказуємо правильні назви вулиць, то так само можна зібрати дані у потрібному форматі у таблиці.&lt;br /&gt;
 Через &lt;tt&gt;CONCATENATE&lt;/tt&gt; беремо назви вулиць та об‘єднуємо у рядок вигляду {“name”: “Назва”, “type”: “вулиця”}, у два підходи:&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Оскільки сама функція використовує подвійні лапки тож їх не можна просто так додати, то спочатку збираємо рядок з одинарними лапками &lt;tt&gt;CONCATENATE(«{’name’: ’»;C2;«’, ’type’: ’»;D2;«’},»)&lt;/tt&gt;.&lt;/li&gt;
&lt;li&gt;Через функцію &lt;tt&gt;SUBSTITUTE(G2;«’»;«»»»)&lt;/tt&gt; заміняємо всі одинарні лапки на двійні.&lt;br /&gt;
￼&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1200" data-ratio="1.7021276595745"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/JSON-1@2x.png" width="1200" height="705" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/JSON-2@2x.png" width="1200" height="705" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;Консольні команди&lt;/h2&gt;
&lt;p&gt;Наприклад, потрібно зробити кількадесят макетів з різними qr-кодами, в яких закладені різні посилання (номери автоматів, якісь коди, посилання у бот зворотного зв‘язку тощо). І можна ці коди робити через різні онлайн-генератори або плагіни до Photoshop, Illustrator або InDesign. Але якщо потрібно таких кодів зробити 100 чи 1500, краще знайти інший спосіб.&lt;/p&gt;
&lt;p&gt;На мою думку, найкращий — генерація кодів через консоль (термінал). Взагалі через термінал можна робити багато цікавих речей, але потрібно трохи розібратись.&lt;/p&gt;
&lt;p&gt;Для генерації qr-кодів, якщо встановлений python, є команди &lt;a href="https://github.com/lincolnloop/python-qrcode"&gt;qr&lt;/a&gt; або &lt;a href="https://pypi.org/project/segno/"&gt;segno&lt;/a&gt;. Друга мені подобається більше, бо в ній можна задати додатково кольори, розміри самого коду та зберегти одразу в EPS.&lt;/p&gt;
&lt;p&gt;Для команди segno потрібно створити рядок вигляду:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;segno  --border 2 --dark=2D2424 --light=D2C7B9 --output=TradingStalls.eps &amp;quot;https://reherit.org.ua/object/tsentralnyj-rynok-torgovi-ryady/&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Де border, dark та light це налаштування границі та кольорів коду, output — назва файлу на виході, а в лапках потрібне посилання чи інший текст.&lt;/p&gt;
&lt;p&gt;Тут так само допоможе функція таблиць &lt;tt&gt;CONCATENATE&lt;/tt&gt;, щоб сформувати рядки команд. Потім ці команди просто копіюємо у консоль та запускаємо: комп‘ютер виконає кожну по черзі. Далі готові qr-коди вставляємо вже куди потрібно.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/reherit-qr@2x.png" width="1200" height="645" alt="" /&gt;
&lt;/div&gt;
&lt;h2&gt;Комбінування та застосування&lt;/h2&gt;
&lt;p&gt;Іноді в одній таблиці простіше формувати, і консольні команди для створення qr-кодів, і дані для підставляння в InDesign. Далі кілька кейсів, в яких я це застосовував.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;ProstoPay.&lt;/b&gt; Я робив дизайн комунікації про безготівкову оплату для ProstoPay (оплата у вендингових автоматах телефоном через  Apple|Google pay). Спочатку розробив дизайн, а потім треба було розмножити цей дизайн на 1500+ наліпок.&lt;/p&gt;
&lt;p&gt;На вході нам потрібен лише номер автомата та формат посилання, яке потрібно закласти у qr-код. Все інше можна сформувати всередині таблиці. Ось як це виглядає:&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;iframe src="https://www.youtube.com/embed/_lUC6E5euTs?enablejsapi=1" allow="autoplay" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;div class="e2-text-caption"&gt;Магія створення наліпок безготівкової оплати ProstoPay&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;b&gt;Peremoga.&lt;/b&gt; Наліпки зворотного зв’язку у різних частинах коворкінгу Peremoga. Кожен код веде у налаштованого бота в телеграмі. На вході маємо чіткі посилання та назви локацій. Через таблицю робимо мітку локації, яку потім підставимо на макет, та команди генерації кодів.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1200" data-ratio="1.5727391874181"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/peremoga-qr-1@2x.png" width="1200" height="763" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/peremoga-qr-2@2x.png" width="1200" height="763" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/peremoga-qr-3@2x.png" width="1200" height="763" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/peremoga-qr-4@2x.png" width="1200" height="763" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-caption"&gt;Таблиця&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Як наліпки виглядають наживо:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/peremoga-real@2x.jpg" width="1000" height="640" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Наліпки зворотного зв’язку у різних частинах Peremoga Space&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;b&gt;Паркувальні таблички.&lt;/b&gt; Маючи затверджений дизайн табличок, потрібно було зробити такі макети на купу майданчиків. На вході маємо номер майданчику, з якого можна взяти зону (перша цифра), для кожної зони маємо фіксований тариф та фіксований штраф (тариф×20). Далі також з номера формуємо посилання, з якого потім формуємо команду генерації коду.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1200" data-ratio="2.020202020202"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/parking-info-3@2x.png" width="1200" height="594" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/parking-info-4@2x.png" width="1200" height="594" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/parking-info-5@2x.png" width="1200" height="594" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/parking-info-6@2x.png" width="1200" height="594" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/parking-info-7@2x.png" width="1200" height="594" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/parking-info-8@2x.png" width="1200" height="594" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/parking-info-9@2x.png" width="1200" height="594" alt="" /&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/parking-info-10@2x.png" width="1200" height="594" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-caption"&gt;Таблиця для табличок&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;У макет додаємо змінні у потрібних місцях:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/parking-info-11@2x.png" width="1200" height="690" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Макет в InDesign&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Отримуємо купу макетів, готових до друку.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/parking-info-2@2x.png" width="1189" height="841" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;У такого автоматизованого створення та підключення qr-кодів є додатковий плюс: якщо все вірно налаштовано, то не можливо буде сплутати коди та підставити не той, не витрачати час на перевірку та нерви, якщо знайдеться ця помилка.&lt;/p&gt;
&lt;p&gt;&lt;hr&gt;&lt;/p&gt;
&lt;div&gt;&lt;div style="float: left;"&gt;&lt;p&gt;&lt;span style="font-weight:bold; font-size: 3em"&gt;&lt;b&gt;?&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div style="padding: 1em 0 0 4em"&gt;&lt;p&gt;Напевно можна знайти ще більше прикладів використання таблиць в автоматизації роботи або якоїсь окремої її частини. Напишіть на &lt;a href="mailto:alexkolodko@gmail.com"&gt;пошту&lt;/a&gt; або у &lt;a href="https://t.me/alexkolodko"&gt;телеграм&lt;/a&gt;, які дії ви виконуєте постійно та монотонно та які вас бісять. Думаю, більшість такої роботи має виконувати машина замість людини, а ви тим часом витрачатимете свій час на цікавіші речі або просто відпочинете.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;hr&gt;&lt;/p&gt;
&lt;div&gt;&lt;div style="float: left;"&gt;&lt;p&gt;&lt;span style="font-weight:bold; font-size: 3em"&gt;&lt;b&gt;₴&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div style="padding: 1em 0 0 4em"&gt;&lt;p&gt;Якщо вам було цікаво та корисно, можете пригостити мене кавою ☕️: картка Монобанку: &lt;tt&gt;4441114450427339&lt;/tt&gt; або &lt;a href="https://send.monobank.ua/5jVrTaRziu"&gt;через сайт&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;</description>
</item>


</channel>
</rss>