Category : javascript

javascript
Как я написал свою библиотеку валидации схем и создал свою альтернативу Zod

Статья о том, как попытка разобраться в валидации объектов привела к созданию библиотеки валидации схем с runtime-интроспекцией, а на её основе — отдельных библиотек для type-safe маппинга объектов и генерации форм.Предыстория: большие объекты без TypeScriptНесколько лет назад в одном из моих проектов на чистом JavaScript возникла задача: валидировать большие вложенные объекты со сложной структурой. Объекты содержали различные подобъекты, к каждому из которых применялись свои правила валидации …

  • среда, 15 апреля 2026 г. в 00:00:11
javascript
Вышел Playwright 1.59: как тестировщикам с пользой применить каждую новую фичу

Playwright 1.59 — не очередное инкрементальное обновление. Это заявка на то, куда движется автоматизация тестирования, и это направление глубоко агентное. Если вы ждали, когда инструменты догонят AI-driven воркфлоу, о которых все говорят, этот релиз закрывает разрыв.Разберём каждую крупную фичу и, что важнее, как каждую из них можно применить немедленно.🎬 Screencast API: тесты теперь показывают, что делаютГлавная фича релиза — новый page.screencast API. Это не просто запись видео под новым имен…

  • среда, 15 апреля 2026 г. в 00:00:10
javascript
Как я сделал PWA-приложение для заметок и ссылок за вечер (и почему оно работает без интернета)

Вместо предисловия: проблема, которая бесила меня годамиУ каждого из нас есть «чёрная дыра», куда уходят полезные ссылки. Кто-то сохраняет их в «Избранном» браузера, кто-то пишет сам себе в Telegram, кто-то держит десяток вкладок открытыми «на потом». У меня была та же проблема. Я пробовал Notion, Evernote, Google Keep, Obsidian - всё это мощные инструменты, но для простого «сохранить ссылку и не забыть» они часто избыточны.Так родилась идея KylikLink - минималистичного PWA-приложения для замет…

  • среда, 15 апреля 2026 г. в 00:00:08
javascript
Формы в Angular: от Reactive Forms к Signal Forms

Привет! Меня зовут Егор Молчанов, я разработчик в компании Домклик. В прошлой статье мы познакомились с новыми функциями input(), output() и model(), которые закладывают фундамент для будущего Angular без Zone.js. Сегодня поговорим о том, как эти изменения дошли до самой, пожалуй, наболевшей темы в любом приложении — работы с формами. В Angular v21 появился новый, экспериментальный способ управления формами — Signal Forms. Он не заменяет привычные Reactive Forms, а предлагает совершенно иной по…

  • среда, 15 апреля 2026 г. в 00:00:07
javascript
Предварительная загрузка изображений с помощью JavaScript

Я узнал, что задача предварительной загрузки изображений с помощью JavaScript удивительно сложна. Существует несколько способов это сделать, и лучший из них зависит от требований конкретного приложения.❯ КейсВ последней версии JamComments появилась возможность перетаскивать и вставлять изображения в поле для комментариев. Это очень похоже на добавление изображения в запрос на слияние (PR) на GitHub:При разработке все выглядело отлично, до момента отправки комментария, когда новый комментарий до…

  • среда, 15 апреля 2026 г. в 00:00:05
javascript
WebGPU, библиотека Orillusion и кастомные шейдеры: как я создавал 4D Тессеракт

orillusion ТессерактыWebGPU — это новый стандарт для доступа к возможностям видеокарт, который я уже несколько лет хочу использовать в своем проекте. Два года, даже с включенными флагами, у меня не получалось с моей встроенной видеокартой это сделать. В отличие от WebGL, WebGPU создавался с нуля под архитектуры современных GPU, предоставляя разработчикам низкоуровневый контроль над вычислениями, поддержку compute-шейдеров и высокую производительность в браузерах.Но сегодня эта технология выход…

  • среда, 15 апреля 2026 г. в 00:00:05
javascript
dc.send(file) не существует: что на самом деле нужно для передачи файла в браузере

Рис. 1. dc.send(file) не означает, что файл уже доставлен.Самая опасная иллюзия в WebRTC-файлообмене выглядит примерно так:const dc = pc.createDataChannel('file'); for (let offset = 0; offset < file.size; offset += CHUNK) { dc.send(file.slice(offset, offset + CHUNK)); } dc.send(JSON.stringify({ type: 'transfer_done' })); // Готово! ...или нет?Выглядит правдоподобно. DataChannel открыт, чанки летят, transfer_done отправлен. В туториале этого достаточно. В продакшене – нет. Н…

  • вторник, 14 апреля 2026 г. в 00:01:18
javascript
Парадокс хэштега! #hashtag_paradox

Огромное число авторов используют хэштеги для пометки своих постов. А также для заголовков, вносят эту информацию на картинки, в инфографику для видео и всячески применяют для поиска. Хочу рассказать о наблюдаемом мной парадоксе этой технологии с точки зрения IT и обычной жизни.Этот термин состоит из конкатенации двух слов: hash и tag. Hash - это прежде всего понятие про уникальность с шифрованием. Изначально, для того, чтобы добиться создания строки, которая точно будет отличаться от других, п…

  • вторник, 14 апреля 2026 г. в 00:00:47
javascript
Создаем WCAG-доступный DatePicker на React: как Claude пишет основу, а мы доводим до ума

Привет, коллеги! Сегодня делимся историей, которая отлично показывает, как AI ускоряет старт, но человеческий опыт и внимание к деталям делают продукт по-настоящему крутым.Недавно нам для одного из проектов понадобился DatePicker. Сам компонент под NDA, поэтому показать его не можем. Но чтобы поделиться процессом, мы специально для статьи собрали похожий концепт - с открытым кодом и возможностью потыкать вживую (ссылка ждет в конце).Так вот, казалось бы, компонент простой, но мы решили не прост…

  • вторник, 14 апреля 2026 г. в 00:00:16