Node JS
2.09K subscribers
164 photos
66 videos
17 files
226 links
Подборки по Node js и все что с ним связано. По всем вопросам @evgenycarter
Download Telegram
Открытый урок «Оптимизация работы компонентов в 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
Как выбрать подходящий образ контейнера для 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
👍72
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
Переходим с Node.js на Go… но это не точно

Создатель Node.js Райан Даль в одном из своих интервью заявил, что для написания серверов предпочёл бы Go. Это интервью состоялось в 2017 году, с тех пор Райан переходил на Rust, даже написал на нём еще одну среду для выполнения серверного JS – Denо. Но джин уже выпущен из бутылки. Стали даже появляться заявления о скорой кончине Node.js. Фразу продолжают вспоминать в спорах по сей день, и сейчас можно увидеть статьи о переходе с Ноды на Голанг.

Мне же представляется, что вопрос о переходе между этими двумя технологиями едва ли стоит – эти решения для разных ниш. Прикладные API-сервера, для которых чаще всего используют Ноду устроены таким образом, что получить выигрыш производительности переходом на Go довольно трудно, а вот замедлить разработку очень легко.

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

✍️ @nodejs_lib
👍10
🚀 Node.js Developer — это курс, который сделает из вас профессионального разработчика серверных приложений! Если вы уже знаете JavaScript, но хотите выйти на новый уровень и освоить Express, TypeScript, GraphQL, Apollo и Nest.js, этот курс для вас!

🗓 Старт уже скоро! 27 марта!

Длительность: 4 месяца

📍 Формат: Онлайн

🕗 Занятия: Вт/Чт 20:00 МСК

💡 Что вас ждет на курсе?

Полное погружение в backend-разработку с Node.js
Освоение работы с MongoDB и PostgreSQL
Глубокое изучение GraphQL и Apollo
Создание собственного backend-проекта для портфолио
Практика с TDD, WebSockets, CI/CD и Docker
Поддержка преподавателей и комьюнити

🎯 Для кого этот курс?

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

👨‍🏫 Кто преподает?

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

🎓 Чем полезен курс?

📌 Развитие сильного технического стека
📌 Глубокое понимание архитектуры и дизайна Node.js
📌 Практика с микросервисами, Docker, Nest.js и Kubernetes
📌 Разбор реальных кейсов от экспертов

💼 После курса:

🔹 Вы сможете уверенно работать с Node.js, TypeScript и GraphQL
🔹 Создадите свой проект, который можно показать работодателям
🔹 Получите помощь в поиске работы и подготовке резюме

🔥 Готовы прокачать свои навыки? Проходите тест: https://vk.cc/cJSmxg

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👎1👌1