Я в одиночку делаю Brawl Town - уличную драку в браузере в духе Final Fight: одна длинная улица, сотни бойцов, все против всех, круглые сутки. https://habr.com/ru/articles/1095682/После запуска поток игроков быстро сдулся, и стало понятно, что нужен повод вернуться в игру - и повод о ней рассказать. До Хэллоуина оставалась неделя. В статье - как я за эту неделю сделал сезонный ивент: что он должен был уметь кроме тыкв, как устроен босс, почему пришлось переделывать ему анимацию и что показал на…
Я преподаю детям программирование и вижу одну и ту же картину: на обычных тренажёрах печати дети быстро устают, начинают отвлекаться, а некоторые просто просят выключить. Тренажёра для детей с дислексией я не нашла ни одного. Ждать, пока его кто-то придумает, я не стала и сделала свой — Клавитраж.Идея пришла не только с занятий: у меня самой дислексия, и именно клавиатура когда-то помогла мне справиться с письмом. Как я живу с этим и почему печать стала для меня спасением, расскажу в отдельной …
Месяц назад я написал статью о том, как сделал отладчик рендеров для Vue — инструмент, который называет точную причину каждой перерисовки. Рассказывал про renderTriggered, про ловушки с process.env.NODE_ENV, кириллицей в байтовых смещениях и вычислением чужих computed.С тех пор вышла версия 0.8 — с тремя большими фичами, которые я не планировал делать так быстро. Расскажу, что нового и зачем.Что былоЕсли не читали первую статью — вкратце. vue-why-render подключается к Vue 3 приложению двумя стр…
Файлы из браузера в браузер без сервера: что я узнал о WebRTC, пока делал tfile.ioЗадача звучит как упражнение на выходные: человек A открывает сайт, получает ссылку, отправляет её человеку B. B открывает ссылку — и они кидают друг другу файлы напрямую, браузер в браузер. Сервер нужен только чтобы «познакомить» их, сами байты через него не идут.Демо на 200 строк с RTCPeerConnection и createDataChannel пишется за вечер. А потом начинается реальный мир: Safari на телефоне, который засыпает через …
Я сделала симулятор судебно-психиатрической экспертизы. Браузерная игра, ретро-терминал, 100 вопросов MMPI-2, три уголовных дела, три линии защиты. Задача игрока — обмануть психиатрическую комиссию и получить нужный диагноз. Поиграть, получить вердикт и памятку будущего симулянта можно уже сейчас: https://gcodegspot.github.io/obmani-serbskogo/Большинство проигрывает с первого раза. Причём не потому что не знают ответов, а потому что не понимают, как именно я их ловлю. Ниже будет разбор реальной…
Привет. Я делаю одиночную космическую игру VoidVibe: полёт, бой, торговля, станции, морпехи, абордаж. Работает в браузере (WebGL2) и на Android, оффлайн. Вся игра это один index.html. Внутри нет ни одной картинки, ни одного звукового файла, ни одной библиотеки. Для себя я поставил лимит 512 КБ по gzip на весь файл. Сейчас release-сборка весит 193 КБ из 512, а dev-сборка с панелью разработчика 264 КБ.Здесь без воды: как устроен генератор, как лежат модели, что делают шейдеры, как синтезируется з…
Поиск узкопрофильных вакансий (например, n8n‑инженер или специалист по интеграциям) через RSS‑ленты превращается в борьбу с шумом. Простые текстовые фильтры по ключевым словам «автоматизация» или «API» дают массу ложных срабатываний: от «менеджеров по автоматизации продаж» до «руководителей API‑команд».В этой статье я разберу архитектуру end‑to‑end пайплайна на n8n, который использует LLM (Groq API) для жесткого семантического скоринга каждой вакансии. Мы не просто ищем совпадения, а заставляем…
Год назад наш ИИ чуть не оформил заказ за пользователя.Изначально отдали GPT полный контроль: вот тебе страница магазина, вот список промокодов, разбирайся. На демо это выглядело хорошо. Ровно до того дня, когда он зашел на страницу оформления, увидел заполненную форму, прикинул, что задача выглядит примерно так, и двинулся нажимать кнопку покупки. Формально он выполнял инструкцию. Фактически мы в этот момент поняли, что полный контроль над чужим браузером LLM давать нельзя. Да и в релизе это б…
ВведениеПредставьте, что вам нужно отрендерить в React-приложении таблицу с 100 000 объектов, которые непрерывно обновляются в реальном времени через WebSocket. Каждые 50 мс прилетает батч из 5000 дельт (изменений).Стандартный подход с useState или классическим Redux (с Immer) убивает браузер за несколько секунд:Main Thread блокируется: Парсинг JSON и вычисление диффов занимают сотни миллисекунд.Garbage Collector сходит с ума: Иммутабельные обновления создают тысячи новых объектов-клонов, вызыв…