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

REPL расшифровывается как read–eval–print loop. Для запуска #nodejs в таком режиме достаточно выполнить node без указания файла.

Работа с REPL очень похожа на работу с Console Panel в Google Chrome:
- пишешь JS код, его результат выводиться в консоль
- Cmd + K on MacOS / Ctrl + L on Windows – очистят консоль

Но есть и различия:
- Переменная _ хранит значение последней команды
- Есть команды начинающиеся с точки. Полный перечень .help
- Чтобы выйти из REPL используйте горячую клавишу Ctrl+D или Ctrl+C дважды

При желание можно написать свой REPL. Например для работы с API или базой данных, как это сделано для MongoDB. Подробней в документации.
Спасибо, что читаете и рекомендуете коллегам!
Что нового в TypeScript 4.4?
#typescript

24 августа выйдет новая версии TypeScript. Вот краткий пересказ release notes:
– В catch блоках можно включить, что тип ошибки будет unknown, вместо any. Для этого добавлен флаг useUnknownInCatchVariables, который по умолчанию включен с strict флагом. При переходе потребует изменить часть кодовой базы.
– Добавлен флаг --exactOptionalPropertyTypes, который запрещает для опциональных полей ставить undefined.
– Добавлена поддержка Class static initialization blocks. Напомню, что при переходе на 16-й версию #nodejs будет поддержка уровне V8, т.е. можно будет использовать и в JS-base проектах.
– Улучшение работы с Index Signatures. До этого это могли быть только number и string. В новой версии добавлены Symbol и template string, а так же разрешены union.
– традиционные изменения в lib.d.ts, который используется по умолчанию, если не указаны lib. Эти изменения являются breaking change. Полный перечень. Если вы используете lib.d.ts в своем проекте, то самое время прочитать Как правильно настроить TypeScript в Node.js проекте?
– улучшена скорость сборки и интеграция с Visual Studio
30 seconds of code – сборник код-снипетов
#list #code_pattern

В начале лета я делился ссылкой на 1loc.dev. В комментариях была ссылка на аналогичный ресурс – 30 seconds of code. Примеры кода чуть длинней, но суть та же самая. Есть раздел отдельно по #nodejs сниппетам.
Почему нужно избегать магии?
#code_pattern

Там где исчезает понимание техника превращается в магию. Программистам следует этого избегать.

Avoid magic strings
Выглядит данная магия так:
function isFriend(name) {
if (name === 'Alice') return true;
...
}
Поддерживать и читать этот код сложно. Вынесение таких строк как Alice в отдельный файл или объект с константами обычная практика в JS. В TypeScript для этих целей используется string base enum.

Avoid magic numbers
Аналогичная проблема может быть с числами.
function isAdult(user) {
return user.age >= 16;
}

Решение аналогично. Перенос в константы. Улучшение читабельности и поддержки. 16 лет как пороговое значение будет разным в разных доменах.
Для автоматизации используйте eslint, там есть правило no-magic-numbers.
Как правильно проектировать обновление в REST?
#rest #architecture

Вот, что следует учесть при проектирование endpoint-ов, которые будут обновлять состояние ресурсов:
Необходимо полное (PUT) или частичное обновление (PATCH)? Возможно, необходимы оба способа. В блоге Postman на этой неделе была статья What We Learned from 200,000 OpenAPI Files. Из нее можно увидеть, что в среднем PUT используется в 10 раз чаще чем PATCH.
Должен ли сервер проверять, что клиент использует последнюю версию ресурса? Если это необходимо, то необходимы заголовки Etag и If-Match. Если версия ресурса описанная Etag-м на клиенте и сервере отличается, то сервер выдаст ошибку с 412 кодом (Precondition Failed).
Что мы редактируем, сущность или коллекцию сущностей? Для редактирования отдельной сущности (/todos/:id) подойдут и PUT, и PATCH. Но при редактирование коллекции (/todos/) стоит использовать PATCH с body в формате JSON Patch.
Делюсь крутой ссылкой с CTO meetup. https://www.progression.fyi
В ней собраны критерии кто есть синьор/мидл/whatever в разных компаниях.
Context Aware Content Discovery: The Natural Evolution
#rest #worth_seeing

Идея сегодняшнего видео проанализировать как скрапинг контента меняется при работе с API по сравнению с файловыми серверами. Чтобы это сделать, команда из Assetnote собрала из открытых источников Open API Specs, проанализировала тысячи апи и их реализации. Компания занимаются безопасностью, поэтому они выкладывают свои инструменты в OpenSource.

Видео это фундаментальное отчет-исследование. Рекомендую посмотреть целиком особенно если вы занимаетесь парсингом.

Слайды
На август по voice chat был отпуск. В сентябре буду возвращать этот формат. Мне важно ваше мнение когда их проводить, чтобы вы могли послушать эфир, поучаствовать и задавать вопросы.

Как было – Четверг, вечер в 21:00 - 62
👍👍👍👍👍👍👍👍 45%
Morning coffee – Утро буднего дня с 8 до 10 - 11
👍👍 8%
Выходной день с 9 до 11 - 5
👍👍 4%
Все равно, если и слушаю то в записи - 57
👍👍👍👍👍👍👍 42%
Напишу в комментариях - 2
👍 1%
👥 137 человек уже проголосовало.
Complexity vs Incomprehensibility
#principles

Я рекомендую различать сложность, т.е. метрику количества элементов системы/кода/задачи и понятность, т.е. необходимые когнитивные усилия, чтобы понять систему/код/задачу. На английском это Complexity vs Incomprehensibility. Оба этих параметры определяют стоимость создания и поддержки кода. Но именно непонятность вносит большую часть.

Вещи, которые позволяют делать ваш код понятным:
- хороший нейминг
- абстракции и паттерны
- консистеная организация кода
- код ревью
- качественно поставленные задачи

Закончу своей же цитатой: "Все сложное — это состыкованное с друг другом простое. Поэтому делай просто и одинаково. А сложным оно станет само"
#announcement #voice_chat

2 сентября в 21:00 поговорим о том, что такое 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? Как происходит кооперация?

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