
Node.JS *
Среда для запуска JavaScript-приложений
Подключение node-приложения к Google Calendar API
Как-то неожиданно для меня подключение своего nodejs-приложения к Google Calendar API оказалось довольно нетривиальной задачей. Несмотря на подробное описание вариантов подключения на русском языке пришлось продираться через лес различных настроек и конфигураций. В статье подробно изложены шаги, которые приходится совершить, чтобы интеграция завершилась успехом.
Инструменты Node.js разработчика. Какие ODM нам нужны
ODM - Object Document Mapper - используется преимущественно для доступа к документоориенриирвоанным базам данных, к которым относятся MongoDB, CouchDB, ArangoDB, OrientDB (последние две базы данных гибридные) и некоторые другие.
Прежде чем перейти к рассмотрению вопроса, озвученного в названии сообщения, приведу статистику скачивания пакетов из публичного регистра npm.
Мир на ладони или как мы с помощью чат-бота оптимизируем рабочие процессы сотрудников

Когда численность сотрудников в НСПК стала измеряться сотнями, а количество корпоративных систем, в которых они работают десятками, то взаимодействие с ними стало не всегда удобным, временные затраты на доступ к ним с рабочей машины начали превышать непосредственное время самой работы в них. А что, если сотрудник находится не на своем рабочем месте, но, скажем, срочно необходимо оформить гостевой пропуск для партнера компании? И это лишь один кейс из множества.
Привет, меня зовут Иван Фисунов. Я расскажу, как мы в компании успешно решили и продолжаем решать, задачи по оптимизации рабочего процесса сотрудников, а также делаем рутинные процессы удобнее, проще и даже чуточку веселее, а следовательно и эффективнее.
Популярные npm-пакеты. Volume 1
Представляю вашему вниманию подборку из десяти популярных npm-пакетов с примерами их использования и альтернативными решениями.
Предполагается, что вы хорошо знакомы с JavaScript и, в частности, с Node.js.
В данном части представлены следующие пакеты:
Мониторинг Node.js-приложения

Здравствуйте! Меня зовут Ренат Саматов, я возглавляю фронтенд-направление в линейке продуктов Витрина. Большая часть наших проектов рендерится на сервере. Сегодня мы побеседуем об одном из важнейших аспектов SSR-приложения: о мониторинге.
Даже в 2020-м мониторинг Node.js-приложения является непростой задачей. Node.js — среда выполнения JavaScript, однопоточного языка программирования с динамической типизацией. Интерпретатору и среде исполнения предоставлены широкие полномочия, что очень легко может привести к утечке памяти или высокой нагрузке на процессор. Node.js работает асинхронно (псевдопараллельно), однако если одна функция блокирует поток или очередь событий, производительность приложения начинает сильно проседать.
В этой статье я расскажу о том, как контролировать ваше Node.js-приложение и быть уверенным в том, что проблем с утечкой памяти, ресурсов процессора и блокировкой потока не возникает. Мы побеседуем об управлении производительностью приложения (Application Performance Management, APM) и метриках, на которые следует обращать внимание. Погнали!
Принимаем криптовалютные платежи с Coinbase Commerce

Если Вы планиуете подключать криптовалютные платежи и еще не знакомы с Coinbase Commerce, стоит потратить 5 минут Вашего времени. Расскажу о подключении, настройке и поделюсь готовым open source решениями для Nodejs.
Coinbase Commerce — это крипто-эквайринг без комиссий, паспортов, с отличным API и Вашим личным счетом.
Raspberry pi и Азбука Морзе
Парусник “NaN” сигналит SOS (See Our Success) Raspberry Pi, азбука Морзе и MQTT: вместе веселее
Здравствуйте. Я хочу рассказать, что я делал этой весной. У меня был парусник, он назывался “Not a Number”(“NaN”). Выходить в море без сигнализации опасно, поэтому я подумал, что ему на мачте не хватает сигнальных огней. А лучше — сигнальных огней, которыми можно управлять удаленно. А лучше — удаленно из любой точки мира! У меня был Raspberry Pi — и тогда я придумал…
Чего мне захотелось (Постановка задачи)
… что можно прикрепить к мачте светодиод, соединить его с Raspberry Pi и запрограммировать так, чтобы из Интернета было возможно отсылать паруснику любое сообщение — и оно переводилось в код Морзе — и диод на мачте мигал в соответствии с этим кодом. И на ту же мачту закрепить фоторезистор — декодер кода Морзе, чтобы другой компьютер в Интернете мог получить переданный код.
Что у меня вышло (Результат)
После двух месяцев проб и ошибок у меня получилось написать программу, которая через MQTT-брокер(http://www.hivemq.com/demos/websocket-client/) позволяет любому человеку в Интернете, знающему Topic — секретный ключ для передачи сообщения клиенту, — отправить абсолютно любое сообщение написанное латиницей — и светодиод на мачте моего промигает его азбукой Морзе!
Вот в целом как это работает: мы пишем сообщение и отправляем его MQTT-серверу, а он в свою очередь отправляет его на Raspberry pi, который переводит его в код Морзе и подмигивает светодиодом в соответствии с кодом.
Вот код на Node.js на гитхабе.
Подключение и настройка графиков TradingView

Если Вы — фрилансер или CTO финансового проекта, рано или позно Вы столкнетесь с вопросом подключения графиков, я сэкономлю Вам минимум сутки работы. Те, кто уже используют эту библиотеку, возможно, найдут что-то новое.
Статья будет в формате "книги рецептов" с open source решениями для криптовалютной биржи Binance и Forex.
Финансовые графики для вашего приложения

Поиск нужных графиков отнимает время и несет много вопросов. Сегодня хочу поделиться своим опытом в выборе финансовых графиков, для экономии вашего времени и сил.
В статье расcмотрю три основных для меня библиотеки, сделаю сравнение и дополню комментариями из личного опыта.
Выбираем лучший бэкенд-фреймворк 2021 года

Intl.Segmenter: сегментация Юникода в JavaScript
Предисловие к переводу
Это перевод объяснительной части предложения (proposal) Intl.Segmenter, которое скорее всего будет добавлено в ближайшую спецификацию ECMAScript.
Предложение уже реализовано в V8 и без флага может быть использовано в версии 8.7 (точнее в 8.7.38 и выше), поэтому его можно протестировать в Google Chrome Canary (начиная с версии 87.0.4252.0) или в Node.js V8 Canary (начиная с версии v15.0.0-v8-canary202009025a2ca762b8; для Windows бинарники доступны с версии v15.0.0-v8-canary202009173b56586162).
Если будете тестировать в более ранних версиях с флагом --harmony-intl-segmenter, будьте осторожны, так как спецификация менялась и реализация под флагом может быть устаревшей. Проверяйте по выводу в примерах кода.
После перевода приведены ссылки на материалы об основаниях проблем, которые решает данное предложение.
Перфоманс фронтенда как современное искусство: графики, код, кулстори
Всем привет. В предыдущих статьях мы говорили о базовых вещах оптимизации: раз и два. Сегодня я предлагаю с разбега окунуться в одну часть из тех задач, которыми занимается команда архитектуры фронтенда в hh.ru.
Я работаю в команде архитектуры. Мы не только перекладываем файлики из одной папки в другую, но и занимаемся кучей других вещей:
- Перфоманс приложения
- Инфраструктура: сборка, тесты, пайплайны, раскатка на продакшене, инструменты для разработчика (например бабель-плагины, кастомные eslint правила)
- Дизайн-система (UIKit)
- Переезд на новые технологии
Если покопаться, можно найти много интересного.
Поэтому, давайте поговорим о перфомансе. Команда фронтенд архитектуры ответственна как за клиентскую часть, так и серверную (SSR).
Я предлагаю посмотреть на метрики и разобраться, как мы реагируем на различные триггеры. Статья будет разбита на 2 составляющие. Серверную и клиентскую. Графики, код и кулстори прилагаются.

Ближайшие события
Web Cryptography API: пример использования
В этом туториале мы рассмотрим Web Cryptography API: интерфейс шифрования данных на стороне клиента. Данный туториал основан на этой статье. Предполагается, что вы немного знакомы с шифрованием.
Что конкретно мы будем делать? Мы напишем простой сервер, который будет принимать зашифрованные данные от клиента и возвращать их ему по запросу. Сами данные будут обрабатываться на стороне клиента.
Сервер будет реализован на Node.js с помощью Express, клиент — на JavaScript. Для стилизации будет использоваться Bootstrap.
Код проекта находится здесь.
Если вам это интересно, прошу следовать за мной.
Nested Sets для Javascript
Сегодня множество проектов разрабатывается с использованием Javascript. Как же хранить древовидные структцры в этом случае? Об этом и хотелось бы поговорить.
NodeJS: 12 пакетов для продуктивности разработчика

Менеджер процессов для продакшна с балансировщиком нагрузки. Обёртки над отладкой и хуками Git, защита express-приложений через HTTP-заголовки, утилита в более чем 180 функциями для работы с датами и другие инструменты, которые сэкономят ваше время. Подборка особенно полезна начинающим разработчикам NodeJS, но может порадовать опытных скептиков.
Компоновщик в JavaScript

В этой статье мы разберем один из структурных шаблонов проектирования в JavaScript — компоновщик. В программной инженерии компоновщик позволяет обращаться к группам объектов так, как будто они являются отдельными объектами, что обеспечивает единообразие общей структуры этих объектов и их комбинаций.
Главная задача компоновщика — объединение множества объектов в единую древовидную структуру. Эта древовидная структура представляет иерархию, построенную по принципу от частного к целому.
Чтобы лучше понять принцип действия компоновщика, нужно представлять, как устроена иерархия от частного к целому и как ее можно изобразить визуально.
Безопасность npm-проектов, часть 2

Всем привет! В прошлых постах мы поговорили о том, как команда npm обеспечивает безопасность, а также начали рассматривать инструменты, помогающие нам повысить безопасность проектов. Я хочу продолжить разговор и рассмотреть следующий набор полезных инструментов.
Сборка сложных Node.js проектов утилитой run-z
Есть несколько десятков взаимосвязанных пакетов в рабочем дереве (Yarn Workspaces).
Надо собирать несколько из них. Часто, быстро, и в правильном порядке.
Существующие инструменты либо собирают всё сразу и долго, либо собирают в произвольном порядке, что некорректно и не всегда возможно.
Решение — run-z
Реализация технологии SSO на базе Node.js

Если речь идёт о каком-то одном веб-проекте, то сведения о состоянии конкретного сеанса взаимодействия клиента и сервера легко поддерживать с применением аутентификации пользователя при его входе в систему. Но если такая вот самостоятельная система эволюционирует, превращаясь в несколько систем, перед разработчиком встаёт вопрос о поддержании сведений о состоянии каждой из этих отдельных систем. На практике этот вопрос выглядит так: «Придётся ли пользователю этих систем входить в каждую из них по-отдельности и так же из них выходить?».