Thread Pool в Node.js 🙂
Node.js у нас вроде как “однопоточный”, да? Но это не значит, что у него под капотом нет магии. Помимо Event Loop, в деле ещё участвует thread pool — набор рабочих потоков, которыми управляет библиотека libuv
🐧 Сколько потоков?
По умолчанию их 4. Но если хочется больше — можно поднять значение переменной окружения UV_THREADPOOL_SIZE (максимум до 1024)
😳 Зачем он нужен?
Thread pool берёт на себя тяжёлые и блокирующие задачи, чтобы не нагружать Event Loop. Туда скидываются:
1) операции с файловой системой (fs)
2) криптография (hash, pbkdf2 и т.п.)
3) DNS-резолвы
4) компрессия/декомпрессия
И пока отдельный поток уничтожает задачки — твой основной поток (event loop) спокойно крутит коллбеки и промисы
⌨️ Можно ли к тред пулу обратиться самому?
Напрямую нет, но можешь использовать нативные API (fs, crypto и т.д.), которые уже завязаны на thread pool. А вот если подключаешь native addon (N-API или Nan), то да, там можно регистрировать асинхронные задачки через uv_queue_work. И тогда твой C++ код действительно будет выполняться в thread pool
Кста не путать тред пул и worker_threads — это совсем другой инструмент
В итоге: Node.js сам решает, что кидать в thread pool, но знать о инсутрменте полезно, чтобы понимать почему работа с криптографией не блокирует наш основной поток эвент лупа
🚀 Пост Guru Node.js: @DemetraIT
Node.js у нас вроде как “однопоточный”, да? Но это не значит, что у него под капотом нет магии. Помимо Event Loop, в деле ещё участвует thread pool — набор рабочих потоков, которыми управляет библиотека libuv
По умолчанию их 4. Но если хочется больше — можно поднять значение переменной окружения UV_THREADPOOL_SIZE (максимум до 1024)
Thread pool берёт на себя тяжёлые и блокирующие задачи, чтобы не нагружать Event Loop. Туда скидываются:
1) операции с файловой системой (fs)
2) криптография (hash, pbkdf2 и т.п.)
3) DNS-резолвы
4) компрессия/декомпрессия
И пока отдельный поток уничтожает задачки — твой основной поток (event loop) спокойно крутит коллбеки и промисы
Напрямую нет, но можешь использовать нативные API (fs, crypto и т.д.), которые уже завязаны на thread pool. А вот если подключаешь native addon (N-API или Nan), то да, там можно регистрировать асинхронные задачки через uv_queue_work. И тогда твой C++ код действительно будет выполняться в thread pool
Кста не путать тред пул и worker_threads — это совсем другой инструмент
В итоге: Node.js сам решает, что кидать в thread pool, но знать о инсутрменте полезно, чтобы понимать почему работа с криптографией не блокирует наш основной поток эвент лупа
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1👏1
#Собес #docker
🤔 Можно ли потерять данные, если контейнер существует?
💬 Кратко:
Пока контейнер существует, данные не теряются. Потеря данных может произойти только при удалении контейнера, если данные не были сохранены в постоянном хранилище.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
💬 Кратко:
Пока контейнер существует, данные не теряются. Потеря данных может произойти только при удалении контейнера, если данные не были сохранены в постоянном хранилище.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
YeaHub
YeaHub — тренажер собеседований по IT
5000+ вопросов для подготовки к интервью. Фильтры, квизы, статистика!
❤1
#полезное
📞 Совет по HTML
Примеры использования элементов thead, tbody и tfoot в HTML
👉 Новости 👉 База вопросов
Примеры использования элементов thead, tbody и tfoot в HTML
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2⚡1
#Собес #docker
🤔 Как удалить все остановленные контейнеры и неиспользуемые сети в Docker?
💬 Кратко:
Для удаления всех остановленных контейнеров и неиспользуемых сетей используется команда
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
💬 Кратко:
Для удаления всех остановленных контейнеров и неиспользуемых сетей используется команда
docker system prune . Она также удаляет неиспользуемые образы и кэш.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#статьи
🤓 Способ стабильного создания больших приложений с помощью ИИ
Покажу, как собрать «большое» приложение из независимых модулей (~200 строк) с помощью ИИ: стабильные промпты, чат вместо агентов, бэкенд в Yandex Cloud. Плюсы и грабли.
Читать
👉 Новости 👉 База вопросов
Покажу, как собрать «большое» приложение из независимых модулей (~200 строк) с помощью ИИ: стабильные промпты, чат вместо агентов, бэкенд в Yandex Cloud. Плюсы и грабли.
Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Способ стабильного создания больших приложений с помощью ИИ
В этой статье я детально опишу свой опыт создания «большого» приложения с помощью ИИ. «Большое» оно по меркам, тех приложений, который показывают на презентация AI‑моделей. Уверен, ваше...
❤1
#статьи
🥄 Решаем задачу: как сохранить нервные клетки пользователей с помощью валидации поля ввода
В этом году я много путешествовал, поэтому нередко заполнял формы с анкетами на разные визы — в них бывало по 30—40 полей. Когда что-то шло не так, часто сайты не давали никакой обратной связи. Иногда они сбрасывали всё, что я заполнял в течение часа, если одно из полей невалидно.
Решить проблему могла бы валидация. Это критически важная часть разработки веб-приложений, которая соотносит данные с необходимым форматом и указывает на ошибки. Также она гарантирует безопасность дальнейшей обработки этих данных.
В этой статье мы разберёмся, как настроить валидацию поля ввода.
Читать статью
👉 Новости 👉 База вопросов
В этом году я много путешествовал, поэтому нередко заполнял формы с анкетами на разные визы — в них бывало по 30—40 полей. Когда что-то шло не так, часто сайты не давали никакой обратной связи. Иногда они сбрасывали всё, что я заполнял в течение часа, если одно из полей невалидно.
Решить проблему могла бы валидация. Это критически важная часть разработки веб-приложений, которая соотносит данные с необходимым форматом и указывает на ошибки. Также она гарантирует безопасность дальнейшей обработки этих данных.
В этой статье мы разберёмся, как настроить валидацию поля ввода.
Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
🛞 Вызов функции через
👉 Новости 👉 База вопросов
evaleval вызывает функцию по её имени, заданному в functionName, и передаёт ей аргумент argument. В данном случае вызывается функция greet с аргументом "Alice".Please open Telegram to view this post
VIEW IN TELEGRAM
Guru Node.js at YeaHub | Деметра
Всем привет!
Я — Дима, Senior Backend разработчик на Node.js и ментор
В IT больше 6 лет: шикарно перекладываю json’ы в микросервисах. Поднял стартап с нуля до продакшена под высокой нагрузкой. Сейчас работаю в крупной компании и активно участвую в найме (провожу собеседования)
Менторю по Node.js — помогаю прокачаться, разложить backend по полочкам и выйти на работу мечты. Особенно люблю фронтов, которые решили перебраться на тёмную сторону
А ещё я Guru Node.js в YeaHub — слежу за качеством контента и всей экосистемой
А ещё подписывайтесь на другие каналы Экосистемы YeaHub
Проект YeaHub:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥3❤2
#Собес #docker
🤔 Как удалить Docker-контейнер?
💬 Кратко:
Чтобы удалить Docker-контейнер, используйте команду
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
💬 Кратко:
Чтобы удалить Docker-контейнер, используйте команду
docker rm c указанием ID или имени контейнера. Пример: docker rm mycontainer удаляет контейнер с именем mycontainer .📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
#полезное
😊 Самая масштабная атака на экосистему JavaScript
Фишингом угнали npm-аккаунт мейнтейнера qix и пушнули апдейты в 18 ключевых пакетов (chalk, debug, strip-ansi, color-convert и др.) — суммарно это ~2,6 млрд загрузок в неделю.
В обновления вставили браузерный крипто-«клиппер»: на сайтах/в приложениях с уязвимыми версиями он перехватывает трафик и подменяет адреса кошельков.
Скомпрометированные версии — удалить немедленно из всех сред (локальные машины разработчиков, CI/CD, прод):
Что стоит сделать:
🟠 Удалить уязвимые версии из дерева зависимостей, пересобрать и задеплоить исправления.
🟠 Проверить lock-файлы (package-lock.json, yarn.lock, pnpm-lock.yaml) и node_modules на присутствие перечисленных версий.
🟠 Очистить кэш менеджера пакетов: npm cache clean --force, yarn cache clean, pnpm store prune.
🟠 Переустановить зависимости с нуля (удалив node_modules и lock-файлы) и заново зафиксировать версии.
🟠 Пересобрать фронтенд-бандлы, инвалидировать CDN/кэши, перезапустить рантаймы.
🟠 Проверить логи на внешние запросы из бандла, провести аудит внесённых PR/коммитов.
🟠 Ротировать ключи/токены, если могли утечь, и ужесточить 2FA/доступ к npm.
Разбор атаки
👉 Новости 👉 База вопросов
Фишингом угнали npm-аккаунт мейнтейнера qix и пушнули апдейты в 18 ключевых пакетов (chalk, debug, strip-ansi, color-convert и др.) — суммарно это ~2,6 млрд загрузок в неделю.
В обновления вставили браузерный крипто-«клиппер»: на сайтах/в приложениях с уязвимыми версиями он перехватывает трафик и подменяет адреса кошельков.
Скомпрометированные версии — удалить немедленно из всех сред (локальные машины разработчиков, CI/CD, прод):
ansi-styles@6.2.2
debug@4.4.2
chalk@5.6.1
supports-color@10.2.1
strip-ansi@7.1.1
ansi-regex@6.2.1
wrap-ansi@9.0.1
color-convert@3.1.1
color-name@2.0.1
is-arrayish@0.3.3
slice-ansi@7.1.1
color@5.0.1
color-string@2.1.1
simple-swizzle@0.2.3
supports-hyperlinks@4.1.1
has-ansi@6.0.1
chalk-template@1.1.1
backslash@0.2.1
error-ex@1.3.3
Что стоит сделать:
Разбор атаки
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1🤯1
Nest.js обмазан синтаксическим сахаром: пишешь @Controller, @Get — и всё работает. Но под капотом у каждого запроса есть целая цепочка этапов. Давай разберёмся, кто первый встречает твой запрос, а кто последний
Вопрос частый на собесах, рекомендую внимательно прочитать
Самый первый уровень. Тут можно переписать req, добавить хедеры, логировать. По сути — «до Nest-а». Работают так же, как в Express/Fastify
Самые первые на пути. Проверяют, можно ли вообще пропустить запрос дальше (авторизация, роли, доступ). Если guard сказал «нет» — дальше никто не работает.
Может подменить данные запроса или добавить что-то в контекст. Часто используют для логирования или кэширования.
Проверяют и трансформируют входные данные (валидаторы, касты типов). Например, ParseIntPipe превратит строку id в число. Если данные грязные — кидают ошибку и обрубают цикл.
Тут твой метод с бизнес-логикой
🪢 Interceptor (после вызова)
Может преобразовать ответ перед тем, как он уйдёт клиенту (например, обернуть результат в единую структуру ответа) — удобно для фронтов
Если где-то в цепочке бахнуло исключение — фильтр красиво его поймает и вернёт красивый ответ вместо 500-ки. Тоже удобно для фронтов, чтобы можно было вывести ошибку
⸻
⚡ Итоговый маршрут:
Middleware → Guard → Interceptor (до) → Pipe → Controller → Interceptor (после) → Exception Filter
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🏆3🔥2
#Собес #git
🤔 Что делает Git-клон?
💬 Кратко:
Команда
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
💬 Кратко:
Команда
git clone создаёт копию существующего репозитория, включая всю историю изменений, файлы и ветки. Это используется, чтобы начать работу с проектом, который уже находится в удалённом репозитории.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#статьи
👋 Что такое react-afc
react-afc - библиотека для более простого (чем в простом react) уменьшения количества ненужных ререндеров дочерних компонентов.
Читать статью
👉 Новости 👉 База вопросов
react-afc - библиотека для более простого (чем в простом react) уменьшения количества ненужных ререндеров дочерних компонентов.
Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
Техническое собеседование. ЗП: от 220к. Август 2025. Опыт: 4 года. Средний собес, спрашивали по опыту (про достижения из резюме), были блоки по Node.js, ts, бд и микросервсам
Вопросы:
- Виды тестов и их различия
- Какие бывают транспорты между микросервисами (синхронный подход (REST, gRPC) и асинхронный (kafka, rabbitMQ, NATS))
- Плюсы и минусы микросервисов
- Блокирующие и неблокирующие операции в Node.js
Все вопросы можно посмотреть на нашей платформе
#собес #коллекции
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2❤1
#Собес #git
🤔 Что такое репозиторий Git и как вы его инициализируете?
💬 Кратко:
Репозиторий Git - это хранилище, где отслеживаются все изменения вашего проекта, включая файлы, их историю и ветки. Чтобы инициализировать репозиторий, используйте команду
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
💬 Кратко:
Репозиторий Git - это хранилище, где отслеживаются все изменения вашего проекта, включая файлы, их историю и ветки. Чтобы инициализировать репозиторий, используйте команду
git init , которая создаёт скрытую папку .git , где Git сохраняет свои данные.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
😘 Solid
Эффект анимации при наведении мыши на текст.
https://codepen.io/Sidstumple/pen/RwGJOow
👉 Новости 👉 База вопросов
Эффект анимации при наведении мыши на текст.
https://codepen.io/Sidstumple/pen/RwGJOow
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
❤️🔥 Segmented Progress Bar With Tip
Реализовано на React и стилизовано в SCSS.
CodePen
👉 Новости 👉 База вопросов
Реализовано на React и стилизовано в SCSS.
CodePen
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
😐 Огромная библиотека анимаций для React
В ней собрано больше 100 готовых анимированных компонентов: кнопки, карточки, меню, модалки, курсоры и даже списки с плавными эффектами. Всё выглядит стильно, легко настраивается через пропсы, а примеры можно сразу протестировать в браузере.
Коллекция постоянно пополняется новыми элементами, а самое приятное — всё это распространяется бесплатно.
Отличный инструмент для тех, кто делает интерфейсы на React.
Гитхаб
👉 Новости 👉 База вопросов
В ней собрано больше 100 готовых анимированных компонентов: кнопки, карточки, меню, модалки, курсоры и даже списки с плавными эффектами. Всё выглядит стильно, легко настраивается через пропсы, а примеры можно сразу протестировать в браузере.
Коллекция постоянно пополняется новыми элементами, а самое приятное — всё это распространяется бесплатно.
Отличный инструмент для тех, кто делает интерфейсы на React.
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1