Category : javascript

javascript
Как я подружил блок‑головоломку с Шопеном на WebAudio

Я делаю Blocturne, головоломку с блоками для Telegram. Механика знакомая по Block Blast: поле 8×8, три фигуры в лотке, собираешь ряды и столбцы. Сверху прикручен подсчёт как в Balatro: фишки умножаются на множитель, между раундами лавка с предметами. Но рассказать хочу про звук, потому что с ним я провозился дольше, чем со всем остальным.Хотелось, чтобы звуки ходов попадали в музыку, а не играли поверх неё. В итоге получился маленький музыкальный движок, отдельный режим для слабых Android и пар…

  • понедельник, 19 октября 2026 г. в 00:00:09
javascript
Среда исполнения JavaScript в браузере по стандарту HTML: агенты, event loop, task'и и микрозадачи

Это продолжение статьи «Модель исполнения JavaScript по спецификации ECMAScript: call stack, контексты, окружения и замыкания». Если ты её не читал, лучше начать с неё: агент, Realm Record, execution context, execution context stack и Job здесь заново не объясняются.Обычно браузер представляют так: у каждой вкладки свой поток и свой event loop, а промис срабатывает раньше таймера, потому что микрозадачи приоритетнее макрозадач. На практике этого хватает, но в стандарте HTML всё устроено иначе. …

  • понедельник, 19 октября 2026 г. в 00:00:08
javascript
3D гоночки от GLM 5.3 Flash с нулевым уровнем размышлений

Простите, что без пафоса. Просто сидел на созвоне и увидел, что в OpenCode раздают бесплатные китайские нейронки GLM 5.3 Flash и DeepSeek 4.1 Flash. Решил попробовать, скачал, взглянул — мама родная, там с thinking вообще не пробиться, сервера падают с ошибкой.Ладно, думаю, посмотрим, что будет с нулевым уровнем размышлений. Без всякой надежды, ради смеха и во имя Фрэнсиса Бэкона просто закидываю тупейший промпт, от одного вида которого у вас должны закровоточить глазаНапиши 3D игру — машина ед…

  • воскресенье, 18 октября 2026 г. в 00:00:06
javascript
Как я добавил лицо голосовому ИИ на Яндексе: Simli, Anam и проверка на iPhone

У моего голосового ИИ-администратора Айки уже были голос, сценарий разговора и работающая страница. Не было лица. Я хотел его добавить, сохранив Yandex Realtime: пусть новый сервис получает готовый звук и двигает под него губами.Попробовал Simli и Anam. Лицо появилось, но вместе с ним пришлось разбираться с паузой перед ответом, запуском видео на iPhone и мобильным интернетом. А на втором персонаже, Еве, выяснилось, что убедительность портрета зависит не только от лица, но и от того, что у него…

  • воскресенье, 18 октября 2026 г. в 00:00:05
javascript
Карандашный набросок, который заливается акварелью: разбираю эффект на SVG без библиотек

Делал интерактивную открытку на день рождения и хотел, чтобы картинка не просто появлялась, а «рисовалась»: сначала карандашные линии, потом по касанию её заливает акварель, причём с рваным краем, как у краски, которая впитывается в бумагу.Готовых решений под такое не нашёл. Видео не подходило: нужна была реакция на тап и чёткость на любом экране. В итоге всё собралось на чистом SVG, двух фильтрах и пятидесяти строках JS. Ниже разбираю по шагам, с кодом и граблями, на которые наступил.Что получ…

  • воскресенье, 18 октября 2026 г. в 00:00:03
javascript
React 19: разделяем логику и разметку, тестируем с Shallowly и Vitest

В прошлой статье я показал короткий тест с передачей пропсов. Теперь разберу компонент чуть подробнее: сначала приведу код к тому виду, в котором мне удобно с ним работать, а потом проверю его через свою библиотеку Shallowly.Начнём с панели профиля. Пока данные грузятся, она показывает сообщение. Когда профиль готов — передаёт имя в карточку. Входных пропсов у самой панели пока нет, усложнять пример ими не будем.Исходный компонентimport { UserCard } from './UserCard'; import { useProfil…

  • воскресенье, 18 октября 2026 г. в 00:00:02
javascript
Я строил не 3D‑мир, а базовый слой под ним: три узких места в браузерном 3D

Последние месяцы я делаю 3D‑мир, который работает прямо в браузере — на Three.js: сцена, персонажи, сеть.Самое неприятное в производительности браузерного 3D — не ошибки. Ошибку видно: она в консоли, у неё есть стек и виновник. А есть второй класс проблем: всё работает, ничего не падает, просто тормозит. Консоль чистая, кадры падают, и непонятно, с чего начинать.Речь про Three.js, но большинство выводов переносится на любой WebGL‑стек.Почему речь про слой, а не про «ещё один 3D‑мир»Когда говоря…

  • суббота, 17 октября 2026 г. в 00:00:05
javascript
Giga IDE Pro больше не будет. Но это хорошая новость

Pro-сборка была важным этапом в развитии GigaIDE: она позволила быстрее развивать профессиональные инструменты, собирать обратную связь от корпоративных пользователей и проверять сценарии, которые выходят за рамки Community-версии. Но у отдельного дистрибутива есть и обратная сторона: пользователю нужно выбирать сборку, командам — отдельно управлять установками, а продукту — поддерживать лишнюю развилку там, где её уже можно убрать.Поэтому мы упростили модель поставки. На GitVerse уже вышел еди…

  • суббота, 17 октября 2026 г. в 00:00:04
javascript
React 19.3: что реально поменялось и почему это важно

Если следить за React только по крупным релизам, легко пропустить момент, когда библиотека тихо меняет направление. React 19.3 — как раз такой случай. Сам релиз вышел 9 сентября 2026 года. И я хочу поделиться парой моментов из этого обновления. Рассмотрим пару хуков это ViewTransition и Fragment Refs. Еще, что я могу выделить, это новые возможности для SSR, Server Components и работы с браузерными API. Самое интересное тут даже не в том, сколько новых API добавили. Просто React постепенно перет…

  • суббота, 17 октября 2026 г. в 00:00:03