Всем привет, это третья часть, в которой пилю калькулятор плитки - tilely.ru. Получился довольно крупный патч, в основном вокруг 3D-режима, и там оказалось прилично багов. Многое пришлось переделывать из того, что сначала казалось логичным, а на практике оказалось вообще неудобным.Перед самим 3D - то, что допилил ещё раньше в очереди. Теперь можно загружать фото плитки, чтобы не смотреть на однотипные прямоугольники одного цвета. Есть кнопка «применить ко всем комнатам». Если у вас, скажем, са…
Привет, я – фронтенд-разработчик и сегодня хотел бы поднять данную тему. Сразу скажу: так как работаю в основном с React, то в конце будет разбор структуры именно в разрезе React + стейт-менеджер MobX. Итак, поехали. В большинстве SPA-приложений после успешного входа сервер возвращает JWT, фронтенд сохраняет его в localStorage, а затем при каждом запросе добавляет в заголовок Authorization.Получается примерно такая последовательность:POST /login -> JWT -> localStorage -> Authorization:…
Мне давно нравится идея хранить заметки обычными Markdown‑файлами в своём репозитории на GitHub. Файлы остаются твоими, их можно открыть на github.com или в любом редакторе, а история изменений достаётся даром, это просто коммиты.Был проект, который делал ровно это: BatNoter, 2,4 тысячи звёзд на GitHub. Веб‑приложение на React, заметки в вашем репозитории. Но у него был свой сервер на Go: через него шёл вход по OAuth и все запросы к GitHub. В конце 2022 года сервер batnoter.com перестал отвечат…
Аналоги умеют мигать рамкой вокруг обновившегося компонента. Этого хватает, чтобы заметить проблему, но не чтобы её починить: остаётся вопрос «а что вообще изменилось?».Оказалось, Vue знает ответ и отдаёт его сам — просто этим почти никто не пользуется. Под катом: как устроен хук renderTriggered, почему сырое событие из него нечитаемо, и три способа уронить прод‑сборку чужого приложения дев‑инструментом, который в проде вообще не должен работать.Чего не хваталоЕсть Vue DevTools с галкой «Highli…
Электронные навигационные карты (ENC) формата S-57 стоят на каждом коммерческом судне в мире. Стандарт живёт с 1996 года, но живого JavaScript-парсера для него я так и не нашёл: либо серверный GDAL, либо проприетарные SDK за шестизначные суммы в год. Я написал полный стек с нуля: бинарный парсер ISO 8211, доменную модель S-57 и S-101, рендер символики S-52 на Canvas2D. Всё бесплатно работает в браузере, без сервера, MIT-лицензия. s57-parser: морская карта S-57 в браузере. В коде слева оставил п…
JavaScript получает новый стандарт языка каждый год. Некоторые редакции представляют синтаксис, который меняет то, как программы пишутся или как они выполняются. Версия ECMAScript 2026 (ES17) представила набор полезных возможностей, которые мы рассмотрим в этой статье. Эти возможности добавляют API для задач, которые сейчас решаются с помощью небольших утилит, повторяющихся проверок или обходных путей, подверженных ошибкам.В этой статье я сфокусируюсь на дополнениях, позволяющих удалить часть к…
У меня в проде работает ИИ-консультант на сайте. У него есть два правила, которые нарушать нельзя вообще: не называть цены и не называть клиентов, которые под NDA. Оба правила были написаны в системном промпте капслоком, с объяснением почему.Я замерил, как они соблюдаются. Получилось так:правило «не называй цен» модель срывает примерно раз на восемь прогонов;имя клиента под NDA проскакивало раз на пять.Это не «модель плохая» — модель нормальная. Это про то, что инструкция в промпте не является …
Представим обычный интернет‑магазин. Пользователь открывает каталог, вводит «наушники» в поиск, включает фильтр наличия, задаёт цену до 10 000 рублей, открывает карточку и добавляет товар в корзину. Шесть вполне понятных действий. Если их выполняет человек, всё хорошо. Если за дело берётся AI‑агент, начинается небольшой квест: прочитать страницу, найти поле, угадать назначение переключателя, нажать кнопку, проверить результат и не купить случайно кофеварку вместо наушников.А что, если сайт сам …
Мы делаем карту загруженности московских парковок — parkout.ru. Раз в полчаса собираем данные по 210 муниципальным парковкам, показываем теплокарту и прогноз.Подложка у нас была растровая, от Esri. И она была мыльная. На максимальном зуме вместо домов — кашица из пикселей, подписи не читаются. Стали разбираться: оказалось, что тайлы z17 и z18 приходят одинаковыми — байт в байт, 2521 байт каждый. Это заглушка. Выше z16 у этого слоя данных просто нет, а сервер вместо 404 отдаёт растянутую картинк…