Как стать автором
Обновить
33.47
Рейтинг

Node.JS *

Среда для запуска JavaScript-приложений

Сначала показывать
Порог рейтинга

Приручаем многопоточность в Node.js (часть 3: разделяемая память, атомарные операции и блокировки)

Блог компании Тензор Высокая производительность *JavaScript *Программирование *Node.JS *
Tutorial

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

Но тут возникает две проблемы:

1. как эффективно доставить данные в обрабатывающий поток

2. как распределять задачи между активными потоками, чтобы ничего не пропустить, но и дважды не обработать

В этом нам как раз и помогут два рассматриваемых в этой статье концепта работы с многопоточностью: разделяемая (shared) память и потокобезопасные (thread-safe, Atomics) операции над ней.

Читать далее
Всего голосов 14: ↑14 и ↓0 +14
Просмотры 794
Комментарии 1

Новости

Рассказываем о пользе и вреде FullStack-фреймворков на примере Meteor.js

Блог компании МойОфис JavaScript *Node.JS *Meteor.JS *

В последнее время появляется довольно много Fullstack-фреймворков, они становятся популярны, их обсуждают.

Если посмотреть на результаты The State of JS 2021 в разделе «Библиотеки — Бэкенд-фреймворки», то минимум 5 из них (возможно, больше) будут как раз FullStack. Отсортировав бэкенд-фреймворки по заинтересованности, в самом верху списка мы снова увидим именно FullStack. Это понятно — они востребованы и лежат в основе разных проектов.

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

Читать далее
Всего голосов 60: ↑55 и ↓5 +50
Просмотры 4.3K
Комментарии 17

Приручаем многопоточность в Node.js (часть 2: очередь, каналы и координатор)

Блог компании Тензор Высокая производительность *JavaScript *Программирование *Node.JS *
Tutorial

В первой части статьи мы остановились на моменте, когда с помощью распределения задач между потоками по алгоритму Round-robin мы добились-таки ускорения работы приложения за счет многопоточности.

Но вот неприятность: такой алгоритм очень неравномерно нагружает потоки и не полностью утилизирует их возможности - пока кто-то простаивает, другой уже копит очередь. Как это можно обойти?

Читать далее
Всего голосов 11: ↑11 и ↓0 +11
Просмотры 1.4K
Комментарии 0

Как получить доступ к переменным dotenv (.env) с помощью плагина fastify-env

Высокая производительность *JavaScript *Node.JS *IT-стандарты *MongoDB *
Из песочницы
Перевод

Совсем недавно начал изучать фреймворк Fastify, который почему-то не особо популярен в русскоязычном сегменте интернета. Для хранения переменных конфигурации я всегда использовал файл .env. Для чтения файла .env на Express я привык использовать всем известную библиотеку dotenv, то врем как в экосистеме Fastify есть своя библиотека - @fastify-env.

Я в обратился к документации... и ничего не понял. Я попробовал реализовать то, что там указано, но у меня ничего не вышло. Туториал на youtube от какого-то индуса так же не помог (хотя у индийского программиста всё получилось)...

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

Итак, ниже пойдёт перевод этой статьи от 27.07.2021 г. (обновлено 18.02.2022 г.). Перед прочтением статьи рекомендую потратить 5-10 минут времени на чтение ооочень короткой официальной документации библиотеки @fastify-env.

Читать далее
Всего голосов 9: ↑6 и ↓3 +3
Просмотры 1K
Комментарии 0

Приручаем многопоточность в Node.js (часть 1: базовые концепты)

Блог компании Тензор Высокая производительность *JavaScript *Программирование *Node.JS *
Tutorial

Продолжаем серию статей, посвященных разным прикладным концептуальным решениям, которые могут существенно "прокачать" производительность вашего Node.js-приложения.

В прошлой статье мы рассмотрели реализацию эффективной очереди на основе "эластичного" кольцевого буфера, а в этой попробуем разобраться с особенностями использования модуля Worker threads в Node.js - какие проблемы внедрения многопоточности будут нас ждать при попытках сделать код более производительным, и узнаем, как их можно обойти, применяя типовые концепты.

Начнем с достаточно типовой задачи: мы получаем некоторые сообщения, и нам их надо как-то обработать. В качестве тестового примера сгенерируем эти сообщения самостоятельно, и посмотрим, за какое минимальное время мы сможем вычислить SHA-256-хэш для каждого из них.

Читать далее
Всего голосов 20: ↑20 и ↓0 +20
Просмотры 2.9K
Комментарии 2

Эффективная FIFO-обработка для Node.js и Chrome

Блог компании Тензор JavaScript *Программирование *Алгоритмы *Node.JS *
Tutorial

"По классике" FIFO-очередь для обработки некоторого потока задач обычно реализуется в виде связанного списка элементов. Но для JavaScript такой подход нехорош - он требует либо создания "обвязки" над элементом очереди в виде дополнительного объекта, содержащего ссылки на сам элемент и указатель на следующий, либо превращения элемента в объект и расширения его таким же указателем.

В таких нагруженных системах, как коллектор нашего сервиса мониторинга PostgreSQL-серверов, создание и последующая подчистка Garbage Collector'ом подобных избыточных объектов и полей - непозволительная роскошь.

Но если внимательно посмотреть на эту схему, то можно заметить, что сами элементы очереди A, B, C линейно упорядочены. Так нельзя ли использовать в качестве очереди обычный массив с его .push() и .shift()?..

Насколько это будет эффективно, какие грабли встретятся на этом пути, и как их можно обойти - сегодня об этом.

Читать далее
Всего голосов 15: ↑15 и ↓0 +15
Просмотры 1.8K
Комментарии 7

Превью сайта с разметкой Open Graph: как автоматически рендерить картинку

Блог компании Почтатех Разработка веб-сайтов *Node.JS *
Tutorial

Всем привет! Меня зовут Николай Каменев, я фронтенд-разработчик в Почтатехе. Мы разрабатываем UI для порталов и приложений Почты России.

Я хочу поделиться коротким гайдом, как автоматически рендерить og:image-изображения для превью сайтов.

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Просмотры 1.4K
Комментарии 2

Пишем продвинутый планировщик с использованием React, Nest и NX. Часть 2: аутентификация

Блог компании Домклик Node.JS *MongoDB *ReactJS *TypeScript *
Tutorial

Друзья, всем привет! Меня зовут Игорь Карелин, я frontend-разработчик в компании Домклик. В прошлой части мы разобрались, как настроить и запустить проект, а сегодня продолжим создавать наш планировщик и поэтапно разберём создание аутентификации с помощью библиотеки Passport.

Читать далее
Всего голосов 18: ↑18 и ↓0 +18
Просмотры 2K
Комментарии 3

GridComponent. Часть II. Котики, NestJS и чуть-чуть о Postman

Node.JS *
Tutorial

Доброго дня, хабровчане!

Как и обещал, в продолжение своего пет-проекта по созданию грид-компонента опишу здесь создание backend части.

Читать далее
Всего голосов 3: ↑2 и ↓1 +1
Просмотры 1.9K
Комментарии 0

ESM. Выходим за рамки

Ненормальное программирование *Разработка веб-сайтов *JavaScript *Программирование *Node.JS *
Tutorial

Итак, работая над... ну не знаю... каким-нибудь замечательным генератором статики, вы, возможно, захотите импортировать в свой код зависимости напрямую из текстовых файлов, таких как: HTML, MD, CSS, SVG или JSON. Конечно, можно использовать бандлер с соответствующим лоадером. Но, допустим, ваш кодекс самурая велит вам - никаких лишних npm install xxx и промежуточных билдов! Только хардкор! Что делать? Выход есть.

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 1.5K
Комментарии 0

Как мы строили безопасное web приложение на базе WIKI.JS

Информационная безопасность **nix *Node.JS *

Цель статьи - поделиться опытом, болью и поныть немного о проблемах. Никоим образом не ставилось целью показать, что именно такой путь правильный.

Читать далее
Всего голосов 3: ↑2 и ↓1 +1
Просмотры 1.9K
Комментарии 4

Как сделать много форм, не сделав ни одной

Разработка веб-сайтов *JavaScript *Node.JS *ReactJS *

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

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

На самом деле есть другое решение.

Читать далее
Всего голосов 6: ↑5 и ↓1 +4
Просмотры 6.5K
Комментарии 17

Разрабатываем чат с помощью Nest, React и Postgres

Блог компании Timeweb Cloud Разработка веб-сайтов *JavaScript *Node.JS *ReactJS *


Привет, друзья!


В данном туториале мы разработаем чат с использованием следующих технологий:


  • TypeScript — статический типизатор;
  • NestJS — сервер;
  • Socket.IO — библиотека для работы в веб-сокетами;
  • React — клиент;
  • TailwindCSS — библиотека для стилизации;
  • PostgreSQL — база данных (далее — БД);
  • PrismaORM;
  • Docker — платформа для разработки, доставки и запуска приложений в изолированной среде — контейнере.

Функционал чата будет таким:


  • фейковая регистрация пользователей:
    • хранение имен пользователей в памяти (объекте) на сервере;
    • хранение имен и идентификаторов пользователей в localStorage на клиенте;
  • регистрация подключений и отключений пользователей на сервере и передача этой информации подключенным клиентам;
  • запись, обновление и удаление сообщений из БД в реальном времени на сервере и передача этой информации клиентам.

Репозиторий с кодом проекта.


Если вам это интересно, прошу под кат.

Читать дальше →
Всего голосов 9: ↑7 и ↓2 +5
Просмотры 4.2K
Комментарии 6

Использование шаблонов проектирования группы GoF в React

Блог компании Россельхозбанк Разработка веб-сайтов *JavaScript *Node.JS *ReactJS *
Перевод

В этой статье поговорим о том, как написать в React многократно используемый код, используя три шаблона проектирования группы Gang-of-Four.

Читать далее
Всего голосов 10: ↑8 и ↓2 +6
Просмотры 6K
Комментарии 10

Как использовать Docker в приложениях Node.js и React

Блог компании Россельхозбанк Разработка веб-сайтов *JavaScript *Node.JS *ReactJS *
Перевод

В этой статье поговорим о том, как разработать и запустить бэкэнд на Node.js-Express и фронтенд на React в контейнере Docker.

Читать далее
Всего голосов 13: ↑8 и ↓5 +3
Просмотры 8.7K
Комментарии 17

Почему я люблю и ненавижу NestJS?

JavaScript *Анализ и проектирование систем *Node.JS *API *TypeScript *

NestJS прекрасный фреймворк под Node.js, вдохновлённый серьёзными фреймворками Spring, ASP.NET Core, Simfony.

Так что же там внутри прекрасного и ужасного?

Читать далее
Всего голосов 13: ↑7 и ↓6 +1
Просмотры 4.5K
Комментарии 13

Примитивы синхронизации в JavaScript: cемафоры и хоккей

Разработка веб-сайтов *JavaScript *Node.JS *

Реализуем простейшие механизмы синхронизации потоков в JavaScript. На этапе раскатки перед матчем с помощью бинарного семафора разделим игроков на две равные группы, а уже в процессе игры с помощью семафора со счетчиком избавимся от штрафов за нарушение численного состава.

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Просмотры 3.6K
Комментарии 4

Node.js: работа с файловой системой

Блог компании Timeweb Cloud JavaScript *Node.JS *
Перевод


Привет, друзья!


Представляю вашему вниманию перевод этой замечательной статьи.


Данная статья включает в себя:



Если вам это интересно, прошу под кат.

Читать дальше →
Всего голосов 8: ↑7 и ↓1 +6
Просмотры 3.8K
Комментарии 1

Node.js: использование веб-потоков. Часть 2

Блог компании Timeweb Cloud JavaScript *Node.JS *
Перевод


Привет, друзья!


Представляю вашему вниманию перевод второй части этой замечательной статьи.


Ссылка на первую часть.


Веб-потоки (web streams) — это стандарт для потоков (streams), который поддерживается всеми основными веб-платформами: веб-браузерами, Node.js и Deno. Потоки — это абстракция для чтения и записи данных последовательно, небольшими частями из любого вида источника — файлов, данных, находящихся на сервере, и т.д.


Например, глобальная функция fetch (которая используется для загрузки онлайн-ресурсов) асинхронно возвращает ответ (Response), содержащий свойство body с веб-потоком.


В данной статье рассматриваются веб-потоки в Node.js, но то, о чем мы будем говорить, применимо к любой поддерживающей их платформе.

Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 2.6K
Комментарии 0

Node.js: использование веб-потоков. Часть 1

Блог компании Timeweb Cloud JavaScript *Node.JS *
Перевод


Привет, друзья!


Представляю вашему вниманию перевод первой части этой замечательной статьи.


Ссылка на вторую часть.


Веб-потоки (web streams) — это стандарт для потоков (streams), который поддерживается всеми основными веб-платформами: веб-браузерами, Node.js и Deno. Потоки — это абстракция для чтения и записи данных последовательно, небольшими частями из любого вида источника — файлов, данных, находящихся на сервере, и т.д.


Например, глобальная функция fetch (которая используется для загрузки онлайн-ресурсов) асинхронно возвращает ответ (Response), содержащий свойство body с веб-потоком.


В данной статье рассматриваются веб-потоки в Node.js, но то, о чем мы будем говорить, применимо к любой поддерживающей их платформе.

Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 5.4K
Комментарии 0

Вклад авторов

Работа