RU

Среда исполнения JavaScript в браузере по стандарту HTML: агенты, event loop, task'и и микрозадачи

Обычно браузер представляют так: у каждой вкладки свой поток и свой event loop, а промис срабатывает раньше таймера, потому что микрозадачи приорите…

JavaScriptevent loopмикрозадачиHTML Standardtask queuePromisesetTimeoutагентыrealmenvironment settings object
Habr
RU

Я строил не 3D‑мир, а базовый слой под ним: три узких места в браузерном 3D

Последние месяцы я делаю 3D‑мир, который работает прямо в браузере — на Three.js: сцена, персонажи, сеть. Самое неприятное в про…

Three.jsWebGLJavaScriptоптимизацияпроизводительностьшейдерырендерингбраузерный 3D
Habr
RU

Gauntlet Loop — величайшее заклинание в мире маглов

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

сезон Код будущегоразработка с ИИChatGPTCodexGauntlet Loopтестированиеинтерактивные лекцииHTMLJavaScriptлинейная алгебра
Habr
RU

Зачем быстрая реактивность за пределами DOM: ответы на вопросы и знакомство с Raph

Зачем ускорять реактивность, если всё упирается в DOM? Рассказываю об устройстве Raph/Nova и показываю, как одно ядро используется для DOM и Canvas.…

JavaScriptреактивностьRaphNovaCanvasWebGLпроизводительностьбенчмаркиуправление состояниемвизуализация данных
Habr
RU

Функциональные флаги в CI/CD: что, зачем и как

Что такое функциональные флаги и как они ускоряют CI/CD. Виды флагов, инструменты (Flagsmith, LaunchDarkly), интеграция с pytest и лучшие практики в…

APIJavaScriptТестированиеФункциональное программированиеБэкендПриложениеРазработкаСтатьи
Tproger
RU

От RTSP-камеры до истории событий: настраиваем видеоаналитику через JavaScript Viewer

Привет, Хабр! В  первой статье  я разбирал внутреннее устройство real-time-конвейера на C++20: почему медленный YOLO не должен останавлива…

JavaScriptRTSPHLSOpenCVYOLOONNX RuntimetrackingвидеоаналитикаREST APIPostgreSQL
Habr
RU

EventBus и CommandBus во frontend: когда прямых вызовов становится слишком много

Практический разбор двух простых шин: как разделить запуск действий и реакцию на изменения в реальном frontend-приложении. Читать далее

EventBusCommandBusJavaScriptTypeScriptfrontendархитектура frontendпаттерны проектированияcommand patternвеб-разработка
Habr
RU

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

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

cronпарсерnatural languageTypeScriptJavaScriptopen sourceрасписаниеJSRMCPproperty-based testing
Habr
RU

Поиск по миллиону товаров на JavaScript: когда сжатый индекс проигрывает массиву

На миллионе синтетических записей в Node.js сжатый индекс обогнал простое пересечение массивов примерно в пять раз — на запросах «редкое + частое».…

JavaScriptинвертированный индексUint32ArrayvarintIndexedDBWeb Workersоптимизация памяти
Habr
RU

Как тестировать API с 202 Accepted и не пропускать сбои фоновой обработки

Запрос получил 202 , автотест прошёл, а через несколько дней выясняется, что часть операций так и не завершилась успешно. Такая ситуа…

автотестытестирование APIAPIJavaScriptасинхронные операцииавтоматизация тестированияHTTPинтеграционное тестированиепроверка качестваразработка ПО
Habr
RU

Он удалил 11 строк кода. Через час перестали собираться Babel, React Native и тысячи проектов по всему миру

История left-pad, самого нелепого апокалипсиса в истории open-source. Заодно про то, почему миф о надёжности открытого кода не выдерживает проверки…

eft-padnpmopen sourceцепочка поставокsupply chainзависимостиBabelJavaScriptмейнтейнерыинцидент.
Habr
RU

Модель выложила системный промпт, в котором было написано его не выкладывать

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

промпт-инъекциябезопасность LLMлокальные моделисистемный промптрегулярные выражениякириллицаJavaScriptNode.js
Habr
RU

Cordis: плагинная архитектура как новый слой композиции JS/TS-приложений

Что изменится, если плагин станет не дополнением, а основной единицей архитектуры приложения? На примере Cordis и DeepSeek Harness разберём, как сре…

CordisDeepSeek HarnessJavaScriptTypeScriptплагиныархитектуракомпозируемостьжизненный циклModule FederationAI-агенты.
Habr
RU

WebLLM запускает языковую модель в браузере без сервера за один вечер

Разбор WebLLM 0.2.84: установка, код чата со стримингом, видеопамять для 9 моделей от 0,7 до 6,4 ГБ, 71–80% нативной скорости и поддержка WebGPU в б…

JavaScriptOpen SourceИскусственный интеллектБраузерыWebAssemblyФронтендСтатьи
Tproger
RU

Агенты Fable 5.1 собрали в браузере проходимую копию Юнион-сквер

PhiloLabs выложила fable51-worlds: рой агентов Claude Fable 5.1 по одному промпту собрал проходимую 3D-копию площади Юнион-сквер в Сан-Франциско на…

JavaScriptOpen SourceИскусственный интеллект3D-технологииСделано с помощью ИИНовости
Tproger
RU

Негативные тесты API, которые ничего не доказывают

Негативные тесты часто выглядят убедительно: отправили некорректный запрос, получили 4xx , проверка зелёная. Но такой результат ещё не гарантирует,…

тестированиеавтотестытестирование APIQAнегативное тестированиеавтоматизация тестированияпроверка качестваAPIPlaywrightJavaScript
Habr
RU

Firefox для iOS получил встроенный блокировщик рекламы, а Firefox 155 на десктопе — CSS-функции progress() и alpha()

Mozilla добавила в Firefox для iOS встроенный блокировщик рекламы на WebKit Content Blocker и EasyList. Одновременно вышел Firefox 155 с новыми CSS-…

JavaScriptВеб-разработкаCSSБраузерыiOSНовости
Tproger
RU

Как устроен локальный шахматный помощник в браузере: Stockfish 18, Manifest V3 и веб-доски

Stockfish умеет находить сильные ходы. Но браузерному расширению ещё нужно понять, какая из нескольких досок относится к текущей партии, дождаться с…

StockfishManifest V3расширения для браузеровGoogle ChromeJavaScriptшахматный помощникподсказки ходовшахматный движокшахматный читChessNavio
Habr
RU

Платформер в стиле DOOM: портируем старую курсовую на чистый JavaScript

Несколько лет назад у нас с одногруппником был зачёт по C++, и вместо того чтобы сделать что-то скромное (например, «Калькулятор» или «Генератор пар…

JavaScriptCanvasDOOMплатформерSFMLC++портирование кодаигровая физикарейкастингruvds_статьи
Habr
RU

От клика до железа: хроника одного запроса. Часть 2

В первой части мы заставили кнопку на веб-странице запустить локальный exe-файл через расширение Chrome и Native Messaging Host. Теперь усложним зад…

Chrome Native Messagingрасширения ChromeJavaJavaScriptGraalVMconnectNativeService WorkerManifest V3Native ImageWindows
Habr
RU

Как я собрал браузерный хоррор на Three.js: GLB-контракт, аномалии и PS1-рендеринг для слабых устройств

Как я сделал браузерную 3D-игру на Three.js и Vue: система аномалий, GLB-сцена, PS1-рендеринг и оптимизация под слабые устройства. Читать далее

three.jswebglJavaScriptTypeScriptVue.jsblenderglTFРазработка игрбраузерные игрыоптимизация производительности
Habr
RU

Как я пытался сделать стратегию из котов в стиральных машинах — и почему правила оказалось сложнее написать, чем код

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

геймдевбраузерная играигровая механикаUXJavaScriptискусственный интеллектпроцедурные правила
Habr