Node JS
2.07K subscribers
165 photos
66 videos
17 files
227 links
Подборки по Node js и все что с ним связано. По всем вопросам @evgenycarter
Download Telegram
Используйте кластеры Node.js для более эффективного использования процессора

Node.js является однопоточным, то есть он может использовать только одно ядро процессора. Однако большинство современных серверов имеют несколько ядер. Чтобы в полной мере использовать возможности центрального процессора, можно использовать кластеры Node.js, которые позволяют приложению работать на нескольких ядрах процессора одновременно. Кластеры порождают несколько рабочих процессов, каждый из которых работает на отдельном ядре, и они используют один и тот же порт сервера.

Для создания кластера вам понадобится встроенный модуль cluster. Приведем пример:

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

✍️ @nodejs_lib
6👍4👎1
Media is too big
VIEW IN TELEGRAM
NodeJS Realtime Chat: Создаем FULL-STACK приложение за 27 минут!

GitHub https://github.com/alamorre/fullstack-chat

✍️ @nodejs_lib
👍3👎1
Как я улучшил видеостриминг с помощью FFmpeg и Node.js

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

https://mayallo.com/video-processing-using-ffmpeg-nodejs/

✍️ @nodejs_lib
👍61
Media is too big
VIEW IN TELEGRAM
Бот для Telegram на Node.js, TypeScript и Telegraf js

0:00 - Введение
0:08 - Что будем делать?
1:32 - Создание бота в Telegram
2:39 - Подготовка проекта
4:27 - Установка зависимостей и сборка
6:40 - Сервис конфигурация и dotenv
14:40 - Класс бота
20:10 - Типизация контекста
22:32 - Создание класса команд
25:58 - Создание команды start
35:11 - Локальное хранение сессий
36:44 - Запуск бота
40:06 - Заключение

источник

✍️ @nodejs_lib
👍6😁21
Открытый урок «Оптимизация работы компонентов в React.js».
Когда: 29 января в 20:00 мск.

На вебинаре вы узнаете:
- Как работать с оптимизацией в React.js
- Особенности работы функциональных компонентов и хуков
- Трюк с мемоизацией коллбеков для списка элементов

Встречаемся в преддверии старта курса «React.js Developer» Otus.
Все участники вебинара получат специальную цену на обучение!

Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cHW5E9

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Избегаем ложных срабатываний в тестах Node.js

В статье автор рассматривает распространенные ошибки, приводящие к ложным положительным результатам в тестах. Например, использование assert.equal() вместо assert.strictEqual() может привести к неожиданным результатам из-за приведения типов в JavaScript.
Также обсуждается опасность чрезмерно общих утверждений, таких как .toBeTruthy(), которые могут скрывать реальные проблемы в коде. Автор подчеркивает важность тщательного написания тестов и избегания копипасты, чтобы повысить надежность тестового покрытия.

https://blog.appsignal.com/2024/11/20/avoiding-false-positives-in-nodejs-tests.html

✍️ @nodejs_lib
👍3
React 19: что нового в самой популярной библиотеке для создания интерфейсов? Узнайте первыми!

Новые хуки, улучшения рефов, кастомные элементы — React становится ещё удобнее. И мы готовы рассказать, как использовать это на практике.

Хотите быть на пике технологий? На открытом вебинаре 6 февраля в 19:00 мск разберём, как применять нововведения React 19 в реальных проектах.

Все участники получат скидку на большое обучение «React.js Developer» — идеальный способ прокачать навыки.

Записаться: https://vk.cc/cI3aWQ

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Представьте себе полноценный PostgreSQL, работающий прямо в браузере или Node.js без необходимости поднимать отдельный сервер или встраивать Linux-образ. Проект PGlite реализует эту идею, предоставляя всего лишь 3 МБ (в сжатом виде) с поддержкой популярных расширений, таких как pgvector.

PGlite — это PostgreSQL, скомпилированный в WebAssembly и упакованный в простую TypeScript/JavaScript-библиотеку. Его ключевая особенность — отсутствие "линуксового" виртуального окружения, что обеспечивает минимальный размер и удобный API. Вы можете использовать PGlite как in-memory базу или включить постоянное хранение данных в IndexedDB (в браузере) или файловой системе (в Node.js/Bun/Deno).

Основные преимущества PGlite:

- Минимальный размер — около 3 МБ в сжатом виде.
- Удобный API — простое подключение библиотеки и вызов методов для работы с базой данных. Совместимость с популярными ORM, такими как Drizzle или TypeORM.
- Поддержка расширений — в комплект входят некоторые популярные плагины, например, pgvector.

Пример использования PGlite в браузере:


import { PGlite } from "@electric-sql/pglite";

const db = new PGlite();
const result = await db.query("SELECT 'Привет, мир!' AS message;");
console.log(result);
// -> { rows: [ { message: "Привет, мир!" } ] }


Для сохранения данных между перезагрузками в IndexedDB:


const db = new PGlite("idb://my-pgdata");
// Данные сохранятся в IndexedDB


В средах Node.js/Bun/Deno можно указать путь к файлу для постоянного хранения данных:


const db = new PGlite("./path/to/pgdata");
// Данные сохранятся в локальной файловой системе


PGlite подходит для быстрого тестирования и прототипирования, демонстрационных и учебных проектов, а также для "local-first" приложений, где данные хранятся локально и синхронизируются при подключении к внешней СУБД.

https://habr.com/ru/articles/873112/

✍️ @nodejs_lib
👍6👎1
Недавно я наткнулся на интересный вызов — обработать файл размером 12 ГБ, содержащий 1 миллиард строк формата <stationName>;<temperature>\n, с целью агрегировать минимальное, максимальное и среднее значения температуры для каждой станции. В своем блоге Jacky Efendi поделился своим опытом решения этой задачи с использованием Node.js, достигнув ускорения примерно в 30 раз по сравнению с базовой реализацией.

Jacky начал с базового подхода, используя встроенные модули Node.js для построчного чтения файла и хранения агрегированных данных в структуре Map(). Затем он провел профилирование кода с помощью Clinic.js Flame, чтобы определить узкие места производительности. Основное время выполнения занимала функция StringPrototypeSplit, используемая для разделения строк.

Для оптимизации Jacky предложил несколько улучшений:

1. Сокращение вызовов StringPrototypeSplit: уменьшение количества вызовов этой функции для повышения эффективности.
2. Более быстрые преобразования Buffer в числа: оптимизация процесса преобразования данных из буфера в числовые значения.
3. Параллелизация обработки: распределение работы между несколькими потоками или процессами для ускорения обработки больших объемов данных.

https://jackyef.com/posts/1brc-nodejs-learnings

✍️ @nodejs_lib
👍51