Найти в Дзене
Workers в Node.js
В Node.js так же как и в JavaScript поддерживаются Web Workers, хотя они называются просто Workers и реализованы через модуль worker_threads. В отличие от браузерных Web Workers, которые работают с пользовательскими интерфейсами, Node.js Workers предназначены для выполнения задач в фоновом режиме без блокировки основного потока. Это позволяет эффективно распределять нагрузку между несколькими потоками в рамках одного процесса...
7 месяцев назад
Основы работы Node.js
В Node.js архитектура также использует однопоточную модель, основанную на Event Loop, но с рядом особенностей, которые делают его подход к асинхронному программированию более мощным и эффективным для серверных приложений. Давайте разберемся, как работает Event Loop в Node.js, и как он обрабатывает асинхронные задачи. Когда вы запускаете сервер на Node.js, он проходит через несколько фаз обработки событий. Вот основные фазы Event Loop:...
7 месяцев назад
Зачем использовать Web Workers если можно использовать setTimeout или Promises
Использование Web Workers предоставляет несколько преимуществ, которые не могут быть достигнуты с помощью setTimeout или Promises. Давайте разберемся, в каких случаях Web Workers предпочтительнее и почему их стоит использовать. Предположим, у нас есть задача, требующая выполнения больших вычислений: Web Workers предоставляют возможность выполнять...
7 месяцев назад
Как работают Web Workers
Web Workers используют отдельные потоки в том же процессе, что позволяет выполнять JavaScript-код параллельно с основным потоком. Вот несколько ключевых моментов, чтобы лучше понять, как это работает: В примере, который мы рассмотрели ранее, два Web Workers выполняют долгие вычисления. Каждый worker работает в своем потоке, позволяя основному потоку оставаться отзывчивым. Вот как это выглядит на более высоком уровне: Web Workers предоставляют мощный механизм для выполнения параллельных задач в JavaScript,...
7 месяцев назад
Как работает Event Loop в JavaScript с использованием Web Workers
Давайте разберем, как работает Event Loop в JavaScript с использованием Web Workers для выполнения параллельных сессий. Это позволит показать, как JavaScript может обрабатывать асинхронные задачи в отдельных потоках, что особенно полезно для долгих операций. Предположим, у нас есть два Web Worker, которые выполняют долгую задачу (например, вычисление чисел). Основной поток будет использовать этих рабочих для выполнения задач...
7 месяцев назад
Как JavaScript Работает с Асинхронным Кодом: Промисы и Цикл Событий
JavaScript часто называют однопоточным языком программирования. Это означает, что код выполняется в одном потоке, и JavaScript не может одновременно выполнять несколько задач. Но как же тогда JavaScript работает с асинхронными операциями, такими как сетевые запросы, таймеры или операции ввода/вывода? Ответ кроется в его механизме Цикла событий (Event Loop). Когда мы говорим, что JavaScript однопоточный, мы имеем в виду, что он выполняет одну задачу за раз в основном потоке. Но для того чтобы эффективно...
7 месяцев назад
Процессы и потоки
Чем отличаются процессы от потоков? Процессы и потоки — это две основные концепции, используемые для управления выполнением программ, и они имеют различные характеристики и назначения: Представьте себе офис (процесс), в котором работают несколько сотрудников (потоки). Каждый сотрудник выполняет свою задачу, но все они используют одни и те же офисные ресурсы, такие как столы, компьютеры и документацию...
7 месяцев назад
Как правильно именовать ветки Git
При именовании временных веток в Git, важно следовать стандартам, которые делают ветки легко читаемыми, понятными и отражающими цель работы. Вот несколько рекомендаций по именованию временных веток: Для удобства различия веток можно использовать префиксы, которые указывают на назначение ветки: В названии ветки опишите, что именно реализуется или исправляется: Если у вас есть трекер задач (например, Jira, YouTrack, Trello), используйте идентификатор задачи в названии ветки. Это поможет легче связывать...
8 месяцев назад
Установка Собственного DNS-Сервера на Локальном ПК
DNS-сервер помогает преобразовывать доменные имена в IP-адреса, что особенно полезно при разработке и тестировании локальных приложений. Наличие собственного DNS-сервера позволяет настраивать резолвинг для доменов, создавая удобные условия для разработки и тестирования. 1. Установка dnsmasq: Описание: Устанавливает dnsmasq, легкий DNS-сервер и сервер DHCP. Он будет использоваться для создания локального DNS-сервера, который сможет обрабатывать запросы на заданные домены и возвращать нужные IP-адреса...
8 месяцев назад
Шаги для настройки semantic-release с GitLab CI
semantic-release можно легко интегрировать с GitLab CI/CD для автоматического управления версиями и выпусков. Инструмент будет анализировать ваши коммиты, определять тип изменений (мажорный, минорный или патч) и автоматически выпускать новую версию, создавая соответствующий тег в Git и обновляя changelog. В проекте, где используешь GitLab, необходимо сначала установить semantic-release как зависимость для проекта: Добавь в корневой каталог проекта файл .gitlab-ci.yml, в котором будет определён пайплайн для работы semantic-release...
8 месяцев назад
Как происходит процесс семантического версионирования (SemVer)
Процесс версионирования с использованием семантического версионирования (SemVer) предполагает использование определённого формата версий: MAJOR.MINOR.PATCH. Этот формат помогает разработчикам и пользователям быстро понять характер изменений и их влияние на совместимость. Пример: Если версия сервиса была 1.2.3, то: package.json (для Node.js проектов): Для сервисов на JavaScript/TypeScript версии обычно фиксируются в файле package...
8 месяцев назад
Несколько лучших практик, которые помогут управлять версионностью ПО
Чтобы отслеживать совместимость трёх сервисов, находящихся в разных репозиториях, можно применить несколько лучших практик, которые помогут управлять их взаимодействием и версионностью: Используй семантическое версионирование для каждого сервиса: Совместимость можно проверять по мажорной версии — если она одинаковая у всех сервисов, значит, они совместимы. Настрой CI/CD пайплайны для каждого сервиса с тестированием на совместимость: Используй контракты API для проверки изменений: Используй Git-теги...
8 месяцев назад