Про лоу-код редактори

Про лоу-код редактори

GooRoo

Наразі у мене на власному сервері стоїть n8n (я хз, як це вимовляється, але я подумки це читаю як «нейтен»), хоча раніше користувався я потроху всяким на кшталт IFTTT, Airtable, Zapier і навіть Microsoft Power-Automate. Іншим відомим продуктом — Node-RED — чомусь досі ні, та це ще попереду, я певен.

За що я полюбляю low-code

В програмуванні я ненавиджу дві речі:

  1. налаштування середовища розробки;
  2. розгортання.

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

З другим же така тема, що я доволі рідко пишу щось, що треба деплоїти прям. І від того процес ще жахливіший, бо досвіду менше! Причому мені здається, що воно все штучно переускладнене, щоб девопсам було чим зайнятися, та то інша тема. Але проблема не тільки у самому процесі деплоя — це ще можна пережити. Щоб щось задеплоїти, треба, щоб було куди. І тут вже починаються труднощі, причому як на роботі, так і поза. Коли працюєш у великій компанії, інколи навіть важко знайти кінці, до кого звертатися. А поза роботою «для себе» — це ж треба або свій сервак піднімати, або орендувати десь, налаштовувати все, якось потім деплоїти туди тощо. Складно, короч.

Так ось low-code платформи ці два питання дуже легко закривають, особливо якщо мова йде про передплату в керованій кимось хмарі: не треба витрачати час на підготовку та не треба витрачати час не розгортання — ізі-пізі. Я собі все ж на власному VPS підняв self-hosted версію n8n (через CapRover, якщо комусь цікаво), і відтоді кайфую.

Інший важливий аспект, який я терпіти не можу, це авторизація. У всі-і-і-іх вона, бляха, по-різному зроблена, і мені тупо западло з цим розбиратися щоразу замість того, щоб зробити хоп-хоп й автоматизував. Інколи, звісно, щастить знайти лібу під Python, де всі авторизації-автентифікації (знов забув різницю) зроблені, але нерідко й самому доводиться щось городити.

Натомість у low-code платформах ця частина зазвичай працює максимально чітко, бо кількість підтримуваних сервісів — одна з їхніх головних конкурентних метрик, я думаю.

Як ще покращити?

Перейдімо до прикладів. Я у Raindrop зберігаю різні посилання собі, зокрема на цікаві тулзи та бібліотеки. Але знаходжу я їх зазвичай на GitHub та просто ставлю зірочку. Вирішив повʼязати одне з іншим. 

В моїй уяві все мало бути максимально просто: ставлю на ґітгабі ⭐ → це тригерить мій флоу → додаю посилання у Raindrop. Все!

Проблема №1: як виявилося, у ґітгаба немає можливості зареєструвати якийсь вебхук на додавання зірочки на чиюсь репу. Я вирішив просто забирати щоразу свої останні 30 зірочок та кидати їх у Raindrop. 

Проблема №2: в Raindrop апішка дозволяє додавати однакові посилання хоч мільйон разів, створюючи при цьому купу дублікатів. Тож довелося для кожного посилання спочатку перевіряти, чи немає там вже такого.

Додатково ще зробив можливість тригерити цей процес з телеграму.

Результат виглядає отак:

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

Взагалі дуже на ФП схоже: мій улюблений викладач в універі як раз приблизно таке щось малював на дошці на лекціях про Haskell.

Не супероптимально, зате працює. Ще й теґи переносить також. І за той час, що я витратив на це, я б, мабуть, не встиг навіть новий проєкт на пайтоні собі насетапити. Дуже круто та зручно!

АЛЕ!

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

Простий blueprint з Unreal Engine

І я не розумію, чого досі жодна з low-code платформ не зробила те, що напрошується само по собі — легку композицію функцій (вузлів)! Це ж буквально найперше, що приходить в голову. 

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

А n8n вже дозволяє додавати коментарі типу такого:

Жовта зона для пояснення, що саме робить ця частина воркфлоу

Увага, запитання: що заважає зробити безпосередньо з цього шматка якийсь новий reusable-вузол прям тут? Ми ж прям візуально бачимо всі входи (аргументи) у функцію та виходи (значення, що повертаються) з неї. В цьому випадку тип був би url → none. (Взагалі-то фактично там приходить [url], а виходить [] наразі, бо звʼязки fmap-яться, але це не суттєво). 

Просто міркую собі. Позначив червоним входи-виходи.

І тепер ми можемо згортати цей блок, щоб нутрощі функції нам не заважали.

Хоп! І тепер-то з цим можна працювати 🎉

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

Так шо ви? Хтось зробить таке, чи мені доведеться?

Коментувати можна отут 👇🏻


Report Page