TGViewer
Channel Public Channel
Node JS

Node JS

@nodejs_lib

Подборки по Node js и все что с ним связано. По всем вопросам @evgenycarter
Subscribers
1.96K
Photos
158
Videos
66
Links
220

Showing posts older than #342 · Back to latest

Older Posts 11 shown
Post #341 1.43K
OpenTelemetry — это мощный фреймворк, который упрощает процесс сбора и стандартизации телеметрических данных, таких как логи, трассировки и метрики, в различных языках программирования и платформах. Он обеспечивает единообразный подход к инструментированию приложений, независимо от используемых языков программирования, фреймворков или инструментов наблюдаемости.

В недавно опубликованном руководстве на Better Stack Community рассматривается, как использовать OpenTelemetry для добавления трассировки в ваши Node.js приложения. В этом руководстве вы найдете пошаговые инструкции по настройке демонстрационного проекта, инициализации SDK OpenTelemetry для Node.js, настройке OpenTelemetry Collector и Jaeger, а также по кастомизации автоинструментирования и добавлению пользовательской трассировки.

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

https://betterstack.com/community/guides/observability/opentelemetry-nodejs-tracing/

✍️ @nodejs_lib
  • 👍 3
Post #340 1.38K
Как выбрать подходящий образ контейнера для Node.js-приложения

Основные моменты:

- Какой базовый образ использовать?
- node:<version> — полноразмерный образ на основе Debian, удобен для разработки.
- node:<version>-slim — урезанная версия, без ненужных инструментов.
- node:<version>-alpine — суперлёгкий образ, но требует совместимости с musl вместо glibc.

- Как уменьшить размер образа?
- Использование slim или alpine.
- Уменьшение количества слоёв в Dockerfile.
- Очистка временных файлов после установки зависимостей.

- Оптимизация производительности
- Включение NODE_ENV=production перед установкой пакетов.
- Использование --omit=dev в npm ci или yarn install --production.
- Кэширование node_modules для ускорения сборки.

- Дополнительные аспекты
- Выбор образа с LTS-версией Node.js для стабильности.
- Изоляция зависимостей и минимизация уязвимостей.
- Использование многослойных образов (multi-stage builds) для уменьшения итогового размера.

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

https://labs.iximiuz.com/tutorials/how-to-choose-nodejs-container-image

✍️ @nodejs_lib
  • 👍 7
  • ✍ 2
Post #339 1.49K
Post #338 1.49K
Недавно я наткнулся на интересный вызов — обработать файл размером 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
Jackyef 1-billion row challenge with Node.js 5 minutes to 11 seconds with Node.js is possible?
  • 👍 5
  • ❤ 1
Post #337 1.4K
Представьте себе полноценный 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
Post #335 1.2K
Избегаем ложных срабатываний в тестах 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
Post #324 1.44K
Node.js

How to read a file in Node.js
How to scrape a website in Node.js
How to parse a CSV file in Node.js
Converting XML to Object and Object to XML in Node.js
How to parse an Excel file in Node.js
Colorize your command-line output in Node.js
Post to Twitter in Node.js
Create QR codes in JavaScript
Resize an image in Node.js using Sharp
Building a REST API in Fastify | Node.js Tutorial

✍️ @nodejs_lib
  • 👍 3
  • 🔥 2
  • 🥴 2
Post #323 1.32K
Бот для 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
  • 😁 2
  • ❤ 1
Post #322 1.47K
Как я улучшил видеостриминг с помощью FFmpeg и Node.js

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

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

✍️ @nodejs_lib
  • 👍 6
  • ✍ 1
Post #320 1.58K
Используйте кластеры Node.js для более эффективного использования процессора

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

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

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

✍️ @nodejs_lib
  • ✍ 7
  • 👍 4
  • 👎 1
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →