Node.js Recipes – Telegram
Node.js Recipes
3.23K subscribers
174 photos
7 videos
1 file
622 links
По буднях нотатки по #Nodejs розробці, по вихідним огляди конференцій та доповідей (с) @galkin_nikita
Download Telegram
Де вчити NestJS?

Сьогодні в особисті повідомлення знову прилетів запит на те, де вчити Nest.js: “Нікіта, привіт! можеш порадити хороший курс по нест на юдемі чи курсері? чи книгу”

Почну з посилань, які я рекомендую:
🔗 NestJS documentation  
🔗 Official NestJS Courses
🔗 API with NestJS by wanago.io
🔗 Open Source Projects using NestJS

Особистий досвід. За останні 4 роки я провів більше 10 разів внутрішні курси по Nest.js. Кожного разу я компонував курс під потреби проекту. Немає сенсу давати GraphQL або NestJS мікросервіси команді, яка їх використовувати не буде. Вчити PHP розробників та frontend розробників необхідно по-різному. Спільне у курсів було те, що я показував реальну практику застосування фреймворку в контексті, близькому до потреб проекту. Якщо ж робити курс у відриві від контексту проекту, то вийде переказ Official NestJS Courses та wanago.io.

На Coursera представлені курси у стилі університетського матеріалу, тобто фокус на теорію. А фреймворки вчаться через практику – learning by doing. З цієї ж причини хороших книг по Nest.js немає. По фреймворках пишуть документацію, тому раз на півроку перечитуємо документацію та реліз notes по Nest.js. Також я рекомендую робити і з Node.js або будь-яким іншим інструментом.

Для мене Udemy це блошиний ринок, тобто вам може пощастити і ви знайдете за 5 доларів щось варте. Але як правило час на пошук та реставрацію (перевірку актуальності інформації в курсі) не виправдовує походи на блошиний ринок. Цей час краще вкласти в написання коду або вивчення як роблять колеги, тому я і раджу переглядати код NestJS проектів.

І на завершення: ⚠️learning by doing⚠️
👍535🔥4❤‍🔥1👎1
TypeScript support has landed🛬🛬🛬🛬🛬
🔥62👍8🤮5😭1
На каналі давно не було рецептів, а ще довше технічних байок. Поділюсь з вами історією About estimates.

Від бізнесу надійшов запит на інтеграцію з одним популярним сервісом. Аналіз документації показав, що потрібна функція існує, тому інтеграція буде простою – налаштувати webhook на нашій стороні та надіслати запит до сервісу на включення сповіщень через цей webhook. Досвід роботи з цим сервісом є. Завдання зрозуміле. Беремо в наступний спринт. Як досвідчений менеджер, я розбив це завдання на два тікети: включення сповіщень у цьому сервісі та написання webhook-а.

Вгадайте, скільки часу цей популярний сервіс підключав сповіщення на своїй стороні?
Це зайняло 5 місяців, більше 20 звернень до служби підтримки/форуму. Місяць на переконання, що проблема на їх стороні. Вони таки визнали, що є баг на рівні інфраструктури, і виправлять його у наступному великому релізі через 2 місяці!!! Потім ще місяць на повторне переконання, що проблема не зникла. А потім ще місяць на виправлення бага вже на рівні коду.

Спробуйте вгадати, що це за сервіс?
Це Zoom. Бізнес попросив зберігати файли з чату. Кому цікаві конкретні деталі, ось посилання: https://devforum.zoom.us/t/is-webhook-meeting-chat-message-file-sent-work/113881

Які висновки можна зробити з цієї історії?
Не вірте документації, а перевіряйте її. Для цього і робиться Proof of Concept. А ще розбивайте завдання на частини, особливо коли йдеться про інтеграцію.
👍45🤯22😁8🔥42
Як сортувати рядки?

Більшість із вас знають, що для сортування рядків у JavaScript існує localeCompare. Дозволяє легко відсортувати рядки. Приклад:
names.sort((a, b) => a.localeCompare(b));

Приклад з урахуванням локалі
names.sort((a, b) => a.localeCompare(b, 'uk'));

Приклад для сортування рядків, що містять числа, у більш зрозумілий для людини спосіб:
["a2", "a10", "a1"].sort((a, b) => a.localeCompare(b, undefined, { numeric: true }))
// Result: [ 'a1', 'a2', 'a10' ]

Взагалі, у третього аргументу Intl.CollatorOptions, крім numeric, є ще 6 можливих ключів, і знати їх напам’ять, звісно, ніхто не буде. Але давайте ще раз їх повторимо:
👉 caseFirst: Контролює позицію великих і малих літер у порядку сортування. Значення:
• "upper": Сортує великі літери перед малими (наприклад, “А” перед “а”).
• "lower": Сортує малі літери перед великими (наприклад, “а” перед “А”).
• "false" (значення за замовчуванням): Використовується порядок за замовчуванням для локалі.
👉 ignorePunctuation. Тип: boolean.  Корисно, коли потрібно порівнювати рядки, де пунктуація не повинна впливати на результат. Значення:
• true: Ігнорує пунктуацію під час порівняння.
• false (значення за замовчуванням): Враховує пунктуацію.
👉 sensitivity. Контролює, наскільки детальним є порівняння з точки зору регістру, акцентів і базових символів. Значення:
• "base": Враховує лише базові літери (“а” і “А” вважаються рівними).
• "accent": Враховує акценти, але ігнорує регістр (“é” і “e” різні, але “e” і “E” вважаються рівними).
• "case": Враховує регістр, але ігнорує акценти (“а” і “А” різні, але “а” і “ä” вважаються рівними).
• "variant": Враховує як регістр, так і акцентні відмінності (“а”, “А”, “ä” і “Ä” всі різні).
👉 usage. Визначає, чи оптимізовано порівняння для пошуку або сортування. Використовується з new Intl.Collator, а не localeCompare.
👉 localeMatcher. Визначає, як вибирається локаль, якщо ви вказали декілька локалей.
👉 collation. Зазвичай використовується для специфічних мов або застосунків, які потребують певної колації, але в більшості випадків це не є необхідним.

На завершення нагадаю, що сортування на рівні коду — це завдання для FE/BFF. У чистому BE сортування виконується на рівні бази даних. Для сортування за локаллю у нас є COLLATE. Приклад:
SELECT * FROM table_name ORDER BY column_name COLLATE "en_US";
Але якщо вам потрібні аналоги CollatorOptions, то SQL такого на жаль не має.
👍575🤝2
Вчора на просторах LinkedIn Кайл Сімпсон (автор серії книг You Don’t Know JS) і Метт Покок (автор Total TypeScript), а також їхні підписники, влаштували новий раунд у святій війні JS проти TS.

Каталізатором став коментар Кайла про книгу Total TypeScript Essentials, що містив фразу: “Напевно, хороша книга, але я перестав читати після п’ятого речення”. Фактично цим коментарем Кайл налаштував своїх підписників проти Метта. Ситуація закінчилася взаємним блокуванням у соцмережах та видаленням постів/коментарів.

Мені було цікаво помітити, як ввічливо лідери думок відстоюють свою точку зору в цьому холіварі. А ще це чудовий привід нагадати вам про цих авторів і їхні книги.
😁50👍10💩2🤯1🤗1
Давно не було #like_and_share. Мета гри - поділитися своїм досвідом та дізнатися про досвід інших учасників. Правила:

1. Публікація в каналі визначає тему. Сьогодні це developer tools. Приклади: Visual Studio Code, Postman.
2. У коментарях кожен може залишити посилання на інструмент, коротко його описати, та чому інструмент є корисним.
3. Учасники голосують, використовуючи лайки. Не ставте негативні лайки, бо вони також зараховуються як позитивні.
4. Наступного тижня ми підведемо підсумки на YouTube-стрімі. Переможець отримає 12-місячну персональну підписку на будь-яку IDE від JetBrains.
👍151
Як дізнатися, що пакет оновився?

В опитуванні Паша запитав: “А де варіант ‘одержимо перевіряю, чи є оновлення пакетів щодня’?”

Відповім: Це це не шлях розробника. Ти бачиш суслика вомбата? А він є! У першому варіанті.
Колись була CLI утиліта wombat. Зараз цей функціонал увійшов до складу npm hook. За допомогою цієї команди ми можемо налагоджувати webhook о нових релізах. Наприклад, у одному internal тренінгу ми робили slack нотіфікацію з допомогою AWS lambda та цього npm hook.
👍2
Там команда express.js випустила нову версію. П'яту! Не чіпай це на новий рік.
Огляд робити рано тому, що:
- npm i express ставитиме четверту, бо тег latest не переставили
- зміну з п'ятої в майстер не додали
- немає документації з міграції 4-5
- не оновлено @types/express
🤔30😁9👏7👍21
Завтра о 18-му по Києву проведу стрім, у якому зробимо розбір інструментів.
Якщо ви не поділилися досвідом і не проголосували за коментарі інших учасників ком'юніті, то настав час це зробити

До зустрічі в ефірі!
👍35🔥3👏1
Forwarded from IT Skills 4U
❗️Друзі, нагадуємо, що ви можете скористатись безкоштовним ваучером на складання іспиту AWS Cloud Practitioner.

🔗 Тест для отримання ваучера — https://cloudexams.eu/app/redeem/B5Q7-WHFJ-0UXR
ℹ️ Більше деталей — у цьому дописі.

Ловіть гарну нагоду підтвердити свої знання хмарних технологій AWS і скласти сертифікацію безкоштовно!
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍3❤‍🔥1🔥1
Навіщо вам може знадобитися class-validator-jsonschema?

Під час виконання типової задачі в 2024 API з AI для налаштування моделі необхідна JSON Schema. Приклад такої задачі — отримати дані потрібної структури з txt/pdf/image. З цим чудово справляються generative models. За допомогою JSON Schema визначається структура відповіді. Писати JSON Schema/Swagger/etc вручну — не найприємніше заняття. Ми хочемо писати код, а JSON Schema багатослівна і її незручно ділити на частини, тому її краще генерувати. Як представник NestJS-екосистеми для опису валідації даних я використовую class-validator. Його відмінно доповнює пакет class-validator-jsonschema.

Виходить чудовий DevEx з підтримкою типів. Необхідно визначити кілька класів, які ми очікуємо у відповідях від AI, додати в них декоратори для валідації та згенерувати схему для відправки в модель. Нагадаю, якщо в класах потрібні get/set, то результат треба проганяти через class-transformer.

Взагалі, тема кодогенерації дуже обширна. Огляд задач, принципів та інструментів, які її вирішують, я зроблю 19 жовтня на React+ fwdays’24. Доповідь буде в онлайн форматі. 17087D5D3A на 15%.
👍225
Нагадаю, 2 години на debug економлять вам 5 хвилин на читання документації
😁97👍11💯92👏1
Сьогодні стартував Hacktoberfest 2024! Це щорічна подія на підтримку open-source, де розробники з усього світу роблять внесок у відкриті проекти на GitHub та GitLab. Потрібно зробити 4 pull request-и, щоб отримати бейдж учасника. Улюблених нами футболок не буде — економія маркетингових бюджетів. Але будуть кредити для Digital Ocean.

Ідеї для участі:
- Додати/покращити types для пакету, який ви використовуєте.
- Відкрити pull request зі змінами, які ви вносите за допомогою patch-package. У мене, наприклад, свого часу чекає TypeORM.
- Покращити документацію або код node.js.

Happy coding!
24👍7
Deno 2.0

Позавчора вийшла нова мажорна версія Deno. Ключові нововведення:
- покращена сумісність з Node.js та npm;
- тепер Deno включає менеджер пакетів: додано команди deno install, deno add, deno remove. Є підтримка приватних npm-реєстрів;
- введено графік LTS (довгострокової підтримки).

Офіційний анонс as text, але краще as video. Бо Райан Даль та команда зробили презентацію на рівні Apple.
👍23🔥1🥱1🥴1
Нагадаю вам, що тех борг має різні види. Виділяють:
1. Архітектурний борг — виникає через недостатнє опрацювання або зміни архітектури системи.
2. Кодовий борг — з’являється через погане або неефективне написання коду.
3. Тестовий борг — нестача тестів або неякісне покриття коду тестами.
4. Інфраструктурний борг — застаріла або неефективна інфраструктура проєкту.
5. Документаційний борг — нестача або відсутність документації по проєкту.
6. Процесний борг — неефективні процеси розробки або їх відсутність.
7. Борг безпеки — відсутність заходів безпеки або ігнорування вразливостей.
8. UI/UX-борг — погане опрацювання інтерфейсу користувача та взаємодії.
9. Борг залежностей — використання застарілих бібліотек та фреймворків.
10. Бізнес-борг — спрощення або пропуск функціоналу заради прискореного релізу.
11. Командний борг — виникає через затримку в наймі потрібних фахівців або найм некваліфікованих співробітників для заповнення вакансій.

Борги не варто затягувати, інакше настане технічна смерть проекту, коли дешевше переписати з 0, ніж підтримувати/розвивати поточний.

Як приклад, чому борги треба віддавати, поділюся своєю історією про здоров’я. Я не робив чек-ап з моменту виїзду з України, а це майже 3 роки. Метрики контролю здоров’я: логування ваги та Heart rate variability (HRV), який мені вимірює Whoop. Метрики не тішили, останній рік вага при зрості 192 см – 110 кг (референсне значення 85-93 кг), HRV 48 мс (референс 45-95). І це при більш-менш регулярних заняттях спортом. Місяць тому HRV впав до 25 мс. А до вечора другого дня піднялася температура, і тієї ж ночі мене прооперували – видалили запалений апендицит. Пройшов місяць, я не робив якихось суттєвих змін у дієті чи фізичних навантаженнях, але HRV виріс до 65 мс і продовжує зростати, а вага знизилася до 102 кг. Висновки робіть самі.
🔥21👍122🤔2🥴2🤝1
Цієї суботи відбудеться конференції React fwdays’24. 17087D5D3A на 15%.
Хочу їх підтримати та нагадаю, що з минулих конференцій від fwdays багато крутих відео. Тож давайте проведемо #like_and_share.

Мета гри - поділитися своїм досвідом та дізнатися про досвід інших учасників. Правила:
1. Публікація в каналі визначає тему. Сьогодні це відео з каналу https://www.youtube.com/@fwdays
2. У коментарях кожен може залишити посилання на відео, коротко його описати, та чому відео є корисним/цікавим.
Приклад: https://www.youtube.com/watch?v=R4sTvHXkToQ Класна харизма Соловйова зробила з цього відео мєм.
3. Учасники голосують, використовуючи лайки. Не ставте негативні лайки, бо вони також зараховуються як позитивні.
Відео зі мною, Нікітою Галкіним, йдуть поза конкурсом.
4. Цієї п'ятниці, о 21 по Києву підіб'ємо підсумки. Переможець отримає 12-місячну персональну підписку на будь-яку IDE від JetBrains.
🔥8👍4
Forwarded from IT Skills 4U
🆕 Оновлення щодо ваучерів 👇

Раніше ми писали, що учасники програми IT Skills 4U зможуть використовувати свої ваучери Cloud Practitioner для проходження сертифікації AWS Certified AI Practitioner. 🧠 Цей сертифікат відкриває нові кар'єрні можливості, адже підтверджує не лише навички роботи з продуктами AWS, але і вашу обізнаність у використанні інструментів штучного інтелекту.

Гарна новина — ці ваучери вже є в наявності! Щоб отримати такий ваучер, вам потрібно пройти тест на Cloudexams. Якщо ви вже проходити тест раніше, то повторно це робити не потрібно. Просто зробіть request на нашому веб-сайті (Get the the voucher).

ℹ️ Бета-реєстрація на складання AWS Certified AI Practitioner відкрилась 13 жовтня. Усі деталі щодо іспиту та корисні посилання для самопідготовки розміщені на цій сторінці (інформація буде доповнюватись).

Скористайтесь нагодою підтвердити свої знання на шляху до побудови успішної кар'єри! 📈
Please open Telegram to view this post
VIEW IN TELEGRAM
😍3🥰2