Media is too big
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
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
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
Открытый урок «Оптимизация работы компонентов в React.js».
Когда: 29 января в 20:00 мск.
На вебинаре вы узнаете:
- Как работать с оптимизацией в React.js
- Особенности работы функциональных компонентов и хуков
- Трюк с мемоизацией коллбеков для списка элементов
Встречаемся в преддверии старта курса «React.js Developer» Otus.
Все участники вебинара получат специальную цену на обучение!
Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cHW5E9
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Когда: 29 января в 20:00 мск.
На вебинаре вы узнаете:
- Как работать с оптимизацией в React.js
- Особенности работы функциональных компонентов и хуков
- Трюк с мемоизацией коллбеков для списка элементов
Встречаемся в преддверии старта курса «React.js Developer» Otus.
Все участники вебинара получат специальную цену на обучение!
Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cHW5E9
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Избегаем ложных срабатываний в тестах Node.js
В статье автор рассматривает распространенные ошибки, приводящие к ложным положительным результатам в тестах. Например, использование
Также обсуждается опасность чрезмерно общих утверждений, таких как
https://blog.appsignal.com/2024/11/20/avoiding-false-positives-in-nodejs-tests.html
✍️ @nodejs_lib
В статье автор рассматривает распространенные ошибки, приводящие к ложным положительным результатам в тестах. Например, использование
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
Новые хуки, улучшения рефов, кастомные элементы — 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 в браузере:
Для сохранения данных между перезагрузками в IndexedDB:
В средах Node.js/Bun/Deno можно указать путь к файлу для постоянного хранения данных:
PGlite подходит для быстрого тестирования и прототипирования, демонстрационных и учебных проектов, а также для "local-first" приложений, где данные хранятся локально и синхронизируются при подключении к внешней СУБД.
https://habr.com/ru/articles/873112/
✍️ @nodejs_lib
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 миллиард строк формата
Jacky начал с базового подхода, используя встроенные модули Node.js для построчного чтения файла и хранения агрегированных данных в структуре
Для оптимизации Jacky предложил несколько улучшений:
1. Сокращение вызовов
2. Более быстрые преобразования
3. Параллелизация обработки: распределение работы между несколькими потоками или процессами для ускорения обработки больших объемов данных.
https://jackyef.com/posts/1brc-nodejs-learnings
✍️ @nodejs_lib
<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
Вот отсортированная база с тонной материала (постепенно пополняется):
БАЗА (4687 видео/книг):
(363 видео, 87 книги) — Python
(415 видео, 68 книги) — Frontend
(143 видео, 33 книги) — ИБ/Хакинг
(352 видео, 89 книги) — С/С++
(343 видео, 87 книги) — Java
(176 видео, 32 книги) — Git
(293 видео, 63 книги) — C#
(174 видео, 91 книги) — DevOps
(167 видео, 53 книги) — PHP
(227 видео, 83 книги) — SQL/БД
(163 видео, 29 книги) — Linux
(114 видео, 77 книги) — Сисадмин
(107 видео, 43 книги) — BA/SA
(181 видео, 32 книги) — Go
(167 видео, 43 книги) — Kotlin/Swift
(112 видео, 24 книги) — Flutter
(137 видео, 93 книги) — DS/ML
(113 видео, 82 книги) — GameDev
(183 видео, 37 книги) — Дизайн
(129 видео, 73 книги) — QA
(213 видео, 63 книги) — Rust
(121 видео, 24 книги) — 1С
(136 видео, 33 книги) — PM/HR
Скачивать ничего не нужно — все выложили в Telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
Как выбрать подходящий образ контейнера для Node.js-приложения
Основные моменты:
- Какой базовый образ использовать?
-
-
-
- Как уменьшить размер образа?
- Использование
- Уменьшение количества слоёв в Dockerfile.
- Очистка временных файлов после установки зависимостей.
- Оптимизация производительности
- Включение
- Использование
- Кэширование
- Дополнительные аспекты
- Выбор образа с LTS-версией Node.js для стабильности.
- Изоляция зависимостей и минимизация уязвимостей.
- Использование многослойных образов (multi-stage builds) для уменьшения итогового размера.
Выбор правильного контейнерного образа может значительно повлиять на размер, производительность и безопасность вашего Node.js-приложения.
https://labs.iximiuz.com/tutorials/how-to-choose-nodejs-container-image
✍️ @nodejs_lib
Основные моменты:
- Какой базовый образ использовать?
-
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
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
В недавно опубликованном руководстве на 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
Создатель 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
🗓 Старт уже скоро! 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
🔍 Трассировка в Node.js: практическое руководство по анализу производительности приложений
Когда дело доходит до оптимизации приложений на Node.js, важно понимать, что происходит "под капотом". Именно здесь на помощь приходит трассировка. Она позволяет выявлять узкие места, следить за выполнением кода и улучшать общую производительность.
Node.js включает встроенные средства для трассировки —
- Анализа времени выполнения отдельных операций;
- Выявления блокирующих функций;
- Понимания взаимодействия между асинхронными событиями.
В статье от NodeSource пошагово показано, как:
- Включить трассировку через флаг
- Использовать Chrome DevTools для визуализации событий;
- Настроить пользовательские события через API
Также объясняется, как интегрировать трассировку с внешними инструментами (например, Jaeger или OpenTelemetry), чтобы получить распределённую трассировку в микросервисной архитектуре.
https://nodesource.com/blog/tracing-nodejs
✍️ @nodejs_lib
Когда дело доходит до оптимизации приложений на Node.js, важно понимать, что происходит "под капотом". Именно здесь на помощь приходит трассировка. Она позволяет выявлять узкие места, следить за выполнением кода и улучшать общую производительность.
Node.js включает встроенные средства для трассировки —
async_hooks
, trace_events
и инструменты профилирования. Их можно использовать для:- Анализа времени выполнения отдельных операций;
- Выявления блокирующих функций;
- Понимания взаимодействия между асинхронными событиями.
В статье от NodeSource пошагово показано, как:
- Включить трассировку через флаг
--trace-events-enabled
;- Использовать Chrome DevTools для визуализации событий;
- Настроить пользовательские события через API
trace_events
.Также объясняется, как интегрировать трассировку с внешними инструментами (например, Jaeger или OpenTelemetry), чтобы получить распределённую трассировку в микросервисной архитектуре.
https://nodesource.com/blog/tracing-nodejs
✍️ @nodejs_lib
👍7