Node.js Recipes
3.23K subscribers
174 photos
7 videos
1 file
622 links
По буднях нотатки по #Nodejs розробці, по вихідним огляди конференцій та доповідей (с) @galkin_nikita
Download Telegram
Forwarded from GDG Cloud Kyiv (Nikita)
У грудні я проведу 3-тижневий курс по Terraform. Курс буде безкоштовним на базі @GDGCloudKyiv. Навчальні матеріали будуть у Google Classroom. Заплановано 6 вебінарів з їхнього розбору. Реєстрація вже відкрита та необхідна для підключення до вебінарів. Доступно 50 квитків.

Вчимося разом – ви Terraform-у, а я як автоматизувати перевірку ваших завдань.
18
Просто нагадаю, що @itskills4u допомагає українцям отримати AWS сертифікацію. Я в п'ятницю за 15 хвилин відповів на Cloud Practitioner Assessment на 30 запитань і сьогодні отримав ваучер. Якщо у вас ще немає жодної сертифікації, почніть саме з неї. Цей іспит Senior повинен складати без підготовки, що я й зроблю цього тижня.
👍284👌3
На моїх Nest.js проектах npm-scripts виглядають так. Зверніть увагу на start script:
👉 використовується тільки для локальної розробки, але не в Docker container
👉 увімкненя дебагу за допомогую npm start -- --debug
👉 змінні оточення зчитуються нодою, а не dotenv

🔗 https://gist.github.com/galkin/09df957f49148871aae1fcb8a610f6da
👍48🔥6
Два роки тому я писав про type-challenges. Сьогодні хочу порекомендувати вам аналогічний проект typehero.dev
Мені сподобався інтерфейс і я відкрив всі 7 доступних днів Advent of TypeScript.
👍22
Більшість продуктової Node.js розробки — це створення API. Але час від часу це ще CLI App. Наприклад, цього року на одному із проєктів, де я консультую, впровадили застосунок для внутрішнього застосування як CLI App. Його викорістовуют L2 support та QA. За півроку після впровадження компанія почала опрацьовувати звернення на L2 рівні на 40% швидше.

Як це правильно зробити з інженерного боку класно описав Liran Tal у Node.js CLI Apps Best Practices.
👍45🦄2
Нагадаю, що в рамках @GDGCloudKyiv я веду безкоштовний курс з Terraform.
Записи вебінарів доступні на ютуб, наступний за 40 хвилин https://youtube.com/live/CEOYvnnUInU?feature=share
Щоб отримати зворотний зв'язок на виконані завдання, необхідно зареєструватися на https://classroom.google.com/c/NjQ0MDgyNTgxMTI3?cjc=g3xhecw. Це можна зробити протягом 24 годин.
🔥17👍3❤‍🔥1
Forwarded from Natali
Зустрічайте наступну доповідь конференції Software Architecture fwdays’23 🤩

“Exploring MACH Principles” від Nikita Galkin вже на нашому YouTube-каналі.

🎥 Опис доповіді:
In his presentation, Nikita Galkin will unveil the core principles of MACH. While these principles may already be familiar to you individually, their collective implementation creates an impressive synergy. Join Nikita to understand what makes MACH an ideal choice for startups where "time-to-market" is crucial. Join Nikita Galkin in this session to gain a new perspective on architecture and practical approaches to its implementation.

Мова доповіді – англійська

Ставте лайк та підписуйтесь на наш YouTube-канал, щоб бути в курсі подій 🤗

Відео за посиланням ➡️ https://youtu.be/-ECorDzTtIk
👍21😁2🥴21
Вітаю з Новим Роком 🎄🎄🎄
Перший ефір цього року буде присвячений самоосвіті.
https://youtube.com/live/B1GWHac4HM8?feature=share
До зустрічі в ефірі через 1,5 год.
🎉41
Як перевірити, що два об'єкти рівні?

Порівняння об’єктів у JS є складним, бо звичайні оператори рівності не порівнюють значення об’єктів. Вони перевіряють, чи змінні містять посилання на один і той самий об’єкт у пам’яті. Тому, обговорюючи порівняння об'єктів у JavaScript, потрібно враховувати два типи рівностей:
Referential equality: Визначає, чи два надані операнди відносяться до одного і того ж посилання.
Deep equality: Визначає, чи є об'єкти рівними, порівнюючи кожну властивість операндів.

Зазвичай на прикладному рівні нам треба саме deep equality. Його можна зробити:
1. Ручне порівняння, тобто порівняння через кожного ключа об’єктів. Дуже погано
2. Через JSON.stringify().Не надійно, оскільки вимагає однакового порядку атрибутів об’єктів.
3. Lodash.isEqual. добре, за умови, що він є у вас у проекті. Інакше тягнути lodash не варто.
4. Спеціальний пакет deep-equal. Добре, якщо у вас крос-платформне додаток (наприклад, Next.js).
5. assert.deepStrictEqual добре для node.js коду. Приклад на зображенні.
👍68🥱5
Сьогодні у нас нова гра #like_and_share. Мета гри - поділитися своїм досвідом та дізнатися про досвід інших учасників. Правила:

1. Публікація в каналі визначає тему. Сьогодні це npm-пакети.
2. У коментарях кожен може залишити посилання на пакет, який він використовує, і коротко описати, чому цей пакет є корисним.
3. Учасники голосують за пакети, використовуючи лайки. Не ставте негативні лайки, вони також зараховуються як позитивні.
4. У понеділок ми підведемо підсумки на YouTube-стрімі. Переможець отримає 12-місячну персональну підписку на будь-яке IDE від JetBrains.
👍16
Поясню код. За два роки сервіс з обробки stripe webhooks розрісся, тому довелося створити свій #nestjs execution context.
А ще він ілюструє:
Routing is a switch-case construct, expressed in a different syntax.
👍237
Чому числа іноді поводяться неінтуїтивно?
#tc39

Числа та арифметика JavaScript визначені в IEEE-754. Перегляньте 0.30000000000000004.com

Питання та відповідь є перекладом з репозиторію tc39/faq. А ціль посту познайомити з цим репозиторієм.
👍20
​​TypeScript Origins: The Documentary
#worth_seeing

Anders Hejlsberg, Steve Lucco, Luke Hoban, Daniel Rosenwasser, Ryan Cavanaugh, Amanda Silver, Matt Pocock, Josh Goldberg... Саме це люди зробили TypeScript. Перегляньте відео, щоб знати їх в обличчя.
👍19🔥2
Варто винести події на каналі окремим дописом:
👀 Кожного понеділка о 19:00 Node.js Weekly у форматі YouTube Stream. Посилання на сьогоднішній стрім.
👍 Експериментую з форматами. Минулого тижня з'явився новий формат #like_and_share, деталі тут: t.me/node_recipes/693.
👍25
Як зберігати enum у базах даних?

У цьому рецепті ми не будемо зупинятися на перевагах та недоліках використання enum на рівні коду. Натомість, ми розглянемо, як можна представити enum у базі даних. Під enum ми розуміємо набір рядкових значень, які може приймати певне поле. Розглянемо конкретний приклад для таблиці "users":
gender: MALE, FEMALE, UNKNOWN, NON_BINARY
status: ACTIVE, BANNED, SELF_DELETED
Важливо відзначити, що список можливих значень визначається доменною моделлю, і, отже, буде змінюватися з розвитком проекту.
Можливі підходи:
1. Зберігати значення як varchar без перевірки на рівні бази даних, чи належить значення до enum.
2. Нормалізація даних. Для кожного enum створюється окрема таблиця у форматі id, value, яка використовується для зв'язку через foreign key. У основній таблиці зберігається не саме значення, а id з відповідної таблиці.
3. Enum на рівні бази даних. Більшість баз даних підтримують enum.
4. Довідник. Цей метод є проміжним варіантом між нормалізацією та використанням enum у базі даних. Таблиця-довідник об'єднує поля id та value в одне.

При виборі підходу, який підходить для конкретної ситуації, я звертаю увагу на:
1. розмір, необхідний для зберігання даних. Нормалізація та enum у базі даних зменшують обсяг.
2. простоту отримання даних. При нормалізації потрібні join-операції
3. легкість зміни enum. Простіше з довідником та при нормалізації, а enum-in-DB потребує міграцію.
4. необхідність перевірки на рівні бази даних. Можливо, перевірка не потрібна.
5. Забезпечення консистентності підходу в рамках проекту.
6. При нормалізації - який метод генерації id буде використовуватися: uuid, sequence, nanoid.
7. На останньому місці, але не менш важливе - яка база даних використовується?
👍30
#code_only
Такий код я написав вчора для створення PDF. Це скрипт для багаторазового використання фронтенд-розробником для верстки темплейту. Коли FE закінчить верстку, я загорну код у лямду, яку буду викликати з коду Node.js.
🔥33👍5👏1
Чому використовувати void з промісом у JavaScript?

Використання void з промісом у JavaScript сигналізує, що відсутність await або .then() є навмисною, забезпечуючи читабельність коду та запобігаючи попередженням про необроблені проміси. Код буде виконуватися однаково як з void так і безнього.

У NodeJS розробки це мовна конструкція майже завжди буде у файлі, який стартує додаток/скрипт.
👍31👎2🤔2
😁517👍5🤡2
​​Я неодноразово згадував exercism.org для навчання програмуванню. Я вважаю цю платформу більш практичною, ніж LeetCode, оскільки вона пропонує курси з різних мов програмування.
Минулорічна програма "12in23" дозволяла щомісяця вивчати нову мову, а цьогорічна "48in24" викликає учасників вирішити 48 завдань за допомогою різних підходів та мов. Це чудова можливість стати гнучким інженером, а не просто розробником однієї мови.
31🔥7👍5
У дописі з хештегом #worth_seeing я ділюся відео, яке я подивився і хотів би вам порекомендувати. Сьогодні це не технічне відео, але потрібне майже будь-якому розробнику України:
Декларація ФОП 3 група 5% за 2023 рік

Навіть якщо бухгалтерію за вас веде бухгалтер, варто розуміти, як його перевірити. Адже це складова фінансової грамотності, яка безпосередньо впливає на вашу кар'єру.
23👍11