Как стать автором
Поиск
Написать публикацию
Обновить
28.23

Node.JS *

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

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

Заметки по grammY

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

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

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

Читать далее

Лучшие статьи Хабра в феврале 2025 года

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

В прошлом месяце я уже анализировал самые популярные статьи Хабра за январь, чтобы узнать что вообще происходит в мире. Теперь пришло время посмотреть, изменилась ли картина в феврале. Какие темы остались актуальными, а какие ушли в тень? Давайте разберёмся, чем жил Хабр в феврале 2025 года.

Парсим и анализируем 🤖

IPC в Node.js: решение проблемы с передачей данных

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

В Node.js IPC (Inter-Process Communication) - это механизм, используемый для обмена данными между процессами. Начиная с версии 12.16.0 в модуле child_processes появилась поддержка режима advanced serialization для IPC. Однако иногда он может привести к проблемам с зависанием сообщений, что приводит к ошибкам и проблемам с функциональностью. В этой статье мы расскажем как решили эту проблему.

Читать далее

Backend-for-Frontend (BFF): решение проблемы взаимодействия фронтенда и бэкенда

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

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

Что такое Backend-for-Frontend (BFF)?

Backend-for-Frontend (BFF) — это архитектурный паттерн, который помогает устранить разрыв между фронтендом и бэкендом. BFF выступает промежуточным слоем, который адаптирует данные и логику бэкенда под нужды конкретного фронтенда. Это позволяет фронтенд-командам работать с API сразу, а бэкенд-разработчикам подключать логику по мере готовности, что значительно ускоряет процесс разработки и снижает количество доработок.

Читать далее

Как бесплатно разослать всем членам ТСЖ персональное сообщение о завтрашней уборке снега через WhatsApp

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

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

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

Читать далее

Лучшие статьи Хабра в январе 2025 года

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

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

Для сбора данных я использовал свой парсер на Node.js. Работать пришлось напрямую с HTML, так как скрытого API Хабра я не нашёл. К счастью, внутри HTML разметки каждой статьи находится JSON с ключевыми параметрами: автор, дата, просмотры, рейтинг — это упростило парсинг.

Я обработал все статьи, опубликованные в январе, но в итоговый список попали только те, что набрали более 30 тысяч просмотров или рейтинг выше +30.

Парсим и анализируем 🤖

Как автоматизировать свою переписку с девушкой в Telegram при помощи Python

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

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

Что мы НЕ будем делать: разрабатывать чат-бота, который «любит» за вас. Эту задачу лучше оставить вам.

Цель - организовать начало диалога.

Начинаем 🧡

По мотивам windows заставки «Ленты». Кроссплатформенный скринсейвер на JS и Electron

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

Со времен появления скринсейвера «Ленты» (ориг. «Ribbons») на Windows 7, эта заставка была стандартом для всех моих рабочих мест, благо в новых версиях Windows (8, 10, 11) эта заставка остается и по сей день. Однако с момента «импортозамещения» десктопной Windows на десктопную Linux, особенно актуального с 2022 года, хотелось получить эту или хотя бы похожую заставку и на этой свобоной платформе. Но вот незадача — нормальный порт найти мне не удалось. Может, конечно, плохо искал (скиньте ссылку в комментариях, если кто‑то нашел что‑то работоспособное).

И тут на просторах github очень удачно нашелся вот этот репозиторий. Автор в canvas с использованием JS наваял на мой взгляд очень даже симпатичную анимацию по мотивам того самого скринсейвера «Ленты».

Причем он в README отметил, что пытался сделать из этой анимации PWA (Progressive Web App), но почему‑то у него ничего из этого не вышло, читай «failed». Вопрос, почему человек, наваявший такой годный «генератор лент», не смог в PWA, оставим за скобками.
А тут как раз я, начавший недавно по служебной необходимости, изучать всем известный фреймворк Electron для создания кроссплатформенных настольных web‑приложений... Чем не альтернатива PWA?

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

Читать далее

Как и для чего мы делали симуляцию курьерской доставки

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

С самого начала разработки курьерки мы генерировали много идей по улучшению алгоритмов. Мы не стеснялись выкатывать кучу фичей и проверять их работоспособность А/Б тестами. Не было ни дня, когда у нас не крутились эксперименты в продакшене. Что-то мы выкидывали, что-то оставляли, но не хардкодили, чтобы иметь гибкость. Страна большая и у каждого региона свои особенности, которые влияют на плотность заказов, логистику и потребность в курьерах. Поэтому наборы фичей и их значения различаются. Мы поняли, как отдельная фича влияет на продуктовые метрики, но как набор фичей в совокупности влияет на итоговый результат?

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

Читать далее

Что случилось с легковесными десктопными приложениями? История Electron

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

Electron — это один из самых известных инструментов современного разработчика. Если присмотреться, то это родственник React Native, манящий лозунгом «пиши один раз, запускай везде!», но с гораздо меньшими издержками по сборке и релизу, чем в случае мобильной разработки. Его уникальное преимущество заключается в комбинации Node.js и Chromium, создающей мощную десктопную среду для веб-технологий. Официальный блог Electron не так давно отметил своё десятилетие, что весьма удивляет с учётом того, насколько глубоко этот инструмент успел проникнуть в культуру разработки.
Читать дальше →

Lite-версия мигратора Flyway для PostgreSQL на TypeScript

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

Так как я активно использую возможности Flyway, такие как repeatable migrations и callbacks, и не хочу от них отказываться, а аналогов этих функций в других системах миграции нет, я решил написать собственный лёгкий клон Flyway на Node.js для PostgreSQL.

Читать далее

Как я настраивал S3 в Strapi? Больно, но не сильно

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

Недавно я познакомился с сервисом Strapi и почти сразу получил задачу "Настроить отправку файлов в S3 из Strapi". Это мой первый опыт в работе со Strapi, но не первое подключение к S3.

В данной записи я хотел бы поделиться своим опытом и показать пару кастомных скриптов для работы с облачным хранилищу S3.

Читать далее

Как поддерживать видимость социальной жизни, если ты лентяй

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

Привет, Хабр! Мне нравятся всякие скрипты и автоматизация, но ведь и социальную жизнь поддерживать как-то надо, правда? Вот и я подумал: если не хватает времени лайкать посты друзей ВКонтакте, почему бы не автоматизировать этот процесс?

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

Как уследить за всеми постами "друзей" и родственников ВКонтакте? И стоит ли оно того?

А ведь это особенно сложно, если у тебя насыщенная работа, дедлайны или проект горит. Хочется быть в курсе, поддерживать контакты, но постоянно мониторить ленту – путь в никуда.

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

Автолайкинг 👍

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

PGlite — полноценный Postgres-сервер на WASM. Работает прямо в браузере и Node.js

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

Безумные штуки иногда можно найти в интернете. Листая 2024 JavaScript rising stars (https://risingstars.js.org/2024/en#section-all) обнаружил там удивительного зверя - Postgres скомпилированный через emcc в WASM версию, и допиленный до состояния, когда его можно запустить внутри JS-процесса (браузер/Node.js/Bun/etc).

Как он устроен, как им пользоваться, и, самое главное, зачем? Добро пожаловать под кат :)

Поехали!

Почему текстовые форматы не идеальны в разработке: пример на JSON

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

JSON - наш повседневный помощник, но вместе с другими текстовыми форматами он может преподнести неприятные сюрпризы: потеря точности чисел, громоздкие файлы, путаница с датами. Рассказываю, как этих проблем избежать и повысить эффективность с помощью стриминга в Node.js, а также MessagePack и Protobuf. Узнайте, где подводные камни и как их обходить на практике!

Если хотите понять, в чём именно проблема на иллюстрации, загляните в статью — там всё разобрано :-)

Читать далее

DDD против реальности: распространённые ловушки и их решение в NestJS

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

Сложно внедрить DDD в NestJS, не запутавшись в абстракциях? В статье рассмотрены частые ошибки - от комбайна в контроллерах до формальных Value Objects. Разбираем, как выделять слои (Domain, Application, Infrastructure, Interface), правильно использовать Entities и репозитории и создавать поддерживаемую архитектуру.

Читать далее

Как я научился оценивать популярность статей через парсинг показателей сайтов

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

Я уже давно пишу статьи про различные аспекты IT-технологий, инвестиции, автоматизацию и умные дома на разных площадках: Хабр, Т—Ж, СмартЛаб, Пикабу, VC.ru и других.

За всё время накопилось примерно 250 статей, которые по итогу свёл в таблицу. Но вот задумываться о популярности статей и их реальном эффекте стал относительно недавно.

Почему я решил собирать статистику публикаций?

Главной целью всех этих публикаций было поделиться своим опытом и при этом попытаться понять насколько вообще это важно и актуально для читателей. Однако обратная связь была не всегда очевидной: где-то комментариев вообще не было, а иногда на Хабре статьи набирали большой рейтинг при малом количестве комментариев (но это редко).

Однако очевидно одно - статистика заставляет посмотреть на материалы со стороны. Например статья про то, как я при помощи двух скриптов смог автоматически сгенерировать опись документов для 700 страниц на непрофильном Пикабу собрала три месяца назад почти 75 тысяч просмотров и 80 комментариев, а на Хабре эта же тема была не особо популярна.
Или статья про то, что читали на Хабре в 2024 году: анализ статей с Node.js, Google Sheets и каплей ChatGPT - собрала на Хабре три недели назад рейтинг +68, но «всего» 7 тысяч просмотров.

Зачем я написал Open Source скрипт?

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

Это Open Source скрипт, размещенный на Гитхабе, который состоит из Google Apps Script и Node.js частей и обе эти части работают с итоговой сводной Google Таблицей.

Собираем показатели 🤖

Что такое реактивное программирование? Руководство для начинающих по написанию реактивного кода

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

Добро пожаловать в путешествие по динамичному миру реактивного программирования! Эта увлекательная парадигма направлена ​​на создание быстро реагирующих, отказоустойчивых и адаптируемых приложений, которые легко и практически мгновенно управляют огромными объемами данных.

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

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

Реактивное программирование работает аналогично. Оно имеет дело с потоками данных (например, графиком прибытия автобусов) и распространением изменений (прибытием нового автобуса), позволяя приложениям реагировать в режиме реального времени (так же, как пассажиры реагируют, садясь в автобус). Звучит знакомо?

В этой статье мы углубимся в суть реактивного программирования, сосредоточив внимание на его реализации с использованием JavaScript/TypeScript в среде Node.js. Мы также будем следить за глобальным контекстом, который применим ко многим языкам программирования и платформам.

Читать далее

Создание REST API с NestJS и TypeORM

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

NestJS — это прогрессивный фреймворк для построения эффективных и масштабируемых серверных приложений на Node.js. Он использует современные возможности JavaScript и TypeScript, вдохновлен архитектурными паттернами Angular и поддерживает модульность, инъекцию зависимостей и другие современные подходы.

TypeORM — это ORM (Object-Relational Mapping) инструмент, который позволяет взаимодействовать с базами данных, используя объекты и классы, что упрощает разработку и поддерживает различные СУБД, такие как PostgreSQL, MySQL, SQLite и другие.

Сочетание NestJS и TypeORM предоставляет мощный инструментарий для разработки REST API, обеспечивая высокую производительность, модульность и удобство поддержки кода.

Читать далее

Конвертация даты по временной зоне пользователя в «NestJS», а также ввод и отображение даты в «Angular»

Время на прочтение14 мин
Количество просмотров981

В этой статье я расскажу о добавлении нового поля workUntilDate с типом timestamp(6) в таблицу Webhook базы данных Webhook.

На стороне фронтенда (в Angular-приложении) для этого поля будет реализован удобный календарь с возможностью выбора времени.

Пользователи смогут задавать дату и время в своей временной зоне, тогда как бэкенд (NestJS-приложение) будет сохранять введённые данные в базе данных в формате UTC+0.

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

Читать далее

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