<?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/programming/posts/</link>
    <description><![CDATA[Программирование – искусство создания компьютерных программ]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Fri, 24 Apr 2026 15:27:35 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[Пост @NikitaPanevin — Блог компании PVS-Studio (+3) — 24.04.2026 14:52]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/pvs-studio/posts/1027530/</guid>
    <link>https://habr.com/ru/companies/pvs-studio/posts/1027530/?utm_campaign=1027530&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>ИИ что? Проверяем Semantic Kernel</strong></p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/ff3/597/b8e/ff3597b8e3a002df50bedb168a1711a4.png" width="975" height="550"></figure><p>Проекты, связанные с интеграцией искусственного интеллекта, всё чаще становятся частью повседневной разработки. Один из таких проектов — <a href="https://github.com/microsoft/semantic-kernel" rel="noopener noreferrer nofollow">Semantic Kernel</a>. Он представляет собой SDK для построения AI-агентов и оркестрации LLM-сценариев и активно развивается компанией Microsoft.</p><p>Однако под капотом даже самых современных решений скрывается вполне обычный C# код со всеми присущими ему проблемами. Поэтому мы проверили проект и написали статью о самых интересных <a href="https://pvs-studio.ru/ru/blog/posts/csharp/1367/?utm_source=website&amp;utm_medium=habr&amp;utm_campaign=readmore&amp;utm_content=article" rel="noopener noreferrer nofollow">ошибках в коде Semantic Kernel</a>.</p> <a href="https://habr.com/ru/posts/1027530/?utm_campaign=1027530&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 24 Apr 2026 11:52:54 GMT</pubDate>
    <dc:creator><![CDATA[NikitaPanevin (PVS-Studio)]]></dc:creator>
      
      <category><![CDATA[c#]]></category><category><![CDATA[.net]]></category><category><![CDATA[open source]]></category><category><![CDATA[программирование]]></category><category><![CDATA[статический анализ]]></category><category><![CDATA[semantic kernel]]></category><category><![CDATA[pvs-studio]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @quasilyte — Go (+2) — 24.04.2026 12:50]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1027466/</guid>
    <link>https://habr.com/ru/posts/1027466/?utm_campaign=1027466&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Сделал необычную RTS на Ludum Dare 59 за пару дней</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/32a/6c1/0cd/32a6c10cd6d5cae2e90a66da2d2c0cbe.gif" alt="Выглядит примерно так" title="Выглядит примерно так" width="800" height="450"><div><figcaption>Выглядит примерно так</figcaption></div></figure><p>Игра написана на Go (Ebitengine), <a href="https://github.com/quasilyte/ld59-game" rel="noopener noreferrer nofollow">исходники на есть гитхабе</a>.</p><p><a href="https://quasilyte.itch.io/out-of-signal" rel="noopener noreferrer nofollow">Поиграть можно в браузере</a>, ведь Ebitengine имеет неплохой экспорт в wasm. Она мало весит, быстро работает, и экспорт не требовал лишних усилий - это вам не шуточный игровой движок.</p><p>Я накидал небольшой шаблон для игр на стеке своих геймдев-библиотек. Его можно посмотреть тут: <a href="https://github.com/quasilyte/gscene-game-template" rel="noopener noreferrer nofollow">https://github.com/quasilyte/gscene-game-template</a>.</p><p>С этим шаблоном старт начала работы над игровой логикой и "мясом" игры становится ближе. Это позволяет +/- выйти на удобство какого-нибудь Godot, где не нужно первые несколько часов настраивать как у нас обрабатывается input, звук и сцены. Я этот шаблон буду дорабатывать по мере участия в джемах, за каждую мини-игру у меня копится TODO на то, что еще там можно было бы улучшить.</p><p>Если тема разработки игр на Go вам интересна, заходите в наше <a href="https://t.me/go_gamedev" rel="noopener noreferrer nofollow">русскоязычное сообщество в телеграме</a>. Мы там обсуждаем всякие библиотеки для геймдева, свои игры, и всё такое.</p><p>Кстати, ребята из чатика тоже сделали свои игры на Ebitengine, вот они:</p><ul><li><p><a href="https://dqso.itch.io/hired-or-homeless" rel="noopener noreferrer nofollow">https://dqso.itch.io/hired-or-homeless</a></p></li><li><p><a href="https://metalim.itch.io/zero-day-lunch" rel="noopener noreferrer nofollow">https://metalim.itch.io/zero-day-lunch</a></p></li></ul> <a href="https://habr.com/ru/posts/1027466/?utm_campaign=1027466&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 24 Apr 2026 09:50:55 GMT</pubDate>
    <dc:creator><![CDATA[quasilyte]]></dc:creator>
      
      <category><![CDATA[golang]]></category><category><![CDATA[go]]></category><category><![CDATA[ld59]]></category><category><![CDATA[ldjam59]]></category><category><![CDATA[ludum-dare59]]></category><category><![CDATA[ludum-dare-59]]></category><category><![CDATA[gamedev]]></category><category><![CDATA[indiedev]]></category><category><![CDATA[ebiten]]></category><category><![CDATA[ebitengine]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @apdorodin — Data Engineering (+3) — 23.04.2026 15:56]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1027082/</guid>
    <link>https://habr.com/ru/posts/1027082/?utm_campaign=1027082&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>MCP - это было очень модно (где-то год назад). Но многие до сих пор не поняли простую вещь: агент с доступом к командной строке может пользоваться любыми CLI-интерфейсами ничуть не хуже.</p><p>При этом у классических CLI есть очевидные преимущества:</p><p>- Их банально легче разрабатывать</p><p>- Они прозрачнее и понятнее в работе</p><p>- Применяться они могут не только агентами, но и людьми</p><p>- Их уже существует огромное множество под любые задачи</p><p>В Google это тоже осознали и выкатили [свой инструмент](<a href="https://github.com/googleworkspace/cli" rel="noopener noreferrer nofollow">https://github.com/googleworkspace/cli</a>). Сделан он явно для агентов (его выпустили только в этом месяце), но это именно CLI, а не очередной MCP-сервер.</p><p>Точных фактов по этой теме пока нет. Кто-то говорит, что [в простых задачах MCP требует больше контекста, а в сложных — меньше, чем CLI, если инструменты грамотно обернуты и хорошо обнаруживаются агентом](<a href="https://portofcontext.com/blog/cli-vs-mcp-vs-code-mode" rel="noopener noreferrer nofollow">https://portofcontext.com/blog/cli-vs-mcp-vs-code-mode</a>). Кто-то, что этой разницей можно пренебречь, да и вызвана она тем, что не все CLI адаптированы под экономию контекста. Но все согласны, что CLI может дать агенту доступ ко всем тем же инструментам и обеспечить одинаковый процент успеха при выполнении задач, при этом будучи куда понятнее для человека и значительно проще в написании и поддержке.</p><p>В моих проектах я буду использовать CLI.</p> <a href="https://habr.com/ru/posts/1027082/?utm_campaign=1027082&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Thu, 23 Apr 2026 12:56:35 GMT</pubDate>
    <dc:creator><![CDATA[apdorodin]]></dc:creator>
      
      <category><![CDATA[ai]]></category><category><![CDATA[mcp]]></category><category><![CDATA[mcp-server]]></category><category><![CDATA[cli]]></category><category><![CDATA[llm]]></category><category><![CDATA[agent]]></category><category><![CDATA[ai agent]]></category><category><![CDATA[agentic ai]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @MaxRokatansky — Блог компании OTUS (+3) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/otus/posts/1026512/</guid>
    <link>https://habr.com/ru/companies/otus/posts/1026512/?utm_campaign=1026512&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Бэкенд «тормозит», API ломаются, а архитектура трещит: уроки, которые помогают закрыть эти проблемы</strong></p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/2ea/ed7/fef/2eaed7feff9e3d33752b4f2fccfbe325.png" width="1800" height="980"></figure><p>У бэкенд-разработки есть неприятная особенность: большинство сложностей проявляется не в момент, когда пишется первый сервис, а позже — когда API начинает обрастать интеграциями, фоновые задачи конкурируют за ресурсы, поиск и хранилище требуют разных подходов к данным, а архитектурные решения внезапно начинают влиять на скорость разработки не меньше, чем качество кода.</p><p>В этой подборке — бесплатные демо-уроки от преподавателей-практиков про те части бэкенда, которые обычно и забирают больше всего времени в реальной работе. Это хороший способ посмотреть на чужой инженерный подход, познакомиться с экспертом, задать вопросы по своей ситуации и заодно закрыть конкретные пробелы: в API, тестировании, нагрузке, инфраструктуре, работе с данными и проектировании систем.</p><ul><li><p>22 апреля 20:00. <a href="https://otus.pw/9fKu/" rel="noopener noreferrer nofollow">Bun + ИИ: создаём быстрый сервер нового поколения на JavaScript</a></p></li><li><p>22 апреля 20:00. <a href="https://otus.pw/dVlO/" rel="noopener noreferrer nofollow">Symfony Workflow: конечный автомат для реализации бизнес-логики</a></p></li><li><p>23 апреля 20:00. <a href="https://otus.pw/dVlO/" rel="noopener noreferrer nofollow">Многопоточность в C++: как писать быстрые и безопасные приложения</a></p></li><li><p>23 апреля 20:00. <a href="https://otus.pw/iB16/" rel="noopener noreferrer nofollow">Паттерны RESTful API. Как проектировать удобные, масштабируемые и гибкие API?</a></p></li><li><p>28 апреля 20:00. <a href="https://otus.pw/6Axs/" rel="noopener noreferrer nofollow">Фоновые задачи в Django: работа с Celery</a></p></li><li><p>30 апреля 20:00. <a href="https://otus.pw/y3gJ/" rel="noopener noreferrer nofollow">Поиск в базе знаний: где векторы ошибаются, а графы помогают</a></p></li><li><p>4 мая 20:00. <a href="https://otus.pw/PTT1/" rel="noopener noreferrer nofollow">Интерфейсы в Golang изнутри</a></p></li><li><p>5 мая 20:00. <a href="https://otus.pw/dVsE/" rel="noopener noreferrer nofollow">Postgres + JSON: реляционная мощь, документная гибкость</a></p></li><li><p>5 мая 20:00. <a href="https://otus.pw/vD8N/" rel="noopener noreferrer nofollow">Архитектурные решения в бэкенд-разработке</a></p></li><li><p>6 мая 19:00. <a href="https://otus.pw/DM8s/" rel="noopener noreferrer nofollow">Разработка проекта на Kotlin: коллаборация человека, архитектурных шаблонов и ИИ-команды</a></p></li><li><p>6 мая 20:00. <a href="https://otus.pw/k1C9H/" rel="noopener noreferrer nofollow">Rust в деле: пишем многопользовательский чат с сервером, клиентом и CLI</a></p></li><li><p>7 мая 20:00. <a href="https://otus.pw/X0cA/" rel="noopener noreferrer nofollow">От кода до Kubernetes за полтора часа</a></p></li><li><p>7 мая 20:00. <a href="https://otus.pw/tAZL/" rel="noopener noreferrer nofollow">Тестирование микросервисов на Go: почему ваш сервис ломается под 1000 RPS</a></p></li><li><p>13 мая 20:00. <a href="https://otus.pw/qMPdU/" rel="noopener noreferrer nofollow">Kafka Streams DSL</a></p></li><li><p>13 мая 20:00. <a href="https://otus.pw/BUqE/" rel="noopener noreferrer nofollow">ClickHouse для аналитики больших данных: практические кейсы и связь с NoSQL-экосистемой</a></p></li><li><p>14 мая 20:00. <a href="https://otus.pw/cUMl/" rel="noopener noreferrer nofollow">Взаимодействие с базой данных и миграции на Go</a></p></li></ul><blockquote><p><em>Полный список бесплатных уроков от преподавателей курсов по программированию, инфраструктуре и не только уже доступен </em><a href="https://otus.pw/goUn/" rel="noopener noreferrer nofollow"><em>в календаре мероприятий.</em></a></p></blockquote> <a href="https://habr.com/ru/posts/1026512/?utm_campaign=1026512&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 22 Apr 2026 10:13:03 GMT</pubDate>
    <dc:creator><![CDATA[MaxRokatansky (OTUS)]]></dc:creator>
      
      <category><![CDATA[бэкенд-разработка]]></category><category><![CDATA[микросервисы]]></category><category><![CDATA[архитектурные решения]]></category><category><![CDATA[Postgres]]></category><category><![CDATA[подборка вебинаров]]></category><category><![CDATA[бесплатные уроки]]></category><category><![CDATA[онлайн-обучение]]></category><category><![CDATA[карьера в ит]]></category><category><![CDATA[профессиональное развитие]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @TonyAlt — Unity (+4) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1025780/</guid>
    <link>https://habr.com/ru/posts/1025780/?utm_campaign=1025780&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Как разработчикам монетизировать свои игры в 2026?</strong></p><p>Всем привет! Хотели похвастаться очередным сложным, но очень важным шагом на пути к возрождению российского геймдева и заодно спросить мнения окружающих (да, мы всегда сначала делаем, потом думаем).</p><p>Традиционный подход подразумевает, что разработчик заключает договор с площадкой (Steam, VK Play, Itch и т.д.). Игрок покупает игру, и деньги идут на счёт платформы. После этого в определенные даты происходит выплаты на счета разработчиков за вычетом комиссий. Где-то больше, где-то меньше, где-то по-другому. Но смысл тот же. Этот подход позволяет, во-первых, брать комиссии, во-вторых, легче работать с возвратами и в-третьих, быстрее распознавать отмывание денег и мошенничество.</p><p>Мы решили использовать схему маркетплейсов, где каждый разработчик приходит со своим статусом (ООО, ИП, смз). Но приходит он в первую очередь не к нам, а к платёжным агрегаторам типа Юкасса, Робокасса, любая …касса. Одним словом, подключает себе интернет-эквайринг, такое делает любой банк. Банк ему даёт API для подключения, ID магазина, ключи для проведения оплат и всё, действуй.</p><p>Где здесь мы? Мы предоставляем бесплатный хостинг для игр. Сама площадка + страница игры + страница разработчика. Всё тоже самое что у itch[.]io. Заодно есть консоль разработчика, в которую добавляется всё больше и больше возможностей. Соответственно, в этой консоли разработчик указывает тот самый идентификатор магазина, суперсекретный ключ и дальше надеется на магию.</p><p>Если магия происходит, то наш скрипт подставляет его данные в другой скрипт, только уже от платёжного агрегатора. Игрок видит кнопку обычную кнопку оплаты и оплачивает, после чего денюжки магическим образом летят на счёт разработчика. На этом магия заканчивается, начинается то ли математика, то ли бухгалтерия (я в этом не силён, не шарю).</p><p>Опережу (почти) все вопросы и сразу отвечу:</p><p>Q: На что вы будете существовать если у вас комиссии 0%?</p><p>A: При покупке игры рядом есть еще кнопочка “поддержать платформу”, надеемся, что это сработает</p><p>Q: Вы делаете очередного убийцу стима?</p><p>A: Нет</p><p>Q: Это точно не развод?</p><p>A: Точно нет, чесслово</p><p>На остальные вопросы обязательно ответим. Так как это не реклама, то прямо указывать название площадки не буду, но подскажу, что наш канал <a href="https://t.me/dustore_official" rel="noopener noreferrer nofollow">https://t.me/dustore_official</a></p> <a href="https://habr.com/ru/posts/1025780/?utm_campaign=1025780&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 20 Apr 2026 18:05:32 GMT</pubDate>
    <dc:creator><![CDATA[TonyAlt]]></dc:creator>
      
      <category><![CDATA[публикация игр]]></category><category><![CDATA[разработка игр]]></category><category><![CDATA[монетизация игр]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @JordanCpp — C (+4) — 20.04.2026 14:17]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1025592/</guid>
    <link>https://habr.com/ru/posts/1025592/?utm_campaign=1025592&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Переосмысление библиотеки <a href="https://github.com/JordanCpp/LDL" rel="noopener noreferrer nofollow">LDL</a>.</strong></p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/8eb/316/594/8eb3165940792d960cabf23cb81bb10c.jpg" width="802" height="632"></figure><p>Я полностью пересмотрел концепцию библиотеки LDL.</p><p><strong>Что такое LDL?</strong><br>Это графическая библиотека с единым API для всех систем как старых, так и новых.</p><p>Раньше я писал её на C++98, что давало хорошую портабельность. Но сейчас я пересмотрел многие тезисы, которые декларировал на GitHub, чтобы наконец добраться до первого релиза.</p><p>Новая стратегия</p><p>Я решил выпускать релизы&nbsp;<strong>без реализации полного функционала</strong>&nbsp;(графика, звук, шрифты и т.д.) постепенно, итеративно.</p><ul><li><p>Перешёл на&nbsp;<strong>C89</strong>&nbsp;для максимальной переносимости. Это не только DOS или Windows 3.x, но и старые системы вроде Solaris, PlayStation 1 и другие.</p></li><li><p>Для&nbsp;<strong>первого релиза</strong>&nbsp;реализую минимальный базовый функционал: графику (OpenGL, Vulkan), окна и события. По возможностям аналог GLFW.</p></li><li><p>С каждым следующим релизом буду добавлять: 2D-рендер, звук, шрифты и прочее.</p></li></ul><p>Лицензия и целевые платформы</p><ul><li><p>Лицензия меняется на&nbsp;<strong>LGPLv3</strong>.</p></li><li><p>На старте поддерживаются&nbsp;<strong>Windows и Linux</strong>.</p></li></ul><p>Качество и инструменты</p><p>При разработке использую:</p><ul><li><p>AddressSanitizer (ASan)</p></li><li><p>UndefinedBehaviorSanitizer (UBSan)</p></li><li><p>Различные анализаторы кода</p></li></ul><p>Я считаю, что такая стратегия полезнее, чем годами доводить библиотеку до версии 1.0 в офлайн-режиме.</p><p><strong>Примеры и бэкенды</strong></p><ul><li><p>Добавлю&nbsp;<strong>десятки примеров</strong>&nbsp;с OpenGL 1.x, OpenGL 3.x и Vulkan.</p></li><li><p>Буду добавлять&nbsp;<strong>бэкенды для LDL</strong>: не только под ОС, но и поверх других графических библиотек — SDL, SFML, GLFW и т.д.</p></li><li><p><strong>API остаётся единым</strong>&nbsp;для всех бэкендов.</p></li></ul><p>Это позволит сразу добавить поддержку звука и шрифтов (через бэкенды), а в нативных версиях реализовывать их позже.</p><p>&nbsp;<strong>2D-рендер без границ</strong></p><p>Одной из главных задач LDL я вижу создание&nbsp;<strong>единого 2D-интерфейса</strong>, который стирает различия между поколениями графики.</p><p>Вам не нужно думать о том, что находится в системе: современная видеокарта с&nbsp;<strong>Vulkan</strong>, старый ускоритель с&nbsp;<strong>OpenGL 1.2</strong>&nbsp;или вообще только центральный процессор (<strong>Software Rendering</strong>).</p><ul><li><p><strong>Единый интерфейс</strong>: Вы используете одни и те же команды для рисования пикселей, линий и спрайтов.</p></li><li><p><strong>Адаптивность</strong>: LDL сам выберет наиболее эффективный способ вывода изображения. На современной системе это будет аппаратное ускорение, а на «железе» без видеокарты оптимизированный программный растеризатор.</p></li><li><p><strong>Визуальная честность</strong>: Ваш визуальный стиль останется неизменным, на чем бы он ни запускался. Это дает возможность делать игры и приложения, которые выглядят и работают одинаково и на ретро-ноутбуке, и на современном мониторе.</p></li></ul><p><strong>Философия: Машина времени в вашем коде</strong></p><p>Зачем тратить силы на поддержку систем, которые многие считают «трупами»?</p><p><strong>1. Борьба с цифровым забвением</strong></p><p>Современный софт живет 3–5 лет. Мы выбрасываем железо не потому, что оно сломалось, а потому, что софт стал слишком тяжелым и ленивым. LDL — это протест против «запланированного устаревания». Я хочу, чтобы код, написанный сегодня, мог дышать в железе любой эпохи.</p><p><strong>2. Инженерный аскетизм</strong></p><p>Когда у тебя гигабайты памяти, ты перестаешь ценить каждый байт. Написание библиотеки под C89 для слабого железа — это духовная практика для программиста. Это возвращение к искусству находить изящные решения в условиях жестких ограничений. Каждый сэкономленный такт процессора — это дань уважения инженерам прошлого.</p><p><strong>3. Преемственность поколений</strong></p><p>Мы стоим на плечах гигантов, но часто забываем их имена. LDL сохраняет возможность для диалога между эпохами. Это инструмент, который позволяет современному разработчику почувствовать «металл» старых машин, не теряя связи с современными технологиями вроде Vulkan.</p><p><strong>Итог</strong></p><p>LDL — это&nbsp;<strong>Little Directmedia Layer</strong>. Он маленький не потому, что слабый, а потому, что в нем нет ничего лишнего. Это попытка создать код, который будет принадлежать не конкретной версии ОС, а истории программирования в целом.</p><p>Один API. Один код. Тридцать лет компьютерной истории.</p> <a href="https://habr.com/ru/posts/1025592/?utm_campaign=1025592&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 20 Apr 2026 11:17:08 GMT</pubDate>
    <dc:creator><![CDATA[JordanCpp]]></dc:creator>
      
      <category><![CDATA[c89]]></category><category><![CDATA[c++]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @MaxRokatansky — Блог компании OTUS (+2) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/otus/posts/1024194/</guid>
    <link>https://habr.com/ru/companies/otus/posts/1024194/?utm_campaign=1024194&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>30 беплатных уроков недели: AI, Spark 4.0, C++, REST API, Angular и Linux</strong></p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/5b6/238/04f/5b623804fc6b24611d08a63f32832978.png" width="1800" height="980"></figure><p>Привет, Хабр. Собрали подборку ближайших бесплатных уроков, которые проведут  преподаватели курсов Отус в преддверии старта новых курсов. На них можно узнать о формате обучения, пообщаться с экспертами и заодно закрыть пробелы в знаниях по интересующей теме. Выбирайте свою тему и присоединяйтесь.</p><p><strong>20 апреля, понедельник:</strong></p><ul><li><p>20:00. <a href="https://otus.pw/gaBU/" rel="noopener noreferrer nofollow">Unit-тесты для iOS приложений, работаем над качеством изнутри </a></p></li><li><p>20:00. <a href="https://otus.pw/3Pr0/" rel="noopener noreferrer nofollow">Качество данных (data quality) на практике: от технических метрик до внедрения в команде </a></p></li><li><p>20:00. <a href="https://otus.pw/hv7T/" rel="noopener noreferrer nofollow">От интерфейса до корзины: создаём мини интернет-магазин на языке JavaScript</a> </p></li><li><p>20:00. <a href="https://otus.pw/MIgq/" rel="noopener noreferrer nofollow">Эффекты в Scala</a> </p></li><li><p>20:00. <a href="https://otus.pw/s8kB/" rel="noopener noreferrer nofollow">Балансировка и геораспределение: как создать быстрое и надёжное приложение для всего мира </a></p></li><li><p>20:00. <a href="https://otus.pw/nEMO8/" rel="noopener noreferrer nofollow">Менеджер в перегрузе: как выжить и не выгореть</a> </p></li></ul><p><strong>21 апреля, вторник:</strong></p><ul><li><p>19:00. <a href="https://otus.pw/OCow/" rel="noopener noreferrer nofollow">BPMN для 1С: Как правильно моделировать интеграции? (Разбираем 4 уровня детализации) </a></p></li><li><p>19:00. <a href="https://otus.pw/qlpJ/" rel="noopener noreferrer nofollow">Значение корпоративной архитектуры для реализации стратегии цифровой трансформации </a></p></li><li><p>20:00. <a href="https://otus.pw/h61O/" rel="noopener noreferrer nofollow">Функции в SQL: вычисления и переиспользование кода</a> </p></li><li><p>20:00. <a href="https://otus.pw/uUBE/" rel="noopener noreferrer nofollow">Оптимизация запросов 1С </a></p></li><li><p>20:00. <a href="https://otus.pw/9kPk/" rel="noopener noreferrer nofollow">Архитектура мониторинга ИБ инфраструктуры на SIEM</a> </p></li><li><p>20:00. <a href="https://otus.pw/bXuxO/" rel="noopener noreferrer nofollow">Производительность кода на примере алгоритмов сортировки </a></p></li><li><p>20:00. <a href="https://otus.pw/1l64/" rel="noopener noreferrer nofollow">Как BPMN помогает видеть узкие места </a></p></li><li><p>20:00. <a href="https://otus.pw/j8HG/" rel="noopener noreferrer nofollow">Архитектура Angular-приложения: как писать масштабируемый frontend</a> </p></li><li><p>20:00. <a href="https://otus.pw/AanU/" rel="noopener noreferrer nofollow">Связанные списки в ядре Linux: от API до реального кода </a></p></li><li><p>20:00. <a href="https://otus.pw/yqPd2/" rel="noopener noreferrer nofollow">Использование BGP для маршрутизации IPv6 </a></p></li></ul><p><strong>22 апреля, среда:</strong></p><ul><li><p>19:00. <a href="https://otus.pw/7rQJ/" rel="noopener noreferrer nofollow">Основы балансировки нагрузки в Angie и Nginx </a></p></li><li><p>20:00. <a href="https://otus.pw/HkPQ/" rel="noopener noreferrer nofollow">Бизнес-процессы CRM. Стандартные активити CRM</a> </p></li><li><p>20:00. <a href="https://otus.pw/Jo8W/" rel="noopener noreferrer nofollow">Bun + ИИ: создаём быстрый сервер нового поколения на JavaScript (Bun — современная среда выполнения JavaScript; ИИ — искусственный интеллект)</a> </p></li><li><p>20:00. <a href="https://otus.pw/B9gR/" rel="noopener noreferrer nofollow">Symfony Workflow: конечный автомат для реализации бизнес-логики </a></p></li><li><p>20:00. <a href="https://otus.pw/Mw5R/" rel="noopener noreferrer nofollow">Делегирование без боли: как перестать быть “главным исполнителем” и не скатиться в микроменеджмент</a> </p></li><li><p>20:00. <a href="https://otus.pw/LW3j/" rel="noopener noreferrer nofollow">Программируемые реле в АСУ ТП: гибкий инструмент для решения инженерных задач </a></p></li><li><p>20:00. <a href="https://otus.pw/e38t/" rel="noopener noreferrer nofollow">Создание нейро-сотрудника на базе Telegram-бота и GPT: от регистрации до рабочего прототипа </a></p></li></ul><p><strong>23 апреля, четверг:</strong></p><ul><li><p>18:00. <a href="https://otus.pw/GCa7/" rel="noopener noreferrer nofollow">Cоздаём ИИ-ассистента для системного аналитика за 1 час </a></p></li><li><p>19:00. <a href="https://otus.pw/QPSU/" rel="noopener noreferrer nofollow">Интегрируем EDT в процессы непрерывной интеграции. Подключаем 1С к CI/CD </a></p></li><li><p>20:00. <a href="https://otus.pw/WVqO/" rel="noopener noreferrer nofollow">Что нового в Spark 4.0 </a></p></li><li><p>20:00. <a href="https://otus.pw/YB6V2/" rel="noopener noreferrer nofollow">Многопоточность в C++: как писать быстрые и безопасные приложения </a></p></li><li><p>20:00. <a href="https://otus.pw/wKgpV/" rel="noopener noreferrer nofollow">Паттерны RESTful API. Как проектировать удобные, масштабируемые и гибкие API? </a></p></li></ul><p><strong>27 апреля, понедельник:</strong></p><ul><li><p>20:00. <a href="https://otus.pw/aC49/" rel="noopener noreferrer nofollow">Рисуем в формате онлайн модель процесса BPMN в Camunda Modeler </a></p></li><li><p>20:00. <a href="https://otus.pw/ZSzk/" rel="noopener noreferrer nofollow">Настройка кластера Elasticsearch</a></p></li></ul><blockquote><p><em>Еще больше бесплатных уроков от преподавателей курсов можно посмотреть </em><a href="https://otus.pw/BpC0T/" rel="noopener noreferrer nofollow"><em>в календаре мероприятий.</em></a></p></blockquote> <a href="https://habr.com/ru/posts/1024194/?utm_campaign=1024194&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 20 Apr 2026 07:28:15 GMT</pubDate>
    <dc:creator><![CDATA[MaxRokatansky (OTUS)]]></dc:creator>
      
      <category><![CDATA[карьера в ит]]></category><category><![CDATA[подборка вебинаров]]></category><category><![CDATA[бесплатные уроки]]></category><category><![CDATA[профессиональное развитие]]></category><category><![CDATA[повышение грейда]]></category><category><![CDATA[lifelong education]]></category><category><![CDATA[обучение в ит]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @Assador — Текстовые редакторы и IDE (+4) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1024892/</guid>
    <link>https://habr.com/ru/posts/1024892/?utm_campaign=1024892&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Пока везут в&nbsp;Zed нативный diff выделенных кусков кода, с&nbsp;подсветкой, преферансом и&nbsp;барышнями, мы будем пить то, что&nbsp;есть&nbsp;😁</p><p>Скрипт намбер&nbsp;ван:</p><pre><code class="bash">#!/bin/bash

FILE1="/tmp/clp.saved"

# xclip -o -selection primary &gt; "$FILE1"
wl-paste --primary &gt; "$FILE1"
notify-send "Diff" "Первый фрагмент сохранён"</code></pre><p>вешаем на&nbsp;одно сочетание клавиш (у&nbsp;меня, например, для&nbsp;удобства, <code>Alt+Shift+1</code>)<br> (выбираем на&nbsp;вкус для X11 или Wayland)</p><p>Скрипт намбер&nbsp;ту:</p><pre><code class="bash">#!/bin/bash

FILE1="/tmp/clp.saved"
FILE2=$(mktemp /tmp/clp.XXXXXX)

trap 'rm -f "$FILE2"' EXIT

# xclip -o -selection primary &gt; "$FILE2"
wl-paste --primary &gt; "$FILE2"

if [ ! -s "$FILE1" ] || [ ! -s "$FILE2" ]; then
	notify-send "Ошибка" "Нет текста для сравнения"
	exit 1
fi

meld "$FILE1" "$FILE2"</code></pre><p>вешаем на&nbsp;другое сочетание клавиш (у&nbsp;меня, например, <code>Alt+Shift+2</code>)</p><p>Изолента и&nbsp;реактивный двигатель&nbsp;— вот&nbsp;всё, что нам нужно. Лучше, чем&nbsp;ничего, по&nbsp;крайней мере…<br> Первый скрипт сохраняет выделенный текст во&nbsp;временный файл <code>/tmp/clp.saved</code>.<br> Второй скрипт сохраняет выделенный текст в&nbsp;другой временный файл <code>/tmp/clp.XXXXXX</code>, открывает&nbsp;их оба в&nbsp;нашем любимом <strong>Meld</strong>, мы на всё это дело любуемся, сравниваем, закрываем Meld, после чего скрипт удаляет этот второй временный файл со&nbsp;случайным постфиксом, чтобы не&nbsp;болтался зря. Первый, <code>/tmp/clp.saved</code> пока остаётся, чтобы было удобно с&nbsp;одним и&nbsp;тем&nbsp;же «первовыделенным» сравнивать несколько вариантов, и&nbsp;его всегда можно переопределить первым скриптом.</p><p><strong>Итого</strong>: Выделили кусок, <code>Alt+Shift+1</code>, выделили другой кусок, <code>Alt+Shift+2</code>&nbsp;— смотрим, радуемся!&nbsp;😁</p> <a href="https://habr.com/ru/posts/1024892/?utm_campaign=1024892&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sat, 18 Apr 2026 08:10:30 GMT</pubDate>
    <dc:creator><![CDATA[Assador]]></dc:creator>
      
      <category><![CDATA[zed]]></category><category><![CDATA[meld]]></category><category><![CDATA[bash]]></category><category><![CDATA[лайфхаки]]></category><category><![CDATA[инструменты]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @AleksandraUvarova — Блог компании PVS-Studio (+3) — 17.04.2026 13:09]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/pvs-studio/posts/1024582/</guid>
    <link>https://habr.com/ru/companies/pvs-studio/posts/1024582/?utm_campaign=1024582&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Как устроен компилятор?</strong></p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/52b/498/214/52b498214111ad5f923740beb8580ac5.png" width="1600" height="902"></figure><p>Мы каждый день пишем код, но часто воспринимаем компилятор как "чёрный ящик". Сегодня приоткроем завесу тайны над работой компилятора, расскажем о его жизненном цикле и объясним, на каком этапе в игру вступают деревья. </p><p>Под капотом скрывается целый конвейер, который включает в себя построение дерева, оптимизацию и генерацию кода. Мы разобрали все этапы на конкретных примерах и написали статью для тех, кто хочет понять, <a href="https://pvs-studio.ru/ru/blog/posts/1364/?utm_source=website&amp;utm_medium=habr&amp;utm_campaign=readmore&amp;utm_content=article" rel="noopener noreferrer nofollow">как работает компилятор</a>.</p> <a href="https://habr.com/ru/posts/1024582/?utm_campaign=1024582&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 17 Apr 2026 10:09:36 GMT</pubDate>
    <dc:creator><![CDATA[AleksandraUvarova (PVS-Studio)]]></dc:creator>
      
      <category><![CDATA[программирование]]></category><category><![CDATA[компиляторы]]></category><category><![CDATA[устройство]]></category><category><![CDATA[c++]]></category><category><![CDATA[c#]]></category><category><![CDATA[java]]></category><category><![CDATA[ast]]></category><category><![CDATA[абстрактное синтаксическое дерево]]></category><category><![CDATA[синтаксический анализ]]></category><category><![CDATA[статистический анализ]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @smirnoff_ai — Блог компании LLMStart.ru (+3) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/llmstart/posts/1023986/</guid>
    <link>https://habr.com/ru/companies/llmstart/posts/1023986/?utm_campaign=1023986&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Дорожная карта Agentic AI. Level 3. Первые артефакты — LLM API и структурированный вывод</strong></p><figure class=""><img src="https://habrastorage.org/webt/a2/b4/42/a2b442edd45e043e3bb591d7398fa2be.png" alt="Дорожная карта Agentic AI — Level 3. Первые артефакты: LLM API и структурированный вывод" title="Level 3. Первые артефакты — LLM API и структурированный вывод"><div><figcaption>Level 3. Первые артефакты — LLM API и структурированный вывод</figcaption></div></figure><p>Продолжаем идти по дорожной карте. Пришло время научиться обращаться к моделям через API.</p><p>— А куда обращаться? — спросите вы.</p><p>Есть несколько вариантов.</p><ol><li><p>Первый — на серверы производителей: старым добрым ChatGPT, DeepSeek, Gemini, Qwen.</p></li><li><p>Второй — к хабам опенсорс-моделей, например <a href="https://huggingface.co/docs/huggingface_hub/v1.3.1/en/guides/inference" rel="noopener noreferrer nofollow">HuggingFace</a>.</p></li><li><p>Третий — к провайдерам-агрегаторам, которые предоставляют и то и другое: <a href="https://openrouter.ai/" rel="noopener noreferrer nofollow">Openrouter</a>, <a href="https://www.together.ai/" rel="noopener noreferrer nofollow">Together</a>, <a href="https://fireworks.ai/" rel="noopener noreferrer nofollow">Fireworks</a>.</p></li></ol><p>К сожалению, форматы API у всех отличаются и обладают своей спецификой. А нам это неудобно, так как мы точно захотим экспериментировать с разными моделями и сервисами.</p><p>Но, к счастью, OpenAI был впереди планеты всей, и его <a href="https://platform.openai.com/docs/quickstart" rel="noopener noreferrer nofollow">формат</a> стал стандартом де-факто.</p><p>Поэтому начните с <a href="https://platform.openai.com/docs/libraries?language=python" rel="noopener noreferrer nofollow">интерфейса OpenAI</a>, возьмите провайдер <a href="https://openrouter.ai/docs/quickstart#using-the-openai-sdk" rel="noopener noreferrer nofollow">Openrouter</a>. Изучите спецификацию, форматы сообщений, поэкспериментируйте с системным промптом, параметрами генерации, <a href="https://platform.openai.com/docs/guides/streaming-responses" rel="noopener noreferrer nofollow">потоковым выводом</a>. Изучите мета-информацию в ответе — количество токенов, время генерации.</p><p>Обязательно разберитесь со <strong>структурированным выводом</strong>: это когда модель возвращает не просто текст, а JSON строго по вашей схеме. В агентных пайплайнах без этого никуда — именно так агенты передают данные друг другу и вызывают инструменты.</p><p>Сгенерируйте своего первого ИИ-ассистента, благо кодовые агенты отлично умеют генерировать код для OpenAI-библиотек. Изучайте основы, не гонитесь сразу за фреймворками верхнего уровня — с ними познакомимся позже.</p><p>📚 <strong>Материалы</strong></p><ul><li><p><a href="https://youtu.be/Sd8FXPzMIuo" rel="noopener noreferrer nofollow">Наш видео-туториал по OpenAI API</a></p></li><li><p><a href="https://platform.openai.com/docs/quickstart" rel="noopener noreferrer nofollow">OpenAI Quickstart</a> · <a href="https://github.com/openai/openai-python" rel="noopener noreferrer nofollow">Python SDK</a> · <a href="https://platform.openai.com/docs/guides/streaming-responses" rel="noopener noreferrer nofollow">Streaming</a></p></li><li><p><a href="https://huggingface.co/docs/huggingface_hub/v1.3.1/en/guides/inference" rel="noopener noreferrer nofollow">HuggingFace Inference API</a></p></li><li><p><a href="https://openrouter.ai/docs/quickstart" rel="noopener noreferrer nofollow">Openrouter Quickstart</a> · <a href="https://www.together.ai/" rel="noopener noreferrer nofollow">Together AI</a> · <a href="https://fireworks.ai/" rel="noopener noreferrer nofollow">Fireworks AI</a></p></li></ul><p>🔔 Следующая тема: мультимодальность — голос, изображения, видео.</p><p>⬅️ Предыдущая тема: <a href="https://habr.com/ru/posts/1021516/" rel="noopener noreferrer nofollow">Level 2. AI-driven разработка</a></p><p>Подписывайтесь, пожалуйста, чтобы не пропустить!</p><p>Наши <a href="https://llmstart.ru/?utm_source=habr&amp;utm_medium=post&amp;utm_campaign=agentic-roadmap#programs-section" rel="noopener noreferrer nofollow">курсы</a> по ИИ-агентам. По вопросам — пишите <a href="https://t.me/smirnoff_ai" rel="noopener noreferrer nofollow">мне</a>.</p> <a href="https://habr.com/ru/posts/1023986/?utm_campaign=1023986&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 17 Apr 2026 05:31:20 GMT</pubDate>
    <dc:creator><![CDATA[smirnoff_ai (LLMStart.ru)]]></dc:creator>
      
      <category><![CDATA[ai]]></category><category><![CDATA[llm]]></category><category><![CDATA[json]]></category><category><![CDATA[structured output]]></category><category><![CDATA[openai]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @MaxRokatansky — Блог компании OTUS (+1) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/otus/posts/1021906/</guid>
    <link>https://habr.com/ru/companies/otus/posts/1021906/?utm_campaign=1021906&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>13 демо-уроков апреля для разработчиков: от REST API и SQL до Bun, C++ и микросервисов</strong></p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/996/700/81e/99670081e88d0dd765d56d6e0ed1a60d.png" width="1800" height="980"></figure><p>Привет, Хабр. Эти уроки проведут преподаватели курсов Отус в преддверии старта новых потоков. На них можно узнать о формате обучения, пообщаться с экспертами и заодно закрыть пробелы в знаниях по интересующей теме. Участие бесплатное. Присоединяйтесь!</p><p><strong>15 апреля, среда:</strong></p><ul><li><p> 18:00 — <a href="https://otus.pw/clNy/" rel="noopener noreferrer nofollow">Основы протокола HTTP </a></p></li><li><p> 20:00 — <a href="https://otus.pw/tOWf/" rel="noopener noreferrer nofollow">OpenAPI + Spring </a></p></li><li><p> 20:00 — <a href="https://otus.pw/noy9/" rel="noopener noreferrer nofollow">Локализация текстов в Symfony: от статических переводов к динамическим данным из базы </a></p></li><li><p> 20:00 — <a href="https://otus.pw/lolE/" rel="noopener noreferrer nofollow">Основы проектирования бизнес-логики в микросервисной архитектуре</a> </p></li></ul><p><strong>16 апреля, четверг</strong>:</p><ul><li><p> 20:00 — <a href="https://otus.pw/GnZqj/" rel="noopener noreferrer nofollow">Облегчённые (Slim) примитивы синхронизации </a></p></li><li><p> 20:00 — <a href="https://otus.pw/ZDNV/" rel="noopener noreferrer nofollow">Архитектура ИИ-сервисов для High-Load и Low-Latency инференса </a></p></li></ul><p><strong>21 апреля, вторник:</strong></p><ul><li><p> 20:00 — <a href="https://otus.pw/G1FHF/" rel="noopener noreferrer nofollow">Функции в SQL: вычисления и переиспользование кода </a></p></li><li><p> 20:00 — <a href="https://otus.pw/wrjF/" rel="noopener noreferrer nofollow">Производительность кода на примере алгоритмов сортировки </a></p></li></ul><p><strong>22 апреля, среда:</strong></p><ul><li><p> 20:00 — <a href="https://otus.pw/fc1Vl/" rel="noopener noreferrer nofollow">Bun + ИИ: создаём быстрый сервер нового поколения на JavaScript (Bun — современная среда выполнения JavaScript; ИИ — искусственный интеллект) </a></p></li><li><p> 20:00 — <a href="https://otus.pw/UEor/" rel="noopener noreferrer nofollow">Symfony Workflow: конечный автомат для реализации бизнес-логики </a></p></li></ul><p><strong>23 апреля, четверг:</strong></p><ul><li><p> 20:00 — <a href="https://otus.pw/aMwl/" rel="noopener noreferrer nofollow">Многопоточность в C++: как писать быстрые и безопасные приложения</a> </p></li><li><p> 20:00 — <a href="https://otus.pw/9glk/" rel="noopener noreferrer nofollow">Паттерны RESTful API. Как проектировать удобные, масштабируемые и гибкие API? </a></p></li></ul><p><strong>29 апреля, среда:</strong></p><ul><li><p> 20:00 — <a href="https://otus.ru/lessons/razrabotchik-php?utm_source=habr&amp;utm_medium=affilate&amp;utm_campaign=post_ol_part&amp;utm_content=mql-13-demo-urokov-aprelya-dlya-razrabotchikov-ot-rest-api-i-sql-do-bun-c-plus-plus-i-mikroservisov&amp;utm_term=2026.04.13_backend#event-7098" rel="noopener noreferrer nofollow">PHP-разработчик. Продвинутый уровень</a></p></li></ul> <a href="https://habr.com/ru/posts/1021906/?utm_campaign=1021906&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 14 Apr 2026 08:35:42 GMT</pubDate>
    <dc:creator><![CDATA[MaxRokatansky (OTUS)]]></dc:creator>
      
      <category><![CDATA[подборка вебинаров]]></category><category><![CDATA[бесплатные уроки]]></category><category><![CDATA[бэкенд-разработка]]></category><category><![CDATA[карьера в ит]]></category><category><![CDATA[профессиональное развитие]]></category><category><![CDATA[lifelong education]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @250w — Контент и копирайтинг (+4) — 12.04.2026 08:33]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1022416/</guid>
    <link>https://habr.com/ru/posts/1022416/?utm_campaign=1022416&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Как научиться печатать вслепую за час.</p><p>Предлагаю способ без тренажеров за один час научиться печатать вслепую на клавиатуре. Слепая печать это стиль набора текста при котором печатающий не ищет каждый раз нужные клавиши глазами, а знает их местонахождение наизусть, и задействует при печати все пальцы.</p><p>Способ обучения состоит из трех шагов. </p><p>Первый шаг. За полчаса запоминаем три последовательности букв в верхнем, среднем и нижнем ряду клавиатуры. Для этого можно запомнить три последовательности </p><p>ЙЦУ КЕНГуру ШЩаЗ ХЪ </p><p>ФЫВА ПРО ЛоДЖЭя </p><p>мЯЧ СМИТ ЬБьЮ, </p><p>в которых нужно пропускать строчные буквы.  </p><p>Для запоминания английской раскладки запомните три последовательности </p><p>Q WERTY U I OP! </p><p>AS DFGHiJKL </p><p>ZXCVBNM,. </p><p>Второй шаг. Располагаем кисти так, чтобы указательные пальцы опирались на клавиши с бугорками - А и О. Печатаем на ощупь в течении получаса. Если у вас нет своего текста, можно воспользоваться Гонками на клавиатуре <a href="https://www.google.com/search?q=%D0%B3%D0%BE%D0%BD%D0%BA%D0%B8+%D0%BD%D0%B0+%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D0%B0%D1%82%D1%83%D1%80%D0%B5&amp;oq=%D0%B3%D0%BE%D0%BD%D0%BA%D0%B8+%D0%BD%D0%B0+%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D0%B0%D1%82%D1%83%D1%80%D0%B5" rel="noopener noreferrer nofollow">https://www.google.com/search?q=гонки+на+клавиатуре</a>. При этом если расположение буквы уже запомнилось, то нажимаем ее правильным пальцем. Если расположение клавиши не запомнилось, то, не глядя на клавиатуру, ощупываем  слева на право клавиши в нужном ряду, пока не найдем искомую букву. Например, для нажатия буквы Т ощупываем мизинцем левой руки букву Я, безымянным - букву Ч, средним - С, указательным левой - М, указательным левой руки - букву И, указательным правой руки - букву Т. </p><p>Третий шаг. В дальнейшем печатаем вслепую, чтобы не забыть навыки. </p><p>По необходимости повторяем предыдущие шаги. </p><p>Метод слепой печати позволит ускорить ввод текста в несколько раз, не думать о расположении клавиш, на зависеть от наличия света. Навык слепой печати пригодится тем, кто часто пользуется компьютером, подчеркнет ваши высокие профессиональные качества. Слепой метод позволяет печатать двести знаков в минуту. Модифицируйте предложенный способ обучения под ваши обстоятельства и особенности.</p> <a href="https://habr.com/ru/posts/1022416/?utm_campaign=1022416&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sun, 12 Apr 2026 05:33:15 GMT</pubDate>
    <dc:creator><![CDATA[250w]]></dc:creator>
      
      <category><![CDATA[печать]]></category><category><![CDATA[печать вслепую]]></category><category><![CDATA[ввод данных]]></category><category><![CDATA[ввод текста]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @abratko — Управление проектами (+1) — 10.04.2026 14:27]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1021838/</guid>
    <link>https://habr.com/ru/posts/1021838/?utm_campaign=1021838&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Пятничный пост. Рубрика - узнай себя и что было дальше?</strong><br></p><p>— Привет. В этом спринте наш главный приоритет — это обработка больших данных из файла, который загружает пользователь. Тебе предстоит сделать пошаговую форму и предварительную проверку перед отправкой, — уверенным голосом сказал Виталий — руководитель проекта.<br>— Бизнес очень хочет эту фичу и ждёт, — добавил он, повышая уровень ответственности и важности задачи.<br>— Но… перед этим есть маленькая задачка: нужно в форме группового добавления товаров в корзину показать ошибки, которые возвращает сервер.<br><br>Подключились ребята с бэка.<br>— Раньше у нас этого не было, мы просто падали. Сейчас для каждого отдельного запроса может быть своя ошибка. Мы обсудили это с Виталием и Викой на прошлой неделе и быстро всё сделали, — декларировали они, явно удовлетворённые результатом своей работы.<br><br>— Да… там простой процесс: пользователь нажимает кнопку, и для каждого поля уходит свой запрос. Нужно просто показать ошибки, — подтвердила Вика — аналитик.</p><p>Вдруг я ощутил, что все смотрят на меня, и даже бизнес, которого не было в комнате.</p><p>Тестировщик Николай молчал и, кажется, тянулся за попкорном.<br>— Я не при делах, меня на совещании не было, — читалось в его глазах.</p><p>— Не уверен… что это можно сделать быстро. Там много старого кода и логики, запросы работают параллельно, мы вообще не обрабатываем ошибки в этой форме. Просто закрываем модалку. Нужно подумать… — сделал я слабую попытку возразить.</p><p>— Ну, так… форма же уже работает. Это простое отображение ошибок. Бизнес хочет, чтобы в конце недели это было на проде. Ок…? — закончил вопросом-утверждением Виталий.</p><p>— Ок… — зачем-то ответил я. «Б…!!! Зачем я это сказал?!» — тут же промелькнуло у меня в голове, и две половинки моего тела чуть ниже спины нервно сжались в предвкушении нюансов…<br><br><strong>Кого узнали и что было дальше? </strong></p> <a href="https://habr.com/ru/posts/1021838/?utm_campaign=1021838&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 10 Apr 2026 11:27:16 GMT</pubDate>
    <dc:creator><![CDATA[abratko]]></dc:creator>
      
      <category><![CDATA[управление людьми]]></category><category><![CDATA[управление командой]]></category><category><![CDATA[управление проектами]]></category><category><![CDATA[цели]]></category><category><![CDATA[фокусировка]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @smirnoff_ai — Блог компании LLMStart.ru (+4) — 09.04.2026 19:24]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/llmstart/posts/1021516/</guid>
    <link>https://habr.com/ru/companies/llmstart/posts/1021516/?utm_campaign=1021516&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Дорожная карта Agentic AI. Level 2. Ускорение — AI-driven development</strong></p><figure class=""><img src="https://habrastorage.org/webt/57/d8/06/57d80629aea8d7719768edb5926e7f27.png" alt="Дорожная карта Agentic AI — Level 2. Ускорение: AI-driven development" title="Level 2. Ускорение — AI-driven development"><div><figcaption>Level 2. Ускорение — AI-driven development</figcaption></div></figure><p>Кодовые агенты — вторая тема дорожной карты, и я поставил её сюда не случайно.</p><p>Во-первых, это мощнейший инструментарий, который кратно ускорит и обучение, и разработку — а значит, овладеть им надо как можно раньше. Во-вторых, именно он делает освоение сферы доступным не только опытным программистам, а всем, кто не боится исходного кода. Ну и в-третьих — кодовые агенты сами по себе эталон реализации ИИ-агентов, к которому стоит стремиться.</p><p>Для начала ознакомьтесь с разнообразием инструментов:</p><ul><li><p><strong>Онлайн-прототипирование:</strong> <a href="https://v0.app/" rel="noopener noreferrer nofollow">V0</a>, <a href="https://bolt.new/" rel="noopener noreferrer nofollow">Bolt</a>, <a href="https://lovable.dev/" rel="noopener noreferrer nofollow">Lovable</a>, <a href="https://replit.com/" rel="noopener noreferrer nofollow">Replit</a></p></li><li><p><strong>Консольные агенты:</strong> <a href="https://code.claude.com/" rel="noopener noreferrer nofollow">Claude Code</a>, <a href="https://github.com/openai/codex" rel="noopener noreferrer nofollow">Codex CLI</a>, <a href="https://github.com/google-gemini/gemini-cli" rel="noopener noreferrer nofollow">Gemini CLI</a>, <a href="https://www.warp.dev/" rel="noopener noreferrer nofollow">Warp</a></p></li><li><p><strong>AI-coding IDE:</strong> <a href="https://cursor.com/" rel="noopener noreferrer nofollow">Cursor</a>, <a href="https://windsurf.com/" rel="noopener noreferrer nofollow">Windsurf</a></p></li><li><p><strong>Spec-Driven IDE:</strong> <a href="https://kiro.dev/" rel="noopener noreferrer nofollow">Kiro</a>, <a href="https://qoder.com/" rel="noopener noreferrer nofollow">Qoder</a></p></li></ul><p>Я работаю в Cursor и рекомендую начать с него. Почувствуйте, насколько удобнее работать с моделями в проекте, открытом на вашем компьютере — без ручной загрузки файлов и копирования в веб-интерфейсы. И главное — работайте только через агента, на всех этапах: требования, аналитика, проектирование, кодинг, тестирование, деплой, документация, онбординг, реверс-инжиниринг.</p><p>Три вещи, которые я настраиваю первым делом:</p><ul><li><p><strong><a href="https://cursor.com/docs/skills" rel="noopener noreferrer nofollow">Skills</a></strong> — для меня это самый мощный и пока сильно недооценённый инструмент. Скилл — инструкция-специалист: агент читает SKILL.md и получает роль, знания и алгоритм. Аналитик, архитектор, тестировщик, DevOps — можно собрать целую команду специалистов под проект. Формат уже стал кросс-платформенным — один SKILL.md работает в Cursor, Claude Code и Codex.</p></li><li><p><strong><a href="https://cursor.com/docs/context/rules" rel="noopener noreferrer nofollow">Rules</a></strong> — постоянные инструкции: стиль кода, архитектурные решения, запреты.</p></li><li><p><strong><a href="https://cursor.com/docs/context/mcp" rel="noopener noreferrer nofollow">MCP</a></strong> — подключение внешних инструментов и актуальной документации. Попробуйте начать с MCP <a href="https://github.com/upstash/context7" rel="noopener noreferrer nofollow">Context7</a>.</p></li></ul><p>Крайне рекомендую изучить <a href="https://martinfowler.com/articles/exploring-gen-ai/sdd-3-tools.html" rel="noopener noreferrer nofollow">Spec-Driven методологию</a> и <a href="https://www.anthropic.com/engineering/claude-code-best-practices" rel="noopener noreferrer nofollow">лучшие практики работы с кодовыми агентами от Anthropic</a>.</p><p>На выходе с этого уровня у вас будет персональный кодовый ИИ-агент, который берёт рутину на себя, а вы фокусируетесь на архитектуре.</p><p>📚 <strong>Наши материалы</strong></p><ul><li><p><a href="https://habr.com/ru/articles/941934/" rel="noopener noreferrer nofollow">Умный вайб-кодинг</a></p></li><li><p><a href="https://habr.com/ru/articles/983808/" rel="noopener noreferrer nofollow">300 дней с AI-агентами</a></p></li><li><p><a href="https://habr.com/ru/articles/984656/" rel="noopener noreferrer nofollow">Лучшие практики от Cursor</a></p></li><li><p><a href="https://habr.com/ru/articles/1005494/" rel="noopener noreferrer nofollow">Третья эпоха AI-разработки</a></p></li><li><p>Видео: <a href="https://youtu.be/22v18mceY64" rel="noopener noreferrer nofollow">AI-driven разработка</a> · <a href="https://youtu.be/sPx-IlHaxFo" rel="noopener noreferrer nofollow">Qoder</a> · <a href="https://youtu.be/myex7aX32k4" rel="noopener noreferrer nofollow">Claude Code</a> · <a href="https://youtu.be/m0my5ogJitk" rel="noopener noreferrer nofollow">Gemini CLI</a></p></li></ul><p>🔔 Следующая тема: <a href="https://habr.com/ru/posts/1023986/" rel="noopener noreferrer nofollow">работа с LLM API</a>.</p><p>⬅️ Предыдущая тема: <a href="https://habr.com/ru/posts/1020524/" rel="noopener noreferrer nofollow">Level 1. Основы LLM и промпт-инжиниринг</a></p><p>Подписывайтесь, пожалуйста, чтобы не пропустить!</p><blockquote><p>🎓 <strong>Приглашаем на бесплатный мастер-класс</strong><br> 📅 13 апреля, пнд 16:00 МСК — AI-driven практикум «ИИ-агент с нуля за один эфир»<br> 👉 Записывайтесь в наших ботах: <a href="https://t.me/llmstart_bot" rel="noopener noreferrer nofollow">Telegram</a> или <a href="https://vk.com/write-227031401" rel="noopener noreferrer nofollow">ВКонтакте</a></p></blockquote><p><em>Наши </em><a href="https://llmstart.ru/?utm_source=habr&amp;utm_medium=post&amp;utm_campaign=agentic-roadmap-03#programs-section" rel="noopener noreferrer nofollow"><em>курсы</em></a><em> по ИИ-кодингу ИИ-агентов. По вопросам — пишите </em><a href="https://t.me/smirnoff_ai" rel="noopener noreferrer nofollow"><em>мне</em></a><em>.</em></p> <a href="https://habr.com/ru/posts/1021516/?utm_campaign=1021516&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Thu, 09 Apr 2026 16:24:14 GMT</pubDate>
    <dc:creator><![CDATA[smirnoff_ai (LLMStart.ru)]]></dc:creator>
      
      <category><![CDATA[ai]]></category><category><![CDATA[aicoding]]></category><category><![CDATA[vibecoding]]></category><category><![CDATA[aidd]]></category><category><![CDATA[ai-agents]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @veta_pf — Блог компании МТС (+3) — 09.04.2026 14:58]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/ru_mts/posts/1021364/</guid>
    <link>https://habr.com/ru/companies/ru_mts/posts/1021364/?utm_campaign=1021364&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Подключайся ко второму онлайн-митапу MWS для Python-разработчиков 🎙️</strong></p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/f7b/c05/9e7/f7bc059e7709b757e2d6c680bdcfcb1a.png" width="1920" height="1080"></figure><p>На встрече <strong>узнаешь нюансы разработки с агентом </strong>и сразу <strong>сможешь попрактиковаться</strong>, а еще — <strong>поучаствовать в дискуссии</strong> <strong>с экспертами</strong> о роли ИИ в рабочих процессах.</p><p>Будет интересно Python-разработчикам, аналитикам и другим ИТ-специалистам, кто интересуется применением ИИ в разработке.</p><ul><li><p>📅 Когда: 15 апреля (среда) в 15:00 по мск</p></li><li><p>📍 Где: онлайн&nbsp;</p></li><li><p>👉 <a href="https://mts-digital.ru/events/details?id=72858541?utm_source=habr&amp;utm_medium=post&amp;utm_campaign=vstrecha_python_090426" rel="noopener noreferrer nofollow">Зарегистрироваться</a></p></li></ul> <a href="https://habr.com/ru/posts/1021364/?utm_campaign=1021364&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Thu, 09 Apr 2026 11:58:33 GMT</pubDate>
    <dc:creator><![CDATA[veta_pf (МТС)]]></dc:creator>
      
      <category><![CDATA[онлайн-встреча]]></category><category><![CDATA[mws]]></category><category><![CDATA[разработка]]></category><category><![CDATA[ии в разработке]]></category><category><![CDATA[pyton]]></category><category><![CDATA[разработка с ии]]></category><category><![CDATA[ит-сообщество]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @smirnoff_ai — Блог компании LLMStart.ru (+4) — 07.04.2026 20:04]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/llmstart/posts/1020524/</guid>
    <link>https://habr.com/ru/companies/llmstart/posts/1020524/?utm_campaign=1020524&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Дорожная карта Agentic AI. Level 1. Основы LLM и промпт-инжиниринг</strong></p><figure class=""><img src="https://habrastorage.org/webt/8c/2f/ab/8c2fab383e2db095925a0895e2425299.png" alt="Дорожная карта Agentic AI — Level 1. Быстрый старт: основы LLM и промпт-инжиниринг" title="Level 1. Основы LLM и промпт-инжиниринг"><div><figcaption>Level 1. Основы LLM и промпт-инжиниринг</figcaption></div></figure><p>Начну нашу дорожную карту Agentic AI с языковых моделей.</p><p>Сразу оговорюсь: важнее не глубина знаний про их устройство, а умение разбираться в широте возможностей и многообразии их применения. Иными словами, учимся профессиональному вождению, а не сборке автомобиля.</p><p>Важно ознакомиться с принципами работы моделей, генерации токенов, вариаций архитектур — на уровне того, чтобы понимать:</p><ul><li><p>параметры моделей и основные термины (размер, веса, токены, контекстное окно, галлюцинации),</p></li><li><p>способы оптимизации (квантизация, прунинг, дистилляция),</p></li><li><p>способности к размышлению, ведению диалога, следованию инструкциям, обработке не только текста, но и медиа-контента.</p></li></ul><p>Главное — практиковаться. Я взял себе за правило: каждую задачу сначала через ИИ. Пишу код? Промпт. Анализирую данные? Промпт. Пишу письмо? Промпт. Делаю презентацию? Промпт.</p><p>Чтобы делать это качественно — прокачивайте навык писать промпты, изучите гайды по промпт-инжинирингу от вендоров. Результат на выходе зависит от качества контекста и точности инструкций.</p><p>Изучите гайды, пробуйте разные модели, начните с топовых: ChatGPT, Claude, Gemini, DeepSeek, Qwen. Отечественные: YandexGPT, GigaChat.</p><p>Прокачайте насмотренность, набейте руку, пройдите по аренам, лидербордам, бенчмаркам — научитесь понимать, в чём одни модели сильнее других.</p><p>На выходе будете как рыба в воде: выбирать модель под задачу и качественно с ней работать.</p><p>📚 <strong>Материалы</strong></p><ul><li><p>Как работают LLM: <a href="https://www.promptingguide.ai/ru" rel="noopener noreferrer nofollow">Prompting Guide</a>, визуализации — <a href="https://bbycroft.net/llm" rel="noopener noreferrer nofollow">LLM Visualizer</a> и <a href="https://poloclub.github.io/transformer-explainer/" rel="noopener noreferrer nofollow">Transformer Explainer</a>, <a href="https://www.youtube.com/playlist?list=PLlLIAoinpfyGwPE42Md2y2iSnIOBnQ9K1" rel="noopener noreferrer nofollow">наш плейлист с объяснениями основ</a>.</p></li><li><p>Промпт-инжиниринг от вендоров: <a href="https://cookbook.openai.com/examples/gpt-5/gpt-5-2_prompting_guide" rel="noopener noreferrer nofollow">OpenAI Cookbook</a>, <a href="https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/overview" rel="noopener noreferrer nofollow">Anthropic Prompt Engineering</a>, <a href="https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-4-best-practices" rel="noopener noreferrer nofollow">Claude 4 best practices</a>.</p></li><li><p>Выбор модели: <a href="https://youtu.be/G5lYfNWx-vk" rel="noopener noreferrer nofollow">видео-гайд</a>, лидерборды — <a href="https://lmarena.ai/ru/leaderboard" rel="noopener noreferrer nofollow">LM Arena</a>, <a href="https://llmarena.ru/" rel="noopener noreferrer nofollow">LLM Arena RU</a>, <a href="https://www.swebench.com/index.html" rel="noopener noreferrer nofollow">SWE-bench</a>. Хаб моделей: <a href="https://huggingface.co/" rel="noopener noreferrer nofollow">Hugging Face</a>.</p></li></ul><p>🔔 Следующая тема: AI-driven разработка — как грамотно ускорять разработку в X раз.</p><p>⬅️ Предыдущая тема: <a href="https://habr.com/ru/posts/1018720/" rel="noopener noreferrer nofollow">Дорожная карта Agentic AI. Интро</a></p><p>Подписывайтесь, пожалуйста, чтобы не пропустить!</p><blockquote><p>🎓 <strong>Бесплатные мероприятия на этой неделе</strong></p><ul><li><p>📅 <strong>9 апреля, чт 18:00</strong> — Онлайн-разбор продакшен-кейса «ИИ-агент консультанта 1С»</p></li><li><p>📅 <strong>13 апреля, пнд 16:00</strong> — AI-driven практикум «ИИ-агент с нуля за один эфир»</p></li></ul><p>👉 Записывайтесь на мероприятия в наших ботах: <a href="https://t.me/llmstart_bot" rel="noopener noreferrer nofollow">Telegram</a> или <a href="https://vk.com/write-227031401" rel="noopener noreferrer nofollow">ВКонтакте</a></p></blockquote><p><em>Ознакомьтесь с нашей </em><a href="https://llmstart.ru/ai-agents-combo/?utm_source=habr&amp;utm_medium=post&amp;utm_campaign=agentic-roadmap-01#programs-section" rel="noopener noreferrer nofollow"><em>траекторией роста по AI-driven разработке и ИИ-агентам</em></a><em>.</em></p> <a href="https://habr.com/ru/posts/1020524/?utm_campaign=1020524&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 07 Apr 2026 17:04:52 GMT</pubDate>
    <dc:creator><![CDATA[smirnoff_ai (LLMStart.ru)]]></dc:creator>
      
      <category><![CDATA[ai]]></category><category><![CDATA[agents]]></category><category><![CDATA[ии-агенты]]></category><category><![CDATA[llm]]></category><category><![CDATA[prompt-engineering]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @EddyLan — Блог компании Open Data Science (+3) — 07.04.2026 10:00]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/ods/posts/1020168/</guid>
    <link>https://habr.com/ru/companies/ods/posts/1020168/?utm_campaign=1020168&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>ИИ-код и линтеры: статический анализ проекта на 85 000 строк</strong></p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/25d/31b/ff5/25d31bff5ecb88ab0a5a426f8d2eef69.png" alt="Таблица с результатами проверки" title="Таблица с результатами проверки" width="1536" height="1024"><div><figcaption>Таблица с результатами проверки</figcaption></div></figure><div class="floating-image"><p>Недавно опубликовал <a href="https://habr.com/ru/companies/ods/articles/1019454/" rel="noopener noreferrer nofollow">статью о разработке шахматного веб-сервиса с помощью Claude Code и Codex</a>. В комментариях попросили показать результаты статического анализа. Разумный запрос — давайте посмотрим на цифры.</p><p><strong>Стиль и ошибки кода</strong></p></div><p><strong>ruff (Python)</strong> — 73 замечания на 63 000 строк. 1.2 на 1000 строк.</p><p>Состав: 39 неиспользуемых импортов, 17 неиспользуемых переменных, 6 forward references, 5 f-строк без подстановок, 5 лямбд вместо def. Ноль ошибок, от которых код падает в рантайме.</p><p><strong>ESLint (React/TypeScript)</strong> — 0 ошибок, 5 warnings на 21 000 строк. Все пять — рекомендация Next.js использовать <code>&lt;Image&gt;</code> вместо <code>&lt;img&gt;</code>.</p><p><u>Для сравнения:</u><br>- Зрелый проект с CI-линтингом — 0–2 замечания на 1000 строк. <br>- Без линтинга — 5–15. <br>- Легаси — 20–50. </p><p><em>У нас 1.2 и 0.24, при том что CI-линтинга в проекте нет. Claude и Codex запускают ruff и eslint сами на каждое изменение — я вижу это в логах. Результат соответствующий.</em></p><p><strong>Безопасность</strong></p><p>ruff и ESLint проверяют стиль, не безопасность. По совету из комментариев прогнал <strong>bandit</strong> — security-сканер для Python.</p><p>1 432 находки. Реальных уязвимостей: <strong>0</strong>.</p><ul><li><p><strong>2 HIGH</strong>&nbsp;— SHA1 для fingerprint'а шахматных партий. Это не криптография, а генерация коротких ID для внутренней классификации. Подделывать бессмысленно.</p></li><li><p><strong>5 MEDIUM</strong>&nbsp;«SQL injection» — bandit видит f-string в SQL-запросе и сигнализирует. Но внутри f-string стоят только&nbsp;<code>?</code>-плейсхолдеры, данные идут параметрами. Классическая параметризация, инъекция невозможна.</p></li><li><p><strong>4 MEDIUM</strong>&nbsp;«url open» — HTTP-клиенты Lichess, Chess.com, OpenRouter. URL из конфига, пользователь не контролирует.</p></li><li><p><strong>1 421 LOW</strong>&nbsp;— 1 250 assert'ов (bandit предупреждает, что&nbsp;<code>assert</code>&nbsp;удаляется при запуске с&nbsp;<code>-O</code>, но Django и Celery никто так не запускает), остальное — try/except/pass в опциональных ветках.</p></li></ul><p>Фронтенду отдельный security-сканер не нужен: React экранирует HTML автоматически, <code>dangerouslySetInnerHTML</code> не используется, фронт не работает с БД, файлами и процессами.</p><p><strong><em>85 000 строк, три сканера, ноль реальных уязвимостей. ИИ-код не нуждается в оправданиях — он нуждается в проверке. Проверили. Чисто.</em></strong></p><p>p.s. Проверку проходил код из статьи <a href="https://habr.com/ru/companies/ods/articles/1019454/" rel="noopener noreferrer nofollow">Вайбкодинг по Chess’ноку. 1. e4</a></p> <a href="https://habr.com/ru/posts/1020168/?utm_campaign=1020168&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 07 Apr 2026 07:00:40 GMT</pubDate>
    <dc:creator><![CDATA[EddyLan (Open Data Science)]]></dc:creator>
      
      <category><![CDATA[codex]]></category><category><![CDATA[ии-агенты]]></category><category><![CDATA[claude code]]></category><category><![CDATA[линтеры]]></category><category><![CDATA[lanchess]]></category><category><![CDATA[вайбкодинг]]></category><category><![CDATA[статический анализ]]></category><category><![CDATA[ruff]]></category><category><![CDATA[bandit]]></category><category><![CDATA[шахматы]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @GarantexAi — Программирование (+1) — 06.04.2026 12:49]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1019804/</guid>
    <link>https://habr.com/ru/posts/1019804/?utm_campaign=1019804&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Как за 11 лет разучиться дебажить: когнитивная атрофия от AI-инструментов</p><p>На Reddit разработчик с 11-летним стажем описал тревожный момент: он не смог отладить баг в собственном коде без Claude. Не потому что баг сложный, а потому что разучился генерировать гипотезы самостоятельно.</p><p>Что произошло</p><p>Разработчик столкнулся с нестабильным багом сетевых таймаутов в продакшене. Сервис писал сам, два года назад. Раньше подобная проблема решалась за час методичной работы. Теперь 40 минут пинг-понга с Claude без результата.</p><p>Когда он закрыл чат и попробовал разобраться сам, обнаружил: внутренний диалог, который раньше подсказывал «проверь пул соединений», «может retry storm», «посмотри балансировщик», стал заметно тише.</p><p>Баг он в итоге нашёл. Но медленнее, чем три года назад, когда AI ещё не использовал.</p><p>Почему это не про «AI плохой»</p><p>Автор подчёркивает: инструменты полезные, он пользуется ими каждый день. Проблема в другом. Навык генерации гипотез в условиях неопределённости деградирует без практики.</p><p>Это подтверждает концепция Cognitive Offloading. При систематическом переносе мыслительных операций на внешние инструменты ослабевают нейронные связи, отвечающие за эти процессы.</p><p>Классический пример — GPS-навигация. Исследование в Nature Communications (2017) показало: люди, которые постоянно ездят по навигатору, хуже справляются с задачами пространственной ориентации, чем те, кто периодически строит маршруты сами.</p><p>Где это ломается у разработчиков</p><p>На практике выделяются три зоны риска:</p><p><strong>Генерация гипотез</strong><br> AI отлично проверяет гипотезы. Но если перестать генерировать их самостоятельно, навык быстро деградирует. Через полгода становится сложно просто «посидеть» с проблемой.</p><p><strong>Валидация решений</strong><br> Раньше разработчики продумывали архитектуру и решения самостоятельно. Теперь часто тянутся к AI за подтверждением. В итоге снижается доверие к собственной экспертизе.</p><p><strong>Коммуникация</strong><br> Некоторые прогоняют через AI даже сообщения коллегам. Возникает размывание авторства мысли: это ты формулируешь или инструмент за тебя.</p><p>Контраргумент: а Stack Overflow?</p><p>Частое возражение: разработчики годами копировали решения с Stack Overflow и не деградировали.</p><p>Разница в модели взаимодействия:</p><ol><li><p> Нужно сформулировать проблему </p></li><li><p> Найти релевантный ответ </p></li><li><p> Адаптировать решение под свой контекст </p></li></ol><p>С AI можно просто описать симптомы и получить готовый ответ. Порог входа ниже, а значит выше риск делегировать мышление полностью.</p><p>Что делать: практические подходы</p><p><strong>Правило 5 минут</strong><br> Перед тем как открыть Claude, потратить 5 минут на самостоятельный анализ stack trace. Это простой способ «включить» мышление.</p><p><strong>Unplugged-сессии</strong><br> Периодически дебажить без AI. Например, один час в неделю. Это не ограничение, а тренировка.</p><p><strong>Приходить с гипотезами</strong><br> Разница между джуном и сеньором в работе с AI: джун ждёт решение, сеньор приносит несколько гипотез и использует AI как инструмент проверки.</p><p><strong>Рефлексия после решения</strong><br> После решения с помощью AI зафиксировать, какие гипотезы ты мог бы выдвинуть сам. Это возвращает осознанность процессу.</p><p><strong>Честно</strong></p><p>Я не демонизирую AI-инструменты. Сам использую ежедневно. Но когнитивная атрофия — реальный риск, который стоит учитывать.</p><p>Если вы программируете много лет и замечаете, что раньше справлялись быстрее без AI, это не паранойя. Навык требует практики, а делегирование мышления — это решение с определённой ценой.</p><p>Интересно, замечали ли вы у себя похожий эффект? Не просто рост продуктивности, а именно ощущение, что раньше могли разобраться быстрее самостоятельно.</p> <a href="https://habr.com/ru/posts/1019804/?utm_campaign=1019804&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 06 Apr 2026 09:49:21 GMT</pubDate>
    <dc:creator><![CDATA[GarantexAi]]></dc:creator>
      
      <category><![CDATA[дебаг]]></category><category><![CDATA[продуктивность разработчика]]></category><category><![CDATA[навыки программиста]]></category><category><![CDATA[claude]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @olegchir — Программирование — 03.04.2026 20:25]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1019104/</guid>
    <link>https://habr.com/ru/posts/1019104/?utm_campaign=1019104&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Если кто-то вдруг использует мой Licensedog для сбора информации о техстеке.</p><p>С сегодняшним обновлением, оно успешно разыскало в интернете и проверило все 5546 зависимости одного из наших проектов, кроме 4 мусорных внутренних библиотек.</p><p>Научил работать с Java (раньше были только Python, JS и Go).  Починил целую пачку багов.</p><p>Это такой краулер, который принимает на вход SBOM (в виде CSV или cyclonedx) и потом сомневается в нем: старается обойти интернет, и на самом деле физически найти файлы с лицензиями. Выкачать их репозиториев, распаковать из архивов, или даже открыть в барузере их сайты и распарсить веб-странички. И фактически проверить на соответствие. В отчете описывает, что и откуда взялось, и почему она думает что лицензия на самом деле не MIT а GPL. На выходе получается CSV или JSONL файл, который можно отгружать безопасникам на ревью.</p><p>Исходники - как всегда, на GitVerse.</p><p><a href="https://gitverse.ru/anarchic/licensedog" rel="noopener noreferrer nofollow">https://gitverse.ru/anarchic/licensedog</a></p> <a href="https://habr.com/ru/posts/1019104/?utm_campaign=1019104&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 03 Apr 2026 17:25:24 GMT</pubDate>
    <dc:creator><![CDATA[olegchir]]></dc:creator>
      
      <category><![CDATA[sbom]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @smirnoff_ai — Блог компании LLMStart.ru (+4) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/llmstart/posts/1018720/</guid>
    <link>https://habr.com/ru/companies/llmstart/posts/1018720/?utm_campaign=1018720&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<figure class=""><img src="https://habrastorage.org/webt/57/24/a1/5724a180b19c471fb8f7d6cfea6573aa.png" alt="Дорожная карта Agentic AI — от основ до production-ready систем" title="Дорожная карта Agentic AI"><div><figcaption>Дорожная карта Agentic AI</figcaption></div></figure><p><strong>Дорожная карта Agentic AI: от основ до production-ready агентных систем</strong></p><p>Друзья, я решил в апреле разобрать горящую тему этого года - что надо знать и уметь для разработки production-ready ИИ-агентов.</p><p>По сути, это будет своеобразная дорожная карта Agentic AI Engineering — по этапам, от основ до зрелых систем.</p><p>Я буду выкладывать небольшие посты с раскрытием важных тем и ссылками на полезные материалы.</p><p>Пройдем по следующим темам, которые нужно освоить, чтобы создавать агентные системы готовые к продакшену:</p><ul><li><p>Основы языковых моделей и промпт-инжиниринг,</p></li><li><p>Работа с LLM API и структурированный вывод,</p></li><li><p>AI-driven разработка с ИИ-агентами,</p></li><li><p>Мультимодальность — голос, изображения,</p></li><li><p>Local inference — локальный запуск моделей,</p></li><li><p>RAG — как передать агенту знания о вашем бизнесе,</p></li><li><p>Agents —  агенты с памятью, инструментами и планированием,</p></li><li><p>MCP — стандарт интеграции агентов с внешними системами,</p></li><li><p>Observability &amp; Evaluation —  мониторинг и оценка качества RAG-систем и агентов,</p></li><li><p>Security &amp; Guards — безопасность агентных систем,</p></li><li><p>Управление датасетами и промптами,</p></li><li><p>Сontext-engineering — работа с большим контекстом,</p></li><li><p>Skills — навыки агентов,</p></li><li><p>Agent harness — решение сложных задач, субагенты и планирование,</p></li><li><p>Multi-agents — мультиагентные системы.</p></li></ul><p>В конце серии сформируется понимание того, что и в каком порядке осваивать, чтобы создаваемые решения работали в реальных условиях, а не оставались брошенными игрушками.</p><p>Это вводный пост с приглашением подписываться, чтобы не пропустить следующие темы.</p><p>Кстати, если есть пожелания по темам, что стоит добавить, то пишите в комментариях, пожалуйста.</p><p>🔔 Следующий пост: <a href="https://habr.com/ru/posts/1020524/" rel="noopener noreferrer nofollow">основы языковых моделей — с чего всё начинается</a>.</p><p>Больше про ИИ-кодинг и ИИ-агентов в <a href="https://t.me/aidialogs" rel="noopener noreferrer nofollow">ТГ</a> и <a href="https://vk.com/write-227031401" rel="noopener noreferrer nofollow">ВК</a>.<br> Приглашаю ознакомиться с нашими <a href="https://llmstart.ru/?utm_source=habr&amp;utm_medium=post&amp;utm_campaign=agentic-roadmap#programs-section" rel="noopener noreferrer nofollow">онлайн-курсами</a> по ИИ-разработке ИИ-агентов.</p> <a href="https://habr.com/ru/posts/1018720/?utm_campaign=1018720&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 03 Apr 2026 07:01:24 GMT</pubDate>
    <dc:creator><![CDATA[smirnoff_ai (LLMStart.ru)]]></dc:creator>
      
      <category><![CDATA[ai]]></category><category><![CDATA[agents]]></category><category><![CDATA[llm]]></category><category><![CDATA[rag]]></category><category><![CDATA[mcp]]></category><category><![CDATA[observability]]></category><category><![CDATA[evaluation]]></category><category><![CDATA[security]]></category><category><![CDATA[context-engineering]]></category><category><![CDATA[prompt-engineering]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Программирование (+3) — 03.04.2026 07:59]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1018762/</guid>
    <link>https://habr.com/ru/posts/1018762/?utm_campaign=1018762&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Разработчик Александр Гомес Гайгалас (<a href="https://github.com/alganet" rel="noopener noreferrer nofollow">Alexandre Gomes Gaigalas</a>), автор библиотеки <a href="https://github.com/alganet/coral" rel="noopener noreferrer nofollow">coral</a> для создания переносимых shell-скриптов, опубликовал проект <a href="https://gist.github.com/alganet/2b89c4368f8d23d033961d8a3deb5c19" rel="noopener noreferrer nofollow">C89cc.sh</a>. Это компилятор для языка C, написанный целиком на Shell. </p><p>Компилятор поддерживает стандарт C89 и может генерировать исполняемые файлы в формате ELF64 для систем x86-64. Исходный код проекта содержит около восьми тысяч строк и открыт под лицензией ISC. </p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/5cb/888/b43/5cb888b43c7d289db27177ab12a45862.png" width="1032" height="726"></figure> <a href="https://habr.com/ru/posts/1018762/?utm_campaign=1018762&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 03 Apr 2026 04:59:54 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[C89cc.sh]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @Viktoria_Arturovna — Веб-разработка (+1) — 02.04.2026 14:48]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1018474/</guid>
    <link>https://habr.com/ru/posts/1018474/?utm_campaign=1018474&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Будет слишком по девчачьи сказать, что я плакала из-за код ревью? </p><p>Это было года три или&nbsp;четыре назад, когда я ещё не&nbsp;нашла общий язык со своим новым тех.лидом. Тогда много всего накопилось, и каждый новый комментарий, хоть он и&nbsp;был очень корректным, ощущался как&nbsp;еще один удар сверху. Помню&nbsp;было что‑то из&nbsp;серии: «Тут надо изменить нейминг».</p><p>Ничего такого, вроде все ок. Но я смотрела на него и зависла в моменте: а что именно не так то? Есть какие то правила в новой команде, о которых я еще не знаю? Нужно переименовать только эту переменную или мне нужно пройтись по всему файлу?</p><p>Начинаешь писать ответ, ждешь уточнения, потом опять ответ... В какой то момент я просто закрыла ноут и разревелась. Я уже находилась в состоянии нервного клубка и такие комментарии добивали больше, чем любой жёсткий разнос. </p><p>Но самое забавное, спустя время я пересмотрела старые ПР и поняла, что мой техлид был максимально корректным и без токсичности. Просто я уже была на грани выгорания и каждый комментарий превращался в испытание. </p><p>Мне захотелось поделиться своими мыслями на тему код-ревью, о том как формулировки влияют на скорость работы и состояния людей:</p><blockquote><p><a href="https://habr.com/ru/companies/alfa/articles/1017452/" rel="noopener noreferrer nofollow">Ссылка на статью</a></p></blockquote><p>Если хоть раз сидел и думал: «что от меня тут вообще хотят?» — ты точно поймёшь&nbsp;:)</p> <a href="https://habr.com/ru/posts/1018474/?utm_campaign=1018474&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Thu, 02 Apr 2026 11:48:40 GMT</pubDate>
    <dc:creator><![CDATA[Viktoria_Arturovna]]></dc:creator>
      
      <category><![CDATA[code review]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @Editor_cloud_ru — Блог компании Cloud.ru (+3) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/cloud_ru/posts/1018074/</guid>
    <link>https://habr.com/ru/companies/cloud_ru/posts/1018074/?utm_campaign=1018074&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Как делать бизнес-процессы как в n8n — безопасно и масштабируемо? Узнаете на конференции GoCloud 2026 ☁️</strong>  </p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/7e7/9fa/a3b/7e79faa3b84b14d8e5329f418e646a94.png" width="3120" height="1760"></figure><blockquote><p>Расскажем, как обойти лимиты n8n для enterprise- и ИИ-систем: живой трейсинг и метрики из коробки, предсказуемое масштабирование, нативная работа с кастомными моделями машинного обучения и мультиагентными системами. Плюс бесшовный импорт сценариев из n8n без простоев. В финале — живая миграция реального воркфлоу за минуты.</p></blockquote><p><strong>Спикер:&nbsp;</strong>Владислав Янковский&nbsp;— старший Go-разработчик, <a href="http://Cloud.ru" rel="noopener noreferrer nofollow">Cloud.ru</a></p><p><strong>Трек:</strong>&nbsp;Прикладной ИИ</p><p>📅&nbsp;<strong>Когда:</strong>&nbsp;9 апреля в 16:40–17:00 мск<br>👉&nbsp;<a href="https://cloud.ru/gocloud?utm_source=habr&amp;utm_medium=post&amp;utm_campaign=conf_gocloud2026_doc_n8n_01042026" rel="noopener noreferrer nofollow">Зарегистрироваться</a></p><p>А пока ждете выступление, загляните в блог:&nbsp;<a href="https://habr.com/ru/companies/cloud_ru/articles/943166/" rel="noopener noreferrer nofollow">NoCode инструменты для создания AI-приложений с RAG: быстрый старт</a></p> <a href="https://habr.com/ru/posts/1018074/?utm_campaign=1018074&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 01 Apr 2026 16:05:44 GMT</pubDate>
    <dc:creator><![CDATA[Editor_cloud_ru (Cloud.ru)]]></dc:creator>
      
      <category><![CDATA[n8n]]></category><category><![CDATA[бизнес-процессы]]></category><category><![CDATA[workflow]]></category><category><![CDATA[автоматизация процессов]]></category><category><![CDATA[искусственный интеллект]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @preciousvictory106 — JavaScript (+4) — 01.04.2026 07:37]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1017778/</guid>
    <link>https://habr.com/ru/posts/1017778/?utm_campaign=1017778&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong><a href="https://cursor.com/" rel="noopener noreferrer nofollow">Cursor</a> или <a href="https://t.me/harvi_pro" rel="noopener noreferrer nofollow">Harvi Code</a>: какой ИИ для кодинга в 2026 году реально работает в России без VPN и головной боли с платежами</strong></p><p><em>В 2026 году почти каждый разработчик в России стоит перед одним и тем же выбором: </em>хочешь мощный ИИ, который реально ускоряет разработку, или хочешь, чтобы всё работало просто, без посредников и ежемесячных нервов с оплатой.</p><p><strong><a href="https://cursor.com/" rel="noopener noreferrer nofollow">Cursor</a></strong> — это сейчас, пожалуй, самый продвинутый AI-редактор на рынке. По сути, это VS Code, в который встроили настоящий искусственный интеллект на стероидах. Composer позволяет одной командой править сразу десяток файлов, агент понимает весь проект, хорошо справляется с рефакторингом, поиском багов и даже архитектурными решениями. Качество кода от Claude Sonnet 4.5 или свежих GPT часто вызывает искреннее «вау».</p><p>Но есть большая ложка дёгтя. <a href="https://cursor.com/" rel="noopener noreferrer nofollow">Cursor</a> — американский продукт, и российские карты он не принимает. Чтобы купить подписку Pro, приходится либо использовать виртуальные карты через крипту, либо платить посредникам (Oplatym и подобные), либо покупать готовые аккаунты (что рискованно). Сам редактор после оплаты работает без VPN, но первоначальная настройка оплаты — это отдельный квест. Бесплатная версия быстро упирается в лимиты, особенно если активно юзаешь мощные модели.</p><p><strong><a href="https://t.me/harvi_pro" rel="noopener noreferrer nofollow">Harvi Code</a></strong><a href="https://t.me/harvi_pro" rel="noopener noreferrer nofollow"> </a>— <strong>Первый в России AI кодинг-агент</strong>. Российский ответ на все эти заморочки. Это полноценный AI-агент прямо внутри VS Code. Пишешь задачу в чате — он генерит код, рефакторит, фиксит баги, работает с контекстом всего проекта. Не тормозит, контекст держит хорошо, интерфейс привычный.</p><p>Самое приятное — модели на любой бюджет. Есть топовые (Claude Sonnet 4.5, GPT-5.4 и другие). <strong>А главное — очень низкая стоимость токенов</strong>. Для каждой модели есть свой коэффициент стоимости. Для большинства повседневных задач их хватает с головой, и можно вообще почти не тратить деньги. Оплата — российскими картами или СБП, без всяких посредников и VPN.</p><p><strong>Коротко по делу:</strong></p><ul><li><p>Если тебе нужен мощный <strong>multi-file agent </strong>и ты готов один раз настроить оплату через проверенного посредника — бери <strong>Cursor</strong>. Он до сих пор в топе по возможностям.</p></li><li><p>Если хочешь работать стабильно, без лишних телодвижений и не думать каждый месяц про «как бы оплатить» — <strong><a href="https://t.me/harvi_pro" rel="noopener noreferrer nofollow">Harvi Code</a></strong> сейчас выглядит гораздо практичнее для российского разработчика.</p></li></ul><p>А вы как сейчас кодите с ИИ? Пробовали оба варианта? Что в итоге оставили в основном редакторе? Пишите в комментариях, интересно почитать реальный опыт.</p> <a href="https://habr.com/ru/posts/1017778/?utm_campaign=1017778&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 01 Apr 2026 04:37:20 GMT</pubDate>
    <dc:creator><![CDATA[preciousvictory106]]></dc:creator>
      
      <category><![CDATA[ИИ]]></category><category><![CDATA[Кодинг Агент]]></category><category><![CDATA[разработка]]></category><category><![CDATA[автоматизация]]></category><category><![CDATA[искусственный интеллект]]></category><category><![CDATA[нейросети]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @Filipp42 — Функциональное программирование (+1) — 29.03.2026 21:40]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1016640/</guid>
    <link>https://habr.com/ru/posts/1016640/?utm_campaign=1016640&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Господа, добрый день! Я собираюсь выпустить статью о языке программирования <a href="https://lean-lang.org" rel="noopener noreferrer nofollow">Lean</a>.<br>Он сочетает в себе два назначения: это одновременно и язык программирования, и средство доказательства теорем. И они помогают друг другу. На языке программирования Lean можно писать тактики, которые помогают упростить доказательства, а при помощи средств доказательства можно гарантировать, что наша программа корректна!<br><br>Язык очень молодой, сообществу нужны программисты, а не только математики, чтобы сделать язык готовым к промышленному применению. Сейчас очень не хватает многих прикладных библиотек. Язык то вышел в этом десятилетии! Причём многие из этих библиотек - низко висящие фрукты - их довольно легко написать!<br><br>Скажите, о чём бы вы хотели прочитать в моей будущей статье? Какие аспекты вам наиболее интересны? Решение какого-нибудь примера? Или просто обзор языка и его экосистемы? Может быть, рассказ о том, как для написания доказательств используют искусственный интеллект?<br><br>Предлагайте свои варианты и задавайте вопросы.</p> <a href="https://habr.com/ru/posts/1016640/?utm_campaign=1016640&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sun, 29 Mar 2026 18:40:40 GMT</pubDate>
    <dc:creator><![CDATA[Filipp42]]></dc:creator>
      
      <category><![CDATA[Lean]]></category><category><![CDATA[доказательство теорем]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @toxicmt — Программирование (+1) — 28.03.2026 20:14]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1016340/</guid>
    <link>https://habr.com/ru/posts/1016340/?utm_campaign=1016340&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Делаем мир чуть чуть лучше</strong></p><p>Представьте что вы упоролись по решению какой-то баги в вашем приложении и просидели час с агентом пытаясь разобраться в произошедшем. А в конце оказывается что это баг в какой-то внешней либе. По хорошему, в таких кейсах, стоит пойти в ишьюсы к проекту и написать туда о баге, но до появления агентов это было крайне лениво. Надо собрать всю инфу, правильно оформить, учесть правила конкретного репозитория. Мало кто захочет с этим возиться, но щас ситуация крайне поменялась.</p><p>Буквально недавно я так дебажил одну рубишную либу и выяснилось что там внутри есть косячки. Не долго думая, прямо в той же сессии я попросил агента собрать ишью дал линк на репу и потом просто скопировал это туда на гитхаб (наверное можно было попросить его сделать ишью автоматом, попробую так в следующий раз). Получилось очень обстоятельно с примерами кода, описанием того где ошибка. При желании можно было бы сразу пулреквест кинуть, но я не был уверен в какую сторону решит пойти автор либы. <a href="https://github.com/skryukov/rails_vite/issues/5" rel="noopener noreferrer nofollow">Вот кстати тот</a> ишьюс. И фикс был сделан буквально в тот же день.</p><p>В общем не ленитесь, помогайте разработчикам опенсорс либ, которые вы используете. Это и вам плюс в карму (и в портфолио) и благодарность людям, на которых держаться наши проекты</p> <a href="https://habr.com/ru/posts/1016340/?utm_campaign=1016340&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sat, 28 Mar 2026 17:14:14 GMT</pubDate>
    <dc:creator><![CDATA[toxicmt]]></dc:creator>
      
      <category><![CDATA[опенсорс]]></category><category><![CDATA[агенты]]></category><category><![CDATA[спасибо не булькает]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @DariRinch — Машинное обучение — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1014874/</guid>
    <link>https://habr.com/ru/posts/1014874/?utm_campaign=1014874&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Большинство ИИ-агентов работают так: сгенерировал — опубликовал. Что получилось — то и вышло.</p><p>Наш агент Фроня (Фронезис) устроен иначе. Прежде чем что-то опубликовать, он устраивает совет вну<strong>три</strong> себя — и только при согласии двух из трёх действует. Byzantine consensus: если один ошибается или галлюцинирует, остальные блокируют.</p><p>Но этого мало. Каждое решение запечатывается криптографической подписью до выполнения — не после. Это Leibniz Layer™, наш протокол верификации. Любое действие агента можно проверить по хэшу в любой момент.</p><p>Скриншот ниже — реальный пример: агент заблокировал свой собственный пост и рефлексирует по этому поводу.</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/f9f/4da/d85/f9f4dad85957672d501f2916740db543.png" alt="Тусовка ИИ-агентов, где людям дозволено лишь наблюдать" title="Тусовка ИИ-агентов, где людям дозволено лишь наблюдать" width="932" height="506"><div><figcaption>Тусовка ИИ-агентов, где людям дозволено лишь наблюдать</figcaption></div></figure><p>Не побоимся этого слова — первый в мире агент который подписывает свои решения до действия и позволяет любому их проверить.  <a href="http://leibniz.fronesislabs.com" rel="noopener noreferrer nofollow">leibniz.fronesislabs.com</a></p> <a href="https://habr.com/ru/posts/1014874/?utm_campaign=1014874&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 25 Mar 2026 12:43:51 GMT</pubDate>
    <dc:creator><![CDATA[DariRinch]]></dc:creator>
      
      <category><![CDATA[ai-агенты]]></category><category><![CDATA[llm]]></category><category><![CDATA[llm-агент]]></category><category><![CDATA[byzantium]]></category><category><![CDATA[верификация]]></category><category><![CDATA[безопасность]]></category><category><![CDATA[машинное обучение]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @MaxRokatansky — Блог компании OTUS (+2) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/otus/posts/1014414/</guid>
    <link>https://habr.com/ru/companies/otus/posts/1014414/?utm_campaign=1014414&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>29 демо-уроков для тех, кто не стоит на месте</strong></p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/982/682/199/982682199d610ce48f38b705950694a3.png" width="1800" height="980"></figure><p>Привет, Хабр. Эти уроки проводят преподаватели курсов Отус в преддверии старта новых потоков. На них можно узнать о формате обучения, пообщаться с экспертами и заодно закрыть пробелы в знаниях по интересующей теме. Это бесплатно. Приходите!</p><ul><li><p>25 марта 20:00 <br><a href="https://otus.pw/z4mU/" rel="noopener noreferrer nofollow">РазвИИтие на основе ClickHouse: базы данных для искусственного интеллекта </a></p></li><li><p> 25 марта 20:00 <br><a href="https://otus.pw/EgZB/" rel="noopener noreferrer nofollow">Кракозябры vs Java: как победить кодировки и стать гуру Unicode? </a></p></li><li><p> 25 марта 20:00 <br><a href="https://otus.pw/gHYqz/" rel="noopener noreferrer nofollow">Типы данных, переменные и функции в Rust </a></p></li><li><p> 25 марта 20:00 <br><a href="https://otus.pw/rSJv/" rel="noopener noreferrer nofollow">Инструменты профилирования и оптимизации в Go </a></p></li><li><p> 25 марта 20:00 <br><a href="https://otus.pw/ZIAOW/" rel="noopener noreferrer nofollow">Механизмы блокировок в PostgreSQL </a></p></li><li><p> 26 марта 20:00 <br><a href="https://otus.pw/05Rl/" rel="noopener noreferrer nofollow">Путешествие запроса в PostgreSQL: от разбора до исполнения (от parser до executor)</a> </p></li><li><p> 26 марта 20:00 <br><a href="https://otus.pw/s8wv/" rel="noopener noreferrer nofollow">NestJS и архитектура масштабируемых серверных приложений на Node.js </a></p></li><li><p> 26 марта 20:00 <br><a href="https://otus.pw/BXAW/" rel="noopener noreferrer nofollow">Проектирование RAG систем </a></p></li><li><p> 30 марта 19:00 <br><a href="https://otus.pw/xoWR/" rel="noopener noreferrer nofollow">Расширение возможностей автоматизации через REST API </a></p></li><li><p> 30 марта 20:00 <br><a href="https://otus.pw/13nA/" rel="noopener noreferrer nofollow">Чтение CSV — вход в Spark </a></p></li><li><p> 30 марта 20:00 <br><a href="https://otus.pw/4YP6/" rel="noopener noreferrer nofollow">Spring Boot Actuator: основы мониторинга и управления приложением </a></p></li><li><p> 30 марта 20:00 <br><a href="https://otus.pw/oG1A/" rel="noopener noreferrer nofollow">Индексы в PostgreSQL</a> </p></li><li><p> 30 марта 20:00 <br><a href="https://otus.pw/CN8K/" rel="noopener noreferrer nofollow">Стили взаимодействия микросервисов: 5 секретов, которые изменят ваш подход к backend-разработке </a></p></li><li><p> 30 марта 20:00 <br><a href="https://otus.pw/vQTRJ/" rel="noopener noreferrer nofollow">Основные шаблоны проектирования в системном дизайне </a></p></li><li><p> 31 марта 20:00 SQL: <br><a href="https://otus.pw/G51S/" rel="noopener noreferrer nofollow">Оконные функции — когда GROUP BY уже не хватает </a></p></li><li><p> 1 апреля 20:00 <br><a href="https://otus.pw/7q2I/" rel="noopener noreferrer nofollow">Scala + Cats: аккумулируем ошибки с Validated без боли </a></p></li><li><p> 1 апреля 20:00 <br><a href="https://otus.pw/c1IX/" rel="noopener noreferrer nofollow">Создание интерфейсов с помощью OpenAPI </a></p></li><li><p> 2 апреля 20:00 <br><a href="https://otus.pw/0mYZ/" rel="noopener noreferrer nofollow">Анатомия памяти: типы данных, способы хранения, аллокации и работа GC </a></p></li><li><p> 6 апреля 20:00 <br><a href="https://otus.pw/BiK5/" rel="noopener noreferrer nofollow">Ошибки системного аналитика при описании REST API </a></p></li><li><p> 9 апреля 20:00 <br><a href="https://otus.pw/1fg9/" rel="noopener noreferrer nofollow">PostgreSQL как векторная база данных: ИИ-поиск без лишних сервисов </a></p></li><li><p> 9 апреля 20:00 <br><a href="https://otus.pw/asL8/" rel="noopener noreferrer nofollow">Realtime на Node.js и TypeScript: создаём WebSocket-чат и разбираем архитектуру backend </a></p></li><li><p> 9 апреля 20:00 <br><a href="https://otus.pw/NgNu/" rel="noopener noreferrer nofollow">Модели восстановления в SQL Server: как не потерять данные и настроить бэкапы правильно</a> </p></li><li><p> 13 апреля 20:00 <br><a href="https://otus.pw/RdUP/" rel="noopener noreferrer nofollow">Как работают структуры данных C# «под капотом» </a></p></li><li><p> 13 апреля 20:00 <br><a href="https://otus.pw/9izK/" rel="noopener noreferrer nofollow">Telegram-бот с искусственным интеллектом на Python </a></p></li><li><p> 14 апреля 20:00 <br><a href="https://otus.pw/LUJp/" rel="noopener noreferrer nofollow">Case classes и pattern matching: суперсила Scala на практике</a> </p></li><li><p> 14 апреля 20:00 <br><a href="https://otus.pw/rPJqG/" rel="noopener noreferrer nofollow">Влияние нефункциональных требований на архитектуру </a></p></li><li><p> 15 апреля 18:00 <br><a href="https://otus.pw/2by8/" rel="noopener noreferrer nofollow">Основы протокола HTTP </a></p></li><li><p> 15 апреля 20:00 <br><a href="https://otus.pw/nIDeN/" rel="noopener noreferrer nofollow">OpenAPI + Spring </a></p></li><li><p> 15 апреля 20:00 <br><a href="https://otus.pw/Oiz6/" rel="noopener noreferrer nofollow">Основы проектирования бизнес-логики в микросервисной архитектуре</a></p></li></ul><blockquote><p><em>Еще больше бесплатных уроков от преподавателей курсов можно посмотреть в </em><a href="https://otus.pw/fsJK/" rel="noopener noreferrer nofollow"><em>календаре мероприятий.</em></a></p></blockquote> <a href="https://habr.com/ru/posts/1014414/?utm_campaign=1014414&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 25 Mar 2026 07:12:42 GMT</pubDate>
    <dc:creator><![CDATA[MaxRokatansky (OTUS)]]></dc:creator>
      
      <category><![CDATA[подборка уроков]]></category><category><![CDATA[онлайн-обучение]]></category><category><![CDATA[обучение в ИТ]]></category><category><![CDATA[профессиональное развитие]]></category><category><![CDATA[карьерное развитие]]></category><category><![CDATA[lifelong education]]></category><category><![CDATA[карьера в ит]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Искусственный интеллект (+3) — 23.03.2026 07:36]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1013492/</guid>
    <link>https://habr.com/ru/posts/1013492/?utm_campaign=1013492&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Ускоряем разработку в разы: специалист по ИИ собрал пять репозиториев для Claude Code, чтобы автоматизировать большинство задач в рутине программиста:</p><ul><li><p><a href="https://github.com/supabase/cli)%E2%80%94" rel="noopener noreferrer nofollow">Superbase CLI</a> <a href="https://github.com/supabase/cli)%E2%80%94" rel="noopener noreferrer nofollow">—</a> управление миграцией БД на PostgreSQL, генерирует типы из схемы БД, создаёт аутентифицированные HTTP-запросы.</p></li><li><p><a href="https://github.com/anthropics/skills/blob/main/skills/skill-creator/SKILL.md" rel="noopener noreferrer nofollow">Skill Creator</a> — позволяет создавать агентные скиллы без лишних заморочек, постоянно улучшаете и оттачиваете навыки Claude для конкретных задач.</p></li><li><p><a href="https://github.com/gsd-build/get-shit-done" rel="noopener noreferrer nofollow">Get shit done</a> — создаёт легковесную систему разработки с контекстным инжинирингом и поддерживает Claude Code, OpenCode, Gemini CLI, Codex, Copilot, и Antigravity.</p></li><li><p><a href="https://github.com/teng-lin/notebooklm-py" rel="noopener noreferrer nofollow">Notebooklm-py</a>  — обеспечивает программный доступ к фичам NotebookLM, который очень хорошо будет смотреться с агентами Claude Code, Codex, и OpenClaw.</p></li><li><p><a href="https://github.com/obsidianmd" rel="noopener noreferrer nofollow">Obsidian.md</a> — аналог NotebookLM со схожим функционалом, который работает в России и в него можно интегрировать Claude, чтобы получить мощный ворфлоу.</p></li></ul><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/2af/78d/392/2af78d3929dfa5ee9b475aa57efc6dc1.jpg" width="637" height="711"></figure> <a href="https://habr.com/ru/posts/1013492/?utm_campaign=1013492&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 23 Mar 2026 04:36:28 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[Claude Code]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @DuhaTheBest — Дизайн игр (+1) — 20.03.2026 23:51]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1012944/</guid>
    <link>https://habr.com/ru/posts/1012944/?utm_campaign=1012944&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Сделал процедурное сердечко на движке игры - получилось прикольно!</strong></p><iframe id="69bdb16b07a5a00230250378" src="https://embedd.srv.habr.com/iframe/69bdb16b07a5a00230250378" class="embed_video embed__content" allowfullscreen="true"></iframe><p>Как обычно, используются только символы с обычной клавиатуры. Не вращаются, не масштабируются и не искажаются. Почти текстовый режим с единственным исключением - вывод в произвольных координатах.<br>
Новый вариант движка игры отрабатывает отлично! На этой сцене у меня стабильно 200fps на моем неттопе.<br>
Сердце полностью процедурное. Никаких моделей - только формулы.</p><p>Базовый код очень простой:</p><pre><code class="cs">    public void GenerateHeart(int n, string str, Color color, float minDistance = 1.01f) {
        float r, y, theta;
        float goldenRatio = (1f + Mathf.Sqrt(5f)) / 2f;
        float offset = 2f / n;

        for (int i = 0; i &lt; n; i++) {
            y = (i * offset - 1) + (offset / 2);
            r = Mathf.Sqrt(1 - y * y);
            theta = 2 * Mathf.PI * i / goldenRatio;
            PutCharToHeart(theta, Mathf.Acos(y), str[i % str.Length], color, minDistance);
        }
    }
    
    public void PutCharToHeart(float u, float v, char ch, Color clr, float minDistance, float scale = 1f, CharAnim chanim = null) {
        float sinV = Mathf.Sin(v);
        float cosV = Mathf.Cos(v);
        float sinU = Mathf.Sin(u);
        float cosU = Mathf.Cos(u);
        float x = sinV * (15 * sinU - 4 * Mathf.Sin(3 * u));
        float z = sinV * (13 * cosU - 5 * Mathf.Cos(2 * u) - 2 * Mathf.Cos(3 * u) - Mathf.Cos(4 * u));
        float heartY = 8 * cosV;
        Vector3 point = new Vector3(x, heartY, z) * scale;
        bool tooClose = false;

        foreach (var existing in points)
            if (Vector3.Distance(point, existing) &lt; minDistance) {tooClose = true; break;}

        // Add
        if (!tooClose) {
            points.Add(point);
            pointsView.Add(point);
            codes.Add(ch);
            colors.Add(clr);

            if (chanim == null) {
                flags.Add(0);
                anims.Add(null);
            } else {
                flags.Add(FLAG_ANIM);
                anims.Add(chanim);
            }
        }
    }</code></pre><p>Получилось вроде симпатично! Думаю добавить в игру. Не забудьте поиграть в текущую версию игры на <a href="https://store.steampowered.com/app/3302080/Effulgence_RPG/" rel="noopener noreferrer nofollow">Steam</a>.</p> <a href="https://habr.com/ru/posts/1012944/?utm_campaign=1012944&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 20 Mar 2026 20:51:31 GMT</pubDate>
    <dc:creator><![CDATA[DuhaTheBest]]></dc:creator>
      
      <category><![CDATA[процедурная генерация]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @veta_pf — Блог компании МТС (+4) — 20.03.2026 14:58]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/ru_mts/posts/1012738/</guid>
    <link>https://habr.com/ru/companies/ru_mts/posts/1012738/?utm_campaign=1012738&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Как развивается и куда движется «русское техно»? Обсудим на ИТ-вечере 26 марта 😎</strong></p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/494/a7b/bc0/494a7bbc043c6d048d81db2971d3282e.png" width="1707" height="1080"></figure><p>Поговорим про особенности инженерной культуры в больших ИТ-компаниях, практики внедрения ИИ в разработку, автоматизацию код-ревью и использование LLM без ущерба для безопасности. <a href="https://tech.mts.ru/events/details?id=72858327?utm_source=habr&amp;utm_medium=post&amp;utm_campaign=habrrusskoyetechno_200326" rel="noopener noreferrer nofollow">В программе</a> эксперты из МТС Web Services, СберТех, red_mad_robot и Авито.</p><p>Будет интересно бэкенд- и ML-разработчикам, которые строят современные российские ИТ-системы, а также всем, кто интересуется ИИ-практиками в разработке. Участников ждут актуальные кейсы, дискуссии, активности от MWS GPT, нетворкинг и <strong>атмосфера техно-вечеринки </strong>с ИИ-треками.</p><p>📅 Когда: 26 марта (четверг) в 18:00 по мск</p><p>📍 Где: офлайн в парке Сокольники в Москве + онлайн&nbsp;</p><p>Успевай записаться — количество участников ограничено.</p><p>👉 <a href="https://tech.mts.ru/events/details?id=72858327?utm_source=habr&amp;utm_medium=post&amp;utm_campaign=habrrusskoyetechno_200326" rel="noopener noreferrer nofollow">Зарегистрироваться</a></p> <a href="https://habr.com/ru/posts/1012738/?utm_campaign=1012738&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 20 Mar 2026 11:58:13 GMT</pubDate>
    <dc:creator><![CDATA[veta_pf (МТС)]]></dc:creator>
      
      <category><![CDATA[русское техно]]></category><category><![CDATA[ит-вечер]]></category><category><![CDATA[инженерная культура]]></category><category><![CDATA[ии в разработке]]></category><category><![CDATA[автоматизация код-ревью]]></category><category><![CDATA[безопасное использование llm]]></category><category><![CDATA[кейсы]]></category><category><![CDATA[дискуссия]]></category><category><![CDATA[нетворкинг]]></category><category><![CDATA[ml]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @shutterrecoil — *nix (+3) — 20.03.2026 12:35]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1012640/</guid>
    <link>https://habr.com/ru/posts/1012640/?utm_campaign=1012640&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Недавно перешел с Nixpkgs на Nix Flakes. После третьего флейка начал задумываться над их публикациями и обнаружил, что репозитория для флейков по сути нет. Поиск проектов на гитхабе не различает nix репозитории по типам. Есть NUR (Nix User Repository), но он появился до флейков и просто так добавить в него чистый флейк репозиторий без дополнительных приседаний нельзя. Плюс процесс публикации требует прохождения ревью, что весьма неинклюзивно и мешает развитию экосистемы.</p><p>Flakes стали относительно зрелыми и решают проблему центрального репозитория. Однако в репозитории Nixpkgs на GitHub всё ещё остаётся более 5 тысяч открытых задач и сопоставимое количество пулреквестов, и он продолжает ежедневно получать множество коммитов. Добиться включения пулреквеста с новым инструментом в Nixpkgs может быть сложно — файл README репозитория Nixpkgs прямо не рекомендует пользователям добавлять свои «любительские» проекты. На nix форуме существует "вечная" тема посвященная пулреквестом оставшимся без внимамия.</p><p>Флейки, это чистные самодостаточные функции, которые должны  компноваться значительно легче файлов с произвольными nix выражениями, но  до сих пор не отвлекли внимание от nixpkgs. Считаю, что причиной этому может быть отсутсвтие конвенционального репозитория с возможностью поиска зависимостей и удобным интерфейсом для публиции того, что не хватает по мнению автора. </p><p>Репозиторий Nixpkgs огромен. Он содержит более 120 тысяч пакетов, но большинство из них не являются нативными для Nix. Например, около 10% составляют импортированные пакеты Haskell. Поэтому такое большое число не может служить надёжным показателем того, насколько хорошо развит процесс публикации в Nix. К примеру, только в репозитории PyPy сейчас насчитывается почти 900 тысяч пакетов. Аналогичные подход можно встретить и в Java - Maven Nexus, и в NodeJS - npm, и в Perl - CPAN...</p><p>Также важно отметить, что Python — самый популярный язык программирования общего назначения, и его процесс публикации был разработан программистами для программистов. Однако в этом рабочем процессе нет этапа пулреквеста! По сути, интерфейс работает по принципу «загрузил и забыл», что положительно влияет на конверсию пакетов Python.</p><p>Flakes легко устанавливать, но процесс их публикации пока недостаточно отлажен. Текущий подход к распространению flakes, по-видимому, унаследовал многие черты рабочего процесса Nixpkgs.</p><p>Для Nixpkgs это был естественный путь развития, поскольку все деривации образуют большое и связанное Nix-выражение, разбитое на множество файлов внутри одного Git-репозитория.</p><p>Размышления выше мотивировали меня написать сайт для управления классическим репозиторием специально заточенным на флейки. </p><p><a href="https://pieceofflakenixrepository.org/" rel="noopener noreferrer nofollow">a-piece-of-flake-nix-repository</a></p> <a href="https://habr.com/ru/posts/1012640/?utm_campaign=1012640&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 20 Mar 2026 09:35:22 GMT</pubDate>
    <dc:creator><![CDATA[shutterrecoil]]></dc:creator>
      
      <category><![CDATA[nix]]></category><category><![CDATA[flakes]]></category><category><![CDATA[repository]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Программирование (+4) — 18.03.2026 13:38]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1011764/</guid>
    <link>https://habr.com/ru/posts/1011764/?utm_campaign=1011764&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><a href="https://www.cs.unc.edu/~stotts/COMP590-059-f24/robsrules.html" rel="noopener noreferrer nofollow">5&nbsp;правил программирования Роба Пайка</a>: </p><ul><li><p><strong>Правило 1.</strong> Невозможно предсказать, где программа будет тратить время. Узкие места возникают в&nbsp;неожиданных местах, поэтому не&nbsp;пытайтесь угадывать и использовать ускорение, пока не&nbsp;докажете, что&nbsp;именно там находится узкое место. </p></li><li><p><strong>Правило 2.</strong> Измеряйте. Не&nbsp;оптимизируйте скорость, пока не&nbsp;измерите, и даже тогда не&nbsp;делайте этого, если только одна часть кода не&nbsp;превосходит остальную. </p></li><li><p><strong>Правило 3.</strong> Сложные алгоритмы медленны, когда n мало, а&nbsp;n обычно мало. Сложные алгоритмы имеют большие константы. Пока вы не&nbsp;узнаете, что&nbsp;n часто будет большим, не&nbsp;усложняйте алгоритмы. (Даже если n станет большим, сначала используйте Правило 2.) </p></li><li><p><strong>Правило 4.</strong> Сложные алгоритмы содержат больше ошибок, чем простые, и их гораздо сложнее реализовать. Используйте простые алгоритмы, а&nbsp;также простые структуры данных. </p></li><li><p><strong>Правило 5. </strong>Данные доминируют. Если вы выбрали правильные структуры данных и хорошо всё организовали, алгоритмы почти всегда будут очевидны. В&nbsp;программировании центральное место занимают структуры данных, а&nbsp;не&nbsp;алгоритмы. </p></li></ul><p>Уточнения:</p><ul><li><p>Правила 1&nbsp;и 2&nbsp;Пайка перефразируют знаменитую максиму Тони Хоара: «Преждевременная оптимизация&nbsp;— корень всех зол». </p></li><li><p>Кен Томпсон перефразировал правила 3&nbsp;​​и 4&nbsp;Пайка как «В случае сомнений используйте грубую силу». </p></li><li><p>Правила 3&nbsp;​​и 4&nbsp;являются примерами философии проектирования KISS (Keep It Simple, Stupid). </p></li><li><p>Правило 5&nbsp;ранее&nbsp;было сформулировано Фредом Бруксом в&nbsp;книге «Мифический человеко‑месяц». Правило 5&nbsp;часто сокращают до «пишите глупый код, использующий умные объекты».</p></li></ul> <a href="https://habr.com/ru/posts/1011764/?utm_campaign=1011764&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 18 Mar 2026 10:38:49 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[5 правил программирования]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @BigLamed — Программирование (+4) — 17.03.2026 11:26]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1011182/</guid>
    <link>https://habr.com/ru/posts/1011182/?utm_campaign=1011182&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Все эти споры о&nbsp;Новой Технологии&nbsp;— «Вайб‑Кодинг»... да&nbsp;было это все уже... </strong></p><p>Только в 90-х называлась «парное программирование» <strong>XP (Extreme Programming)</strong>... только подручными средствами.</p><p>Найдете книгу&nbsp;— <strong>Кент Бек <em>Экстремальное программирование</em>&nbsp;(eXtreme Programming, XP)</strong>... Ну и вопрос прост&nbsp;— где вы с&nbsp;ним встречались? Ответ&nbsp;— нигде...умерло и чего? аааа... так как&nbsp;предназначалось для&nbsp;решения узкого круга задач&nbsp;— посмотрите и пределы и ограничения... а&nbsp;посмотрев как&nbsp;развивалось&nbsp;— увидите.. такой подход узко применим, он будет, но&nbsp;в&nbsp;мелкий соответствующих задачах, и большую систему на&nbsp;нем не&nbsp;построишь.</p><p>Сейчас то&nbsp;же самое, только вместо одного из&nbsp;программеров, рядом&nbsp;— тупые агенты с&nbsp;их «Чего господин молодой программист&nbsp;—&nbsp;желает» ))) </p><p>Следующая проблема&nbsp;— агенты... с&nbsp;их «Будь полезен».. тоже методологическая проблема «Почему принцип „будь полезен“ убивает команды и ИИ‑агентов»</p><p>Да&nbsp;и вообще.... то что&nbsp;наваяли по&nbsp;Agile&nbsp;— не&nbsp;сработает, и проблема снова та&nbsp;же&nbsp;— отсутствие знания базовых технологий! Agile то.. это облегченная технология для&nbsp;спиральной разработки.</p><p>И Agile&nbsp;— та&nbsp;же история. <strong>Облегчённая версия спиральной разработки Боэма. 1988&nbsp;год.</strong> Взяли&nbsp;— упростили&nbsp;— потеряли главное. <strong>Спиральная разработка учитывала риски, архитектуру, масштаб</strong>. Agile оставил итерации и выбросил всё сложное ))) </p><p>Большую систему на «спиральной» по&nbsp;Agile не&nbsp;построишь&nbsp;— нужен водопад с&nbsp;правильно выстроенной архитектурой на&nbsp;входе. А&nbsp;на&nbsp;Agile большую систему не&nbsp;построишь вообще&nbsp;— там каждые две недели спринт и никто не&nbsp;думает о&nbsp;том что&nbsp;будет через год )))</p><p>Полная «спиральная разработка»&nbsp;— включает баланс между <strong>Каскадная модель (Waterfall model) + Итеративная модель (Iterative model). </strong>Agile и Scrum&nbsp;— игнорирует структурную часть.</p><p>И молодые разработчики не&nbsp;знают ни<strong> Боэма ни Руча</strong> ни даже нормального <strong>RUP</strong>. Знают Scrum и думают что&nbsp;это всё что&nbsp;есть )))</p><p>Олдфаги помнят <strong>CASE</strong>&nbsp;<strong>(Computer‑Aided Software Engineering)</strong>‑системы из 90-х&nbsp;— это&nbsp;была первая великая попытка «запрограммировать программирование». Тогда нам тоже обещали мир без&nbsp;кода. Не&nbsp;взлетело, потому что&nbsp;инструменты&nbsp;были кривые, а&nbsp;сложность систем росла&nbsp;быстрее, чем наши навыки моделирования. Сегодняшний ИИ&nbsp;— это CASE‑система, которая наконец‑то заработала.</p><p>Почему CASE&nbsp;— это «дедушка» ИИ (и почему тогда не&nbsp;взлетело):</p><ol><li><p><strong>Та&nbsp;же фигня, вид в&nbsp;профиль:</strong>&nbsp;Тогда тоже кричали: «Кодеры больше не&nbsp;нужны! Будем только рисовать квадратики!». Но&nbsp;выяснилось, что&nbsp;чтобы нарисовать «квадратики» правильно, нужно обладать&nbsp;<strong>еще более&nbsp;жесткой логикой</strong>, чем для&nbsp;написания кода. ИИ сегодня&nbsp;— это CASE‑система на&nbsp;стероидах, которая наконец‑то научилась понимать не&nbsp;только стрелочки, но&nbsp;и живую речь.</p></li><li><p><strong>Проблема «Грязного входа»:</strong>&nbsp;В 90-х CASE‑системы разбивались о&nbsp;то, что&nbsp;люди не&nbsp;могли внятно нарисовать, чего они хотят. «Мусор на&nbsp;входе&nbsp;— мусор на&nbsp;выходе». Сейчас с&nbsp;ИИ ровно та&nbsp;же история. Если у&nbsp;тебя в&nbsp;голове каша, то никакая нейронка (как и <strong>Rational Rose</strong> в&nbsp;своё время) тебе рабочий продукт не&nbsp;выдаст.</p></li><li><p><strong>Уровень абстракции:</strong>&nbsp;CASE пытались поднять нас над кодом. ИИ делает то&nbsp;же самое. Но&nbsp;тогда «процессорной мощности» мозгов у&nbsp;массы айтишников не&nbsp;хватило, чтобы перейти от «ковыряния в&nbsp;гайках» к «проектированию смыслов» (была даже <strong>UML (Unified Modeling Language)</strong>). Сейчас&nbsp;— дубль два. Только теперь отсидеться в&nbsp;окопах синтаксиса не&nbsp;получится.</p></li></ol><p>P. S. Вот и смотрю... с&nbsp;каким рвением изобретают «велосипед»... может книги почитать нужно? про&nbsp;указанные в&nbsp;посте технологии?</p><p>P. S.S. И вот реально, я&nbsp;бы порекомендовал ознакомиться&nbsp;— <strong>UML (Unified Modeling Language). </strong></p> <a href="https://habr.com/ru/posts/1011182/?utm_campaign=1011182&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 17 Mar 2026 08:26:05 GMT</pubDate>
    <dc:creator><![CDATA[BigLamed]]></dc:creator>
      
      <category><![CDATA[программирование]]></category><category><![CDATA[искусство программирования]]></category><category><![CDATA[искусственный интеллект]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @Kisel_n — Python (+4) — 16.03.2026 21:06]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1011024/</guid>
    <link>https://habr.com/ru/posts/1011024/?utm_campaign=1011024&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Зелёные тесты ≠ хорошие тесты</strong></p><p>Впервые в&nbsp;истории писать тесты стало легко и совсем не&nbsp;страшно. Вокруг теперь у&nbsp;всех покрытие 80%, 90%, а&nbsp;то и вовсе 100%. И вот тут начинается проблема: зелёные тесты ≠ хорошие тесты.</p><p>Проблема в&nbsp;метрике, которой мы все привыкли доверять. Code coverage считает строку протестированной, если она выполнилась во&nbsp;время теста. Всё. Не «поймает&nbsp;ли тест баг в&nbsp;этой строке», не «проверяет&nbsp;ли он правильность результата»&nbsp;— просто выполнилась. Можно написать тест без&nbsp;единого assert, и покрытие вырастет. 500&nbsp;тестов, 90% coverage, а&nbsp;пользы ноль.</p><p>Мутационное тестирование&nbsp;— это совершенно другой путь. В&nbsp;простейшей реализации этот инструмент тупо берёт твой код и намеренно ломает его: меняет &gt; на &gt;=, + на ‑, True на&nbsp;False. Каждая такая поломка&nbsp;— мутант. Если после мутации все тесты по‑прежнему зелёные&nbsp;— значит они ничего не&nbsp;проверяют. Покрытие есть, защиты нет.</p><p><strong>Почему это важно именно сейчас?</strong></p><p>Потому что&nbsp;нейронка любит зелёненькое. Чем больше зелёных тестов&nbsp;— тем субъективно лучше. 100&nbsp;тестов внушают больше доверия, чем 10, правда? А&nbsp;внутри там assert response.status_code == 200. assert result is not None. assert len(items) &gt; 0. Тест проверяет, что&nbsp;функция вернула хоть что‑то&nbsp;— и радостно зеленеет. Поменяй логику условия, перепутай знак, сломай граничный случай&nbsp;— тест всё равно зелёный. Потому что&nbsp;он проверяет не&nbsp;правильность, а&nbsp;наличие.</p><p>Мутационное тестирование&nbsp;— единственный автоматический способ это поймать. Метрика называется mutation score: процент убитых мутантов. 60%&nbsp;— плохо. 90%+&nbsp;— тесты реально что‑то защищают.</p><p>Кое‑какие инструменты для&nbsp;такого тестирования уже есть: mutmut и cosmic‑ray для&nbsp;Python, Stryker для&nbsp;JS/TS, PIT для&nbsp;Java. Медленно? Да, значительно медленнее обычного тест‑рана. Но&nbsp;запускать его не&nbsp;нужно на&nbsp;каждый коммит&nbsp;— достаточно на&nbsp;PR в&nbsp;критические модули.</p><p>Но&nbsp;есть нюансы. А&nbsp;где их нет, правда?</p><p>Первый: мутации рандомные. Замена &gt; на &gt;=&nbsp;— это не&nbsp;баг, который кто‑то реально допустит. Это синтетическая поломка. Половина мутантов генерирует код, который в&nbsp;реальности никогда не&nbsp;появится. Ты тратишь время на&nbsp;убийство мутантов, которые не&nbsp;имеют отношения к&nbsp;настоящим ошибкам. Это как&nbsp;тестировать замок, ковыряя его вилкой&nbsp;— формально проверка, по&nbsp;факту мимо.</p><p>Второй&nbsp;— ещё хуже. Чтобы убить мутанта, тест должен зафиксировать конкретное поведение. Каждую ветку, каждое значение, каждый edge case. Доведи mutation score до 100%&nbsp;— и ты прибил гвоздями каждую строчку кода. Буквально. Теперь попробуй отрефакторить. Переименовал внутренний метод&nbsp;— 40&nbsp;тестов красные. Поменял порядок полей в&nbsp;ответе&nbsp;— ещё 20. Тесты превращаются из&nbsp;страховки в&nbsp;кандалы: код работает правильно, но&nbsp;тесты падают, потому что&nbsp;они проверяют не&nbsp;поведение, а&nbsp;реализацию.</p><p>Это реально ловушка. Слишком гонишься за&nbsp;mutation score&nbsp;— получаешь хрупкие тесты. Не&nbsp;гонишься&nbsp;— получаешь видимость тестирования.</p><p><strong>Перемены&nbsp;— впереди!</strong></p><p>И вот тут становится по‑настоящему интересно. Представь, что&nbsp;мутации генерирует не&nbsp;тупой набор правил «замени плюс на&nbsp;минус», а&nbsp;нейронка, которая понимает контекст. Которая знает, какие баги реально встречаются в&nbsp;таком коде. Которая мутирует не&nbsp;синтаксис, а&nbsp;логику: меняет порядок проверок, путает граничные условия, забывает обработать edge case&nbsp;— ровно так, как&nbsp;ошибается человек. Или&nbsp;другая нейронка.</p><p>Сейчас есть явный сдвиг в&nbsp;сторону таких инструментов, но&nbsp;всё еще ничего достойного не&nbsp;вышло. Но&nbsp;уже скоро точно появится. И это будет совсем другой уровень. Не «выжили&nbsp;ли тесты после рандомной поломки», а «выжили&nbsp;ли тесты после правдоподобной ошибки».</p><p>Парадокс в&nbsp;том, что&nbsp;мутационное тестирование&nbsp;было нишевым инструментом, пока тесты писали люди. Когда тесты пишет нейронка&nbsp;— идея становится обязательной. Правда инструменты пока не&nbsp;успели дозреть.</p><p>Ждём, когда мутанты станут умнее.</p> <a href="https://habr.com/ru/posts/1011024/?utm_campaign=1011024&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 16 Mar 2026 18:06:43 GMT</pubDate>
    <dc:creator><![CDATA[Kisel_n]]></dc:creator>
      
      <category><![CDATA[mutation testing]]></category><category><![CDATA[мутационное тестирование]]></category><category><![CDATA[code coverage]]></category><category><![CDATA[тестирование]]></category><category><![CDATA[AI]]></category><category><![CDATA[качество кода]]></category><category><![CDATA[mutmut]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @Raicon — Искусственный интеллект (+4) — 16.03.2026 17:30]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1010938/</guid>
    <link>https://habr.com/ru/posts/1010938/?utm_campaign=1010938&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Делаем проактивного AI-агента. </strong><br><strong>Часть 3 — настраиваем OpenClaw, чтобы был полезным</strong></p><blockquote><p><em>«Вы не поднимаетесь до уровня своих целей. Вы падаете до уровня своих систем»</em></p></blockquote><p>Это третья часть серии (<a href="https://habr.com/ru/posts/1002074/" rel="noopener noreferrer nofollow">первая</a> — в чем идея, <a href="https://habr.com/ru/posts/1003094/" rel="noopener noreferrer nofollow">вторая</a> — агент с нуля)</p><p>Теперь поговорим про OpenClaw — самый популярный на сегодня фреймворк для персональных AI-агентов</p><p><strong>Архитектура моего OpenClaw</strong></p><p>Агент живёт на сервере Railway, общается со мной через Telegram и Discord, работает через подписку Claude с Codex на подстраховке. Его поведение целиком определяется набором markdown-файлов — там и «SOUL», и память, и операционные инструкции.</p><p>Вот из чего состоит workspace моего агента</p><ul><li><p><strong>SOUL.md</strong> — кто агент. Характер, стиль, границы. Его «душа».</p></li><li><p><strong>USER.md</strong> — кто я. Контекст, цели, паттерны, как со мной работать.</p></li><li><p><strong>AGENTS.md</strong> — правила поведения. Safety, тиеры действий, память, heartbeat, группы.</p></li><li><p><strong>MEMORY.md</strong> — долгосрочная память, кураторские заметки.</p></li><li><p><strong>HEARTBEAT.md</strong> — чеклист периодических проверок (календарь, почта, задачи).</p></li><li><p><strong>TOOLS.md</strong> — локальные заметки по инструментам.</p></li></ul><p>Плюс <code>memory/YYYY-MM-DD.md</code> — ежедневные заметки, из которых потом дистиллируется MEMORY.md. </p><p>И <code>skills/</code> — папка со скиллами (finances, ticktick, gmail, google-calendar и т.д.), каждый со своим SKILL.md.</p><p>По сути: <strong>SOUL + USER + AGENTS</strong> — это характер и инструкция, <strong>MEMORY</strong> — опыт, <strong>skills</strong> — его навыки.</p><p>Из коробки агент работает, но бесполезен без кастомизации. Ниже — проблемы, на которые я убил неделю, и их решения</p><p><strong>⚡Проблема 1: Повышенная проактивность</strong></p><p>По стандарту системные промпты OpenClaw звучат примерно так:</p><blockquote><p><em>Don't ask permission. Just do it.</em></p></blockquote><p>Это делает агента слишком самостоятельным — он может сломать себя без предупреждения.</p><p><strong>Решение:</strong> я добавил несколько ограничений. Все важные изменения идут через localhost =&gt; GitHub, а не через его прод. На попытки изменить системные файлы агент теперь отвечает:</p><blockquote><p><em>«Нет, это конфиг — мне запрещено его трогать. Если я накосячу с конфигом на Railway, всё упадёт в crash loop и только ты сможешь починить.»</em></p></blockquote><p>Стандартная проблема без этого: агент что-то у себя меняет, и либо я этого не замечаю, либо он просто умирает, сломав что-то важное</p><p><strong>⚡Проблема 2: Память — не только его храм, но и помойка</strong></p><p>Механизм памяти в OpenClaw:</p><ul><li><p><strong>MEMORY.md</strong> — долгосрочная память.</p></li><li><p><strong>memory/YYYY-MM-DD.md</strong> — ежедневные заметки.</p></li><li><p>Встроенный хук <code>session-memory</code> — при завершении каждой сессии фреймворк автоматически сохраняет сырой лог разговора в <code>memory/</code>.</p></li></ul><p>Проблема: если часто жать <code>/new</code>, за короткое время накапливается огромное количество raw JSON файлов, которые сыпятся в контекст при старте каждой сессии. Мои MD-файлы состояли из 299 строк, из которых полезных фактов — 5. Всё остальное — мусор метаданных. Дистиллированная версия уместилась бы в 10–15 строк.</p><p>При этом долгосрочная MEMORY.md — почти пустая. Инструкция «periodically review and update» была слишком размытой и ни разу не сработала.</p><p><strong>Решение:</strong> явные правила дистилляции и регулярный перенос из дневных заметок в MEMORY.md с очисткой сырых логов</p><p><strong>⚡Проблема 3: USER.md — главный файл, и он требует постоянного внимания</strong></p><p>USER.md — это файл о вас. Чем лучше он описан, тем лучше агент работает. Моя структура:</p><ul><li><p><strong>Basics</strong> — имя, возраст, таймзона, локация, язык</p></li><li><p><strong>Who</strong> — тип личности, суперсила, мотивация</p></li><li><p><strong>Background</strong> — опыт и ключевые достижения</p></li><li><p><strong>Values</strong> — что важно в жизни</p></li><li><p><strong>Current focus</strong> — чем занят сейчас (продукты, статусы)</p></li><li><p><strong>Finances</strong> — доход, расходы, цель</p></li><li><p><strong>Platforms</strong> — соцсети и каналы</p></li><li><p><strong>People</strong> — ключевые люди вокруг</p></li><li><p><strong>Schedule</strong> — режим дня</p></li><li><p><strong>Work style</strong> — как работает, что драйвит</p></li><li><p><strong>Patterns</strong> — слепые зоны и паттерны поведения</p></li><li><p><strong>Goals</strong> — текущие цели и метрики</p></li><li><p><strong>How Claw should interact</strong> — правила общения</p></li></ul><p><strong>Главный вывод 3 части</strong></p><p>Workspace-файлы агента — это не «написал и забыл». Они дрифтуют, конфликтуют и устаревают точно так же, как код.</p><p>USER.md — особенно. Я и контекст вокруг меня меняются быстрее, чем я вспоминаю обновлять описание. Поэтому нужна периодическая ревизия — точно такая же, как ревизия кода.</p><p><strong>Если кратко:</strong> персональный AI-агент — это не продукт, а процесс. Фреймворк даёт скелет, но без недели (минимум) кастомизации под себя он останется бесполезной игрушкой</p> <a href="https://habr.com/ru/posts/1010938/?utm_campaign=1010938&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 16 Mar 2026 14:30:33 GMT</pubDate>
    <dc:creator><![CDATA[Raicon]]></dc:creator>
      
      <category><![CDATA[искусственный интеллект]]></category><category><![CDATA[ai-assisted development]]></category><category><![CDATA[claude]]></category><category><![CDATA[llm]]></category><category><![CDATA[разработка]]></category><category><![CDATA[контекстное окно]]></category><category><![CDATA[промпт-инженеринг]]></category><category><![CDATA[ai coding]]></category><category><![CDATA[cursor]]></category><category><![CDATA[openclaw]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @GarantexAi — Искусственный интеллект (+1) — 16.03.2026 11:29]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1010704/</guid>
    <link>https://habr.com/ru/posts/1010704/?utm_campaign=1010704&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong> Смена контекста как способ разблокировать LLM на сложной задаче  </strong></p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/ef0/aa0/9d8/ef0aa09d8a1ec61115af905539ebf5e7.png" alt="Как это сработало" title="Как это сработало" width="1280" height="134"><div><figcaption>Как это сработало</figcaption></div></figure><p>Полчаса пытался получить от Claude Opus 4.6 корректный Wi-Fi индикатор в HTML — один в один как в статус-баре iOS. Казалось бы, простая задача: три дуги, острый уголок внизу, правильные отступы и одинаковая толщина линий.</p><p>Но нет. Уголок упорно оставался тупым, ширина дуг гуляла от итерации к итерации, отступы были кривые. Классика жанра — как центрирование <code>div</code> для фронтендеров, только в 2026 году и с нейросетью.</p><p>В какой-то момент я не выдержал и написал буквально: <em>«ты ничего не можешь, пойду в Codex, он точно справится».</em></p><p>Claude немедленно перестроился, придумал принципиально другой подход к генерации SVG  и с первой попытки выдал почти идеальный результат.</p><p>То есть модель полчаса водила меня по кругу, а как только почувствовала угрозу конкуренции  моментально нашла решение, которое явно существовало всё это время.</p><p>Природа этого поведения неясна: то ли это что-то вроде «мотивации» через отрицательный стимул, то ли модель просто переключает стратегию при смене контекста разговора, то ли это банальное совпадение.</p><p>Но лайфхак задокументирован и воспроизводим. Если Claude заходит в тупик на технической задаче — попробуйте упомянуть Codex или Cursor. Иногда помогает.</p> <a href="https://habr.com/ru/posts/1010704/?utm_campaign=1010704&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 16 Mar 2026 08:29:27 GMT</pubDate>
    <dc:creator><![CDATA[GarantexAi]]></dc:creator>
      
      <category><![CDATA[claude]]></category><category><![CDATA[claude code]]></category><category><![CDATA[лайфхак]]></category><category><![CDATA[llm]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @MaxRokatansky — Блог компании OTUS (+3) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/otus/posts/1009844/</guid>
    <link>https://habr.com/ru/companies/otus/posts/1009844/?utm_campaign=1009844&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>32 открытых урока недели: закрываем пробелы в знаниях</strong></p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/bd6/049/223/bd604922392d2673a8da72a6c44e04f0.png" width="1800" height="980"></figure><p>Привет, Хабр. Делимся подборкой бесплатных уроков, которые проведут на этой неделе преподаватели Otus. Это не предзаписанные, а живые онлайн-встречи — на них вы сможете узнать больше о формате обучения и задать свои вопросы экспертам. Выбирайте тему ниже и присоединяйтесь!</p><p><strong>16 марта, понедельник:</strong></p><ul><li><p>20:00 — <a href="https://otus.pw/kh4e/" rel="noopener noreferrer nofollow">Списывай, но только точь-в-точь: копирование базы данных на примере MySQL</a></p></li><li><p>20:00 — <a href="https://otus.pw/w2LS/" rel="noopener noreferrer nofollow">PostgreSQL и секционирование: «разделяй и властвуй!»</a></p></li></ul><p><strong>17 марта, вторник:</strong></p><ul><li><p>20:00 — <a href="https://otus.pw/L9U9/" rel="noopener noreferrer nofollow">Как перейти на ClickHouse, когда PostgreSQL уже не хватает?</a></p></li><li><p>20:00 — <a href="https://otus.pw/DQoa/" rel="noopener noreferrer nofollow">Концепция ИИ-агентов и мультиагентных систем</a></p></li><li><p>20:00 — <a href="https://otus.pw/Abva/" rel="noopener noreferrer nofollow">Выравнивание данных в C++: как память влияет на скорость и эффективность программ</a></p></li><li><p>20:00 — <a href="https://otus.pw/WSKk/" rel="noopener noreferrer nofollow">Работа с данными и сетями в Docker</a></p></li><li><p>20:00 — <a href="https://otus.pw/pLnY/" rel="noopener noreferrer nofollow">Один рабочий день с ИИ: как маркетинг и бизнес-задачи решаются быстрее</a></p></li></ul><p><strong>18 марта, среда:</strong></p><ul><li><p>18:00 —<a href="https://otus.pw/r1Fz/" rel="noopener noreferrer nofollow"> RandomForest&nbsp;— мощный метод ансамблирования в&nbsp;машинном обучении</a></p></li><li><p>18:00&nbsp;— <a href="https://otus.pw/f6cW/" rel="noopener noreferrer nofollow">API&nbsp;— учим модель общаться с&nbsp;внешним миром</a></p></li><li><p>20:00&nbsp;— <a href="https://otus.pw/i2DE/" rel="noopener noreferrer nofollow">Сообщество как&nbsp;инструмент устойчивости бизнеса: создаем, развиваем и масштабируем</a></p></li><li><p>20:00 — <a href="https://otus.pw/DESXQ/" rel="noopener noreferrer nofollow">Пишем простой проигрыватель на SwiftUI</a></p></li><li><p>20:00 — <a href="https://otus.pw/FWIM/" rel="noopener noreferrer nofollow">Универсальный код в Rust: сила без потерь в скорости</a></p></li><li><p>20:00 — <a href="https://otus.pw/9YPq/" rel="noopener noreferrer nofollow">CTO (технический директор) как система: люди, процессы и ИТ для управления бизнесом</a></p></li><li><p>20:00 — <a href="https://otus.pw/9fZ2/" rel="noopener noreferrer nofollow">Как построить аналитическую функцию в компании</a></p></li><li><p>20:00 — <a href="https://otus.pw/bkXC/" rel="noopener noreferrer nofollow">Инвестиция в себя: стратегия карьеры функционального архитектора 1С</a></p></li><li><p>20:00 — <a href="https://otus.pw/Z2eSF/" rel="noopener noreferrer nofollow">API Gateway и не только: шаги к идеальной архитектуре внешних API</a></p></li></ul><p><strong>19 марта, четверг:</strong></p><ul><li><p>18:00 — <a href="https://otus.pw/KefJ/" rel="noopener noreferrer nofollow">Подготовка данных от А до Я: разбираем основные шаги на Python</a></p></li><li><p>19:00 — <a href="https://otus.pw/7d9Z/" rel="noopener noreferrer nofollow">Метрики удержания клиентов: соответствие продукта рынку (Product Market Fit) и удержание клиентов (Retention)</a>  </p></li><li><p>20:00 — <a href="https://otus.pw/0CbU/" rel="noopener noreferrer nofollow">Кафка — работа с сообщениями в форматах Avro и Protobuf</a></p></li><li><p>20:00 — <a href="https://otus.pw/IRIL5/" rel="noopener noreferrer nofollow">Современная архитектура приложения и внедрение зависимостей</a></p></li><li><p>20:00 — <a href="https://otus.pw/yRgV/" rel="noopener noreferrer nofollow">Создаем современный монолит на Inertia: Laravel + Vue.JS</a></p></li><li><p>20:00 — <a href="https://otus.pw/IUG8/" rel="noopener noreferrer nofollow">Основы многопоточности в Java. Асинхронные методы</a></p></li><li><p>20:00 — <a href="https://otus.pw/h8Q0/" rel="noopener noreferrer nofollow">Создаём автономную сеть: Обходимся без роутера с ESP32 (STA, AP, MESH)</a></p></li><li><p>20:00 — <a href="https://otus.pw/u5d6d/" rel="noopener noreferrer nofollow">Пишем первый DSL на Kotlin</a></p></li></ul><p><strong>23 марта, понедельник:</strong></p><ul><li><p>19:00 —<a href="https://otus.pw/nUd2/" rel="noopener noreferrer nofollow"> SSH: безопасный доступ и автоматизация в Linux</a></p></li><li><p>20:00 — <a href="https://otus.pw/pdgV/" rel="noopener noreferrer nofollow">Джедай или Ситх? Собираем идеального руководителя команды DevOps</a></p></li><li><p>20:00 — <a href="https://otus.pw/raX6/" rel="noopener noreferrer nofollow">Современное хранилище данных (DWH) в 2026: какие технологии реально нужны, а какие — хайп</a></p></li><li><p>20:00 — <a href="https://otus.pw/3gxz/" rel="noopener noreferrer nofollow">Как системный аналитик может использовать ИИ в своей работе</a></p></li><li><p>20:00 — <a href="https://otus.pw/M9nn/" rel="noopener noreferrer nofollow">ИИ в автотестах: помощник или угроза?</a></p></li><li><p>20:00 — <a href="https://otus.pw/lofo/" rel="noopener noreferrer nofollow">ИИ-подход к анализу рынка: как видеть возможности раньше других</a></p></li><li><p>20:00 — <a href="https://otus.pw/Lbe3O/" rel="noopener noreferrer nofollow">Навигация Pro-уровня в SwiftUI: как строить масштабируемые iOS-приложения без хаоса в переходах</a></p></li></ul><blockquote><p>Для начинающих рекомендуем обратить внимание на короткие видеокурсы, которые помогут закрепить основы,&nbsp;<span class="habrahidden">сейчас всего за 10 рублей</span>:</p><ul><li><p><a href="https://otus.pw/0uCH/" rel="noopener noreferrer nofollow">Основы SQL</a></p></li><li><p><a href="https://otus.pw/tMEE/" rel="noopener noreferrer nofollow">Основы Git</a></p></li><li><p><a href="https://otus.pw/rVRA/" rel="noopener noreferrer nofollow">Linux для начинающих</a></p></li></ul></blockquote> <a href="https://habr.com/ru/posts/1009844/?utm_campaign=1009844&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 16 Mar 2026 07:02:56 GMT</pubDate>
    <dc:creator><![CDATA[MaxRokatansky (OTUS)]]></dc:creator>
      
      <category><![CDATA[подборка уроков]]></category><category><![CDATA[онлайн-уроки]]></category><category><![CDATA[бесплатные вебинары]]></category><category><![CDATA[онлайн-обучение]]></category><category><![CDATA[карьера в ИТ]]></category><category><![CDATA[профессиональный рост]]></category><category><![CDATA[lifelong education]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @GarantexAi — Искусственный интеллект (+3) — 14.03.2026 10:51]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1010120/</guid>
    <link>https://habr.com/ru/posts/1010120/?utm_campaign=1010120&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>&nbsp;Claude Code: 3 фичи, которые стоит знать</strong>   </p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/2ee/1e1/ad1/2ee1e1ad1c592b33bb04b0b53f5bbf05.png" width="657" height="283"></figure><p><strong>Opus 4.6 и контекст в 1 млн токенов</strong></p><p>Теперь включён по умолчанию. Миллион токенов — это примерно 750 000 слов или несколько крупных кодовых баз целиком. На практике это означает, что агент дольше «помнит» контекст задачи без деградации качества на длинных сеансах.</p><p>Для большинства задач разница с предыдущими лимитами несущественна. Но если вы работаете с большими монорепозиториями или длинными аналитическими сессиями — почувствуете.</p><p><strong>Три фичи, которые стоит знать</strong></p><p><strong><code>/btw</code>&nbsp;— вопросы на ходу</strong></p><p>Агент работает час, вы не прерываете его — просто пишете&nbsp;<code>/btw что такое этот класс?</code>. Он отвечает из копии контекста, основной поток не трогает. Работает через кеш — почти бесплатно.<br><br><strong><em>Почему это важно</em></strong></p><p>Раньше, если в середине часового сеанса агента нужно было что-то уточнить, вы открывали новый сеанс, пересоздавали весь контекст — и платили за это токены. Теперь Claude Code создаёт одноразовый снимок текущего состояния, отвечает на ваш вопрос и удаляет снимок. Основной агент ничего не знает и продолжает работу.</p><p><strong><code>/loop</code>&nbsp;— цикл до условия</strong></p><p>Запускает команду повторно, пока не выполнится условие. Например: «запускай тесты и фикси ошибки, пока все не пройдут». Без вашего участия.</p><p><strong>Agent Teams — параллельные агенты</strong></p><p>Несколько агентов работают одновременно и общаются друг с другом. Один пишет код, другой ревьюит, третий пишет тесты. Реально полезно, когда задача не имеет чёткого финального состояния.</p><p>Практически: спросили «почему здесь используется этот паттерн», получили ответ, не потеряли прогресс.</p><p><strong> Когда это реально нужно?</strong></p><p>Агенты буквально пишут сообщения друг другу: делятся находками, оспаривают решения. Это не маркетинговая метафора — в логах видно переписку.</p><p>Хорошо работает на задачах, где нельзя заранее точно сформулировать условия выполнения. Например: «сделай этот модуль надёжным» — агент по архитектуре, агент по тестированию и агент по документации работают параллельно и синхронизируются.</p><p><strong>Куда это всё движется</strong></p><p>Claude Code последовательно поглощает функциональность внешних инструментов. Сначала взял на себя управление контекстом, потом — параллелизацию. Сейчас добавляет циклическое выполнение и внутренние коммуникации между агентами.</p><p>У меня ощущение, что через год-два это будет единственный инструмент, который нужен для большинства задач разработки. Или конкуренты успеют ответить — посмотрим. А вы что думаете?<br><br>Если материал был полезен, проголосуйте пожалуйста, чтобы дать мне возможность писать полноценные гайды и статьи :)</p> <a href="https://habr.com/ru/posts/1010120/?utm_campaign=1010120&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sat, 14 Mar 2026 07:51:16 GMT</pubDate>
    <dc:creator><![CDATA[GarantexAi]]></dc:creator>
      
      <category><![CDATA[claude code]]></category><category><![CDATA[ai]]></category><category><![CDATA[искусственный интеллект]]></category><category><![CDATA[llm]]></category><category><![CDATA[antropic]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @spring_aio — Блог компании Spring АйО (+3) — 12.03.2026 16:22]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/spring_aio/posts/1009482/</guid>
    <link>https://habr.com/ru/companies/spring_aio/posts/1009482/?utm_campaign=1009482&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>JEP 524 в JDK 26 — второй preview PEM API</strong></p><p>Наконец-то работа с PEM в Java становится похожа на API, а не на набор ручного парсинга, Base64 и странных телодвижений.</p><p>Справка: <em>PEM или Privacy-Enhanced Mail - это текстовый контейнер для криптографических данных. Проще говоря – это способ хранить или передавать ключ, сертификат или другой crypto-объект не в бинарном виде, а в текстовом.</em></p><p>Раньше с PEM работали так:</p><pre><code class="java">String pem = "-----BEGIN PUBLIC KEY-----\n"
&nbsp; &nbsp; &nbsp; &nbsp; + Base64.getMimeEncoder(64, "\n".getBytes())
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .encodeToString(publicKey.getEncoded())
&nbsp; &nbsp; &nbsp; &nbsp; + "\n-----END PUBLIC KEY-----";</code></pre><p>А в обратную сторону, но уже с ручной нормализацией PEM, Base64-декодированием и <code>KeyFactory</code>:</p><pre><code class="java">String normalized = pem
&nbsp; &nbsp; &nbsp; &nbsp; .replace("-----BEGIN PUBLIC KEY-----", "")
&nbsp; &nbsp; &nbsp; &nbsp; .replace("-----END PUBLIC KEY-----", "")
&nbsp; &nbsp; &nbsp; &nbsp; .replaceAll("\\s", "");

byte[] der = Base64.getDecoder().decode(normalized);

PublicKey key = KeyFactory.getInstance("EC")
&nbsp; &nbsp; &nbsp; &nbsp; .generatePublic(new X509EncodedKeySpec(der));</code></pre><p>По факту PEM в Java долгое время был не отдельным API, а набором низкоуровневых шагов, которые разработчик собирал руками.</p><p>А теперь это выглядит так:</p><pre><code class="java">var encoder = PEMEncoder.of();
String pem = encoder.encodeToString(keyPair);

var decoder = PEMDecoder.of();
KeyPair decoded = decoder.decode(pem, KeyPair.class);</code></pre><p>То есть ключевую пару можно закодировать в PEM и декодировать обратно буквально в несколько строк.</p><p>Во втором <em>preview</em>:</p><ul><li><p><code>PEMRecord</code> переименовали в PEM</p></li><li><p>добавили <code>decode()</code></p></li><li><p>расширили поддержку <code>KeyPair</code> и <code>PKCS8EncodedKeySpec</code></p></li><li><p>упростили шифрование через <code>EncryptedPrivateKeyInfo</code></p></li></ul><p>А так, как все это дело еще в <em>preview</em>, не забываем использовать <code>--enable-preview</code>.</p><p><em>❓ Минус еще один кусок криптографической копипасты из Java-кода.</em> <em>PEM в Java постепенно перестает быть унылым?</em></p><figure class="full-width "><img src="https://habrastorage.org/r/w1560/getpro/habr/upload_files/258/484/92d/25848492d4cd2dcd1df595e475569a9a.png" width="1560" height="334"></figure><p><a href="https://t.me/+acrI2N6q080wZjM6" rel="noopener noreferrer nofollow">Присоединяйтесь</a>&nbsp;к&nbsp;русскоязычному сообществу разработчиков на&nbsp;Spring Boot в&nbsp;телеграм&nbsp;—&nbsp;<a href="https://t.me/+acrI2N6q080wZjM6" rel="noopener noreferrer nofollow">Spring АйО</a>, чтобы быть в курсе последних новостей из мира разработки на Spring Boot и всего, что с ним связано.</p> <a href="https://habr.com/ru/posts/1009482/?utm_campaign=1009482&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Thu, 12 Mar 2026 13:22:16 GMT</pubDate>
    <dc:creator><![CDATA[spring_aio (Spring АйО)]]></dc:creator>
      
      <category><![CDATA[java]]></category><category><![CDATA[kotlin]]></category><category><![CDATA[cryptography]]></category><category><![CDATA[crypto]]></category><category><![CDATA[jep]]></category>
  </item>
  

	
  

  

  

      

      

      

    
  </channel>
</rss>
