Node.js Recipes
3.16K subscribers
141 photos
2 videos
1 file
558 links
По буднях нотатки по #Nodejs розробці, по вихідним огляди конференцій та доповідей (с) @galkin_nikita
Download Telegram
Новини Node.js розробки за минулий тиждень
#weekly_review

Node.js Security Releases – нові функції відсутні, виправлення безпеки не критичні, тому його можна пропустити.
Announcing TypeScript 5.2 RC – реліз спрямований на підтримку нових фіч EcmaScript: using та Decorator Metadata.
2023 State of the API Report – вийшов щорічний звіт про розробку API, Postman опитав 40000 розробників.
Is Jamstack Toast? – здається, термін вийшов у відставку, але сам підхід залишається актуальним для статичних сайтів.
Google introduced IDX, це web-IDE (Web Visual Studio), на основі Google Cloud Workstations з Codey AI.
​​Next Gen Package Management
#worth_seeing

Сьогоднішнє відео з конференції REFACTOR DX 2023, що відбулася минулого місяця в Торонто. Як можна здогадатися з назви, вона була присвячена досвіду розробника (Developer Experience). Дарсі Кларк виступив із захоплюючим keynote на заключення першого дня. Дарсі впродовж 4 років очолював інженерію npm. Наразі він працює над своїм стартапом, продовжуючи підтримувати проєкт Node.js та зусилля Фонду OpenJS Foundation у різних робочих групах. З таким багатим досвідом Дарсі дійсно має чим поділитися щодо JavaScript Package Management. Доповідь вийшла зрозумілою та насиченою інформацією, тому настійно рекомендую її переглянути.
Минуло два місяці, як я рекламував вам eslint-plugin-unicorn. Хочу це зробити ще раз. Якщо у вас його немає на проекті – встановіть його. Встановіть прямо зараз.

Приклади правил, які він додає:
replaceAll замість replace
– заборона використання array.forEach
– імпортування вбудованих модулів тільки з node:

Повний список правил тут. У багатьох є автофікс, тому їх впровадження це питання кількох хвилин.
This media is not supported in your browser
VIEW IN TELEGRAM
За допомогою Postman можна в пару кліків відтворювати запити з Chrome.
З Днем Незалежності🇺🇦
Node Recipes – Weekly Review можна подивитися тут
Через 4 години наступний огляд новин щодо продуктової Node.js розробки.
Підключайтеся подивитися та поставити запитання.
Forwarded from GDG Cloud Kyiv (Nikita)
За годину відбудеться ефір з Нікітою Галкіним та Віктором Турським. Хлопці розберуть новинки, представлені на Google Next 2023.
До зустрічі в ефірі!
На написання рецептів не вистачає часу. Але я радий з вами поділитися backstage з програми конференції.
Для тих, хто не розуміє причини моєї радості: Matteo Collina – один з найкрутіших Node.js контриб'юторів та автор Fastify.
Нагадаю, що наступного тижня я роблю доповідь на Software Architecture fwdays'23 conference. Тому я маю промокод на 100% знижку на онлайн квиток. Він одноразовий, тому я зробив micro hack challange:
new URL('SzLS7kC7', 'https://ss.galk.in')
Правильна відповідь складається з 10 символів. Приклад промокоду на 10% знижку – 577310D705.

UPDATE промокод був використаний
Якщо у вас на проекті використовується sharp щоб конвертувати зображення, то у мене для вас важливи новини. Цього тижня у libwebp, який sharp використовує під капотом, знайдена вразливість. Вона дозволяє зробити виконання довільного коду.

Деталі і як захистити ваш код доки ми чекаємо оновленої версії описані у issue.
Чому розробнику необхідно використати термінал?
#cli
Під час інтерв'ю чи сесії парного програмування я часто даю зворотний зв'язок використовувати термінал замість click-based інструментів. Термінал, на відміну візуальних інструментів, веде історію. Вона доступна за командою history і при локальній розробці, і при віддаленому налагодженні Docker або EC2. З її допомогою можна зрозуміти як система прийшла до поточного стану. У разі використання візуальних click-based інструментів у нас такої можливості немає.

Розробникам-початківцям освоєння терміналу для повсякденного використання найкраще почати з cli версії git. Там є чудова команда git reflog, яка неодноразово допомагала повернути втрачені коміти.

Чи зміниться ця відповідь на це запитання через кілька років, коли додатковим інструментом розробника до пари миша/клавіатура додасться голос, я не знаю. Тому що цю нотатку я набираю для вас саме голосом.
Сьогодні був перший дзвінок програмного комітету Node.js fwdays'23. На ньому я познайомився з Олександром Зіневичем. Він веде Node.js Digest на DOU. Судячи з кількості переглядів у тисячу, ком'юніті не знає про цей дайджесет. Хочу це виправити!

👉 Читати вересневий випуск
Один із проектів, до якого я прикладаю руку, виходить у паблік. Це курс Віталія Ратушного з Promt Engineering. Я допомагаю Віталію не перший рік. Постійні читачі каналу пам'ятають, як я промотив його збір минулого року.

За останні три місяці я кілька разів обговорював із Віталієм контент курсу. Хороша цитата з цих обговорень: "Більшість використовують ChatGPT як Google. Це немов у 2000 році використовувати MATLAB лише як калькулятор."

На мій погляд, головний челендж курсу, це залишитися в області саме складання промтів (запитів до AI), а не скотитися в деталі їх запуску та кешування на рівні коду. Код інженери вміють писати, мета ж курсу навчитися писати саме промти.

Якщо 29-го ви будете на IT Arena у Львові, рекомендую заглянути на його воркшоп. Воркшоп буде не таким глибоким як курс, зате це оффлайн!

На завершення відповім на ваше запитання, яке легко передбачити, "а що там із твоїм курсом по ноді?" На жаль, я ще не готовий про це публічно розповідати. Однак Віталій поділитися, офертою та іншими юр. моментами, потрібними для запуску, тому цей пост можна вважати маленьким кроком уперед.
Please open Telegram to view this post
VIEW IN TELEGRAM
За дві години буду в гостях на каналі Math.random. Обговоримо Developer Experience. Почнемо з DX у контексті всі JavaScript екосистеми, розглянемо як він може змінюватися від проекту до проекту та, звичайно, як його покращити для вашого локального оточення.

Приходьте послухати та поставити запитання:
👉 https://www.youtube.com/watch?v=Omu21o0d1Eo
On air!
Мініопитування: Як вам буде зручніше запропонувати новину для огляду на ютубі або питання для рецепту для каналу?
Anonymous Poll
30%
Form on the site
13%
GitHub Disscussions
70%
Telegram Bot
1%
Додам свій варіант у коментарі
Як перевірити конфігурацію інструментарію?
#cli

Типовий набір інструментів у Web/Node.js проекті включає у себе п'ять та більше інструментів. Кожен з інструментів має свою конфігурацію, яка може наслідуватися з встановленого пакета або глобального конфігу, перевизначатися змінною оточення або на рівні вкладеної папки. Більшість інструментів вміють показувати використовуваний конфіг у явному вигляді або завдяки підвищенню рівня логування до дебагу.

Ось приклади команд для найпопулярніших інструментів:
npm config list --long
prettier --log-level=debug --check '{src,tests}/**/*.ts'
eslint --print-config '{src,tests}/**/*.ts'
tsc --project tsconfig.json --showConfig
jest --debug --config jest.config.ts

Використовувати перевірку конфігурації варто не тільки для налагодження чи налаштування інструментів, але й під час оновлення версій пакетів. Для цього зручно виводити конфігурацію у файл за допомогою перенаправленням виводу (символ >). Приклад: eslint --print-config '{src,tests}/**/*.ts' > eslint.v1.json Після оновлення версії пакета або його конфігурації можна порівняти два файли.

Наприкінці хочу наголосити: уникайте глобальних установок та налаштувань інструментів. У протилежному випадку ваше локальне середовище може давати інші результати, ніж середовища ваших колег чи CI/CD. Що призведе на витрату часу на пошук причин таких розбіжностей.
Як забезпечити іммутабельність у вашому коді?
#typescript
⚠️Уточнення для новачків іммутабельності це незмінність даних.
У заголовок винесено одне з моїх улюблених питань для співбесід. Наведу найкращу-гіршу відповідь як я почув її в оригіналі: "TypeScript provides readonly, but it is only compile-time immutable protection. So I prefer to use Immutable.js for my codebase. I've also used Object.freeze()"

Поясню чим саме ця відповідь погана для продуктової розробки: у продуктовому коді розробник має повний контроль усіх етапів створення, зміни та знищення даних. Це не код бібліотеки або фреймворку, який невідомо, як буде запущений. Це код продукту, який буде працювати повільніше через використання Immutable.js або Object.freeze().

TypeScript має відмінний функціонал:
➡️ readonly у параметрах інтерфейсів
➡️ генерік Readonly, який особливо зручний для аргументів ваших функцій
➡️ as const під час оголошення змінних

Цей функціонал покриває всі потреби продуктового коду і не впливає на run time. Для консистентності використання цих фічів є @typescript-eslint/prefer-readonly-parameter-types. Так же можливо написати свої eslint правила, щоб команда не забувала про readonly в іммутабельних структурах даних, наприклад DTO.

Щось таке я хотів би почути на інтерв'ю на вищеназване запитання. Це та ще трохи критики, що readonly як і інші TypeScript конструкції роблять код багатослівним та схожим на Java.