Как стать автором
Обновить
20.08

Node.JS *

Среда для запуска JavaScript-приложений

Сначала показывать
Порог рейтинга
Уровень сложности

Состояние Node.js Performance в 2023 году

Время на прочтение25 мин
Количество просмотров7.5K

На дворе 2023 год, и мы выпустили Node.js v20. Это значительное достижение, и цель этой статьи — использовать научную оценку состояния производительности Node.js.

Все результаты бенчмарков содержат воспроизводимый пример и описание аппаратного обеспечения. Чтобы уменьшить количество шума для постоянных читателей, воспроизводимые шаги будут свернуты в начале всех разделов.

Цель этой статьи — предоставить сравнительный анализ различных версий Node.js. Она подчеркивает улучшения и недостатки, а также дает представление о причинах этих изменений, не проводя никаких сравнений с другими рантаймами JavaScript.

Читать далее
Всего голосов 12: ↑11 и ↓1+12
Комментарии0

Как сделать автодеплой UI kit на NPM с помощью gitlab CI/CD

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров3.5K

Как я сделал удобный автодеплой ui-kit на npm с помощью pipeline's gitlab.

Что удалось сделать?

Автоматическое обновление версии пакета при пуше изменений.

Автоматический деплой новой версии на npm.

Читать далее
Всего голосов 4: ↑3 и ↓1+7
Комментарии6

Создаём, подписываем и отправляем Ethereum транзакцию при помощи web3.js и Ganache

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров4.2K

В предыдущей статье я рассказал как установить окружение для ознакомления с библиотекой web3.js. Тогда мы использовали ethereum-блокчейн Ganache и библиотеку Truffle. В данной статье я покажу как формировать ethereum-транзакцию используя только библиотеку web3.js и Ganache, без использования библиотеки Truffle. Мы сформируем транзакцию вручную, выполним её подписание и отправим в блокчейн. Посмотрим на тело сериализованной и подписанной транзакции в том виде, в котором она передаётся в ethereum-блокчейн (raw transaction).

Читать далее
Всего голосов 4: ↑3 и ↓1+4
Комментарии2

Как упростить импорт JavaScript модулей с помощью Node.js Subpath Imports

Уровень сложностиПростой
Время на прочтение14 мин
Количество просмотров11K

Существует множество библиотек для настройки алиасов в Node.js, таких как alias-hq и tsconfig-paths. Однако однажды, изучая документацию Node.js, я обнаружил возможность настройки алиасов без использования сторонних библиотек. Более того, данный подход позволяет использовать алиасы без сборки кода. Знакомо ли вам поле imports в package.json? В этой статье мы рассмотрим, что такое Node.js Subpath Imports, узнаем о тонкостях настройки и разберемся с поддержкой в актуальных инструментах разработки.

Читать далее
Всего голосов 21: ↑21 и ↓0+21
Комментарии12

Истории

Полное руководство по логированию в Node.js с помощью Pino

Уровень сложностиПростой
Время на прочтение37 мин
Количество просмотров15K

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

Pino — это мощная платформа ведения логов для Node.js, обладающая молниеносной скоростью и широкими возможностями. Фактически именно скорость Pino и завоевала ему место логгера по-умолчанию в open-source веб-сервере Fastify. Также Pino способен очень просто интегрироваться с другими Node.js-фреймворками, что делает его лучшим выбором для всех разработчиков, ищущих надежное и гибкое решение для ведения логов.

Читать далее
Всего голосов 13: ↑12 и ↓1+16
Комментарии1

Кэш в JavaScript: не все Map'ы одинаково полезны

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров6.3K

При разработке приложений регулярно возникает задача кэширования каких-то данных, которые из хранилища должны читаться много чаще, чем писаться. Давайте рассмотрим на примере простого теста, когда и на каком механизме эффективнее организовать его для JavaScript-приложения - на Map или на Object.

Читать далее
Всего голосов 14: ↑14 и ↓0+14
Комментарии15

Сравнительный анализ производительности популярных JS-фреймворков — Express.js, Koa.js и Fastify

Время на прочтение8 мин
Количество просмотров6.2K

Допустим, у вас есть идея нового проекта, который обязательно завирусится, как только он увидит свет. Однако вы не можете решить, какой же бэкенд-фреймворк вам стоит использовать. Не нужно отчаиваться. В этой статье мы рассмотрим три популярных Node.js фреймворка (Express.js, Koa.js, Fastify) и сравним их производительность, чтобы вы могли решить, какой из них лучше подходит для вашего проекта. Для замеров производительности мы будем использовать серверы с двумя простыми конечными точками. Первая конечная точка будет возвращать пустой ответ. Вторая – вычислит ряд Фибоначчи в зависимости от входных данных, которые мы предоставим, а затем вернет последовательность. Файлы конфигурации, используемые в этой статье, вы можете найти в этом репозитории. Перед бенчмаркингом давайте более подробно изучим наши фреймворки.

Читать далее
Всего голосов 13: ↑7 и ↓6+3
Комментарии4

Из лягушек в автоматизаторы — мое решение

Уровень сложностиСредний
Время на прочтение17 мин
Количество просмотров6K

Я являюсь создателем проекта, который кормит меня уже больше четырех лет.

Проект находится в открытом доступе и распространяется по лицензии MIT. К сожалению, он так и не дорос до широкой публики, по причине того, что у меня не остается времени на его разработку.

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

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

Читать далее
Всего голосов 17: ↑17 и ↓0+17
Комментарии9

Трассировка запросов в Node.js

Время на прочтение9 мин
Количество просмотров4.1K

Существует расхожее мнение, что мы, как разработчики программного обеспечения, тратим 90% нашего времени на отладку и только 10% непосредственно на написание кода. Конечно, это соотношение слишком преувеличено! Но это правда, что отладка занимает значительную часть нашего рабочего времени, особенно в эпоху расцвета микросервисных архитектур. На сегодняшний день уже никого не удивишь тем, что на наших производственных серверах одновременно работают сотни или даже тысячи микросервисов.

Читать далее
Всего голосов 8: ↑8 и ↓0+8
Комментарии0

Документирование API сервисов с помощью Swagger на примере фреймворков Express.js и Gin

Уровень сложностиСредний
Время на прочтение41 мин
Количество просмотров55K

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

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

Основное внимание в статье будет уделено автоматизации процесса создания документации API сервисов, которые разрабатываются с помощью фреймворков Express.js и Gin, используя подходящий для этой задачи инструмент - Swagger.

Читать далее
Всего голосов 5: ↑3 и ↓2+1
Комментарии4

Один из способов ускорения компиляции TypeScript

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров5.4K

Об оптимизации компиляции TypeScript написано немало статей, но про один способ я не слышал и обнаружил его довольно случайно.

Некоторые библиотеки предоставляют много возможностей, из которых в вашем проекте используется от силы пара процентов. В бандл сборки они не входят благодаря tree-shaking, но жрут ресурсы во время компиляции: процессор и память.

В этой небольшой заметке я расскажу, как обнаружить прожорливые библиотеки и ускорить компиляцию.

Читать далее
Всего голосов 19: ↑17 и ↓2+18
Комментарии21

Как общаться с ChatGPT с помощью голосовых сообщений в Telegram

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров24K

Пару недель назад я написал бота, который позволяет говорить с ChatGPT с помощью голосовых и текстовых сообщений. Это удобно, потому что не нужно использовать VPN для работы с OpenAI, а про клавиатуру можно забыть вовсе.

В этой статье делюсь пошаговой инструкцией, как реализовать ChatGPT Telegram-бота на NodeJS и задеплоить его на виртуальный сервер. Подробности под катом!
Читать дальше →
Всего голосов 37: ↑36 и ↓1+46
Комментарии10

Тестирование данных Excel файла с помощью Cypress

Время на прочтение6 мин
Количество просмотров3.5K

Привет, Хабр!

Несколько дней назад в одном из обсуждений в сообществе Cypress на Discord мельком был затронут вопрос о том, как проверить данные из файла Excel с помощью Cypress. Это подтолкнуло меня сделать несколько полезных заметок, ставших основой для данной статьи.

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

Оригинал статьи на английском языке был включен в 136th Coding Jag от LambdaTest, а также в Issue #82 Software Testing Notes.

Читать далее
Рейтинг0
Комментарии8

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
20 – 22 сентября
BCI Hack Moscow
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
24 сентября
Astra DevConf 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн

Как подключить технику Xiaomi к локальному серверу на Node.js: первый шаг к настройке своего Умного дома

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров9.2K

Инструкция для получения доступа к устройству в целях получения и хранения данных с него удобным образом. Зачем? Чтобы в перспективе настроить свой Умный Дом без ограничений приложений, которые предоставляют производители. 

Читать далее
Всего голосов 10: ↑7 и ↓3+4
Комментарии5

AbortController: Варианты применения для эффективного управления асинхронными операциями

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров16K

В современных веб-приложениях асинхронные операции играют ключевую роль. Однако управление ими может быть сложным, особенно когда нужно отменить задачи, уже отправленные на выполнение. До появления AbortController разработчики прибегали к различным костылям, таким как создание глобальных переменных, которые отслеживали состояние запроса или использование оберток над XMLHttpRequest.

Читать далее
Всего голосов 15: ↑15 и ↓0+15
Комментарии30

«Подождите, не успеваю записывать код …». Я слушал это пару лет и в итоге написал раздатчик изменений кода для студентов

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров3.4K

Всем привет! На связи Александр Разыграев, я разрабатываю модуль ESMP Metrica, а в свободное время преподаю web-разработку студентам в институте, также преподавал на курсах переподготовки.

Часть студентов во время занятия повторяют действия и код за преподавателем. Примерно треть из них часто не успевала и сигнализировала мне, например, останавливали словами: «Подождите, я не успеваю записывать код …».

Как решал эту проблему: если писали короткий пример, то брал паузу и ждал пока не успевающие перепишут код; если разрабатывали более длинный пример или одно большое приложение за занятие, то отправлял отдельный файл с кодом или весь проект приложения, например, архивом в чат или коммитами в git.

Но ощущал какую-то неудовлетворённость. Во-первых, понимал, что это не решение, а скорей экстренная помощь. Во-вторых, у меня не получалось работать на опережение, т. е. я не мог понять, как часто отправлять код, а иногда, увлекшись, забывал. Какого-то другого решения этой проблемы у своих коллег я не встречал.

В этой статье привожу свой опыт, как я ушёл от этой проблемы, написав свой раздатчик изменений кода. Статья будет полезна преподавателям IT.

Читать далее
Всего голосов 20: ↑20 и ↓0+20
Комментарии10

Оптимизация автотестов Cypress с помощью  циклов JavaScript

Время на прочтение7 мин
Количество просмотров6.2K

Привет, Хабр!

За последние несколько лет работы с командами тестировщиков ПО в России и США мне довелось столкнуться с различными подходами к организации тестирования, разнообразными паттернами построения тестовых сценариев и разработки автоматических тестов. При этом нередко случалось, что приходя на проект и анализируя имеющуюся тестовую базу выяснялось, что существующие автотесты нуждались в серьезной доработке или вовсе переработке в целях обеспечения их надежности и сокращения времени на их выполнение. Преимущественно это касалось этапа сквозного (e2e) тестирования, и по моим наблюдениям очень часто причиной тому было не столько незнание тестировщиками встроенных команд тестового фреймворка, сколько неумение применить в тестах базовые возможности используемого языка программирования.

Это подтолкнуло меня к написанию пары статей, в которых я делюсь некоторыми наработками по оптимизации автотестов Cypress, основываясь на простых и в основном известных возможностях JavaScript. Изначально статьи были опубликованы на английском языке в моем блоге "Testing with Cypress" на Medium.

Читать далее
Всего голосов 5: ↑4 и ↓1+6
Комментарии17

Как я намайнил первое* в мире биткоин**-стихотворение

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров9.6K

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

Иногда хочется как-то объединить эти две стороны своей жизнедеятельности. Написать скрипт четырёхстопным ямбом. Или наоборот — скрипт, который напишет четырёхстопный ямб. Обычно это желание мимолётно и ни к чему не ведёт. Но недавно мне очень захотелось написать биткоин-стихотворение — и я это сделал.

Ниже вы сможете познакомиться с моим великим творением и историей его создания, а также выяснить, что это вообще за ерунда — биткоин-стихотворение, и чем оно полезно народному хозяйству. Я постараюсь, чтобы статья была интересна и понятна как моим коллегам-программистам, так и моим коллегам-литераторам.

Испить мёда поэзии
Всего голосов 90: ↑84 и ↓6+107
Комментарии46

Знакомьтесь, tRPC

Уровень сложностиСложный
Время на прочтение8 мин
Количество просмотров14K


Hello, world!


В этом туториале мы разработаем простое типобезопасное (typesafe) клиент-серверное (fullstack) приложение с помощью tRPC, React и Express.


tRPC позволяет разрабатывать полностью безопасные с точки зрения типов API для клиент-серверных приложений (предпочтительной является архитектура монорепозитория). Это посредник между сервером и клиентом, позволяющий им использовать один маршрутизатор (роутер) для обработки запросов HTTP. Использование одного роутера, в свою очередь, обуславливает возможность автоматического вывода типов (type inference) входящих и исходящих данных (input/output), что особенно актуально для клиента и позволяет избежать дублирования типов или использования общих (shared) типов.


Руководство по tRPC находится в процессе подготовки — следите за обновлениями ?


Для тех, кого интересует только код, вот ссылка на соответствующий репозиторий.


Интересно? Тогда прошу под кат.

Читать дальше →
Всего голосов 10: ↑8 и ↓2+10
Комментарии10

Оптимизация бюджета с помощью Telegram-бота

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров4.3K

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

Читать далее
Всего голосов 7: ↑2 и ↓5-3
Комментарии0

Вклад авторов

Работа