Forwarded from GDG Cloud Kyiv (Nikita)
У грудні я проведу 3-тижневий курс по Terraform. Курс буде безкоштовним на базі @GDGCloudKyiv. Навчальні матеріали будуть у Google Classroom. Заплановано 6 вебінарів з їхнього розбору. Реєстрація вже відкрита та необхідна для підключення до вебінарів. Доступно 50 квитків.
Вчимося разом – ви Terraform-у, а я як автоматизувати перевірку ваших завдань.
Вчимося разом – ви Terraform-у, а я як автоматизувати перевірку ваших завдань.
❤18
Просто нагадаю, що @itskills4u допомагає українцям отримати AWS сертифікацію. Я в п'ятницю за 15 хвилин відповів на Cloud Practitioner Assessment на 30 запитань і сьогодні отримав ваучер. Якщо у вас ще немає жодної сертифікації, почніть саме з неї. Цей іспит Senior повинен складати без підготовки, що я й зроблю цього тижня.
👍28❤4👌3
На моїх Nest.js проектах npm-scripts виглядають так. Зверніть увагу на start script:
👉 використовується тільки для локальної розробки, але не в Docker container
👉 увімкненя дебагу за допомогую
👉 змінні оточення зчитуються нодою, а не dotenv
🔗 https://gist.github.com/galkin/09df957f49148871aae1fcb8a610f6da
👉 використовується тільки для локальної розробки, але не в Docker container
👉 увімкненя дебагу за допомогую
npm start -- --debug👉 змінні оточення зчитуються нодою, а не dotenv
🔗 https://gist.github.com/galkin/09df957f49148871aae1fcb8a610f6da
👍48🔥6
Два роки тому я писав про type-challenges. Сьогодні хочу порекомендувати вам аналогічний проект typehero.dev
Мені сподобався інтерфейс і я відкрив всі 7 доступних днів Advent of TypeScript.
Мені сподобався інтерфейс і я відкрив всі 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.
Як це правильно зробити з інженерного боку класно описав 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 годин.
Записи вебінарів доступні на ютуб, наступний за 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
“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
YouTube
"Exploring MACH Principles" Nikita Galkin / Software Architecture fwdays'23 [eng]
This is a video from the Software Architecture fwdays'23 conference, which was held on September 19 & 23, 2023
https://fwdays.com/en/event/architecture-fwdays-2023
Talk description:
In his presentation, Nikita Galkin will unveil the core principles of MACH.…
https://fwdays.com/en/event/architecture-fwdays-2023
Talk description:
In his presentation, Nikita Galkin will unveil the core principles of MACH.…
👍21😁2🥴2❤1
Вітаю з Новим Роком 🎄🎄🎄
Перший ефір цього року буде присвячений самоосвіті.
https://youtube.com/live/B1GWHac4HM8?feature=share
До зустрічі в ефірі через 1,5 год.
Перший ефір цього року буде присвячений самоосвіті.
https://youtube.com/live/B1GWHac4HM8?feature=share
До зустрічі в ефірі через 1,5 год.
YouTube
Node.js Weekly 2024-W1: Self-education
Enjoy the videos and music you love, upload original content, and share it all with friends, family, and the world on YouTube.
🎉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 коду. Приклад на зображенні.
Порівняння об’єктів у 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.
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.👍23❤7
Чому числа іноді поводяться неінтуїтивно?
#tc39
Числа та арифметика JavaScript визначені в IEEE-754. Перегляньте 0.30000000000000004.com
Питання та відповідь є перекладом з репозиторію tc39/faq. А ціль посту познайомити з цим репозиторієм.
#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. Перегляньте відео, щоб знати їх в обличчя.
#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.
👀 Кожного понеділка о 19:00 Node.js Weekly у форматі YouTube Stream. Посилання на сьогоднішній стрім.
👍 Експериментую з форматами. Минулого тижня з'явився новий формат #like_and_share, деталі тут: t.me/node_recipes/693.
👍25
Як зберігати enum у базах даних?
У цьому рецепті ми не будемо зупинятися на перевагах та недоліках використання enum на рівні коду. Натомість, ми розглянемо, як можна представити enum у базі даних. Під enum ми розуміємо набір рядкових значень, які може приймати певне поле. Розглянемо конкретний приклад для таблиці "users":
Важливо відзначити, що список можливих значень визначається доменною моделлю, і, отже, буде змінюватися з розвитком проекту.
Можливі підходи:
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. На останньому місці, але не менш важливе - яка база даних використовується?
У цьому рецепті ми не будемо зупинятися на перевагах та недоліках використання enum на рівні коду. Натомість, ми розглянемо, як можна представити enum у базі даних. Під enum ми розуміємо набір рядкових значень, які може приймати певне поле. Розглянемо конкретний приклад для таблиці "users":
gender: MALE, FEMALE, UNKNOWN, NON_BINARYstatus: 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.
Такий код я написав вчора для створення PDF. Це скрипт для багаторазового використання фронтенд-розробником для верстки темплейту. Коли FE закінчить верстку, я загорну код у лямду, яку буду викликати з коду Node.js.
🔥33👍5👏1
Чому використовувати
Використання
У NodeJS розробки це мовна конструкція майже завжди буде у файлі, який стартує додаток/скрипт.
void з промісом у JavaScript?Використання
void з промісом у JavaScript сигналізує, що відсутність await або .then() є навмисною, забезпечуючи читабельність коду та запобігаючи попередженням про необроблені проміси. Код буде виконуватися однаково як з void так і безнього.У NodeJS розробки це мовна конструкція майже завжди буде у файлі, який стартує додаток/скрипт.
👍31👎2🤔2
Я неодноразово згадував exercism.org для навчання програмуванню. Я вважаю цю платформу більш практичною, ніж LeetCode, оскільки вона пропонує курси з різних мов програмування.
Минулорічна програма "12in23" дозволяла щомісяця вивчати нову мову, а цьогорічна "48in24" викликає учасників вирішити 48 завдань за допомогою різних підходів та мов. Це чудова можливість стати гнучким інженером, а не просто розробником однієї мови.
Минулорічна програма "12in23" дозволяла щомісяця вивчати нову мову, а цьогорічна "48in24" викликає учасників вирішити 48 завдань за допомогою різних підходів та мов. Це чудова можливість стати гнучким інженером, а не просто розробником однієї мови.
❤31🔥7👍5
У дописі з хештегом #worth_seeing я ділюся відео, яке я подивився і хотів би вам порекомендувати. Сьогодні це не технічне відео, але потрібне майже будь-якому розробнику України:
Декларація ФОП 3 група 5% за 2023 рік
Навіть якщо бухгалтерію за вас веде бухгалтер, варто розуміти, як його перевірити. Адже це складова фінансової грамотності, яка безпосередньо впливає на вашу кар'єру.
Декларація ФОП 3 група 5% за 2023 рік
Навіть якщо бухгалтерію за вас веде бухгалтер, варто розуміти, як його перевірити. Адже це складова фінансової грамотності, яка безпосередньо впливає на вашу кар'єру.
❤23👍11