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

Рецепты для #nodejs разработчиков:
➡️ Чем отличаются операционные ошибки от ошибок программиста?
➡️ В чем различие таймеров в Node.js и browser?
➡️ Как обнаружить синхронные операции в Node.js коде?
➡️ Обзор Node.js v16: Что такое corepack и как он работает?
➡️ Что нужно знать об Error stack trace?
➡️ Как выстрелить себе ногу с помощью microservices?
➡️ Обзор Node.js v16: Что нового в npm v7?
👀 Обзор Node.js платформы в 2021

freebies:
🤑Free Oracle Cloud Training and Certificates
🤑30 days of Postman
🤑JetBrains JavaScript Day 2021

Voice Chats:
🎤 About Cloud Development в рамках DOU Tech
🎤 About Culture Fit, в гостях Алексей Мигутский
🎤 About Team Setup, в гостях Виталий Ратушный
🎤 About Development Tools, в гостях Старовойт Андрей
🎤 About Soft Skills, в гостях Виталий Петренко

Актуальные анонсы и проекты с партнерами:
🔗 CFP от FWDays
🔗 Подборка комьюнити от Math.random()
🔗 Hacktoberfest
🔗 my-talks.net – портфолио спикеров
🔗 Запуск Node.js курса совместно с FoxmindEd
Команда @AWS_UG_Ukraine 19 октября проводит AWS Tech Conference.

В программе конференции 6 докладов. Для #nodejs разработчиков я бы выделил доклады Сергея Пугачева об интеграции микросервисов и Игоря Иванюка о создание устойчивых приложений. Формат обоих докладов – паттерны, а значит они будут полезны даже, если вы не используете AWS.

Параллельно с докладами будут идти трек для получения практических навыков. Проводить его будет Константин Поляков в формате hands-on lab.

Участие бесплатное по предварительной регистрации: https://bit.ly/3D6YQJU

#aws #conference
100 Days Of Kubernetes
#worth_seeing

Сегодня у нас в рекомендациях не одно видео, а целый плейлист. Его автор Anais Urlichs делится своим опытом по изучению k8s и подготовки к сдачи CKAD. Сделано это в формате 100DaysOfCloud. Мне этот формат очень заходит, хоть бери и делай свой подобный.

Аниса действительно просто рассказывает об DevOps, ведет ютуб канал и емейл рассылку. Я полностью согласен с ее слоганом You can learn Anything!

Ссылки:
🔗 Плейлист
🔗 Заметки (в видео в формате notion)
🔗 сайт Анисы
The State of Developer Ecosystem 2021

В июле JetBrains опубликовал результаты своего ежегодного опроса. Получилась отличная инфографика The State of Developer Ecosystem 2021. Ее отлично использовать для подтверждения своих утверждений. Вот ряд моих:
– Java и Node.js две основные технологии для создания микросервисов. Причем они могут как конкурировать, так и дополнять друг друга.
– Сколько не рассказывай о GraphQL, gRPC, message bus – все равно будут интегрировать микросервисы через REST.
– Успех распространения технологии определяется качеством ее документации.
– Cредняя зарплата в Украине в 4 раза меньше, чем в США и составляет 2500$/месяц
– JavaScript давно самый популярный язык.
– Если вы еще не освоили React, то учить его поздно. Стоит выучить Vue.
Node.js Development in 2022: trends and techniques
#announcement

На сайте Fwdays появилось описание моего доклада: "Разработка на Node.js в 2022 году: тенденции и приемы". Процитирую:
Задача этого доклада показать новинки экосистемы Node.js. Новые фичи Node.js v16, языковые конструкции JavaScript/TypeScript, набирающие популярность фреймворки и подходы – таков неполный список новинок попавших в этот обзор. Главное в этом обзоре это ответы на вопросы как, когда и главное зачем использовать эти новинки.

Доклад будет обзорным – на широту и целостность, а не на глубину. Подобный я уже делал в 2019 в рамках JSFest. Часть контента уже есть в формате рецептов на канала, часть только будет опубликована – до 27 ноября еще много времени. Буду признателен если вы напишите в комментариях, что вы ожидаете увидеть в докладе. Так же меня можно позвать выступить у вас с этим докладом.
Уже сегодня вечером Jamstack #conference. Традиционно для онлайн событий участие и регистрация бесплатны на сайте.

JavaScript разработчику нужно знать об этом стэке, не зря первая буква в JAM это javanoscript. Node.js разработчику будет полезно иметь опыт работы с какой-либо Headless CMS.

Ссылки в тему:
🔗 jamstack.org
🔗 jamstack.wtf
Как запустить JavaScript код из буфера обмена?
#cli

TL;DR Используйте pbpaste | node

Сразу скажу, что сегодняшний рецепт для unix пользователей, т.е. MacOS и Linux. Под Windows я не проверял.

В unix есть оператор pipe, который выглядит так |. С его помощью можно делать цепочки команд передавая результат выполнения из одной в другую. Вот примеры использования:
ps -ax | grep node
history | grep kubectl

Еще в unix есть две команды pbcopy и pbpaste. С их помощью можно записывать или читать из буфера обмена. Попробуйте:
pbcopy < package.json
pbpaste

Собственно на этом объяснение магии сегодняшнего рецепта окончено. Скопируйте в буфере JS код, который вы хотите запустить и выполните в терминале pbpaste | node
Что не стоит делать в PostgreSQL?
#best_practice #database

Сегодня у нас в рекомендациях ссылка Don't Do This из википедии PostgreSQL. Каждый из пунктов выдержан в стиле что не стоит делать, почему и в каких случаях все же стоит нарушить эту рекомендацию. Отлично подходит, чтобы отправить коллеге который таки решил сделать что-нибудь плохое.
#conference
На следующей неделе, с 12 по 14 октября пройдет Google Cloud Next`21. В программе столько докладов, что в них просто потеряться. Поэтому нам предлагают создать свой плейлист или воспользоваться готовым.
Для #nodejs разработчиков самым полезным будет плейлист Advanced app dev for developers! В него входят такие доклады:
- Building and managing GraphQL APIs
- Applying Kubernetes app development best practices
- What’s new in serverless?
Обзор Node.js v16: какая версия npm пойдет в LTS?
#npm

В npm документации еще 7-ая версия, но оказывается в 16-ую версию Node.js пойдет а 8-ая. На прошлой неделе команда npm еще раз обновила мажорную версию. Они внесли несколько breaking changes:
– убрать поддержку require('npm') (ни разу этим не пользовался)
– убрать поддержку не поддерживаемых версий Node.js 10 и 11 (хорошая практика).

До перехода на 16-й версию Node.js, как LTS, еще две недели. Для меня не ясно это оплата npm тех долга в последний момент – лишь бы успеть – или продуманная стратегия, чтобы подчистить весь тех долг сразу, когда он уже ясен. В любом случае круто, что им управляют.

Рецептики по теме:
Обзор Node.js v16: Что нового в npm v7?
👍1
У меня в планах до конца года провести один, два мастер-класса. Цена участия в мастер-классе будет 40-75$. Формат записанные видео лекции, лайфкодинг и ответы на вопросы в эфире. Так же поддержка через закрытый телеграм чат. Целевая аудитория – Middle JavaScript разработчики. Задача мастер-класса сэкономить вам время на погружение в конкретную технологию.

Какая из тем вам актуальней всего

Kubernetes для Node.js разработчиков - 50
👍👍👍👍👍 19%
Nest.js tips and tricks – примеры кода, которые упрощают разработку - 89
👍👍👍👍👍👍👍👍 34%
Node.js troubleshooting: логирование, дебаггинг и профайлинг - 59
👍👍👍👍👍👍 23%
GitHub Action или сам себе DevOps: от прогонки тестов до деплоя вашего monorepo - 15
👍👍 6%
Real-time updates: WebSocket, Server Side Event and Push notifications - 49
👍👍👍👍👍 19%
👥 262 человека уже проголосовало.
Скидки на Cloud сертификации

Данная заметка сделана, чтобы поделиться об актуальных акциях и промокодах по Cloud. Если вы не успели или у вас есть ненужный промокод, то приглашаю вас в комментарии к этой заметке.

Сегодня стартует KubeCon. Всем участникам с билетами Virtual All Access будет предоставлена 50% скидка на k8s сертификации – CKAD/CKA/CKS. Подробней можно почитать тут. Для Node.js разработчиков я рекомендую брать CKAD. Сейчас билеты уже по 75$ и, к сожалению, промокод о котором я писал уже не работает. Но опыт прошлых лет показывает, что на сайтах партнеров бывают freebies, включая промокоды на бесплатный доступ. Пример тут.

Напомню, что AWS дает 50% скидку на любую сертификацию, если у вас есть уже любая другая. Т.е. сдали Cloud Practitioner за полную стоимость, а потом всегда сдаете последующие за 50%. Для тех, кто еще не имеет ни одной сертификации будет актуальна одна из этих двух акций:
– До 15 октября Get AWS Certified: Solutions Architect Challenge – подойдет если вы уже имеет опыт и хотите сдать Certified Solutions Architect – Associate (SAA-C02)
– 13 октября AWSome Day Online Conference – для Cloud новичков, который хотят сдать AWS Certified Cloud Practitioner.
Обе акции дают 50% скидку и не суммируются с обычной ссылкой участников сертификационной программы.

Microsoft предлагает 50% скидку на одну из своих Azure сертификаций в рамках 30 Days to Learn It.

Я не знаю об скидках от Google Cloud Platform, но в рамках Google Cloud Next'21, который стартует завтра, объявлено об бесплатном месяце обучения GCP на Coursera.
VSCodium – правильная версия VisualCode

Исходный код vscode является open-source c MIT, которая не распространяется на скачиваемые исполняемые файлы. Поэтому Visual Studio Code собирает телеметрию, т.е. большой брат следит за тобой даже когда ты пишешь код.

Вы можете скачать исходный код и скомпилировать свою версию VisualCode без слежения. Проект VSCodium делает это за вас. По сути это не fork, а pipeline чтобы сделать чистый билд.

Поэтому снесите VisualCode и установите его правильно, без трекинга и через пакетный менеджер.
Во вчерашнем опросе по мастер-классам нет возможности оставлять комментарии. Вот ответы на вопросы из лички:
Почему нельзя проголосовать сразу за несколько?
Потому что я буду готовить их по одному.
А можно мастер-класс на тему ...?
Добро пожаловать в обсуждения под этим постом.

Буду обновлять на основание ваших вопросов.
Вчера в рамках KubeCon анонсировали новую сертификацию KCNA – Kubernetes and Cloud Native Associate. Пока она находиться в бета-тесте, релиз будет до конца года.

Сертификация предназначена для начинающих Cloud разработчиков. Ее рекомендуют как часть обучения перед CKA/CKAD/CKS. Отличие от вышеназванных сертификаций в заданиях: вместо практических задач, будут тесты.

– Анонс в блоге
– Ссылка на сертификацию
Как и что настроить в git?
#git #cli

1️⃣Указать имя и емейл
Зачем? Чтобы комиты были залинкованы с вашей учеткой в github/gitlab.
git config --global user.name "Your Name"
git config --global user.email you@example.com
Можно настроить для каждого репозитория отдельно. Важно, если вы overemployed.
2️⃣Подключить ssh ключ
Зачем? Чтобы не вводить логин и пароль каждый раз
1. Generating a new SSH key
2. Add your SSH key to the ssh-agent
3. Adding a new SSH key to your GitHub account
или полная документация
3️⃣Изменить текстовый редактор
Зачем? Чтобы использовать привычный редактор, а не vim.
git config --global core.editor "code --wait"
Данный пример установить visual code как git редактор. Проверить можно git commit без флага -m.
4️⃣Автогенерация .gitignore
Зачем? Чтобы экономить время во время старта нового репозитория
1. Откройте gitignore.io.
2. Выберите node, операционку, IDE и т.д.
3. Сохраните в .gitignore вашего репозитория
4. Добавляйте специфичные для вашего проекта файлы, а не для тех. стэка.
5️⃣Использование глобального .gitignore
Зачем? Чтобы не закинуть в git вещи специфичные для вашего окружения.
Сохраните вещи из 4️⃣ в ~/.gitignore_global
git config --global core.excludesfile ~/.gitignore_global
Хорошая практика держать там .env файл

Из комментариев:
Начинающему техлиду стоит использовать .gitattributes для выставления конца строки на уровне репозитория с помощью core.autocrlf. Тогда джуны сидящие на Windows не буду страдать.
👍1
Что прокачивать, если вы Team Lead?
#principles

Ребята в @tlbootcamp сделали отличную карту навыков и компетенций для тимлидов – tlroadmap.io. Карта представлена в виде mindmap-а. Каждая ветка имеет теорию, практику и обоснование, почему этот блок важен. Работа над картой происходит коллективно через GitHub.

PS На прошлой неделе не было заметок. Я был полностью погружен в изменения структуры на основном проекте. Мне добавили обязанностей Engineering Manager-а. Так что мне снова нужны инженеры. Пост с вакансией будет чуть позже.
Node.js Developer Wanted!

Чтобы пользователи не пропускали тренировки, а в их телефонах раздавались оповещения об новых ачивках мне в команду нужен Cloud/Node.js инженер. Команда часть HomeFitness стартапа Formelife.

Детали:
👎 созвон в конце дня с Кремневой долиной
👎 нельзя разводить холивары о технологиях, политике или ковиде
👍 крутой тэхстек (GCP, Node.js)
👍 зарплата реально выше рынка
👍 адекватный менеджмент

На фото MacBook M1/16GB для инженера, у которого сегодня первый день. Увы, не в моей команде. Помогите найти инженера, чтобы у меня было время на канал и сон.
Как и зачем настраивать healthchecks/probes?
#kubernetes #cloud

В реальных проектах трафик, который идет на Node.js приложение сначала проходит через какой-то из инфраструктурных элементов. Это могут быть load balancer, API Gateway, оркестратор (kubernetes/Docker Swarm) и т.д. Кроме маршрутизации трафика инфраструктура отвечает за перезапуск и масштабирование приложения. Для этого ей необходимо сообщить, что приложение работает с помощью healthcheck. Инструментов много, поэтому рецепт рассматривает healthcheck только для kubernetes. В остальных инструментах принципы и реализация аналогичны.

Как правило healthcheck это конкретный http endpoint, который отдает 200 если приложение работает. Он может проверять доступность зависимостей, памяти, процессора и т.п. В Nest.js для этого используется terminus. В kubernetes помимо http healtcheck можно настроить tcp или bash команду – может быть полезно для worker-ов без http.

Kubernetes позволяет сконфигурировать несколько видов healthcheck. В документации они еще называются probes. Рассмотрим каждый из них:
– Liveness показывает, что контейнер работает. Если не будет 200 ответа, то Kubernetes перезапустит контейнер.
– Readiness показывает, что контейнер доступен для трафика. Если не будет 200 ответа, то Kubernetes не будет отправлять на него запросы. Пример из реального проекта – WS сервер отдавал 200 ответ пока не количество подключений не превышало лимит.
– Startup показывает, что контейнер успешно запустился. Редко используется для Node.js приложений, так как спроектирован для долго запускающихся контейнеров.

Ссылки по теме:
🔗 The Twelve-Factor App
🔗 Configure Liveness, Readiness and Startup Probes
🔗 Kubernetes Liveness and Readiness Probes: How to Avoid Shooting Yourself in the Foot
🔗 Liveness probes в Kubernetes могут быть опасны
Какие вопросы задать, чтобы проверить уровень TypeScript?
#typenoscript

Сегодня поделюсь подборкой моих вопросов для интервью по TypeScript. Естественно без ответов, иначе как мне потом их на собеседованиях спрашивать.

1. Как используется тип unknown?
2. Что такое генерики?
3. Какая последняя новинки в TypeScript вам больше всего понравилась и почему?
4. Чем ключевое слово type отличается от interface?
5. Когда и как используется тип never?
6. Что такое директивы в typenoscript? Какие и зачем вы используете?
7. Расскажите о пространствах имен типов и пространстве имен переменных на примере выражения class User implements Person {...
8. Как используется tsconfig.json?
9. Что такое guard и как они используются?
10. Как вы дебажите typenoscript код?

В ходе собеседования я не только задаю вопросы, но и отправляю примеры кода для обсуждения. Для этого лучше всего подходит share на TypeScript Playground. Вот пример.
👍2
Что такое стоимость владения софтом и из чего она состоит?
#principles

На прошлых выходных у меня был запрос на консалтинг от CEO одной украинской продуктовой компании. Ключевой вопрос был: "На какой архитектуре нам стоит начинать новые проекты в компании – на микросервисах или монолите?" Боль как представителей украинского бизнеса, так и разработчиков не умение брать на себя ownership. Эта концепция хорошо расписана в Amazon Leadership Principles.

Для софта его стоимость владения (ownership cost) состоит из стоимости создания (development cost) и стоимости поддержки (maintenance costs). В outsource компаниях не принято следит за этими параметрами. Новый проект нужно запилить как можно быстрее, т.е. уменьшаем development cost за счет увеличения стоимости поддержки. А в легаси не дай бог тебе уменьшить maintenance cost – это будет означать меньше работы и денег от заказчика. В продукте же один из главных вопросов от разработчиков: "Как мы будет поддерживать то что разработали?"

Приведу конкретные примеры. Далее OC – Ownership Cost, DC – development cost, MC – maintenance costs.
– Тесты или TypeScript уменьшают OC, за счет уменьшение MC, но увеличения DC. Почему: вносить изменения в код можно с меньшими рисками, что-либо поломать.
– Линтинг, код-стайл уменьшает MC. Почему: читать становиться проще!
– Внутренний, легаси или экзотический фреймворк увеличивает OC и MC. DC как правило тоже увеличивается. Почему: находить и онбоардить новых разработчиков сложней.
– DevOps процессы – уменьшают OC, причем существенно. Почему: автоматизация деплоя, разворачивание и мониторинг инфраструктуры все это уменьшает MC и требует сравнительно не больших затрат в DC.

В завершение дам ответ на вопрос из начала рецепта: "микросервисы VS монолит". Ownership cost для микросервисов дороже пока не появилась проблема масштабирования нагрузок (железо не справляется) и/или команды разработки (больше 20 человек).