Category : javascript

javascript
Как посчитать статистику переписки на 500 тысяч сообщений в браузере и не увидеть ни одного

Переписка с близким человеком — одна из самых личных вещей на телефоне. А я делаю сервис, которому нужно её прочитать. Из файла экспорта получаются карточки: кто чаще пишет первым, как быстро отвечает, в какие часы вы на связи, какие словечки появились у пары и кто из вас их придумал. Просьба «загрузите переписку к нам на сервер» убила бы такой проект в день запуска, и правильно.Поэтому у «Чатограммы» одно жёсткое правило: всё считается в браузере, и по умолчанию сервер не видит ни одного сообщ…

  • вторник, 6 октября 2026 г. в 00:00:10
javascript
Меня достала реклама, и я сделал свой торрент-клиент для Windows

Меня достала реклама в торрент-клиентах. Я открываю такую программу с довольно скромным намерением: скачать файл, посмотреть скорость и свернуть окно. Предложение купить что-нибудь ещё в этот сценарий у меня не помещается.В какой-то момент захотелось сделать клиент под себя. С приятным интерфейсом, выбором файлов перед загрузкой и нормальным поведением в фоне. Так появился Tern, бесплатный торрент-клиент для Windows с открытым кодом под MIT.На момент написания статьи опубликована версия 1.2.0. …

  • вторник, 6 октября 2026 г. в 00:00:09
javascript
Детектив на статике: как я собрал ARG с пятью шифрами без бэкенда, регистрации и бюджета

Привет, Хабр. Я соло разработчик: студия из одного человека и ИИ ассистента. У нас есть сайт tempapp.ru, и на нём живёт «дело № 031»: сезонный детектив в формате ARG (alternate reality game). Игрок находит спрятанную папку с делом, ловит голубя свидетеля, читает чужой дневник 1999 года, разгадывает цепочку шифров и в финале выясняет, что расследование было не совсем расследованием.Вся игра работает на статическом хостинге. Ни одной серверной строчки, ни регистрации, ни базы. Расходы на инфрастр…

  • вторник, 6 октября 2026 г. в 00:00:07
javascript
Рендерим обучающие 3D‑ролики кодом на React и Three.js вместо съёмок и AI‑видео

Я делаю мобильное образовательное приложение. В какой‑то момент понадобилось объяснять пользователям сложные сценарии, где объекты двигаются по строгим формальным правилам, и объяснять не текстом, а видео. Любая неточная траектория или неверно анимированное действие на видео закладывает неверный паттерн. Я собрал для этого конвейер на Remotion и React Three Fiber.Три варианта, которые не подошлиСъёмка на реальных объектах. Нужны десятки роликов на разные сценарии, и каждый требует отдельной пос…

  • вторник, 6 октября 2026 г. в 00:00:06
javascript
Сделал для Twitch Детектор смеха, где ИИ считывает эмоции. Рассказываю, как оно устроено внутри и д…

Решил сделать для друзей игру, где нельзя смеяться, чтобы ИИ распознавал эмоции и определял, кто засмеялся первым.Пример того, как работает «Детектор смеха»Я не программист, по профессии маркетолог. Всё это написано с ИИ‑агентами примерно за шесть недель: сейчас в проекте больше пятисот коммитов. Как выглядит такая работа изнутри и что агент ломал по дороге, расскажу отдельно и честно. А в этой статье — карта: из каких частей состоит шоу и какие задачи в каждой из них оказались неожиданно сложн…

  • понедельник, 5 октября 2026 г. в 00:00:04
javascript
Сделал для Twitch “Детектор смеха”, где ИИ считывает эмоции. Рассказываю, как оно устроено внутри и…

Решил сделать для друзей игру, где нельзя смеяться, чтобы ИИ распознавал эмоции и определял, кто засмеялся первым.Пример того, как работает «Детектор смеха»Я не программист, по профессии маркетолог. Всё это написано с ИИ‑агентами примерно за шесть недель: сейчас в проекте больше пятисот коммитов. Как выглядит такая работа изнутри и что агент ломал по дороге, расскажу отдельно и честно. А в этой статье — карта: из каких частей состоит шоу и какие задачи в каждой из них оказались неожиданно сложн…

  • воскресенье, 4 октября 2026 г. в 00:00:05
javascript
Парсер расписаний после хабратестирования: полвторого, RRULE, systemd и производственный календарь

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

  • суббота, 3 октября 2026 г. в 00:00:04
javascript
Кедр: SACD ISO в FLAC, написанный в Cursor

Мне нужна была утилита под macOS, которая берёт образ Super Audio CD и делает из него FLAC. Обычный путь «открыть ISO в ffmpeg» здесь не работает: внутри не PCM, а однобитный DSD, часто ещё сжатый в DST. В итоге получился Кедр. Окно на Electron, само преобразование делает локальный Python, альбом с машины никуда не уходит.И сразу честно, как это писалось. Я не набирал проект руками файл за файлом. Это вайбкодинг в Cursor: я говорил, что должно получиться, смотрел результат и возвращал в чат то,…

  • суббота, 3 октября 2026 г. в 00:00:02
javascript
Каждый LLM-фреймворк описывает инструмент по-своему

Чтобы дать LLM доступ к своему коду, пишут инструменты (tools). Инструмент — это функция и всё, что модели нужно знать, чтобы её вызвать: имя, описание и схема аргументов.Потом те же инструменты приходится писать ещё раз. Первая версия сделана на tool() из AI SDK. В проекте появляется MCP-сервер, и инструменты переписывают под registerTool. Соседняя команда использует Genkit, и те же инструменты пишут в третий раз, через defineTool. Функции остаются прежними, меняется только обёртка.К тому же к…

  • пятница, 2 октября 2026 г. в 00:00:13