Node JS
2.09K subscribers
164 photos
66 videos
17 files
226 links
Подборки по Node js и все что с ним связано. По всем вопросам @evgenycarter
Download Telegram
Потоки записи в Node.js — практическое руководство

Node.js предоставляет мощную абстракцию ввода-вывода — Streams (потоки), которые позволяют эффективно обрабатывать данные частями, особенно когда речь идёт о больших объёмах данных. В этом руководстве мы сосредоточимся на Writable Streams — потоках, в которые можно записывать данные.

Что такое Writable Stream?

Writable Stream — это абстракция для источника данных, в который можно записывать. Примеры:

- fs.createWriteStream() — запись в файл
- http.request() — отправка HTTP-запросов
- net.Socket — запись в TCP-сокет
- process.stdout — вывод в консоль

Основные методы и события

Метод .write(chunk, [encoding], [callback])

Используется для записи данных в поток. Возвращает true, если поток готов принять ещё данные, иначе — false.


const fs = require('fs');
const stream = fs.createWriteStream('output.txt');

const result = stream.write('Hello, world!');
console.log(result); // true или false


Метод .end([chunk], [encoding], [callback])

Завершает поток. При необходимости можно передать финальный кусок данных.


stream.end('Final data');


События

- drain — вызывается, когда поток снова готов к записи (если ранее вернул false).
- finish — вызывается после завершения записи (после .end()).
- error — при возникновении ошибки.


stream.on('finish', () => console.log('Запись завершена.'));
stream.on('error', err => console.error('Ошибка:', err));


Управление потоком вручную

Когда stream.write() возвращает false, это означает, что внутренний буфер переполнен. Чтобы избежать перегрузки, стоит дождаться события drain:


function writeMany(stream, data, times) {
let i = 0;
function write() {
while (i < times) {
const ok = stream.write(data);
if (!ok) {
stream.once('drain', write);
return;
}
i++;
}
stream.end();
}
write();
}

writeMany(fs.createWriteStream('big.txt'), 'data\n', 10000);


Пользовательские Writable Streams

Вы можете создать свой Writable Stream, расширив Writable из модуля stream:


const { Writable } = require('stream');

class Logger extends Writable {
_write(chunk, encoding, callback) {
console.log(`LOG: ${chunk.toString()}`);
callback();
}
}

const logger = new Logger();
logger.write('Hello\n');
logger.end('Bye\n');


Итого

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

https://pavel-romanov.com/writable-streams-in-nodejs-a-practical-guide

✍️ @nodejs_lib
👍83
Профилирование Node.js приложения с помощью Pyroscope (без автоинструментирования)

Pyroscope — это мощный инструмент непрерывного профилирования, созданный для мониторинга производительности приложений в реальном времени. В этой статье мы рассмотрим, как быстро развернуть Pyroscope, подключить к нему Node.js приложение и проанализировать поведение кода без использования Grafana Alloy.

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

✍️ @nodejs_lib
👍7
Retrieval-Augmented Generation (RAG) на Node.js с Podman AI Lab и React

Retrieval-Augmented Generation (RAG) сочетает ИИ-модель со внешней базой знаний, чтобы дать более точные и информированные ответы. В этой статье рассказывается, как создать RAG-чатбот на Node.js, используя Podman AI Lab и React.

🔧 Что входит в стек:
* Node.js для серверной логики
* React для фронтенда
* Podman AI Lab для развёртывания моделей и управления векторными хранилищами
* LlamaIndex для индексации и поиска по документам
* LangChain для построения цепочек запросов
* OpenAI или Ollama как LLM-провайдер

📁 Этапы реализации:
1. Установка и запуск Podman AI Lab
2. Подготовка и загрузка документации (например, Markdown-файлов)
3. Индексация данных с помощью LlamaIndex
4. Создание backend API на Node.js
5. Интеграция с LangChain и вызов LLM
6. Реализация фронтенда на React для общения с ботом

🚀 Фишки:
* Поддержка как локальных, так и облачных моделей
* Удобный UI для экспериментов с векторами и цепочками
* Возможность расширения и кастомизации пайплайнов

https://developers.redhat.com/articles/2025/03/10/retrieval-augmented-generation-nodejs-podman-ai-lab-react#node_js_rag_chatbot_recipe

✍️ @nodejs_lib
👍4
Хотите собрать первое приложение на React за 60 минут?

Присоединяйтесь к открытому уроку от OTUS. Без скучных теорий и банальных todo-листов: только практика, код и живое общение. Вы узнаете, зачем нужны хуки и как компоненты делают интерфейс «живым», и самостоятельно создадите интерактивную игру.

Урок пройдет в преддверии старта курса «React.js Developer». Каждый участник вебинара получит скидку на обучение.

Встречаемся 7 мая в 20:00 МСК, регистрируйтесь прямо сейчас, чтобы не пропустить: https://vk.cc/cLCq23

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Повышение надёжности загрузок Node.js

Node.js уже давно предоставляет двоичные файлы (binary) через https://nodejs.org/download, однако в последние годы это решение стало сталкиваться с рядом проблем:

* Надёжность — иногда пользователи сталкиваются с перебоями в доступе к скачиваемым файлам.
* Масштабируемость — всё больше пользователей и CI/CD-систем используют Node.js, увеличивая нагрузку.
* Геораспределённость — скорость загрузки может значительно варьироваться в зависимости от региона.

Что изменится?

Команда Node.js работает над тем, чтобы перенести хостинг загрузок на более надёжную инфраструктуру — Fastly CDN. Это позволит:

* Снизить количество ошибок при скачивании.
* Повысить скорость загрузки по всему миру.
* Обеспечить лучшую устойчивость к пиковым нагрузкам.

Переходный период

В ближайшие месяцы будет происходить поэтапный переход. Команда уделяет особое внимание совместимости и минимизации сбоев:

* Старые URL будут продолжать работать.
* CI/CD системы не потребуют немедленных изменений.
* Пользователям рекомендуется следить за анонсами и при возможности обновить конфигурации.

Почему это важно?

Переход на CDN — это важный шаг для обеспечения надёжности экосистемы Node.js. Надёжные и быстрые загрузки особенно важны для разработчиков, DevOps-инженеров и автоматизированных систем сборки.


https://nodejs.org/en/blog/announcements/making-nodejs-downloads-reliable

✍️ @nodejs_lib
👍2🔥1
Не просто кнопка "Загрузить": Секреты работы с файлами в React

🎓 19 мая в 20:00 — бесплатный вебинар для разработчиков, которые хотят делать удобную и безопасную загрузку файлов в React-приложениях.

Что покажем:
— Drag & Drop, предпросмотр, валидация — всё, что ждали от UX;
— Обработка PDF, Excel и изображений прямо в браузере;
— Как не «положить» интерфейс при загрузке тяжёлых файлов;
— Защита от XSS, проверка MIME-типов и другие нюансы безопасности.

📌 Для фронтендеров и fullstack-разработчиков, которым важна клиентская оптимизация.

В программе — реальные примеры кода, которые можно сразу использовать.
Урок пройдет в преддверии старта курса «React.js Developer». Каждый участник вебинара получит скидку на обучение.

Регистрация: https://vk.cc/cLZMzs

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
💡 Парсинг неструктурированных DOCX в TypeScript/Node.js: как я решил нетривиальную задачу

Недавно я взял фриланс-проект, где нужно было преобразовать «почти неструктурированные» DOCX-файлы в структурированные данные, например, в JSON. Сначала я думал, что справлюсь за пару дней. Но в итоге потратил больше пяти.

📄 Что такое «почти неструктурированные» DOCX?

Файлы генерируются сервером и содержат несколько статей. Каждая статья обычно включает заголовок, автора, дополнительную информацию и резюме. Однако структура варьируется: где-то нет автора, где-то несколько, а вместо резюме — комментарии.

🔍 Проблемы с существующими библиотеками:

* officeparser: извлекает только текст, без структуры.
* docx4js: не имеет типов для TypeScript и сложно использовать.
* docx: больше подходит для создания DOCX, а не для парсинга.

🛠️ Моё решение:

Поняв, что DOCX — это ZIP-архив с XML-файлами, я решил сам обработать document.xml. Использовал fast-xml-parser для преобразования XML в JS-объекты. Однако структура XML оказалась сложной, и пришлось разбираться в ней вручную.

📌 Вывод:

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

https://nguyenhuythanh.com/posts/unstructured-ish-docx-parsing/

✍️ @nodejs_lib
👍6
💻 Хотите стать востребованным Fullstack-разработчиком?
Откройте для себя новые возможности с обучением OTUS!

❗️На курсе вы научитесь всему, что нужно для того, чтобы стать универсальным разработчиком, который создает как фронтенд, так и серверную часть веб-приложений. Освоите: HTML, CSS, JavaScript, React, TypeScript, Node.js и многое другое. Пройдете все этапы разработки, от верстки до серверной настройки.

По окончании программы у вас будет:
3 реальных проекта в портфолио
Навыки, необходимые для работы в крупных компаниях
Готовность к собеседованиям
Уверенное понимание процесса разработки
Возможность участвовать в интересных проектах

➡️ Оставьте заявку прямо сейчас: https://vk.cc/cMclvN

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
Как работает Node.js

После прочтения этой статьи вы хорошо поймете следующее:

🟢как работает цикл событий (event loop) в Node.js, включая все его фазы
🟢как Node.js выполняет JavaScript в одном потоке (single thread)
🟢как Node.js использует библиотеку libuv и внутренние API для обработки асинхронных операций
🟢почему знание работы цикла событий так важно для написания эффективного серверного кода

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


Но почему в Node.js все устроено сложнее? Зачем столько фаз, которые так непросто понять?

https://habr.com/ru/companies/timeweb/articles/910514/

original https://www.deepintodev.com/blog/how-nodejs-works-behind-the-scenes

✍️ @nodejs_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
🚀 Открой для себя идеальный путь к лидерству с карьерным тестом от ОЭЗ «Алабуга»! 🌟

Мечтаете о карьере в крупной компании, где ваш потенциал раскроется на полную? Наш тест поможет вам определить вашу уникальную лидерскую роль. Может быть, именно вы станете тем лидером, который выведет команду на новый уровень?

После прохождения теста вы можете заполнить заявку и получить приглашение на эксклюзивную лидерскую программу. Участие в программе открывает реальные перспективы трудоустройства в ОЭЗ «Алабуга», предоставляя шанс начать путь к профессиональному признанию.

Сделайте первый шаг к своему будущему сегодня! Пройдите тест, подайте заявку и начните строить свою карьеру вместе с нами. 🎯
👍2🤡21🔥1
Оптимизация производительности Node.js: управление памятью V8 и настройка сборщика мусора

Часто разработчики на Node.js замечают, что память их приложения, измеряемая Resident Set Size (RSS) операционной системы, кажется постоянно растущей. Такое увеличение RSS обычно вызывает опасения по поводу утечек памяти.

В результате многие промышленные среды настраивают инструменты мониторинга и оркестрации, такие как Kubernetes или Docker Swarm, на автоматический перезапуск или завершение процессов Node.js, когда их RSS превышает определённый процент от выделенного лимита памяти — обычно около 80 %. Считается, что высокий RSS неизбежно указывает на серьёзную проблему с памятью, требующую вмешательства.


https://blog.platformatic.dev/optimizing-nodejs-performance-v8-memory-management-and-gc-tuning

✍️ @nodejs_lib
👍2
💻 Хотите освоить основы веб-разработки с нуля? Откройте для себя важнейшие инструменты HTML

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

▸ С основными HTML-тегами.
▸ Научитесь применять их атрибуты для стилизации и функциональности.
▸ Мы покажем, как правильно структурировать контент с использованием семантической разметки.
▸ Что поможет вам улучшить SEO и доступность веб-страниц.

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

📅 Урок 17 июня в 19:00 МСК проходит в преддверие старта курса «Fullstack Developer», все участники получат скидку 5% на обучение по промокоду FULLSTACK_6

🔴 Регистрация открыта: https://vk.cc/cMHg7M

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Лучшие инструменты наблюдения за Node.js в 2025 году: N|Solid против New Relic, Datadog и других

Эффективный мониторинг приложений на Node.js уже давно не является опцией — это необходимость для обеспечения производительности, надёжности и плавного пользовательского опыта. При наличии множества инструментов для наблюдения и APM выбор подходящего для вашего стека и команды может оказаться непростой задачей. Независимо от того, отслеживаете ли вы утечки памяти, скачки загрузки ЦП или асинхронные узкие места, правильный стек наблюдения сэкономит вам часы на отладке и защитит впечатления ваших пользователей.

https://nodesource.com/blog/nodejs-observability-tools-2025

✍️ @nodejs_lib
👍2
🚨 Инцидент безопасности в CI-инфраструктуре Node.js (март 2025)

15 марта 2025 года команда Node.js обнаружила, что одна из CI-систем проекта (Continuous Integration) была скомпрометирована. Вредоносный код был внедрён злоумышленником в один из раннеров CI, использовавшийся для тестирования pull request’ов.

🔍 Что произошло:

* Компрометация произошла через GitHub Actions Runner в одном из fork-репозиториев.
* Вредоносный код собирал данные из окружения и передавал их на внешний сервер.
* Он не повлиял на релизы Node.js, так как релизные артефакты собираются в отдельной, изолированной инфраструктуре.

Что было сделано:

* Сразу после обнаружения CI-инфраструктура была остановлена.
* Проведён аудит безопасности.
* Все секреты и ключи доступа были отозваны и заменены.
* Перепроверены все последние релизы на предмет возможной компрометации.

🧯 Вывод:

* Сам Node.js, его исходный код и дистрибутивы не были скомпрометированы.
* Инцидент затронул только инфраструктуру, обслуживающую внешние PR.
* Сейчас CI-инфраструктура запускается в обновлённой, безопасной конфигурации.

🛡 Рекомендации:

* Пользователям и разработчикам не нужно предпринимать никаких действий, если вы скачивали Node.js с официального сайта или используете его из проверенных источников.

https://nodejs.org/en/blog/vulnerability/march-2025-ci-incident

✍️ @nodejs_lib
👍3
😎 Хотите стать Fullstack-разработчиком и развиваться в IT?

У вас есть шанс освоить профессию с нуля и работать с современными технологиями!

💻На курсе «Fullstack Developer» вы научитесь создавать фронтенд и бэкенд приложений, работать с React, TypeScript, Node.js, PostgreSQL и многим другим. Мы обучаем с нуля, шаг за шагом — от верстки до серверной части.

💪 В результате обучения у вас будут 3 проекта в портфолио, которые можно использовать на собеседованиях, а также актуальные знания, которые соответствуют требованиям современного рынка. Все уроки проводятся опытными практиками, а диплом OTUS ценится среди крупнейших IT-компаний.

❗️Набор на курс закрывается, осталось всего несколько мест! Оставьте заявку и получите скидку на обучение по промокоду FULLSTACK_6 : https://vk.cc/cN4L9v

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
OpenJS_Node_js_Application_Developer_JSNAD_Certification_Guide.pdf
1.4 MB
📚 OpenJS Node.js Application Developer (JSNAD) Certification Guide (2024)

✍️ Автор: Liora Venith
📃 Страниц: 424

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

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

✍️ @nodejs_lib
👍61
Shell scripting with Node.js


Зачем читать эту книгу?
Эта книга посвящена написанию shell-скриптов с использованием Node.js. Вы узнаете:

Как работает Node.js:

- Его основы: архитектура, цикл событий (event loop) и т.д.
- Его API: как использовать глобальные переменные и модули.

Что такое пакеты npm (де-факто стандарт пакетов для JavaScript).

Как использовать npm (менеджер пакетов, входящий в состав Node.js) для:

- Установки и управления пакетами.
- Создания и публикации пакетов.

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

Как применить все вышеперечисленные знания для создания и развёртывания кроссплатформенных shell-скриптов.

https://exploringjs.com/nodejs-shell-scripting/

✍️ @nodejs_lib
👍7
Стилизация текста в консоли Node.js

В этом посте мы рассмотрим, как можно стилизовать текст, который мы выводим в консоль в Node.js.

Некоторые примеры используют Unix-оболочку, но большая часть кода должна также работать и в Windows.

https://2ality.com/2025/05/ansi-escape-sequences-nodejs.html

✍️ @nodejs_lib
👍2
💪 Хотите работать в финтехе? Освойте Solidity!

👉 Востребованное обучение для разработчиков с опытом программирования от года, которые хотят получить навыки написания кода и аудита безопасности, чтобы попасть в одну из самых перспективных и высокооплачиваемых сфер IT.

Освойте разработку децентрализованных приложений на профессиональном уровне всего за 5 месяцев на онлайн-курсе «Solidity Developer» от OTUS!

Забудьте о скучном обучении — здесь вас ждут настоящие челленджи и нестандартные практические решения. А еще крутые проекты для портфолио!

👉 Пройдите вступительные тест для оценки подходит ли вам курс: https://vk.cc/cNUy3H

🎁 Получите welcome скидку для успешное прохождение теста. Подробности уточняйте у менеджера.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Packt.Building.Microservices.with.Node.js.pdf
10.9 MB
Building Microservices with Node.js: Explore microservices applications and migrate from a monolith architecture to microservices
Автор: Daniel Kapexhiu (2024)

Автор пишет о том, как пошагово перейти от монолитной архитектуры к микросервисам с помощью Node.js. Он помогает глубоко понять архитектуру микросервисов и уверенно применять её в веб-приложениях.

Также автор подробно рассказывает, как создать простое приложение на Node.js и дополнить его популярными библиотеками. Он объясняет процессы конфигурации и развертывания приложений, а также раскрывает тонкости работы с RESTful API, аутентификацией, базами данных и кешированием.

✍️ @nodejs_lib
👍4