Давно не проводив #like_and_share. Мета гри - поділитися своїм досвідом та дізнатися про досвід інших учасників. Правила:
1. Публікація в каналі визначає тему. Сьогодні це автори контенту на тему каналу @node_recipes (Node.js, JS/TS, Cloud Native)
2. У коментарях кожен може залишити посилання на автора, якого він читає, і коротко описати, чому його контент є корисним.
3. Учасники голосують, використовуючи лайки. Не ставте негативні лайки, бо вони також зараховуються як позитивні.
4. Завтра ми підведемо підсумки на YouTube-стрімі. Переможець отримає 12-місячну персональну підписку на будь-яке IDE від JetBrains.
1. Публікація в каналі визначає тему. Сьогодні це автори контенту на тему каналу @node_recipes (Node.js, JS/TS, Cloud Native)
2. У коментарях кожен може залишити посилання на автора, якого він читає, і коротко описати, чому його контент є корисним.
3. Учасники голосують, використовуючи лайки. Не ставте негативні лайки, бо вони також зараховуються як позитивні.
4. Завтра ми підведемо підсумки на YouTube-стрімі. Переможець отримає 12-місячну персональну підписку на будь-яке IDE від JetBrains.
Сьогодні о 19 по Києву Node.js Weekly 2024-W13: From Node.js Developer to Cloud Engineer. Під час трансляції підведу підсумки like_and_share, тому запрошую долучатися!
Сподіваюся у вас є світло і ви підключаєтеся, бо я починаю ефір.
До зустрічі!
До зустрічі!
YouTube
Node.js Weekly 2024-W13: From Node.js Developer to Cloud Engineer
Як працює git autocorrect?
Сьогодні порада для новачків. Якщо у вас багато опечаток у git і ви не використовуєте git alias, рекомендую звернути увагу на help.autocorrect. Якщо є тільки одна схожа команда, git виконує її автоматично. Якщо ж є кілька варіантів, він перераховує їх і зупиняється.
Приклади:
Подібна функція є у zsh: CORRECT/CORRECT_ALL з prompt-виправленнями. Автоматичні виправлення на рівні системи, а не окремих команд, дуже ризиковані, тому такого не існує.
На завершення нагадаю, що у git tips є багато порад.
Сьогодні порада для новачків. Якщо у вас багато опечаток у git і ви не використовуєте git alias, рекомендую звернути увагу на help.autocorrect. Якщо є тільки одна схожа команда, git виконує її автоматично. Якщо ж є кілька варіантів, він перераховує їх і зупиняється.
Приклади:
$ git com -m "Some awesome work"
git: 'com' is not a git command. See 'git --help'.
The most similar commands are
commit
column
# Immediate autocorrect
git config --global help.autocorrect immediate
git sttaus # Runs `git status` immediately
# Prompt for confirmation before autocorrect
git config --global help.autocorrect prompt
git sttaus # Asks for confirmation before running `git status`
# Disable autocorrect
git config --global help.autocorrect never
git sttaus # Does not autocorrect
# Enable autocorrect with a 1 second delay
git config --global help.autocorrect 10
git sttaus # Runs `git status` instead, after a 1 second delay
Подібна функція є у zsh: CORRECT/CORRECT_ALL з prompt-виправленнями. Автоматичні виправлення на рівні системи, а не окремих команд, дуже ризиковані, тому такого не існує.
На завершення нагадаю, що у git tips є багато порад.
Де вчити 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⚠️
Сьогодні в особисті повідомлення знову прилетів запит на те, де вчити 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⚠️
На каналі давно не було рецептів, а ще довше технічних байок. Поділюсь з вами історією 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. А ще розбивайте завдання на частини, особливо коли йдеться про інтеграцію.
Від бізнесу надійшов запит на інтеграцію з одним популярним сервісом. Аналіз документації показав, що потрібна функція існує, тому інтеграція буде простою – налаштувати webhook на нашій стороні та надіслати запит до сервісу на включення сповіщень через цей webhook. Досвід роботи з цим сервісом є. Завдання зрозуміле. Беремо в наступний спринт. Як досвідчений менеджер, я розбив це завдання на два тікети: включення сповіщень у цьому сервісі та написання webhook-а.
Вгадайте, скільки часу цей популярний сервіс підключав сповіщення на своїй стороні?
Спробуйте вгадати, що це за сервіс?
Які висновки можна зробити з цієї історії?
Не вірте документації, а перевіряйте її. Для цього і робиться Proof of Concept. А ще розбивайте завдання на частини, особливо коли йдеться про інтеграцію.
Як сортувати рядки?
Більшість із вас знають, що для сортування рядків у JavaScript існує localeCompare. Дозволяє легко відсортувати рядки. Приклад:
Приклад з урахуванням локалі
Приклад для сортування рядків, що містять числа, у більш зрозумілий для людини спосіб:
Взагалі, у третього аргументу 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. Приклад:
Але якщо вам потрібні аналоги CollatorOptions, то SQL такого на жаль не має.
Більшість із вас знають, що для сортування рядків у 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 такого на жаль не має.
Вчора на просторах LinkedIn Кайл Сімпсон (автор серії книг You Don’t Know JS) і Метт Покок (автор Total TypeScript), а також їхні підписники, влаштували новий раунд у святій війні JS проти TS.
Каталізатором став коментар Кайла про книгу Total TypeScript Essentials, що містив фразу: “Напевно, хороша книга, але я перестав читати після п’ятого речення”. Фактично цим коментарем Кайл налаштував своїх підписників проти Метта. Ситуація закінчилася взаємним блокуванням у соцмережах та видаленням постів/коментарів.
Мені було цікаво помітити, як ввічливо лідери думок відстоюють свою точку зору в цьому холіварі. А ще це чудовий привід нагадати вам про цих авторів і їхні книги.
Каталізатором став коментар Кайла про книгу Total TypeScript Essentials, що містив фразу: “Напевно, хороша книга, але я перестав читати після п’ятого речення”. Фактично цим коментарем Кайл налаштував своїх підписників проти Метта. Ситуація закінчилася взаємним блокуванням у соцмережах та видаленням постів/коментарів.
Мені було цікаво помітити, як ввічливо лідери думок відстоюють свою точку зору в цьому холіварі. А ще це чудовий привід нагадати вам про цих авторів і їхні книги.
Давно не було #like_and_share. Мета гри - поділитися своїм досвідом та дізнатися про досвід інших учасників. Правила:
1. Публікація в каналі визначає тему. Сьогодні це developer tools. Приклади: Visual Studio Code, Postman.
2. У коментарях кожен може залишити посилання на інструмент, коротко його описати, та чому інструмент є корисним.
3. Учасники голосують, використовуючи лайки. Не ставте негативні лайки, бо вони також зараховуються як позитивні.
4. Наступного тижня ми підведемо підсумки на YouTube-стрімі. Переможець отримає 12-місячну персональну підписку на будь-яку IDE від JetBrains.
1. Публікація в каналі визначає тему. Сьогодні це developer tools. Приклади: Visual Studio Code, Postman.
2. У коментарях кожен може залишити посилання на інструмент, коротко його описати, та чому інструмент є корисним.
3. Учасники голосують, використовуючи лайки. Не ставте негативні лайки, бо вони також зараховуються як позитивні.
4. Наступного тижня ми підведемо підсумки на YouTube-стрімі. Переможець отримає 12-місячну персональну підписку на будь-яку IDE від JetBrains.
Як ваша команда оновлює npm пакети?
Давайте повторимо опитування https://x.com/housecor/status/1812520548683108453
Давайте повторимо опитування https://x.com/housecor/status/1812520548683108453
Anonymous Poll
14%
Автоматично, за допомогою таких інструментів, як dependabot, Renovate тощо
12%
Регулярно, наприклад, щомісяця чи щокварталу.
34%
Спорадично, коли хтось про це думає.
39%
Коли це необхідно, наприклад, щоб виправити помилку або отримати доступ до нової функції
Як дізнатися, що пакет оновився?
В опитуванні Паша запитав: “А де варіант ‘одержимо перевіряю, чи є оновлення пакетів щодня’?”
Відповім: Це це не шлях розробника. Ти бачишсуслика вомбата? А він є! У першому варіанті.
Колись була CLI утиліта wombat. Зараз цей функціонал увійшов до складу npm hook. За допомогою цієї команди ми можемо налагоджувати webhook о нових релізах. Наприклад, у одному internal тренінгу ми робили slack нотіфікацію з допомогою AWS lambda та цього npm hook.
В опитуванні Паша запитав: “А де варіант ‘одержимо перевіряю, чи є оновлення пакетів щодня’?”
Відповім: Це це не шлях розробника. Ти бачиш
Колись була CLI утиліта wombat. Зараз цей функціонал увійшов до складу npm hook. За допомогою цієї команди ми можемо налагоджувати webhook о нових релізах. Наприклад, у одному internal тренінгу ми робили slack нотіфікацію з допомогою AWS lambda та цього npm hook.
Там команда express.js випустила нову версію. П'яту! Не чіпай це на новий рік.
Огляд робити рано тому, що:
-
- зміну з п'ятої в майстер не додали
- немає документації з міграції 4-5
- не оновлено
Огляд робити рано тому, що:
-
npm i express
ставитиме четверту, бо тег latest не переставили- зміну з п'ятої в майстер не додали
- немає документації з міграції 4-5
- не оновлено
@types/express
Завтра о 18-му по Києву проведу стрім, у якому зробимо розбір інструментів.
Якщо ви не поділилися досвідом і не проголосували за коментарі інших учасників ком'юніті, то настав час це зробити
До зустрічі в ефірі!
Якщо ви не поділилися досвідом і не проголосували за коментарі інших учасників ком'юніті, то настав час це зробити
До зустрічі в ефірі!
YouTube
Node.js Weekly 2024-W14: Review developer tools for Node.js development
Forwarded from IT Skills 4U
Ловіть гарну нагоду підтвердити свої знання хмарних технологій AWS і скласти сертифікацію безкоштовно!
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
IT Skills 4U
❗️Чудові новини! Доступні безкоштовні ваучери на проходження сертифікації AWS Cloud Practitioner!
💡Сертифікати AWS дійсно цінуються. У нашому опитуванні 82% менеджерів, відповідальних за найм, стверджують, що сертифікати в галузі хмарних технологій роблять…
💡Сертифікати AWS дійсно цінуються. У нашому опитуванні 82% менеджерів, відповідальних за найм, стверджують, що сертифікати в галузі хмарних технологій роблять…
Навіщо вам може знадобитися 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%.
Під час виконання типової задачі в 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.
Поділився своїм поглядом на запитання, що має знати Senior для статті на доу.
https://dou.ua/lenta/articles/senior-node-js-developer-skills-2024/
Приємного читання!
https://dou.ua/lenta/articles/senior-node-js-developer-skills-2024/
Приємного читання!
DOU
Що має знати Senior Node.js Developer і які червоні прапорці виникають на співбесіді
Кількість вакансій для фахівців з Node.js поступово зростає. В серпні для них було 187 пропозицій — це найвищий показник за останні два роки. Тож ми проаналізували, які знання та навички потрібні роботодавцям від досвідчених Node.js розробників та що відрізняє…
Нагадаю, 2 години на debug економлять вам 5 хвилин на читання документації