<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" >

  <channel>
    <title><![CDATA[Все статьи подряд / JavaScript / Хабр]]></title>
    <link>https://habr.com/ru/hubs/javascript/articles/</link>
    <description><![CDATA[JavaScript – прототипно-ориентированный язык программирования]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Thu, 23 Apr 2026 08:06:26 GMT</pubDate>
    
    
      <image>
        <link>https://habr.com/ru/</link>
        <url>https://habrastorage.org/webt/ym/el/wk/ymelwk3zy1gawz4nkejl_-ammtc.png</url>
        <title>Хабр</title>
      </image>
    

    
      
        
    
    <item>
      <title><![CDATA[Как я делал пет-проект и закопал его собственными руками]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1026508/</guid>
      <link>https://habr.com/ru/articles/1026508/?utm_campaign=1026508&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/185/0e1/6d6/1850e16d6753707b1a5bbf54bd9025c4.png" /><p><strong>Как я делал пет-проект и закопал его собственными руками</strong></p><p><em>История о том, как MVP показал мне реальные проблемы, а попытка сделать «нормальную версию» только усугубила ситуацию</em></p><p>Разработку пет-проекта с прицелом на open source в моем случае можно описать выражением:<br> <strong>корабль любви разбился о айсберг бытовухи.</strong></p> <a href="https://habr.com/ru/articles/1026508/?utm_campaign=1026508&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 22 Apr 2026 14:00:53 GMT</pubDate>
      <dc:creator><![CDATA[Gieon]]></dc:creator>
      
      <category><![CDATA[пет проект]]></category><category><![CDATA[пет проекты]]></category><category><![CDATA[криптовалюта]]></category><category><![CDATA[криптовалюты]]></category><category><![CDATA[криптоанализ]]></category><category><![CDATA[опен сурс]]></category><category><![CDATA[личный опыт]]></category><category><![CDATA[личный опыт разработки]]></category><category><![CDATA[личный опыт в разработке]]></category><category><![CDATA[работа над ошибками]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Telegraph API: CONTENT_TOO_BIG приходит раньше обещанных 64 КБ. Измеряем реальный лимит и разбираем обходной путь]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1026610/</guid>
      <link>https://habr.com/ru/articles/1026610/?utm_campaign=1026610&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/a76/819/8ba/a768198ba26d9bebfea1937da58fb712.PNG" /><p>Telegraph API обещает принимать content до 64 КБ, но на практике CONTENT_TOO_BIG прилетает уже на 17-20 КБ. Разбираю, как измерял реальный лимит, при чём тут UTF-8 vs UTF-16 для кириллицы, и каким обходным путём чинил молчаливую деградацию RU-канала.</p> <a href="https://habr.com/ru/articles/1026610/?utm_campaign=1026610&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 22 Apr 2026 12:10:51 GMT</pubDate>
      <dc:creator><![CDATA[MatushkinVD]]></dc:creator>
      
      <category><![CDATA[Telegraph API]]></category><category><![CDATA[CONTENT_TOO_BIG]]></category><category><![CDATA[Node.js]]></category><category><![CDATA[Telegram]]></category><category><![CDATA[кириллица]]></category><category><![CDATA[UTF-8]]></category><category><![CDATA[дебаг]]></category><category><![CDATA[лимиты API]]></category><category><![CDATA[fetch]]></category><category><![CDATA[интеграции]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Один движок на два рантайма: как мой сайт на Next.js делит формулы с Flutter-приложением]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1025632/</guid>
      <link>https://habr.com/ru/articles/1025632/?utm_campaign=1025632&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/36e/254/d03/36e254d03e295dfaf46337ed8ed1909c.png" /><p>Прошлой зимой я <a href="https://habr.com/ru/articles/1001080/" rel="noopener noreferrer nofollow">писал тут про «Мастерок»</a> — строительный калькулятор на Flutter для RuStore. Приложение поехало в прод, набрало 4.9 звезды, и в какой-то момент пришло осознание: аудитория смартфонных приложений — это аудитория смартфонных приложений. А человек, который в обед нагуглил «сколько мешков ротбанда на 20 квадратов», в магазин приложений не полезет. Он хочет страницу в браузере. Желательно без куки-баннера на полэкрана, без интерфейса из 2012-го и без того, чтобы перед ответом на вопрос ему предлагали посмотреть пять реклам.</p><p>Так появился <a href="http://getmasterok.ru" rel="noopener noreferrer nofollow"><code>getmasterok.ru</code></a> — веб-половина той же экосистемы. Сайт на Next.js 15, шестьдесят один калькулятор, ИИ-прораб, SEO, блог, всё как положено. И с одним неочевидным вызовом, который стал главным сюжетом этой статьи.</p><p>А вызов я нашёл не сам. Его нашёл пользователь.</p> <a href="https://habr.com/ru/articles/1025632/?utm_campaign=1025632&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 20 Apr 2026 12:22:03 GMT</pubDate>
      <dc:creator><![CDATA[Soft_gAming]]></dc:creator>
      
      <category><![CDATA[сайтостроение]]></category><category><![CDATA[приложение для android]]></category><category><![CDATA[next.js]]></category><category><![CDATA[timeweb]]></category><category><![CDATA[node.js фреймворки]]></category><category><![CDATA[строительный калькулятор]]></category><category><![CDATA[калькулятор]]></category><category><![CDATA[калькулятор стоимости]]></category><category><![CDATA[ai]]></category><category><![CDATA[ai-агенты]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Готовимся к отключению. Эффективные форматы для упаковки и раздачи HTML-страниц]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/ruvds/articles/1020916/</guid>
      <link>https://habr.com/ru/companies/ruvds/articles/1020916/?utm_campaign=1020916&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/ef9/9fc/371/ef99fc3711a01074ce6615e2e7d0c02a.gif" /><p>В 2026 году растёт риск перебоев и ограничений в работе интернета в РФ. В таких условиях имеет смысл заранее продумать, как сохранить привычное окружение при нестабильном доступе к сети.</p><p>Помимо личных файлов, кино и музыки, хочется сохранить архив сайтов и веб-страниц для чтения в будущем — на месяцы или даже годы вперёд. Но в каком формате это лучше делать?</p> <a href="https://habr.com/ru/articles/1020916/?utm_campaign=1020916&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 20 Apr 2026 09:01:56 GMT</pubDate>
      <dc:creator><![CDATA[alizar (RUVDS.com)]]></dc:creator>
      
      <category><![CDATA[Gwtar]]></category><category><![CDATA[долговременное хранение]]></category><category><![CDATA[ПК для апокалипсиса]]></category><category><![CDATA[архивирование]]></category><category><![CDATA[сжатие веб-страниц]]></category><category><![CDATA[WARC]]></category><category><![CDATA[MHTML]]></category><category><![CDATA[MAFF]]></category><category><![CDATA[SingleFile]]></category><category><![CDATA[ruvds_статьи]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Фронтенд — это REST-сервер]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1022458/</guid>
      <link>https://habr.com/ru/articles/1022458/?utm_campaign=1022458&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Привет. Я фронтенд-разработчик. По мнению тех, кто, по мнению некоторых, перекладывает джейсончики туда-сюда, я крашу кнопочки. Но сам я себя идентифицирую иначе: я тоже перекладываю джейсончики, и у меня всё точно так же, как у них. Даже архитектура. У меня тоже есть контроллеры, сервисы и хранилища, и я также обрабатываю запросы пользователей. Даже больше, я делаю HATEOAS, «тру» RESTful, если хотите. Давайте расскажу, как я к этому пришел.</p><p>Когда-то давно я только верстал. Накидывал разметку, добавлял классы, идентификаторы и стилизовал ЦСС-ом. И было хорошо. Потом от меня потребовали динамичности — пришлось добавить JavaScript. И было очень хорошо.</p><p>Технологии развивались, и мне хотелось пробовать новое. Я попробовал AJAX. Это было так волнительно... Я сказал бэкендерам: основную разметку жду от вас, а опции для выпадающего списка, например, отдавайте джейсоном по запросу. Они были не в восторге. «Одному HTML подавай, другому CSV, третьему ещё что-то — безобразие!» Но мы нашли компромис. Бэкэндеры сказали: «Вот вам, мол, джейсон, дальше сами как-нибудь». И назвали это REST API. </p><p>Сначала было очень круто! Мы, верстальщики, организовались. Мы стали фронтендерами! Конечно же, мы сразу побежали решать ещё нерешённые <s>сто раз решённые</s> задачи. Мы писали библиотеки и фреймворки — четыре миллиона штук! Да у нас даже есть библиотека с функцией для умножения чисел — lodash.multiply. Мы придумывали свои паттерны и архитектуры, например FSD. Короче, мы стали очень крутые.</p><p>Но то уже были «мы», а не я. Мне было сложно. Шутка ли, изучать по одному новому фреймворку в неделю? А ведь еще переписывать всё надо, стек-то устарел... В общем, в какой-то момент я перестал поспевать за модой и справляться со сложностью. Переходишь из одного проекта (на React) в другой (на Vue), а там всё иначе. Берешь нового разработчика в команду с опытом в React, например, а ему нужно время, чтобы вникнуть, потому что в его старой команде был другой «стейт-менеджер». Вавилон, никто друг друга не понимает.</p> <a href="https://habr.com/ru/articles/1022458/?utm_campaign=1022458&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 20 Apr 2026 08:32:38 GMT</pubDate>
      <dc:creator><![CDATA[nihil-pro]]></dc:creator>
      
      <category><![CDATA[архитектура]]></category><category><![CDATA[проектирование]]></category><category><![CDATA[бэкенд]]></category><category><![CDATA[фронтенд]]></category><category><![CDATA[стандартизация]]></category><category><![CDATA[спецификация]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[LOTIS: Новая парадигма WEB-разработки для бизнес-приложений]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1025380/</guid>
      <link>https://habr.com/ru/articles/1025380/?utm_campaign=1025380&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/264/5db/d14/2645dbd149e7c10fddced792348a189d.jpg" /><p>После того как моя статья об LOTIS вызвала интерес, я решил подробнее раскрыть его архитектуру и привести примеры кода. </p><p>LOTIS решает одну фундаментальную проблему: разделение логики на клиент и сервер мешает разработке бизнес-приложений. Вместо того чтобы думать о бизнес-логике, разработчики тратят время на:</p> <a href="https://habr.com/ru/articles/1025380/?utm_campaign=1025380&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 20 Apr 2026 00:17:20 GMT</pubDate>
      <dc:creator><![CDATA[O-Planet]]></dc:creator>
      
      <category><![CDATA[PHP]]></category><category><![CDATA[фреймворк]]></category><category><![CDATA[приложение]]></category><category><![CDATA[разработка]]></category><category><![CDATA[бесплатно]]></category><category><![CDATA[HTML]]></category><category><![CDATA[WEB]]></category><category><![CDATA[CRM]]></category><category><![CDATA[скрипт]]></category><category><![CDATA[скачать]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Лицензии уходят, музыка остаётся: как я превратил тему для музыкального клиента в runtime-аддон с блекджеком и WASM]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1025248/</guid>
      <link>https://habr.com/ru/articles/1025248/?utm_campaign=1025248&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/4c4/426/a4a/4c4426a4a8de4f9a6011fddd892d57e0.png" /><p>Около года назад моё <strong>желание кастомизировать десктопный клиент </strong>популярного музыкального сервиса привело меня в некое сообщество. Всё началось с попытки восстановить заброшенную тему «<em>Blurity</em>» после очередного обновления Electron-хоста, которое сломало все селекторы. Но проект быстро перерос рамки обычных правок CSS.</p><p>В этой статье я расскажу, как <strong><em>ChromaSync </em></strong>эволюционировал из простого визуального патча в полноценную инженерную систему — runtime-аддон со сложной архитектурой. Мы разберем «анатомию» плеера, создание декларативной системы из <strong>70+ настроек </strong>и перенос тяжелой математики аудиореактивных эффектов в изолированное ядро на WASM. Это история о том, как <strong>700 строк JavaScript превратились в 10 000</strong>, а обычная «разукрашка» — в оптимизированную экосистему, умеющую балансировать между визуальной насыщенностью и производительностью системы.</p> <a href="https://habr.com/ru/articles/1025248/?utm_campaign=1025248&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 19 Apr 2026 12:45:59 GMT</pubDate>
      <dc:creator><![CDATA[desai]]></dc:creator>
      
      <category><![CDATA[JavaScript]]></category><category><![CDATA[CSS]]></category><category><![CDATA[WebAssembly]]></category><category><![CDATA[Rust]]></category><category><![CDATA[Electron]]></category><category><![CDATA[Desktop]]></category><category><![CDATA[Аудиовизуализация]]></category><category><![CDATA[Оптимизация производительности]]></category><category><![CDATA[Кастомизация]]></category><category><![CDATA[музыка]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Год с React Hook Form и Zod: меньше кода, но не без нюансов]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1025218/</guid>
      <link>https://habr.com/ru/articles/1025218/?utm_campaign=1025218&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/d62/038/bca/d62038bca318e650f8edc498416486de.jpg" /><p>Всем привет! Думаю, что не ошибусь если скажу, что почти каждому фронтендеру приходиться заниматься разработкой сложных форм. Те, кто уже имеют такой опыт знают, что работа с формами доставляет боль и страдания. Необходимо держать в голове все правила валидации и заполнения форм, связи между зависимыми полями, нужно как-то связывать данные формы с UI, при этом избегая лишних ререндеров.</p> <a href="https://habr.com/ru/articles/1025218/?utm_campaign=1025218&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 19 Apr 2026 11:15:39 GMT</pubDate>
      <dc:creator><![CDATA[alexkomarchev]]></dc:creator>
      
      <category><![CDATA[react]]></category><category><![CDATA[react.js]]></category><category><![CDATA[reactjs]]></category><category><![CDATA[reactive programming]]></category><category><![CDATA[typescript]]></category><category><![CDATA[javascript]]></category><category><![CDATA[frontend]]></category><category><![CDATA[front-end]]></category><category><![CDATA[front-end разработка]]></category><category><![CDATA[frontend-разработка]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[108 окон: как команда без разработчиков и бюджета построила Интерактивный дом-таймлайн про ТВ 90-х]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1025152/</guid>
      <link>https://habr.com/ru/articles/1025152/?utm_campaign=1025152&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/6f1/688/f0a/6f1688f0ab7d2370bb0b95bdee1125a7.jpg" /><p>Мы сделали интерактивный дом-таймлайн про телевидение 90-х и 00-х. Под катом: как команда без разработчиков дошла от JSON-файла на VPS за до корпоративного Kubernetes</p> <a href="https://habr.com/ru/articles/1025152/?utm_campaign=1025152&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать</a>]]></description>
      
      <pubDate>Sun, 19 Apr 2026 07:23:41 GMT</pubDate>
      <dc:creator><![CDATA[VetaOne]]></dc:creator>
      
      <category><![CDATA[vanillajs]]></category><category><![CDATA[frontend]]></category><category><![CDATA[cms]]></category><category><![CDATA[kubernetes]]></category><category><![CDATA[canvas]]></category><category><![CDATA[webp]]></category><category><![CDATA[avif]]></category><category><![CDATA[parallax]]></category><category><![CDATA[вайбкодинг]]></category><category><![CDATA[телевидение]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Почему JS/TS — не функциональный язык (и почему это важно понимать)]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1025100/</guid>
      <link>https://habr.com/ru/articles/1025100/?utm_campaign=1025100&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Мотивацией для написания этого поста стали два года собеседований JS/TS-инженеров. Я интересуюсь языками и функциональным программированием, поэтому всегда «разбавлял» технические вопросы разговором о парадигмах. И заметил любопытную асимметрию.</p><p>Об ООП кандидаты рассуждали уверенно — но в основном на концептуальном уровне, не вдаваясь в то, как именно ООП реализовано в JavaScript. С FP картина была другой: уверенности меньше, зато критика — конкретная и повторяющаяся: <em>«иммутабельность дорогая по памяти»</em>, <em>«рекурсия небезопасна из-за стека»</em>. Что характерно — эти аргументы почти всегда были сформулированы через опыт работы с JS, а не с Haskell, Clojure или Scala.</p><p>Это важная деталь. Любая парадигма существует на двух уровнях: концептуальном (идеальная модель) и имплементационном (как конкретный язык эту модель выражает). Судить о FP по JS — примерно то же самое, что судить об ООП по bash-скриптам с глобальными переменными.</p><p>Параллельно я регулярно слышал, что JS — функциональный язык. Аргументы варьировались от «там есть <code>.map()</code>» до рассуждений о чистых функциях и каррировании. Именно это и стало поводом для поста: я хочу объяснить, что я считаю функциональным языком — и почему JS таковым не является. Не перечислить отсутствующие фичи, а показать, <em>почему</em> их нет и что это значит в реальном рантайме.</p> <a href="https://habr.com/ru/articles/1025100/?utm_campaign=1025100&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sat, 18 Apr 2026 19:15:33 GMT</pubDate>
      <dc:creator><![CDATA[divideme]]></dc:creator>
      
      <category><![CDATA[fp]]></category><category><![CDATA[scala]]></category><category><![CDATA[js]]></category><category><![CDATA[ts]]></category><category><![CDATA[functional programming]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Frontend Status: свежий дайджест фронтенда и AI — 18.04.2026]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1025036/</guid>
      <link>https://habr.com/ru/articles/1025036/?utm_campaign=1025036&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/3b4/d76/574/3b4d76574f7dfe0f68fd0e11378ae80f.webp" /><p>Привет!</p><p>Это 13-й выпуск Frontend Status — дайджеста по фронтенд-разработке.</p><p>В этом выпуске:</p><p>📺 Для тех, кто хочет делать игровые интерфейсы быстрее: видео про 2D-игры с AI и Phaser, где генеративные инструменты работают как напарник, а не как «чёрный ящик».</p><p>🤖 В AI-разделе — разбор того, что уже можно брать в прод: micro-ml на Rust/WASM, кейс крупной техкомпании с роем из 50+ агентов, Flint Alpha и практическая интеграция Claude с видео.</p><p>🛡️ По безопасности фокус на снижении рисков: прикладной XSS, бесплатная оценка уязвимостей кода от GitHub и дорожная карта крупной техкомпании по постквантовой криптографии.</p><p>🎨 CSS-блок про баланс визуала и доступности: почему <code>box-shadow</code> не заменяет <code>outline</code> в <code>forced-colors</code> и как сохранить корректный фокус.</p><p>⚛️ React-секция для тех, у кого интерфейсный слой растёт в сложности: управление модалками без хаоса, UI без брейкпоинтов и состояние компонентов через radio state machine.</p><p>⚡ В JS/TS — практичный набор без перегруза: Pretext для текста, k-means для палитр, модульная архитектура, <code>Intl</code> API и Web Audio API в Node/Bun.</p><p>🅰️ Angular-раздел посвящён Signal Forms в v21 и тому, как перейти к типизированным формам без ручных подписок.</p><p>🌐 В стандартах и дизайне — что уже можно внедрять сейчас: CSS Image Animation, Baseline за март, Liquid UI и UX-подходы для legacy-систем.</p><p>…и многое другое.</p> <a href="https://habr.com/ru/articles/1025036/?utm_campaign=1025036&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sat, 18 Apr 2026 14:56:09 GMT</pubDate>
      <dc:creator><![CDATA[frontend-status]]></dc:creator>
      
      <category><![CDATA[javascript]]></category><category><![CDATA[typescript]]></category><category><![CDATA[css]]></category><category><![CDATA[react]]></category><category><![CDATA[angular]]></category><category><![CDATA[vuejs]]></category><category><![CDATA[css3]]></category><category><![CDATA[браузеры]]></category><category><![CDATA[node.js]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как я тестировал локально новый Qwen 3.6 и Gemma 4]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1024932/</guid>
      <link>https://habr.com/ru/articles/1024932/?utm_campaign=1024932&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/a78/efe/aed/a78efeaed6b0334f949deeb0f77b7d6c.jpg" /><p>Всем привет <br><strong>! Текст полностью написан человеком !</strong></p><p>На днях вышла модель<strong> Qwen 3.6</strong>, весь реддит забит этой темой. И я рискнул проверить что она может</p><p>Оборудование на котором тестировал (Ноутбук Asus TUF AMD Ryzen + дискретная Nvidia rtx 4070 8GB): </p> <a href="https://habr.com/ru/articles/1024932/?utm_campaign=1024932&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sat, 18 Apr 2026 13:26:30 GMT</pubDate>
      <dc:creator><![CDATA[x4team_only]]></dc:creator>
      
      <category><![CDATA[qwen3.6]]></category><category><![CDATA[lmstudio]]></category><category><![CDATA[rtx4070]]></category><category><![CDATA[llm]]></category><category><![CDATA[gemma4]]></category><category><![CDATA[gemma-4]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Безошибочная работа с Kafka из Node js. Часть 2 Консьюмер]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/904932/</guid>
      <link>https://habr.com/ru/articles/904932/?utm_campaign=904932&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/ea7/7d0/a18/ea77d0a184afc54339e9bb6f4be43588.png" /><p>Если <a href="https://habr.com/ru/articles/1012066/" rel="noopener noreferrer nofollow">предыдущая часть</a> была посвящена аспектам, связанным с публикацией сообщений, то в этой части основное внимание уделено обработке сообщений, проектированию консьюмеров и проблеме ребаланса в консьюмер группе. </p> <a href="https://habr.com/ru/articles/904932/?utm_campaign=904932&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 17 Apr 2026 10:17:50 GMT</pubDate>
      <dc:creator><![CDATA[mitya_k]]></dc:creator>
      
      <category><![CDATA[kafka]]></category><category><![CDATA[nodejs]]></category><category><![CDATA[брокеры сообщений]]></category><category><![CDATA[apache kafka]]></category><category><![CDATA[consumer]]></category><category><![CDATA[message-broker]]></category><category><![CDATA[message brokers.]]></category><category><![CDATA[kafka consumer]]></category><category><![CDATA[kafka apache]]></category><category><![CDATA[apache]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Axios и проблема зависимостей]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1024520/</guid>
      <link>https://habr.com/ru/articles/1024520/?utm_campaign=1024520&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/d9f/9ca/8c3/d9f9ca8c360641ab7e1483b8de241550.png" /><p>Как взлом одного npm-аккаунта за 3 часа распространил RAT на 174 000 пакетов и почему стандартные инструменты вроде NPM Audit это не поймали. Разбираем инцидент с Axios: механику атаки, слепые пятна в CI/CD и то, что реально работает. </p> <a href="https://habr.com/ru/articles/1024520/?utm_campaign=1024520&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 17 Apr 2026 08:55:42 GMT</pubDate>
      <dc:creator><![CDATA[gitinsky]]></dc:creator>
      
      <category><![CDATA[безопасность]]></category><category><![CDATA[ит-инфраструктура]]></category><category><![CDATA[базы данных]]></category><category><![CDATA[cicd]]></category><category><![CDATA[devsecops]]></category><category><![CDATA[devops]]></category><category><![CDATA[системное администрирование]]></category><category><![CDATA[open source]]></category><category><![CDATA[разбор инцидентов]]></category><category><![CDATA[безопасность зависимостей]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Я потратил 10 лет на создание легкого PHP фреймворка для разработки WEB-приложений]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1024496/</guid>
      <link>https://habr.com/ru/articles/1024496/?utm_campaign=1024496&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/9ea/d1f/6aa/9ead1f6aabc36a54e3fc39c0d5fca01d.jpg" /><p>Привет, All!</p><p>Как вам идея, отказаться от тегов вообще и делать WEB-проекты исключительно на классах? А еще, чтобы и клиентский, и серверный коды шли рядом, как в десктопном приложении.И чтобы с&nbsp;одними и теми&nbsp;же переменными можно&nbsp;было работать и в&nbsp;PHP, и в&nbsp;JavaScript.</p><p>«Зачем?»&nbsp;— сапросит кто‑то. Отвечу: чтобы можно&nbsp;было строить не&nbsp;DOM‑элементы, а&nbsp;объекты предметной области бизнес‑процессов, которые автоматизирует мое приложение. И чтобы не&nbsp;тратить время на&nbsp;разные async, promise, ajax и так далее, пусть за&nbsp;это отвечает фреймворк! </p><p>Я говорю примерно вот о&nbsp;таком построении WEB-приложения:</p> <a href="https://habr.com/ru/articles/1024496/?utm_campaign=1024496&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 17 Apr 2026 08:16:22 GMT</pubDate>
      <dc:creator><![CDATA[O-Planet]]></dc:creator>
      
      <category><![CDATA[php]]></category><category><![CDATA[framework]]></category><category><![CDATA[opensource]]></category><category><![CDATA[open source]]></category><category><![CDATA[download]]></category><category><![CDATA[web app]]></category><category><![CDATA[web application]]></category><category><![CDATA[web приложения]]></category><category><![CDATA[фреймворк]]></category><category><![CDATA[скачать]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Почему ваш бандл тяжелее чем должен быть — тестирую tree shaking на 7 бандлерах]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1024404/</guid>
      <link>https://habr.com/ru/articles/1024404/?utm_campaign=1024404&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/7e5/2c9/59b/7e52c959bbe7763831f411a673c86a6a.png" /><p>Вы уверены, что ваш бандлер вырезает неиспользуемый код? Я тоже был уверен — пока бандл Next.js проекта не оказался в два раза тяжелее, чем нужно. Прогнал одинаковый тест на webpack, rollup, vite, esbuild и Next.js — 5 из 7 ломаются на банальном barrel файле. Полез в исходники, нашёл основную причину — и она оказалась не там, где ожидал.</p> <a href="https://habr.com/ru/articles/1024404/?utm_campaign=1024404&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 16 Apr 2026 22:12:43 GMT</pubDate>
      <dc:creator><![CDATA[lykianovsky]]></dc:creator>
      
      <category><![CDATA[tree shaking]]></category><category><![CDATA[webpack]]></category><category><![CDATA[barrel file]]></category><category><![CDATA[bundler]]></category><category><![CDATA[next.js]]></category><category><![CDATA[rollup]]></category><category><![CDATA[vite]]></category><category><![CDATA[esbuild]]></category><category><![CDATA[оптимизация бандла]]></category><category><![CDATA[фронтенд]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Пишем свой текстовый 3D движок в браузере]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1024010/</guid>
      <link>https://habr.com/ru/articles/1024010/?utm_campaign=1024010&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/312/382/ff8/312382ff839b1aa08eaa3817eac5d85d.png" /><p>Сразу скажу: это перевод моей же статьи на Medium, но с небольшими дополнениями и более практичным разбором реализации.</p> <a href="https://habr.com/ru/articles/1024010/?utm_campaign=1024010&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 16 Apr 2026 05:28:31 GMT</pubDate>
      <dc:creator><![CDATA[alexander_kubarski]]></dc:creator>
      
      <category>3d</category><category>voxel</category><category>javascript</category><category>graphics</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Упрощаем работу с рутиной или как стать Гендальфом Белым]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1023966/</guid>
      <link>https://habr.com/ru/articles/1023966/?utm_campaign=1023966&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Надеюсь, все смотрели «Властелин колец»: там был харизматичный волшебник Гэндальф. В начале фильма (и книги) к его имени добавляли «Серый», а затем его стали величать «Белым». Так вот, это обозначение его ранга в иерархии магов. Можно уже открыть форточку для проветривания. Чтобы поменять статус, требуется преодолеть нечеловеческие испытания и обрести просветление. Так и в IT: пройдя все невзгоды, ты становишься сеньором. А сегодня я постараюсь облегчить вам этот путь.</p> <a href="https://habr.com/ru/articles/1023966/?utm_campaign=1023966&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 15 Apr 2026 20:08:04 GMT</pubDate>
      <dc:creator><![CDATA[Evil_Evis]]></dc:creator>
      
      <category><![CDATA[ии]]></category><category><![CDATA[frontend]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Разработка нового статического анализатора: PVS-Studio JavaScript]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/pvs-studio/articles/1023894/</guid>
      <link>https://habr.com/ru/companies/pvs-studio/articles/1023894/?utm_campaign=1023894&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/de3/e38/953/de3e389534d2b5572b4ce53ef4b88494.png" /><p>Вот уже 18 лет статический анализатор кода PVS-Studio находится на рынке. За это время он обзавёлся поддержкой языков C, C++, C# и Java. Разумеется, останавливаться на этих языках мы не планируем, и в этой статье расскажем про разработку нового JavaScript/TypeScript анализатора, который выйдет уже совсем скоро.</p> <a href="https://habr.com/ru/articles/1023894/?utm_campaign=1023894&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 15 Apr 2026 14:47:18 GMT</pubDate>
      <dc:creator><![CDATA[Volokhovskii (PVS-Studio)]]></dc:creator>
      
      <category><![CDATA[pvs-studio]]></category><category><![CDATA[open-source]]></category><category><![CDATA[javascript]]></category><category><![CDATA[typescript]]></category><category><![CDATA[java]]></category><category><![CDATA[gRPC]]></category><category><![CDATA[static analysis]]></category><category><![CDATA[статический анализ]]></category><category><![CDATA[AST]]></category><category><![CDATA[семантический анализ]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как правильно реализовать кнопку «Назад» во Vue: просто о сложном]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1023578/</guid>
      <link>https://habr.com/ru/articles/1023578/?utm_campaign=1023578&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/f66/694/ecb/f66694ecb56861c4126984507ad6d16a.png" /><p>Сегодня разберём тему, которая кажется элементарной, но на практике вызывает кучу вопросов. Речь о кнопке «Назад» в приложении на Vue.</p><p>Казалось бы, что тут сложного? Кликнули - ушли на предыдущую страницу. Но нет. Большинство разработчиков, даже с опытом, не до конца понимают, как устроена навигация в роутерах и как работает история браузера. А это критично, когда речь заходит о предсказуемом поведении приложения.</p> <a href="https://habr.com/ru/articles/1023578/?utm_campaign=1023578&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 14 Apr 2026 20:01:17 GMT</pubDate>
      <dc:creator><![CDATA[Pnym]]></dc:creator>
      
      <category><![CDATA[vue]]></category><category><![CDATA[javascript]]></category><category><![CDATA[router]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[WebGPU, библиотека Orillusion и кастомные шейдеры: как я создавал 4D Тессеракт]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1023432/</guid>
      <link>https://habr.com/ru/articles/1023432/?utm_campaign=1023432&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/00b/7dc/2e9/00b7dc2e9da891569262e4fe22998568.png" /><p><strong>Orillusion + кастомные шейдеры: полный разбор процесса</strong></p><p>Как зарегистрировать WGSL-шейдер, связать его с геометрией, настроить атрибуты и добиться анимации. Разбираем compute-шейдеры для GPU-вычислений и инстансинг на примере пяти вращающихся 4D-тессерактов. Если вам интересно то код и небольшие пояснения ниже.</p> <a href="https://habr.com/ru/articles/1023432/?utm_campaign=1023432&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 14 Apr 2026 14:17:13 GMT</pubDate>
      <dc:creator><![CDATA[zababurin]]></dc:creator>
      
      <category><![CDATA[orillusion]]></category><category><![CDATA[3d-графика]]></category><category><![CDATA[webgpu]]></category><category><![CDATA[javascript]]></category><category><![CDATA[shaders]]></category><category><![CDATA[shader graph]]></category><category><![CDATA[wsgl]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Предварительная загрузка изображений с помощью JavaScript]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/timeweb/articles/1020138/</guid>
      <link>https://habr.com/ru/companies/timeweb/articles/1020138/?utm_campaign=1020138&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/cae/1c3/b12/cae1c3b126605623da8fecefa77fa907.png" /><p>Я узнал, что задача предварительной загрузки изображений с помощью JavaScript удивительно сложна. Существует несколько способов это сделать, и лучший из них зависит от требований конкретного приложения.</p> <a href="https://habr.com/ru/articles/1020138/?utm_campaign=1020138&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 14 Apr 2026 08:05:32 GMT</pubDate>
      <dc:creator><![CDATA[aio350 (Timeweb Cloud)]]></dc:creator>
      
      <category>javascript</category><category>js</category><category>html</category><category>css</category><category>timeweb_статьи_перевод</category><category>image</category><category>img</category><category>изображение</category><category>предварительная загрузка</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Формы в Angular: от Reactive Forms к Signal Forms]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/domclick/articles/1018180/</guid>
      <link>https://habr.com/ru/companies/domclick/articles/1018180/?utm_campaign=1018180&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/c61/e9f/603/c61e9f6036605826ced94c7be9a6bd07.jpg" /><p>Привет! Меня зовут Егор Молчанов, я разработчик в&nbsp;компании Домклик. </p><p>В&nbsp;прошлой <a href="https://habr.com/ru/companies/domclick/articles/854530/">статье </a>мы познакомились с&nbsp;новыми функциями <code>input()</code>, <code>output()</code> и <code>model()</code>, которые закладывают фундамент для&nbsp;будущего Angular без&nbsp;Zone.js. Сегодня мы поговорим о&nbsp;том, как&nbsp;эти изменения дошли до&nbsp;самой, пожалуй, наболевшей темы в&nbsp;любом приложении&nbsp;— работы с&nbsp;формами. </p><p>В&nbsp;Angular v21&nbsp;появился новый, экспериментальный способ управления формами&nbsp;—&nbsp;<strong>Signal Forms</strong>. Он не&nbsp;отменяет старые добрые Reactive Forms, но&nbsp;предлагает совершенно иной подход, основанный на&nbsp;сигналах. Давайте разберёмся, как&nbsp;работали формы раньше, как&nbsp;они будут работать с&nbsp;Signal Forms, и что&nbsp;это нам даёт. </p> <a href="https://habr.com/ru/articles/1018180/?utm_campaign=1018180&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 14 Apr 2026 08:01:29 GMT</pubDate>
      <dc:creator><![CDATA[EgorMolchanov (Домклик)]]></dc:creator>
      
      <category><![CDATA[angular]]></category><category><![CDATA[signals]]></category><category><![CDATA[signal]]></category><category><![CDATA[forms]]></category><category><![CDATA[reactive]]></category><category><![CDATA[javascript]]></category><category><![CDATA[ангуляр]]></category><category><![CDATA[веб-разработка]]></category><category><![CDATA[web-разработка]]></category><category><![CDATA[формы]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как я сделал PWA-приложение для заметок и ссылок за вечер (и почему оно работает без интернета)]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1023144/</guid>
      <link>https://habr.com/ru/articles/1023144/?utm_campaign=1023144&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/fe0/7ef/fca/fe07effca991d41979d1a7b0fe1c7e1e.jpg" /><p>У каждого из нас есть «чёрная дыра», куда уходят полезные ссылки. Кто-то сохраняет их в «Избранном» браузера, кто-то пишет сам себе в Telegram, кто-то держит десяток вкладок открытыми «на потом». У меня была та же проблема. Я пробовал Notion, Evernote, Google Keep, Obsidian - всё это мощные инструменты, но для простого «сохранить ссылку и не забыть» они часто избыточны.</p><p>Так родилась идея KylikLink - минималистичного PWA-приложения для заметок и ссылок, которое работает без интернета и не требует регистрации.</p> <a href="https://habr.com/ru/articles/1023144/?utm_campaign=1023144&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 14 Apr 2026 07:21:15 GMT</pubDate>
      <dc:creator><![CDATA[alexanderkylikoyv]]></dc:creator>
      
      <category><![CDATA[pwa]]></category><category><![CDATA[веб-разработка]]></category><category><![CDATA[html]]></category><category><![CDATA[css]]></category><category><![CDATA[javascript]]></category><category><![CDATA[фронтенд]]></category><category><![CDATA[frontend]]></category><category><![CDATA[localstorage]]></category><category><![CDATA[service worker]]></category><category><![CDATA[заметки]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Вышел Playwright 1.59: как тестировщикам с пользой применить каждую новую фичу]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1022960/</guid>
      <link>https://habr.com/ru/articles/1022960/?utm_campaign=1022960&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/e97/4bc/872/e974bc8728514f94f223255709334d1a.jpg" /><p>Playwright 1.59 — не очередное инкрементальное обновление. Это заявка на то, куда движется автоматизация тестирования, и это направление глубоко агентное. Если вы ждали, когда инструменты догонят AI-driven воркфлоу, о которых все говорят, этот релиз закрывает разрыв.</p><p>Разберём каждую крупную фичу и, что важнее, как каждую из них можно применить немедленно.</p> <a href="https://habr.com/ru/articles/1022960/?utm_campaign=1022960&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 14 Apr 2026 06:00:42 GMT</pubDate>
      <dc:creator><![CDATA[FaryaRos]]></dc:creator>
      
      <category>playwright</category><category>javascript</category><category>playwright python</category><category>playwright парсинг</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Как я написал свою библиотеку валидации схем и создал свою альтернативу Zod]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1023038/</guid>
      <link>https://habr.com/ru/articles/1023038/?utm_campaign=1023038&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Несколько лет назад в одном из моих проектов на чистом JavaScript возникла задача: валидировать большие вложенные объекты со сложной структурой. Объекты содержали различные подобъекты, к каждому из которых применялись свои правила валидации в зависимости от типа.</p><p>Задача усложнялась двумя дополнительными требованиями:</p> <a href="https://habr.com/ru/articles/1023038/?utm_campaign=1023038&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 13 Apr 2026 18:16:25 GMT</pubDate>
      <dc:creator><![CDATA[andrew_zol]]></dc:creator>
      
      <category><![CDATA[валидация]]></category><category><![CDATA[схема]]></category><category><![CDATA[standard schema]]></category><category><![CDATA[zod]]></category><category><![CDATA[zod vs yup]]></category><category><![CDATA[typescript]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Создаем WCAG-доступный DatePicker на React: как Claude пишет основу, а мы доводим до ума]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1022918/</guid>
      <link>https://habr.com/ru/articles/1022918/?utm_campaign=1022918&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/cbc/d63/667/cbcd63667b5c287700cf74b8020f4f4c.jpg" /><p><strong>Привет, коллеги!</strong> Сегодня делимся историей, которая отлично показывает, как AI ускоряет старт, но человеческий опыт и внимание к деталям делают продукт по-настоящему крутым.</p><p>Недавно нам для одного из проектов понадобился DatePicker. Сам компонент под NDA, поэтому показать его не можем. Но чтобы поделиться процессом, мы специально для статьи собрали похожий концепт - с открытым кодом и возможностью потыкать вживую (ссылка ждет в конце).</p><p>Так вот, казалось бы, компонент простой, но мы решили не просто взять готовую библиотеку. Во-первых, хотелось понять «а как там внутри», а во-вторых - поставить себе планку: сделать его по-настоящему доступным по всем канонам WCAG. Ну и, конечно, не без эксперимента: «А что, если Claude напишет основу?»</p><p>Так началось наше приключение с созданием полностью доступного компонента выбора даты с использованием React и Typescript, следуя строгому паттерну <a href="https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/examples/datepicker-dialog/" rel="noopener noreferrer nofollow">WAI-ARIA APG «Date Picker Dialog»</a>  </p><p>Приготовьтесь к инсайтам, багам и победам!</p> <a href="https://habr.com/ru/articles/1022918/?utm_campaign=1022918&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 13 Apr 2026 13:52:39 GMT</pubDate>
      <dc:creator><![CDATA[codesrc]]></dc:creator>
      
      <category><![CDATA[React]]></category><category><![CDATA[TypeScript]]></category><category><![CDATA[WCAG]]></category><category><![CDATA[ARIA]]></category><category><![CDATA[DatePicker]]></category><category><![CDATA[доступность интерфейса]]></category><category><![CDATA[WAI-ARIA APG]]></category><category><![CDATA[Claude AI]]></category><category><![CDATA[клавиатурная навигация]]></category><category><![CDATA[frontend компоненты]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Парадокс хэштега! #hashtag_paradox]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1022710/</guid>
      <link>https://habr.com/ru/articles/1022710/?utm_campaign=1022710&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/9e8/aa5/774/9e8aa5774860c6e44e3850949572345c.png" /><p>Огромное число авторов используют <strong>хэштеги </strong>для пометки своих постов. А также для заголовков, вносят эту информацию на картинки, в инфографику для видео и всячески применяют для поиска. </p><p>Хочу рассказать о наблюдаемом мной парадоксе этой технологии с точки зрения IT и обычной жизни.</p><p>Этот термин состоит из конкатенации двух слов: <code>hash </code>и <code>tag</code>. Hash - это прежде всего понятие про уникальность с шифрованием. </p><p>Изначально, для того, чтобы добиться создания строки, которая точно будет отличаться от других, программисты придумали различные хэш-функции, которые на вход получали исходные данные, добавляли к ним какие-то индивидуальные или уникальные свойства, и с помощью арифметических вычислений и преобразований строк получали на выходе строку, которая являлась кандидатом на полную уникальность. </p><p>Такие функции не всегда могут однозначно давать уникальные ответы в виде строк, поэтому существуют так называемые коллизии.</p><p>Короче, здесь главный приоритет - уникальность, "не как у других". </p><p><strong>Тег, или тэг</strong> - это обозначение какой-то метки. </p><p>В HTML используются теги верстки, в разработке через систему контроля версий тегами помечали стабильную версию кода. tag-1.2.3</p><p>В общем, эти два термина несут окрас, который применяется во многих отраслях разработки.</p> <a href="https://habr.com/ru/articles/1022710/?utm_campaign=1022710&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 13 Apr 2026 08:27:42 GMT</pubDate>
      <dc:creator><![CDATA[ShapitoS999]]></dc:creator>
      
      <category><![CDATA[hash]]></category><category><![CDATA[hashtag]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[dc.send(file) не существует: что на самом деле нужно для передачи файла в браузере]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1022522/</guid>
      <link>https://habr.com/ru/articles/1022522/?utm_campaign=1022522&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/3f9/2a7/a6f/3f92a7a6f0534360a657a8f9765b7ccf.png" /><p>dc.send(file) не означает, что файл уже доставлен. Между отправкой и реальной доставкой – буфер, relay, запись на диск, ACK, reconnect и потерянный после refresh File. Разбираю шесть production-проблем WebRTC-файлообмена, которые обычно остаются за пределами туториалов.</p> <a href="https://habr.com/ru/articles/1022522/?utm_campaign=1022522&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 13 Apr 2026 05:57:44 GMT</pubDate>
      <dc:creator><![CDATA[dpetrakov]]></dc:creator>
      
      <category><![CDATA[WebRTC]]></category><category><![CDATA[RTCDataChannel]]></category><category><![CDATA[TURN]]></category><category><![CDATA[SCTP]]></category><category><![CDATA[File System Access API]]></category><category><![CDATA[backpressure]]></category><category><![CDATA[signaling]]></category><category><![CDATA[ACK]]></category><category><![CDATA[P2P]]></category><category><![CDATA[передача файлов]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Baseline: март 2026 или самый насыщенный выпуск]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1018200/</guid>
      <link>https://habr.com/ru/articles/1018200/?utm_campaign=1018200&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/fb2/3ba/527/fb23ba527511f456974ab25562ecc9e1.png" /><p>В этом выпуске 12 фич, которые стали доступы повесеместно с хорошей поддержкой. От трёх фич я в полном воссторге.</p><p>Обзор на браузерные API, которые стали <strong>Widely available</strong> в марте 2026. Раз в месяц я буду вам напоминать, что вы уже можете использовать в проде.</p><p>Каждый месяц выходят новые CSS-свойства, HTML-атрибуты, JavaScript-методы и WebAPI, но применять в проде мы их конечно же не будем.  </p><p>2.5 года назад также каждый месяц выходили новые фичи в браузере, а вот их уже пора начинать применять.</p> <a href="https://habr.com/ru/articles/1018200/?utm_campaign=1018200&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Узнать, что можно применять в проде</a>]]></description>
      
      <pubDate>Sat, 11 Apr 2026 10:59:02 GMT</pubDate>
      <dc:creator><![CDATA[nikolayshabalin]]></dc:creator>
      
      <category><![CDATA[baseline]]></category><category><![CDATA[widely available]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Облако своими руками для расчета пространственных стержней методом конечных элементов на Node js, React js и Three js]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1022206/</guid>
      <link>https://habr.com/ru/articles/1022206/?utm_campaign=1022206&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/9ec/7ff/a7b/9ec7ffa7b13dfe03a81a0512b9c126e2.jpg" /><p>В данной статье (а возможно цикле статей) речь пойдет о собственной разработке облачного SPA приложения по моделированию пространственных стержневых систем методом конечных элементов с численно-аналитическим решением для инженеров-проектировщиков в основе которого математическая модель Эйлера-Бернулли, вариационные принципы и итерационный метод сопряжённых градиентов применяемый для большеразмерных СЛАУ с разреженной матрицей жёсткости с одной стороны, и JavaScripts экосистема облака, выполненного в стеке Node js, Express js бэкенд части, и React js, MobX, Three js, glsl shaders фронтенд части с другой стороны. Отображение эпюр усилий в пространственных стержневых элементах реализовано на шейдерах vertexShader и fragmentShader. Это позволяет вычислять эпюры для каждого стержня на лету и выполнять отображение графиков (в общем случае полиномов 5 степени) в пространстве мгновенно.</p> <a href="https://habr.com/ru/articles/1022206/?utm_campaign=1022206&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sat, 11 Apr 2026 08:16:13 GMT</pubDate>
      <dc:creator><![CDATA[atomicra]]></dc:creator>
      
      <category><![CDATA[webgl]]></category><category><![CDATA[мкэ]]></category><category><![CDATA[сопромат]]></category><category><![CDATA[расчеты на прочность]]></category><category><![CDATA[инженерия]]></category><category><![CDATA[сапр]]></category><category><![CDATA[проектирование]]></category><category><![CDATA[инженер-программист]]></category><category><![CDATA[cad online]]></category><category><![CDATA[cad системы]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как я автоматизировал управление информацией и оптимизировал рабочие процессы. История Sapiens OS]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1022042/</guid>
      <link>https://habr.com/ru/articles/1022042/?utm_campaign=1022042&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/4a5/364/0dd/4a53640dd557fefc0aacd8be5dacc1df.PNG" /><p>Если вы ведете несколько проектов одновременно, вы знаете проблему управления информацией. Мысль пришла в голову — записал куда-то. Через месяц пытаешься вспомнить: где это было? Сохранил в папке где-то на компьютере? В заметках телефона? В рабочем чате или личных сообщениях?</p><p>Если не нашел — идея ушла. Или осталась, но найти её — отдельный квест и потеря времени, которое хотелось бы потратить с пользой, а не на поиски.</p><p>Со мной так происходило постоянно. Статьи и доклады по учёбе, отчёты по работе, технические заметки по разрабатываемому ПО, ссылки на полезные ресурсы, голосовые идеи по дороге на работу, полезные фото — всё в разных местах, без структуры, без связей.</p><p>Изначально я пытался найти для себя идеальный инструмент. Notion, Obsidian, Evernote — ни один не решал мою задачу в комплексе: быстро сохранить мысль, не потерять её, а потом легко найти и связать с другими.</p><p>Поэтому я написал свою систему.</p><p>Статья — не «продажа курса» и не «уникальный продукт». Это описание того, как я решал свои задачи, какие решения принимал и что из этого вышло. Если вы тоже теряете время при поиске нужной информации — возможно, найдёте здесь что-то полезное.</p> <a href="https://habr.com/ru/articles/1022042/?utm_campaign=1022042&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 10 Apr 2026 16:47:18 GMT</pubDate>
      <dc:creator><![CDATA[aleshaalexsey]]></dc:creator>
      
      <category><![CDATA[Python]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[Веб-разработка]]></category><category><![CDATA[Личный опыт]]></category><category><![CDATA[FastAPI]]></category><category><![CDATA[SQLite]]></category><category><![CDATA[DevOps]]></category><category><![CDATA[Управление знаниями]]></category><category><![CDATA[Notion]]></category><category><![CDATA[VK]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Расширение для Chrome, которое спасает от рейдов на Twitch]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1021824/</guid>
      <link>https://habr.com/ru/articles/1021824/?utm_campaign=1021824&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/16e/a7c/231/16ea7c231fd5635facd55a784ec0c86c.jpg" /><p>Рассказываю, как создал расширение для Chrome, которое автоматически отменяет рейды на Twitch. Разбираю архитектуру на Manifest V3, логику обнаружения модальных окон через текстовый анализ и подводные камни при работе с динамическим DOM.</p> <a href="https://habr.com/ru/articles/1021824/?utm_campaign=1021824&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 10 Apr 2026 11:16:05 GMT</pubDate>
      <dc:creator><![CDATA[raptortal]]></dc:creator>
      
      <category><![CDATA[twitch]]></category><category><![CDATA[raid]]></category><category><![CDATA[block]]></category><category><![CDATA[twitch.tv]]></category><category><![CDATA[google chrome]]></category><category><![CDATA[расширение]]></category><category><![CDATA[расширения chrome]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[FiT календарь тренировок — финал трилогии пет-проекта]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1021790/</guid>
      <link>https://habr.com/ru/articles/1021790/?utm_campaign=1021790&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/0a0/50e/8d4/0a050e8d46b975aba4883f0cfde56f1c.jpg" /><p>Год назад я опубликовал <a href="https://habr.com/ru/articles/895296/" rel="noopener noreferrer nofollow">первую статью</a> про разработку приложения календаря тренировок. Спустя 5 месяцев опубликовал <a href="https://habr.com/ru/articles/943834/" rel="noopener noreferrer nofollow">рассказ о 10 обновлениях</a>. Сейчас время финала истории - ещё 7 обновлений за 7 месяцев.</p><p>Сам регулярно пользуюсь приложением - оно добавляет мотивации заниматься спортом дальше, сохраняет график тренировок, следит за объемом выполненных упражнений. На текущий момент в приложении больше 150 зарегистрированных пользователей.</p><p>Времени на пет-проект уделял крайне мало, но основная функциональность была уже готова ранее. Сейчас на нём можно пробовать что-то новое - получается хороший полигон для испытаний.</p><p><a href="https://github.com/dergunovs/fit" rel="noopener noreferrer nofollow">Исходный код</a></p><p><a href="https://www.rustore.ru/catalog/app/com.appfit.dev" rel="noopener noreferrer nofollow">Приложение в RuStore</a></p><p><a href="https://app-fit.ru" rel="noopener noreferrer nofollow">Веб-версия</a></p><p><strong>Frontend:</strong> Typescript, Vitest, Vite, Vue, Tanstack Query, Vue I18n, Tauri</p><p><strong>Backend:</strong> Typescript, Vitest, Esbuild, Fastify, Mongoose, MongoDB, Swagger</p> <a href="https://habr.com/ru/articles/1021790/?utm_campaign=1021790&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 10 Apr 2026 10:20:07 GMT</pubDate>
      <dc:creator><![CDATA[dergunovs]]></dc:creator>
      
      <category><![CDATA[vue]]></category><category><![CDATA[vuejs]]></category><category><![CDATA[vue.js]]></category><category><![CDATA[пет-проект]]></category><category><![CDATA[пет-проекты]]></category><category><![CDATA[tauri]]></category><category><![CDATA[мобильные приложения]]></category><category><![CDATA[javascript]]></category><category><![CDATA[typescript]]></category><category><![CDATA[веб-приложения]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Сегодня мы построим свою локальную модель на смартфоне. С блэкджеком и WebUI]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1021610/</guid>
      <link>https://habr.com/ru/articles/1021610/?utm_campaign=1021610&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/b11/faf/746/b11faf746f3f4e41dd496f80ccc4e164.png" /><p>Недавно Apple подтвердила стратегическое партнерство с Google для интеграции ИИ Gemini в свои устройства.&nbsp;  Сегодня мы их опередим и поднимем свою LLM в Android-смартфоне. С блэкджеком и WebUI.</p> <a href="https://habr.com/ru/articles/1021610/?utm_campaign=1021610&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 10 Apr 2026 03:56:28 GMT</pubDate>
      <dc:creator><![CDATA[BlackJackBander]]></dc:creator>
      
      <category><![CDATA[AI]]></category><category><![CDATA[termux]]></category><category><![CDATA[LLM]]></category><category><![CDATA[Ollama]]></category><category><![CDATA[android]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Pretext — библиотека, которая считает текстовую вёрстку в 500 раз быстрее браузера. Зачем это нужно и как работает]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1020058/</guid>
      <link>https://habr.com/ru/articles/1020058/?utm_campaign=1020058&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/c7c/4b7/180/c7c4b71805179b9db496e5339993a319.png" /><p>28&nbsp;марта 2026&nbsp;года инженер Midjourney Cheng Lou выложил в&nbsp;открытый доступ библиотеку, которая за&nbsp;неделю набрала почти 40&nbsp;тысяч звёзд на&nbsp;GitHub. И имя ей&nbsp;— <strong>Pretext</strong>. Это движок текстовой верстки на&nbsp;чистом TypeScript, который полностью обходит DOM и браузерный layout рефлоу. За&nbsp;этим стоит вполне большая проблема и красивое решение.</p><p>Давайте разберемся, что&nbsp;это такое, зачем оно нужно, как&nbsp;устроено и стоит&nbsp;ли тащить к&nbsp;себе в&nbsp;проект.</p> <a href="https://habr.com/ru/articles/1020058/?utm_campaign=1020058&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 09 Apr 2026 17:01:11 GMT</pubDate>
      <dc:creator><![CDATA[ab429]]></dc:creator>
      
      <category><![CDATA[pretext]]></category><category><![CDATA[javascript]]></category><category><![CDATA[text layout]]></category><category><![CDATA[производительность]]></category><category><![CDATA[dom reflow]]></category><category><![CDATA[typescript]]></category><category><![CDATA[виртуализация]]></category><category><![CDATA[open source]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[WebSocket и SSE просто, для собеседований и не только]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1021414/</guid>
      <link>https://habr.com/ru/articles/1021414/?utm_campaign=1021414&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/507/ac4/a7a/507ac4a7a9b5045218c38ef6bcf1c99f.png" /><p>WebSocket vs SSE простым языком: двустороннее и однонаправленное соединение, как&nbsp;работает TCP и HTTP upgrade, и какие вопросы по&nbsp;этим темам чаще всего задают на&nbsp;собеседовании.</p> <a href="https://habr.com/ru/articles/1021414/?utm_campaign=1021414&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 09 Apr 2026 12:51:52 GMT</pubDate>
      <dc:creator><![CDATA[Artur_frontDev]]></dc:creator>
      
      <category><![CDATA[websocket]]></category><category><![CDATA[websocket api]]></category><category><![CDATA[websocket js]]></category><category><![CDATA[tcp]]></category><category><![CDATA[двустороннее соединение]]></category><category><![CDATA[собеседование вопросы]]></category><category><![CDATA[собеседование в it]]></category><category><![CDATA[sse]]></category><category><![CDATA[frontend]]></category><category><![CDATA[api]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Frontend Status: свежий дайджест фронтенда и AI — 09.04.2026]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1021402/</guid>
      <link>https://habr.com/ru/articles/1021402/?utm_campaign=1021402&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/003/588/494/003588494b55bd3f2723fc8f67d6e245.webp" /><p>Привет!</p><p>Это 12-й выпуск Frontend Status - дайджеста по фронтенд-разработке.</p><p>В этом выпуске:</p><p>📺 Крупные релизы и видео: Babylon.js 9.0 и доклад Таннера Линсли про TanStack Start.</p><p>🤖 AI в проде без розовых очков: как агенты «видят» веб, что не так с персонами в промптах и почему Cloudflare меняет подход к кэшу.</p><p>🛡️ Supply chain снова в фокусе: пауза bug bounty в Node.js, кейс с axios и практичные меры защиты зависимостей.</p><p>🎨 CSS-практика без магии: containment, sticky по осям, subgrid, dino game и «жидкие» анимации от Темани Афифа.</p><p>⚡ JavaScript/TypeScript: главное по JS 2026, новый JSIR от Google и утилиты для View Transitions.</p><p>🅰️ Angular-экосистема для AI-эпохи и не только: ngxtension, LLMs.txt в NG-ZORRO и MCP-страница в PrimeNG.</p><p>🌎 Веб-стандарты и браузеры: W3C про AI и голосовых агентов, JetStream 3 и MCP-коннектор в Opera Neon.</p><p>🖌️ UI/UX и доступность: WebAIM Million 2026, дизайн для людей с тревожностью и разборы про принципы дизайна.</p><p>…и многое другое.</p> <a href="https://habr.com/ru/articles/1021402/?utm_campaign=1021402&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 09 Apr 2026 12:43:25 GMT</pubDate>
      <dc:creator><![CDATA[frontend-status]]></dc:creator>
      
      <category><![CDATA[javascript]]></category><category><![CDATA[typescript]]></category><category><![CDATA[react]]></category><category><![CDATA[angular]]></category><category><![CDATA[vue.js]]></category><category><![CDATA[css]]></category><category><![CDATA[браузеры]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Proxyman Scripts: как превратить прокси в инструмент автоматизации тестирования]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1021390/</guid>
      <link>https://habr.com/ru/articles/1021390/?utm_campaign=1021390&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/f3d/4a4/dbe/f3d4a4dbe768e5d9b765f9f7cfc43520.jpg" /><p>Когда в проекте появляются сложные сценарии: нестабильный бэкенд, редкие ошибки, зависимость от внешних сервисов, классические инструменты тестирования могут тормозить. Любая правка требует участия сервера, а воспроизведение бага превращается в квест.</p><p>В этот момент прокси-инструменты вроде Proxyman начинают играть совсем другую роль. Это уже не просто «посмотреть запросы», а полноценный слой управления трафиком.</p><p>Меня зовут Станислав, я Test-инженер в KODE, в этой статье разберу, как использовать Proxyman Scripts не как вспомогательную фичу, а как инструмент автоматизации тестирования.</p> <a href="https://habr.com/ru/articles/1021390/?utm_campaign=1021390&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 09 Apr 2026 12:26:09 GMT</pubDate>
      <dc:creator><![CDATA[APPKODE]]></dc:creator>
      
      <category><![CDATA[proxyman]]></category><category><![CDATA[qa]]></category><category><![CDATA[тестирование]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Нормализация состояния в React через реестр сущностей: паттерн на Zustand с рекурсивным парсингом и мягкими удалениями]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1019110/</guid>
      <link>https://habr.com/ru/articles/1019110/?utm_campaign=1019110&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>В этой статье я разберу паттерн Entity Registry — плоский реестр сущностей на базе Zustand, который автоматически нормализует любые ответы API, хранит данные в едином словаре по ID и обеспечивает точечный ре-рендер только тех компонентов, чьи данные действительно изменились. Отдельно разберём трюк с enumerable: false для мягких удалений — пожалуй, самую изящную часть паттерна.</p> <a href="https://habr.com/ru/articles/1019110/?utm_campaign=1019110&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 09 Apr 2026 08:00:51 GMT</pubDate>
      <dc:creator><![CDATA[Finom]]></dc:creator>
      
      <category><![CDATA[React]]></category><category><![CDATA[Next.js]]></category><category><![CDATA[TypeScript]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[Vovk.ts]]></category><category><![CDATA[Zustand]]></category><category><![CDATA[Redux]]></category><category><![CDATA[нормализация]]></category>
    </item>
  

  

  

	
  

  

  

      

      

      

    
  </channel>
</rss>
