Cіпласпластик
471 subscribers
147 photos
32 videos
2 files
242 links
🇺🇦 Про айті та дотичні теми загалом, ну й трохи про C++.

Мої емоджі:
https://t.me/addemoji/AdaptiveDevIcons
https://t.me/addemoji/VehicleBrands
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Люблю інколи поспостерігати за іншими, щоб побачити на їхньому прикладі, як легко все проїбати. Тут «все» може значити дуже різні речі звісно.

Ось торік Sonos — виробник доволі класних (мені подобаються) і недешевих бездротових колонок — вирішили переписати свою прогу на телефони з флаттера на флаттер 💻. Релізнули її в сирому вигляді попри застереження розробників. Половина фічей, що були доступні раніше, зникли, у багатьох користувачів були проблеми з підʼєднанням тощо. В результаті: −16% прибуток, −13% ціна акцій, −100 людей через скорочення, −1 CEO (пішов у відставку), −1 CPO (Chief Product Officer — пішов з компанії). Я вже колись писав, що компанії, які роблять чудове залізо, зазвичай роблять вельми кепський софт. Ось зайве підтвердження.

А останніми днями вже у світі 3D-друку трагедія. У мене принтера немає, але темою цікавлюся, тож зараз і вам розповім.

Є короч китайська Bambu Lab, яка робить дуже юзер-френдлі принтери — майже «apple світу 3D-друку». Ними захоплюються, всі їх радять новачкам, бо по співвідношенню ціни і якості вони класні. А у тих, хто будує на цьому бізнес, взагалі ферми по 60 і більше принтерів. До того ж існують моди, додаткові пристрої, спеціалізований софт тощо — все для того, щоб зробити ці принтери ще кращими. Іншими словами — чудова інвестиція грошей. Була.

Була, бо хтось у Bambu певно подумав, що гроші проходять повз, втрачені продажі (aka «недоотриманий прибуток») і ось це все. Тож вочевидь вони вирішили вендор-локнутися, причому традиційно під прикриттям турботи про безпеку. Пишуть, мовляв, вам прилетить апдейт на прошивку, після встановлення якого весь 3rd-party софт для керування принтером іде нах, відкритий протокол MQTT іде нах, перегляд стріма з камери йде нах, LAN-мод іде нах, бо тепер треба створювати обліковий запис і авторизуватися в їхній хмарі. А якщо прошивку не оновити, то принтер в якийсь момент може відмовитися друкувати. Я прям уявив, як в цей момент у них на мапі світу з підʼєднаними принтерами в якійсь графані потухла половина планети 😂

Звісно у людей миттєво згоріли сраки. Ютубери запустили конвеєр відосів про те, як вони помилилися щодо попередніх порад продуктів цієї компанії і все таке. В українському сегменті інтернету це б назвали «провезти шакалячим експресом». На редіті всі кинулися писати, що продають свої 100500 принтерів і переходять на Prusa (інший відомий виробник).

Потім виявилося, що для роботи з 3rd-party софтом Bambu все-таки лишила можливість — додаткову прогу Bambu Connect (на електроні), яка пропонує enhanced security . Тобто напряму принтером керувати все-таки вже не можна, але можна закидувати в цю прогу інструкції, а далі вона сама. Звісно ж менше ніж за добу хтось відреверсив її, збагнувши, як діставати приватні ключі для авторизації 🤡

Чотири дні потому Bambu Lab «відреагувала на ситуацію». Шо, думаєте вибачилися й сказали, що все повертають, як було? Звісно ні 🙁 Натомість вони написали: «Ви все не так зрозуміли». А щоб звучало переконливіше, відредагували попередній допис, а початкову версію дропнули з Wayback Machine 🫠 Тупо газлайтинг. Особливо кричу з їбаньків, які виправдовують їхні дії казками про безпеку через завʼязування на хмару (коли до того принтер навіть в інтернет не дивився).

Ну короч, не думаю, що вони прям втратять свій бізнес через це. Скоріш за все поточні користувачі підуть, а нові прийдуть вже на інші умови, з якими миритимуться. Але який же треш 🤪
Please open Telegram to view this post
VIEW IN TELEGRAM
Колись давно я відкрив для себе Obsidian, і відтоді користуюся ним регулярно. Навіть цей допис у ньому пишу. Я не намагався побудувати в ньому базу всесвітніх знань — радше юзаю як зручний редактор. Раніше для цього у мене був OneNote, однак, нині мені більше імпонує можливість зберігати все у маркдауні ⬇️.

А також певний час назад я дізнався про існування MkDocs — генератора статичних сайтів з документацією, який теж працює з Markdown. Для нього ще існує дуже відома й популярна тема Material for MkDocs. Я особисто гугловий Material Design зневажаю, бо вважаю його несмаком, ще й погано продуманим. Але тема для MkDocs зроблена настільки якісно й має таку кількість додаткових фічей, що складно її ігнорувати.

«Використовуватиму Obsidian як редактор документації під MkDocs», — подумав колись я. Та річ у тім, що Markdown сам по собі доволі бідний, тож для додаткових фічей усі вигадують якийсь власний синтаксис, часто несумісний, щоб робити виноски, вбудовувати відоси, додавати застереження тощо.

Тож я сів і навчив MkDocs [частково] розуміти синтаксис Obsidian (про що згадував отут й отут). Додав пару тижнів тому туди підтримку так званих callouts.

Я взагалі ніде, окрім як тут, не афішував цей плагін, але потроху-потроху — і вже назбиралася 41⭐️. It ain't much, but it's honest work.
Please open Telegram to view this post
VIEW IN TELEGRAM
Коли я тільки-но починав програмувати, то з величезним задоволенням писав на QBasic, а потім на Pascal. Згодом перейшов на 💻, яка вражала лаконічністю, та водночас мала в порівнянні певні незручності. Наприклад, ті ж нуль-терміновані рядки.

Але найбільше на початку дратувала робота з багатовимірними масивами. Якщо в тому ж паскалі можна дати змінній тип, наприклад, двовимірного масиву, щоб потім звертатися до його елементів як pixels[x,y], то в сішці таке не спрацює, і треба писати pixels[x][y].

Нічого страшного начебто — просто трохи інший запис. Але ця фішка перейшла і в 💻. А там доволі швидко зʼявляється бажання загорнути «сирі» масиви в якийсь клас з типобезпечнішою апішкою. Ну там матрицю ту ж зробити чи тензор якийсь, поперевантажувати оператори, щоб зручніше було, тощо.

Уявімо, що написали ви свій клас Matrix. Всередині у вас лежить якийсь масив; треба тепер визначити operator[], щоб можна було читати/писати конкретний елемент. Якби була багатовимірна індексація, то це суперлегко, причому дані всередині можна взагалі тримати в одновимірному масиві, а індекс обчислювати. Однак matrix[i][j] — це дві окремі операції, які можна записати як (matrix[i])[j]. Іншими словами, matrix[i] має повернути щось, на чому потім можна викликати .operator[](j).

Що це може бути? Ну, по-перше, можна повертати тупо вказівник на початок рядка, проте, я не почуваюся комфортно з цього приводу, бо забагато свободи: можна за межі піти, можна зберегти у змінну кудись, а потім навіть не дізнатися, що він інвалідувався (бо не володієш ним) тощо. При обережному використанні працюватиме, але наша мета ж знизити когнітивне навантаження, а не навпаки.

По-друге, можна повертати якийсь проксі-обʼєкт власного типу на кшталт Matrix::Row. Зробити, щоб створювати його могла тільки сама Matrix, по максимуму обмежити допустимі операції, перевизначити operator[]… Головняково якось, ще й сумнівно з погляду на швидкодію.

Натомість зазвичай перевантажують не індексацію, а операцію виклику функції operator(). Тоді є змога вказати довільну кількість параметрів. Але використання вже не настільки файне на вигляд, бо дужки круглі: matrix(i, j). Окрім неможливості в такому випадку зробити одночасно й індексацію, і виклик обʼєкта як функції (що все одно навряд чи комусь знадобиться), мені в цьому не подобається, що воно складніше сприймається. Око вже звикло, що квадратні дужки — доступ до елемента, круглі — виклик функції, тому натренований токенайзер у мозку даватиме хибні результати й сповільнюватиме читання й розуміння коду.

В інших, кращих мовах багатовимірна індексація вже присутня. Не тільки в спеціалізованих на кшталт 💻. Наприклад, у 💻 є, по-перше, багатовимірні масиви базових типів (int[,]), а по-друге, кастомний індексатор може приймати більше одного параметра: this[int row, int column]. (Так, мені дійсно подобається C# місцями). У Python 💻 метод __getitem__ завжди приймає тільки один параметр, проте, коли ви пишете matrix[i,j], то оці значення через кому запаковуються в кортеж, тобто викликається Matrix.__getitem__(matrix, (i, j)).

Щодо C++ же я давно змирився, що зручно тут не буває. І, уявіть собі, дарма!

Короч, починаючи з C++23 тепер є багатовимірна індексація, тобто це вже працює. Тепер operator[] може приймати довільну кількість параметрів різних типів:
m[0, 1, "shiii~"] = 42;

І до купи цей оператор тепер ще й статичним може бути.

Не вау яка фіча, і все ж мені до душі.
Please open Telegram to view this post
VIEW IN TELEGRAM
Мали колись доменне імʼя у володінні?

Коли купуєш собі домен вперше і намагаєшся прикрутити його до сайту або пошти, то воно трохи складнувато без досвіду. І доволі легко наламати щось, що пʼять хвилин тому вже працювало.

Натрапив на сайт, де можна погратися з тимчасовим доменом, постворювати собі DNS-записи різних типів, подивитися на запити, що приходять тощо: ⭐️ mess with dns ⭐️︎.

(Думав ще того тижня про це написати, але він якийсь час лежав мертвий 😆)
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Зараз нитиму трохи, тож в принципі можете проходити повз.

Читав, значить, позавчора на вікіпедії статтю про РДУГ. Витратив на це понад годину. Уважний читач (так, ти) може помітити, що стаття хоч і довгенька, але аж ніяк не на пів години навіть. Та в процесі читання я десять разів відірвався на бозна-що, включно з цим дописом!

Тобто я, читаючи, такий думаю собі: «Щось давненько я нічого в канал не постив, а ну як всі повідписуються, тож треба щось накидати — раптом з цієї теми щось вийде». (В реальності ж зазвичай відписуються після подібних дописів якраз, а не в періоди тиші). І почав записувати. А ще за хвилину я цю ідею кинув, а дописую наступного дня ось.

Також, доки «читав» статтю, різко пригадалося, що треба замовити паперові рушники, які закінчилися, що хотів epub скинути на читалку тощо. Та блін, я навіть якийсь відос на ютубі встиг глянути — вже не згадаю, про шо.

Чи є в мене РДУГ? Я хз, я ж не лікар, щоб діагностувати. Мабуть, нема. Певні симптоми канєш є ще з дитинства, але в кого нема? У багатьох моїх знайомих щось теж присутнє.

Та щось помітив, що інколи прям вкрай важко сфокусуватися на задачах. А в інші моменти — навпаки. Якась гіперфіксація прям.

Ось днями дружина підкинула ідею простого пристрою з буквально однією кнопкою. Причому не в форматі «а зроби ось таке», а радше як «було б цікаво колись у далекому майбутньому спробувати, якби така штука існувала». Але мене прям зачепило відразу. Я поміркував і зрозумів, що в мене навіть все для прототипа є: 🍓 Pico, власне кнопка та інші необхідні дрібниці. Зробити прототип на MicroPython можна за вечір на розслабоні. Але я такий: «Нє, ну це якось нудно. Спробую краще на 💻».

Почав робити hello world, який можна запустити на мікроконтролері. Нагадую, що вперше щось притомне на Ada я кодив у грудні на Advent of Code. Швидко щось накидав тоді за півдня. Ну й зараз теж зробив, і думаю такий: «Якийсь не ідіоматичний виходить код, треба почитати книжку».

Стягнув книжку (той самий epub, про який згадав вище), почав читати. А там 2284 сторінки. Ну й все, не можу позбутися цього відчуття, що треба спочатку всю прочитати. Лягаю спати — думаю про це, прокидаюся — теж думаю. А інші заняття страждають.

Я безумовно усвідомлював, що в мене таке буває нерідко і що врешті я все-таки перемкнуся на щось ще і вестиму в паралель декілька активностей. Але в розмові з корешем вирішив підрахувати все, що наразі розпочав і не закинув: книжки, курси, пет-проєкти якісь, внесок в опенсорс тощо — чисто для себе називаю це все просто проєктами.

І виявилося, що таких штук у мене щонайменше вісімнадцять! Ще б пак мені геть не вистачало часу й сил! Доки не записав, то в голові воно уявлялося рази в 3-4 менше.

Взагалі це диво, що я хоч щось до кінця доводжу чи принаймні до якоїсь логічної точки, адже ще N років тому так не було, а зараз інколи вже трапляється. Поки не до кінця певен, що саме змінилося, але точно став наполегливіше слідкувати за тим, щоб повернутися до того, що розпочав і не закінчив.

Висновків тут жодних поки що не буде, та я вас на початку попереджав ))

Гіфка на початку нічого не значить — додав її чисто для того, щоб привернути увагу. Це феромагнітна рідина. Оригінал, здається, отут.
Please open Telegram to view this post
VIEW IN TELEGRAM
Cіпласпластик
Як вам «новий» прогрес-бар для відосів на ютубі? Я вже декілька тижнів це спостерігаю й щоразу висаджуюся, що у мене монік поплив і паплюжить кольори. Питання тут два: Нахуя та навіщо? Уявіть собі роботу в гуглі: круто, еге ж? Компанія мрії. Мабуть пів…
This media is not supported in your browser
VIEW IN TELEGRAM
Схоже, не тільки в мене виникли питання (реплай 👆), а й у когось з босів, тож дизайнерам гугла знов довелося вигадувати якийсь булшит про те, чим вони весь цей час займалися.

Ще пишуть там, що #FF0000 випалював людям екрани 😂 Не знаю, як вам, але для мене цей малиновий градієнт має такий вигляд, ніби екран вже вигорів.
Please open Telegram to view this post
VIEW IN TELEGRAM
Оце спалився. Не знав, що ґітгаб про таке пише 😅 Ще й рахує!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Трапився на очі отакий сайт, де можна дивитися на тіні в конкретному місці в певний час. Може стати в пригоді, якщо хочете собі знайти сонячну хату, наприклад (хоча бачу й цікавіші застосування).
Наклепав ще один пак адаптивних емодзі, цього разу з логотипами виробників автівок і мотоциклів. Раптом кому треба. Приклади:

🚗: 🚗 🚗 🚗 🚗 🚗

🏍: 🏍 🏍 🏍 🏍 🏍

Ну, або навіть так:

🇺🇦: 🚚 🚌 🚌 🚚 🚗

(Так, на жаль користуватися цим досі можна тільки з преміумом ⭐️)
Please open Telegram to view this post
VIEW IN TELEGRAM
Попри те, що з модулями в 💻 усе погано, я досі не втрачаю надію почати їх використовувати у своїх проєктах. Вже навіть #Qbs додав підтримку.

Отож того тижня сів знову пробувати. Мої два основних компілятори — це MSVC і Clang.

Щодо першого я ще памʼятаю часи, коли його назва була синонімом нестандартної поведінки. Проте (хто б міг подумати‽) зараз Microsoft нерідко навіть випереджає Clang за впровадженням нових фічей. Тож нині з підтримкою модулів із C++20 там наче нема проблем.

З другим все більш-менш ясно й так. Правда ж? 🤔 Принаймні я так колись думав, доки не усвідомив, що на macOS стандартним є Apple Clang, і це геть не те саме, що LLVM Clang. Наприклад, чинна 16 версія еплівського кланга модулі не підтримує, а LLVM-на підтримувала. Ну й узагалі шістнадцята хтозна-коли вже була в LLVM. Зараз чи то 18, чи 19.

Неофіційно ж змусити еплівський кланг використовувати модулі насправді теж можна додатковими світчами. Але разом з ними вмикаються ще так звані Clang Modules, через що в мене були якісь конфлікти з однією з 3rd-party. Покрутив я ті модулі, покрутив, нічого не вийшло — плюнув поки.

Так ось щодо сторонніх бібліотек… Писати власні модулі — це звісно колись буде круто, але хотілося б, щоб і бібліотеки нарешті почали додавати їхню підтримку.

І знаєте шо? Вони додають! Є прогрес! І навіть існує сайт, який цей прогрес трекає: https://arewemodulesyet.org/

З нього чітко видно, що з 2431 бібліотеки, які вони моніторять, аж 22 (ДВАДЦЯТЬ ДВІ) вже мають підтримку модулів! Ще трошки піднапружитися — і заживемо.
Please open Telegram to view this post
VIEW IN TELEGRAM
Я ж потроху став цікавитися програмуванням мікроконтролерів. Захоплива тема, бо можна фактично власні пристрої робити, а не тільки софт. Торік писав тільки на C++, де є, мабуть, два основних популярних фреймворка: Arduino 💻 і ESP-IDF від Espressif 💻. (Чули до речі, як днями в китайських ESP32, котрих мільярди по світу, знайшли бекдор? 🤫)

Якщо теж хочете спробувати покодити на плюсах під MCU, то раджу робити це через PlatformIO 🐜, завдяки котрому дуже легко налаштувати собі робоче середовище. Українець до речі зробив.

Однак C++ — не єдиний вибір. Останнім часом на очі трапляється все більше цікавих штук для інших мов:

💻 Ada: наразі інколи пишу під 🍓 Pico якраз. Подобається.

💻 Erlang: існує імплементація BEAM під мікроконтролери — AtomVM 🤔 Можна і на Elixir 💻 писати, і гіпотетично на Gleam або LFE. Планую якось погратися.

🦶 Go: є така штука як TinyGo. Буквально декілька днів назад побачив.

💻 JavaScript: Espruino, Elk, Microvium. Я б не чіпав це навіть пʼятиметровою палкою, але комусь заходить.

💻 Lua: бачив щонайменше NodeMCU, eLua й MicroLua.

💻 Python: багато хто користується MicroPython 🐍. Я теж пробував: класно і легко. Але хз… Мені не подобається, що воно не компілюється.

🕊 Swift: є ось офіційна репа з прикладами, але руки не дійшли спробувати. А ще хтось почав навіть робити спецові дев-борди SwiftIO.

💻 Zig: вчора знайшов MicroZig. Поки не тестив і найближчим часом не планую, але колись може гляну.

Окрема (і одна з найцікавіших) категорія — це ліспи. Там взагалі їх десяток різних під MCU. Деякі компілюються в C++, інші в Lua, треті ще якось. Треба пірнати прям, щоб вибрати щось, бо явного лідера нема.

На чому ще можна писати? Шось пробували? (А до фіналу щось довели?)

UPD (з коментарів):

💻 Java: Haiku-VM, NanoVM, JArduino.

• Нагадали про Rust: probe-rs, Embassy.
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Там TypeScript компілятор переписали на Go. Ось норм пояснення чому не на Rust, бо дехто вже негадує чому не використали найкращу в світі мову, боже памажи.
Опа 💻
Please open Telegram to view this post
VIEW IN TELEGRAM
Спробував так званий Edit Mode у GitHub Copilot. Це коли ви кажете ШІ-шці, мовляв, зараз працюватиму ось з цими файлами, а далі пишете їй, що треба зробити, а воно редагує. Таке собі парне програмування.

Я трохи не втямлюю, нащо під це було окремий режим робити й чому воно відрізняється від Chat, але ось так.

Попросив його винести декілька функцій в окрему лібу. Він чогось виніс туди попередню реалізацію (яку я закоментив), а не чинну, по дорозі загубив деякі перевірки вхідних параметрів тощо.

З іншого боку було доволі легко відвʼязався від 💻-типів, замінивши на стандартні, плюс ще декілька дрібниць попросив.

Загалом вийшло нібито швидше, ніж повністю руками це робити, але перевіряти канєш треба. Дедалі більше стає схожим на кіберджуна 😂
Please open Telegram to view this post
VIEW IN TELEGRAM
Є такий чувак — Ерік Мігіковський. Він придумав славнозвісний смартгодинник Pebble з e-Paper екраном. Наколядував колись трохи грошенят у Y Combinator і пішов у 2012 з цією ідеєю на кікстартер, де поставив рекорд за зібраними коштами (10 з копійками лямів доларів — у 100 разів більше, ніж просив). Чули ж, еге ж?

Мене тоді вони якось не підкупили, проте, годинник став дуже популярним. Люди насправді досі під нього кодять щось. Я навіть LLM-асистента десь бачив 😆 Тож згодом (у 2015) була ще одна кампанія з новішими моделями, де вони ще 20 мільйонів зібрали. Здається, для технологічних проєктів на кікстартері це досі рекорд. А ще пізніше у 2016 — ще одна, вже третя кампанія. (До речі всі три входять в десятку кікстартерівських рекордсменів).

Тут-то я нарешті зацікавився й закинув їм грошей, хоч і не на годинник, а на так званий Pebble Core — така відносно маленька хєрнюшка на кшталт iPod Nano, щоб можна було Spotify слухати без телефона, коли бігаєш. Раніше в мене вже був MOTOACTV, але гугл його поховав, коли купив Motorola 😭 А зараз цю функцію виконує годинник Garmin до речі. Норм тема, 3 тижні на одному заряді живе, але їхній магазин програм — це смітник рівня Google Play початку 2010-х. Та й загалом за рівнем підтримки від спільноти їм до Pebble як до 🌘, бо Garmin на ту спільноту сам хєр клав, тоді як фанати Pebble навіть зробили платформу Rebble, щоб зберегти надбання, коли компанія зникла.

Так, короч, не дочекався я свого Pebble Core на жаль, бо Pebble через швидке зростання й появу Apple Watch збанкрутувала, тож у 2017 продалася Fitbit (ну, хоч гроші на кікстартері повернули), а ту в 2021 купив Google і традиційно вбив. Чи не вбив. Принаймні в мене жодного знайомого нема, хто нині купив би щось під брендом Fitbit.

А торік виявилося, що Мігіковський гуглу мізки полоскав і врешті дотиснув: гугл погодився зробити PebbleOS опенсорсною — і зробив! А Мігіковський, завзятий мужик, зробив нову контору RePebble, яка днями відкрила передзамовлення на нові годинники на тепер відкритій системі PebbleOS, котру вони вже форкнули й щось педалять. Що тут додати… Треба брати, я думаю.

Цікава та плутана історія вийшла. Особливо кумедно, що той же гугл контори повбивав, а зробити щось настільки ж популярне так і не спромігся ніби. (Чи хтось з вас дійсно має годинник на Wear OS? 🙃) Та й ніхто не спромігся. Клони Pebble якісь зʼявлялися, але назвіть хоч одного, м? Отож.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Не дивно, що Adobe програла битву за найкращий інструмент для дизайну інтерфейсів. Спочатку Sketch показав, що багато речей можна зробити значно зручніше, ніж у Photoshop. І Adobe навіть якийсь час це ігнорувала, аж поки не зробила власний (вже мертвий) XD. Ну а Figma 💻 той результат ще закріпила, правда, в процесі ледь не продалася.

Цими вихідними посидів у фотошопі короч. Мало хто знає, але там є підтримка змінних — навіть у фігмі їх ще десь рік тому не було. Стає в пригоді, якщо треба нагенерити пачку схожих зображень по шаблону: візитівки, листівки зі всратими цуценятами, запрошення на весілля або, як у моєму випадку, купа однотипних обкладинок для статей у блог (не собі).

Робиться це таким чином: спочатку встановлюєте звʼязок між шарами й змінними, а потім підставляєте туди різні значення з набору даних. Наприклад, можна текст міняти, підставляти інші зображення під масочку, вмикати/вимикати видимість чогось тощо. Набивати набір даних руками в самому фотошопі не надто зручно — краще імпортнути з CSV.

Краще ж?
Відкрив Excel, накидав швидесенько, експортнув — і ПОТРАПИВ У ПЕКЛО!!! Я не жартую 😫 Фотошоп просто висирає помилку й відмовляється імпортувати дані.

1. Excel при збереженні в CSV покладається на регіональний формат системи. В Європі десятковий роздільник зазвичай — це кома, тому стовпчики ексель розділяє крапкою з комою. Важко в це повірити, але так: фотошоп це не схавав. Довелося фіксити вручну.

2. Microsoft хоч і використовує UTF-8 давно, але полюбляє бахнути на початок файлу BOM. Вгадайте шо? Правильно, фотошоп не зміг вдуплити. Перезберіг руками без BOM.

3. Якщо стовпчиків більше, ніж змінних, які ви визначили, то фотошоп проігнорувати їх не може — кидає помилку. Але не каже, що саме не так, а пише геть неадекватну маячню. Багаторічний досвід порпання в лайні (aka інтуїція) підказав мені спробувати прибрати зайві — і це допомогло.

4. Кодування. Так, ви все правильно прочитали. Проблеми з кодуванням у 2k25. Так, у UTF-8! 🤕 Ми-то з вами звикли давно взагалі на це увагу не звертати, бо нині будь-який нормальний текстовий редактор одразу детектить без проблем. Але не суперсофт від Adobe! Якщо залишити «автоматичне» визначення кодування, то деякі не-ASCII символи поїбало. Потім ще щось не виходило. Врешті перезберіг взагалі в UTF-16 і вказав вручну при імпорті.

5. Лапки. Тут взагалі якийсь треш, який мені важко пояснити. Короч, у мене був текст на кшталт “some text” з правильними типографськими лапками, але при імпорті вони чомусь зʼїдалися, і у фотошопі їх не було. Вирішив загорнути всі стовпчики в програмерські лапки. Вийшло отак: "“some text”". Вгадайте, в якому вигляді це потрапило у фотошопівський датасет? Хуяк: "some text” — зліва пряма програмерська, справа нормальна типографська. Виправив руками в самому фотошопі (датасет на 30 елементів).

6. У мене насправді два шаблони з двома датасетами були. У перший я так і не зміг імпортувати CSV. А знаєте, що зміг? Tab-delimeted plain text! Нє, ну а шо, хоч якось.

Фу-у-ух, це було важко. Ну далі-то вже як пісня литиметься, мабуть.
Просто береш і генеруєш з того набору даних по шаблону пачку зображень… у форматі PSD 🤦‍♂️ Що з ними робити? Ну, у фотошопі є процесор зображень, який вміє переганяти PSD у JPEG або TIFF. Як щодо PNG або WebP? Нє, не чули. Зберіг все в TIFF, а потім тупо вже у маківському файндері конвертнув у PNG. Спочатку намагався зробити це через ImageMagick, але виявилося, що в мене там шари різного розміру, і воно їх не кліпало, а робило зображення більше.

А тепер тримайте правильний спосіб виконання подібної роботи:
• Робите у фотошопі всю складну роботу з растром. Зберігаєте це як зображення.
• Імпортуєте його у фігму, а там вже додаєте текст, кліпінг-масочки, тіні, лейаут, робите купу інстансів, як вам треба, експортуєте однією кнопкою без хєрні. Все.
Please open Telegram to view this post
VIEW IN TELEGRAM