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

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

  <channel>
    <title><![CDATA[Все статьи подряд / Веб-разработка / Хабр]]></title>
    <link>https://habr.com/ru/hubs/webdev/articles/</link>
    <description><![CDATA[Веб-разработка – делаем веб лучше]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Fri, 19 Jun 2026 11:30:03 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[Как JSON‑LD начинает врать — даже когда валидатор зелёный]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1049472/</guid>
      <link>https://habr.com/ru/articles/1049472/?utm_campaign=1049472&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/f3b/45c/cac/f3b45ccac21f62e57242a0cadb2d8dd1.png" /><p>На&nbsp;странице услуги пользователь видел цену «от 25&nbsp;000&nbsp;₽», а&nbsp;meta description и JSON‑LD продолжали отдавать 50000. Валидатор&nbsp;был зелёным.</p><p><strong>И это&nbsp;был собственный сайт веб‑студии!</strong></p><p>Разберёмся, как&nbsp;валидная микроразметка начинает публиковать неверные данные, почему замена одного числа не&nbsp;решает проблему и что&nbsp;на&nbsp;самом деле нужно проверять после изменений сайта.</p> <a href="https://habr.com/ru/articles/1049472/?utm_campaign=1049472&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Разобраться, что проверять</a>]]></description>
      
      <pubDate>Fri, 19 Jun 2026 09:05:47 GMT</pubDate>
      <dc:creator><![CDATA[sergey-kupryashkin]]></dc:creator>
      
      <category><![CDATA[JSON-LD]]></category><category><![CDATA[Schema.org]]></category><category><![CDATA[структурированные данные]]></category><category><![CDATA[микроразметка]]></category><category><![CDATA[техническое SEO]]></category><category><![CDATA[качество данных]]></category><category><![CDATA[веб-разработка]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[CancelledError — не просто очередная ошибка. Разбираемся, как устроена отмена задач в asyncio]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/tochka/articles/1048468/</guid>
      <link>https://habr.com/ru/companies/tochka/articles/1048468/?utm_campaign=1048468&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/9ad/53d/21b/9ad53d21b4947920709c81dd2909c593.png" /><p>Это первая из двух статей о <code>CancelledError</code> — сигнале отмены задачи. В ней мы остановимся на стандартном asyncio. Узнаем, что на самом деле представляет собой <code>CancelledError</code>, с точки зрения event‑loop. Разберёмся, как работает счётчик отмены (<code>cancel/uncancel</code>), на котором построены <code>TaskGroup</code> и <code>asyncio.timeout</code>. Наконец, обсудим проблемы, которые возникают на практике, в первую очередь связанные с <code>asyncio.shield</code>.</p> <a href="https://habr.com/ru/articles/1048468/?utm_campaign=1048468&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 19 Jun 2026 08:01:07 GMT</pubDate>
      <dc:creator><![CDATA[StanislavShimovolos (Точка Банк)]]></dc:creator>
      
      <category><![CDATA[python]]></category><category><![CDATA[asyncio]]></category><category><![CDATA[concurrency]]></category><category><![CDATA[бэкенд]]></category><category><![CDATA[web]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Исключения в реактивных системах]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1048968/</guid>
      <link>https://habr.com/ru/articles/1048968/?utm_campaign=1048968&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/a39/df2/ac1/a39df2ac106d57cd0f5a42164541f232.png" /><p>Очень часто программисты не думают о чрезвычайных ситуациях. Особенно печально, когда это не разработчики приложений, а авторы библиотек и фреймворков.</p><p>Ошибок, конечно. не должно быть, как и других неприятностей в жизни, однако они иногда случаются. Вина ли это программиста, браузера, его расширений, операционной системы, звездного ветра — неважно. Нужно уметь принимать удар и не прятать голову в песок. Но в разных библиотеках мы сталкиваемся с очень разным поведением…  </p> <a href="https://habr.com/ru/articles/1048968/?utm_campaign=1048968&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Исключить эту статью из непрочитанных</a>]]></description>
      
      <pubDate>Fri, 19 Jun 2026 07:10:25 GMT</pubDate>
      <dc:creator><![CDATA[nin-jin]]></dc:creator>
      
      <category>реактивное программирование</category><category>обработка ошибок</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Сайты под управлением ИИ: что это на самом деле и сколько стоит. Часть 1 из 3]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1049326/</guid>
      <link>https://habr.com/ru/articles/1049326/?utm_campaign=1049326&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/93f/586/a23/93f586a23895cefc33e2f045da4d4e3c.jpg" /><p>Это первая из&nbsp;трёх статей про&nbsp;сайты под&nbsp;управлением ИИ. В&nbsp;этой части&nbsp;— концепции и экономика без&nbsp;маркетинговой пыли: что&nbsp;такое нейросайт на&nbsp;самом деле, чем он принципиально не&nbsp;является, и почему дешёвый VDS за&nbsp;пару тысяч рублей тут вообще ни при&nbsp;чём с&nbsp;точки зрения&nbsp;железа под&nbsp;нейросеть. Во&nbsp;второй части будет внутрянка (MCP‑брокер, пайплайн деплоя, безопасность), в&nbsp;третьей&nbsp;— прод‑механика на&nbsp;тысячах страниц (SSG/ISR, индексация, массовые операции). Здесь сознательно держусь на&nbsp;уровне архитектурных решений, не&nbsp;уходя в&nbsp;реализацию&nbsp;— она дальше.</p> <a href="https://habr.com/ru/articles/1049326/?utm_campaign=1049326&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 18 Jun 2026 21:46:42 GMT</pubDate>
      <dc:creator><![CDATA[mamontovtop]]></dc:creator>
      
      <category><![CDATA[нейросайт]]></category><category><![CDATA[LLM]]></category><category><![CDATA[AI-агенты]]></category><category><![CDATA[headless CMS]]></category><category><![CDATA[Next.js]]></category><category><![CDATA[WordPress]]></category><category><![CDATA[RAG]]></category><category><![CDATA[MCP]]></category><category><![CDATA[стоимость владения]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Представляем MDN MCP-сервер]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1049274/</guid>
      <link>https://habr.com/ru/articles/1049274/?utm_campaign=1049274&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/597/3ca/961/5973ca961240b6ca78c4db9f2f4af0ef.png" /><p>Мы рады объявить о релизе <a href="https://developer.mozilla.org/en-US/mcp" rel="noopener noreferrer nofollow">MDN MCP-сервера</a>. <strong>MCP (Model Context Protocol)</strong> — это открытый стандарт, который позволяет ИИ-инструментам подключаться к внешним источникам данных. MDN MCP-сервер использует этот протокол, чтобы доставлять документацию MDN и данные о совместимости браузеров прямо в твой редактор кода или IDE.</p> <a href="https://habr.com/ru/articles/1049274/?utm_campaign=1049274&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 18 Jun 2026 18:23:07 GMT</pubDate>
      <dc:creator><![CDATA[qmzik]]></dc:creator>
      
      <category>frontend</category><category>codex</category><category>claude-code</category><category>mcp</category><category>mdn</category><category>ai</category><category>веб-разработка</category><category>llm</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Sitemap-first аудит большого сайта: как найти пустые посадочные без полного краулинга]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1049136/</guid>
      <link>https://habr.com/ru/articles/1049136/?utm_campaign=1049136&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/ea5/41f/1d3/ea541f1d38cee0f957e299be0b9cdd90.png" /><p>Есть привычная ошибка в техническом аудите больших сайтов: открыть краулер, поставить лимит побольше и просканировать всё.</p><p>На сайте в пару тысяч страниц это работает. На сайте с семизначным инвентарём URL — нет. Полный краул упирается в память, диск, сетевые таймауты, rate limit, JavaScript-рендеринг, дубли, параметры, бесконечные фасеты и в то, что через двое суток вы получаете таблицу на миллионы строк, которую всё равно придётся сегментировать с нуля.</p><p>Поэтому я начинаю не с краулера. Я начинаю с sitemap.</p><p>В статье показываю sitemap-first подход: как скачать sitemap graph, превратить URL в датасет, разобрать слаги на смысловые группы, сматчить паттерны со спросом, найти пустые посадочные, проверить рендеринг и потом подтвердить гипотезы через GSC, Яндекс.Вебмастер, Метрику и серверные логи.</p> <a href="https://habr.com/ru/articles/1049136/?utm_campaign=1049136&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 18 Jun 2026 12:42:44 GMT</pubDate>
      <dc:creator><![CDATA[Staurus]]></dc:creator>
      
      <category><![CDATA[SEO]]></category><category><![CDATA[technical SEO]]></category><category><![CDATA[sitemap]]></category><category><![CDATA[crawl budget]]></category><category><![CDATA[JavaScript SEO]]></category><category><![CDATA[рендеринг]]></category><category><![CDATA[Google Search Console]]></category><category><![CDATA[Яндекс.Вебмастер]]></category><category><![CDATA[логи сервера]]></category><category><![CDATA[индексация]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Автодозвон по лидам из Марквиз с отметкой в CRM]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/ru_mts/articles/1048282/</guid>
      <link>https://habr.com/ru/companies/ru_mts/articles/1048282/?utm_campaign=1048282&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/120/64b/f3f/12064bf3f87c5022127f13d7a43d414c.png" /><p>Привет, Хабр! В B2C-продажах — недвижимость, страхование, медицина — каждые 30 секунд задержки с первым звонком стоят процентов конверсии. Покупатель оставляет контакты в момент максимального интереса. Но импульс гаснет быстрее, чем менеджер успевает открыть CRM и набрать номер.</p><p>Почта и СМС не спасают: письмо пропустят, сообщение не заменит живого разговора. А ручной перенос данных из квиза в базу и набор номера — это десятки потерянных секунд на каждой заявке.</p><p>Вот здесь и кроется главная сложность: можно ли сделать так, чтобы лид сам создавался в CRM, а звонок запускался автоматически, без участия человека?</p><p>Оказывается, да. Мы сделали сервис, который соединяет квиз, CRM и телефонию в один сценарий. Он принимает вебхук от Марквиз, создает лид в amoCRM и запускает автоматический звонок через МТС Exolve. После разговора сервис получает событие от Exolve и сохраняет результат в CRM.</p> <a href="https://habr.com/ru/articles/1048282/?utm_campaign=1048282&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 18 Jun 2026 12:01:59 GMT</pubDate>
      <dc:creator><![CDATA[KKK_56 (МТС)]]></dc:creator>
      
      <category><![CDATA[FastAPI]]></category><category><![CDATA[Python]]></category><category><![CDATA[SQLite]]></category><category><![CDATA[amoCRM]]></category><category><![CDATA[МТС Exolve]]></category><category><![CDATA[Marquiz]]></category><category><![CDATA[вебхуки]]></category><category><![CDATA[API-интеграция]]></category><category><![CDATA[автоматизация продаж]]></category><category><![CDATA[телефония]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Боты не только вредны, но и полезны]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1048910/</guid>
      <link>https://habr.com/ru/articles/1048910/?utm_campaign=1048910&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/f43/f0e/781/f43f0e7813b854894789ca4e6784d463.jpg" /><p>Последнее время я не пишу админ. панель для веб-проектов, а пользуюсь Телеграм-ботом.</p><p>Как это обычно происходит. Появляется новый проект. Некий сайт. Затем первая просьба что-нибудь поменять. Потом вторая. Потом оказывается, что нужно написать административную панель.</p><p>Административная панель — это как ремонт в квартире. Начинаешь с поклейки обоев, а через месяц меняешь электропроводку.</p><p>Снова делать логин, пароль, восстановление пароля, управление пользователями и прочие радости веб-разработки.</p><p>И всё это ради тридцати человек.</p><p>Все проще - используйте Telegram как административную панель.</p><p>Минимум кода, который за вас напишет Иван Иваныч.</p> <a href="https://habr.com/ru/articles/1048910/?utm_campaign=1048910&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 18 Jun 2026 06:15:35 GMT</pubDate>
      <dc:creator><![CDATA[PapaBubaDiop]]></dc:creator>
      
      <category><![CDATA[телеграм]]></category><category><![CDATA[бот]]></category><category><![CDATA[боты]]></category><category><![CDATA[боты телеграм]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как спроектировать web-приложение на годы вперед]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1048828/</guid>
      <link>https://habr.com/ru/articles/1048828/?utm_campaign=1048828&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Мир технологий меняется быстро, и создать большое приложение, которое можно поддерживать несколько лет, становится непростой задачей.</p><p>Лет двенадцать назад создание большого монолита было обычной практикой. Семь лет назад многие подсели на микросервисную архитектуру. Причем микросервисами часто называли все подряд: и сервисно-ориентированный подход (SOA), и набор крупных сервисов, и распределенный монолит. Главное было быть в тренде.</p><p>Сейчас маятник снова качнулся. Микросервисы уже не выглядят универсальным ответом: слишком хорошо видна их цена в инфраструктуре, отладке, версионировании контрактов и сопровождении. Поэтому все чаще можно услышать про модульный монолит.</p><p>В этой статье я попробую набросать архитектурные и программные решения, которые позволяют создать и поддерживать веб-приложение в течение нескольких лет.</p> <a href="https://habr.com/ru/articles/1048828/?utm_campaign=1048828&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 17 Jun 2026 17:54:59 GMT</pubDate>
      <dc:creator><![CDATA[RussianDragon]]></dc:creator>
      
      <category><![CDATA[архитектура приложения]]></category><category><![CDATA[модульная архитектура]]></category><category><![CDATA[модульный монолит]]></category><category><![CDATA[долгоживущее приложение]]></category><category><![CDATA[доменные сервисы]]></category><category><![CDATA[API Gateway]]></category><category><![CDATA[Backend for Frontend]]></category><category><![CDATA[Module Federation]]></category><category><![CDATA[event-driven architecture]]></category><category><![CDATA[SOA]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Docker Fundamentals: теория и базовая эксплуатация]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/ruvds/articles/1043544/</guid>
      <link>https://habr.com/ru/companies/ruvds/articles/1043544/?utm_campaign=1043544&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/f22/20d/915/f2220d91525f92e77a8ea70422a392f6.png" /><p>Я очень рад, что существует такая технология, как Docker, и внедряю её в проекты и инфраструктуру клиентов. Однако есть одно «но»: многие не понимают, что это и зачем оно нужно, а объяснять иногда достаточно сложно (особенно повторять каждый раз каждому человеку, да и есть шанс что-то упустить). В этой статье вы узнаете базу по Docker, где найти практику и актуальные знания. Технология будет полезна многим: от специалистов по безопасности до разработчиков. А сама статья будет познавательна для тех, кто только изучает работу Docker и хочет узнать ответы на вопросы, которые часто задаются на собеседованиях, где требуется Docker. Приступим!</p> <a href="https://habr.com/ru/articles/1043544/?utm_campaign=1043544&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать</a>]]></description>
      
      <pubDate>Wed, 17 Jun 2026 13:01:58 GMT</pubDate>
      <dc:creator><![CDATA[opensophy (RUVDS.com)]]></dc:creator>
      
      <category><![CDATA[docker]]></category><category><![CDATA[docker-compose]]></category><category><![CDATA[dockerfile]]></category><category><![CDATA[docker swarm]]></category><category><![CDATA[dockerhub]]></category><category><![CDATA[devops]]></category><category><![CDATA[инструменты разработки]]></category><category><![CDATA[инструменты]]></category><category><![CDATA[инструменты разработчика]]></category><category><![CDATA[ruvds_статьи]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как мы считаем недельное меню в Pikni Food: пачки, остатки и solver вместо списка рецептов]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1048656/</guid>
      <link>https://habr.com/ru/articles/1048656/?utm_campaign=1048656&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/6b0/88a/a35/6b088aa35cac9ee89021bf07d4dfcb03.png" /><p>Рассказываем, как из&nbsp;идеи «собрать меню на&nbsp;неделю» получилась задача оптимизации: КБЖУ, бюджет, целые упаковки, остатки в&nbsp;холодильнике, цены магазинов и&nbsp;план готовки.</p><p>Внутри&nbsp;— почему схема «рецепты → список покупок» быстро ломается, зачем понадобились greedy, simulated annealing и&nbsp;MIP, и&nbsp;почему список покупок оказался почти отдельным продуктом.</p> <a href="https://habr.com/ru/articles/1048656/?utm_campaign=1048656&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 17 Jun 2026 11:34:51 GMT</pubDate>
      <dc:creator><![CDATA[Dimentr_AI]]></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[PWA]]></category><category><![CDATA[Telegram Mini App]]></category><category><![CDATA[foodtech]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как запустить бота в Max самозанятому]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1048650/</guid>
      <link>https://habr.com/ru/articles/1048650/?utm_campaign=1048650&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/253/a04/d5e/253a04d5eb6fc2293537d67a942dcd8c.png" /><p>Все уже видели новость, что самозанятым теперь доступен МАХ для бизнеса? Если вдруг пропустили, то это означает, что MAX продолжает тянуться за Telegram и его тоже теперь можно начинать использовать как площадку для дополнительной коммуникации с клиентами.</p> <a href="https://habr.com/ru/articles/1048650/?utm_campaign=1048650&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 17 Jun 2026 11:26:18 GMT</pubDate>
      <dc:creator><![CDATA[ivlevpetr]]></dc:creator>
      
      <category><![CDATA[MAX для бизнеса]]></category><category><![CDATA[самозанятый в MAX]]></category><category><![CDATA[no-code бот]]></category><category><![CDATA[конструктор ботов MAX]]></category><category><![CDATA[мини-приложение MAX]]></category><category><![CDATA[запись клиентов через бот]]></category><category><![CDATA[бот без кода]]></category><category><![CDATA[автоматизация заявок]]></category><category><![CDATA[канал в MAX для бизнеса]]></category><category><![CDATA[бот для заявок]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Если не можешь победить AI — возглавь его: суфлёр для технического интервьюера]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/reksoft/articles/1047636/</guid>
      <link>https://habr.com/ru/companies/reksoft/articles/1047636/?utm_campaign=1047636&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/f2e/c9c/2ed/f2ec9c2ed9d56349023cc20954d5605c.png" /><p>Привет, Хабр!</p><p>Рынок найма сейчас напоминает поле боя. С одной стороны — рекордное количество откликов, с другой — кандидаты, вооружённые до зубов генеративным ИИ. Все вокруг генерируют «сногсшибательные» резюме с опытом уровня CTO, а технические скрининги проходят, транслируя подсказки прямо в ухо через наушник.</p><p>На рынке развелось множество инструментов, которые рекламируются как «полностью незаметные» для собеседующего. Мол, нейросеть слушает вопрос и мгновенно выводит идеальный ответ на экран или в гарнитуру.</p><p>Вынужден разбить надежды для всех «умников»: более-менее опытный интервьюер довольно быстро вычисляет нечестную игру. Идеальный синтаксис, заученные формулировки, стеклянный взгляд в монитор и пауза в самый неподходящий момент. Серьезно? Вы же отличаете, когда на звонок или сообщение в чате службы поддержки вам отвечает робот, а когда живой оператор?</p> <a href="https://habr.com/ru/articles/1047636/?utm_campaign=1047636&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 17 Jun 2026 10:00:19 GMT</pubDate>
      <dc:creator><![CDATA[klekov (Reksoft)]]></dc:creator>
      
      <category><![CDATA[AI]]></category><category><![CDATA[собеседование]]></category><category><![CDATA[искусственный интеллект]]></category><category><![CDATA[хакатон]]></category><category><![CDATA[найм разработчиков]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[ID, token, UUID и slug: в чём разница и почему их нельзя мешать]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1048324/</guid>
      <link>https://habr.com/ru/articles/1048324/?utm_campaign=1048324&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/034/8ce/e0b/0348cee0b98a04e0d4f5d01bdd97333f.png" /><p>В каждом бэкенде рано или поздно рядом появляются <code>id</code>, <code>UUID</code>, <code>slug</code>, <code>token</code> и <code>request_id</code>. Все они выглядят как строки, но отвечают за разные вещи.</p><p>Когда это забывают, <code>UUID</code> становится защитой, <code>slug</code> — вечной айдишкой, а <code>token</code> — просто ещё одним идентификатором.</p> <a href="https://habr.com/ru/articles/1048324/?utm_campaign=1048324&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 16 Jun 2026 15:53:36 GMT</pubDate>
      <dc:creator><![CDATA[alwaysdeterminated]]></dc:creator>
      
      <category><![CDATA[backend]]></category><category><![CDATA[api]]></category><category><![CDATA[архитектура]]></category><category><![CDATA[uuid]]></category><category><![CDATA[jwt]]></category><category><![CDATA[token]]></category><category><![CDATA[slug]]></category><category><![CDATA[session id]]></category><category><![CDATA[request id]]></category><category><![CDATA[идентификаторы]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] LLM собрала IndexedDB с нуля: 1208 тестов, SQLite и несколько неприятных сюрпризов]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/otus/articles/1046662/</guid>
      <link>https://habr.com/ru/companies/otus/articles/1046662/?utm_campaign=1046662&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/e48/9e4/186/e489e4186c39ea8b5bd97d7013de2fe0.jpg" /><p>Можно ли одним промптом собрать полноценный браузерный API и получить результат, близкий к зрелой open source-реализации? В эксперименте Claude Code поручили реализовать IndexedDB поверх SQLite, а качество проверили с помощью Web Platform Tests. Итог — рабочая кодовая база, 1208 пройденных тестов, спорные 95% в отчёте агента и заметные ограничения в производительности и пограничных сценариях.</p> <a href="https://habr.com/ru/articles/1046662/?utm_campaign=1046662&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать про эксперимент</a>]]></description>
      
      <pubDate>Tue, 16 Jun 2026 14:33:21 GMT</pubDate>
      <dc:creator><![CDATA[kmoseenk (OTUS)]]></dc:creator>
      
      <category>indexeddb</category><category>LLM</category><category>Claude Code</category><category>Ralph loop</category><category>Web Platform Tests</category><category>вайб-кодинг</category><category>генерация кода</category><category>браузерные api</category><category>автоматизация тестирования</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Как я написал «Обратную змейку» на чистом Canvas]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/ruvds/articles/1047434/</guid>
      <link>https://habr.com/ru/companies/ruvds/articles/1047434/?utm_campaign=1047434&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/d94/78d/985/d9478d9855c34987515521fac98d8cf6.png" /><p>Начнём с небольшой предыстории: пару недель назад я ждал друга в кафе. Как обычно, он опаздывал примерно минут на сорок. Ноутбук с собой, интернет есть, а игр нет — чисто рабочая машина, ничего лишнего, хотя нужно будет что-то скачать, чтобы играть на работе xd. От скуки я открыл браузер и набрал в поиске <a href="https://pdekcj4CVBDmYPlZT">«змейка»</a>. Google выдал свою фирменную змейку прямо в результатах поиска.</p><p>Я кликнул, и пошла игра. Потом прошло пять минут, десять, пятнадцать, и я не мог оторваться, так как немного азартный и, пока не выиграю, не захочу заканчивать. После многих поражений, примерно на двадцать пятой минуте игры, я поймал себя на мысли: а почему яблоко всегда жертва и почему вообще змейка — наш главный герой?</p> <a href="https://habr.com/ru/articles/1047434/?utm_campaign=1047434&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 16 Jun 2026 13:01:19 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[геймдев]]></category><category><![CDATA[адаптивный дизайн]]></category><category><![CDATA[мобильные игры]]></category><category><![CDATA[ruvds_статьи]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Вы не знаете HTML. Мои вопросы об HTML с ответами]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/ruvds/articles/1045072/</guid>
      <link>https://habr.com/ru/companies/ruvds/articles/1045072/?utm_campaign=1045072&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/3a3/c70/576/3a3c70576a07fd3160a17a40da1b0e05.png" /><p>Хабр, привет!</p><p>Меня всегда раздражали вопросы на проверку знаний HTML и CSS. На моей памяти я ни разу не встретил человека, который спрашивал что-то интересное. По этой причине у меня появилось несколько статей с вопросами по CSS, которые собрали достаточно много просмотров для меня.</p><p>А что касается HTML, то я ничего не написал. Сегодня буду исправляться. Сразу скажу, что это не будут вопросы в стиле: «А какие HTML5-элементы вы знаете?». Мне хочется, чтобы вам было интересно и чтобы вы узнали что-то новое.</p><p>По этой причине большинство вопросов связаны с практикой. И абсолютно точно вы не ответите на все. Хотя, может, я ошибаюсь. Вот и проверим, насколько я прав.</p><p>Давайте посмотрим, что я вам подготовил.</p> <a href="https://habr.com/ru/articles/1045072/?utm_campaign=1045072&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 16 Jun 2026 09:01:55 GMT</pubDate>
      <dc:creator><![CDATA[melnik909 (RUVDS.com)]]></dc:creator>
      
      <category><![CDATA[html]]></category><category><![CDATA[css]]></category><category><![CDATA[вёрстка]]></category><category><![CDATA[вопросы]]></category><category><![CDATA[ruvds_статьи]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Frontend Status: свежий дайджест фронтенда и AI — 16.06.2026]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1047986/</guid>
      <link>https://habr.com/ru/articles/1047986/?utm_campaign=1047986&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/42a/c88/b3b/42ac88b3b13c8d3a493578df69c13de2.webp" /><p>Привет!</p><p>Это 18 выпуск Frontend Status — дайджеста по фронтенд-разработке.</p><p>В этом выпуске:</p><p>📺 Экосистема TanStack кажется бесконечной, а browser gaming снова стал серьёзной платформой: Jack Herrington собирает 17 библиотек в одном приложении, а Software Engineering Daily с Эриком Дабилбором из Poki разбирает WebAssembly и WebGL/WebGPU на практике — чтобы увидеть, как устроены и стек, и дистрибуция современных веб-игр.</p><p>🤖 Старые приёмы промптинга режут точность reasoning-моделей, а закрытая вкладка не останавливает счёт — токены и GPU крутятся впустую — чтобы перестроить работу с ИИ и не платить за отменённую работу.</p><p>🛡️ Next.js с дефолтными настройками уязвим к RCE через Server Actions — даже если «серверных функций у нас нет» — чтобы не жить с иллюзией безопасности.</p><p>🎨 Центрирование всё ещё ломает голову, а каскадные анимации плодят сотни <code>:nth-child</code> — честный разбор центрирования и новые <code>sibling-index()</code> / <code>sibling-count()</code> — чтобы понимать, почему код работает, а не подбирать методом тыка.</p><p>⚡ Зелёные async-тесты врут, PDF застревает в iframe, геометрия — в sin/cos, DI падает на проде — PDFSlick, Geometric.js, InferDI и разбор ловушек Jest — чтобы ловить ошибки до деплоя, а не в три часа ночи.</p><p>⚛️ React-зоопарк, неделя конфигов и ручная мемоизация: карта Robin Wieruch на 2026-й, Rockpack из коробки, TanStack AI без вендорного замка, visx 4.0, RSC в TanStack Start и React Compiler — чтобы собирать стек без споров и вычистить лишний шум из кодбейза.</p><p>👁️ TanStack Table почти убил типы и автокомплит во Vue — честный разбор на Habr — чтобы брать библиотеку только под ту боль, которую не решить за час на чистом Vue.</p><p>🌎 Chrome подставляет тяжёлые блоки по ходу стрима, Firefox говорит с железом через Web Serial, canvas наконец принимает DOM — чтобы меньше костылей в вёрстке и проще UI поверх графики.</p><p>🦮 <code>aria-label</code> на div — ложная доступность, которую скринридер проглатывает — чтобы не тратить время на иллюзию a11y.</p><p>📦 Код пишут агенты, а ценность — в суждении: cpojer, автор Jest, о том, что осталось важно инженеру — чтобы направлять систему, а не печатать быстрее.</p><p>⚡ Node молча жрёт память, если стримы игнорируют backpressure — чтобы баг не всплыл только на по-настоящему большом датасете.</p> <a href="https://habr.com/ru/articles/1047986/?utm_campaign=1047986&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 16 Jun 2026 07:41:55 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[vue.js]]></category><category><![CDATA[css3]]></category><category><![CDATA[браузеры]]></category><category><![CDATA[node.js]]></category><category><![CDATA[ux]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Большой каталог «на почитать» про $mol, web и не только]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1047754/</guid>
      <link>https://habr.com/ru/articles/1047754/?utm_campaign=1047754&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p><strong>Реактивность лучше MobX</strong>, <strong>виртуализация рендеринга «из коробки»</strong>, <strong>типизированные стили на TypeScript</strong>, <strong>локально-первая модель данных через CRDT</strong> — эти идеи Дмитрий Карловский (<a href="https://habr.com/ru/users/nin-jin/articles/" rel="noopener noreferrer nofollow">nin-jin</a>) разрабатывает на своём фреймворке $mol и в проекте $hyoo.</p><p>За десять лет накопилось около сотни статей на Хабре и большая документация на <a href="https://mol.hyoo.ru/" rel="noopener noreferrer nofollow">mol.hyoo.ru</a>, разбросанная по годам и площадкам — карта потерялась даже у тех, кто читал.</p><p>Этот каталог — навигатор по корпусу. <strong>80+ материалов</strong> разложены по <strong>12 темам</strong>:</p><p>с чего начать и для кого это вообще</p><p>история фреймворка от тизера 2016-го до обзора 2025-го</p><p>реактивность от первого «атома» 2014-го до свежего цикла 2026-го</p><p>архитектура: MAM, <code>view.tree</code>, виртуализация, CSS-in-TS</p><p>руководство по практике</p><p>утилиты: <code>$mol_fetch</code>, <code>$mol_time</code>, <code>$mol_regexp</code>, <code>VaryPack</code>, <code>MarkedText</code></p><p>TypeScript-приёмы и принципы кода</p><p><code>$hyoo</code> и Гипер База — распределённые данные на CRDT</p><p>сообщество, бенчмарки, аналитика проекта в цифрах</p><p>На каждый материал один абзац о сути и прямая ссылка на оригинал.</p><p><strong>Полезно даже тем, кто не будет писать на $mol.</strong></p> <a href="https://habr.com/ru/articles/1047754/?utm_campaign=1047754&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 15 Jun 2026 13:44:19 GMT</pubDate>
      <dc:creator><![CDATA[cmyser]]></dc:creator>
      
      <category><![CDATA[$mol]]></category><category><![CDATA[реактивное программирование]]></category><category><![CDATA[TypeScript]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[frontend]]></category><category><![CDATA[React]]></category><category><![CDATA[MobX]]></category><category><![CDATA[Vue]]></category><category><![CDATA[CRDT]]></category><category><![CDATA[local-first]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Десктопный аналитик криптовалют: как устроена мультифакторная система сигналов на TA-Lib]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1047376/</guid>
      <link>https://habr.com/ru/articles/1047376/?utm_campaign=1047376&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/96a/dea/d3c/96adead3caac470c0e96b8dc6c526372.png" /><p>Когда я начал торговать криптой, меня раздражало одно: большинство аналитических инструментов выдают «BUY» или «SELL» без объяснений. Три индикатора сказали покупать - вот тебе сигнал. <strong>Никаких весов, никакого контекста, никакой логики за цифрой.</strong></p><p>Я решил сделать иначе. Программа, о которой пойдёт речь — это <strong>десктопное приложение для Windows</strong>, которое запускается двойным кликом, подключается к открытому API Binance и выдаёт взвешенный Score по шести категориям индикаторов, бэктест на последних 100 барах, уровни поддержки/сопротивления по фракталам и ATR-метрики риска. В статье расскажу, как всё это устроено изнутри — с формулами и кодом.</p> <a href="https://habr.com/ru/articles/1047376/?utm_campaign=1047376&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 14 Jun 2026 17:27:27 GMT</pubDate>
      <dc:creator><![CDATA[ura-ch]]></dc:creator>
      
      <category><![CDATA[технический анализ]]></category><category><![CDATA[криптовалюта]]></category><category><![CDATA[TA-Lib]]></category><category><![CDATA[Python]]></category><category><![CDATA[торговые сигналы]]></category><category><![CDATA[индикаторы]]></category><category><![CDATA[MACD]]></category><category><![CDATA[свечные паттерны]]></category><category><![CDATA[Binance API]]></category><category><![CDATA[Flask]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Три задачи discovery при работе с PostgreSQL master/replica — и как их решить]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1047374/</guid>
      <link>https://habr.com/ru/articles/1047374/?utm_campaign=1047374&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Когда у приложения появляется несколько хостов PostgreSQL, начинается головная боль: нужно динамически находить мастера после failover, выбирать реплику с нужным отставанием и гарантировать что пользователь не увидит устаревшие данные после своей же записи. DNS кешируется минутами, libpq не знает про lag, HAProxy не слышал про LSN. Разбираем как устроены существующие решения и как закрыть все три задачи через лёгкий HTTP сервис — <a href="https://github.com/krylosov-aa/pg-status" rel="noopener noreferrer nofollow">pg-status</a>.</p> <a href="https://habr.com/ru/articles/1047374/?utm_campaign=1047374&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 14 Jun 2026 17:18:34 GMT</pubDate>
      <dc:creator><![CDATA[krylosov-aa]]></dc:creator>
      
      <category><![CDATA[postgresql]]></category><category><![CDATA[репликация]]></category><category><![CDATA[failover]]></category><category><![CDATA[replication]]></category><category><![CDATA[python]]></category><category><![CDATA[sql]]></category><category><![CDATA[discovery]]></category><category><![CDATA[high availability]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как я сделал расширение, которое показывает десктоп и мобильную версию сайта одновременно]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1047354/</guid>
      <link>https://habr.com/ru/articles/1047354/?utm_campaign=1047354&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/cea/ab0/251/ceaab02514a2b4dbb95671063f12c6f5.png" /><p>Когда верстаешь адаптив, постоянно скачешь между десктопом и мобильной версией: то DevTools в режиме устройства, то ресайз окна, то открыть на телефоне. Десктоп и мобайл при этом никогда не видны одновременно — один прячется, когда смотришь на другой.</p><p>Готовые мобильные симуляторы это не закрывали: они хорошо делают своё дело, но не дают посмотреть адаптив прямо на вкладке, поверх десктопа. Я сделал свой инструмент — и в статье разбираю, как это устроено технически.</p> <a href="https://habr.com/ru/articles/1047354/?utm_campaign=1047354&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать разбор</a>]]></description>
      
      <pubDate>Sun, 14 Jun 2026 15:04:09 GMT</pubDate>
      <dc:creator><![CDATA[Roman_2023]]></dc:creator>
      
      <category><![CDATA[адаптивная вёрстка]]></category><category><![CDATA[расширение Chrome]]></category><category><![CDATA[responsive]]></category><category><![CDATA[мобильная вёрстка]]></category><category><![CDATA[Manifest V3]]></category><category><![CDATA[WebCodecs]]></category><category><![CDATA[declarativeNetRequest]]></category><category><![CDATA[Shadow DOM]]></category><category><![CDATA[дизайн сайтов]]></category><category><![CDATA[запись экрана]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Browser Policy Manager: история создания и технические решения]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1047316/</guid>
      <link>https://habr.com/ru/articles/1047316/?utm_campaign=1047316&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/f64/358/96e/f6435896e2cdc54cb2f7679b43f8d0cb.png" /><p>Я около десяти лет занимаюсь русской локализацией Mozilla и сейчас являюсь лидером русской локализации. За это время я много раз видел Firefox с пользовательской стороны, со стороны сообщества, со стороны перевода интерфейса и документации. Но в корпоративной среде браузер выглядит иначе. Там это не просто приложение для просмотра сайтов, а часть рабочего места, через которую проходят почта, внутренние системы, облачные службы, порталы, административные панели и множество других критичных процессов.</p><p>Когда речь заходит о безопасности рабочего места, обычно вспоминают операционную систему, антивирус, средства защиты конечных устройств, контроль устройств, почту, сетевой периметр. Браузер часто оказывается где-то сбоку: «ну, его тоже надо как-то настроить». На практике именно браузер становится одним из самых чувствительных клиентских приложений. Он работает с данными, авторизацией, расширениями, загрузками, сертификатами, прокси, паролями, обновлениями, внешними службами и внутренними порталами.</p><p>У Firefox для этого есть корпоративные политики. Их можно описывать в <code>policies.json</code>, раскладывать по рабочим станциям и получать управляемый браузер. Но между «политики существуют» и «администратор или специалист по информационной безопасности может уверенно сопровождать их в реальной организации» есть большая дистанция.</p><p>Так появился <a href="https://github.com/Goudron/browser-policy-manager" rel="noopener noreferrer nofollow">Browser Policy Manager</a> — свободный продукт под лицензией MPL-2.0 для управления корпоративными политиками Firefox.</p> <a href="https://habr.com/ru/articles/1047316/?utm_campaign=1047316&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 14 Jun 2026 10:21:13 GMT</pubDate>
      <dc:creator><![CDATA[Goudron]]></dc:creator>
      
      <category><![CDATA[Firefox]]></category><category><![CDATA[Browser Policy Manager]]></category><category><![CDATA[корпоративные политики]]></category><category><![CDATA[policies.json]]></category><category><![CDATA[безопасные конфигурации]]></category><category><![CDATA[информационная безопасность]]></category><category><![CDATA[системное администрирование]]></category><category><![CDATA[CIS]]></category><category><![CDATA[open source]]></category><category><![CDATA[управление конфигурацией]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Firebase, Supabase и BaaS: как мы к такому пришли и что там внутри]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/amvera/articles/1047242/</guid>
      <link>https://habr.com/ru/companies/amvera/articles/1047242/?utm_campaign=1047242&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/132/eeb/0dc/132eeb0dc53290b7098f9ce9e3a3ea53.png" /><p>Всем привет!</p><p>Ранее <a href="https://habr.com/ru/companies/amvera/articles/1044498/">мы разбирались</a> с одним конкретным примером - Supabase: как его поставить, зачем он нужен, какие есть аналоги и почему вокруг него в последнее время так много шума.</p><p>Но, мне кажется, что сейчас будет правильно сделать шаг назад и поговорить не про конкретный сервис, а про весь BaaS (Backend-as-a-Service). Как мы уже узнали из прошлой статьи, Supabase не возник сам по себе, до него был Firebase, а до Firebase были обычные самописные API, куча настроек авторизации, хранения файлов, нотификаций с вебсокетами и остального.</p><p>В этой статье мы разберем, что такое BaaS, почему он вообще понадобился, чем Firebase отличается от Supabase, для каких приложений такой подход подходит, а где уже нужен собственный backend.</p> <a href="https://habr.com/ru/articles/1047242/?utm_campaign=1047242&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 14 Jun 2026 09:38:40 GMT</pubDate>
      <dc:creator><![CDATA[MarkovM (Amvera)]]></dc:creator>
      
      <category><![CDATA[baas]]></category><category><![CDATA[backend as a service]]></category><category><![CDATA[firebase]]></category><category><![CDATA[supabase]]></category><category><![CDATA[managed postgresql]]></category><category><![CDATA[firebase realtime]]></category><category><![CDATA[firebase auth]]></category><category><![CDATA[supabase auth]]></category><category><![CDATA[supabase self hosted]]></category><category><![CDATA[supabase локально]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Семь браузерных инструментов без сервера: WASM, WebGPU, шифрование на клиенте]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1047200/</guid>
      <link>https://habr.com/ru/articles/1047200/?utm_campaign=1047200&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/6b1/451/472/6b1451472e96e37777ee9aca95c68be2.png" /><p>Запись в Notion - и текст на чужом сервере. Задачи в облачном планировщике - данные в чужой аналитике.</p><p>Волна локальных LLM показала широкой аудитории, что on-device - это реально. Модель работает, данные не покидают машину. RAG в indexeddb - кто так не делал?</p><p>Тот же сдвиг происходит с обычными инструментами. Всё заметнее, что ежемесячная подписка - это аренда софта, которым не владеешь и который нельзя отключить от сети.</p><p>Я доделал свои 7 pet-проектов. Все работают целиком в браузере, без сервера, без регистрации, без отправки данных куда-либо. Только локальное хранилище, шифрование на стороне клиента и нативные браузерные API. </p> <a href="https://habr.com/ru/articles/1047200/?utm_campaign=1047200&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Что же это за проекты</a>]]></description>
      
      <pubDate>Sat, 13 Jun 2026 22:28:02 GMT</pubDate>
      <dc:creator><![CDATA[badattech]]></dc:creator>
      
      <category><![CDATA[local first]]></category><category><![CDATA[webgpu]]></category><category><![CDATA[Web MIDI API]]></category><category><![CDATA[aes-gcm]]></category><category><![CDATA[wasm]]></category><category><![CDATA[indexeddb]]></category><category><![CDATA[pbkdf2]]></category><category><![CDATA[idef0]]></category><category><![CDATA[controlnet]]></category><category><![CDATA[privacy]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Бэкап сайта на шаред-хостинге без cron CLI: bash + lftp + внешний триггер]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1046948/</guid>
      <link>https://habr.com/ru/articles/1046948/?utm_campaign=1046948&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/413/1c9/306/4131c93061d4015a9f135ec1299d69fb.png" /><p>Скриптов «забэкапь мне сайт» в интернете тысячи. Большинство падает на shared-хостинге, потому что там либо нет <code>crontab -e</code>, либо нет <code>rsync</code>, либо <code>mysqldump</code> лежит в нестандартном месте, либо у вас нет root, чтобы починить права на <code>/tmp</code>. А ещё — почти все игнорируют ротацию, и через два месяца ваш FTP забит 300 архивами по 200 МБ каждый.</p><p>В этой статье — рабочая схема для типичного клиентского сайта на Beget/Timeweb/Rusonyx-подобном хостинге, без панельных «бэкап-сервисов» за деньги, с дампом базы, ротацией и без хранения паролей в git.</p> <a href="https://habr.com/ru/articles/1046948/?utm_campaign=1046948&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 12 Jun 2026 17:01:37 GMT</pubDate>
      <dc:creator><![CDATA[paha66]]></dc:creator>
      
      <category><![CDATA[бэкап]]></category><category><![CDATA[backup]]></category><category><![CDATA[хостинг]]></category><category><![CDATA[ftp]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Асинхронный django: новые начинания]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1046604/</guid>
      <link>https://habr.com/ru/articles/1046604/?utm_campaign=1046604&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/421/c38/b4f/421c38b4f33185f4675ded3e8cc1f20a.png" /><p>Здравствуйте, дорогие читатели! Сегодня - ещё одна статья из рубрики джангологии.</p><p> Раньше я уже писал о своих идеях (<a href="https://habr.com/ru/articles/694804/" rel="noopener noreferrer nofollow">1</a> и <a href="https://habr.com/ru/articles/708946/" rel="noopener noreferrer nofollow">2</a>) о том, как сделать django асинхронным. Они основывались, вслед за sqlalchemy, на использовании гринлетов. Несмотря на то, что proof-of-concept был успешно получен, а трудностей - встречено меньше, чем ожидалось, я всё-таки отказался от этого подхода: во-первых, он уже применяется в sqlalchemy. Во-вторых, это ведёт к усложнению, и растёт так называемая test matrix - потому что поддерживается как синхронный случай, так и асинхронный. А simple, как мы знаем, is better than complex.</p><p>Так вот, я решил возобновить эти свои попытки, изменив подход на более радикальный. А именно, необратимо переписать django на async-only, сломав совместимость полностью. Для этого потребуется заменить в половине функций def на async def и добавив await при их вызове. Я уверен, что такой подход лучше.</p><p>Не то, чтобы асинхронный django был очень кому-нибудь нужен, особенно теперь, или от этого будет какой-то фантастический выигрыш в производительности - дело в том, что я хочу попробовать на практике агентное программирование, а это, как раз подходящий проект: есть чёткий план и много кода, который нужно менять.</p> <a href="https://habr.com/ru/articles/1046604/?utm_campaign=1046604&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 12 Jun 2026 07:07:03 GMT</pubDate>
      <dc:creator><![CDATA[abetkin]]></dc:creator>
      
      <category><![CDATA[python]]></category><category><![CDATA[django]]></category><category><![CDATA[async]]></category><category><![CDATA[fork]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Встраиваем проверку возраста без ЕБС в Telegram, MAX и любой другой мессенджер]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/smartengines/articles/1046608/</guid>
      <link>https://habr.com/ru/companies/smartengines/articles/1046608/?utm_campaign=1046608&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/f41/889/223/f418892236b973b1a3372c045e27a858.webp" /><p>Привет, Хабр! Говоря о проверке возраста для доступа к онлайн-платформам, нельзя обойти стороной один из наиболее очевидных кейсов: мессенджеры. Они давно вышли за рамки простого обмена сообщениями – и для многих новых функций есть конкретные возрастные ограничения. В этой статье мы поговорим о том, как за пару минут интегрировать <a href="https://smartengines.ru/smart-passportreader/">распознавание паспорта</a> для удобной возрастной идентификации в мини-приложение мессенджера –&nbsp;без биометрии, ЕБС и раскрытия персональных данных. С кодом и видео. В общем, заглядывайте под кат!</p> <a href="https://habr.com/ru/articles/1046608/?utm_campaign=1046608&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 11 Jun 2026 15:42:00 GMT</pubDate>
      <dc:creator><![CDATA[SmartEngines (Smart Engines)]]></dc:creator>
      
      <category><![CDATA[проверка возраста]]></category><category><![CDATA[мессенджеры]]></category><category><![CDATA[распознавание изображений]]></category><category><![CDATA[wasm]]></category><category><![CDATA[webassembly]]></category><category><![CDATA[ocr]]></category><category><![CDATA[ocr-технологии]]></category><category><![CDATA[pwa]]></category><category><![CDATA[age verification]]></category><category><![CDATA[распознавание паспорта]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Kilua: просим Kotlin сделать вид, что он React]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1046505/</guid>
      <link>https://habr.com/ru/articles/1046505/?utm_campaign=1046505&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/c16/8cd/3d9/c168cd3d991906660d3604584dff87df.jpg" /><p>Посмотрим на Kilua — новый Kotlin-фреймворк для web-frontend. Честно о том: где радует, где мешает, и почему один вопрос всё равно остается открытым</p> <a href="https://habr.com/ru/articles/1046505/?utm_campaign=1046505&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 11 Jun 2026 11:41:50 GMT</pubDate>
      <dc:creator><![CDATA[karandashov]]></dc:creator>
      
      <category><![CDATA[Kilua]]></category><category><![CDATA[kvision]]></category><category><![CDATA[kotlin multiplatform]]></category><category><![CDATA[frontend]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Минус 500 MB: оптимизируем Docker-образ Django-приложения]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/yadro/articles/1045122/</guid>
      <link>https://habr.com/ru/companies/yadro/articles/1045122/?utm_campaign=1045122&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/27d/a97/911/27da979119c00d9ccca5cb8c6a515215.jpg" /><p>Когда Docker-образ backend-приложения начинает весить 1,5 GB, это уже хороший повод хотя бы посмотреть, что вообще лежит внутри. Пока все работает, мало кто задумывается, сколько мусора, dev-зависимостей и ненужных файлов уезжает в production вместе с приложением. Но на самом деле от «лишнего веса» нужно избавляться, потому что каждый лишний мегабайт — это более долгие сборки и дополнительные сложности.&nbsp;&nbsp;</p> <a href="https://habr.com/ru/articles/1045122/?utm_campaign=1045122&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 11 Jun 2026 10:43:16 GMT</pubDate>
      <dc:creator><![CDATA[shoytov (YADRO)]]></dc:creator>
      
      <category><![CDATA[docker]]></category><category><![CDATA[django]]></category><category><![CDATA[uv]]></category><category><![CDATA[poetry]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Я попросила Claude Fable 5 сделать игру одним промптом. Получился симулятор админа ИИ-канала]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1046193/</guid>
      <link>https://habr.com/ru/articles/1046193/?utm_campaign=1046193&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/9cf/943/feb/9cf943febe2290c86776e368c6b68e95.jpg" /><p><em>9 июня</em> <strong>Anthropic</strong> <a href="https://www.anthropic.com/news/claude-fable-5-mythos-5" rel="noopener noreferrer nofollow">выпустила</a> <strong>Claude Fable 5 </strong>- первую публичную модель класса <strong>Mythos</strong>, на ступень выше привычного <strong>Opus</strong>. Релиз громкий: 80,3% на <em>SWE-bench Pro</em>, миграция кодбазы <strong>Stripe</strong> за день, "самая мощная публичная модель в истории компании". <strong>Но бенчмарки - это чужой опыт.&nbsp;</strong></p><p>Мне было интереснее проверить свое: может ли модель не просто написать кусок кода, а собрать маленький продукт целиком - с идеей, механикой, балансом, интерфейсом и концовками.</p><p>Поэтому я не стала просить змейку, To-Do планер или лендинг. Я попросила одним промптом собрать браузерную игру - <strong>симулятор админа Telegram-канала про ИИ</strong>. Получился <a href="https://tg-admin-sim.netlify.app" rel="noopener noreferrer nofollow">Нейровестник</a>. Поиграть можно и с телефона.</p><p><strong>Спойлер</strong>: модель сама вшила в баланс мораль. </p> <a href="https://habr.com/ru/articles/1046193/?utm_campaign=1046193&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 11 Jun 2026 07:14:57 GMT</pubDate>
      <dc:creator><![CDATA[Neurosonya]]></dc:creator>
      
      <category><![CDATA[claude fable 5]]></category><category><![CDATA[anthropic]]></category><category><![CDATA[claude]]></category><category><![CDATA[искусственный интеллект]]></category><category><![CDATA[нейросети]]></category><category><![CDATA[ai-агенты]]></category><category><![CDATA[вайб-кодинг]]></category><category><![CDATA[генерация кода]]></category><category><![CDATA[прототипирование]]></category><category><![CDATA[будущее здесь]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Перестройка реактивных потоков данных]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1044342/</guid>
      <link>https://habr.com/ru/articles/1044342/?utm_campaign=1044342&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/672/baa/512/672baa512bd4d1c873d2d5dfa27f92fd.png" /><p>В реактивной системе все состояния связаны друг с другом инвариантами в единый граф. Когда мы изменяем что-то с одной стороны этого графа, рантайм обеспечивает каскадный пересчет зависимых состояний. Такие последовательности пересчетов — это ничто иное, как <em>потоки информации</em> (data-flow). Чем прямолинейнее эти потоки, чем меньше они разветвляются и затрагивают состояния, не относящиеся к изменениям, тем эффективнее работает система. И здесь есть два подхода к оптимизации потоков информации…</p> <a href="https://habr.com/ru/articles/1044342/?utm_campaign=1044342&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Погрузиться в информационный поток</a>]]></description>
      
      <pubDate>Thu, 11 Jun 2026 07:10:02 GMT</pubDate>
      <dc:creator><![CDATA[nin-jin]]></dc:creator>
      
      <category>реактивное программирование</category><category>фрп</category><category>орп</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Путь к ошибке: зачем нужны «Breadcrumbs» во frontend-мониторинге]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1046083/</guid>
      <link>https://habr.com/ru/articles/1046083/?utm_campaign=1046083&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/725/c94/4ee/725c944eea6ee6b3deb08fcc83edf93d.png" /><p>Пользователь столкнулся с ошибкой в вашей программе. Трекер ошибок ее зафиксировал. Стек-трейс показывает место сбоя. Но что делал пользователь за несколько секунд до этого? Какие запросы выполнялись? На каком шаге сценарий пошёл не так?</p><p>Для ответа на эти вопросы в трекерах ошибок используются Breadcrumbs — цепочка событий, предшествующих ошибке. Разберём, как они работают в Хоуке и как помогают быстрее расследовать сбои в приложениях.</p> <a href="https://habr.com/ru/articles/1046083/?utm_campaign=1046083&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 11 Jun 2026 06:05:47 GMT</pubDate>
      <dc:creator><![CDATA[codexteam]]></dc:creator>
      
      <category><![CDATA[трекинг ошибок]]></category><category><![CDATA[мониторинг]]></category><category><![CDATA[хлебные крошки]]></category><category><![CDATA[breadcrumbs]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Проверка возраста без персональных данных и биометрии: встраиваем в веб-страницу за 5 минут]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/smartengines/articles/1046149/</guid>
      <link>https://habr.com/ru/companies/smartengines/articles/1046149/?utm_campaign=1046149&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/e40/290/873/e40290873a2986a322d1eef04dd6113a.jpg" /><p>Продолжаем рассказывать об альтернативном способе подтверждения возраста на веб-ресурсах без использования биометрии, интеграции с ЕБС и раскрытия персональных данных. О том, как это можно сделать, мы подробно писали в <a href="https://habr.com/ru/companies/smartengines/articles/1045414/">прошлой статье</a>. Теперь разберемся, как реализовать подобный сценарий с помощью WebAssembly и какие возможности это открывает для веб-платформ. В этом материале показываем код, ищите под катом.&nbsp;</p> <a href="https://habr.com/ru/articles/1046149/?utm_campaign=1046149&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 10 Jun 2026 15:45:00 GMT</pubDate>
      <dc:creator><![CDATA[SmartEngines (Smart Engines)]]></dc:creator>
      
      <category><![CDATA[распознавание изображений]]></category><category><![CDATA[webassembly]]></category><category><![CDATA[wasm]]></category><category><![CDATA[распознавание паспорта]]></category><category><![CDATA[проверка возраста]]></category><category><![CDATA[age verification]]></category><category><![CDATA[подтверждение личности]]></category><category><![CDATA[pwa]]></category><category><![CDATA[progressive web apps]]></category><category><![CDATA[ocr]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Миграция с SharePoint без окна риска: двусторонняя работа с данными в новом портале, пока старый ещё живёт]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1045925/</guid>
      <link>https://habr.com/ru/articles/1045925/?utm_campaign=1045925&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/3c5/cd2/5f3/3c5cd25f361f02bd24772dadf6fa95b4.png" /><p>Большинство статей о миграции с SharePoint описывают её как проект с двумя чёткими состояниями: «до» и «после». Вот вы работаете в SharePoint — вот уже в новой системе. На практике это не так. Между «до» и «после» существует третье состояние, которое может длиться месяцами: обе системы работают в проде одновременно, пользователи работают в обеих, а данные могут меняться в любой из них.</p><p>Именно это третье состояние и создаёт самый неприятный класс проблем. И именно о нём — эта статья.</p> <a href="https://habr.com/ru/articles/1045925/?utm_campaign=1045925&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 10 Jun 2026 10:59:18 GMT</pubDate>
      <dc:creator><![CDATA[akakunin]]></dc:creator>
      
      <category><![CDATA[sharepoint]]></category><category><![CDATA[migration]]></category><category><![CDATA[incomand]]></category><category><![CDATA[proxy]]></category><category><![CDATA[импортозамещение]]></category><category><![CDATA[инкоманд]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Оптимизация под Pagespeed: работа с изображениями как с наиболее частой и весомой проблемой сайтов]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/first/articles/1045832/</guid>
      <link>https://habr.com/ru/companies/first/articles/1045832/?utm_campaign=1045832&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/045/57a/6d3/04557a6d3de0672af90f6f4c476ff38f.png" /><p>Разработчики часто сталкиваются с проблемой: сайт успешно протестировали на мастере, выкатили на прод, провели контрольное тестирование — вроде всё хорошо. Сайт работает пару месяцев — и вдруг приходит задача от SEO «увеличить скорость загрузки сайта» или «исправить просевшее количество баллов в PageSpeed». Причём ничего принципиально нового не добавляли, просто наполняли контентом.</p><p>Начинаем разбираться — и выясняется, что есть общая проблема, которая почти всегда повторяется. А именно — изображения. В статье расскажем, что с ними делать — как оказывается, проблема распространённая и до сих пор актуальная. </p> <a href="https://habr.com/ru/articles/1045832/?utm_campaign=1045832&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 10 Jun 2026 08:42:22 GMT</pubDate>
      <dc:creator><![CDATA[FirstJohn (FirstVDS)]]></dc:creator>
      
      <category><![CDATA[оптимизация сайта]]></category><category><![CDATA[скорость загрузки сайта]]></category><category><![CDATA[оптимизация изображений]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Использование Blob API для обработки файлов, их загрузки и создания клиентских приложений без утечек памяти]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/timeweb/articles/1041940/</guid>
      <link>https://habr.com/ru/companies/timeweb/articles/1041940/?utm_campaign=1041940&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/c2a/a2c/ed2/c2aa2ced2e97facf4295561b7e67182e.png" /><p>Современные фронтенд-приложения постоянно взаимодействуют с файлами.</p><p>Пользователи загружают аватары, перетаскивают видео в дашборды, экспортируют CSV-отчеты, просматривают PDF-файлы, скачивают сгенерированные конфигурационные файлы и работают с медиаконтентом прямо в браузере. На первый взгляд все это выглядит довольно просто: поле загрузки файла, элемент предпросмотра, возможно, кнопка скачивания — и задача решена.</p><p>Но именно здесь начинаются настоящие проблемы.</p> <a href="https://habr.com/ru/articles/1041940/?utm_campaign=1041940&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 10 Jun 2026 08:06:09 GMT</pubDate>
      <dc:creator><![CDATA[aio350 (Timeweb Cloud)]]></dc:creator>
      
      <category>javascript</category><category>js</category><category>blob</category><category>file</category><category>memory</category><category>файл</category><category>память</category><category>timeweb_статьи_перевод</category><category>data</category><category>данные</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Как я написал портативный файлообменник]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1045630/</guid>
      <link>https://habr.com/ru/articles/1045630/?utm_campaign=1045630&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/3e9/296/87c/3e929687c314647f505f1df80ffe2904.png" /><p>Каждый раз, когда нужно перекинуть файл, код или&nbsp;ссылку с&nbsp;ПК на&nbsp;телефон (или другу в&nbsp;той&nbsp;же Wi‑Fi сети), начинается классическая возня.&nbsp;Либо гоняешь через «Избранное» в&nbsp;мессенджерах (где режется качество и файлы вечно висят в&nbsp;облаке),&nbsp;либо поднимаешь локальные веб‑серверы через консоль. Мне это надоело, и я решил написать свою утилиту&nbsp;— <strong>FlashStash</strong>.</p><p>Основная идея: софт должен запускаться в&nbsp;один клик, работать без&nbsp;интернета внутри локалки, иметь всеядный предпросмотр файлов прямо в&nbsp;браузере и не&nbsp;требовать от&nbsp;пользователя установки Питона или&nbsp;настройки окружения.</p><p>После нескольких итераций проект дорос до&nbsp;версии 1.6, и я хочу поделиться тем, как&nbsp;устроена утилита изнутри и с&nbsp;какими техническими проблемами пришлось столкнуться.</p> <a href="https://habr.com/ru/articles/1045630/?utm_campaign=1045630&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 09 Jun 2026 16:27:09 GMT</pubDate>
      <dc:creator><![CDATA[arxbyte]]></dc:creator>
      
      <category><![CDATA[flashstash]]></category><category><![CDATA[файлообменник]]></category><category><![CDATA[локальная сеть]]></category><category><![CDATA[python]]></category><category><![CDATA[flask]]></category><category><![CDATA[pet-проект]]></category><category><![CDATA[portable]]></category><category><![CDATA[разработка]]></category><category><![CDATA[пиарюсь]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как попасть во фронтенд и дойти до senior в ВК — интервью с Александром Ламковым]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1045620/</guid>
      <link>https://habr.com/ru/articles/1045620/?utm_campaign=1045620&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/de8/b22/e5b/de8b22e5bbf2b2503aac44a3f6ba5bdf.png" /><p>Фронтенд-разработка давно перестала быть просто «вёрсткой сайтов». Сегодня это сложная экосистема: фреймворки, state-менеджмент, TypeScript, оптимизация производительности, работа с API и постоянный поток новых инструментов. Но за всей этой технологической гонкой часто теряется главное: что на самом деле нужно знать начинающему разработчику, где проходит грань между джуном и сеньором, и почему умение проходить собеседования — такой же навык, как и писать код. </p><p>Я, Александр, автор телеграм-канала «<a href="https://t.me/shulepov_codeee" rel="noopener noreferrer nofollow">Shulepov Code</a>», поговорил с Александром Ламковым — фронтенд-разработчиком, основателем YouTube-канала Friendly Frontend (аудитория более 50 000 подписчиков) и телеграм-канала «<a href="https://t.me/friendlyFrontend" rel="noopener noreferrer nofollow">Friendly Frontend</a>», опытным наставником, который провёл более 200 персональных консультаций с разработчиками, помог прокачать их навыки. Александр успешно прошёл собеседования на позицию сеньора в нескольких крупных IT-компаниях России, а сейчас работает в компании ВК. В этом выпуске узнаем, что такое современная фронтенд-разработка, какие навыки нужны, чтобы войти в профессию, что выбрать (найм или фриланс), и сколько на самом деле зарабатывают фронтенд-разработчики. </p> <a href="https://habr.com/ru/articles/1045620/?utm_campaign=1045620&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 09 Jun 2026 16:16:13 GMT</pubDate>
      <dc:creator><![CDATA[aleksandr_shulepov]]></dc:creator>
      
      <category><![CDATA[Фронтенд]]></category><category><![CDATA[React]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[TypeScript]]></category><category><![CDATA[Карьера в IT]]></category><category><![CDATA[Tailwind]]></category><category><![CDATA[Геймдев]]></category><category><![CDATA[ВК]]></category><category><![CDATA[CSS]]></category><category><![CDATA[Senior]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как починить блокировку легальных сайтов РКН ТСПУ одной строчкой в Chrome]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1045438/</guid>
      <link>https://habr.com/ru/articles/1045438/?utm_campaign=1045438&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/062/542/56b/06254256b24ce94c441c4ee0ec93a037.png" /><p>Мне очень хотелось разобраться в этой ситуации с блокировками..<br>Не мог с Chrome зайти на beget.com - там CDN блокировался. Тыкался тыкался..</p><p>Вставляете в строку браузера <strong>chrome://flags/</strong></p><p>Ищите <strong>Cryptography Compliance (CNSA)</strong> (<code>#cryptography-compliance-cnsa</code>)</p> <a href="https://habr.com/ru/articles/1045438/?utm_campaign=1045438&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 09 Jun 2026 10:49:48 GMT</pubDate>
      <dc:creator><![CDATA[ebye]]></dc:creator>
      
      <category><![CDATA[ркн]]></category><category><![CDATA[блокировка сайтов]]></category><category><![CDATA[легитимные сайты]]></category><category><![CDATA[тспу]]></category><category><![CDATA[отпечатки TLS]]></category><category><![CDATA[не работают российские сайты]]></category><category><![CDATA[не работают сайты]]></category><category><![CDATA[блокировки сайтов]]></category>
    </item>
  

  

  

	
  

  

  

      

      

      

    
  </channel>
</rss>
