Обновить
64K+

Node.JS *

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

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

46 критериев и модель Jev: как устроен открытый индекс риска глобального конфликта

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

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

Мы тонем в новостях. Голова кругом: тут говорят одно, там — противоположное, а где правда — непонятно. Информации не мало — её слишком много. Не хватает инструмента, который показывал бы, как риск меняется во времени: по открытым данным, а не по громкости заголовка. Такого инструмента я не нашёл. Пришлось собрать самому.

Получился Индекс Кассандры — еженедельный сервис про уровень и направление риска глобального конфликта. Без регистрации, трекеров и подписок. Код, методика, данные и тесты открыты на GitHub, сайт статический (GitHub Pages).

Свежая неделя (11 октября 2026): 56, +10 к предыдущей (46). Ниже — как получается это число и как в него вошла новая модель‑классификатор Jev.

Это рассказ об инженерной задаче: как устроен расчёт, как он проверяется и что даёт машинная классификация. Политических оценок и агитации нет — только измерение сигналов и метод.

Читать далее

Новости

Скам расправил плечи: как ИИ открыл возможности для мошенников в ИТ‑найме

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

Сейчас в ИТ-сфере довольно турбулентно и непредсказуемо: экономическая нестабильность, массовые увольнения, сокращение общего числа вакансий, повсеместное внедрение ИИ, который угрожает заменить разработчиков. Все заставляет переживать работников интеллектуальной сферы. 

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

Читать далее

UML-редактор с блок-схемами по ГОСТ — как устроено внутри

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

Я работаю системным аналитиком, и UML-диаграммы для меня это часть работы. Но официальный редактор на plantuml.com из России не открывается, а ставить Java и плагин в IDE или VPN на рабочий компьютер не хочется.

Поэтому я навайбкодил umleditor.ru - редактор UML-диаграмм в браузере. Пишешь код и сразу видишь схему. Регистрироваться не надо. Схемы рисует мой собственный PlantUML-сервер в Москве, так что код диаграмм не уходит на чужие сервисы.

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

Первая рабочая версия появилась за два часа. Потом проект рос: блок-схемы по ГОСТ со своим рендерером, редактор JSON, справочник на 70+ страниц. Ниже описание того, как это устроено внутри, с кодом и цифрами.

Читать далее

Чей номер и чей БИК: две офлайн-библиотеки на открытых реестрах Минцифры и ЦБ

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

Когда в форме нужно проверить ИНН, подсказать банк по БИК или показать оператора по номеру телефона, обычно подключают внешний API. Мне захотелось обойтись без него: все эти данные государство и так публикует открыто, и они достаточно маленькие, чтобы положить их прямо в npm-пакет.

Так появились две библиотеки. phoneoperator по реестру Минцифры определяет оператора и регион номера, bankbik по справочнику ЦБ находит банк по БИК и проверяет ИНН, СНИЛС, ОГРН и счета. Обе работают без сети и обновляются сами. Внутри: как 60 МБ реестра ужимаются до 45 КБ, почему у МТС два названия и почему сайт Минцифры не пускает GitHub.

Песочницы: phoneoperator и bankbik.

Проверить реквизиты

Таймаут в секунду, запрос на 43 секунды: пять ловушек PgBouncer в режиме транзакций

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

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

Читать далее

Как узнать длительность видео по ссылке, скачав 7% файла, и почему в заголовке MP4 бывает ноль

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

Пользователь загрузил ролик на 37 мегабайт и получил ответ: «Не удалось определить длительность видео». Ролик был обычный, открывался в любом плеере, ffprobe показывал 18 секунд. В логах ошибок при этом не было вообще. Под катом разбор того, как устроена длительность в MP4, почему в заголовке файла она бывает нулевой и как достать её тремя HTTP-запросами без ffmpeg.

Читать далее

Код-ревью самому себе через год: 8 архитектурных ошибок соло-проекта

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

Через год после закрытия соло-проекта (React, 3×NestJS, PostgreSQL, Socket.IO, Kubernetes в GKE) я устроил себе код-ревью и нашёл 8 ошибок, которые всплыли бы при первом росте трафика: двойное списание баланса, сообщения, теряющиеся между pod'ами, чужой чат по UUID, деплой, который нельзя откатить. Почти все жили не внутри технологий, а на стыках. Разбираю каждую с кодом и исправлением.

Читать разбор 8 ошибок

Как я подключил MAX и VK к Chatwoot: разбираем двусторонний мост

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

После моей статьи о рабочем месте репетитора в Chatwoot в комментариях закономерно спросили не о календаре и не о Jitsi, а о детали, которую я тогда почти не показал: как именно сообщения из MAX и VK попадают в Chatwoot и как ответ возвращается обратно.

Короткий ответ: это не скрапинг веб-версий и не автоматизация личных аккаунтов. MAX у меня подключён через официального бота, VK — через сообщения сообщества. Между ними и двумя API inbox в Chatwoot работает небольшой сервис на Node.js.

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

Читать далее

Сделал для Twitch Детектор смеха, где ИИ считывает эмоции. Рассказываю, как оно устроено внутри и делюсь цифрами

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

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

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

Первые цифры. Буду рад фидбеку.

Подробности о проекте и первые цифры

GitHub Actions убрал Node 20 и отключает старые раннеры: что проверить

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

23 сентября GitHub окончательно убрал Node 20 из раннеров GitHub Actions. JavaScript-экшены теперь выполняются на Node 24, а временный выключатель ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION, которым можно было вернуть Node 20, больше не работает. Через шесть дней, 29 сентября, на GitHub Enterprise Cloud включилась полная проверка версий self-hosted раннеров.

Две новости за неделю, и обе ломают тихо.

Читать далее

Парсер расписаний после хабратестирования: полвторого, RRULE, systemd и производственный календарь

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

В прошлой статье я показал cronsense, библиотеку, которая переводит расписание на русском или английском в cron: «по будням в 9:30» → 30 9 * * 1-5. Комментаторы устроили ей хабратестирование и нашли, чего она не умеет: «полвторого», «без пяти шестнадцать», «каждые полчаса», а ещё задачи, для которых cron не подходит вообще.

За несколько дней вышло семь версий. Теперь одна фраза превращается в cron, RRULE для календарей или таймер systemd, а праздники можно называть по имени. Для «последнего рабочего дня месяца» появилась вторая библиотека, prodcalendar: производственный календарь РФ, который сам обновляется в npm. Попутно сверка с rrule.js и systemd-analyze нашла баги, о которых я не знал.

Песочница

Прочитать до Нового года

BB изнутри: как устроена открытая IDE для Claude Code и Codex, которая обновляет себя без перезапуска

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

BB - это открытая программа под лицензией MIT, в которой Claude Code, Codex, Pi и ACP-агенты работают в одном окне. За 7 месяцев репозиторий собрал около 4 тысяч звёзд. Главное в BB не окно, а то, что его интерфейс достраивается плагинами и новый плагин подхватывается без перезапуска программы.

Недавно я снимал про BB ролик. Там агент за 20 минут и два промпта собрал плагин, который расшифровывает запись созвона, выделяет договорённости со сроками и пишет письмо клиенту. Ролик был про то, что это даёт пользователю, а в этой статье я разберу код и покажу, за счёт чего это работает. Всё ниже проверено по репозиторию get-bb/bb по состоянию на конец сентября 2026.

Читать далее

Сделал себе тренера на Claude Code и выложил его в open source

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

Днём я пишу код в Claude Code, вечером хожу в зал: у меня пауэрлифтинг, тренировки тяжёлые, часа по два. Тренера я сделал для себя. Хотелось, чтобы тот же Claude, в котором я работаю, вёл и мои тренировки.

Так появился claude-gym-coach, open-source тренер по силовым внутри Claude Code. Один раз рассказываете ему, кто вы и чего хотите, и дальше он ведёт сам: составляет программу под ваш зал, перед каждой тренировкой расписывает веса по вашей истории, после тренировки записывает то, что вы скажете в телефон, и раз в блок разбирает, что сработало. Если раньше был дневник, его можно перенести, и новые тренировки тренер строит от него. Отдельное приложение и отдельная подписка не нужны: всё работает внутри Claude Code, на той подписке Claude, которая у вас и так есть.

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

Читать далее

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

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

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

Я взял 139 имён пакетов, которые пять свежих ИИ-моделей выдумывают одинаково, и 22 сентября проверил каждое по живым PyPI и npm. Это реестры, откуда ставятся библиотеки для Python и JavaScript. Список ценен тем, что не привязан к одной нейросети: раз имя выдумывают все пять, под ударом пользователи любой из них. Список раскрыли 30 апреля 2026 года.

Занято 7 имён из 139. Под одним из них, metro-evaluator, в декабре 2025 года лежал вредоносный код: npm снял его через пять дней и поставил заглушку. Это было ещё до раскрытия списка, и совпадение это или расчёт на выдуманное имя, по реестру не видно. Остальные шесть имён заняли четыре чужих настоящих проекта, владелец бренда своей заглушкой и пустой пакет в 53 байта, который появился уже после раскрытия. По совету нейросети pip install odf поставит чей-то другой инструмент вместо нужной библиотеки.

Читать далее

Сотни Telegram‑ботов в одном процессе Node.js: общий webhook, очередь в PostgreSQL и Mini App на 5 КБ

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

Каждому пользователю моего конструктора нужен свой Telegram‑бот. Рассказываю, как держать сотни ботов в одном процессе Node.js: общий webhook, очередь в PostgreSQL на SKIP LOCKED и Mini App на 5 КБ. С замерами нагрузки и честным разбором, где у схемы потолок.

Читать далее

«По будням в 9:30» → 30 9 * * 1–5: парсер расписаний на русском, который отказывается угадывать

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

Библиотека называется cronsense. Она переводит расписание, записанное обычными словами на русском или английском, в cron‑выражение и обратно. Рассказываю, как устроен разбор, о какие ловушки cron легко споткнуться и как тесты проверяют, что описание разбирается обратно в то же расписание.

Читать далее

Событие вместо поля: как журнал медиации вернул историю, которую система стирала

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

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

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

Читать далее

YApi заброшен с 2022 года. Я продолжил его и нашёл токены, которые может подделать любой участник проекта

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

YApi — платформа документации API, мок-сервера и тестов с 27 тысячами звёзд — не обновлялась с 2022 года. На новом Node.js у неё ломаются токены, клиент не собирается, нужное ей расширение браузера больше не работает в Chrome, а мок-скрипты позволяют выполнить код на сервере.

Я продолжил проект и по дороге нашёл, что без настройки passsalt токены проектов шифруются общеизвестным ключом — участник проекта может выдать себя за другого пользователя. В статье — как это исправлено без поломки старых токенов, песочница для скриптов на isolated-vm, своё расширение на Manifest V3 и тест обновления на настоящей базе YApi.

Читать дальше

Flowise закрыли, я его форкнул — и выяснил, что форкать было нельзя

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

Flowise — визуальный конструктор для LLM-приложений: перетаскиваете на холст модель, векторное хранилище, инструменты и память, соединяете их линиями и получаете чат-бота, RAG-поиск по документам или агента. У проекта 55 тысяч звёзд на GitHub, 25 тысяч форков и почти 7 миллионов скачиваний Docker-образа. Его разворачивают у себя компании, которым нельзя отправлять данные в облачные конструкторы.

29 июля 2026 года команда объявила о закрытии: «разработчики всё чаще доверяют сложные задачи агентам для программирования, а жёсткие low-code-процессы упираются в потолок». 13 августа репозиторий заархивировали, 31 августа поддержка закончилась. В объявлении прямо сказано: код под Apache 2.0 ваш, форкайте.

Установки при этом никуда не делись, а бюллетени об уязвимостях продолжили выходить. Десятого сентября GitHub опубликовал ещё шесть advisory для Flowise — все с пометкой «исправленной версии нет». Я решил сделать то, что предложили авторы, и продолжить проект под именем Keelflow (GitHub, Apache-2.0). Киль (keel) держит судно на курсе — примерно этого и хочется от проекта, у которого кончилась команда.

Оказалось, что форкнуть Flowise «как есть» нельзя. Об этом, о том, что пришлось переписать, и о том, что нашлось в коде по дороге, — эта статья.

Читать дальше

Next.js без Vercel: деплой на один VPS с переключением без простоя и откатом за секунды

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

Я держал проект на Next.js на Vercel почти три месяца и уехал на обычный VPS за 990 рублей в месяц. Главное, чего боялся: потерять то, за что Vercel любят. Сборка, которая не трогает живой сайт. Переключение без простоя. Откат одной кнопкой. Под катом схема, которая всё это повторяет на одном сервере без Kubernetes, Docker и прочей тяжёлой артиллерии, и список граблей, на каждую из которых я наступил.

Читать далее
1
23 ...