Category : javascript

javascript
Рефакторинг моего Obsidian: как я перестроил хранилище после предыдущей статьи

ПредысловиеКакое-то время назад я выкладывал статью на Хабр про свое obsidian хранилище.Я получил хороший фидбэк и некоторые идеи. Также я понял, что довольно большая часть моего obsidian нуждается в оптимизации и структуризации. В итоге нашел свободный выходной, чтобы немного перестроить хранилище. Я все это сделал и тут расскажу, как теперь выглядит мой obsidian.Кроме простой структуризации и удаления лишнего, я также провел некоторые махинации над кодом dataviewjs своей библиотеки книг и дод…

  • пятница, 28 августа 2026 г. в 00:00:04
javascript
Self‑hosted вместо подписок: асинхронная очередь для ИИ‑агента на n8n и Redis

В прошлой статье я показал, как простой дебаунс на Redis спасает бюджет от дробных сообщений: клиент строчит «привет» — «сколько стоит» — «а есть другой размер» пятью сообщениями подряд, а LLM получает один склеенный промпт.Дисклеймер: в статье упоминается Meta: организация признана террористической и запрещена в РФ) Схема, код и цифры взяты из продакшена; название проекта и префиксы ключей изменены. Статья не является рекламой/самопиаром и тому подобное.Сегодня я поделюсь уровнем ниже. Дебаунс…

  • четверг, 27 августа 2026 г. в 00:00:06
javascript
Разработчики в вашей компании уже тратят много токенов. Как проверить реальную пользу ИИ для бизнес…

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

  • среда, 26 августа 2026 г. в 00:00:11
javascript
Ускоряем drop in replace Next.js в 100 раз. Часть 2

В первой части мы разобрали архитектуру Rari, выяснили, почему Rust перед V8 даёт выигрыш в производительности, и посмотрели на бенчмарки. В этой статье хочется поговорить о том, что обычно остаётся за кадром бенчмарков: как это работает в продакшене, что конкретно поменялось под капотом, где ломается совместимость с Next.js, как мы портировали их SWC-плагины и как производительность выросла с 4x до 67x.Один процесс вместо целого стека технологийNext.js в продакшене почти никогда не работает бе…

  • среда, 26 августа 2026 г. в 00:00:10
javascript
Скролл-фильм на лендинге весил 84 МБ. WebCodecs ужал его до 18 — вот что сработало, а что нет

У меня лендинг устроен как «фильм, который листаешь»: крутишь колесо — камера едет по сцене. Классическая реализация такого — секвенция кадров: сотни WebP, по картинке на каждую позицию скролла. Работает, но на мобильной версии это выливалось в 84 МБ трафика. На десктопе — 128. Для лендинга, который человек открывает с рекламы на телефоне где-нибудь в лифте, — приговор.Расскажу, как я заменил секвенции кадров на видеопоток, который декодируется прямо в браузере через WebCodecs, почему выбросил …

  • среда, 26 августа 2026 г. в 00:00:09
javascript
Монорепозиторий с поддержкой Vite, TS, ESM и абсолютных импортов без расширений с использованием «s…

ЦелиНастройка абсолютных импортов без расширений для внутренних модулей пакета с использованием Node.js subpath imports, как единого источника псевдонимов: без дублирования в tsconfig path aliases;с поддержкой VSCode IntelliSense - автоимпорт, автодополнение и всплывающие подсказки импортов.Настройка conditional exports - маппинг на исходный код внутренней библиотеки в dev-режиме, для работы Vite(HMR) и VSCode(IntelliSense) с живым кодом без пересборки.Настройка приоритета для автоимпорта публи…

  • среда, 26 августа 2026 г. в 00:00:08
javascript
Один рендер‑стек, два мира: как мы показали layout микросхем в браузере через WebGPU

Тот же Rust‑код, что рисует топологию на десктопе, собирается в wasm и рисует в <canvas> через WebGPU. Сайт при этом не знает про GPU: кликнул на нарушение в списке, камера уехала на место, маркер показал дефект. Ниже как это устроено, где «просто пересобрали» было бы враньём, и какие ловушки сидят не в Rust, а в вебе.ЗадачаУ нас десктопный инструмент для топологии интегральных схем, layout в формате GDSII (и OASIS). Файл описывает геометрию кристалла: иерархия ячеек, на листьях прямоугол…

  • среда, 26 августа 2026 г. в 00:00:07
javascript
o2 game engine

Этот проект я начал 11 лет назад и вложил в него все свои навыки и опыт работы в геймдеве. Я делаю игры уже 15+ лет, и в своем движке я постарался дать разработчику то что считаю нужным: удобство и простоту, при этом оставляя его производительным и гибким. Я работаю в основном с мобильными играми, так что движок скорее нацелен на мобилки. Однако нет препятствий использовать его для десктопа и под веб.Я все еще дорабатываю его, но он уже вполне стабилен и я делаю игры на нем. Сейчас это ближе к …

  • вторник, 25 августа 2026 г. в 00:00:11
javascript
Как устроен локальный шахматный помощник в браузере: Stockfish 18, Manifest V3 и веб-доски

Я хотел подсказку рядом с доской, а не ещё одну вкладку с движком. Stockfish 18 давно умеет искать сильный ход, упаковать WASM в Chromium-расширение тоже не подвиг. Первое демо на своей статичной странице собралось за вечер: фигуры сняли, FEN собрали, стрелка легла. Настоящая работа началась, когда ту же схему повесили на живой шахматный сайт.Самый неприятный случай оказался не «движок тупит», а «движок прав, только не про эту доску». Реванш на Lichess часто стартует на том же URL и с той же на…

  • вторник, 25 августа 2026 г. в 00:00:09