<?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, 31 Jul 2026 03:40:42 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[Приложение открывается только с VPN. Разбирался почему]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1065126/</guid>
      <link>https://habr.com/ru/articles/1065126/?utm_campaign=1065126&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/852/bbb/a3c/852bbba3cee4fac43b53641dfab52722.jpg" /><p>Пользователи из регионов начали писать в поддержку одно и то же: приложение не открывается. Симптомы у всех разные. У кого-то вечная загрузка, у кого-то белый экран, у кого-то заходит, только если включить VPN.</p><p>На своём компьютере всё летает. С зарубежного сервера проверяю, тоже без проблем. Сижу, чешу затылок.</p><p>Сначала списал на случайные глюки у провайдеров. Мало ли, бывает. Но обращений становилось больше, а не меньше, и в какой-то момент стало ясно: это не совпадение, это системная штука. Пришлось лезть в сетевой дебаг с головой.</p><p>В этой статье расскажу, как искал причину таймаутов, что в итоге поменял в инфраструктуре и почему обычная сборка Vite с разбивкой на чанки превратилась в проблему, а не в оптимизацию.</p> <a href="https://habr.com/ru/articles/1065126/?utm_campaign=1065126&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 31 Jul 2026 02:26:30 GMT</pubDate>
      <dc:creator><![CDATA[zaaaa]]></dc:creator>
      
      <category><![CDATA[cdn]]></category><category><![CDATA[nginx]]></category><category><![CDATA[vite]]></category><category><![CDATA[selectel]]></category><category><![CDATA[tcp]]></category><category><![CDATA[сетевая доступность]]></category><category><![CDATA[frontend]]></category><category><![CDATA[отказоустойчивость]]></category><category><![CDATA[spa]]></category><category><![CDATA[сервер]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Next.js, localStorage в App Router без hydration-ошибок]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1064926/</guid>
      <link>https://habr.com/ru/articles/1064926/?utm_campaign=1064926&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/728/fe7/214/728fe72145ebb092a8197de7a42efef7.png" /><p><code>localStorage</code> существует только в браузере. App Router может подготовить HTML на сервере и для Client Component. Код с директивой <code>use client</code> получает состояние, эффекты и обработчики событий, но первый рендер всё ещё может пройти без <code>window</code> и <code>localStorage</code>. И возникают два сбоя. Прямое чтение <code>localStorage</code> падает на сервере. Проверка через <code>typeof window</code> возвращает разные данные на сервере и в браузере. Сервер строит пустое избранное, браузер видит сохранённые id, React получает разные деревья при hydration.</p> <a href="https://habr.com/ru/articles/1064926/?utm_campaign=1064926&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 30 Jul 2026 11:39:25 GMT</pubDate>
      <dc:creator><![CDATA[lemon_m]]></dc:creator>
      
      <category><![CDATA[nextjs]]></category><category><![CDATA[app router]]></category><category><![CDATA[localstorage]]></category><category><![CDATA[hydration]]></category><category><![CDATA[client components]]></category><category><![CDATA[browser api]]></category><category><![CDATA[react]]></category><category><![CDATA[javascript]]></category><category><![CDATA[избранное]]></category><category><![CDATA[веб-разработка]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Реальная и мнимая многопоточность в JS]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1064906/</guid>
      <link>https://habr.com/ru/articles/1064906/?utm_campaign=1064906&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>JS — однопоточный язык, но асинхронный код нередко описывают как «выполняющийся параллельно» — и это не совсем так. В статье разберёмся, что на самом деле происходит, когда вы вызываете fetch или setTimeout, и почему настоящая многопоточность в браузере — это отдельная история про Web Workers, а не про промисы.</p> <a href="https://habr.com/ru/articles/1064906/?utm_campaign=1064906&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 30 Jul 2026 11:11:06 GMT</pubDate>
      <dc:creator><![CDATA[vldos]]></dc:creator>
      
      <category><![CDATA[асинхронность]]></category><category><![CDATA[многопоточность]]></category><category><![CDATA[javascript]]></category><category><![CDATA[frontend]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как я написал свой SMTP‑сервер, чтобы не пропускать сообщения заказчиков с фриланс‑бирж]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1064840/</guid>
      <link>https://habr.com/ru/articles/1064840/?utm_campaign=1064840&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/5eb/6c7/854/5eb6c785400661edf7ef2ce5b5213466.jpg" /><p>Я фрилансер, и я ненавижу мониторить биржи. FL, Kwork, Freelance, куча Telegram‑каналов&nbsp;— каждое утро одна и та&nbsp;же рутина. Открываешь вкладку, обновляешь,&nbsp;листаешь, понимаешь что&nbsp;всё мимо, переходишь на&nbsp;следующую. Короче, бесконечная петля.</p><p>Подсчитал как‑то&nbsp;— два‑три часа в&nbsp;день уходит не&nbsp;на&nbsp;работу. На&nbsp;обновление страниц.</p><p>Решил автоматизировать. Написал агрегатор, который собирает заказы с&nbsp;четырёх площадок в&nbsp;единую ленту с&nbsp;фильтрами, присылает уведомления в&nbsp;Telegram и пересылает ответы заказчиков из&nbsp;бирж прямо в&nbsp;чат. Под&nbsp;капотом Python 3.13, FastAPI, Vue 3, PostgreSQL. Всё крутится в&nbsp;одном asyncio event loop.</p> <a href="https://habr.com/ru/articles/1064840/?utm_campaign=1064840&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 30 Jul 2026 09:37:54 GMT</pubDate>
      <dc:creator><![CDATA[zaaaa]]></dc:creator>
      
      <category><![CDATA[ython]]></category><category><![CDATA[asyncio]]></category><category><![CDATA[smtp сервер]]></category><category><![CDATA[фриланс]]></category><category><![CDATA[парсинг сайтов]]></category><category><![CDATA[fastapi]]></category><category><![CDATA[обход защиты]]></category><category><![CDATA[telegram бот]]></category><category><![CDATA[автоотклик]]></category><category><![CDATA[разработка]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как мы бросили попытки сделать “свой Tinder”, ужали продукт до одной идеи — и получили 7000 активных пользователей]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1064808/</guid>
      <link>https://habr.com/ru/articles/1064808/?utm_campaign=1064808&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/1a8/692/976/1a86929764d490c1fac0728f30623b1b.jpeg" /><p>Разбираю, как мы два года пытались построить классическое приложение для знакомств, слили на это все деньги — а потом перестали конкурировать с Tinder и Badoo напрямую, урезали проект до одной узкой, но сильной идеи. Итог: больше 1000 активных пользователей каждый день, 7000+ в месяц — и мультиплатформенный продукт (iOS, Android, веб, Telegram).</p><p>Спойлер: секрет был не в том, чтобы сделать дейтинг лучше. Секрет был в том, чтобы перестать делать дейтинг "для всех".</p> <a href="https://habr.com/ru/articles/1064808/?utm_campaign=1064808&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 30 Jul 2026 08:40:47 GMT</pubDate>
      <dc:creator><![CDATA[its_capitan]]></dc:creator>
      
      <category><![CDATA[стартап]]></category><category><![CDATA[запуск проекта]]></category><category><![CDATA[запуск стартапа]]></category><category><![CDATA[запуск приложений]]></category><category><![CDATA[создание бизнеса]]></category><category><![CDATA[монетизация проекта]]></category><category><![CDATA[сервисы]]></category><category><![CDATA[знакомства]]></category><category><![CDATA[дейтинг-приложения]]></category><category><![CDATA[дейтинг]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как попасть в голосовые ответы Алисы — и почему разметка тут почти ни при чём]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1064662/</guid>
      <link>https://habr.com/ru/articles/1064662/?utm_campaign=1064662&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/451/ecc/e29/451ecce29478ca04286190b1ab259be6.jpg" /><p>Недавно на сайте одного из клиентов мы с командой по всем правилам поставили <code>speakable</code> — разметку, которая подсказывает голосовому ассистенту, какие куски страницы читать вслух: короткий ответ в начале, три ответа из FAQ, всё в валидном коде, а селекторы точно на нужных блоках. Алиса зачитывала ответ ноль раз. Причина оказалась глубже разметки: страница висела на 14-м месте обычной выдачи Яндекса. Ниже разбираю, как размечать под голос правильно, на что это реально влияет и на каких граблях я терял время.</p> <a href="https://habr.com/ru/articles/1064662/?utm_campaign=1064662&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 29 Jul 2026 19:15:14 GMT</pubDate>
      <dc:creator><![CDATA[ig_novvv]]></dc:creator>
      
      <category><![CDATA[speakable]]></category><category><![CDATA[JSON-LD]]></category><category><![CDATA[schema.org]]></category><category><![CDATA[Алиса AI]]></category><category><![CDATA[голосовой поиск]]></category><category><![CDATA[AEO]]></category><category><![CDATA[GEO]]></category><category><![CDATA[structured data]]></category><category><![CDATA[Яндекс.Вебмастер]]></category><category><![CDATA[voice search]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Запись экрана и ссылка на календарь. Как из двух элементарных функций выросли миллиардные Calendly и Loom]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1064378/</guid>
      <link>https://habr.com/ru/articles/1064378/?utm_campaign=1064378&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/248/e76/b81/248e76b817b32d15b3abd6d501e8ea47.jpg" /><p><em>Что лучше: ультрамногофункциональный швейцарский нож или скальпель?</em></p><p>Когда речь заходит о поиске идеи для стартапа, большинство разработчиков рассуждают примерно одинаково. Кажется, что нужно найти свободную нишу, придумать что-то принципиально новое или объединить существующие сервисы в "универсальную платформу". Именно поэтому многие продукты начинают обрастать десятками функций еще до появления первых пользователей.</p><p>Истории Calendly и Loom показывают совершенно другой путь.</p> <a href="https://habr.com/ru/articles/1064378/?utm_campaign=1064378&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 29 Jul 2026 09:24:31 GMT</pubDate>
      <dc:creator><![CDATA[its_capitan]]></dc:creator>
      
      <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[Почему Вайбкод понимает вашу CRM, а внешний GPT — нет]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/bitrix/articles/1063890/</guid>
      <link>https://habr.com/ru/companies/bitrix/articles/1063890/?utm_campaign=1063890&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/a65/350/508/a653505088d82b2589b12dc7897b0195.png" /><p>Создаём одно приложение для портала Битрикс24 двумя способами: через внешний ИИ и через платформу вайб-кодинга Битрикс24 Вайбкод.&nbsp;</p><p>На этом эксперименте покажем, почему платформа быстрее понимает CRM и требует меньше ручной настройки.</p> <a href="https://habr.com/ru/articles/1063890/?utm_campaign=1063890&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 29 Jul 2026 08:02:08 GMT</pubDate>
      <dc:creator><![CDATA[rosliakov_b24 (Битрикс24)]]></dc:creator>
      
      <category><![CDATA[битрикс24]]></category><category><![CDATA[Bitrix24 Вайбкод]]></category><category><![CDATA[вайбкодинг]]></category><category><![CDATA[ии-агенты]]></category><category><![CDATA[crm]]></category><category><![CDATA[ии-ассистированная разработка]]></category><category><![CDATA[кастомизация crm]]></category><category><![CDATA[gpt]]></category><category><![CDATA[rest api]]></category><category><![CDATA[разработка приложений]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как верстали 15 лет назад]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/ruvds/articles/1060630/</guid>
      <link>https://habr.com/ru/companies/ruvds/articles/1060630/?utm_campaign=1060630&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/f6c/611/dd5/f6c611dd5aba3b9c13130672b5283206.png" /><p>Хабр, привет.</p><p>Я сейчас часто обмениваюсь книгами. И так получилось, что мне попалась книга по вёрстке 2004 года. Мне было забавно почитать о техниках, которые были в то время. Я даже вдохновился написать статью. Вот я и здесь.</p><p>Сегодня я расскажу о техниках, которые были пятнадцать лет назад. Я как раз в это время начал работать верстальщиком. Уверен, что большинство из вас их никогда не видели. А старички смахнут скупую слезу и вспомнят время, когда были моложе.</p><p>Давайте посмотрим, что я вам подготовил.</p> <a href="https://habr.com/ru/articles/1060630/?utm_campaign=1060630&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 28 Jul 2026 13:01:42 GMT</pubDate>
      <dc:creator><![CDATA[melnik909 (RUVDS.com)]]></dc:creator>
      
      <category><![CDATA[css]]></category><category><![CDATA[html]]></category><category><![CDATA[вёрстка сайтов]]></category><category><![CDATA[ruvds_статьи]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Широкий вход, узкий выход: Vue 3 внутри jQuery‑формы без бесконечных циклов]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1064008/</guid>
      <link>https://habr.com/ru/articles/1064008/?utm_campaign=1064008&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/807/7da/a53/8077daa53d93d163b1ea1587e2768f09.png" /><p>Добавить на страницу новые функции, не трогая саму страницу, звучит как противоречие. Но альтернативу мы посчитали командой: полное переписывание заняло бы год, в течение которого страница не получила бы ни одной новой функции. Мост между старым кодом и новым занял два месяца, и строил его уже я один. Расскажу, как этот мост устроен, почему получился несимметричным, где чуть не зациклился и что в нём так и осталось кривым.</p> <a href="https://habr.com/ru/articles/1064008/?utm_campaign=1064008&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 28 Jul 2026 12:08:36 GMT</pubDate>
      <dc:creator><![CDATA[k_khachatryan]]></dc:creator>
      
      <category><![CDATA[Vue 3]]></category><category><![CDATA[Symfony]]></category><category><![CDATA[jQuery]]></category><category><![CDATA[legacy]]></category><category><![CDATA[миграция фронтенда]]></category><category><![CDATA[синхронизация состояния]]></category><category><![CDATA[архитектура фронтенда]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Интеграция Asterisk с веб‑интерфейсом и управление звонками через WebSocket: кейс имплементации под ключ]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/gri/articles/1061970/</guid>
      <link>https://habr.com/ru/companies/gri/articles/1061970/?utm_campaign=1061970&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/f73/b64/41d/f73b6441ddb76f25c29e84c04b69c899.png" /><p>Привет! Меня зовут Андрей Нелюбин, я руководитель функции фронтенд-разработки.<br>В рамках проекта для заказчика требовалось доработать сценарий работы колл-центра: связать телефонию на Asterisk с операторским интерфейсом, где рядом со звонком доступны данные клиента, заказы, статусы и действия управления.</p><p>Для этого в 2022 году была реализована собственная прослойка поверх Asterisk: backend на Python/Django, обработка событий через Django Channels, WebSocket для передачи изменений в интерфейс и frontend на Vue. В статье расскажу, как устроили архитектуру решения, как обрабатывали события звонков, зачем понадобился BFF-слой на Django и почему в рабочей конфигурации аудио осталось в SIP-клиенте, а контекст и управление — в операторском интерфейсе</p> <a href="https://habr.com/ru/articles/1061970/?utm_campaign=1061970&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 28 Jul 2026 09:54:28 GMT</pubDate>
      <dc:creator><![CDATA[Kreeg (GRI)]]></dc:creator>
      
      <category><![CDATA[Asterisk rest interface]]></category><category><![CDATA[asterisk]]></category><category><![CDATA[django]]></category><category><![CDATA[django channels]]></category><category><![CDATA[python]]></category><category><![CDATA[websocket]]></category><category><![CDATA[sip]]></category><category><![CDATA[операторский интерфейс]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Внедряем Claude Code нативно в Cursor IDE. Или как 9Router позволяет платить меньше]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1063874/</guid>
      <link>https://habr.com/ru/articles/1063874/?utm_campaign=1063874&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/82b/fdf/30d/82bfdf30df29cd0dae30a707a4c50247.png" /><p>Думаю все, кто начинал использовать claude code, рано или поздно ощущали на себе его недостатки. Не удобно навигироваться по чекпоинтам, не удобно смотреть, какие были внесены изменения, не удобно использовать через CLI. А что если решение есть? Я начал об этом задумываться после того, как настроил свой openclaw, он же используем мою обычную подписку на Claude, почему я не могу использовать ее сам. Тут у многих возникнет вопрос касательно безопасности, кто-то слышал что антропики против подобного использования подписки, но я исхожу из фактов. Я не слышу, чтобы всех повсеместно начали банить за это. Да и в целом если так задуматься, когда мы подключаем наш аккаунт Claude через OAuth к Claude Code, наша цель - написание кода. Так в чем проблема, если мы немного обхитрим систему и внедрим все прямо в Cursor IDE.</p><p>Я долго искал нормальное решение и уже думал сам вайбкодить что-то, но в итоге наткнулся на прекрасный инструмент 9Router. Разработчик не я, так что сразу скажу, что ответственности за его использование и в целом всю описанную схему, я на себя не беру. Я просто обозреваю возможность.</p><p>Так вот, что такое в целом 9Router. Это некий хаб, куда можно подключить десятками провайдеров нейросетей и использовать все через нужный тебе endpoint.</p> <a href="https://habr.com/ru/articles/1063874/?utm_campaign=1063874&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 28 Jul 2026 09:14:23 GMT</pubDate>
      <dc:creator><![CDATA[chuvacode]]></dc:creator>
      
      <category><![CDATA[cursor]]></category><category><![CDATA[claude]]></category><category><![CDATA[claude code]]></category><category><![CDATA[inline diff]]></category><category><![CDATA[вайб-кодинг]]></category><category><![CDATA[вайбкодинг]]></category><category><![CDATA[разработка]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Автоматизируем первую линию диспетчерской службы на примере управляющей компании]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/ru_mts/articles/1063520/</guid>
      <link>https://habr.com/ru/companies/ru_mts/articles/1063520/?utm_campaign=1063520&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/578/e22/2f9/578e222f9fe5973505d34a37378c88ca.png" /><p>Звонки в&nbsp;управляющую компанию различаются по&nbsp;срочности: один жилец хочет узнать про&nbsp;график капитального ремонта, другому нужен электрик&nbsp;— починить освещение на&nbsp;площадке, третий хочет сообщить о&nbsp;затоплении. Но когда все обращения попадают в&nbsp;общую очередь, повседневные вопросы начинают конкурировать со срочными заявками. Это ведет к&nbsp;повторным звонкам, жалобам и долгой реакции на&nbsp;инциденты.</p><p>Диспетчер должен&nbsp;быстро понимать, какую заявку поставить в&nbsp;очередь, а&nbsp;по&nbsp;какой&nbsp;— сразу соединить с&nbsp;аварийной службой. Но&nbsp;при&nbsp;ручной обработке&nbsp;линия может&nbsp;быть занята не&nbsp;срочным обращением, и в&nbsp;итоге аварийная заявка будет обработана с&nbsp;задержкой.</p><p>Привет, Хабр! В&nbsp;этом материале делимся подробным гайдом, как&nbsp;собрать голосового робота и автоматизировать первую&nbsp;линию диспетчерской с&nbsp;помощью сервиса API МТС Exolve. Так срочные звонки будут мгновенно попадать на&nbsp;линию, а&nbsp;несрочные&nbsp;— в&nbsp;очередь для&nbsp;обработки в&nbsp;рабочие часы.&nbsp;</p> <a href="https://habr.com/ru/articles/1063520/?utm_campaign=1063520&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше</a>]]></description>
      
      <pubDate>Tue, 28 Jul 2026 08:11:38 GMT</pubDate>
      <dc:creator><![CDATA[KKK_56 (МТС)]]></dc:creator>
      
      <category><![CDATA[python]]></category><category><![CDATA[flask]]></category><category><![CDATA[sqlite]]></category><category><![CDATA[requests]]></category><category><![CDATA[первая линия подержки]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[OAuth‑сервер, который не хранит пользователей]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1063816/</guid>
      <link>https://habr.com/ru/articles/1063816/?utm_campaign=1063816&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Наш OAuth-сервер не хранит профиль пользователя и практически ничего о нём не знает. Он знает только IdP-личность («вы вошли через Google под таким-то аккаунтом»), а внутренний <code>id</code>, роль и имя живут в продуктовом бэкенде. Сшивают их два кастомных гранта: первый вкладывает в токен подписанный профиль, не зная его содержимого, а второй разменивает основной токен на веер узких производных, по одному на аудиторию. Кроме того, в статье объясняется, почему FedCM может создавать больше проблем, чем решать, и как эти проблемы обходятся с помощью Service Worker. Если вам интересно, как всё это работает в SaaS, прошу под кат.</p> <a href="https://habr.com/ru/articles/1063816/?utm_campaign=1063816&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 28 Jul 2026 07:54:40 GMT</pubDate>
      <dc:creator><![CDATA[klerick]]></dc:creator>
      
      <category><![CDATA[OAuth 2.0]]></category><category><![CDATA[OpenID Connect]]></category><category><![CDATA[JWT]]></category><category><![CDATA[FedCM]]></category><category><![CDATA[Service Worker]]></category><category><![CDATA[token exchange]]></category><category><![CDATA[PKCE]]></category><category><![CDATA[JWKS]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Отпечатки браузера: что это такое и как работает? Переосмысление технологии]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/aurorium/articles/1063794/</guid>
      <link>https://habr.com/ru/companies/aurorium/articles/1063794/?utm_campaign=1063794&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/947/f08/f2e/947f08f2e1d7d2b58296ecd1cd7826d3.jpg" /><p>В&nbsp;последнее время из&nbsp;каждого утюга можно услышать такую фразу&nbsp;— «отпечатки браузера», «цифровой отпечаток устройства», «фингерпринт». Все эти фразы описывают одну и ту&nbsp;же характеристику, которая влияет на&nbsp;нашу с&nbsp;вами уникальность в&nbsp;сети интернет.&nbsp;</p><p>Отпечаток браузера не&nbsp;возник недавно&nbsp;— о&nbsp;нем знали уже тогда, когда мессенджеры еще не&nbsp;ловили на&nbsp;парковке, а&nbsp;сахар&nbsp;был слаще, трава зеленее и вода мокрее. В&nbsp;далеком 2020&nbsp;году&nbsp;были робкие попытки препарировать это понятие и рассказать окружающим, как&nbsp;там все устроено.&nbsp;</p><p>Много воды с&nbsp;тех пор утекло, как&nbsp;и много нового добавилось в&nbsp;понятие «отпечаток устройства». Ну а&nbsp;где, как&nbsp;не&nbsp;в&nbsp;блоге антидетект‑браузера, разобрать, что&nbsp;такое фингерпринт, почему он важен для&nbsp;цифровой гигиены и куда движется антифрод в&nbsp;вопросах отслеживания нас с&nbsp;вами в&nbsp;сети? Давайте разбираться!</p> <a href="https://habr.com/ru/articles/1063794/?utm_campaign=1063794&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать про отпечаток браузера</a>]]></description>
      
      <pubDate>Tue, 28 Jul 2026 07:15:16 GMT</pubDate>
      <dc:creator><![CDATA[aurorium_browser (Антидетект-браузер Aurorium)]]></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[canvas]]></category><category><![CDATA[webgl]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Модель исполнения JavaScript по спецификации ECMAScript: call stack, контексты, окружения и замыкания]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1063168/</guid>
      <link>https://habr.com/ru/articles/1063168/?utm_campaign=1063168&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/19d/de1/bce/19dde1bce6fa4458da845b4e3ea38b8f.png" /><p>Я довольно долго был уверен, что понимаю, как работает call stack.</p><p>Ну а что там понимать? Положил кадр, снял кадр, LIFO.</p><p>Потом открыл спецификацию. Оказалось, за «стеком вызовов» стоит каркас из пяти сущностей, а половина привычных объяснений просто не совпадает с текстом стандарта.</p><p>Замыкание — не фича языка, а побочный эффект того, что окружение живёт отдельно от кадра. «Область видимости» — вообще не сущность: такого термина там нет. А слов event loop, microtask и task queue в ECMA-262 ровно ноль. Проверяется грепом за минуту.</p><p>Разбираю модель исполнения по первоисточнику: агент, контекст, окружения, джобы. Каждое утверждение сверено с текстом стандарта, номера параграфов проставлены — можно перепроверять за мной.</p> <a href="https://habr.com/ru/articles/1063168/?utm_campaign=1063168&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Разобрать по спецификации</a>]]></description>
      
      <pubDate>Tue, 28 Jul 2026 06:00:24 GMT</pubDate>
      <dc:creator><![CDATA[nkolmykov]]></dc:creator>
      
      <category><![CDATA[JavaScript]]></category><category><![CDATA[ECMAScript]]></category><category><![CDATA[execution context]]></category><category><![CDATA[контекст выполнения]]></category><category><![CDATA[замыкания]]></category><category><![CDATA[область видимости]]></category><category><![CDATA[ECMA-262]]></category><category><![CDATA[call stack]]></category><category><![CDATA[event loop]]></category><category><![CDATA[лексическое окружение]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Книга аутентификации]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1063760/</guid>
      <link>https://habr.com/ru/articles/1063760/?utm_campaign=1063760&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/2e9/71e/b38/2e971eb38a1c283c24af8c59e3c16c03.png" /><p>Это моя личная книга по аутентификации. Она представляет собой сборник руководств, рекомендаций и примеров по внедрению аутентификации в веб-приложениях, основанный на моем личном опыте. Книга совершенно бесплатна и не содержит рекламы. Надеюсь, она будет полезна всем, кто хочет узнать больше об аутентификации, безопасности и веб-технологиях в целом.</p><p>Как следует из названия, эта книга в значительной степени посвящена системе аутентификации и авторизации для веб-приложений. Более общие вопросы безопасности см. в серии <a href="https://cheatsheetseries.owasp.org/index.html" rel="noopener noreferrer nofollow">“Шпаргалки OWASP”</a> .</p><p>Если у вас возникнут какие-либо вопросы, не стесняйтесь задавать их на <a href="https://discord.gg/zZqCfVUMnX" rel="noopener noreferrer nofollow">сервере Discord</a> или в <a href="https://github.com/pilcrowonpaper/auth.pilcrowonpaper.com/discussions" rel="noopener noreferrer nofollow">обсуждениях на GitHub</a>.</p><p>Разработано и поддерживается <a href="https://pilcrowonpaper.com/" rel="noopener noreferrer nofollow">Pilcrow</a>. Исходный код доступен на <a href="https://github.com/pilcrowonpaper/auth.pilcrowonpaper.com" rel="noopener noreferrer nofollow">GitHub</a>.</p> <a href="https://habr.com/ru/articles/1063760/?utm_campaign=1063760&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 28 Jul 2026 05:54:32 GMT</pubDate>
      <dc:creator><![CDATA[aio350]]></dc:creator>
      
      <category>javascript</category><category>js</category><category>go</category><category>golang</category><category>auth</category><category>authentication</category><category>authorization</category><category>passkey</category><category>basic auth</category><category>аутентификация</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Excel в HTML: сервер для публикации Excel‑отчётов]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1063668/</guid>
      <link>https://habr.com/ru/articles/1063668/?utm_campaign=1063668&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/4ab/d0d/489/4abd0d48967aa7d9d10559215606ac0a.jpg" /><p>Excel удобен не&nbsp;только тем, что&nbsp;показывает данные. В&nbsp;нём можно самостоятельно менять формулы, добавлять расчёты, перестраивать таблицы, фильтровать строки и проверять гипотезы. Поэтому, несмотря на&nbsp;большое количество специализированных систем, Excel продолжают использовать практически везде.</p><p>Когда я работал в&nbsp;крупном банке, среди руководителей периодически возникала идея запретить Excel. Предполагалось, что&nbsp;сотрудники должны работать только в&nbsp;корпоративных и специализированных приложениях.</p><p>Но&nbsp;сотрудники всё равно продолжали пользоваться Excel.</p><p>Причина довольно простая: корпоративные системы хорошо решают заранее предусмотренные задачи, а&nbsp;Excel позволяет&nbsp;быстро сделать то, чего в&nbsp;них нет. Построить дополнительный расчёт, проверить данные, объединить несколько выгрузок или&nbsp;посмотреть на&nbsp;показатель под&nbsp;другим углом.</p><p>При&nbsp;этом у&nbsp;Excel есть проблема, которая особенно заметна в&nbsp;момент, когда результат работы нужно показать другим людям.</p> <a href="https://habr.com/ru/articles/1063668/?utm_campaign=1063668&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 28 Jul 2026 04:26:27 GMT</pubDate>
      <dc:creator><![CDATA[alex_29]]></dc:creator>
      
      <category><![CDATA[конвертация Excel в HTML]]></category><category><![CDATA[публикация отчётов]]></category><category><![CDATA[Excel]]></category><category><![CDATA[XLSX]]></category><category><![CDATA[HTML]]></category><category><![CDATA[Python]]></category><category><![CDATA[веб-сервер]]></category><category><![CDATA[сводные таблицы]]></category><category><![CDATA[диаграммы]]></category><category><![CDATA[javascript]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Click to Pray: один if — и ты ошибся]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1063726/</guid>
      <link>https://habr.com/ru/articles/1063726/?utm_campaign=1063726&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/6ed/47b/cba/6ed47bcba56520de619a421dcf29be9f.jpg" /><p><em>Интернет приписывает Джейсону Стейтему фразу «Одна ошибка&nbsp;— и ты ошибся!». В&nbsp;случае этой истории она почему‑то сама собой переиначилась в&nbsp;вариант из&nbsp;заголовка. Уж очень всё оказалось из&nbsp;серии «никогда так не&nbsp;делай».</em></p><p>24&nbsp;июля исследователь <a href="https://bobdahacker.com/blog/click-to-pray" rel="noopener noreferrer nofollow">BobDaHacker</a> опубликовал разбор <a href="https://clicktopray.org/" rel="noopener noreferrer nofollow">Click to Pray</a>&nbsp;— официального приложения Всемирной сети молитвы Папы Римского.</p><p>В&nbsp;сервисе на&nbsp;тот момент&nbsp;было 719 517&nbsp;зарегистрированных аккаунтов. У&nbsp;пользователей&nbsp;были последовательные числовые ID, а&nbsp;API позволяло запросить профиль по&nbsp;ID:</p> <a href="https://habr.com/ru/articles/1063726/?utm_campaign=1063726&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 27 Jul 2026 21:59:32 GMT</pubDate>
      <dc:creator><![CDATA[achekalin]]></dc:creator>
      
      <category><![CDATA[нарочно не придумаешь]]></category><category><![CDATA[отправил и веруй]]></category><category><![CDATA[IDOR]]></category><category><![CDATA[BOLA]]></category><category><![CDATA[responsible disclosure]]></category><category><![CDATA[API security]]></category><category><![CDATA[Click to Pray]]></category><category><![CDATA[утечка персональных данных]]></category><category><![CDATA[Ватикан]]></category><category><![CDATA[одна ошибка - и ты ошибся]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Атомарность в реактивных системах]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1063664/</guid>
      <link>https://habr.com/ru/articles/1063664/?utm_campaign=1063664&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/28e/6a0/1e4/28e6a01e45ea52690cee222df6a2c03c.png" /><p>Ранее мы говорили о <a href="https://habr.com/ru/articles/1048968/" rel="noopener noreferrer nofollow">чрезвычайных ситуациях при&nbsp;вычислении инвариантов</a>. Однако они также могут возникать и во&nbsp;время одновременных изменений нескольких исходных состояний. Давайте посмотрим, какие тут есть варианты поведения..</p> <a href="https://habr.com/ru/articles/1063664/?utm_campaign=1063664&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать транзакцию</a>]]></description>
      
      <pubDate>Mon, 27 Jul 2026 15:45:07 GMT</pubDate>
      <dc:creator><![CDATA[nin-jin]]></dc:creator>
      
      <category>атомарность</category><category>транзакции</category><category>реактивное программирование</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[SEO‑поиск в Next.js App Router, индексируемые landing pages из фильтров и URL]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1063570/</guid>
      <link>https://habr.com/ru/articles/1063570/?utm_campaign=1063570&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/d71/f87/62c/d71f8762c3666e05784daf1232412654.png" /><p>Поиск в&nbsp;Next.js App Router связывает несколько механизмов&nbsp;— Server Components, dynamic routes, <code>searchParams</code>, metadata и клиентские фильтры. Если в&nbsp;проекте одна форма и несколько результатов, состояние можно держать в <code>useState</code>. В&nbsp;каталоге или&nbsp;агрегаторе каждый фильтр меняет URL, набор данных и правила индексации.</p><p>В&nbsp;статье на&nbsp;примере учебного проекта <a href="https://eventmap-seo.vercel.app/en" rel="noopener noreferrer nofollow">EventMap</a>&nbsp;—&nbsp;агрегатора событий,<strong>&nbsp;</strong>разберем, как&nbsp;спроектировать систему фильтрации, которая генерирует чистые, индексируемые URL для&nbsp;поисковых роботов и обновляет выдачу при&nbsp;изменении фильтров. Страницы вроде «Концерты в&nbsp;Москве» или «Выставки в&nbsp;Петербурге» могут работать как&nbsp;отдельные landing pages. Для&nbsp;них нужны серверный HTML, постоянный URL, свой <code>title</code>, <code>description</code>, <code>h1</code>, canonical и отдельная политика <code>index</code> или <code>noindex</code>. Произвольные запросы, сортировки и глубокая пагинация остаются частью поиска и не&nbsp;попадают автоматически в&nbsp;индекс. Поиск построен через App Router, optional catch‑all route, серверный рендер результатов и общий набор функций для&nbsp;URL, metadata, canonical и sitemap.</p><p>Поиск по&nbsp;каталогу создаёт отдельное состояние для&nbsp;каждой комбинации фильтров. Категория, город, дата, сортировка, поисковая строка и номер страницы попадают в&nbsp;URL. При&nbsp;десяти категориях, пятидесяти городах и пяти вариантах сортировки получается 2500&nbsp;комбинаций без&nbsp;учёта пагинации и свободного текста. Интерфейс должен обработать все допустимые комбинации. В&nbsp;поисковый индекс обычно попадает только часть из&nbsp;них. Страница категории <code>music</code>, страница города <code>london</code> и сочетание <code>music/london</code> могут содержать устойчивую подборку. Запрос <code>?q=free+jazz+tonight</code>, сортировка по&nbsp;цене и восьмая страница выдачи относятся к&nbsp;текущему действию пользователя. Фильтры без&nbsp;отдельной политики создают большое пространство URL. Google описывает эту проблему в&nbsp;документации по&nbsp;faceted navigation. Изменение каждого параметра создаёт новый адрес, краулер тратит запросы на&nbsp;многочисленные комбинации и позже обнаруживает, что&nbsp;многие из&nbsp;них не&nbsp;содержат самостоятельного материала. (<a href="https://developers.google.com/search/docs/crawling-indexing/crawling-managing-faceted-navigation" rel="noopener noreferrer nofollow">Google for Developers</a>)</p> <a href="https://habr.com/ru/articles/1063570/?utm_campaign=1063570&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 27 Jul 2026 13:06:22 GMT</pubDate>
      <dc:creator><![CDATA[lemon_m]]></dc:creator>
      
      <category><![CDATA[nextjs]]></category><category><![CDATA[seo]]></category><category><![CDATA[typescript]]></category><category><![CDATA[react]]></category><category><![CDATA[javascript]]></category><category><![CDATA[app router]]></category><category><![CDATA[server components]]></category><category><![CDATA[canonical]]></category><category><![CDATA[sitemap]]></category><category><![CDATA[noindex]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Армия в терминале]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1063558/</guid>
      <link>https://habr.com/ru/articles/1063558/?utm_campaign=1063558&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/50b/977/8f4/50b9778f41c07bad265a3704c30f5265.jpg" /><p><strong>Как coding agents превратили разработчика в диспетчера машин — и запустили гонку оркестраторов, песочниц и ИИ‑фабрик.</strong></p><p>Ещё недавно программист открывал один терминал и разговаривал с&nbsp;одним агентом. Затем терминалов стало пять, веток&nbsp;— семь, а&nbsp;главным дефицитом оказался уже не&nbsp;код, а&nbsp;человеческое внимание.</p> <a href="https://habr.com/ru/articles/1063558/?utm_campaign=1063558&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 27 Jul 2026 12:57:53 GMT</pubDate>
      <dc:creator><![CDATA[ratnik]]></dc:creator>
      
      <category><![CDATA[coding agents]]></category><category><![CDATA[AI-агенты]]></category><category><![CDATA[Claude Code]]></category><category><![CDATA[git worktree]]></category><category><![CDATA[tmux]]></category><category><![CDATA[оркестрация агентов]]></category><category><![CDATA[мультиагентные системы]]></category><category><![CDATA[песочницы]]></category><category><![CDATA[microVM]]></category><category><![CDATA[Model Context Protocol]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Платформа плагинов в Трекере, или Как мы пустили сторонний код в продукт с 600 000 пользователей]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/yandex/articles/1062416/</guid>
      <link>https://habr.com/ru/companies/yandex/articles/1062416/?utm_campaign=1062416&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/43f/367/000/43f3670007043f83f697636263e60169.png" /><p>За&nbsp;последние годы аудитория Трекера выросла до 600 000&nbsp;пользователей&nbsp;— пропорционально выросло и количество запросов на&nbsp;новые функции. Бэклог разросся до&nbsp;уровня ответов «внесли в&nbsp;список, но&nbsp;обещать ничего не&nbsp;можем». При&nbsp;этом рынок трекеров очень конкурентный, и останавливать развитие core‑продукта ради разбора кастомных запросов нельзя.</p><p>В&nbsp;какой‑то момент мы пришли к&nbsp;выводу: сколько&nbsp;бы ни увеличивали команду разработки, запросов от&nbsp;пользователей всегда будет больше. Это не&nbsp;проблема планирования, а&nbsp;скорее структурное свойство зрелого продукта с&nbsp;большой аудиторией. Единственный способ масштабироваться в&nbsp;этой точке&nbsp;—&nbsp;не&nbsp;делать всё своими руками.&nbsp;</p><p>Сегодня мы запустили <a href="https://tracker.yandex.ru/pages/plugins-catalog">платформу плагинов</a>&nbsp;—&nbsp;отдельный механизм, который позволяет без&nbsp;навыков кодинга расширять Трекер собственными модулями под&nbsp;специфические задачи.</p><p>Привет, Хабр! Меня зовут&nbsp;Женя Успенский, я руковожу разработкой фронтенда в&nbsp;Яндекс Трекере и отвечаю за&nbsp;архитектуру платформы плагинов. Со статьёй мне помогал мой коллега Дима Куприк, который отвечает за&nbsp;весь проект целиком. Он расскажет, почему мы вообще решили дать возможность пользователям самим модифицировать Трекер, как&nbsp;плагины помогают решать специфические задачи команд и какие сценарии мы автоматизировали первыми.&nbsp;</p><p>В&nbsp;технической части я подробно разберу, какие задачи перед нами стояли и как&nbsp;мы их решили: изоляция стороннего кода, разрешения, proxy для&nbsp;внешних API и всё, что&nbsp;позволяет пускать чужой код в&nbsp;B2B‑продукт и спать спокойно.</p> <a href="https://habr.com/ru/articles/1062416/?utm_campaign=1062416&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 27 Jul 2026 10:00:05 GMT</pubDate>
      <dc:creator><![CDATA[BuranLcme (Яндекс)]]></dc:creator>
      
      <category><![CDATA[яндекс]]></category><category><![CDATA[трекер]]></category><category><![CDATA[плагины]]></category><category><![CDATA[яндекс трекер]]></category><category><![CDATA[typescript]]></category><category><![CDATA[developer experience]]></category><category><![CDATA[yandex tracker]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[По обе стороны антибота: как я имитирую Chrome при скрейпинге и ловлю ботов по тем же сигналам]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1063180/</guid>
      <link>https://habr.com/ru/articles/1063180/?utm_campaign=1063180&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/eea/d65/81e/eead6581e2073661d3318ef4c1492ae2.png" /><p>Я собираю афишу города в одну карту из пяти источников. Два из них — Яндекс.Афиша и afisha.ru — собирать себя не хотят. И режут не так, как ждешь: ни логина, ни капчи на входе, ни «подтвердите, что вы не робот». Мой <code>requests.get(...)</code> ловит <strong>403 — даже когда заголовки скопированы из Chrome один в один</strong>.</p><p>Первая мысль была дурацкая: где-то не хватает куки или очередного <code>sec-ch-ua</code>. Оказалось — проблема раньше. К тому моменту, когда сервер читает мой браузерный <code>User-Agent</code>, он уже успел посмотреть, <strong>как именно клиент открыл защищенное соединение</strong>. Питоновский клиент палится ровно тем, как он здоровается.</p> <a href="https://habr.com/ru/articles/1063180/?utm_campaign=1063180&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 27 Jul 2026 08:00:51 GMT</pubDate>
      <dc:creator><![CDATA[sayasufi]]></dc:creator>
      
      <category><![CDATA[TLS fingerprint]]></category><category><![CDATA[JA3]]></category><category><![CDATA[JA4]]></category><category><![CDATA[curl_cffi]]></category><category><![CDATA[антибот]]></category><category><![CDATA[парсинг]]></category><category><![CDATA[BoringSSL]]></category><category><![CDATA[fraud score]]></category><category><![CDATA[bot detection]]></category><category><![CDATA[http2]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[AI-краулеры в 2026: кого пускать в robots.txt, чтобы попадать в ответы ИИ]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1063216/</guid>
      <link>https://habr.com/ru/articles/1063216/?utm_campaign=1063216&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/bff/30b/697/bff30b697f2121a83d2995c0f3818317.jpg" /><p>Полгода назад ко мне постучался один из будущих клиентов с вопросом, почему ChatGPT не знает про его компанию, хотя сайт в топ-3 Google по нужному запросу. Индексация была нормальной, ссылки — тоже. Проблема нашлась за пять минут в логах: в robots.txt висел <code>Disallow: /</code> для всех user-agent, кроме Googlebot и YandexBot. GPTBot, ClaudeBot, PerplexityBot получали 403 ещё на первом запросе. Полгода сайт был невидим для трёх из четырёх крупных AI-поисковиков, и никто об этом не знал — в Search Console и Вебмастере всё выглядело зелёным.</p><p>Случай типовой. Проверка индексации показывает, видит ли сайт поисковик. Попадёт ли страница в ответ модели, которая формирует его вместо поисковой выдачи, — вопрос отдельный. Это две разные аудитории ботов, и вторая почти никогда не попадает в стандартный SEO-чеклист.</p> <a href="https://habr.com/ru/articles/1063216/?utm_campaign=1063216&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 26 Jul 2026 20:33:09 GMT</pubDate>
      <dc:creator><![CDATA[ig_novvv]]></dc:creator>
      
      <category><![CDATA[AI-краулеры]]></category><category><![CDATA[robots.txt]]></category><category><![CDATA[GPTBot]]></category><category><![CDATA[AEO]]></category><category><![CDATA[GEO]]></category><category><![CDATA[AI-видимость]]></category><category><![CDATA[нейросети]]></category><category><![CDATA[AIO]]></category><category><![CDATA[YandexBot]]></category><category><![CDATA[яндекс.вебмастер]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Симулятор дальтонизма для сайта, Figma и Chrome: как девять чисел из статьи 2009 года разошлись по четырём инструментам]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1062846/</guid>
      <link>https://habr.com/ru/articles/1062846/?utm_campaign=1062846&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/3ff/140/f56/3ff140f56f99ddfee74c042063119fd1.png" /><p>Девять чисел из научной статьи 2009 года сегодня работают у меня в четырёх местах: на HTML-странице, в canvas, в двух плагинах Figma и в чужом расширении для Chrome. Разбираю, как одна и та же матрица цветовосприятия ведёт себя в четырёх средах, где каждая среда сопротивляется по-своему — и почему честные ограничения инструмента важнее его возможностей.</p> <a href="https://habr.com/ru/articles/1062846/?utm_campaign=1062846&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sat, 25 Jul 2026 06:00:36 GMT</pubDate>
      <dc:creator><![CDATA[Kikodoc]]></dc:creator>
      
      <category><![CDATA[доступность]]></category><category><![CDATA[дальтонизм]]></category><category><![CDATA[figma]]></category><category><![CDATA[chrome]]></category><category><![CDATA[плагины]]></category><category><![CDATA[инклюзивный дизайн]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Один файл, одна команда: как мы упростили запуск dev-окружения с помощью Runium]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/kaspersky/articles/1062424/</guid>
      <link>https://habr.com/ru/companies/kaspersky/articles/1062424/?utm_campaign=1062424&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/b97/bac/8ea/b97bac8ea6a05ae7d3d0c57db233f8b1.jpg" /><p>Локальный запуск dev-окружения в крупном проекте может превратиться в отдельный квест: несколько процессов, Docker-контейнеры, переменные окружения, порядок старта, ожидание готовности сервисов и отличия между ОС. Даже если у вас есть подобный опыт, это может быть неудобно, долго и утомительно. Новичку же обычно не обойтись без длинной подробной инструкции.</p><p>Привет, Хабр! На связи Сергей Зверьков, старший разработчик в «Лаборатории Касперского». Хочу рассказать, как мы решили эту проблему, написав собственный open-source-инструмент — Runium. Суть его в том, что он позволяет описать dev-окружение в JSON-файле. После этого проект можно запускать, останавливать и проверять одной командой.</p><p>В статье расскажу, из какой боли вырос Runium, как он устроен, сравню его с другими решениями и покажу пример использования на простом веб-проекте. Приступим!</p> <a href="https://habr.com/ru/articles/1062424/?utm_campaign=1062424&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 24 Jul 2026 14:18:59 GMT</pubDate>
      <dc:creator><![CDATA[thebeastapp («Лаборатория Касперского»)]]></dc:creator>
      
      <category><![CDATA[запуск]]></category><category><![CDATA[Runium]]></category><category><![CDATA[лаборатория касперского]]></category><category><![CDATA[json]]></category><category><![CDATA[docker]]></category><category><![CDATA[javascript]]></category><category><![CDATA[node.js]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] То, что только что произошло с TheNumbers.com, должно нас всех обеспокоить]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1062474/</guid>
      <link>https://habr.com/ru/articles/1062474/?utm_campaign=1062474&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/309/839/6f9/3098396f96ca81c7984a09dec44dfd0c.JPG" /><p>Подробности о том, как один из самых авторитетных сайтов по анализу киноданных исчез за одну ночь, и почему любой веб-сайт, на который вы полагаетесь, более уязвим, чем вы думаете.</p> <a href="https://habr.com/ru/articles/1062474/?utm_campaign=1062474&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 24 Jul 2026 14:18:37 GMT</pubDate>
      <dc:creator><![CDATA[maybe_elf]]></dc:creator>
      
      <category>веб-сайты</category><category>веб-скрейпинг</category><category>боты</category><category>искусственный интеллект</category><category>кинематограф</category><category>статистика</category><category>polymarket</category><category>атаки</category><category>хакеры</category><category>восстановление данных</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[AI‑тренер по CS2 на DeepSeek: где LLM выдумывает и почему семь недель стоили $1,45]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1062718/</guid>
      <link>https://habr.com/ru/articles/1062718/?utm_campaign=1062718&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/311/395/284/311395284ef02ad1ad7a7e7c9a6ea2ef.png" /><p>Всем привет. Я много лет играю в Counter-Strike и тренируюсь, как большинство: захожу в Deathmatch «размяться», играю три катки, тильтую, выхожу. Сервисы статистики при этом исправно сообщают, что у меня просела точность и выросло время реакции. Спасибо, а делать-то что?</p><p>Весной я решил собрать себе тренера сам. Сразу пара слов для контекста: я самоучка, в команде никогда не работал, основной опыт — десктопные утилиты и автоматизация, из веба до этого были только админки под собственные инструменты. В CS тоже звёзд с неба не хватаю, Premier в районе трёх тысяч, на FACEIT вообще первый уровень. Так что история будет не про успешный успех, а про то, где я наступил на грабли и что из этого вынес.</p><p>Сам сайт делает вот что: подтягивает историю матчей, отдаёт агрегированную статистику LLM, а та разбирает сильные и слабые места и составляет недельный план тренировок, с конкретными картами, режимами и минутами. Отметил выполненное, сыграл новые матчи — план подстроился.</p><p>Проект мой, ссылка будет одна и в конце. Статья состоит из трёх частей: сколько это всё стоит в токенах, где модель выдумывает и как я это ловлю кодом, ну и подводные камни DeepSeek API и связки EF Core + SQLite.</p> <a href="https://habr.com/ru/articles/1062718/?utm_campaign=1062718&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 24 Jul 2026 12:44:56 GMT</pubDate>
      <dc:creator><![CDATA[Cherep111]]></dc:creator>
      
      <category><![CDATA[LLM]]></category><category><![CDATA[DeepSeek]]></category><category><![CDATA[галлюцинации]]></category><category><![CDATA[пет-проект]]></category><category><![CDATA[ASP.NET Core]]></category><category><![CDATA[SQLite]]></category><category><![CDATA[Entity Framework]]></category><category><![CDATA[Counter-Strike 2]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Один поток, а всё успевает: как работает цикл событий в JavaScript]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/otus/articles/1062056/</guid>
      <link>https://habr.com/ru/companies/otus/articles/1062056/?utm_campaign=1062056&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/210/908/33f/21090833f3787bdef66897718bac67e9.png" /><p><code>Promise</code>, <code>setTimeout</code> и <code>async/await</code> часто работают совсем не в том порядке, которого ждёшь по коду, а тяжёлая синхронная функция способна заморозить весь интерфейс. Разберём модель цикла событий, которая объясняет эти эффекты и помогает понимать, где возникают блокировки, гонки запросов и лишние задержки.  </p> <a href="https://habr.com/ru/articles/1062056/?utm_campaign=1062056&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 24 Jul 2026 11:30:25 GMT</pubDate>
      <dc:creator><![CDATA[badcasedaily1 (OTUS)]]></dc:creator>
      
      <category><![CDATA[цикл событий]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[асинхронность]]></category><category><![CDATA[стек вызовов]]></category><category><![CDATA[микрозадачи]]></category><category><![CDATA[макрозадачи]]></category><category><![CDATA[промисы]]></category><category><![CDATA[setTimeout]]></category><category><![CDATA[Web Workers.]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Почему сайт невидим для роботов: проблемы вайб-кодинга]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1062668/</guid>
      <link>https://habr.com/ru/articles/1062668/?utm_campaign=1062668&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/6ae/06b/8ed/6ae06b8edd3cd36af9eae90f51a82eb9.webp" /><p>Вайб-кодинг уронил порог входа до&nbsp;плинтуса: Lovable, Bolt или v0&nbsp;соберут лендинг за&nbsp;вечер. А&nbsp;потом сайт неделями болтается на&nbsp;дне выдачи, и&nbsp;даже ChatGPT про него не&nbsp;знает. Спрашиваешь у&nbsp;нейронки, почему SEO хромает,&nbsp;— она валит на&nbsp;«непродающие тексты». Причина обычно глубже: для поисковых роботов ваш сайт буквально пустая страница.</p><p>Внутри: почему нейронки по&nbsp;умолчанию лепят SPA, как на&nbsp;JavaScript смотрят Google и&nbsp;Яндекс, почему GPTBot и&nbsp;ClaudeBot скачивают ваши скрипты, но&nbsp;никогда их&nbsp;не&nbsp;запускают, работает&nbsp;ли llms. txt и&nbsp;какая одна строчка в&nbsp;промпте все чинит.</p> <a href="https://habr.com/ru/articles/1062668/?utm_campaign=1062668&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 24 Jul 2026 11:10:14 GMT</pubDate>
      <dc:creator><![CDATA[komel]]></dc:creator>
      
      <category><![CDATA[вайбкодинг]]></category><category><![CDATA[spa]]></category><category><![CDATA[ssr]]></category><category><![CDATA[frontend]]></category><category><![CDATA[react]]></category><category><![CDATA[next]]></category><category><![CDATA[seo]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как исследования пользователей помогают создавать инновационные сервисы]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1062620/</guid>
      <link>https://habr.com/ru/articles/1062620/?utm_campaign=1062620&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/72b/da7/3f0/72bda73f0c299de27fc5dbb16852794e.png" /><p>Мы с коллегами исследуем не только интерфейсы, но и <strong>людей, которые ими пользуются</strong>: их задачи, привычки, ограничения и способы принимать решения.</p><p>Особенно интересно работать с продуктами, которых еще нет на рынке. В таких проектах нельзя просто спросить пользователей, какой сервис им нужен. Человеку сложно представить решение, которого он никогда не видел.</p><p>В этой статье я хочу рассказать, как мы помогаем компаниям создавать инновационные сервисы и снижать риски при запуске, сочетая глубинные интервью с анализом прямых и косвенных конкурентов.</p> <a href="https://habr.com/ru/articles/1062620/?utm_campaign=1062620&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 24 Jul 2026 10:04:16 GMT</pubDate>
      <dc:creator><![CDATA[Markswebb]]></dc:creator>
      
      <category><![CDATA[ux]]></category><category><![CDATA[исследование пользователей]]></category><category><![CDATA[исследования в it]]></category><category><![CDATA[проектирование интерфейсов]]></category><category><![CDATA[тренды]]></category><category><![CDATA[markswebb]]></category><category><![CDATA[интерфейсы]]></category><category><![CDATA[интерфейсы и юзабилити]]></category><category><![CDATA[юзабилити]]></category><category><![CDATA[инновации]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Docker Fundamentals: что внутри compose.yaml и как там всё устроено]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/ruvds/articles/1052844/</guid>
      <link>https://habr.com/ru/companies/ruvds/articles/1052844/?utm_campaign=1052844&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/5bb/a0a/283/5bba0a283b7bb0cdf0db63b78f07a14c.jpg" /><p>В прошлой части я разобрал хранилища — тома, bind mount, tmpfs. В третьей части (в этой) планировалось добраться до сети. До неё дойдём, но прежде чем разбирать, как сервисы общаются друг с другом, стоит на секунду остановиться и разобрать сам файл, в котором мы всё это описываем. Потому что compose.yaml — это спецификация со своими top-level разделами, правилами слияния, подстановкой переменных и кучей мелких нюансов, которые легко упустить, если читать документацию по верхам.</p><p>Эта часть, по сути, большой справочник по структуре Compose-файла: держите статью под рукой и возвращайтесь к ней, когда понадобится конкретный атрибут.</p> <a href="https://habr.com/ru/articles/1052844/?utm_campaign=1052844&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 24 Jul 2026 09:01:13 GMT</pubDate>
      <dc:creator><![CDATA[opensophy (RUVDS.com)]]></dc:creator>
      
      <category><![CDATA[docker-compose]]></category><category><![CDATA[docker]]></category><category><![CDATA[docker compose]]></category><category><![CDATA[dockerhub]]></category><category><![CDATA[docker hub]]></category><category><![CDATA[ruvds_статьи]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Карточки из музыкальной студии 1975 года против продуктовых тупиков]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1062028/</guid>
      <link>https://habr.com/ru/articles/1062028/?utm_campaign=1062028&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/46e/5bf/727/46e5bf727d0618806f63c05ecbfa817b.jpg" /><p>Есть задачи, которые вроде бы не выглядят тупиком.</p><p>Всё уже обсудили, аргументы есть — а решение почему-то снова переезжает на следующую неделю.</p><p>Я решил проверить, может ли в такой момент помочь принцип из музыкальной студии 1975 года: слегка нарушить привычный ход разговора.</p> <a href="https://habr.com/ru/articles/1062028/?utm_campaign=1062028&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 24 Jul 2026 06:13:48 GMT</pubDate>
      <dc:creator><![CDATA[Mikser_777]]></dc:creator>
      
      <category><![CDATA[product management]]></category><category><![CDATA[искусственный интеллект]]></category><category><![CDATA[deepseek]]></category><category><![CDATA[next.js]]></category><category><![CDATA[llm]]></category><category><![CDATA[embeddings]]></category><category><![CDATA[sqlite]]></category><category><![CDATA[ux]]></category><category><![CDATA[product design]]></category><category><![CDATA[product discovery]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Ленивая загрузка — не лекарство: почему ваш main.js всё равно весит 2 МБ]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/otus/articles/1059536/</guid>
      <link>https://habr.com/ru/companies/otus/articles/1059536/?utm_campaign=1059536&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/386/87f/ad1/38687fad13cc47451ca936b13dcf0da0.png" /><p>Вы разбили Angular‑приложение на&nbsp;ленивые модули, включили production‑сборку и всё равно получили main.js весом почти 2&nbsp;МБ. Причина часто скрывается в&nbsp;общих модулях, тяжёлых зависимостях и импортах, которые мешают tree‑shaking. </p><p>В&nbsp;статье разберём, как&nbsp;найти&nbsp;лишний код в&nbsp;бандле и действительно сократить время загрузки приложения. </p> <a href="https://habr.com/ru/articles/1059536/?utm_campaign=1059536&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 23 Jul 2026 19:15:06 GMT</pubDate>
      <dc:creator><![CDATA[Andrey_Biryukov (OTUS)]]></dc:creator>
      
      <category><![CDATA[Angular]]></category><category><![CDATA[ленивая загрузка]]></category><category><![CDATA[оптимизация бандла]]></category><category><![CDATA[main.js]]></category><category><![CDATA[tree-shaking]]></category><category><![CDATA[Ivy]]></category><category><![CDATA[webpack-bundle-analyzer]]></category><category><![CDATA[Angular Material]]></category><category><![CDATA[динамический импорт]]></category><category><![CDATA[производительность фронтенда]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как искать проблемы производительности в Python]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/tochka/articles/1062090/</guid>
      <link>https://habr.com/ru/companies/tochka/articles/1062090/?utm_campaign=1062090&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/0a7/6cb/51e/0a76cb51e480585a1ca1ee682653ab57.png" /><p>У&nbsp;каждого&nbsp;бывают ситуации, когда сервис в&nbsp;проде начинает тормозить. Клиенты жалуются, дашборды пестрят красными графиками, а&nbsp;перед глазами открывается бездна метрик, логов и трейсов. В&nbsp;этот момент возникает непреодолимое&nbsp;желание открыть профайлер и начать оптимизировать наугад. И это главная ошибка.</p><p>Меня зовут Юра Ашуров, я тимлид в&nbsp;Точка Банк. В&nbsp;статье расскажу, почему не&nbsp;стоит начинать расследование с&nbsp;профайлера и какие метрики помогают сузить область поиска. Всё это&nbsp;— на&nbsp;примере двух реальных кейсов с&nbsp;высоконагруженными проектами.</p> <a href="https://habr.com/ru/articles/1062090/?utm_campaign=1062090&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 23 Jul 2026 13:15:09 GMT</pubDate>
      <dc:creator><![CDATA[iness0 (Точка Банк)]]></dc:creator>
      
      <category><![CDATA[бэкенд]]></category><category><![CDATA[python]]></category><category><![CDATA[точка банк]]></category><category><![CDATA[точка]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Текстовая MMO RPG на движке форума Invision 5 с PWA приложением и кубиками]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1062240/</guid>
      <link>https://habr.com/ru/articles/1062240/?utm_campaign=1062240&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/8b6/7ac/0a6/8b67ac0a6c775833664006eca86c3254.jpg" /><p>Привет, Хабр! Текстовые браузерные MMO вроде старой «Тюряги онлайн»&nbsp;— жанр древний, но&nbsp;до&nbsp;сих пор живой, особенно среди фанатов олдскульных вселенных. В&nbsp;сообществах готоманов нашу игру уже смело окрестили «Тюрягой онлайн 2.0», и сходство тут прямое: и там, и там на&nbsp;бэкенде крутится суровый выживач на&nbsp;зоне. Только в&nbsp;Тюряге ты обычный зэк на&nbsp;нарах, а&nbsp;Миненталь&nbsp;— это колония под&nbsp;магическим барьером, где каждый кусок мяса падальщика на&nbsp;счету. Игрок&nbsp;либо ходит на&nbsp;охоту и пашет на&nbsp;фракцию,&nbsp;либо&nbsp;быстро отбросит коньки в&nbsp;канаве от&nbsp;голода или&nbsp;первого&nbsp;же каторжника. </p><p>Когда мы на&nbsp;Бесте с&nbsp;нашими технарями задумали сделать эту тактическую RPG «Путь Героя», пришлось выбирать платформу для&nbsp;серверной части. В&nbsp;итоге мы решили использовать наш старый форум ещё времён 2004&nbsp;года, обновив его с&nbsp;древней версии 3.4.6&nbsp;до&nbsp;свежего каркаса IPS 5. Из&nbsp;коробки у&nbsp;него есть всё, что&nbsp;нужно: нормальная система прав, готовая база пользователей и вменяемое API. Но&nbsp;чтобы превратить обычный форум в&nbsp;нормальную игру, пришлось знатно поковыряться под&nbsp;капотом и в&nbsp;базах. Первым делом нужно&nbsp;было решить две главные проблемы: как&nbsp;упаковать всё это дело в&nbsp;легкое мобильное приложение и раз и навсегда отвадить игроков от&nbsp;читерства с&nbsp;кубиками.</p> <a href="https://habr.com/ru/articles/1062240/?utm_campaign=1062240&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 23 Jul 2026 11:20:17 GMT</pubDate>
      <dc:creator><![CDATA[LithiumBest]]></dc:creator>
      
      <category><![CDATA[Invision Community 5]]></category><category><![CDATA[Progressive Web Application]]></category><category><![CDATA[Web Game Development]]></category><category><![CDATA[мобильная игра в браузере]]></category><category><![CDATA[кроссплатформенная разработка]]></category><category><![CDATA[Миненталь]]></category><category><![CDATA[Готика]]></category><category><![CDATA[Gothic]]></category><category><![CDATA[оптимизация производительности]]></category><category><![CDATA[экономия времени разработки]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Почему AI не заменит разработчиков. Или заменит]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1061918/</guid>
      <link>https://habr.com/ru/articles/1061918/?utm_campaign=1061918&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/593/dc0/e58/593dc0e58d8ebe006de1c875d3df210e.png" /><p>Уже куча народу высказалась по этому поводу - было и “мы все умрём, мы мамонты с лапками, нас заменят роботы”, было и “я сверхсущество, а эта машина лишь инструмент”.<br><br>Но я не встретил честной экспертной точки зрения с позиции бизнеса и разработки вместе. Были либо технарские, либо бизнесовые.&nbsp;</p><p>Бизнес хочет либо “срезать косты”, либо “увеличить продажи”. Точнее даже так - об этом активно говорят бизнесмены, которые пытаются продать ИИ. От них только и слышишь маркетинговые лозунги. Написанные через ИИ.</p><p>А вот про риски никто не говорит! А это суть предпринимательства - работа с рисками. Сколько крупных игроков откатывают свои ИИ-стратегии сейчас? А ваш бизнес может позволить себе работать пару лет в дикий убыток ради эксперимента?</p><p>Технари либо радуются, что теперь он один тащит то, что раньше тащила целая команда, либо те, кто уже “наелся”, рассказывают кейсы про то, как ИИ положила его систему.</p><p>И где TRUE/FALSE?</p> <a href="https://habr.com/ru/articles/1061918/?utm_campaign=1061918&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 22 Jul 2026 13:24:56 GMT</pubDate>
      <dc:creator><![CDATA[metis]]></dc:creator>
      
      <category><![CDATA[агенты]]></category><category><![CDATA[агенты ии]]></category><category><![CDATA[искуственный интеллект]]></category><category><![CDATA[будущее]]></category><category><![CDATA[карьера]]></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[Разработка TypeScript-библиотеки для построения реактивных графов распространения и обработки данных]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1061630/</guid>
      <link>https://habr.com/ru/articles/1061630/?utm_campaign=1061630&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/7af/fab/b3a/7affabb3ae2288d443cf3a3712562c18.png" /><p>Как построить гибкий реактивный граф обработки данных, где узлы изолированы друг от друга, а связи между ними строятся автоматически на основе их возможностей? Рассказываю о разработке Transferum — легковесной TypeScript-библиотеки для реактивных потоков. Внутри: разбор системы вычислимых типов для проверки контрактов в compile-time, управление маршрутизацией данных в графе и примеры построения динамических пайплайнов для IoT-датчиков и панелей управления.</p> <a href="https://habr.com/ru/articles/1061630/?utm_campaign=1061630&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 22 Jul 2026 06:56:53 GMT</pubDate>
      <dc:creator><![CDATA[Smoren]]></dc:creator>
      
      <category><![CDATA[typescript]]></category><category><![CDATA[frp]]></category><category><![CDATA[rxjs]]></category><category><![CDATA[reactive programming]]></category><category><![CDATA[data flow]]></category><category><![CDATA[open source]]></category><category><![CDATA[архитектура по]]></category>
    </item>
  

  

  

	
  

  

  

      

      

      

    
  </channel>
</rss>
