Многопоточность с использованием рабочих потоков в Node.js
Прелесть Node заключается в том, что, хотя основной цикл событий выполняется в одном потоке, некоторые трудоемкие задачи автоматически выгружаются в отдельный рабочий пул. К ним относятся DNS и файловая система (за исключением fs.FSWatcher()), а также криптографический и Zlib API, требующие большого количества операций ввода-вывода. Все они имеют синхронный вариант, который будет блокировать основной поток.
https://blog.appsignal.com/2023/07/05/multithreading-with-worker-threads-in-nodejs.html
✍️ @nodejs_lib
Прелесть Node заключается в том, что, хотя основной цикл событий выполняется в одном потоке, некоторые трудоемкие задачи автоматически выгружаются в отдельный рабочий пул. К ним относятся DNS и файловая система (за исключением fs.FSWatcher()), а также криптографический и Zlib API, требующие большого количества операций ввода-вывода. Все они имеют синхронный вариант, который будет блокировать основной поток.
https://blog.appsignal.com/2023/07/05/multithreading-with-worker-threads-in-nodejs.html
✍️ @nodejs_lib
👍3
Бекпорт на примере Node.js v22 и Windows 7
Что делать если надо запустить современный софт в устаревшем окружении? Рассказываем о процессе «портирования назад» последней версии Node.js на Windows7.
https://habr.com/ru/articles/822817/
✍️ @nodejs_lib
Что делать если надо запустить современный софт в устаревшем окружении? Рассказываем о процессе «портирования назад» последней версии Node.js на Windows7.
https://habr.com/ru/articles/822817/
✍️ @nodejs_lib
👍2
Создание ленты активности GitHub с помощью Node.js и Socket.io
В этой статье мы расскажем о том, как создать ленту активности непосредственно в вашем продукте с помощью Node.js и Socket.io.
Допустим, мы создаем B2B SaaS-приложение для разработчиков, и оно должно показывать ленту активности, происходящую в GitHub-репозитории их организации. Любые коммиты, добавленные в репозиторий, должны отображаться в приложении в режиме реального времени. Именно это мы и создадим в этом посте. Готовый проект можно найти на GitHub.
https://knock.app/blog/building-a-github-activity-feed-with-nodejs-and-socket-io
✍️ @nodejs_lib
В этой статье мы расскажем о том, как создать ленту активности непосредственно в вашем продукте с помощью Node.js и Socket.io.
Допустим, мы создаем B2B SaaS-приложение для разработчиков, и оно должно показывать ленту активности, происходящую в GitHub-репозитории их организации. Любые коммиты, добавленные в репозиторий, должны отображаться в приложении в режиме реального времени. Именно это мы и создадим в этом посте. Готовый проект можно найти на GitHub.
https://knock.app/blog/building-a-github-activity-feed-with-nodejs-and-socket-io
✍️ @nodejs_lib
Knock
Building a GitHub activity feed with Node.js and Socket.io | Knock
An in-depth guide that covers building a real-time activity feed using Node.js, Socket.io and GitHub webhooks.
👍1🗿1
Understanding Offset and Cursor-Based Pagination in Node.js
Pagination means dividing a big chunk of data into smaller pages. It unlocks performance benefits for the backend, while also improving UX by sending manageable pieces of data to a client.
In this article, we'll explore offset-based and cursor-based server-side pagination approaches, compare them, and implement cursor-based pagination in Node.js.
https://blog.appsignal.com/2024/05/15/understanding-offset-and-cursor-based-pagination-in-nodejs.html
✍️ @nodejs_lib
Pagination means dividing a big chunk of data into smaller pages. It unlocks performance benefits for the backend, while also improving UX by sending manageable pieces of data to a client.
In this article, we'll explore offset-based and cursor-based server-side pagination approaches, compare them, and implement cursor-based pagination in Node.js.
https://blog.appsignal.com/2024/05/15/understanding-offset-and-cursor-based-pagination-in-nodejs.html
✍️ @nodejs_lib
👍2
Hot Hook
Hot Hook is a simple and lightweight library for adding hot module replacement in NodeJS with ESM.
You know how in frameworks like React or VueJS, you edit a file and the page updates automatically without needing to refresh? Well, it's the same concept but for NodeJS.
Take an Express server, for example. The most common development process involves watching the entire project with tools like nodemon and restarting the whole server whenever a file changes. With Hot Hook, you no longer need to restart the entire server; you can make it so only the changed module/file is reloaded. This provides a much faster DX and feedback loop.
The library is designed to be very light and simple. It doesn't perform any dark magic, no AST parsing, no code transformation, no bundling. It just reloads the changed module.
https://github.com/julien-R44/hot-hook
✍️ @nodejs_lib
Hot Hook is a simple and lightweight library for adding hot module replacement in NodeJS with ESM.
You know how in frameworks like React or VueJS, you edit a file and the page updates automatically without needing to refresh? Well, it's the same concept but for NodeJS.
Take an Express server, for example. The most common development process involves watching the entire project with tools like nodemon and restarting the whole server whenever a file changes. With Hot Hook, you no longer need to restart the entire server; you can make it so only the changed module/file is reloaded. This provides a much faster DX and feedback loop.
The library is designed to be very light and simple. It doesn't perform any dark magic, no AST parsing, no code transformation, no bundling. It just reloads the changed module.
https://github.com/julien-R44/hot-hook
✍️ @nodejs_lib
GitHub
GitHub - Julien-R44/hot-hook: 🪝 Simple HMR for NodeJS + ESM
🪝 Simple HMR for NodeJS + ESM. Contribute to Julien-R44/hot-hook development by creating an account on GitHub.
👍2
How to handle multiple API requests in your NodeJS Application
Unlike hackathons, when you’re building a NodeJS API that’s going to be used in the real world, you want to make sure that it’s capable of handling concurrency issues. Even though NodeJS is asynchronous by default, it has its limitations while handling multiple requests which require CPU-intensive tasks. By CPU intensive, I mean performing cryptographic operations, processing image/video/audio files, parsing large amounts of data such as XML/JSON/YAML, Mathematical Computations, Data Compressions, Machine Learning models, etc.
https://medium.com/@abhinavcv007/how-to-handle-multiple-api-requests-in-your-nodejs-application-cfa298e11b28
✍️ @nodejs_lib
Unlike hackathons, when you’re building a NodeJS API that’s going to be used in the real world, you want to make sure that it’s capable of handling concurrency issues. Even though NodeJS is asynchronous by default, it has its limitations while handling multiple requests which require CPU-intensive tasks. By CPU intensive, I mean performing cryptographic operations, processing image/video/audio files, parsing large amounts of data such as XML/JSON/YAML, Mathematical Computations, Data Compressions, Machine Learning models, etc.
https://medium.com/@abhinavcv007/how-to-handle-multiple-api-requests-in-your-nodejs-application-cfa298e11b28
✍️ @nodejs_lib
👍2
Node.js Test Runner: A Beginner's Guide
Historically, Node.js lacked an integrated test runner, which forced developers to rely on third-party frameworks such as Jest or Mocha.
This changed when James M. Snell proposed on GitHub that a test runner should be included within Node.js. The proposal developed over time and was eventually merged into the core of Node.js.
As a result, Node version 18 or higher includes a built-in test runner, which removes the need for external testing dependencies.
In this article, you will explore the features of the new test runner along with some examples.
https://betterstack.com/community/guides/testing/nodejs-test-runner/
✍️ @nodejs_lib
Historically, Node.js lacked an integrated test runner, which forced developers to rely on third-party frameworks such as Jest or Mocha.
This changed when James M. Snell proposed on GitHub that a test runner should be included within Node.js. The proposal developed over time and was eventually merged into the core of Node.js.
As a result, Node version 18 or higher includes a built-in test runner, which removes the need for external testing dependencies.
In this article, you will explore the features of the new test runner along with some examples.
https://betterstack.com/community/guides/testing/nodejs-test-runner/
✍️ @nodejs_lib
👍1
Using Node.js's test runner
Node.js has a flexible and robust built-in test runner. This guide will show you how to set up and use it.
https://nodejs.org/en/learn/test-runner/using-test-runner
✍️ @nodejs_lib
Node.js has a flexible and robust built-in test runner. This guide will show you how to set up and use it.
https://nodejs.org/en/learn/test-runner/using-test-runner
✍️ @nodejs_lib
👍2❤1
Capturing Garbage Collection Traces in NodeJS Applications
https://coderoasis.com/capturing-nodejs-garbage-collection-traces/
✍️ @nodejs_lib
https://coderoasis.com/capturing-nodejs-garbage-collection-traces/
✍️ @nodejs_lib
👍2
⚛️Росатом приглашает на должность Backend разработчик NodeJS в «Атомкор» — проект по созданию современного HR-пространства для крупных компаний.
Стек технологий: TypeScript, Node.js, MoleculerJS, PostgreSQL.
Требования: опыт в веб-разработке от 4-х лет и более; опыт на стеке Node от 3 лет; хорошее знание JavaScript и его особенностей; умение писать чистый и понятный код; опыт написания Unit-тестов; опыт командной разработки.
Мы предлагаем: полную удалёнку (технику выдаём); конкурентную ЗП + премии, оформление по ТК с удобным графиком, карьерный рост, ДМС со стоматологией, собственную платформу для обучения, конференции и тренинги.
👉Узнать подробнее и откликнуться можно по ссылке.
Стек технологий: TypeScript, Node.js, MoleculerJS, PostgreSQL.
Требования: опыт в веб-разработке от 4-х лет и более; опыт на стеке Node от 3 лет; хорошее знание JavaScript и его особенностей; умение писать чистый и понятный код; опыт написания Unit-тестов; опыт командной разработки.
Мы предлагаем: полную удалёнку (технику выдаём); конкурентную ЗП + премии, оформление по ТК с удобным графиком, карьерный рост, ДМС со стоматологией, собственную платформу для обучения, конференции и тренинги.
👉Узнать подробнее и откликнуться можно по ссылке.
hh.ru
Вакансия Backend разработчик NodeJS в Москве, работа в компании Гринатом. Центр Разработки. (вакансия в архиве c 13 июля 2024)
Зарплата: не указана. Москва. Требуемый опыт: 3–6 лет. Полная занятость. Дата публикации: 13.06.2024.
❤3😁3👍2
David_Herron_Node_js_Web_Development_Server_side_web_development.pdf
7.1 MB
Node.js Web Development
Автор: David Herron (2020)
Node. js - это лидирующая платформа для серверной веб-разработки, позволяющая разработчикам использовать одни и те же инструменты и парадигмы как для серверного, так и для клиентского программного обеспечения. Это обновленное пятое издание фокусируется на новых возможностях Node.js 14, Express 4.x и ECMAScript, знакомит с современными концепциями, методами и передовыми практиками использования Node.js.
Во время чтения книги вы:
✔️Установите и начнете использовать Node.js 14 и Express 4.17 как для веб-разработки, так и деплоя;
✔️Разберетесь, как реализуются веб-сервисы с помощью фреймворка Restify;
✔️Разработаете и протестируете микросервисы с помощью Docker, Docker Swarm и Node.js на AWS EC2 с помощью Terraform;
✔️Освоите инструменты для работы с данными, такие как MySQL, SQLite3 и MongoDB.
✍️ @nodejs_lib
Автор: David Herron (2020)
Node. js - это лидирующая платформа для серверной веб-разработки, позволяющая разработчикам использовать одни и те же инструменты и парадигмы как для серверного, так и для клиентского программного обеспечения. Это обновленное пятое издание фокусируется на новых возможностях Node.js 14, Express 4.x и ECMAScript, знакомит с современными концепциями, методами и передовыми практиками использования Node.js.
Во время чтения книги вы:
✔️Установите и начнете использовать Node.js 14 и Express 4.17 как для веб-разработки, так и деплоя;
✔️Разберетесь, как реализуются веб-сервисы с помощью фреймворка Restify;
✔️Разработаете и протестируете микросервисы с помощью Docker, Docker Swarm и Node.js на AWS EC2 с помощью Terraform;
✔️Освоите инструменты для работы с данными, такие как MySQL, SQLite3 и MongoDB.
✍️ @nodejs_lib
👍3
Создание простейшего back-end на Node.js с использованием PostgreSQL
Сегодня мы продемонстрируем как создавать back-end приложения на Node.js c PostqreSQL. В качестве примера создадим простейший back-end на Node.js с использованием PostgreSQL.
Почему именно Node.js и PostgreSQL? Node.js имеет хорошую скорость и асинхронность, а PostgreSQL, в свою очередь, является мощной и надежной СУБД.
Вместе они создают идеальный тандем для создания качественных приложений.
https://habr.com/ru/companies/otus/articles/828684/
✍️ @nodejs_lib
Сегодня мы продемонстрируем как создавать back-end приложения на Node.js c PostqreSQL. В качестве примера создадим простейший back-end на Node.js с использованием PostgreSQL.
Почему именно Node.js и PostgreSQL? Node.js имеет хорошую скорость и асинхронность, а PostgreSQL, в свою очередь, является мощной и надежной СУБД.
Вместе они создают идеальный тандем для создания качественных приложений.
https://habr.com/ru/companies/otus/articles/828684/
✍️ @nodejs_lib
👍2
How to Create WebVTT Files for Videos in Node.js
https://www.assemblyai.com/blog/vtt-video-nodejs/
✍️ @nodejs_lib
https://www.assemblyai.com/blog/vtt-video-nodejs/
✍️ @nodejs_lib
👍2
Профилирование приложений на Node.js
Представьте, что ваше приложение работает гладко, но внезапно вы замечаете высокий уровень загрузки, с использованием процессора на 95% или даже 100%. Это часто указывает на наличие задач, зависящих от ЦП, в вашем приложении на Node.js.
Задачи, зависящие от ЦП, требуют значительной вычислительной мощности и не могут быть легко перенаправлены на другие ресурсы, такие как операции ввода-вывода. К таким задачам относятся интенсивные вычисления, обработка изображений/видео, криптографические операции и выводы машинного обучения.
Чтобы найти проблемный код и исправить высокую загрузку процессора, вам потребуется провести профилирование вашего приложения. В этом руководстве мы рассмотрим некоторые инструменты и техники для профилирования приложений на Node.js.
Давайте начнем!
https://betterstack.com/community/guides/scaling-nodejs/profiling-nodejs-applications/
✍️ @nodejs_lib
Представьте, что ваше приложение работает гладко, но внезапно вы замечаете высокий уровень загрузки, с использованием процессора на 95% или даже 100%. Это часто указывает на наличие задач, зависящих от ЦП, в вашем приложении на Node.js.
Задачи, зависящие от ЦП, требуют значительной вычислительной мощности и не могут быть легко перенаправлены на другие ресурсы, такие как операции ввода-вывода. К таким задачам относятся интенсивные вычисления, обработка изображений/видео, криптографические операции и выводы машинного обучения.
Чтобы найти проблемный код и исправить высокую загрузку процессора, вам потребуется провести профилирование вашего приложения. В этом руководстве мы рассмотрим некоторые инструменты и техники для профилирования приложений на Node.js.
Давайте начнем!
https://betterstack.com/community/guides/scaling-nodejs/profiling-nodejs-applications/
✍️ @nodejs_lib
👍4
Как выполнять проверку данных в Node.js
Валидация данных является ключевой для предотвращения неожиданных сбоев, ошибок и повышения безопасности. Она может быть выполнена как на веб-странице, где вводятся данные, так и на сервере, где эти данные обрабатываются.
В этой статье мы рассмотрим валидацию данных в серверной части на Node.js. Затем вы узнаете, как реализовать её в Express с использованием библиотеки express-validator.
Приготовьтесь стать экспертом по валидации данных в Node.js!
https://blog.appsignal.com/2024/06/19/how-to-perform-data-validation-in-nodejs.html
✍️ @nodejs_lib
Валидация данных является ключевой для предотвращения неожиданных сбоев, ошибок и повышения безопасности. Она может быть выполнена как на веб-странице, где вводятся данные, так и на сервере, где эти данные обрабатываются.
В этой статье мы рассмотрим валидацию данных в серверной части на Node.js. Затем вы узнаете, как реализовать её в Express с использованием библиотеки express-validator.
Приготовьтесь стать экспертом по валидации данных в Node.js!
https://blog.appsignal.com/2024/06/19/how-to-perform-data-validation-in-nodejs.html
✍️ @nodejs_lib
👍3
Руководство по чтению и записи потоков в Node.js
Работа с большими наборами данных в приложениях Node.js может быть палкой о двух концах. Способность обрабатывать огромные объемы данных очень полезна, но также может привести к узким местам в производительности и исчерпанию памяти. Традиционно разработчики решали эту задачу, загружая весь набор данных в память целиком. Этот подход, хоть и интуитивен для небольших наборов данных, становится неэффективным и ресурсоемким для больших файлов.
https://blog.platformatic.dev/a-guide-to-reading-and-writing-nodejs-streams
✍️ @nodejs_lib
Работа с большими наборами данных в приложениях Node.js может быть палкой о двух концах. Способность обрабатывать огромные объемы данных очень полезна, но также может привести к узким местам в производительности и исчерпанию памяти. Традиционно разработчики решали эту задачу, загружая весь набор данных в память целиком. Этот подход, хоть и интуитивен для небольших наборов данных, становится неэффективным и ресурсоемким для больших файлов.
https://blog.platformatic.dev/a-guide-to-reading-and-writing-nodejs-streams
✍️ @nodejs_lib
👍5🔥1
Создание полнофункционального приложения с использованием Kafka и Node.js
Известный спор: табы или пробелы? Конечно, мы могли бы создать Google-форму для сбора данных, но в чем тогда будет интерес? Давайте разрешим этот спор в стиле Kafka. Мы используем новый клиент confluent-kafka-javascript для создания приложения, которое отправляет текущее состояние голосов в топик Kafka и потребляет данные из этого же топика для отображения их на JavaScript-фронтенде.
https://www.confluent.io/blog/building-full-stack-app-with-kafka-and-nodejs/
✍️ @nodejs_lib
Известный спор: табы или пробелы? Конечно, мы могли бы создать Google-форму для сбора данных, но в чем тогда будет интерес? Давайте разрешим этот спор в стиле Kafka. Мы используем новый клиент confluent-kafka-javascript для создания приложения, которое отправляет текущее состояние голосов в топик Kafka и потребляет данные из этого же топика для отображения их на JavaScript-фронтенде.
https://www.confluent.io/blog/building-full-stack-app-with-kafka-and-nodejs/
✍️ @nodejs_lib
👍5
Mario_Casciaro,_Luciano_Mammino_Node_js_Design_Patterns_Design_and.pdf
8.1 MB
Node.js Design Patterns
Авторы: Mario Casciaro, Luciano Mammino (2020)
Книга знакомит с передовыми практиками и шаблонами, которые помогут вам с легкостью создавать эффективные и надежные приложения с Node.js. Она предназначена для разработчиков программного обеспечения, которые имеют некоторые предварительные базовые знания о JavaScript и Node.js и теперь хотят получить максимальную отдачу от этих технологий с точки зрения производительности, качества дизайна и масштабируемости.
Во время чтения книги вы:
✔️Научитесь писать асинхронный код;
✔️Используете потоки Node.js для создания конвейеров асинхронной обработки, управляемых данными;
✔️Научитесь внедрять шаблоны проектирования программного обеспечения;
✔️Научитесь создавать и масштабировать микросервисы и распределенные системы на базе Node.js;
✔️Используете Node.js вместе с другими мощными технологиями, такими как Redis, RabbitMQ, ZeroMQ и LevelDB.
✍️ @nodejs_lib
Авторы: Mario Casciaro, Luciano Mammino (2020)
Книга знакомит с передовыми практиками и шаблонами, которые помогут вам с легкостью создавать эффективные и надежные приложения с Node.js. Она предназначена для разработчиков программного обеспечения, которые имеют некоторые предварительные базовые знания о JavaScript и Node.js и теперь хотят получить максимальную отдачу от этих технологий с точки зрения производительности, качества дизайна и масштабируемости.
Во время чтения книги вы:
✔️Научитесь писать асинхронный код;
✔️Используете потоки Node.js для создания конвейеров асинхронной обработки, управляемых данными;
✔️Научитесь внедрять шаблоны проектирования программного обеспечения;
✔️Научитесь создавать и масштабировать микросервисы и распределенные системы на базе Node.js;
✔️Используете Node.js вместе с другими мощными технологиями, такими как Redis, RabbitMQ, ZeroMQ и LevelDB.
✍️ @nodejs_lib
👍11🔥1
Понимание AbortController в Node.js
В Node.js отмена асинхронных операций, таких как сетевые запросы и чтение файловой системы, всегда была непростой задачей. Отсутствие стандартизированного механизма прерывания приводило к множеству проблем, включая условия гонки, когда логика отмены и завершение операции могли непредсказуемо взаимодействовать. Кроме того, утечки памяти из-за несобранных ресурсов, связанных с неотмененными операциями, сложные сценарии обработки ошибок и неэффективное использование системных и сетевых ресурсов еще больше усложняли ситуацию.
https://betterstack.com/community/guides/scaling-nodejs/understanding-abortcontroller/
✍️ @nodejs_lib
В Node.js отмена асинхронных операций, таких как сетевые запросы и чтение файловой системы, всегда была непростой задачей. Отсутствие стандартизированного механизма прерывания приводило к множеству проблем, включая условия гонки, когда логика отмены и завершение операции могли непредсказуемо взаимодействовать. Кроме того, утечки памяти из-за несобранных ресурсов, связанных с неотмененными операциями, сложные сценарии обработки ошибок и неэффективное использование системных и сетевых ресурсов еще больше усложняли ситуацию.
https://betterstack.com/community/guides/scaling-nodejs/understanding-abortcontroller/
✍️ @nodejs_lib
👍7✍1