Node.js Recipes
3.23K subscribers
174 photos
7 videos
1 file
622 links
По буднях нотатки по #Nodejs розробці, по вихідним огляди конференцій та доповідей (с) @galkin_nikita
Download Telegram
З Днем Незалежності🇺🇦
Node Recipes – Weekly Review можна подивитися тут
👍5018❤‍🔥1😁1🙏1
Через 4 години наступний огляд новин щодо продуктової Node.js розробки.
Підключайтеся подивитися та поставити запитання.
🔥33👍10
Forwarded from GDG Cloud Kyiv (Nikita)
За годину відбудеться ефір з Нікітою Галкіним та Віктором Турським. Хлопці розберуть новинки, представлені на Google Next 2023.
До зустрічі в ефірі!
👍11
На написання рецептів не вистачає часу. Але я радий з вами поділитися backstage з програми конференції.
Для тих, хто не розуміє причини моєї радості: Matteo Collina – один з найкрутіших Node.js контриб'юторів та автор Fastify.
👍37🔥141
Нагадаю, що наступного тижня я роблю доповідь на Software Architecture fwdays'23 conference. Тому я маю промокод на 100% знижку на онлайн квиток. Він одноразовий, тому я зробив micro hack challange:
new URL('SzLS7kC7', 'https://ss.galk.in')
Правильна відповідь складається з 10 символів. Приклад промокоду на 10% знижку – 577310D705.

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

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

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

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

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

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

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

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

На завершення відповім на ваше запитання, яке легко передбачити, "а що там із твоїм курсом по ноді?" На жаль, я ще не готовий про це публічно розповідати. Однак Віталій поділитися, офертою та іншими юр. моментами, потрібними для запуску, тому цей пост можна вважати маленьким кроком уперед.
🔥26🤔1
Мої відповіді на ваші запитання з коментарів та особистих повідомлень:

Ти бачив сторис для каналів? Будеш використовувати?
Не користуюся сторіс в інших соцемережах. Тому ще не знаю чи робитиму такий контент. Підштовхнути мене до цього можна тут

Курс з Promt Engineering коштує $750! А промокоди на знижку будуть?
15% знижка за кодом GALKIN_NODE для перших трьох учасників. А ще повторю свою точку зору, треба вчитися за рахунок роботодавця.

Коли наступний Node.js weekly?
Минулого тижня доповідь на Software Architecture fwdays'23. На цій доповідь по Developer Experience. У планах наступного тижня рестартанути з таймкодами.
👍72🤓1
За дві години буду в гостях на каналі Math.random. Обговоримо Developer Experience. Почнемо з DX у контексті всі JavaScript екосистеми, розглянемо як він може змінюватися від проекту до проекту та, звичайно, як його покращити для вашого локального оточення.

Приходьте послухати та поставити запитання:
👉 https://www.youtube.com/watch?v=Omu21o0d1Eo
🔥113
On air!
🔥11👍9
Мініопитування: Як вам буде зручніше запропонувати новину для огляду на ютубі або питання для рецепту для каналу?
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. Що призведе на витрату часу на пошук причин таких розбіжностей.
👍431
Як забезпечити іммутабельність у вашому коді?
#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.
👍263🔥1
​​Let's talk about logging by Matteo Collina
#worth_seeing

Сьогодні у нас рекомендація відео від автора fastify та pino. Matteo починає з питань про логування, а потім показує, як залежно від відповідей необхідно налаштувати pino.
👍18❤‍🔥5👏1
100 Seconds of Code
#worth_seeing

Сьогодні у рекомендаціях не одне відео, а цілий плейлист від Fireship. У ньому зібрані відео інструменти, що пояснюють за 100 секунд або підхід. Такі відео дуже зручно відправити колезі, коли йдеться про щось нове.

Ось кілька відео, які варто подивитися як приклад:
- NestJS in 100 Seconds
- Terraform in 100 Seconds
- Firebase in 100 Seconds
- Vite in 100 Seconds
👍364🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Chrome зберігає не тільки положення DevTools, а й порядок табів.
28👍5🔥5
Хочу порадити Tech Interview Handbook. Сам його використовую для Behavioral interview preparation.
👍48🔥15