<?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 Jul 2026 16:46:39 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[Обзор на Astro JS: опыт боевого проекта на 500+ тысяч страниц]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1061810/</guid>
      <link>https://habr.com/ru/articles/1061810/?utm_campaign=1061810&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/2bd/866/453/2bd8664539275863e3938d6868f9418f.png" /><p>Привет! В этой статье я - Антон Резников, Fullstack разработчик и Lead проекта из evilUnion, расскажу, как мы отказались от знакомого всем Next JS, не пожалели об этом и запустили один из самых крупных наших проектов на очень перспективном фреймворке - Astro JS.</p><p>В этой статье мы посмотрим, что из себя представляет Astro, чем он выделяется среди других метафреймворков, изучим его особенности, а далее на реальном примере пройдем весь путь построения мультиязычного сайта на 500+ тыс. страниц. Поехали 🚀</p> <a href="https://habr.com/ru/articles/1061810/?utm_campaign=1061810&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 22 Jul 2026 10:45:41 GMT</pubDate>
      <dc:creator><![CDATA[evilAleksandr]]></dc:creator>
      
      <category><![CDATA[Astro js]]></category><category><![CDATA[react]]></category><category><![CDATA[astro.js]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Четыре месяца с Claude Code: что в итоге осталось лежать в .claude/]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1061696/</guid>
      <link>https://habr.com/ru/articles/1061696/?utm_campaign=1061696&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/7b1/2e5/a8e/7b12e5a8e04f152200ad7eb8752c7596.png" /><p>За четыре месяца работы в паре с Claude Code вокруг проекта наросла инфраструктура, которой в первый день не было и в помине: пять скиллов, четыре хука, 2066 строк собственных скриптов. Разбираю четыре проблемы, которые пришлось решать не промптом, а кодом — и три случая, когда агент уверенно врал.</p> <a href="https://habr.com/ru/articles/1061696/?utm_campaign=1061696&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 22 Jul 2026 08:03:43 GMT</pubDate>
      <dc:creator><![CDATA[D1MANYCH]]></dc:creator>
      
      <category><![CDATA[Claude Code]]></category><category><![CDATA[ИИ-агенты]]></category><category><![CDATA[автоматизация]]></category><category><![CDATA[PWA]]></category><category><![CDATA[service worker]]></category><category><![CDATA[пет-проект]]></category><category><![CDATA[тестирование]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[«Зачем Javasript-у DI контейнер?»]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1061632/</guid>
      <link>https://habr.com/ru/articles/1061632/?utm_campaign=1061632&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/8ea/16e/e4d/8ea16ee4deec59a856a29622c8aa0d12.jpeg" /><p>Вот именно такой вопрос был задан в первом же комментарии к статье "<a href="https://habr.com/ru/articles/1060340/" rel="noopener noreferrer nofollow">DI-контейнер на чистом JavaScript без TypeScript и reflect-metadata</a>" уважаемого <a class="mention" href="/users/alexander_kubarski">@alexander_kubarski</a>. Я когда-то и сам на Хабре отвечал на этот вопрос ("<a href="https://habr.com/ru/articles/748132/" rel="noopener noreferrer nofollow">Зачем нужно внедрение зависимостей в JS</a>"), и уважаемый <a class="mention" href="/users/wroud">@Wroud</a> тоже ("<a href="https://habr.com/ru/articles/934876/" rel="noopener noreferrer nofollow">Dependency Injection в JavaScript: зачем он вам нужен</a>"), но непонимание места и значения DI у JS-разработчиков всё равно присутствует. Попробую ответить на этот вопрос ещё раз:</p><p><em><code>Внедрение зависимостей помогает снизить стоимость верификации сложного приложения. Оно отделяет компонент от выбора конкретного окружения и позволяет проверять его относительно явных ожиданий, не поднимая каждый раз весь граф реальных зависимостей.</code></em></p><p>Именно для этого используют Inversion of Control в целом и Dependency Injection в частности - во всех языках программирования, а не только в JavaScript.</p> <a href="https://habr.com/ru/articles/1061632/?utm_campaign=1061632&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Чуть подробнее...</a>]]></description>
      
      <pubDate>Tue, 21 Jul 2026 21:22:34 GMT</pubDate>
      <dc:creator><![CDATA[flancer]]></dc:creator>
      
      <category><![CDATA[javascript]]></category><category><![CDATA[dependency injection]]></category><category><![CDATA[ioc]]></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[Как я организовал проект на Next.js]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1061510/</guid>
      <link>https://habr.com/ru/articles/1061510/?utm_campaign=1061510&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/bba/75c/1c8/bba75c1c8a21d994f0dd8cf969bf384c.png" /><p>В этой статье я расскажу, как организовал свой проект на Next.js. На примере реального приложения рассмотрены структура проекта, организация маршрутизации, работа с данными через DAL, аутентификация, валидация, тестирование и другие подходы, которые я использовал в процессе разработки. Статья не претендует на универсальное руководство, а показывает один из возможных вариантов организации приложения.</p> <a href="https://habr.com/ru/articles/1061510/?utm_campaign=1061510&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 21 Jul 2026 15:15:35 GMT</pubDate>
      <dc:creator><![CDATA[markak]]></dc:creator>
      
      <category><![CDATA[next.js]]></category><category><![CDATA[react]]></category><category><![CDATA[разработка]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Napominator Home: Полное руководство по установке, настройке и использованию]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1061398/</guid>
      <link>https://habr.com/ru/articles/1061398/?utm_campaign=1061398&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/16e/db8/72a/16edb872a4c380384d394ff0ce9622c2.jpg" /><p>В прошлой статье я поспешил с публикацией и лишь в общих чертах объяснил, что такое Napominator Home. Сегодня, как и обещал, публикую подробное руководство, которое охватывает все этапы: от установки до ежедневного использования.</p><p>В этой статье вы узнаете, как установить систему, настроить её компоненты и пользоваться всеми функциями.</p> <a href="https://habr.com/ru/articles/1061398/?utm_campaign=1061398&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 21 Jul 2026 13:41:52 GMT</pubDate>
      <dc:creator><![CDATA[RomanZo26]]></dc:creator>
      
      <category><![CDATA[tasks]]></category><category><![CDATA[app]]></category><category><![CDATA[sheduler]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Что нового в WebStorm 2026.2]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/haulmont/articles/1061378/</guid>
      <link>https://habr.com/ru/companies/haulmont/articles/1061378/?utm_campaign=1061378&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/4ee/fd3/b74/4eefd3b7422650371e85ab6df37cf80c.png" /><p>Несмотря на то, что WebStorm уже несколько лет официально недоступен в России, он по-прежнему остаётся одним из главных инструментов для веб-разработчиков. Недавно вышла новая версия WebStorm 2026.2.</p><p>В релиз вошли поддержка TypeScript 7, нативная интеграция с GitHub Copilot, менеджер скиллов для ИИ-агентов и обновления для React, Vue, Svelte, Angular и других популярных технологий. Разработчики также улучшили отладку, работу с Node.js и Git, производительность и стабильность IDE.</p><p>В статье разберём основные изменения WebStorm 2026.2, а также расскажем, какие возможности для веб-разработки уже доступны в <a href="https://openide.ru/download?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=webstorm-2026-2">OpenIDE</a> и чего ожидать от её предстоящего перехода на платформу 2026.2.</p> <a href="https://habr.com/ru/articles/1061378/?utm_campaign=1061378&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 21 Jul 2026 12:01:15 GMT</pubDate>
      <dc:creator><![CDATA[befayer (Haulmont)]]></dc:creator>
      
      <category>ide</category><category>webstorm</category><category>jetbrains</category><category>typescript</category><category>vue</category><category>react</category><category>react.js</category><category>angular</category><category>angularjs</category><category>javascript</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[N тел в браузере: PWA‑бенчмарк на Rust, WebAssembly и Three.js]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1061258/</guid>
      <link>https://habr.com/ru/articles/1061258/?utm_campaign=1061258&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/269/db1/1ab/269db11ab12de8886433195604b68f70.png" /><p>В статье расскажу о&nbsp;PWA‑бенчмарке, который основан на&nbsp;задаче N тел. Физический движок написан на&nbsp;Rust/WebAssembly, визуализация через Three.js, и результаты запусков сохраняются в&nbsp;Supabase. Тут присутствует разбор архитектуры, сравнение алгоритмов расчета&nbsp;— прямой и Barnes‑Hut, а&nbsp;также тут расписаны проблемы, связанные с&nbsp;измерением производительности в&nbsp;браузере.</p> <a href="https://habr.com/ru/articles/1061258/?utm_campaign=1061258&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 21 Jul 2026 08:50:31 GMT</pubDate>
      <dc:creator><![CDATA[GorkaIvan]]></dc:creator>
      
      <category><![CDATA[алгоритмы]]></category><category><![CDATA[pwa]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[page.waitForTimeout — это всего лишь warning. Почему зелёный линт не спасает Playwright-тесты]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1058692/</guid>
      <link>https://habr.com/ru/articles/1058692/?utm_campaign=1058692&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/eb2/076/4f4/eb20764f4a9fafeffb3dcbe8011329fe.png" /><p>Тест кликает с <code>force: true</code>, ждёт <code>waitForTimeout(3000)</code> и не делает ни одной проверки — а CI с подключённым <code>eslint-plugin-playwright</code> зелёный: все три греха в recommended — warning. Я выписал из исходников плагина, где <code>error</code>, а где <code>warn</code>. Под катом — конфиг, который это чинит. Ну и десять правил ревью, до которых линту не дотянуться в принципе.</p> <a href="https://habr.com/ru/articles/1058692/?utm_campaign=1058692&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 21 Jul 2026 06:30:35 GMT</pubDate>
      <dc:creator><![CDATA[Kova13v]]></dc:creator>
      
      <category><![CDATA[playwright]]></category><category><![CDATA[eslint]]></category><category><![CDATA[автотесты]]></category><category><![CDATA[flaky-тесты]]></category><category><![CDATA[тестирование]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[История корутин: появление, развитие, спад и возрождение]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/psb/articles/1058516/</guid>
      <link>https://habr.com/ru/companies/psb/articles/1058516/?utm_campaign=1058516&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/c9d/382/7f4/c9d3827f49c3510bd1a10791b4e04be1.png" /><p>Привет, Хабр! Меня зовут Дмитрий Попов, я Android‑разработчик в&nbsp;ПСБ. В&nbsp;какой‑то момент мне захотелось разобраться&nbsp;— что&nbsp;такое корутина и откуда они вообще взялись. Погрузившись в&nbsp;различные статьи и видео, я узнал много нового, рассказал коллегам внутри команды, а&nbsp;теперь решил рассказать и вам. Все, что&nbsp;важно знать о&nbsp;корутинах, по&nbsp;моему скромному мнению,&nbsp;— в&nbsp;этой статье!</p> <a href="https://habr.com/ru/articles/1058516/?utm_campaign=1058516&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 21 Jul 2026 06:30:35 GMT</pubDate>
      <dc:creator><![CDATA[popodi (ПСБ)]]></dc:creator>
      
      <category><![CDATA[корутины]]></category><category><![CDATA[корутины kotlin]]></category><category><![CDATA[горутины]]></category><category><![CDATA[горутина]]></category><category><![CDATA[event-loop]]></category><category><![CDATA[история it]]></category><category><![CDATA[история ит]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Вышел Nuxt 4.5]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1060996/</guid>
      <link>https://habr.com/ru/articles/1060996/?utm_campaign=1060996&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/d0f/39e/ef8/d0f39eef8d2793976d1ebad5a2492067.png" /><p>Nuxt 4.5 это действительно крупный релиз. В нём обновили сразу три ключевых компонента системы сборки: Vite 8, Rspack 2 и совершенно новый пайплайн на базе Rsbuild для сборщика Rspack.</p><p>Также появились экспериментальный режим потокового SSR, стабильная система кодов ошибок, несколько новых composables и соглашений, а ещё множество внутренних улучшений, которые приближают нас к Nuxt 5.</p> <a href="https://habr.com/ru/articles/1060996/?utm_campaign=1060996&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 20 Jul 2026 13:33:26 GMT</pubDate>
      <dc:creator><![CDATA[qmzik]]></dc:creator>
      
      <category>nuxt</category><category>vue</category><category>javascript</category><category>frontend</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[FFmpeg в браузере: как мы сделали медиа-конвертер, который ни разу не обращается к серверу]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1060950/</guid>
      <link>https://habr.com/ru/articles/1060950/?utm_campaign=1060950&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/117/d62/086/117d62086396beb7e9ea4c117c6b5ae4.webp" /><p>Конвертация медиа. Люди решают эту задачу десятки раз в неделю. Видео с дрона нужно перевести в MP4 для мессенджера, HEIC с айфона в JPEG для сайта, аудиозапись интервью обрезать и сжать. Обычно это выглядит так: человек открывает один из сотен онлайн-конвертеров, загружает туда полугигабайтный файл, ждёт, пока он доползёт до сервера, потом ждёт очереди, потом скачивает обратно. Параллельно его файлы лежат на чужом сервере, о чём мало кто задумывается (а зря, если речь про корпоративный договор или личное видео).</p><p>Мы решили проверить, можно ли полностью убрать из этой схемы сервер. Чтобы конвертация происходила целиком в браузере, на устройстве пользователя. Без загрузок, без очередей, без серверных затрат. Так появился <a href="https://browserskit.com" rel="noopener noreferrer nofollow">BrowsersKit</a>: набор инструментов (медиа-конвертер, PDF, математика, Python-песочница), работающих на клиенте. Дальше расскажу, как это устроено внутри, какие грабли нас поджидали и как мы с ними справились.</p> <a href="https://habr.com/ru/articles/1060950/?utm_campaign=1060950&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 20 Jul 2026 12:26:08 GMT</pubDate>
      <dc:creator><![CDATA[DoubleCitizen]]></dc:creator>
      
      <category><![CDATA[ffmpeg]]></category><category><![CDATA[webassembly]]></category><category><![CDATA[wasm]]></category><category><![CDATA[webcodecs]]></category><category><![CDATA[javascript]]></category><category><![CDATA[browserskit]]></category><category><![CDATA[оптимизация]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Эмиграция в США после 30: от подработок на складе до Apple, своей школы и разработки с ИИ]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1060868/</guid>
      <link>https://habr.com/ru/articles/1060868/?utm_campaign=1060868&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/af0/dc5/661/af0dc5661a0e7ac752388df4bbcef06b.jpg" /><p>Переезд в другую страну редко выглядит как последовательный карьерный план. Особенно если вам больше тридцати, с вами едет семья, сбережения быстро заканчиваются, прежний опыт плохо считывается местным рынком, а поиск первой работы растягивается на месяцы.</p><p>Я, Александр, автор телеграм-канала «<a href="https://t.me/shulepov_codeee" rel="noopener noreferrer nofollow">Shulepov Code</a>», поговорил с Виктором Богуцким — разработчиком, который переехал в США в 2016 году, прошёл путь от физической работы и десятков отказов до позиции в Apple и eBay, а сейчас основателем школы программирования <a href="https://pasv.us/ru/" rel="noopener noreferrer nofollow">PASV</a>. &nbsp;&nbsp;</p><p>В этом выпуске мы разбираем, почему эмигранту важнее упорство, чем талант, как устроен найм в американском IT, почему высокая зарплата не гарантирует больших накоплений и зачем разработчику в эпоху вайбкодинга становиться «дирижёром-архитектором». Виктор делится реальным опытом переезда с семьёй, особенностями поиска работы после 30 и тем, как он построил свою школу программирования. &nbsp;&nbsp;&nbsp;</p> <a href="https://habr.com/ru/articles/1060868/?utm_campaign=1060868&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 20 Jul 2026 10:30:17 GMT</pubDate>
      <dc:creator><![CDATA[aleksandr_shulepov]]></dc:creator>
      
      <category><![CDATA[IT-эмиграция]]></category><category><![CDATA[карьера в IT]]></category><category><![CDATA[эмиграция в США]]></category><category><![CDATA[вайбкодинг]]></category><category><![CDATA[ИИ в разработке]]></category><category><![CDATA[React]]></category><category><![CDATA[работа в Apple]]></category><category><![CDATA[фронтенд разработка]]></category><category><![CDATA[собеседования в Big Tech]]></category><category><![CDATA[AI first]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Я забыл — не прокатит, или какой подход у админа к детям]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1060488/</guid>
      <link>https://habr.com/ru/articles/1060488/?utm_campaign=1060488&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/fcb/986/79b/fcb98679bdeb6a3faa11bb7b1b81f5c7.jpg" /><p>Пока я работал над <a href="https://mini-bucket.ru/" rel="noopener noreferrer nofollow">Mini-Bucket</a>, параллельно развивался еще один проект. Именно о нем и пойдет речь в этой статье.</p><p>Предыстория: от проблемы к идее Я уже неоднократно сталкивался с одной проблемой. Вернее, даже с кучей мелких, но если их обобщить, получится одна большая. Думаю, родители, читающие эту статью, меня прекрасно поймут.</p><p>ДЕТИ… Их вечное: «Забыл!», «Я не слышал!», а в голове — только игры и бесконечное сидение в телефонах.</p><p>В очередной раз услышав это «Забыл», у меня просто поднакипело (признаюсь, я и сам порой забываю что-то проверить). Я решил: пусть.....</p> <a href="https://habr.com/ru/articles/1060488/?utm_campaign=1060488&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 19 Jul 2026 06:58:47 GMT</pubDate>
      <dc:creator><![CDATA[RomanZo26]]></dc:creator>
      
      <category><![CDATA[tasks]]></category><category><![CDATA[sheduler]]></category><category><![CDATA[bot]]></category><category><![CDATA[app]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[FSD, Clean или modular? Шесть вариантов React-магазина под четырьмя изменениями]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1060256/</guid>
      <link>https://habr.com/ru/articles/1060256/?utm_campaign=1060256&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/40f/2a1/407/40f2a1407d51361d49ebe450283738e8.jpg" /><p>Мы вынесли компактную карточку банковской карты в <code>entities/card/ui</code>: маска номера, баланс и статус — решение казалось очевидным.</p><p>Через два спринта в карточке появились действия «заблокировать карту» и «изменить лимит». В итоге <code>entity</code> начала импортировать <code>features/block-card</code>, <code>features/change-card-limit</code> и проверку прав доступа мимо public API. Когда ту же карточку понадобилось показать в выборе счёта списания, вместе с ней приехали ненужные зависимости и проверки ролей.</p><p>Пользовательских инцидентов не случилось, но исправление отняло время. В <code>entity</code> оставили чистый <code>CardPreview</code>, сценарии подключили выше, композицию дашборда перенесли в <code>widgets/card-summary</code>, затем заново прогнали ролевые тесты.</p><p>После этого на ревью мы стали обсуждать имя папки ближе к концу разговора. Сначала отвечали на другой вопрос:</p><p><strong>Какие будущие изменения выбранная граница позволит оставить локальными?</strong></p><p>В <a href="https://feature-sliced.design/docs/guides/migration/from-v2-0" rel="noopener noreferrer nofollow">FSD 2.1</a> для подобных ситуаций рекомендуют начинать со страниц и извлекать код ниже по мере появления переиспользования. Это хороший вариант по умолчанию, хотя самостоятельный сценарий с близким вторым потребителем иногда оправдывает границу раньше.</p> <a href="https://habr.com/ru/articles/1060256/?utm_campaign=1060256&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sat, 18 Jul 2026 10:23:28 GMT</pubDate>
      <dc:creator><![CDATA[Viktoriko]]></dc:creator>
      
      <category><![CDATA[React]]></category><category><![CDATA[TypeScript]]></category><category><![CDATA[архитектура фронтенда]]></category><category><![CDATA[Feature-Sliced Design]]></category><category><![CDATA[FSD]]></category><category><![CDATA[Clean Architecture]]></category><category><![CDATA[модульная архитектура]]></category><category><![CDATA[масштабирование приложений]]></category><category><![CDATA[границы модулей]]></category><category><![CDATA[рефакторинг]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[DI-контейнер на чистом JavaScript без TypeScript и reflect-metadata]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1060340/</guid>
      <link>https://habr.com/ru/articles/1060340/?utm_campaign=1060340&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/343/b91/ec7/343b91ec72df142cadc4528a675d199f.webp" /><p>В статье разберем, как собрать простой DI-контейнер на чистом JavaScript без TypeScript, декораторов и <code>reflect-metadata</code>. Заодно посмотрим, как применить его в небольшом DDD-примере с корзиной, репозиторием, скидками и разными lifetime зависимостей.  </p> <a href="https://habr.com/ru/articles/1060340/?utm_campaign=1060340&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать</a>]]></description>
      
      <pubDate>Fri, 17 Jul 2026 16:42:19 GMT</pubDate>
      <dc:creator><![CDATA[alexander_kubarski]]></dc:creator>
      
      <category><![CDATA[reflect-metadata]]></category><category><![CDATA[javascript]]></category><category><![CDATA[di]]></category><category><![CDATA[dependency injection]]></category><category><![CDATA[dependency inversion]]></category><category><![CDATA[ddd]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Установщик на Go Wails: Полный гайд. Своя self-hosted двухсерверная VPN-архитектура: ЧАСТЬ 3]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1060336/</guid>
      <link>https://habr.com/ru/articles/1060336/?utm_campaign=1060336&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/718/e53/85d/718e5385d263b039d1d7f13b325725e4.jpg" /><p>Повествование будет идти таким образом: описание архитектуры в целом, потом код по страницам с картинками как это все выглядит. В отличие от черновика, в этом материале отображен весь рабочий код без сокращений с разбором каждой из страниц.</p><p>В Wails основными файлами, с которыми проходит 90% работы это <code>index.html</code>, <code>styles.css</code>, <code>main.js</code>, <code>app.go</code>. Остальные файлы мы либо не трогаем, либо настраиваем один раз в самом начале.</p><p>Для фронтенда я использовал стандартный html, css, js без современных фреймворков (так как я в них не разбираюсь). Frontend часть подробно рассматривать в этой статье не планируется, a html будет использоваться только чтобы показать, где используются js функции.</p> <a href="https://habr.com/ru/articles/1060336/?utm_campaign=1060336&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 17 Jul 2026 16:37:47 GMT</pubDate>
      <dc:creator><![CDATA[ITsuperiorRF]]></dc:creator>
      
      <category><![CDATA[html]]></category><category><![CDATA[css]]></category><category><![CDATA[go]]></category><category><![CDATA[javascript]]></category><category><![CDATA[wails]]></category><category><![CDATA[автоматизация]]></category><category><![CDATA[системное администрирование]]></category><category><![CDATA[приложение]]></category><category><![CDATA[self-hosted]]></category><category><![CDATA[установка]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Зачем учить бинарный поиск, если платят за покраску кнопок]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/domclick/articles/1055404/</guid>
      <link>https://habr.com/ru/companies/domclick/articles/1055404/?utm_campaign=1055404&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/644/0d2/839/6440d28395ef3e610c9ec1b5036ab8d8.png" /><p>Привет, Хабр!</p><p>Среди разработчиков уже давно идёт спор: действительно ли нужны алгоритмы в повседневной разработке, или это исключительно сухая теория для прохождения собеседований? Вот и я решил вступить в спор.</p><p>Когда я только начинал карьеру во фронтенд-разработке, то постоянно задавался вопросами: «Зачем на интервью просят обходить граф, если на работе я просто правлю CSS-отступы?» или «Зачем мне знать сложность O(N), если вёрстка всё равно ломается в Safari?» С развитием ИИ подобные вопросы стали звучать ещё громче: «Зачем мне вообще думать, если агент напишет этот цикл за меня?»</p><p>Однако по мере прокачки в алгоритмических задачах я стал замечать их применение в реальной разработке, где задача сводилась к чему-то более сложному, чем выравнивание <code>div</code> по вертикали. Я научился проектировать более лаконичные реализации бизнес-фич, стал быстрее находить узкие места, убивающие производительность, и, самое главное, обрёл уверенность в собственных действиях.</p> <a href="https://habr.com/ru/articles/1055404/?utm_campaign=1055404&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 16 Jul 2026 08:00:33 GMT</pubDate>
      <dc:creator><![CDATA[aatrishin (Домклик)]]></dc:creator>
      
      <category><![CDATA[frontend]]></category><category><![CDATA[производительность приложений]]></category><category><![CDATA[алгоритмы]]></category><category><![CDATA[оптимизация кода]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[pkg-cache — простой локальный кеш пакетов]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1059574/</guid>
      <link>https://habr.com/ru/articles/1059574/?utm_campaign=1059574&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/e10/7ba/7d6/e107ba7d65901d0b1eec0325fd8541c2.png" /><p>Пример реализации простого кэширующего прокси для пакетов npm, composer и pip на базе node.js для Windows и Linux.</p> <a href="https://habr.com/ru/articles/1059574/?utm_campaign=1059574&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 15 Jul 2026 16:08:47 GMT</pubDate>
      <dc:creator><![CDATA[agb2008]]></dc:creator>
      
      <category><![CDATA[кеширующий прокси]]></category><category><![CDATA[npm-пакеты]]></category><category><![CDATA[composer пакеты]]></category><category><![CDATA[pip]]></category><category><![CDATA[разработка программного обеспечения]]></category><category><![CDATA[offline]]></category><category><![CDATA[оптимизация рабочего времени]]></category><category><![CDATA[node.js]]></category><category><![CDATA[opencode]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Автоматизация с использованием сервисов Google или что попробовать вечером]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1059496/</guid>
      <link>https://habr.com/ru/articles/1059496/?utm_campaign=1059496&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/061/8e2/659/0618e265937d59f96fe6b0cf81eaeb02.jpg" /><p>Как&nbsp;с помощью <strong>бесплатных</strong> инструментов Google создать <strong>систему анализа</strong> данных: от&nbsp;сбора ответов в&nbsp;форме до&nbsp;визуализации на&nbsp;сайте. В&nbsp;качестве примера разберем исследование туристических предпочтений и настроим автоматическую отправку письма при&nbsp;достижении цели. </p> <a href="https://habr.com/ru/articles/1059496/?utm_campaign=1059496&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 15 Jul 2026 13:22:07 GMT</pubDate>
      <dc:creator><![CDATA[ITo_sun]]></dc:creator>
      
      <category><![CDATA[google apps script]]></category><category><![CDATA[google forms]]></category><category><![CDATA[google sheets]]></category><category><![CDATA[google sites]]></category><category><![CDATA[автоматизация]]></category><category><![CDATA[дашборд]]></category><category><![CDATA[сводные таблицы]]></category><category><![CDATA[триггеры]]></category><category><![CDATA[визуализация данных]]></category><category><![CDATA[travel]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Point0 — простой, как tRPC, полноценный фулстек-фреймворк]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1059310/</guid>
      <link>https://habr.com/ru/articles/1059310/?utm_campaign=1059310&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/5cb/b1a/feb/5cbb1afeb2d59ebb4f955ab5486d13f0.png" /><p>Хочу сравнить фреймворк Point0 и библиотеку tRPC. Делаю это, потому что квери и мутации в Point0 очень похожи по DX на tRPC, но более удобны ввиду того, что всё же Point0 это фреймворк и он может обладать возможностями, которыми библиотека не может:</p><p>Объявлять квери вместе с серверным кодом прямо в клиентских файлах, или наоборот</p><p>Автоматически гидрировать и дегидрировать квери клиент при включении SSR</p><p>В мутациях отправлять файлы автоматически превращая данные в FormData и обратно</p><p>Иметь стабильные индивидуальные урлы для квери и мутаций</p><p>Не заставлять зависать редактор кода при увеличении количества эндпоинтов</p><p>Возвращать в ответах с сервера на клиент целые серверные компоненты или интерактивные острова</p><p>Управлять внешним видом состояний загрузки на страницах и в компонентах</p><p>Кроме того, что описано в этой статье, Point0 может много чего ещё, но об этом в других статьях. Сейчас фокусируемся на сравнении с tRPC. Предполагается, что вы с tRPC более менее знакомы, но ниже я всё равно буду показывать примеры реализации на tRPC, чтобы сравнения были видимыми.</p> <a href="https://habr.com/ru/articles/1059310/?utm_campaign=1059310&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 15 Jul 2026 07:50:07 GMT</pubDate>
      <dc:creator><![CDATA[1gr14]]></dc:creator>
      
      <category><![CDATA[Point0]]></category><category><![CDATA[tRPC]]></category><category><![CDATA[react]]></category><category><![CDATA[typescript]]></category><category><![CDATA[bun]]></category><category><![CDATA[framework]]></category><category><![CDATA[webdevelopment]]></category><category><![CDATA[api]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Просто дайте мне ввести цифры]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1059166/</guid>
      <link>https://habr.com/ru/articles/1059166/?utm_campaign=1059166&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/a07/75f/4e5/a0775f4e5a3c7c62132fb3019edbb4ff.png" /><p>Цифровая идентификация и её значение для веба в последние годы стали темой горячих обсуждений. Они привнесли с собой множество спорных моментов: законы о проверке возраста и их <a href="https://www.eff.org/deeplinks/2025/12/age-verification-coming-internet-we-built-you-resource-hub-fight-back" rel="noopener noreferrer nofollow">влияние на онлайн-анонимность</a>; Википедия потенциально будет вынуждена <a href="https://wikimediafoundation.org/news/2025/09/12/wikimedia-foundation-challenges-uk-online-safety-act-regulations/" rel="noopener noreferrer nofollow">верифицировать в Великобритании личность пользователей</a>; привязка к официальным операционным системам iOS и Android стала обязательным форм-фактором для <a href="https://github.com/eu-digital-identity-wallet/eudi-app-android-wallet-ui/issues/287" rel="noopener noreferrer nofollow">кошельков цифровой идентификации</a>; кроме того, стоит упомянуть ситуацию, когда американские цифровые аккаунты <a href="https://www.theguardian.com/law/2026/feb/18/international-criminal-court-icc-judges-trump-sanctions" rel="noopener noreferrer nofollow">были закрыты потому, что их пользователь был судьёй Международного уголовного суда</a>.</p><p>В своей истории я расскажу о швейцарской правительственной системе идентификации <a href="https://www.agov.admin.ch/en" rel="noopener noreferrer nofollow">AGOV</a>. Этот развёрнутый в 2024 году сервис сегодня насчитывает <a href="https://www.agov.admin.ch/en/agov-statse-2026-04" rel="noopener noreferrer nofollow">1,6 миллиона аккаунтов</a>&nbsp;и становится всё более необходимым: через него можно получать пособие по безработице, предоставлять налоговую декларацию (а это обязательное действие!) и выполнять множество других операций. В кантоне Цюрих это единственная возможность <a href="https://www.zh.ch/de/migration-integration/einbuergerung/ordentliche-einbuergerung.html" rel="noopener noreferrer nofollow">подачи заявления на гражданство</a>.</p><p>В конечном итоге, я был вынужден создать аккаунт AGOV. К сожалению, его регистрация была довольно сложной задачей, пока я не нашёл причины странного бага accessibility. Вдохновившись статьёй <a href="https://aartaka.me/select-text.html" rel="noopener noreferrer nofollow">«Просто дайте мне выделить текст»</a>, хочу представить вашему вниманию «Просто дайте мне ввести цифры».</p> <a href="https://habr.com/ru/articles/1059166/?utm_campaign=1059166&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 15 Jul 2026 05:56:41 GMT</pubDate>
      <dc:creator><![CDATA[PatientZero]]></dc:creator>
      
      <category>государственные сервисы</category><category>идентификация личности</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Простой способ запускать доверенный пользовательский JavaScript в Node.js]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1059208/</guid>
      <link>https://habr.com/ru/articles/1059208/?utm_campaign=1059208&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/fbc/5f1/c11/fbc5f1c11fae117871170a8f1fcd9d89.webp" /><p>Недавно я опубликовал большую обзорную статью о том, как несколько лет развиваю свой пет-проект, который постепенно превратился в собственную Function-as-a-Service платформу. Она позволяет принимать пользовательский JavaScript, Python или Go, запускать его в изолированном окружении и управлять такими функциями почти как в небольшом облаке. </p><p>В этот раз я хочу разобрать более узкую тему и рассказать, с чего вообще начинались мои эксперименты с выполнением пользовательского JavaScript в Node.js. Мы посмотрим на самые простые встроенные инструменты, а также проверим, способен ли V8 оптимизировать код, созданный динамически во время работы приложения.</p> <a href="https://habr.com/ru/articles/1059208/?utm_campaign=1059208&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Погрузиться</a>]]></description>
      
      <pubDate>Tue, 14 Jul 2026 20:12:58 GMT</pubDate>
      <dc:creator><![CDATA[alexander_kubarski]]></dc:creator>
      
      <category><![CDATA[node.js]]></category><category><![CDATA[javascript]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[OpenIDE Pro: публичный релиз для всех! Java, Kotlin, Go, TypeScript, Python, PHP и DB-клиент в одном дистрибутиве]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/haulmont/articles/1058604/</guid>
      <link>https://habr.com/ru/companies/haulmont/articles/1058604/?utm_campaign=1058604&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/4dc/3a7/99f/4dc3a799f6a65c08a4953d377e5535bf.png" /><p>Прошло больше года с момента публичного релиза первой версии OpenIDE. Сейчас ею пользуются на постоянной основе десятки тысяч разработчиков в сотнях российских компаний.</p><p>И практически с самого первого дня к нам начали обращаться крупные компании, не с просьбой добавить фичу, а с предложением заплатить. Потому что когда организация всерьёз рассматривает IDE для команды в несколько сотен человек, ей важно знать: есть договор, есть SLA, есть кто-то, кто несёт ответственность и завтра никуда не денется. Бесплатный open-source продукт эту уверенность не даёт сам по себе, как бы качественно он ни был сделан.</p><p>И несмотря на то, что изначально запрос шёл со стороны компаний, мы не хотели делать продукт для галочки. Мы постарались закрыть большинство сценариев использования IDE разработчиками самых разных стеков.</p><p>Так появилась OpenIDE Pro.</p> <a href="https://habr.com/ru/articles/1058604/?utm_campaign=1058604&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 14 Jul 2026 12:19:49 GMT</pubDate>
      <dc:creator><![CDATA[honest_niceman (Haulmont)]]></dc:creator>
      
      <category><![CDATA[OpenIDE Pro]]></category><category><![CDATA[российская IDE]]></category><category><![CDATA[IDE для Java]]></category><category><![CDATA[IDE для Kotlin]]></category><category><![CDATA[IDE для Go]]></category><category><![CDATA[IDE для Python]]></category><category><![CDATA[IDE для TypeScript]]></category><category><![CDATA[IDE для PHP]]></category><category><![CDATA[IDE для Spring]]></category><category><![CDATA[IDE с клиентом баз данных]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Веб-портфолио с управлением жестами через камеру: полевой дневник]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1058358/</guid>
      <link>https://habr.com/ru/articles/1058358/?utm_campaign=1058358&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/892/8be/a27/8928bea271889ac503611ee4919237c0.jpg" /><p>Я продуктовый дизайнер. И мне захотелось поэкспериментировать: можно ли уже сейчас сделать полноценное управление сайтом с помощью жестов. Да и ИИшки уже стали достаточно мощными. Так родился этот эксперимент. Для контента взял свое портфолио.</p><p>Получилось вот что. Страница встречает полем из частиц. Разрешаешь камеру, и частицы собираются в твоё объёмное отражение. Разделы висят вокруг силуэта и открываются рукой: наводишь палец, пункт заполняется и раскрывается. Текст листается щипком, фотографии берутся в кулак и растягиваются двумя руками. Дизайн при этом намеренно тихий: монохром, костяная типографика на чёрном, единственный цвет живёт внутри 3D-формы. Вся выразительность отдана взаимодействию.</p><p>Дальше — грабли по порядку наступания.</p> <a href="https://habr.com/ru/articles/1058358/?utm_campaign=1058358&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 14 Jul 2026 10:49:24 GMT</pubDate>
      <dc:creator><![CDATA[DimaDimbo]]></dc:creator>
      
      <category><![CDATA[жесты]]></category><category><![CDATA[mediapipe]]></category><category><![CDATA[webgpu]]></category><category><![CDATA[transformers.js]]></category><category><![CDATA[three.js]]></category><category><![CDATA[вебкамера]]></category><category><![CDATA[депт-карта]]></category><category><![CDATA[claude code]]></category><category><![CDATA[design]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[WebAssembly (WASM) — не серебряная пуля]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1058984/</guid>
      <link>https://habr.com/ru/articles/1058984/?utm_campaign=1058984&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>WebAssembly появился для браузерных задач как способ исполнять тяжелый код быстрее,&nbsp;чем это делает JavaScript.&nbsp;Но за последние годы он начал выходить далеко&nbsp;(иногда&nbsp;<a href="https://t.me/prowasm/16" rel="noopener noreferrer nofollow">буквально далеко</a>)&nbsp;за пределы вкладки браузера:&nbsp;серверы,&nbsp;edge-вычисления,&nbsp;плагины,&nbsp;песочницы.&nbsp;Появились рантаймы&nbsp;Wasmtime,&nbsp;WasmEdge,&nbsp;Wasmer,&nbsp;которые исполняют WASM-модули\компоненты прямо на ОС.&nbsp;Звучит красиво -&nbsp;собрал один бинарь,&nbsp;а запускаешь где угодно,&nbsp;да еще и в максимальной изоляции.</p><p>Но есть интересное наблюдение.&nbsp;Существуют проекты,&nbsp;которые строили свои виртуальные машины на WASM,&nbsp;но&nbsp;<a href="https://wiki.polkadot.com/learn/learn-smart-contracts/#smart-contracts-on-polkadot" rel="noopener noreferrer nofollow">отказались</a>&nbsp;от&nbsp;него.&nbsp;Самый заметный пример&nbsp;-&nbsp;это&nbsp;<a href="https://polkadot.com/" rel="noopener noreferrer nofollow">Polkadot</a>.&nbsp;Они спроектировали&nbsp;собственную&nbsp;<a href="https://github.com/paritytech/polkavm" rel="noopener noreferrer nofollow">PolkaVM</a>&nbsp;на базе набора инструкций RISC-V и&nbsp;переключили исполнительный слой смарт-контрактов на нее&nbsp;(при этом сам runtime Polkadot по-прежнему&nbsp;компилируется в WASM).&nbsp;Если WASM настолько хорош,&nbsp;как заявляется,&nbsp;то почему для нового движка&nbsp;выбрали не его,&nbsp;а регистровую машину?</p><p>Недавно в одном из тематических чатов разгорелась жаркая дискуссия на этот счет,&nbsp;что,&nbsp;собственно&nbsp;говоря,&nbsp;и побудило меня на написание этой статьи.&nbsp;Если тебе интересны такие&nbsp;темы&nbsp;-&nbsp;<a href="https://t.me/prowasm" rel="noopener noreferrer nofollow">добро пожаловать</a>&nbsp;к нам)</p><p>Давайте попробуем разобраться,&nbsp;чем стековая модель отличается от регистровой и где эта разница&nbsp;реально что-то меняет.&nbsp;А также рассмотрим,&nbsp;где же в WASM скрыты компромиссы.</p> <a href="https://habr.com/ru/articles/1058984/?utm_campaign=1058984&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 14 Jul 2026 10:32:19 GMT</pubDate>
      <dc:creator><![CDATA[rudikone]]></dc:creator>
      
      <category><![CDATA[wasm]]></category><category><![CDATA[webassembly]]></category><category><![CDATA[wasi]]></category><category><![CDATA[component model]]></category><category><![CDATA[компиляция]]></category><category><![CDATA[компиляторы]]></category><category><![CDATA[регистры]]></category><category><![CDATA[lua]]></category><category><![CDATA[стек]]></category><category><![CDATA[виртуальная машина]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Redux никогда не работал в React]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1058110/</guid>
      <link>https://habr.com/ru/articles/1058110/?utm_campaign=1058110&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/684/7fc/8f4/6847fc8f495946f57ded25ac3d9dc0de.jpg" /><p>потому что нельзя просто взять redux и начать использовать в React. Необходима некая «react-redux» библиотека. А в чём тогда смысл талдычить, что «Redux works with any UI layer»?</p> <a href="https://habr.com/ru/articles/1058110/?utm_campaign=1058110&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 14 Jul 2026 04:56:12 GMT</pubDate>
      <dc:creator><![CDATA[AlekseiVolkov]]></dc:creator>
      
      <category><![CDATA[eactjs]]></category><category><![CDATA[redux]]></category><category><![CDATA[react-redux]]></category><category><![CDATA[конечный автомат]]></category><category><![CDATA[state management]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Виртуальные Scroll-контейнеры]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1058678/</guid>
      <link>https://habr.com/ru/articles/1058678/?utm_campaign=1058678&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/eee/bbb/257/eeebbb257d01e72cf4d3c97e1eaa3091.png" /><p>Всем привет, на этот раз хочу провести обзор инструмента <a href="https://%D0%92%D1%81%D0%B5%D0%BC%20%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82,%20%D0%BD%D0%B0%20%D1%8D%D1%82%D0%BE%D1%82%20%D1%80%D0%B0%D0%B7%20%D1%85%D0%BE%D1%87%D1%83%20%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%81%D1%82%D0%B8%20%D0%BE%D0%B1%D0%B7%D0%BE%D1%80%20%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%20ng-virtual-scroll-view." rel="noopener noreferrer nofollow">ng-virtual-scroll-view</a>.</p><p>В предыдущей <a href="https://habr.com/ru/articles/1045454/" rel="noopener noreferrer nofollow">статье</a> я делал обзор на универсальные <a href="https://github.com/DjonnyX/ng-virtual-list" rel="noopener noreferrer nofollow">виртуализированнные списки</a>, которые "под капотом" использовали одноосевой виртуальный <strong>scroll-контейнер</strong>. Из проекта <a href="https://github.com/DjonnyX/ng-virtual-list" rel="noopener noreferrer nofollow">ng-virtual-list</a> решил вырастить ещё один инструмент, двухосевой виртуальный scroll-контейнер <a href="https://github.com/DjonnyX/ng-virtual-scroll-view" rel="noopener noreferrer nofollow">ng-virtual-scroll-view</a>. Инструмент также поддерживает версии Angular с 14 по 22. </p><p>С API и примерами использования можно ознакомиться в <a href="https://ng-virtual-scroll-view.eugene-grebennikov.pro/" rel="noopener noreferrer nofollow">документации</a>.</p> <a href="https://habr.com/ru/articles/1058678/?utm_campaign=1058678&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 13 Jul 2026 14:03:07 GMT</pubDate>
      <dc:creator><![CDATA[djonnyx]]></dc:creator>
      
      <category><![CDATA[Виртуальный]]></category><category><![CDATA[scroll]]></category><category><![CDATA[контейнер]]></category><category><![CDATA[прокрутка]]></category><category><![CDATA[angular]]></category><category><![CDATA[ng-virtual-scroll-view]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Особенности альфа-распада плутония-239 в Антарктиде]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1058628/</guid>
      <link>https://habr.com/ru/articles/1058628/?utm_campaign=1058628&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/5b4/721/90d/5b472190dea8a41e8a4cfb492980e652.png" /><p>В начале этого века сотрудниками лаборатории С.Э.Шноля (ИТЭБ РАН) совместно с Арктическим и антарктическим НИИ РАН на станции Новолазаревская в Антарктиде была организована посекундная регистрация альфа-распада плутония-239. Получаемые с 2001 по 2010 год кремниевыми счётчиками данные записывались в файлы, суммарный объём которых составил около 1 Гб. Задачей этого продолжительного эксперимента было доказательство влияния космофизических факторов на альфа-распад, которое могло проявляться в виде суточных, месячных и годовых циклов. Подобная цикличность противоречит давно устоявшимся воззрениям на случайный характер радиоактивности, поэтому антарктические данные не помогли С.Э.Шнолю (1930 - 2021) поколебать эти воззрения. Но он искал (и находил) закономерности в повторении формы поминутных гистограмм альфа-распада, а это не самый наглядный способ их демонстрации. Намного проще просто понаблюдать за интенсивностью альфа-распада. Причём иногда изменения этой интенсивности имеют довольно странный характер, который невозможно объяснить колебаниями температуры, атмосферного давления, сетевого напряжения, грозовыми разрядами и наводками от ближайших научных приборов и бытовой техники.</p> <a href="https://habr.com/ru/articles/1058628/?utm_campaign=1058628&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 13 Jul 2026 12:33:43 GMT</pubDate>
      <dc:creator><![CDATA[genseq]]></dc:creator>
      
      <category><![CDATA[радиоактивность]]></category><category><![CDATA[альфа-распад]]></category><category><![CDATA[астрономия и все что с ней связано.]]></category><category><![CDATA[помехи]]></category><category><![CDATA[аномалии]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[TypeScript 7 перенесли на Go. Проверяем, действительно ли он быстрее в десять раз]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1057640/</guid>
      <link>https://habr.com/ru/articles/1057640/?utm_campaign=1057640&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/f18/a06/3dd/f18a063dd19aee8254d0d93149916fe7.png" /><p>Есть одно предложение, которое за последние месяцы перепечатали, кажется, все. Вот оно, в переводе с блога TypeScript:</p><p>📣 <strong>Заявка.</strong> «Проверка типов проекта VS Code (около 1,5 млн строк) ускорилась с 77.8 с до 7.5 с». Итог, который команда вынесла в заголовок, — <strong>«примерно в 10 раз быстрее»</strong>.</p><p>Это не обзор релиза. Это попытка <strong>воспроизвести один график</strong> — не на кодовой базе Microsoft, а на монорепо, которое я собрал специально под замер, двумя компиляторами на одной машине, с показом каждой цифры и с репозиторием, где любую из них можно получить командой <code>pnpm bench</code>.</p><p>Сразу спойлер: <strong>да, TS7 быстрее, и заметно. Но „в десять раз“ живёт в одном конкретном месте, испаряется в другом, а кое-что важное в 7.0 пока не вошло — и это „кое-что“ важнее скорости.</strong></p><p>Главная мысль:</p><p><strong>«10×» — это про чекер на большом проекте, а не про весь ваш день.</strong> TS7 радикально ускоряет проверку типов и режет память, и замеры это подтверждают. Но в 7.0 отсутствует стабильный программный API — а с ним из сборки выпадают кастомные трансформеры, tsserver-плагины и типизированный линтинг. Поэтому вопрос миграции — не «стало ли быстрее», а «завязана ли <strong>ваша</strong> сборка на этот API».</p> <a href="https://habr.com/ru/articles/1057640/?utm_campaign=1057640&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 13 Jul 2026 10:17:58 GMT</pubDate>
      <dc:creator><![CDATA[Viktoriko]]></dc:creator>
      
      <category><![CDATA[TypeScript 7]]></category><category><![CDATA[TypeScript Go]]></category><category><![CDATA[TypeScript Compiler]]></category><category><![CDATA[tsc]]></category><category><![CDATA[Compiler API]]></category><category><![CDATA[TypeScript performance]]></category><category><![CDATA[benchmark]]></category><category><![CDATA[monorepo]]></category><category><![CDATA[typecheck]]></category><category><![CDATA[frontend tooling]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Про то, как я оцифровал себя без ИИ, чтобы стать видеоблогером]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1058470/</guid>
      <link>https://habr.com/ru/articles/1058470/?utm_campaign=1058470&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/fa8/4d4/1bb/fa84d41bb300ffc9d1bc3000cac2289d.jpg" /><p>История про&nbsp;то, как&nbsp;я сделал себе виртуального аватара для&nbsp;коротких видео&nbsp;— без&nbsp;генерации видео через ИИ.</p><p>Задача&nbsp;была простая: превратить свои текстовые заметки в&nbsp;вертикальные ролики, не&nbsp;садиться перед камерой и не&nbsp;тратить день на&nbsp;монтаж каждого выпуска.</p><p>В&nbsp;итоге получилась самодельная полуавтоматическая DIY‑система:</p><p>— универсальные графические ассеты персонажа<br>— ручная озвучка моим голосом<br>— разметка фраз в&nbsp;аудио через Audacity<br>— текстовый сценарий с&nbsp;управляющими тегами для&nbsp;событий в&nbsp;ролике<br>— кастомный JSX‑плагин для&nbsp;After Effects</p><p>Система берёт сценарий с&nbsp;управляющими тегами, аудиодорожку с&nbsp;голосом и файл разметки, после чего собирает заготовку ролика: аватар,&nbsp;липсинк, мимику, субтитры и слайды.</p><p>В&nbsp;статье показываю, как&nbsp;всё устроено, немного логики кода, почему первая версия попала в&nbsp;зловещую долину, что&nbsp;удалось автоматизировать, а&nbsp;что&nbsp;всё ещё приходится доводить руками.</p><p>В&nbsp;конце&nbsp;— немного статистики по&nbsp;первым трём роликам, запущенным с&nbsp;нулевых аккаунтов: YouTube, Instagram, TikTok и ВК.</p> <a href="https://habr.com/ru/articles/1058470/?utm_campaign=1058470&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 13 Jul 2026 09:07:23 GMT</pubDate>
      <dc:creator><![CDATA[oe_2108]]></dc:creator>
      
      <category><![CDATA[after effects]]></category><category><![CDATA[photoshop]]></category><category><![CDATA[javascript]]></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[TAMA-90: тамагочи из 90-х своими руками на JavaScript]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/ruvds/articles/1057138/</guid>
      <link>https://habr.com/ru/companies/ruvds/articles/1057138/?utm_campaign=1057138&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/285/bf7/864/285bf7864e88b4c6036b9e26908d6b5a.png" /><p>До момента, когда я сел писать эту статью, я вообще не понимал, что такое тамагочи. Нет, не в смысле «никогда не слышал» — конечно, слышал и видел (не вживую, через экран). Где-то на уровне культурного шума это слово всплывало регулярно в американских фильмах или сериалах, где герой с придыханием вспоминает игрушку детства и рассказывает, как ему это нравилось. Ярче всего у меня в памяти отпечаталась сцена из знаменитого детективного сериала «Менталист»: Патрик Джейн с неизменной полуулыбкой вручает коллеге тамагочи, и тот, взрослый серьёзный мужик (не очень серьёзный на вид, но в момент моего просмотра все взрослые люди серьёзные), вдруг расплывается: «О боже, у меня в детстве такой был! Я их обожал! Как ты узнал!» и т. д.</p><p>Раньше я реагировал на такие моменты как на упоминание Game Boy или Dendy: «ну да, старая штука, скорее всего, что-то похожее на Game Boy, который мне был понятен на то время», и я думал: «кому-то дорога как воспоминание, но мне-то чего с того, игрушка есть игрушка». Но сейчас в какой-то момент мне стало понятно, что если об этой игрушке говорят до сих пор, если она пережила три десятилетия и кучу переосмыслений — значит, там внутри что-то большее, и надо посмотреть, что это и как работает.</p><p>Так я и сделал. И для начала — немного истории, потому что без неё нет смысла вспоминать и описывать старые вещи (всё, что больше 10 лет назад, уже старое, поэтому, надеюсь, без обид xd).</p> <a href="https://habr.com/ru/articles/1057138/?utm_campaign=1057138&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 13 Jul 2026 09:01:52 GMT</pubDate>
      <dc:creator><![CDATA[Laborant_Code (RUVDS.com)]]></dc:creator>
      
      <category><![CDATA[тамагочи]]></category><category><![CDATA[Canvas]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[пиксель-арт]]></category><category><![CDATA[ретро-игры]]></category><category><![CDATA[геймдев]]></category><category><![CDATA[Web Audio API]]></category><category><![CDATA[камень-ножницы-бумага]]></category><category><![CDATA[виртуальный питомец]]></category><category><![CDATA[ruvds_статьи]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Жизненный цикл API-токенов: От генерации до компрометации]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1058318/</guid>
      <link>https://habr.com/ru/articles/1058318/?utm_campaign=1058318&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/632/e59/4fc/632e594fcb8a40c667abb3985ba8c698.png" /><p>JWT не защищает от кражи. Подпись гарантирует, что токен не подделан, но не мешает злоумышленнику использовать его, если тот оказался в чужих руках. В 2026 году утечки токенов через XSS, логи и CDN-атаки входят в тройку самых частых векторов компрометации, а медианное время обнаружения такой кражи составляет 43 дня.</p><p>В этой статье разбираем полный жизненный цикл токена — от выдачи до отзыва. Сравниваем хранение в&nbsp;<code>localStorage</code>,&nbsp;<code>HttpOnly</code>-куках и BFF-прослойке. Объясняем, почему Refresh Token Rotation — это must-have, а не опция, и как детектировать кражу еще до того, как злоумышленник успеет навредить.</p> <a href="https://habr.com/ru/articles/1058318/?utm_campaign=1058318&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 13 Jul 2026 05:00:49 GMT</pubDate>
      <dc:creator><![CDATA[Buccanier]]></dc:creator>
      
      <category><![CDATA[jwt]]></category><category><![CDATA[jwt token]]></category><category><![CDATA[jwt auth]]></category><category><![CDATA[jwt authentication]]></category><category><![CDATA[appsec]]></category><category><![CDATA[security]]></category><category><![CDATA[frontend]]></category><category><![CDATA[front-end]]></category><category><![CDATA[front-end разработка]]></category><category><![CDATA[frontend-разработка]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Детектор копипасты для TypeScript, Vue, Svelte и Angular]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1058364/</guid>
      <link>https://habr.com/ru/articles/1058364/?utm_campaign=1058364&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/938/d02/bdb/938d02bdb1f848801aab2137f8cbcc5c.jpg" /><p>Копипаста редко выглядит как копипаста. После переименования переменных, строк и чисел два одинаковых блока спокойно проходят ревью как разный код. Я написал clone-alert, чтобы находить такие совпадения в TypeScript, JavaScript и шаблонах Vue, Svelte и Angular.</p> <a href="https://habr.com/ru/articles/1058364/?utm_campaign=1058364&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 12 Jul 2026 21:47:17 GMT</pubDate>
      <dc:creator><![CDATA[BaryshevRS]]></dc:creator>
      
      <category><![CDATA[typescript]]></category><category><![CDATA[javascript]]></category><category><![CDATA[angular]]></category><category><![CDATA[vue]]></category><category><![CDATA[svelte]]></category><category><![CDATA[react]]></category><category><![CDATA[pmd]]></category><category><![CDATA[копипаста]]></category><category><![CDATA[дублирование кода]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как я строю и строю и строю свой продукт. И что уже вышло]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1058356/</guid>
      <link>https://habr.com/ru/articles/1058356/?utm_campaign=1058356&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/7f2/7e4/953/7f27e495319d4ce6d3d5cc04316e6dc9.webp" /><p>Если честно, то не ожидал, что просто обзорная статья выйдет такой огромной, самому было лень ее перечитывать, чтобы отредактировать. <br>Кому интересно узнать, чем я занимаюст по вечерам, можете посмотреть в самом конце статьи. Получилось "водянисто", но хотелось описать, чем я занимаюсь, поделиться с такими же людьми со "стартаперством" головного мозга, найти единомыленников.</p> <a href="https://habr.com/ru/articles/1058356/?utm_campaign=1058356&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Погрузиться</a>]]></description>
      
      <pubDate>Sun, 12 Jul 2026 19:21:44 GMT</pubDate>
      <dc:creator><![CDATA[alexander_kubarski]]></dc:creator>
      
      <category><![CDATA[старпат]]></category><category><![CDATA[saas]]></category><category><![CDATA[технологии]]></category><category><![CDATA[javascript]]></category><category><![CDATA[python]]></category><category><![CDATA[go]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Локализация уже скомпилированных React компонентов в node_modules]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1058286/</guid>
      <link>https://habr.com/ru/articles/1058286/?utm_campaign=1058286&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/b98/677/230/b986772308d0debb14f95f750e5904c3.png" /><p>🇧🇷 🇨🇳 🇮🇳 <strong>Локализуем React не трогая код компонентов</strong></p><p>React-компоненты из <code>node_modules</code> уже скомпилированы, поэтому внедрить <code>react-i18next</code> в них обычно невозможно без форка библиотеки. В статье показываю, как перехватить все вызовы <code>jsx/jsxs</code> через кастомный <code>react/jsx-runtime</code> и автоматически локализовать текст даже внутри уже собранных компонентов, не меняя их исходный код. </p> <a href="https://habr.com/ru/articles/1058286/?utm_campaign=1058286&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 12 Jul 2026 13:06:39 GMT</pubDate>
      <dc:creator><![CDATA[tripolskypetr]]></dc:creator>
      
      <category><![CDATA[i18n]]></category><category><![CDATA[i18next]]></category><category><![CDATA[локализация]]></category><category><![CDATA[интернационализация]]></category><category><![CDATA[react]]></category><category><![CDATA[typescript]]></category><category><![CDATA[javascript]]></category><category><![CDATA[vite]]></category><category><![CDATA[бандлер]]></category><category><![CDATA[переводы]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Умный планировщик питания на холодильнике с drag-and-drop, автосохранением сессий и вкусным и полезным продуктовым меню]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1058020/</guid>
      <link>https://habr.com/ru/articles/1058020/?utm_campaign=1058020&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/3c5/ee5/6bb/3c5ee56bb936ead3dc31d6d7d3cff840.png" /><p>Представьте,  что Вам вообще можно не думать, что сегодня съесть. Интереснее каждый день удивляться чему-то, а не иметь готовое меню на каждый день, но для этого сначала нужно четко понимать, что ты ешь сегодня,  а что - завтра.</p><p>Я поразмыслил над тем, как сделать современную электронную книгу рецептов, и на выходе получил проект умного холодильника, где на каждый день задаешь меню, а программа сама считает пищевую ценность, содержание полезных веществ, анализирует, насколько питание полноценное и сбалансированное. Таким образом, можно быстро создавать себе меню на неделю, которое может оказаться идеальным для продуктивности в Ваших физических тренеровках. Но далее открывается вообще новый мир: автоматизация покупки продуктов, четкое понимание, что нужно взять в магазине, ясный взгляд, сколько раз стоит питаться, чтобы не было дефицита белка или витаминов, где стоит использовать БАД и так далее. Аппаратная часть – матовый сенсорный дисплей на магнитах, подключенный к старому относительно бесполезному до этого проекта ноутбуку.</p> <a href="https://habr.com/ru/articles/1058020/?utm_campaign=1058020&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 10 Jul 2026 16:28:05 GMT</pubDate>
      <dc:creator><![CDATA[technofeya]]></dc:creator>
      
      <category><![CDATA[Умный холодильник]]></category><category><![CDATA[электронная книга рецептов]]></category><category><![CDATA[меню на день]]></category><category><![CDATA[умные устройства]]></category><category><![CDATA[электроника]]></category><category><![CDATA[IT-проекты]]></category><category><![CDATA[DIY]]></category><category><![CDATA[автоматизация]]></category><category><![CDATA[программное обеспечение]]></category><category><![CDATA[веб-приложения]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Конвертируем цвета в JS со скоростью 6 миллиардов операций в секунду]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1057978/</guid>
      <link>https://habr.com/ru/articles/1057978/?utm_campaign=1057978&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/774/c7c/757/774c7c7570d67c5342bf8cf61a57df0e.png" /><p>В начале этого года я создал самую быструю JS-библиотеку для работы с цветом: парсинг различных форматов, конвертация в OKLAB/OKLCH, проверка попадания в P3-гамут и многое другое. Библиотека весит всего 7 КБ и не имеет внешних зависимостей. Высокую скорость обеспечили оптимизации под V8: мономорфизм, скрытые классы, ноль лишних аллокаций.</p> <a href="https://habr.com/ru/articles/1057978/?utm_campaign=1057978&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Глянуть, что за либа</a>]]></description>
      
      <pubDate>Fri, 10 Jul 2026 13:53:09 GMT</pubDate>
      <dc:creator><![CDATA[dmkryak]]></dc:creator>
      
      <category><![CDATA[JavaScript]]></category><category><![CDATA[WebGL]]></category><category><![CDATA[GPU]]></category><category><![CDATA[фрагментные шейдеры]]></category><category><![CDATA[GLSL]]></category><category><![CDATA[OKLCH]]></category><category><![CDATA[производительность]]></category><category><![CDATA[оптимизация]]></category><category><![CDATA[canvas]]></category><category><![CDATA[colordx]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] TypeScript 7.0 — самое радикальное обновление за 10 лет]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/haulmont/articles/1057526/</guid>
      <link>https://habr.com/ru/companies/haulmont/articles/1057526/?utm_campaign=1057526&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/21e/b4a/434/21eb4a434ec7122acb7c1c9f5ed7499e.png" /><p>С самого начала TypeScript обещал обеспечить масштабируемость JavaScript. Строгая типизация и богатый инструментарий позволили разрабатывать нетривиальные, высококачественные приложения под любые платформы.</p><p>В прошлом году <a href="https://devblogs.microsoft.com/typescript/typescript-native-port/">наша команда анонсировала следующий шаг в масштабировании TypeScript</a>: нативный порт на Go, который использует все возможности современного железа. Порт сделан максимально точно: новый код воспроизводит структуру и логику оригинальной кодовой базы, чтобы результаты двух компиляторов совпадали.</p><p>Ключевое отличие — TypeScript 7 использует скорость нативного кода, разделяемую память при многопоточности и ряд новых оптимизаций. В итоге полная сборка ускоряется в 8–12 раз.</p> <a href="https://habr.com/ru/articles/1057526/?utm_campaign=1057526&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 10 Jul 2026 09:38:26 GMT</pubDate>
      <dc:creator><![CDATA[honest_niceman (Haulmont)]]></dc:creator>
      
      <category>TypeScript 7</category><category>TypeScript Go</category><category>нативный TypeScript</category><category>ускорение TypeScript</category><category>TypeScript компилятор</category><category>tsc производительность</category><category>TypeScript 7.0 релиз</category><category>переход TypeScript 7</category><category>TypeScript LSP</category><category>TypeScript параллелизация</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Почему любой антидетект на JavaScript спалится. Полгода назад я перестал латать скрапер и полез в C++ Chromium]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1057754/</guid>
      <link>https://habr.com/ru/articles/1057754/?utm_campaign=1057754&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/5c2/271/9b9/5c22719b950f946b7b5cc7e8d2e513c4.jpg" /><p>Полгода я жил в одном и том же цикле. Собираешь скрапер, вечером он проходит все страницы, а к обеду следующего дня отдаёт сплошные капчи и 403. Добавляешь puppeteer-stealth, сверху ещё десяток заплаток, гонишь трафик через резидентные прокси, и всё равно на третьи сутки прилетает бан. Я устал чинить симптомы и сел разбираться, что именно нас выдаёт.</p> <a href="https://habr.com/ru/articles/1057754/?utm_campaign=1057754&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 10 Jul 2026 07:53:22 GMT</pubDate>
      <dc:creator><![CDATA[armani-boi]]></dc:creator>
      
      <category><![CDATA[scraping]]></category><category><![CDATA[chromium]]></category><category><![CDATA[agent]]></category><category><![CDATA[stealth]]></category><category><![CDATA[javascript]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[История JavaScript: браузерные войны, ECMAScript, Node.js, TypeScript, React]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/pvs-studio/articles/1057734/</guid>
      <link>https://habr.com/ru/companies/pvs-studio/articles/1057734/?utm_campaign=1057734&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/0b2/ef8/9a3/0b2ef89a372c72ae564981cc452499c5.png" /><p>Десять дней разработки — и язык, на котором держится веб. В этой статье — история JavaScript и инструментов, которые привели его к этому.</p> <a href="https://habr.com/ru/articles/1057734/?utm_campaign=1057734&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 10 Jul 2026 06:39:18 GMT</pubDate>
      <dc:creator><![CDATA[feeelin (PVS-Studio)]]></dc:creator>
      
      <category><![CDATA[pvs-studio]]></category><category><![CDATA[javascript]]></category><category><![CDATA[react]]></category><category><![CDATA[vite]]></category><category><![CDATA[nodejs]]></category><category><![CDATA[браузерные войны]]></category><category><![CDATA[typescript]]></category><category><![CDATA[deno]]></category><category><![CDATA[web assembly]]></category><category><![CDATA[json]]></category>
    </item>
  

  

  

	
  

  

  

      

      

      

    
  </channel>
</rss>
