Category : javascript

javascript
Полезные новшества ECMAScript 2026

JavaScript получает новый стандарт языка каждый год. Некоторые редакции представляют синтаксис, который меняет то, как программы пишутся или как они выполняются. Версия ECMAScript 2026 (ES17) представила набор полезных возможностей, которые мы рассмотрим в этой статье. Эти возможности добавляют API для задач, которые сейчас решаются с помощью небольших утилит, повторяющихся проверок или обходных путей, подверженных ошибкам.В этой статье я сфокусируюсь на дополнениях, позволяющих удалить часть к…

  • среда, 23 сентября 2026 г. в 00:00:09
javascript
Промпт — не контракт: замерил, как часто модель нарушает жёсткие правила, и вынес их в код

У меня в проде работает ИИ-консультант на сайте. У него есть два правила, которые нарушать нельзя вообще: не называть цены и не называть клиентов, которые под NDA. Оба правила были написаны в системном промпте капслоком, с объяснением почему.Я замерил, как они соблюдаются. Получилось так:правило «не называй цен» модель срывает примерно раз на восемь прогонов;имя клиента под NDA проскакивало раз на пять.Это не «модель плохая» — модель нормальная. Это про то, что инструкция в промпте не является …

  • среда, 23 сентября 2026 г. в 00:00:07
javascript
Публикуйте инструменты, а не пиксели: собираем WebMCP‑магазин на React и считаем грабли

Представим обычный интернет‑магазин. Пользователь открывает каталог, вводит «наушники» в поиск, включает фильтр наличия, задаёт цену до 10 000 рублей, открывает карточку и добавляет товар в корзину. Шесть вполне понятных действий. Если их выполняет человек, всё хорошо. Если за дело берётся AI‑агент, начинается небольшой квест: прочитать страницу, найти поле, угадать назначение переключателя, нажать кнопку, проверить результат и не купить случайно кофеварку вместо наушников.А что, если сайт сам …

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

Мы делаем карту загруженности московских парковок — parkout.ru. Раз в полчаса собираем данные по 210 муниципальным парковкам, показываем теплокарту и прогноз.Подложка у нас была растровая, от Esri. И она была мыльная. На максимальном зуме вместо домов — кашица из пикселей, подписи не читаются. Стали разбираться: оказалось, что тайлы z17 и z18 приходят одинаковыми — байт в байт, 2521 байт каждый. Это заглушка. Выше z16 у этого слоя данных просто нет, а сервер вместо 404 отдаёт растянутую картинк…

  • среда, 23 сентября 2026 г. в 00:00:05
javascript
Про то, как я научил своего аватара снимать ролики по сценарию без ИИ-генерации видео (часть 2)

NB. Это дневник почти двух месяцев разработки. Здесь будет много кода, неудачных экспериментов, технических решений и анимированных примеров. Одно изменение постоянно тянуло за собой другое, поэтому получилось длинно. Для удобства разбил историю на главы — можно переходить сразу к интересующим задачам.Приятного чтения!ОглавлениеВступление Мельтешение рта или как я переделал артикуляцию Ручной фон слишком долго делать или зачем мне понадобились генераторы Правка сценария затирала весь проект или…

  • вторник, 22 сентября 2026 г. в 00:00:08
javascript
React 19.3

Эта статья — перевод оригинальной статьи «React 19.3».Также я веду телеграм канал «Frontend по‑флотски», где рассказываю про интересные вещи из мира разработки интерфейсов и AI.Новые возможности ReactView TransitionsНовый компонент <ViewTransition> позволяет анимировать элементы интерфейса при их появлении, исчезновении, перемещении или изменении размера с помощью браузерного View Transition API.В прошлом году мы представили его как экспериментальный API, а в React 19.3 он получил стабиль…

  • вторник, 22 сентября 2026 г. в 00:00:07
javascript
История npm‑библиотеки morphing‑scroll

Хочу рассказать о своей npm‑библиотеке — это мой второй и самый сложный npm‑проект на момент написания статьи. Глубоко в код погружаться не буду — поделюсь историей создания и мотивацией.ВступлениеПримерно в 2015 году я получил свою первую работу UI/UX‑дизайнером. Рисовал интерфейсы мобильных и десктопных приложений в популярном тогда Sketch, на выделенном мне Mac, и был этому искренне рад. Шло всё неплохо: я соблюдал гайдлайны iOS и Android, а когда идея приложения во мне откликалась, старался…

  • вторник, 22 сентября 2026 г. в 00:00:06
javascript
Субтитры с переводом в расширении Chrome: звук вкладки в MV3, один поток вместо двух сервисов

Я один пишу расширение Chrome, которое показывает субтитры с переводом поверх созвона в Meet, Zoom или Teams, открытых во вкладке браузера. В звонок при этом никто не заходит, звук берётся из вкладки. Ниже три вещи, на которых ушло больше всего времени. Цифры на 17 сентября 2026.Звук вкладки в Manifest V3В MV3 фон расширения это service worker, а в нём нет ни Web Audio, ни getUserMedia. Поэтому service worker получает не поток, а только идентификатор, и создаёт offscreen-документ (reasons: [&#3…

  • вторник, 22 сентября 2026 г. в 00:00:05
javascript
Кнопка нажата, а ответа нет: как не потерять действие пользователя и не наделать дублей

Действие сохраняется в очереди при обрыве сети, а сервер отсекает повторУ меня планировщик для школьников. Заходят в него в основном с телефона: из школы, где вайфай один на четыре этажа, и из метро по дороге домой.Ломается это так. Человек жмёт кружок «готово» — кружок не закрашивается. Ошибки нет, спиннера нет, вообще ничего. Он жмёт ещё раз, убирает телефон в карман, а вечером видит задачу невыполненной. Если не повезло — видит две одинаковые.Речь не про офлайн-приложение: это отдельная боль…

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