Обновить
128K+

Node.JS *

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

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

Как я автоматизировал ведение финансов в Obsidian. Часть 1

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

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

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

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

В этой части речь пойдет именно про сбор данных: как я сделал небольшой bridge-слой между банками и Obsidian. Во второй части можно будет уже перейти к тому, как эти данные встраиваются в vault.

Читать далее

Пять неочевидных вещей, которые я узнал, запуская кино-соцсеть: от robots.txt-ловушки до 24-мерной математики вкуса

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели9.8K

Последние полгода я работаю над VibeMuvik — кино-соцсетью с рецензиями, дебатами и синхронным просмотром фильмов. Одна из тех штук, которые «ну вроде несложно», пока не начинаешь копать.

Эта статья — про неожиданные находки. Не про «как я выбрал стек» (скучно) и не про «туториал по WebRTC» (и без меня есть). Это пять ситуаций, в которых я споткнулся, обнаружил что-то интересное, и подумал «об этом стоит рассказать — другим пригодится».

Поехали.

Читать далее

Telegraph API: CONTENT_TOO_BIG приходит раньше обещанных 64 КБ. Измеряем реальный лимит и разбираем обходной путь

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели7.3K

Telegraph API обещает принимать content до 64 КБ, но на практике CONTENT_TOO_BIG прилетает уже на 17-20 КБ. Разбираю, как измерял реальный лимит, при чём тут UTF-8 vs UTF-16 для кириллицы, и каким обходным путём чинил молчаливую деградацию RU-канала.

Читать далее

Один движок на два рантайма: как мой сайт на Next.js делит формулы с Flutter-приложением

Время на прочтение16 мин
Охват и читатели6.4K

Прошлой зимой я писал тут про «Мастерок» — строительный калькулятор на Flutter для RuStore. Приложение поехало в прод, набрало 4.9 звезды, и в какой-то момент пришло осознание: аудитория смартфонных приложений — это аудитория смартфонных приложений. А человек, который в обед нагуглил «сколько мешков ротбанда на 20 квадратов», в магазин приложений не полезет. Он хочет страницу в браузере. Желательно без куки-баннера на полэкрана, без интерфейса из 2012-го и без того, чтобы перед ответом на вопрос ему предлагали посмотреть пять реклам.

Так появился getmasterok.ru — веб-половина той же экосистемы. Сайт на Next.js 15, шестьдесят один калькулятор, ИИ-прораб, SEO, блог, всё как положено. И с одним неочевидным вызовом, который стал главным сюжетом этой статьи.

А вызов я нашёл не сам. Его нашёл пользователь.

Читать далее

Как опубликовать сайт на хостинг за три команды: от статики до Node.js

Время на прочтение7 мин
Охват и читатели6.8K

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

И встает вопрос: как вообще выложить это все в интернет, желательно по нормальной ссылке, с HTTPS и без тонны настроек VPS и nginx?

В этой статье я покажу способ, как публиковать сайты на PaaS-сервисах, просто привязав к ним Git-репозиторий и делая в него коммиты (или вообще просто перетягивая файлы в интерфейсе).

Читать далее

Как отдавать лиды из Next.js в 1С Битрикс: outbound без очередей и воркеров

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

Типовая задача на российском рынке: есть публичный сайт (лендинг, маркетплейс, каталог), на нём формы — заявка, регистрация, заявка партнёра. Эти лиды должны попадать в 1С Битрикс, где с ними работает отдел продаж.

Подход "в лоб" выглядит так: в обработчике формы сделать await fetch('https://bitrix.../crm.lead.add', ...) и вернуть пользователю ответ после того, как Битрикс подтвердил создание лида.

Это плохо работает. Битрикс REST API нестабилен по latency — 200 мс в норме, 8 секунд при нагрузке на стороне CRM. Пользователь сайта в это время смотрит на крутилку. Если Битрикс упал или таймаутит — сайт отдаёт ошибку, хотя пользователь форму заполнил корректно.

В этой статье — паттерн, который я использовал на маркетплейсе недвижимости на Next.js 16 + PostgreSQL 16 + 1С Битрикс. Без Redis, без BullMQ, без отдельного воркера. Просто Next.js API route + after() + минимальный HTTP-клиент с retry и таймаутом.

Цифры проекта для контекста: 25 объектов недвижимости в каталоге (отдельная сущность ready_homes оставлена за скобками статьи), 57 API-роутов, PostgreSQL 16.13 на VPS, деплой через systemd + nginx, интеграция с Битрикс — исключительно outbound (сайт → CRM).

Читать далее

Безошибочная работа с Kafka из Node js. Часть 2 Консьюмер

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

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

Читать далее

Как я написал свою библиотеку валидации схем и создал свою альтернативу Zod

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

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

Задача усложнялась двумя дополнительными требованиями:

Читать далее

Dart на бекенде: почему его бросила бывшая

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

Если ты тоже смотришь на Dart как на backend-альтернативу для Node.js, лучше пройти этот путь на чужих ошибках. Полные результаты benchmark'а — Go, Node.js, Dart, Bun, Deno, .NET — с методологией, конфигурацией и сырыми цифрами лежат на GitHub. Под катом — сама история. Не технический отчёт, а инженерская драма: как 2 недели ушли на перенос архитектуры, почему всё выглядело идеально на бумаге, и как гипотеза с "экономией памяти" разбилась о реалии raw benchmark. И ещё — почему AI-агент сделал всё правильно, и именно это оказалось проблемой.

Читать далее

Главные игроки экосистемы JavaScript по состоянию на 2026 год

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

Ранее мы писали похожие статьи о CSS, но JavaScript заслуживает не меньшего внимания! Тем более что JavaScript лучше справляется с версионированием. Мы рассмотрим новые возможности самого языка, а также основные среды выполнения, фреймворки, библиотеки и инструменты.

Читать далее

Как мы оптимизировали компоненты во фронтенде: работа с версиями и оптимизация процессов

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели5.6K

Привет, Хабр! Меня зовут Василий Беляев. Я руководитель группы разработки по направлению фронтенда в ИТ-компании «Криптонит». В этой статье я расскажу про организацию работы с версиями и компонентами, оптимизацию рабочего процесса внутри команды, а также опишу несколько лайфхаков, которые мы применили.

Читать далее

Я написал собственный язык программирования на Node.js — и вот что из этого вышло

Уровень сложностиСложный
Время на прочтение4 мин
Охват и читатели7.6K

Привет, Хабр! Меня зовут SlywerX, я студент 3 курса кафедры Программной инженерии МТУ (Алматы) и fullstack-разработчик. Несколько месяцев назад я задался вопросом: а как вообще работают языки программирования изнутри? Лучший способ разобраться — написать свой. Так появился SWX (Shadow Web eXploit) — скриптовый язык на базе Node.js с собственным синтаксисом, криптографией и даже HTML-рендерингом.

Сейчас SWX на версии 7.0.0. В этой статье расскажу как всё устроено, что было сложно и зачем это вообще нужно было делать.

Читать далее

Утечки памяти в замыканиях JavaScript

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

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

Замыкание существует пока, есть хоть одна ссылка на функцию создавшую его. Если быть неосторожным, это может привести к утечкам памяти: когда объект уже не используется в программе, но сборщик мусора не может его удалить. Такие ссылки могут быть неочевидными...

Что за неочевидные ссылки?

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

Claude отключил мне OpenClaw. Штош… я написал замену TG+Claude Max по oAuth

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

В субботу Anthropic заблокировал мой рабочий сетап, построенный на oAuth Claude Code и Telegram. Вместо того чтобы ждать, я за вечер написал self-hosted замену с блэкджеком и постоянной памятью. Рассказываю, как устроен TeleClaude — опенсорсный инструмент, который позволяет управлять проектами через топики в Telegram, используя вашу локальную подписку Claude с лимитами из oAuth. Никаких облаков, API и дополнительных трат. Разбираю архитектуру, систему памяти и показываю, как запустить у себя.

Читать далее

Как я настроил OpenClaw для зоопарка landings для своей компании

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

WP умер, перевёл все сайты на OpenClaw

Раньше часто использовал WordPress с кучей плагинов для создания сайтов и лендингов. Сейчас поставил DarwinClaw на чистую машину Ubuntu и сказал ему сделать всю инфраструктуру для сайтов. Он поставил nginx + node.js.

Потом попросил перенести сайты, указав ссылки на них. Он создал все сайты.

Попросил добавить git и репозиторий для хранения этих сайтов. То есть всегда можно быстро откатить изменения.

Теперь полностью управляю этим зоопарком лендингов через TG команды типа:

Убери с сайта X вот это

Добавь на сайт Y вот то

Поменяй стиль сайта Z на …

Откати последние изменения на сайте XM

Замени икноку на сайте XS на более современную

Собери статистику по заполнению форм с сайтов X, Y, Z в формате

Раньше это либо делали люди за деньги, либо WP с его тяжёлой инфраструктурой, теперь всё делает бот на OpenClaw.

Читать далее

Замыкания в JavaScript

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

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

Подробнее о замыканиях

12 слов вместо номера телефона: как мы сделали мессенджер невидимым для файрволов

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели15K

BIP39 вместо номера телефона, ECDH P-256 + AES-256-GCM, non-extractable CryptoKey, трафик неотличимый от HTTPS. Как это устроено, что сломалось в процессе и почему некоторые решения были болезненными.

Читать далее

Node.js → Rust: 5-10x ускорение без знания Rust

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

На своём MacBook M4 я не замечал проблем. Два скрипта на Node.js 18 собирали информацию по проекту, обходили файлы, считали строки, агрегировали данные и отрабатывали за пару секунд. Жить можно.

А потом на созвоне коллега расшарил экран. У него удалённый рабочий стол, Intel Core i5-1035G1, 8 ГБ RAM. Он запустил тот же скрипт, и мы оба смотрели на терминал восемь секунд. В тишине.

Читать далее

OpenClaw на русском — как я перевёл интерфейс, не трогая исходники

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

Хотите OpenClaw на русском? Официальной локализации нет и не планируется. Я написал перевод OpenClaw на русский через reverse proxy — прослойка инжектит JS-оверлей в HTML, переводит интерфейс через MutationObserver и не трогает ни строчки в исходниках. Обновления OpenClaw не ломают перевод. Рассказываю архитектуру, код и грабли.

Подробнее

Max.ru Bot API: Пишем своего бота для обратной связи. Часть 1. MVP

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

Привет, Хабр! С выходом платформы MAX у разработчиков появилось новое игровое поле. Пока комьюнити спорит о шансах на победу в гонке мессенджеров, маркетологи уже начали переливать туда трафик.

Самая типовая задача для бизнеса сейчас — бот обратной связи. В Telegram эту нишу давно занял Olgram, а вот в Max — чистый лист. Давайте вместе напишем свой аналог. Это отличный кейс, чтобы разобраться с новым API, не углубляясь в лишнюю инфраструктуру.

Стек: Почему все оказалось проще, чем кажется

Для MVP (Minimum Viable Product) мы будем использовать Node.js и официальную библиотеку @maxhub/max-bot-api.

Читать далее