Node.js Recipes
3.23K subscribers
174 photos
7 videos
1 file
622 links
По буднях нотатки по #Nodejs розробці, по вихідним огляди конференцій та доповідей (с) @galkin_nikita
Download Telegram
Live stream scheduled for
Где посмотреть лучшие практики по безопасности?
#security #list

Лучшие практики безопасности веб-проектов описаны в OWASP cheat sheets. OWASP расшифровывается как Open Web Application Security Project. Вот топ-5 для #nodejs разработчиков:
🔗 NodeJS security cheat sheet
🔗 REST Security Cheat Sheet
🔗 npm Security best practices
🔗 Node.js Docker Cheatsheet
🔗 Microservices Security Cheat Sheet
Подборка node.recipes за август 2021
#monthly_list

Рецепты для #nodejs разработчиков:
➡️ Что такое Breaking Change в Web API?
➡️ Почем нынче Node.js разработчики?
➡️ Обзор Node.js v16: Префикс для Core modules
➡️ JavaScript Algorithms and Data Structures
➡️ Обзор сервиса RunKit
➡️ Обзор Node.js v16: Новые JavaScript конструкции
➡️ Где изучать Kubernetes
➡️ Обзор Node.js v16: Упрощение доступа к util.types
➡️ Как и зачем использовать AsyncLocalStorage?
➡️ Как автоматизировать 2FA?
➡️ Как подтянуть TypeScript?
➡️ Зачем нужен Symbol в JavaScript?
➡️ Как использовать Node.js REPL?
➡️ 30 seconds of code – сборник код-снипетов
➡️ Почему нужно избегать магии?
➡️ Как правильно проектировать обновление в REST?
➡️ Complexity vs Incomprehensibility
➡️ Что нового в TypeScript 4.4?
➡️ Где посмотреть лучшие практики по безопасности?

Доклады, которые стоит посмотреть:
👀 Real-time communication with WebRTC: Google I/O 2013
👀 Что такое Code With Me от JetBrains?
👀 Yoni Goldberg on Integration Tests with JavaScript
👀 Знай свой JIT: ближе к машине
👀 Build Better Workloads with the AWS Well-Architected Framework and Tool 
👀 Context Aware Content Discovery: The Natural Evolution

Voice Chats:
На август был отпуск. В сентябре формат возвращается в то же время. Спасибо всем, кто принял участие в голосование.
Forwarded from DOU #tech
Tech voice chat на тему «Cloud Development» проведемо цієї п'ятниці!

📌 3 вересня, о 18:00, за цим посиланням.

Про що поговоримо:
☁️ як хмарні технології вплинули на підходи розробки ПЗ;
☁️ порівняємо AWS vs MS Azure vs Google Cloud (наскільки це можливо 😉);
☁️ тренди і таке інше.

Також не соромтеся пропонувати власні теми для обговорення 👉 @dzzzvinka


Спікери (список може оновлюватися):
🗣 Нікіта Галкін, Cloud Architect at Formelife, автор @node_recipes, організатор GDG Cloud Kyiv
🗣 Антон Бойко, Senior Solution Architect в BoykoAnt.PRO, засновник Ukrainian Microsoft Azure Community, Microsoft Azure Technical Expert, Microsoft Azure MVP з 2014
🗣 Руслан Кусов, AWS Cloud COE Lead at SoftServe, APN Ambassador (AWS)

❗️Формат: 30-45 хвилин говорять лише спікери, потім — підключаємо до слова слухачів.

Статті та топіки на теми: cloud, AWS, Azure


Приєднаєтеся?
Audio
#voice_chat About Culture Fit.

Гость: Алексей Мигутский, Senior Software Development Engineer в Microsoft. Алексей поработал в аутсорсе в Беларуси и Украине, а затем переехал в Берлин и начал свой путь в продуктовых стартапах. Последние пять лет он работает в Microsoft (Microsoft To-Do и GitHub Projects & Issues). Алексей так же занимается коачингом разработчиков (официальный Early Career Advisor в Microsoft и свой проект mtdv.io)

Вопросы:
Как проходит Culture Fit Interview?
Как различается в культура в ентерпрайз и стартапах?
Различие в Европе, СНГ и США
Как и где происходит разделение на BE/FE/FullStack? Как происходит кооперация?

Подключайтесь послушать, задавайте свои вопросы в комментариях и в эфире.
my-talks.net – портфолио спикеров

Виктор Турский был не удовлетворен github-ом для ведения списка докладов и сделал my-talks.net Идея Виктора собрать информация по докладчикам в одном месте. Поддерживаю идею.
Forwarded from GDG Cloud Kyiv (Nikita)
Новости одной строкой:
1. Прямо сейчас стартует Voice Chat пo Cloud Development
2. 11 сентября Cloud Study Jam по k8s. Регистрация
3. Проходит #GCPSuperChallenge. Суть: проходишь qwikilabs и выигрываешь GCP/Pluralsight кредиты.
@JStify_Community - молодое JS сообщество, с интересным контентом и регулярными подкастами на YouTube (https://www.youtube.com/c/jstifycommunity), по моему мнению сообщество имеет все шансы стать самым большим во Львове или даже в Украине.

@vinjs - канал очень атмосферной конференции VinnytsiaJS (https://vinnytsiajs.org/) в канале найдете доклады, анонсы событий, интересных спикеров.

@beerJSZhytomyr - канал сообщества BeerJS в Житомире, харизма и вовлеченность организаторов делают сообщество одним из самых привлекательных в Украине, о их offline встречах ходят легенды.

#channels #friends #tofollow
Чем отличаются операционные ошибки от ошибок программиста?
#code_pattern

Ошибки в ходе выполнения можно разделить на операционные ошибки (база данных не доступна, внешний API не вернул ответ и т.д.) и на ошибки программиста, т.е. баги в коде. Типичная ошибка #nodejs программиста TypeError: Cannot read property '...' of undefined. TypeScript снижает количество таких ошибок, но не убирает их полностью.

С точки зрения REST API отмечу, что необходимо использовать валидацию входящих данных и использовать 400 код, если она не прошла. А вот 500-ый http код создан именно для ошибок программиста.

Ошибки обоих типов должны быть залогированы, но уровень для операционных ошибок info/error, а ошибок программиста – error/fatal.

Операционные ошибки могут и должны быть обработаны. Ошибки же программиста не могут быть обработаны, так как приводят программу в неизвестное состояние. По хорошему приложение необходимо перезапустить.

Подробней по теме:
🔗Distinguish operational vs programmer errors
🔗Error Handling in Node.js
Live stream scheduled for
#announcement #voice_chat

9 сентября в 21:00 поговорим о команде разработки, ее составе и создании.
Гость: Виталий Ратушный, Tech Enthusiast, Interviewer, Architect. Trying to get to the bottom of things. First principles thinker. Passionate ‘bout neuropsychology and perception development.

Вопросы:
 Какие роли могут быть в команде?
 Как UX/UI дизайнер участвует в разработке?
 Кто такой продукт овнер и откуда он берет требования?
 Кто такой техлид/архитектор? Что такое право на push-back?
 Какой состав Dream Team?

Ссылка для подключения: https://xn--r1a.website/node_recipes?voicechat
До встречи в эфире!
Cloud Development
DOU #Tech
Аудіозапис технічного войсчату від 3.09.2021

Спікери:
🗣 Нікіта Галкін, Cloud Architect at Formelife, автор @node_recipes, організатор GDG Cloud Kyiv

🗣 Антон Бойко, Senior Solution Architect в BoykoAnt.PRO, засновник Ukrainian Microsoft Azure Community, Microsoft Azure Technical Expert, Microsoft Azure MVP з 2014

🗣 Руслан Кусов, AWS Cloud COE Lead at SoftServe, APN Ambassador (AWS)
В чем различие таймеров в Node.js и browser?
#nodejs_api

Сегодня обсудим setTimeout и setInterval. На обоих платформах данные функции доступны глобально и предназначены для запуска отложенного кода.

Первым аргументом должен быть TimerHandler. В #nodejs это может быть только функция, но в браузере это может быть еще и строка. К ней будет применен eval. Что безусловно является плохой практикой, так как может привести к проблемам с безопасностью. Используйте eslint правило no-implied-eval, чтобы следить за кодом.

Вторым аргументом является количество миллисекунд, а дальнейшие параметры будут переданы в качестве аргументов внутрь TimerHandler. Тут различий нет. Различие есть в возвращаемом значение. В браузере это будет число, а в Node.js объект типа NodeJS.Timeout.

NodeJS.Timeout имеет такие методы публичные методы:
- unref – отметить таймаут как не активный, т.е. он не будет удерживать EventLoop. Аналогичные вещи есть у сокетов, воркеров и т.д.
- ref – отменяет unref
- hasRef – дает текущее значение активности таймера.
- refresh – перезапускает таймер.
- close – аналогичен вызову clearInterval на таймере.

Чтобы отменить выполнение таймера используется clearInterval/clearTimeout. Они полностью заменяемы и в браузере, и в Node.js – по сути являются алиасами. Node.js в качестве аргумента принимает как число, так и NodeJS.Timeout объект.

На этом пора остановиться, хотя в рецепт не попали setImmediate, не публичные апи, особенности поведения в браузере в зависимости от активности таба, связь async_hooks и таймеров, event loop delay и прочее.
Как обнаружить синхронные операции в Node.js коде?
#nodejs_api

Каждый #nodejs разработчик знает, что блокировать Event Loop-а плохо. Блокировка может быть по двум причинам:
– cpu intensive операции, т.е. с большим количеством вычислений. Примеры: трансформация JSON объекта на 2 мегабайта, обход большого массива, подсчеты хешей.
– синхронные операции, т.е. операции которые до своего завершения блокируют Event Loop, читай дальнейшее выполнение JavaScript. Пример – все синхронные файловые операции.

Ваш код может использовать синхронные операции неявно. Кто его знает, что там в node_modules. Именно о том, как быстро найти такие места этот рецепт.

У Node.js есть специальный флаг --trace-sync-io. При его использование в консоль будут выводить trace для первого вызова любого синхронного вызова. Запускаем с этим флагом или c переменной окружения NODE_OPTIONS=--trace-sync-io и анализируем результаты. На своем проекте я так обнаружил, что пора выкинуть module-alias и переконфигурировать pino.

Рецепты по теме:
- Как запускать Node.js с доп. аргументами?
About Team Setup.mp4
56.6 MB
#voice_chat About Team Setup
Гость: Виталий Ратушный, Tech Enthusiast, Interviewer, Architect. Trying to get to the bottom of things. First principles thinker. Passionate ‘bout neuropsychology and perception development.

Вопросы:
 Какие роли могут быть в команде?
 Как UX/UI дизайнер участвует в разработке?
 Кто такой продукт овнер и откуда он берет требования?
 Кто такой техлид/архитектор? Что такое право на push-back?
 Какой состав Dream Team?

Задавайте вопросы в комментариях и подключайтесь в эфир!
Вышел Prettier v.2.4.0

Если вы не обновляли TypeScript до 4.4, то теперь ну точно пора. В новой версии Prettier завезли поддержку новых фич из TS. Подробней в блоге
Forwarded from Nikita
Через 2 часа начинаем Cloud Study Jam!

Ссылка для подключения: https://gdg.community.dev/e/mrkfg2/ Будет доступна за 15 минут до начала
Чат для обсуждений во время и после: https://xn--r1a.website/GDGCloudKyiv_chat

Как получить аккаунт:

1. Откройте в режиме инкогнито https://go.qwiklabs.com/cloud-study-jams-2021
2. Нажмите Enroll под Deploy to Kubernetes
3. Введите код 1s-kyiv-6969, он будет работать ближайшие 24 часа
4. Нажмите Join to Enroll in this Quest
5. Если аккаунт уже есть, то нажмите Sign in instead или создайте новый аккаунт на Qwikilabs. Если емейл долго не приходит воспользуйтесь www.qwiklabs.com/users/confirmation/new
6. После авторизации нажмите Enroll Quest.
7. Начните первую лабораторную. Пожалуйста, не нажимайте окончить раньше чем через 5 минут после старта. Это необходимо, чтобы получить ваш первый месяц бесплатного пользования платформой.
8. Окончите все лабораторные. Получите ваш бейдж и еще один месяц пользования платформой.

Агенда:
11:00 - 11:30 Welcome
11:30 - 13:30 Совместное прохождение квеста
13:30 - 14:00 Обсуждение ресурсов для обучения GCP, Cloud Native и Kubernetes
Free Oracle Cloud Training and Certificates
#freebies

Конкуренция среди Cloud Provider-ов идет не только за клиентов, но и за разработчиков, которые начинают свой путь в облачные технологии. Большая тройка AWS, GCP и Azure являются безусловными фаворитами. Компаниям, которые с ними конкурируют приходиться давать лучше условия – бесплатные обучения/сертификации, больше бесплатных ресурсов во free tier.

Такой компанией является Oracle. Да у них есть свой Cloud. До конца года можно пройти бесплатное self-paced обучение с возможностью сдать сертификацию. Есть ветки развития как для разработчиков, так и для архитекторов.

🔗 Oracle University
🔗 free tier
Обзор Node.js v16: Что такое corepack и как он работает?
#nodejs_api

В Node.js v16.9 добавили corepack. Данный инструмент является экспериментальным и упрощать работу с альтернативными менеджеров зависимостей. При обращение к yarn или pnpm (поддерживаемые менеджеры) будет происходит вызов установленных corepack-ом так называемые глобальных binary proxies. Данные прокси смотрят поле packageManager в package.json и вызывает соответствующую версию yarn/pnpm. При необходимости происходит установка отсутствующего менеджера. Если package.json нет, то используется LTS версия менеджера. Поддержки npm нет, так как npm устанавливается глобально вместе с Node.js. Инструмент улучшает Repeatability и решает проблему отсутствия аналогов nvm для yarn/pnp.

Мое личное отношение к альтернативным менеджерам – они расслаивают экосистему и комьюнити. Я стараюсь избегать таких вещей. В разработке хватает инструментов и проблем вызванных их обилием. Однако я понимаю почему данный инструмент необходим комьюнити. Уверен и вы поймете, если вспомните что в марте 2020 GitHub/Microsoft поглотили компанию npm. Именно в марте 2020 был написан первый коммит corepack, который тогда назывался pmm. Поэтому я считаю, что corepack это правильный шаг без которого слишком легко оказаться в тупике развития моностэка технологий.
#announcement #voice_chat

16 сентября в 21:00 поговорим о инструментах разработчика.
Гость: Старовойт Андрей, Team Lead WebStorm в JetBrains. Последние семь лет работает над поддержкой самых разных технологий в IDE, начиная от простых библиотек вроде classnames, заканчивая React и TypeScript.

Вопросы:
 Что такое инструменты разработчика?
  Где проходит граница между текстовым редактор и средой разработки?
 Какие инструменты помимо того где мы пишем код, имеют значение?
 Как добавляется поддержка для библиотек и фреймворков?
🔥 И конечно извечный холивар JavaScript VS TypeScript

Ссылка для подключения: https://xn--r1a.website/node_recipes?voicechat
До встречи в эфире!