ShadowRealm в JavaScript
Новый API ShadowRealm предлагает изоляцию исполнения кода в отдельной среде, чтобы безопаснее отделять контекст и глобальные объекты. Разбираемся, как это соотносится с realms в браузере и почему это шаг к более надежным приложениям.
https://css-tricks.com/soon-we-can-finally-banish-javascript-to-the-shadowrealm/
Новый API ShadowRealm предлагает изоляцию исполнения кода в отдельной среде, чтобы безопаснее отделять контекст и глобальные объекты. Разбираемся, как это соотносится с realms в браузере и почему это шаг к более надежным приложениям.
https://css-tricks.com/soon-we-can-finally-banish-javascript-to-the-shadowrealm/
❤6🔥3
React useOptimistic для мгновенных обновлений интерфейса в продакшене
Разбираем useOptimistic в React и практические паттерны, чтобы UI реагировал сразу, а затем корректно синхронизировался с реальными данными после подтверждения или ошибки. Подходит для быстрых форм, лент и сценариев с оптимистичными апдейтами.
https://www.sitepoint.com/react-useoptimistic-production-patterns-for-instant-ui-updates/
Разбираем useOptimistic в React и практические паттерны, чтобы UI реагировал сразу, а затем корректно синхронизировался с реальными данными после подтверждения или ошибки. Подходит для быстрых форм, лент и сценариев с оптимистичными апдейтами.
https://www.sitepoint.com/react-useoptimistic-production-patterns-for-instant-ui-updates/
⚡5👍5🔥3❤1
Как я написал «Обратную змейку» на чистом Canvas
Игрок управляет не змеёй, а яблоком, цель — выживать как можно дольше, пока три типа змей преследуют и меняют поведение. Логика разбита на модули (Snake/Renderer/Game) без фреймворков: от обновления движения и коллизий до отрисовки сетки и пиксельных спрайтов через
https://habr.com/ru/companies/ruvds/articles/1047434/
Игрок управляет не змеёй, а яблоком, цель — выживать как можно дольше, пока три типа змей преследуют и меняют поведение. Логика разбита на модули (Snake/Renderer/Game) без фреймворков: от обновления движения и коллизий до отрисовки сетки и пиксельных спрайтов через
fillRect()https://habr.com/ru/companies/ruvds/articles/1047434/
1🔥6🥰4❤2💩1
Out Loud — open-source ИИ для озвучивания текста
Out Loud делает AI text-to-speech полностью офлайн. Поддерживается 50+ естественных голосов на 8 языках, а также есть расширение для Chrome, чтобы озвучивать страницы в один клик. Код под MIT-лицензией — репозиторий можно форкать, проверять и улучшать под свои задачи.
https://www.out-loud.io/
Out Loud делает AI text-to-speech полностью офлайн. Поддерживается 50+ естественных голосов на 8 языках, а также есть расширение для Chrome, чтобы озвучивать страницы в один клик. Код под MIT-лицензией — репозиторий можно форкать, проверять и улучшать под свои задачи.
https://www.out-loud.io/
👍7❤2🔥1🤔1
Geometric.js — библиотека для геометрии в JavaScript.
Работайте с точками, отрезками, полигонами, углами и пересечениями, выполняя измерения и преобразования. Удобно использовать для задач визуализации, расчётов и логики в веб‑приложениях, где нужна геометрия на лету.
https://www.harryjstevens.com/geometric/
Работайте с точками, отрезками, полигонами, углами и пересечениями, выполняя измерения и преобразования. Удобно использовать для задач визуализации, расчётов и логики в веб‑приложениях, где нужна геометрия на лету.
https://www.harryjstevens.com/geometric/
👍8❤2
Отладка WASM в Chrome DevTools
Chrome DevTools умеет полноценно дебажить скомпилированный WASM: ставьте брейкпоинты в Sources, смотрите локальные значения и стек вызовов, а для ref.cast и похожих ошибок включайте Pause on exceptions чтобы сразу ловить источник проблемы.
https://eli.thegreenplace.net/2026/debugging-wasm-in-chrome-devtools/
Chrome DevTools умеет полноценно дебажить скомпилированный WASM: ставьте брейкпоинты в Sources, смотрите локальные значения и стек вызовов, а для ref.cast и похожих ошибок включайте Pause on exceptions чтобы сразу ловить источник проблемы.
https://eli.thegreenplace.net/2026/debugging-wasm-in-chrome-devtools/
1🥰5👍2🔥2🤔1
Архитектура local-first для веб разработки
Разбираем, как строить приложения с приоритетом локальных данных в 2026 году: синхронизация, конфликтные сценарии и практичные решения для надежной работы офлайн и онлайн. Подойдет тем, кто уже пробовал local-first и хочет понять, где реальные риски и как их закрывать.
https://smashingmagazine.com/2026/05/architecture-local-first-web-development/
Разбираем, как строить приложения с приоритетом локальных данных в 2026 году: синхронизация, конфликтные сценарии и практичные решения для надежной работы офлайн и онлайн. Подойдет тем, кто уже пробовал local-first и хочет понять, где реальные риски и как их закрывать.
https://smashingmagazine.com/2026/05/architecture-local-first-web-development/
👍5❤3
Навыки для AI кодинг агентов: как вернуть спецификации, тесты и review в процесс
AI coding agents часто идут по кратчайшему пути к готовому коду и пропускают спецификации, тесты и проверку, из за чего качество падает на масштабе. Проект предлагает оформлять best practices не как эссе, а как пошаговые skills с чекпоинтами и критериями выхода, чтобы агент следовал жизненному циклу разработки как у зрелой инженерной команды.
https://addyosmani.com/blog/agent-skills/
AI coding agents часто идут по кратчайшему пути к готовому коду и пропускают спецификации, тесты и проверку, из за чего качество падает на масштабе. Проект предлагает оформлять best practices не как эссе, а как пошаговые skills с чекпоинтами и критериями выхода, чтобы агент следовал жизненному циклу разработки как у зрелой инженерной команды.
https://addyosmani.com/blog/agent-skills/
❤6🔥4
Считаем скидку и показываем итоговую цену прямо в CSS
Можно хранить базовую цену и процент скидки в data-* атрибутах, а затем через attr() и CSS math вычислять итоговую стоимость и сразу рисовать зачеркнутую цену плюс новую. Для прода в крупных компаниях так себе вариант, но для своего магазина можно попробовать 😊
https://css-tricks.com/computing-and-displaying-discounted-prices-in-css/
Можно хранить базовую цену и процент скидки в data-* атрибутах, а затем через attr() и CSS math вычислять итоговую стоимость и сразу рисовать зачеркнутую цену плюс новую. Для прода в крупных компаниях так себе вариант, но для своего магазина можно попробовать 😊
https://css-tricks.com/computing-and-displaying-discounted-prices-in-css/
👍8🤡5🔥2😁1
Граница между CSS-состояниями и событиями JavaScript сдвигается
Псевдоклассы вроде
Отдельный вектор — будущий event-trigger, который должен запускать анимации по событиям (например, по click) прямо в CSS, делая анимации более декларативными.
https://css-tricks.com/css-states-and-javascript-events/
Псевдоклассы вроде
:hover, :active, :focus-visible, :focus-within, :checked, :valid/:invalid позволяют описывать реакцию интерфейса без обработчиков в JS.Отдельный вектор — будущий event-trigger, который должен запускать анимации по событиям (например, по click) прямо в CSS, делая анимации более декларативными.
https://css-tricks.com/css-states-and-javascript-events/
❤5🔥2🤔1
Как запустить GTA San Andreas на своём движке в браузере
История о том, как с нуля собрали браузерный рантайм OpenSA, который умеет читать форматы RenderWare и запускать игру через вашу легальную копию, без распространения ассетов. Ключевые фишки — in-game map debugger/редактор, адаптерная архитектура, физика и управление через Rapier, а также оптимизация загрузки чанками с CDN и VFS.
Сложно, сложно, оч сложно)
https://habr.com/ru/articles/1051828/
История о том, как с нуля собрали браузерный рантайм OpenSA, который умеет читать форматы RenderWare и запускать игру через вашу легальную копию, без распространения ассетов. Ключевые фишки — in-game map debugger/редактор, адаптерная архитектура, физика и управление через Rapier, а также оптимизация загрузки чанками с CDN и VFS.
Сложно, сложно, оч сложно)
https://habr.com/ru/articles/1051828/
👍14😁3🔥1
Минимальная одностраничная фотогалерея для Astro
Адаптивная сетка собирается чистым CSS без JS-логики позиционирования и перерасчётов. Для просмотра предусмотрен lightbox на Fancybox: полноэкранный режим с свайпом, перетаскиванием, pinch-to-zoom и настраиваемой панелью. Картинки оптимизируются через Astro
https://github.com/kydecker/astro-photo-grid
Адаптивная сетка собирается чистым CSS без JS-логики позиционирования и перерасчётов. Для просмотра предусмотрен lightbox на Fancybox: полноэкранный режим с свайпом, перетаскиванием, pinch-to-zoom и настраиваемой панелью. Картинки оптимизируются через Astro
<Image />, а элементы за пределами первого экрана подгружаются лениво.https://github.com/kydecker/astro-photo-grid
❤8🔥4⚡1🙏1
Компиляция Zod-схем в оптимизированные валидаторы на этапе сборки
Сохраняете обычные Zod-схемы и получаете ускорение валидации без правок в коде:
https://github.com/gajus/zod-compiler
Сохраняете обычные Zod-схемы и получаете ускорение валидации без правок в коде:
parse/safeParse/parseAsync остаются теми же, плюс появляется быстрый guard .is(). Поддерживаются разные режимы подключения: автоматическая компиляция всех экспортов или явная, а также CLI-генерация файлов и режим compacthttps://github.com/gajus/zod-compiler
👍6❤3
Микрофронтенды: стабильная интеграция нескольких SPA-приложений, часть 1
Разбираемся, как собрать платформу и подключать независимые SPA-модули в единый UI без потери скорости релизов, но с контролем совместимости. Рассматриваются варианты оркестрации и загрузки: от SystemJS-«разрезанного монолита» и single-spa до модульной федерации и айфреймов, с ключевым выводом про риск синхронных релизов и несовпадение версий библиотек
https://habr.com/ru/companies/infowatch/articles/1053506/
Разбираемся, как собрать платформу и подключать независимые SPA-модули в единый UI без потери скорости релизов, но с контролем совместимости. Рассматриваются варианты оркестрации и загрузки: от SystemJS-«разрезанного монолита» и single-spa до модульной федерации и айфреймов, с ключевым выводом про риск синхронных релизов и несовпадение версий библиотек
https://habr.com/ru/companies/infowatch/articles/1053506/
👍5😴2🔥1🙏1
FM-синтез звука в браузере. Часть 1
Рассмотрим возможности браузеров по синтезу звука. Разберём основы и в качестве практического применения сделаем эмулятор синтезатора Yamaha DX7.
Сложно, сложно
https://habr.com/ru/articles/1052640
Рассмотрим возможности браузеров по синтезу звука. Разберём основы и в качестве практического применения сделаем эмулятор синтезатора Yamaha DX7.
Сложно, сложно
https://habr.com/ru/articles/1052640
👍5❤1🔥1
Rattribute.js — генерация адаптивных атрибутов для любых HTML-элементов.
Лёгкая библиотека без зависимостей, которая на основе брейкпоинтов автоматически проставляет нужные атрибуты (по умолчанию размеры как у Bootstrap: xs–xxl и доп. xxxl, плюс можно задавать свои). Поддерживаются переключение адаптивности, авто-подхват элементов при добавлении в DOM сторонними библиотеками и исключение элементов через
https://github.com/williamtroup/Rattribute.js
Лёгкая библиотека без зависимостей, которая на основе брейкпоинтов автоматически проставляет нужные атрибуты (по умолчанию размеры как у Bootstrap: xs–xxl и доп. xxxl, плюс можно задавать свои). Поддерживаются переключение адаптивности, авто-подхват элементов при добавлении в DOM сторонними библиотеками и исключение элементов через
data-rattribute-js-ignorehttps://github.com/williamtroup/Rattribute.js
👍4❤2🤔1
Путеводитель по grid-lanes: как строить сложные раскладки на чистом CSS.
Это подходит для progressive enhancement: начинайте с базовой разметки и улучшайте визуальную и навигационную часть средствами HTML/CSS.
https://master.dev/blog/the-field-guide-to-grid-lanes/
display: grid-lanes позволяет делать masonry с произвольной шириной колонок и при этом сохранять корректный порядок табуляции — без JS.Это подходит для progressive enhancement: начинайте с базовой разметки и улучшайте визуальную и навигационную часть средствами HTML/CSS.
https://master.dev/blog/the-field-guide-to-grid-lanes/
❤8👍4
HTTP получил метод QUERY: зачем понадобился безопасный запрос с телом
В HTTP стандартизировали
https://habr.com/ru/articles/1055310/
В HTTP стандартизировали
QUERY — безопасный и идемпотентный метод чтения, где сложные параметры передаются в теле запроса, а не в URI.https://habr.com/ru/articles/1055310/
👍18❤11
Проверка вакансий и рекрутеров на мошенничество с помощью OSINT для Claude.
JobVerify помогает за секунды отличать реальные предложения от скама: вы вставляете сообщение рекрутера, название компании, ссылку на вакансию или email, а инструмент собирает публичные сигналы и выдает понятный вердикт. Он сверяет регистрацию компании, домены и возраст сайтов, подозрительные паттерны (предоплата, “задачи”, крипта, перевод в Telegram/WhatsApp), проверяет ссылки, почту/телефон и даже историю через Internet Archive — без API-ключей и без хранения ваших данных.
https://github.com/yessGlory17/job-verify
JobVerify помогает за секунды отличать реальные предложения от скама: вы вставляете сообщение рекрутера, название компании, ссылку на вакансию или email, а инструмент собирает публичные сигналы и выдает понятный вердикт. Он сверяет регистрацию компании, домены и возраст сайтов, подозрительные паттерны (предоплата, “задачи”, крипта, перевод в Telegram/WhatsApp), проверяет ссылки, почту/телефон и даже историю через Internet Archive — без API-ключей и без хранения ваших данных.
https://github.com/yessGlory17/job-verify
❤15👍2💩1
Как протестировать более 40 UI-компонентов за минуту: ускоряем скриншот-тесты
Как вместо сапёра с визуальными багами внедрили визуальные регрессионные тесты на связке Storybook + Playwright + Jest, которые прогоняют десятки сценариев и сравнивают скриншоты пиксель-в-пиксель. Чтобы стабилизировать диффы, в тестах отключают загрузку реальных картинок в галереях, делают снимок строго элемента
https://habr.com/ru/companies/domclick/articles/1050424
Как вместо сапёра с визуальными багами внедрили визуальные регрессионные тесты на связке Storybook + Playwright + Jest, которые прогоняют десятки сценариев и сравнивают скриншоты пиксель-в-пиксель. Чтобы стабилизировать диффы, в тестах отключают загрузку реальных картинок в галереях, делают снимок строго элемента
[data-test="product-snippet"], и задают допуски к микро-шуму рендеринга (threshold/blur/failureThreshold).https://habr.com/ru/companies/domclick/articles/1050424
👍6❤3🔥1