Как устроен локальный шахматный помощник в браузере: Stockfish 18, Manifest V3 и веб-доски
Stockfish умеет находить сильные ходы. Но браузерному расширению ещё нужно понять, какая из нескольких досок относится к текущей партии, дождаться с…
Tech news from the best sources
Stockfish умеет находить сильные ходы. Но браузерному расширению ещё нужно понять, какая из нескольких досок относится к текущей партии, дождаться с…
Несколько лет назад у нас с одногруппником был зачёт по C++, и вместо того чтобы сделать что-то скромное (например, «Калькулятор» или «Генератор пар…
В первой части мы заставили кнопку на веб-странице запустить локальный exe-файл через расширение Chrome и Native Messaging Host. Теперь усложним зад…
Как я сделал браузерную 3D-игру на Three.js и Vue: система аномалий, GLB-сцена, PS1-рендеринг и оптимизация под слабые устройства. Читать далее
Я сделал браузерную стратегию про котов в стиральных машинах и обнаружил, что пересчитать поле гораздо легче, чем объяснить человеку,…
Интернет переполнен руководствами по созданию простых веб-серверов на Node.js. И сегодня их не меньше, чем пять лет назад. Такие примеры хороши для…
У EAN-13 есть контрольная цифра, и из этого обычно делают вывод: раз проверка сошлась, номер прочитан верно. Вывод неверный. Я получил с одной книги…
Поговорим про микро-оптимизацию. Про, казалось бы, самую безобидную вещь: обычный {} . [object Object] выглядит почти бесплатной абстракцией. Создал…
От концепт-дизайна велосипедного магазина до релизной web-игры на GitHub Pages — и почему документация оказалась важнее промптов. Читать далее
Разбираем, как BUNQ LABS сделала zero.university: виртуальный скролл, шейдеры, KTX2/DRACO, адаптивное качество и загрузка текстур без фризов. Провер…
Я довольно долго был уверен, что понимаю, как работает call stack. Ну а что там понимать? Положил кадр, снял кадр, LIFO. Потом открыл спецификацию.…
Promise , setTimeout и async/await часто работают совсем не в том порядке, которого ждёшь по коду, а тяжёлая синхронная функция способна заморозить…
Почему React.memo перестаёт работать из-за inline-пропсов и как это исправить. Разбираем на примере со 200 строками и замерами. — Читать дальше « Re…
Раньше для согласования интерфейса я собирал макет в Figma, описывал каждое поле, отдавал его дизайнеру, а потом отдельно объяснял логику фронтенд-р…
Разбираем, почему возникают hydration mismatches в React Server Components и Next.js App Router, и как находить, исправлять и предотвращать их в pro…
Разбираем, когда деструктуризация объектов в JS и React упрощает код, а когда делает его труднее для чтения. Практические правила от Мэтта Смита. —…
P.S.Euclid — это браузерное математическое приложение, в котором графики, динамическая геометрия и 3D-построения объединены в одной среде. В статье…
В начале этого года я создал самую быструю JS-библиотеку для работы с цветом: парсинг различных форматов, конвертация в OKLAB/OKLCH, проверка попада…
Как добавить кнопку «наверх» в Django-сайт и Django Admin: настройка, CSP, доступность, мобильная версия и работа рядом с cookie-баннерами. — Читать…
Начнём с предыстории. Когда я опубликовал первую статью про клон Flappy Bird, я хотел получить результат, который был бы мне приятен, но вместо этог…
Расскажу, как и почему я в какой-то момент решил написать собственный pivot grid — без сторонних библиотек, на чистом JavaScript и DOM. И что из это…
Несколько дней назад я сделал маленький инструмент для себя. Надоело каждый раз начинать новый проект с колеса оттенков: крутишь Coolors, листаешь P…
Как-то вечером я поймал себя на том, что трачу по 20 минут на поиск цветовой палитры для каждого нового проекта. Coolors, Adobe Color, случайные пин…
Недавно под постом в канале MoscowJS разгорелся спор — со мной и организатором насчёт смола. Даже не столько насчёт смола, сколько в целом: стоит ли…
Международная операция Endgame вывела из строя 106 серверов SocGholish и очистила 14 971 заражённый сайт на WordPress. Разбираем угрозу и защиту. —…
Разбираем, как устроен эффект 3D-вращения картинок из свежей статьи Codrops. Примеры кода на GSAP, Lenis и CSS-трансформации. — Читать дальше « Как…
Что будет, если взять один HTML-файл, браузер, localStorage и git-хостинг с CRUD API? Получится мессенджер. Без backend, базы данных, регистрации, n…
Как построить поддерживаемое REST API на Node.js: слои, Zod, единые ошибки, версионирование и Swagger. Проверьте свою архитектуру. — Читать дальше «…
Начнём с небольшой предыстории: пару недель назад я ждал друга в кафе. Как обычно, он опаздывал примерно минут на сорок. Ноутбук с собой, интернет е…
Реактивность лучше MobX , виртуализация рендеринга «из коробки» , типизированные стили на TypeScript , локально-первая модель данных через CRDT — эт…