en
Feedback
Node.js Recipes

Node.js Recipes

Open in Telegram
3 195
Subscribers
No data24 hours
-47 days
-230 days
Posts Archive
Обзор Node.js v16: Упрощение доступа к util.types #nodejs_api Встроенный модуль util дает возможность проверять типы. Я чаще всего использую такие проверки из util.types: ➡️ isDate ➡️ isMap ➡️ isSet ➡️ isNativeError ➡️ isPromise До 16-й версии обращение к данным методом было только через require('util').types. В 16-й появляется альтернатива require('util/types'). Для встроенных #nodejs модулей это синтаксический сахар. А вот для устанавливаемых использование конкретного файла – хорошая практика: typescript компилируется быстрее, уменьшение затраты памяти. По сути это ручной tree-shaking, т.е. удаление не используемого кода.

Где изучать Kubernetes #freebies #list Kubernetes уже стал стандартом де-факто в разворачивание проектов. Его необходимо знать не только DevOps инженерам, но и разработчикам. Материалов по его изучению много. Вот моя личная подборка: ➡️ Официальная документация kubernetes. Для сдачи CKAD необходимо знать ее структуру и уметь быстро находить нужное. В работе вы тоже будет регулярно ей пользоваться. Знайте на какой версии k8s вы работаете и смотреть изменения. ➡️ Документация от вендора где развернут ваш k8s. Основное знание это вендор специфик annotation, которые расширяют функционал. ➡️ container.training сайт с материалами воркшопов по Docker и kubernetes. Есть видео и Self-paced tutorials. ➡️ kube.academy от VMWare. Есть курсы разного уровня.

Обзор Node.js v16: Новые JavaScript конструкции #nodejs_api Начну с цитаты: V8 - это высокопроизводительный движок JavaScript и WebAssembly с открытым исходным кодом от Google, написанный на C++. Этот движок выполняет JavaScript код внутри Chrome и #nodejs. Обновление V8 это breaking change. Произойдет это в октябре во время обновления мажорной LTS версии Node.js с 14-ой на 16-ую. V8 обновиться с 8-й на 9-ю версию. А это означает, что у нас должны появятся такие фичи: ➡️ String.prototype.replaceAll, которые заменяет все вхождения в отличие от обычного replace. Подробней: tc39 ➡️ Object.hasOwn alias для Object.prototype.hasOwnProperty. Подробней: tc39, v8 ➡️ Error causes, добавляет в конструктор Error дополнительный параметр со свойством cause куда передается ошибка причина. Это позволяет создавать цепочки ошибок. Пример: const parentError = new Error('parent'); const error = new Error('parent', { cause: parentError }); console.log(error.cause === parentError); Подробней: tc39, v8 ➡️ ArrayLike.at упростят доступ к элементам в конце, так как принимают отрицательные значения. Подробней: tc39, v8 ➡️ Class static initialization blocks. 🔗tc39 🔗v8 ➡️ Private brand checks a.k.a. #foo in obj. Подробней: tc39, v8

#freebies CKA/CKAD/CKS 50% OFF with FREE participation at the KubeCon + CloudNativeCon North America 2021 (October 11-15)! To
#freebies CKA/CKAD/CKS 50% OFF with FREE participation at the KubeCon + CloudNativeCon North America 2021 (October 11-15)! To redeem your complimentary All Access virtual pass, use the code KCNA21TR100. The offer is only available until September 27, 11:59 PM PDT at https://events.linuxfoundation.org/kubecon-cloudnativecon-north-america/register/

Обзор сервиса RunKit #service Вчера @node_recipes исполнилось 4 месяца. Телеграм-канал это отличный способ ведение мини-блога. Только делиться кодом в канале это боль. Вставлять код картинкой означает, что люди не смогут его скопировать. А формат рецептов – это короткие заметки читаемые находу, которые тут же можно применять. Вставлять код текстом, даже с таким форматом неудобно. Для сайта лучшим вариантом является RunKit, который позволяет встраивать запускаемые сниппеты кода. Пример можно увидеть в документации lodash. Вообще основная задача сервиса помогать майнтейнерам npm-пакетов. Пользователи могут без установки попробовать функционал прямо в браузере. Составить воспроизводимый баг репорт. Для этого используется npm.runkit.com. А еще с его помощью можно делать enpoint-ы (бесплатные лямды с маленьким лимитом). В сервисе есть notebook, упрощенная версия Jupyter notebook. К сожалению, их нельзя запускать без авторизации. В качестве примера, я сделал функцию с AbortController. Получилось не на много удобней GitHub Gist. Так что я еще в поисках как же удобно делиться кодом в канале.

Yoni Goldberg on Integration Tests with JavaScript #worth_seeing Последние полтора года у нас не много конференций. Сами знаете почему. Поэтому я не нашел свежего видео, в котором Yoni Goldberg рассказывает об подходах в тестирование. Зато есть отличный подкаст от NearForm – OpenHive.js. Один из его выпусков я и предлагаю вам послушать. Постоянный читатели уже знакомы с Yoni Goldberg. Он автор nodebestpractices. А еще у него есть nodejs-integration-tests-best-practices. Собственно этот вопрос он и обсуждает в подкасте.

JavaScript Algorithms and Data Structures #code_pattern Чтобы писать код нужно: знать его синтаксис и инструментарий. Чтобы писать качественный код нужно: знать теория программирования, алгоритмы и структуры данных. Для JavaScript разработчиков существует отличный репозитарий javascript-algorithms. В нем разобраны классические алгоритмы и структуры данных. Есть разделение по уровню Beginner/Advanced и переводы, в том числе на русский и украинский языки. Рекомендую к изучению!

Что такое Code With Me от JetBrains? В этом году в список причин, почему я предпочитаю WebStorm, а не VisualCode для написания #nodejs кода добавилась возможность парного программирования через Code With Me. Если вы его еще не попробовали, рекомендую это сделать. Update: В комментариях рекомендуют посмотреть Live Sharing для VisualCode

Обзор Node.js v16: Префикс для Core modules #nodejs_api Как известно #nodejs имеет встроенные модули (в английском Core или Builtin). Они имеют приоритет перед модулями из node_modules. В 16 версии для них добавили префикс node: Пример, const http = require('node:http') Для обратной совместимости, можно использовать и без префикса. Отличное изменение! Оно позволит в коде явно разделять встроенные и обычные модули. Сейчас для этого я использую eslint правило import/order. С его помощью идет валидация порядка импортов. У нас это встроенные, установленные, из других файлов проекта с пустой строкой между блоками. Для правила есть автофикс. В документации пока мало мест, где используется новый require стиль. Поэтому можно поучаствовать в ее улучшение и стать контрибутором в Node.js

Почем нынче Node.js разработчики? ➡️ Зарплати українських розробників — літо 2021 Традиционная аналитика от Dou. #nodejs в явном виде нет. Строиться на основание текущих зарплат. ✅ Candidates' Salary Analytics Аналитика от рекрутинг агенства Виктории Придатко. Строиться на основание пожеланий кандидатов. Node.js Senior 5.5к. 🔥 10k новый потолок, где Max Ischenko делиться о трех наймах через Джини за июль 2021 с зарплатой в 10к. Один из наймов это Node.js разработчик. Есть к чему стремиться.

Что такое Breaking Change в Web API? #architecture Обратная совместимость (backward compatibility) одно из ключевых требований при выборе инструментов, библиотек, API и т.д. Нарушение обратной совместимости называет Breaking Change. Примеры Breaking Change: ❌ Переименование полей. Добавьте новое, но оставьте старое. ❌ Изменение типа поля. ❌ Изменение http-кода ответа, например с 400 на 404. В REST приложениях клиент должен строит логику на основание этих кодов. ❌ Изменение значений по умолчанию. Например, раньше API отдавало все записи, а теперь только первые 50 элементов. Команда разработки может игнорировать обратную совместимость, только если проект состоит из API и Single Page Application, которые доставляются одновременно. Если среди клиентов есть мобильное, десктоп приложение, то функциональность будет сломана пока пользователь не обновить приложение. Хорошими практиками является версионирование API и пометка как deprecated для полей и endpoints. Если клиент использует версию старше, чем предоставляет сервер, то он может уведомить пользователя об необходимости обновления ПО.

Real-time communication with WebRTC: Google I/O 2013 #worth_seeing Сегодня в рекомендациях видео об технологии WebRTC. Технология уже давно обкатана, но вопрос как бы вы создавали аналог google meet ставит в тупик большинство #nodejs разработчиков. Для получения практических навыков по теме предлагаю пройти Real time communication with WebRTC

Подборка node.recipes за июль 2021 Рецепты для #nodejs разработчиков: ➡️ Top mistakes that Node.js developers make ➡️ Как использовать ARG и ENV внутри Dockerfile? ➡️ boardgame.io движок для пошаговых игр  ➡️ Что такое JSONPath? ➡️ Any problem must be solved at the right level ➡️ Как и зачем обновить aws-sdk с v2 на v3? ➡️ Что такое AssemblyScript? ➡️ Какие вещи должны быть в техническом стэке для поддержки проекта? ➡️ Как я провожу собеседования? ➡️ Почему вам нужны знания Promise-ов в async/await коде? ➡️ Как писать меньше TypeScript интерфейсов? ➡️ Какие вопросы необходимо решить при внедрение WebSockets? ➡️ Как документировать асинхронное API? ➡️ Как следить за устареванием кода? ➡️ Стоит знать Node Best Practice ➡️ Подборка книг для прокачки, когда ты уже Senior ➡️ Подборка задач для прокачки, когда ты уже Middle Доклады, которые стоит посмотреть: 👀 Play it Right with CodeceptJS 👀 Stream-oriented Architecture with Nest 👀 Refactoring: Second Edition 👀 Hello Quantum Developers World - Yet Another Frontier for JavaScript 👀 No Way, JOSE 👀 Microservices in the Cloud with Kubernetes and Istio 👀 WebTransport Voice Chats: 🎤 About Career Development, в гостях Андрей Кучеренко 🎤 About Education, в гостях Сергей Немчинский PS На мой проект есть вакансия

Working with WebSockets on AWS #worth_seeing #aws Для постоянных читателей рубрики не будет новостью, что AWS предлагает serverless websockets. Я делился соответствующим видео с OpenJS World 2020. Сегодня у нас более подробное видео от Ryan Lewis. Доклад сделан в рамках youtube-канала, а не конференции. Формат – live coding . В нем докладчик не только рассказывает что, но и показывает как. В рамках конференций это самый сложный формат. В записи его делать проще, что однако не умоляет ценность рекомендуемого видео. Расскажу о докладчике. Райан делает материалы по AWS, serverless и JavaScript. Для начинающего #nodejs разработчика будет полезна его бесплатная книга "The Cloud Developer Workbook", где собранны 100 базовых упражнений для изучения AWS.

Подборка задач для прокачки, когда ты уже Middle #list Сегодня в обзоре список типичных задач #nodejs разработчика не связанных с написанием кода. Все задачи носят практический характер, поэтому я формулирую их в виде ACTION с помощью TOOL. Инструмент можно менять в зависимости от проекта и его тех.стека. Кстати о проекте, я предполагаю что у вас есть проект под эти задачи. Это может быть или основной, или ваш pet проект. ✅ Спроектировать REST API с помощью OpenAPI ✅ Настроить CI/CD с помощью GitHub Actions ✅ Описать архитектуру в draw.io ✅ Описать фичу с помощью plantuml ✅ Добавить систему оповещений с помощью бота (telegram, slack, discord) ✅ Добавить внешнюю систему мониторинга uptime с помощью freshping.io (это бесплатный аналог pingdom). Если работает с GCP, то используйте alerts ✅ Добавить продуктовую аналитику с помощью mixpanel ✅ Сделайте отчет с помощью datastudio или любого другого business intelligence tool

Подборка книг для прокачки, когда ты уже Senior #list Начну с хорошей цитаты: A good book gets better at the second reading. A great book at the third. Any book not worth rereading isn’t worth reading. – Nassim Taleb Читать и перечитывать книги я предпочитаю на O'Reilly. Рецепт о том как это делать тут. Собственно вот список книг, которые я рекомендую: 📕Cloud Native ставит парадигму Cloud Native мышления и дает конкретные рецепты реализации. 📕Refactoring: Improving the Design of Existing Code класика от Мартина Фаулера переписанная с JavaScript примерами 📕Web Scalability for Startup Engineers настольная книга, как проектировать и создавать масштабируемые веб-проекты 📕Programming TypeScript на текущий момент лучшая из книг по TypeScript Как вы видите в списке отсутствуют книги по #nodejs. Дело в том, что пока я не прочитал ни одной книги, сфокусированной именно на Node.js, которую мне хотелось бы перечитать.

В комментариях к одному из рецептов меня спросили, что я думаю по поводу практик описанных в nodebestpractices. Я думаю, что знать об этом отличном репозитории нужно каждому #nodejs разработчику. Собственно эта заметка призывает вас прочитать его содержимое.

Как следить за устареванием кода? #nodejs_api #typescript В разработке существует жизненный цикл. Вы можете увидеть его этапы в #nodejs документации в виде stability index. Часть методов помечена как Legacy, т.е. их не стоит использовать как прямо, так и через библиотеки. Аналогичный подход можно использовать в своей кодовой базе. Для этого следует использовать JSdoc @deprecated. Пример: /** @deprecated use newFunction instead **/ function oldFunction() {...} Проверку использования устаревшего кода можно переложить на eslint. Для javascript проектов для этого используется правило import/no-deprecated. В typescript есть перегрузка функций и устареть может только часть сигнатур. Пример: function example(userOrId: User): void /** @deprecated use with User instead of user_id **/ function example(userOrId: number): void Поэтому для typescript проектов следует использовать eslint-plugin-deprecation.

Как документировать асинхронное API? #architecture #service TL;DR Используйте AsynAPI Упрощенно говоря существует только два способа взаимодействия: Req/Res и Pub/Sub. Еще эти способы называют синхронный и асинхронный. При Request/Response клиент отправляет запрос на сервер, сервер начинает работу и отправляет ответ клиенту, как только работа будет выполнена. При Publish/Subscribe вместе запроса публикуется событие и ответ не требуется. Некоторые buzzword используемые при PubSub: WebHooks, Event-driven architectures, CQRS. REST является классическим способом создания Web API и реализует Req/Res взаимодействие. Для его описания традиционно используют OpenApi, старое название Swagger. Через WebSockets является дву-направленным протоколом, что позволяет создавать на его основе как Req/Res, так и Pub/Sub взаимодействие. Чаще всего WS используют именно для оповещений со стороны сервера, т.е для Pub/Sub. Естественно его следует описывать, использовать Documentation First подход. Для этого и был создан AsynAPI. Он позволяет описывать асинхронное взаимодействия не только по WS, но и по другим протоколам. Рекомендую к использованию.

Kafka Summit #conference На следущей неделе, 27-28 июля, пройдет бесплатная онлайн конференция Kafka Summit. Целевая аудитория конференции это разработчики использующие Kafka в продакшене. Лишь небольшая часть #nodejs проектов используют данную технологию. Большинство используют Rabbit или очереди от cloud-провайдеров. Тем не менее о данной технологии стоит иметь представление. В этом может помочь не конференция, а bootcamp который обновили в предверии конференции. Подробней по ссылкам: - https://www.confluent.io/training/learn-confluent/ - https://www.confluent.io/certification/