Из блога OpenReplay
Как устроен pnpm, переписанный на Rust
Узнайте о переписывании pnpm 12 на Rust, результатах тестов, совместимости с pnpm 11 и рисках обновления, которые могут повлиять на CI.
Чтение и запись ZIP-файлов в Node без сторонних библиотек
Читайте и создавайте ZIP-архивы с экспериментальным API node:zlib в Node.js 26.8.0. Примеры потоковой обработки, защита от zip-slip и варианты для старых версий.
Каскадные анимации без вычислений в nth-child
Замените цепочки nth-child и циклы JavaScript на sibling-index() для каскадных CSS-анимаций. Разберите варианты, применение в вёрстке, поддержку и запасной вариант.
5 ИИ-инструментов для создания мобильных приложений
Сравните пять ИИ-конструкторов мобильных приложений: Dactyl, Rork, FlutterFlow, Thunkable и Bubble. Узнайте об экспорте кода, платформах, ценах и публикации.
Защита Docker на Linux-машине
Доступ к группе Docker дает права root. Защитите Docker в Linux с помощью rootless-режима, правил sudo, Podman, изоляции контейнеров и списка проверок.
Можно ли по-прежнему доверять строке User-Agent?
Узнайте, каким данным User-Agent можно доверять, какие браузеры замораживают и как Client Hints Chromium и проверка функций заменяют ненадежный разбор строки.
Ускоряем валидацию Zod с помощью скомпилированных схем
Узнайте, как скомпилированные схемы Zod ускоряют проверку, когда это важно и как учитывать затраты, неподдерживаемые схемы и ограничения CSP.
Почему useEffect срабатывает дважды
Узнайте, почему React StrictMode запускает useEffect дважды в режиме разработки и как исправить запросы, подписки и другие эффекты с помощью очистки.
Как создать собственный блок Gutenberg
Создайте собственный блок Gutenberg с React, block.json и PHP. Разберитесь в атрибутах, статическом и динамическом выводе и устаревших версиях для устранения ошибок.
У HTTP появился новый метод для поиска
Разберитесь в HTTP QUERY — безопасном идемпотентном методе поиска с телом запроса. Узнайте о кэшировании, повторах, поддержке клиентов и возможных блокировках.
Как проверить подпись вебхука
Проверяйте подписи вебхуков Stripe и GitHub в Express: исходное тело запроса, постоянное время сравнения HMAC, защита от повторов и смена секретов.
5 дистрибутивов Linux, о которых вы могли не слышать
Сравните пять малоизвестных дистрибутивов Linux для разработчиков: CachyOS, Bazzite, Nobara, Vanilla OS и Chimera Linux — драйверы, обновления и инструменты.
Как использовать нативные CSS-миксины вместо Sass
Узнайте, как переносить миксины Sass в нативный CSS с помощью @mixin и @apply, задавать параметры и определить функции, для которых всё ещё нужен Sass.
Что изменилось в Vitest 5
Разберитесь в изменениях Vitest 5: приросте производительности, несовместимых изменениях, настройках по умолчанию, путях отчетов и шагах обновления тестов и CI.
Компиляция TypeScript в нативный бинарник с помощью scriptc
scriptc компилирует TypeScript в нативные бинарники: статическая сборка, динамический движок 620 КБ, проверка coverage и понятные ошибки.
Очистка текста, который пользователи вставляют в ваше приложение
Очищайте вставленный текст в веб-формах с помощью нормализации Unicode, удаления символов формата, сжатия пробелов и безопасной обработки ZWJ и NBSP.
Как читать стектрейс JavaScript
Читать stack trace JavaScript: находите первый полезный frame, понимайте async-пробелы, минификацию, source maps и Error.cause.
Первый взгляд на Astryx, дизайн-систему Meta
Astryx, открытая design system Meta, объединяет более 150 React-компонентов, темы, CLI, уровни настройки и сравнение с shadcn/ui и Base UI.
Как написать собственное middleware для Hono
Создавайте middleware Hono с типизированными переменными контекста, таймингом запроса, ранним выходом и scope по пути. Разберитесь в порядке next().
Что такое Vue Vapor Mode?
Vue Vapor Mode: как SFC компилируются в прямые DOM-операции, что меняется в Vue 3.6 RC и какие ловушки есть с событиями и слотами.
Использование npm-пакетов напрямую из браузера
Используйте npm-пакеты в обычном HTML с import maps и URL CDN. Разберитесь, как выбрать ESM или CommonJS, закрепить версии и обойтись без сборки.
WP-CLI для тех, кто живёт в терминале
Команды WP-CLI для миграций WordPress, резервных копий, потери доступа, обновления плагинов и ядра, удаленных SSH-задач и безопасного search-replace.
Как остановить «уплощение» объектов в JSON
Исправьте уплощение JSON в JavaScript с replacer, reviver, toJSON и context.source, чтобы восстанавливать Date, Map, Set и BigInt.
Открываем действия вашего сайта для AI-агентов с помощью WebMCP
WebMCP показывает, как регистрировать инструменты сайта через document.modelContext, задавать аннотации и безопасно запускать действия в сеансе входа.