Category : javascript

javascript
Редактор писал «Сохранено» и ничего не сохранял: TipTap поверх чужого HTML

Я делаю сервис, который пишет статьи и сам публикует их на сайты клиентов. Как устроена публикация в четыре CMS, я уже рассказывал здесь. Сегодня про соседний кусок: редактор в личном кабинете, где человек правит статью перед публикацией.Как минимум два месяца этот редактор показывал «Сохранено» и не сохранял ни символа. Сама ошибка глупая, на неё хватит одного абзаца. Хуже, что очевидное исправление уничтожило бы статьи. По дороге к правильному нашлись ещё три ловушки. Санитайзер nh3 тратит по…

  • среда, 28 октября 2026 г. в 00:00:05
javascript
Правый клик с памятью: почему я храню счётчик в id пункта меню Chrome

Мои хобби-проекты - небольшие расширения для Хрома и сайты-микросервисы. Одно из расширений, PDF to PNG, внезапно забралось на первое место в поиске Chrome Web Store по запросу “pdf to png” (ну, почти всегда), и им пользуются аж под 500 человек - это потрясающе!Раз PDF в картинки получилось, немедленно загорелось сделать и наоборот - картинки -> PDF, только ещё круче: чтоб работало через правый клик по картинке на любой странице, чтоб была лёгкая(!) возможность настроек - и чтоб всё прям лок…

  • среда, 28 октября 2026 г. в 00:00:05
javascript
Рост и вес неандертальца по одной кости: я сделал открытый калькулятор по научным формулам

В июле 2026 года в PNAS вышла статья Кевина Хаталы и соавторов про следы на берегу древнего озера в северной Кении. Около 1,4 млн лет назад там прошли восемь парантропов вида Paranthropus boisei. От этого вида до сих пор находили в основном черепа с огромными челюстями и зубами, а ниже шеи почти ничего. По отпечаткам стоп авторы оценили рост до 1,8 м и массу около 75 кг. Это заметно больше, чем получалось раньше по редким костям.Меня в этой новости зацепило не то, что парантропы оказались крупн…

  • вторник, 27 октября 2026 г. в 00:00:24
javascript
Тыквенный король: хэллоуинский босс для браузерной драки — от календаря до 2000 игроков на улице

Я в одиночку делаю Brawl Town - уличную драку в браузере в духе Final Fight: одна длинная улица, сотни бойцов, все против всех, круглые сутки. https://habr.com/ru/articles/1095682/После запуска поток игроков быстро сдулся, и стало понятно, что нужен повод вернуться в игру - и повод о ней рассказать. До Хэллоуина оставалась неделя. В статье - как я за эту неделю сделал сезонный ивент: что он должен был уметь кроме тыкв, как устроен босс, почему пришлось переделывать ему анимацию и что показал на…

  • вторник, 27 октября 2026 г. в 00:00:22
javascript
Свой тренажёр печати для детей: три ошибки и одна догадка, которая сработала

Я преподаю детям программирование и вижу одну и ту же картину: на обычных тренажёрах печати дети быстро устают, начинают отвлекаться, а некоторые просто просят выключить. Тренажёра для детей с дислексией я не нашла ни одного. Ждать, пока его кто-то придумает, я не стала и сделала свой — Клавитраж.Идея пришла не только с занятий: у меня самой дислексия, и именно клавиатура когда-то помогла мне справиться с письмом. Как я живу с этим и почему печать стала для меня спасением, расскажу в отдельной …

  • вторник, 27 октября 2026 г. в 00:00:22
javascript
vue‑why‑render 0.8: граф реактивности, WASM‑ядро и VS Code расширение

Месяц назад я написал статью о том, как сделал отладчик рендеров для Vue — инструмент, который называет точную причину каждой перерисовки. Рассказывал про renderTriggered, про ловушки с process.env.NODE_ENV, кириллицей в байтовых смещениях и вычислением чужих computed.С тех пор вышла версия 0.8 — с тремя большими фичами, которые я не планировал делать так быстро. Расскажу, что нового и зачем.Что былоЕсли не читали первую статью — вкратце. vue-why-render подключается к Vue 3 приложению двумя стр…

  • понедельник, 26 октября 2026 г. в 00:00:20
javascript
Файлы из браузера в браузер без сервера: что я узнал о WebRTC, пока делал tfile.io

Файлы из браузера в браузер без сервера: что я узнал о WebRTC, пока делал tfile.ioЗадача звучит как упражнение на выходные: человек A открывает сайт, получает ссылку, отправляет её человеку B. B открывает ссылку — и они кидают друг другу файлы напрямую, браузер в браузер. Сервер нужен только чтобы «познакомить» их, сами байты через него не идут.Демо на 200 строк с RTCPeerConnection и createDataChannel пишется за вечер. А потом начинается реальный мир: Safari на телефоне, который засыпает через …

  • понедельник, 26 октября 2026 г. в 00:00:19
javascript
Истинный схизис и социальная инженерия: как устроена браузерная психологическая дуэль, которую нево…

Я сделала симулятор судебно-психиатрической экспертизы. Браузерная игра, ретро-терминал, 100 вопросов MMPI-2, три уголовных дела, три линии защиты. Задача игрока — обмануть психиатрическую комиссию и получить нужный диагноз. Поиграть, получить вердикт и памятку будущего симулянта можно уже сейчас: https://gcodegspot.github.io/obmani-serbskogo/Большинство проигрывает с первого раза. Причём не потому что не знают ответов, а потому что не понимают, как именно я их ловлю. Ниже будет разбор реальной…

  • понедельник, 26 октября 2026 г. в 00:00:18
javascript
Космическая игра в одном HTML-файле: процедурная галактика, планеты из шума и звук без единого семп…

Привет. Я делаю одиночную космическую игру VoidVibe: полёт, бой, торговля, станции, морпехи, абордаж. Работает в браузере (WebGL2) и на Android, оффлайн. Вся игра это один index.html. Внутри нет ни одной картинки, ни одного звукового файла, ни одной библиотеки. Для себя я поставил лимит 512 КБ по gzip на весь файл. Сейчас release-сборка весит 193 КБ из 512, а dev-сборка с панелью разработчика 264 КБ.Здесь без воды: как устроен генератор, как лежат модели, что делают шейдеры, как синтезируется з…

  • воскресенье, 25 октября 2026 г. в 00:00:09