Node.js Recipes
3.23K subscribers
174 photos
7 videos
1 file
622 links
По буднях нотатки по #Nodejs розробці, по вихідним огляди конференцій та доповідей (с) @galkin_nikita
Download Telegram
На моїх 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
Агенда на сьогоднішній прямий ефір:
- JS ecosystem in 2023
- що таке Stripe-level SDK
- AWS Community Builders

Початок о 19 по Києву. До зустрічі в ефірі!
👍25🔥63
AWS відкрив прийом заявок на наступну когорту Community Builders.

Я сам є учасником цієї програми. Ось, що надає участь в цій програмі:
👉 доступ до Slack разом з іншими AWS Community Builders, AWS Hero та співробітниками AWS;
👉 доступ до закритих вебінарів та альфа-версій продуктів;
👉 500 доларів AWS кредитів, з можливістю запитати ще від керівника мого напрямку;
👉 ваучер на одну сертифікацію щорічно;
👉 річна підписка на Cloud Academy;
👉 swag kit (мерч)

У свою чергу, AWS очікує від мене публікацію контенту про AWS на основі мого особистого досвіду. Це, власне кажучи, те, що я робив в рамках цього телеграм-каналу до того, як потрапив до цієї програми.

Зверніть увагу, що не має значення мати 10+ років досвіду. Контент від Junior спеціаліста для Junior спеціалістів також потрібен. Тому, якщо ви створюєте контент, а тим більше українською, подайте заявку.
14👍2🔥2