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

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

  <channel>
    <title><![CDATA[Все посты подряд / Python / Хабр]]></title>
    <link>https://habr.com/ru/hubs/python/posts/</link>
    <description><![CDATA[Python – высокоуровневый язык программирования]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Wed, 30 Sep 2026 01:57:16 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[Пост @denis-19 — Open source (+4) — 29.09.2026 13:39]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1088026/</guid>
    <link>https://habr.com/ru/posts/1088026/?utm_campaign=1088026&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Представлен открытый проект <a href="https://github.com/maximilianfeix/proxy-scraper" rel="noopener nofollow">proxy-scraper</a> для выявления в сети открытых сервисов прокси, которые работают штатно и более менее безопасно. </p><p>«Большинство списков бесплатных прокси на 95% состоят из&nbsp;нерабочих адресов, а&nbsp;значительная часть оставшихся&nbsp;— это&nbsp;либо „ловушки“ (honeypots),&nbsp;либо прокси, внедряющие скрипты в&nbsp;загружаемые вами страницы. Инструмент proxy‑scraper собирает публичные прокси (HTTP, SOCKS4&nbsp;и SOCKS5) из&nbsp;более чем 700&nbsp;источников и сохраняет только те, что&nbsp;успешно проходят все проверки. При&nbsp;каждом запуске программа анализирует эффективность источников, а&nbsp;полученный результат может преобразовать в&nbsp;единый ротируемый прокси‑адрес. В&nbsp;цифрах: за&nbsp;одни сутки&nbsp;было проверено 3,6&nbsp;миллиона бесплатных прокси&nbsp;— работоспособными оказались 1,1%, причём более половины из&nbsp;тех, что&nbsp;ответили на&nbsp;первый запрос, не&nbsp;прошли проверку повторным запросом»,&nbsp;— пояснил создатель проекта.</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/f55/59a/1fb/f5559a1fb6ea298b022fce6b4ae3ce8e.png" width="838" height="763"></figure> <a href="https://habr.com/ru/posts/1088026/?utm_campaign=1088026&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 29 Sep 2026 10:39:39 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[proxy scraper]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @dugalb — Python (+1) — 27.09.2026 16:13]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1087144/</guid>
    <link>https://habr.com/ru/posts/1087144/?utm_campaign=1087144&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Ведомости КМД как данные: что автоматизировать на Python и pandas</strong></p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/a5d/7a8/cc5/a5d7a8cc5cc0bd9280f5c22e4260005f.png" width="1280" height="720"></figure><p><strong>TL;DR:</strong> Ведомости КМД удобно обрабатывать в Python и pandas: привести выгрузку к плоской таблице, проверить данные, посчитать суммы и распределения, собрать отчёт или дашборд. Главное — не пропускать проверки.</p><p>Ведомость — не просто таблица веса. В ней детали, сборки, марки, комплекты документации. Пока объём небольшой, хватает Excel. Когда ведомостей много и структура выгрузок различается, повторяющиеся проверки превращаются в отдельный процесс.</p><p>КМД — это деталировочные чертежи металлоконструкций. Ведомости в их составе — таблицы с элементами, деталями, марками, количеством и весом. Именно такие таблицы удобно обрабатывать в Python.  </p><p><strong>Почему выгрузка не готова к анализу</strong></p><ul><li><p>многоуровневые заголовки и объединённые ячейки;</p></li><li><p>несколько листов с разной структурой;</p></li><li><p>разные названия одних и тех же полей;</p></li><li><p>числа и текст в одном столбце;</p></li><li><p>пустые значения, дубликаты, служебные итоги;</p></li><li><p>разные единицы измерения.</p></li></ul><p>Даже суммарный вес по типам элементов начинается с выяснения, что в таблице и как читать поля. Процесс лучше делить: <strong>Excel/CSV → подготовка → проверка → расчёты → отчёт.</strong></p><p><strong>Подготовка в pandas</strong></p><p>pandas читает Excel/CSV, преобразует столбцы, фильтрует, группирует и считает. Если таблица уже плоская:</p><pre><code class="python">import pandas as pd
df = pd.read_excel("ведомость.xlsx")
df["Вес"] = pd.to_numeric(df["Вес"], errors="coerce")
summary = (df.dropna(subset=["Тип элемента", "Вес"])
             .groupby("Тип элемента", as_index=False)["Вес"]
             .sum()
             .sort_values("Вес", ascending=False))
print(summary)
</code></pre><p>Это иллюстрация. Реальные файлы требуют настройки листа, строк заголовков, названий колонок и обработки итогов. Но даже такая группировка становится повторяемым шагом.</p><p><strong>Проверки важнее расчёта</strong></p><p>Число получить легко. Важнее понять, можно ли ему доверять. Проверяйте:</p><ul><li><p>обязательные поля;</p></li><li><p>числовые столбцы;</p></li><li><p>попадание заголовков и итогов в расчёт;</p></li><li><p>неожиданные дубликаты;</p></li><li><p>сходимость с контрольными суммами;</p></li><li><p>единицы измерения.</p></li></ul><p>В pandas это делается коротко:</p><pre><code class="python">print(df[["Тип элемента", "Вес"]].isna().sum())
print(df.duplicated(subset=["Марка", "Тип элемента"]).sum())
</code></pre><p>Набор проверок зависит от методики предприятия. Универсального правила нет, но проверки можно сделать явными и повторяемыми.</p><p><strong>Что анализировать</strong></p><ul><li><p>суммарный вес и количество позиций;</p></li><li><p>распределение веса по типам элементов;</p></li><li><p>сравнение сборок и комплектов;</p></li><li><p>повторяющиеся детали;</p></li><li><p>необычно тяжёлые/лёгкие позиции;</p></li><li><p>таблицы и графики для отчёта.</p></li></ul><p>Для визуализации — Plotly, для интерактивного дашборда — Streamlit. Но график лишь помогает заметить необычное значение, а не объясняет его причину.</p><p><strong>Повторяемый сценарий</strong></p><p>Удобно работать в Jupyter Notebook: загрузка, преобразования, проверки, расчёты. Затем повторяющиеся операции вынести в функции и шаблоны. Сохраняйте прозрачность: какие данные загружены, что преобразовано, какие строки исключены.</p><p><strong>Что разрабатываем</strong></p><p>Готовим курс <strong>«Мастер ведомостей»</strong> о Python и pandas для ведомостей КМД: неидеальные Excel/CSV, проверка данных, показатели, анализ сборок, визуализация, простые дашборды. Программа уточняется; будут практика, Jupyter Notebook, код и шаблоны.</p><p>Оставить заявку на уведомление о старте можно на <a href="https://vedmaster.oporion.online/" rel="noopener nofollow">странице курса</a>.</p><p><strong>Вопросы к сообществу</strong></p><ol><li><p>Какие операции с ведомостями вы чаще всего делаете вручную?</p></li><li><p>Какие проверки хотели бы сделать повторяемыми?</p></li><li><p>В каком виде удобнее получать результат: таблица, Excel-отчёт, графики, дашборд?</p></li></ol><p>Расскажите в комментариях — это поможет выбрать сценарии для курса.</p> <a href="https://habr.com/ru/posts/1087144/?utm_campaign=1087144&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sun, 27 Sep 2026 13:13:05 GMT</pubDate>
    <dc:creator><![CDATA[dugalb]]></dc:creator>
      
      <category><![CDATA[Python]]></category><category><![CDATA[pandas]]></category><category><![CDATA[КМД]]></category><category><![CDATA[металлоконструкции]]></category><category><![CDATA[автоматизация]]></category><category><![CDATA[Excel]]></category><category><![CDATA[Jupyter Notebook]]></category><category><![CDATA[Plotly]]></category><category><![CDATA[Streamlit]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @runity — Блог компании Рунити (+4) — 24.09.2026 14:14]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/runity/posts/1086142/</guid>
    <link>https://habr.com/ru/companies/runity/posts/1086142/?utm_campaign=1086142&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Изолируем зависимости: как создать виртуальное окружение в Python</strong></p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/b2c/5b9/7a7/b2c5b97a747f2d978f29a5bce5127aa9.png" width="1920" height="1080"></figure><p>Когда пишешь код на Python, рано или поздно наступает момент, что один проект начнет ломать другой. Установили новую библиотеку, и вдруг скрипт, который вчера работал, падает с ошибкой. Знакомо? Причина обычно одна — конфликт зависимостей. Все пакеты свалены в один системный Python, версии пересекаются, и что-то обязательно отваливается.</p><p>Решение — виртуальное окружение. Это отдельная песочница для проекта: свои библиотеки, свой Python, никакого пересечения с соседями.</p><p>Вот с чего стоит начать и что стоит разобрать, если вы только садитесь за такую изоляцию зависимостей:</p><ul><li><p><strong>Виртуальное окружение vs виртуальная машина.</strong>&nbsp;Первое — это просто отдельная папка с пакетами, второе — целая ОС. Хотя некоторые новички часто путают, и потом удивляются, почему venv весит пару мегабайт.</p></li><li><p><strong>venv, virtualenv, pipenv, poetry, conda.</strong>&nbsp;Это пять инструментов, которые решают похожие задачи, но по-разному. Для большинства проектов хватает встроенного venv — он уже есть в Python с версии 3.3, и ничего ставить не надо.</p></li><li><p><strong>Активация.</strong>&nbsp;А это самая частая точка спотыкания. Команды различаются для Windows, Linux и macOS, а PowerShell вообще блокирует скрипты по умолчанию.&nbsp;<code>source .venv/bin/activate</code>&nbsp;против&nbsp;<code>.venv\Scripts\activate</code>&nbsp;— и это только начало.</p></li><li><p><strong>requirements.txt.</strong>&nbsp;Важно помнить, что папку окружения нельзя копировать между машинами, так как она привязана к ОС и архитектуре. Вместо этого фиксируем список пакетов и разворачиваем его одной командой&nbsp;<code>pip install -r requirements.txt</code>.</p></li><li><p><strong>Git и .gitignore.</strong>&nbsp;Виртуальное окружение в репозиторий не кладут — только код и список зависимостей. </p></li></ul><p>Чтобы пройти весь путь по шагам — от создания первой папки до деплоя на сервере через systemd и Gunicorn — читайте подробный гайд <a href="https://reg.cloud/blog/izoliruem-zavisimosti-kak-sozdat-virtualnuyu-sredu-v-python-s-nulya/?utm_source=habr&amp;utm_medium=post&amp;utm_campaign=blog2" rel="noopener nofollow">на сайте Рег.облака</a>.</p> <a href="https://habr.com/ru/posts/1086142/?utm_campaign=1086142&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Thu, 24 Sep 2026 11:14:25 GMT</pubDate>
    <dc:creator><![CDATA[runity (Рунити)]]></dc:creator>
      
      <category><![CDATA[python]]></category><category><![CDATA[виртуальное окружение]]></category><category><![CDATA[venv]]></category><category><![CDATA[зависимости]]></category><category><![CDATA[pip]]></category><category><![CDATA[poetry]]></category><category><![CDATA[virtualenv]]></category><category><![CDATA[git]]></category><category><![CDATA[разработка]]></category><category><![CDATA[python 3]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @runity — Блог компании Рунити (+4) — 22.09.2026 23:28]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/runity/posts/1085394/</guid>
    <link>https://habr.com/ru/companies/runity/posts/1085394/?utm_campaign=1085394&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Python в VS Code не работает? Разбираем настройку по шагам</strong></p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/3f2/a72/8fb/3f2a728fb0dbd0bda1d830d42f14bbfe.png" width="1920" height="1080"></figure><p>Если вы пишете код на Python, рано или поздно встает вопрос: в чем его писать? Вариантов масса: от блокнота до тяжелых IDE вроде PyCharm. Visual Studio Code — отличный компромисс — он легкий, но при этом умеет почти всё, что нужно для комфортной работы. Но сложность в том, что из коробки он бесполезен, пока не настроишь интерпретатор, расширения и окружение. И вот тут начинается самое интересное.</p><p>Вот с чего стоит начать и что стоит разобрать, если вы только садитесь за настройку:</p><ul><li><p><strong>Интерпретатор.</strong>&nbsp;VS Code хранит и редактирует файлы, но код выполняет отдельная программа. Пока вы явно не укажете, какой Python использовать, редактор будет гадать и часто ошибаться.</p></li><li><p><strong>Виртуальное окружение.</strong>&nbsp;Без него все библиотеки ставятся в общую систему, и рано или поздно два проекта потребуют разные версии одной и той же библиотеки. Что-то одно сломается.</p></li><li><p><strong>Расширения.</strong>&nbsp;Pylance отвечает за автодополнение, Python Debugger — за отладку по шагам, Ruff — за линтинг и форматирование. Но если поставить всё сразу, инструменты начнут конфликтовать между собой.</p></li><li><p><strong>Отладка вместо print().</strong>&nbsp;Точки остановки и панель переменных позволяют увидеть, что реально происходит в коде, вместо того чтобы гадать, где закралась ошибка.</p></li></ul><p>Каждый из этих пунктов — отдельная история с нюансами под Windows, macOS и Linux. Где-то команда называется&nbsp;<code>python</code>, где-то&nbsp;<code>python3</code>. Где-то нужно вручную добавить PATH, где-то переустановить Python из официального пакета.</p><p>Если хотите пройти весь путь по шагам: от установки редактора до запуска первого скрипта с отладкой, читайте полное руководство <a href="https://reg.cloud/blog/nastrojka-visual-studio-code-dlya-python/?utm_source=habr&amp;utm_medium=post&amp;utm_campaign=blog" rel="noopener nofollow">на сайте Рег.облака</a>.</p> <a href="https://habr.com/ru/posts/1085394/?utm_campaign=1085394&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 22 Sep 2026 20:28:47 GMT</pubDate>
    <dc:creator><![CDATA[runity (Рунити)]]></dc:creator>
      
      <category><![CDATA[python]]></category><category><![CDATA[visual studio code]]></category><category><![CDATA[настройка окружения]]></category><category><![CDATA[виртуальное окружение]]></category><category><![CDATA[venv]]></category><category><![CDATA[pylance]]></category><category><![CDATA[ruff]]></category><category><![CDATA[отладка кода]]></category><category><![CDATA[линтеры]]></category><category><![CDATA[интерпретатор python]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Open source (+4) — 21.09.2026 07:42]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1084462/</guid>
    <link>https://habr.com/ru/posts/1084462/?utm_campaign=1084462&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Представлен открытый проект <a href="https://github.com/BakedSoups/NextSteamGame" rel="noopener nofollow">NextSteamGame</a>, который помогает выдавать рекомендации по играм в Steam. В отличие от алгоритмов Valve, в этом проекте считываются не только пересечения предпочтений других игроков, а и метаданные каждого тайтла. Специальная нейросеть разбирает проект на набор механик и жанров, после чего ищет совпадения в других играх.</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/558/e4a/810/558e4a810a012585270576177de7a30e.jpg" width="1986" height="1433"></figure> <a href="https://habr.com/ru/posts/1084462/?utm_campaign=1084462&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 21 Sep 2026 04:42:08 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[NextSteamGame]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @Renewal_Studio — Искусственный интеллект (+4) — 20.09.2026 12:23]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1084288/</guid>
    <link>https://habr.com/ru/posts/1084288/?utm_campaign=1084288&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Модель уровня opus 5 бесплатно</strong>. <strong>swe-2 в devin, но есть нюансы</strong>На выходных многие ломанулись тестировать <a href="https://cognition.com/blog/swe-2" rel="noopener nofollow">SWE-2: до 10 октября он бесплатен в Devin Desktop и CLI</a>. Модель интересная: дообученная от Kimi K3, аккуратно правит код, хорошо держит фронт и умеет много агентской рутины. Плюс сразу подхватывает AGENTS.md, skills, MCP и привычные CLI-интеграции. Целей нет, зато есть /loop</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/961/cb7/5ce/961cb75ce7b0771ee48504fb05cb5450.png" width="1047" height="217"></figure><p><u>Нюанс №1</u><br>У части пользователей незаметно включается Adaptive, а по умолчанию рядом маячит Fusion. В итоге ты думаешь, что работаешь на бесплатном SWE-2, а квота уезжает на роутер или lead-модель.В Fusion SWE-2 может быть только допом, а Fable/Astra/Sol платной основой. Дневная квота много у кого горит<br><u>Нюанс №2</u><br>Бесплатно не значит безлимитно по скорости. По ощущениям, после 5–6 параллельных сессий TPS режется примерно со 100 до 70, в пик может падать до 30. Плюс периодически прилетают 429, и API притормаживает<br>Чтобы не платить за соседей:<br></p><pre><code>devin --model swe-2-high
/model swe-2-high
/session-stats</code></pre><p>В конфиге закрепить (например) <code>%APPDATA%\devin\config.json</code>, </p><pre><code>{
  "agent": {
    "model": "swe-2-high"
  }
}</code></pre><p>Ну а <code>/fusion</code>, <code>/model adaptive</code> и <code>/handoff</code> не трогать. В статистике должна быть одна модель SWE-2, без Lead/Sidekick, и quota не должна уменьшаться.</p><p>P.S. Низкий порог входа по почте и слабая привязка к устройству сделали промо очень удобным для мультиаккаунтинга. Те 1 аккаунт за 20$ на почту + vps + cliproxyapi =&gt;десятки индусов абузят через сабагентов. А еще конечно это по сути бесплатная мощная модель для любых ваших ИИ продуктов</p><p>P.P.S. 100% включат недельные квоты для free tier, но попробуй успеть пока не разобрали</p> <a href="https://habr.com/ru/posts/1084288/?utm_campaign=1084288&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sun, 20 Sep 2026 09:23:46 GMT</pubDate>
    <dc:creator><![CDATA[Renewal_Studio]]></dc:creator>
      
      <category><![CDATA[swe-2]]></category><category><![CDATA[devin]]></category><category><![CDATA[free ai model]]></category><category><![CDATA[free ai]]></category><category><![CDATA[opus]]></category><category><![CDATA[claude]]></category><category><![CDATA[codex]]></category><category><![CDATA[grok build]]></category><category><![CDATA[herdr]]></category><category><![CDATA[cliproxyapi]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @it_police — Python — 19.09.2026 10:25]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1084078/</guid>
    <link>https://habr.com/ru/posts/1084078/?utm_campaign=1084078&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Решил проверить, что обо мне знает Google. И знает он достаточно. Я есть и в SEO, и в GEO выдаче.</p><p>К слову, попасть туда не сложно. Достаточно иметь точные вхождения поисковых запросов в сочетании с именем на трастовых площадках, уважаемых поисковиками. В моем случае лучше всего отрабатывает любимый Habr.</p><p>К сожалению, разработчику это мало поможет в поиске работы, но сам принцип может пригодиться.</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/f6c/ca6/1a3/f6cca61a33e925ae3529d7093b42a97c.jpeg" alt="К посту нельзя прикрепить больше 1 пикчи, но есть выдача и по другим запросам" title="К посту нельзя прикрепить больше 1 пикчи, но есть выдача и по другим запросам" width="828" height="1300"><div><figcaption>К посту нельзя прикрепить больше 1 пикчи, но есть выдача и по другим запросам</figcaption></div></figure><p>Есть смысл в маркетинге для разрабов? Что думаете?</p> <a href="https://habr.com/ru/posts/1084078/?utm_campaign=1084078&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sat, 19 Sep 2026 07:25:44 GMT</pubDate>
    <dc:creator><![CDATA[it_police]]></dc:creator>
      
      <category><![CDATA[SEO]]></category><category><![CDATA[Geo]]></category><category><![CDATA[SMM]]></category><category><![CDATA[маркетинг]]></category><category><![CDATA[разработчик]]></category><category><![CDATA[backend]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @it_police — Информационная безопасность (+1) — 18.09.2026 18:20]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1083972/</guid>
    <link>https://habr.com/ru/posts/1083972/?utm_campaign=1083972&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>PhishIntel, инструмент WEB‑разведки для&nbsp;сбора публичных данных, обновлен.</p><p>Он стал более юзерфрендли, добавлено интерактивное меню, и рендеринг человекочитаемого отчета. Кроме того, запускается одной командой, и не требует никаких дополнительных зависимостей. Инструмент написан на чистом Python c щепоткой Go.</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/3bf/911/842/3bf911842d39148584054450b44faa03.png" width="880" height="533"></figure><p>В основной отчет по проверке web-ресурса входит:</p><ul><li><p>email-адреса;</p></li></ul><ul><li><p>телефоны по российским и американским форматам;</p></li></ul><ul><li><p>телефоны из HTML-полей <code>tel</code>, <code>phone</code>, <code>telephone</code>, <code>mobile</code> и аналогов;</p></li></ul><ul><li><p>адреса из специализированных полей и строк с явными адресными признаками;</p></li></ul><ul><li><p>источники только тех страниц, где найдены контакты;</p></li></ul><ul><li><p>внешние домены;</p></li></ul><ul><li><p>внешние API endpoint-ы;</p></li></ul><ul><li><p>внешние JavaScript-файлы;</p></li></ul><ul><li><p>агрегированные счётчики обхода;</p></li></ul><ul><li><p>DNS, IP и reverse DNS;</p></li></ul><ul><li><p>RDAP и WHOIS;</p></li></ul><ul><li><p>TLS-сертификат;</p></li></ul><ul><li><p>цепочка перенаправлений;</p></li></ul><ul><li><p>найденные поддомены;</p></li></ul><ul><li><p>локальная история DNS/TLS;</p></li></ul><ul><li><p>ограниченное сканирование TCP-портов исходного домена и определение технологий;</p></li></ul><ul><li><p>технологии, используемые на сайте</p></li></ul><p>Репозиторий проекта: <a href="https://github.com/Bednyakov/PhishIntel" rel="noopener nofollow">https://github.com/Bednyakov/PhishIntel</a></p> <a href="https://habr.com/ru/posts/1083972/?utm_campaign=1083972&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 18 Sep 2026 15:20:40 GMT</pubDate>
    <dc:creator><![CDATA[it_police]]></dc:creator>
      
      <category><![CDATA[OSINT]]></category><category><![CDATA[Python]]></category><category><![CDATA[Go]]></category><category><![CDATA[разведка]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — 3D-принтеры (+4) — 16.09.2026 07:23]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1082748/</guid>
    <link>https://habr.com/ru/posts/1082748/?utm_campaign=1082748&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Открытый проект <a href="https://github.com/makalin/KeyForge3D" rel="noopener nofollow">KeyForge3D</a> позволяет преобразовать фотографию ключа в файл для 3D-печати. Приложение выделяет контур ключа, добавляет ему толщину и сохраняет результат в STL для дальнейшей печати. Система работает локально без нейросетей и подписок — внутри обычный OpenCV.</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/cbb/b7b/67d/cbbb7b67dcd8fbf98749a4ee573c9af9.jpg" width="1536" height="1024"></figure> <a href="https://habr.com/ru/posts/1082748/?utm_campaign=1082748&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 16 Sep 2026 04:23:03 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[KeyForge3D]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — HTML (+4) — 14.09.2026 11:47]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1081956/</guid>
    <link>https://habr.com/ru/posts/1081956/?utm_campaign=1081956&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Представлен открытый ИИ‑инструмент для&nbsp;создания диаграмм <a href="https://github.com/cathrynlavery/diagram-design" rel="noopener nofollow">Diagram Design</a>. Решение не&nbsp;требует ни этапа сборки, ни JavaScript, ни внешних изображений. В&nbsp;проекте есть 39&nbsp;типов схем для&nbsp;Claude Code, Codex, Factory Droid, Pi и других платформ, поддерживающих Agent Skills. Автономный код HTML + SVG. </p><p>«Никаких теней. Никакой неряшливости, свойственной Mermaid. Семантические паттерны описывают поведение отдельно от&nbsp;компоновки, поэтому такие элементы, как&nbsp;очередь, трассировка политик или&nbsp;граница доверия, могут использовать ближайший существующий тип без&nbsp;необходимости создавать новые. Статичный HTML используется по&nbsp;умолчанию; для&nbsp;последовательных пояснений доступна опциональная анимация. Инструмент также позволяет перерисовывать схемы из&nbsp;форматов draw.io, Mermaid или&nbsp;Excalidraw, задавая нужный формат, размер и уровень детализации. Никакой Figma. Никаких стандартных блоков со скруглёнными углами. Никаких 30-минутных сеансов подбора цветов»,&nbsp;— пояснил автор решения.</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/9a6/576/762/9a657676269c34aac694a9da28d0cfe0.png" width="1051" height="738"></figure> <a href="https://habr.com/ru/posts/1081956/?utm_campaign=1081956&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 14 Sep 2026 08:47:32 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[Diagram Design]]></category><category><![CDATA[Claude Code]]></category><category><![CDATA[диаграмма]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @ipgleg — Информационная безопасность (+2) — 14.09.2026 10:29]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1081910/</guid>
    <link>https://habr.com/ru/posts/1081910/?utm_campaign=1081910&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Я написал, что система умеет откатывать действия агента. Потом открыл код</p><p>В анонсе своего проекта я написал: «журнал — это последовательность действий, по нему можно пройти назад и честно остановиться на первом шаге, который отменить нельзя». Фраза мне нравилась. Перед публикацией я решил проверить, делает ли это код.</p><p>Код откатывал один шаг по идентификатору. Никакого прохода назад, ни остановки на необратимом. До публикации оставалось несколько часов.</p><p>Функцию я написал — вместо того чтобы смягчить формулировку. И на первом же запуске поймал две вещи.</p><p><strong>Порядок прохода я задал сортировкой по времени — и получил неправильный порядок.</strong> Отметки хранятся с точностью до секунды, несколько шагов делят одну и ту же, а стабильная сортировка при равных ключах сохраняет исходный порядок. При <code>reverse=True</code> часть шагов шла вперёд. Порядок графа задаёт последовательность выполнения, а не строка времени; время решает только, попал ли шаг в окно.</p><p><strong>Панель разошлась с движком.</strong> Она показывает, что произойдёт, до нажатия кнопки: сколько действий отменится и где проход встанет. Превью обещало остановку на «Сборке пакета», а откат отменил все шесть действий. Превью считало отсутствие ключа признаком необратимости, движок для отсутствующего ключа возвращал компенсацию по умолчанию. Два места, одно правило, разная трактовка.</p><p>Это ровно то, против чего всё и строится: обещание отката, которое молча не сработало, хуже отсутствия отката — во втором случае человек хотя бы знает, что разбираться придётся руками. Теперь превью спрашивает правило у самой профессии, а не повторяет его своими словами, и есть тест, единственная работа которого — упасть, если эти двое снова разойдутся.</p><p>Двумя неделями раньше — ошибка того же рода</p><p>Журнал, который проверяет только автор, ничего не доказывает. Поэтому верификатор написан на другом языке: пишет Python, проверяет TypeScript.</p><p>На тесте, где JS-верификатор читает журнал, созданный Python, выяснилось, что <code>json.dumps</code> сериализует <code>0.0</code> как <code>"0.0"</code>, а <code>JSON.stringify</code> то же число — как <code>"0"</code>. Строки разные, хеши разные, одна и та же честная запись хешируется по-разному.</p><p>Последствие: система объявила бы настоящий журнал поддельным. Не пропустила бы подделку — обвинила бы в подлоге того, кто ничего не подделывал.</p><pre><code class="python">def _jcs_numbers(value: Any) -&gt; Any:
    """Приводит числа к форме, одинаковой в Python и JavaScript."""
    if isinstance(value, bool):
        return value
    if isinstance(value, float) and value.is_integer():
        return int(value)
</code></pre><p>Проверка на <code>bool</code> не паранойя: в Python <code>True</code> — экземпляр <code>int</code>, без этой ветки булево уехало бы в числовую нормализацию.</p><p>Писал бы верификатор я сам, на том же Python, — ошибка дожила бы до первого спора с клиентом.</p><p>Функция, которой намеренно нет</p><p>Проект отдаёт наружу MCP-сервер, JSON-API и ноду n8n. Все три умеют выполнять шаги, спрашивать разрешение и читать журнал. Ни один не умеет <strong>подтверждать</strong>.</p><p>Если бы модель могла вызвать <code>confirm</code>, человек исчез бы из цепочки: агент сам себе разрешал бы необратимое действие. Поэтому карточка подтверждения уходит человеку, а в списке инструментов MCP такого инструмента нет — и есть тест, который упадёт, если он там появится. По той же причине там нет отката: он пишется в журнал как решение оператора, и агент, отменяющий свои действия, расписывался бы чужим именем.</p><p>Что вынес</p><p>Проверка на другом языке ловит то, чего не видит ни один тест, написанный в той же голове и в той же экосистеме. Разница между <code>0.0</code> и <code>0</code> не находится ревью.</p><p>И второе, менее приятное: между «я написал это в описании» и «это работает» расстояние больше, чем кажется. Я поймал у себя обещанную и несуществующую функцию за несколько часов до анонса — просто потому, что решил открыть файл и прочитать, что там написано.</p><p>Альфа, 115 тестов, ноль зависимостей, AGPL-3.0: <a href="https://github.com/oleg-vdv/kepil" rel="noopener nofollow">github.com/oleg-vdv/kepil</a>. Верификатор отдельно и под MIT: <a href="https://github.com/oleg-vdv/agent-trace" rel="noopener nofollow">agent-trace</a>.</p> <a href="https://habr.com/ru/posts/1081910/?utm_campaign=1081910&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 14 Sep 2026 07:29:17 GMT</pubDate>
    <dc:creator><![CDATA[ipgleg]]></dc:creator>
      
      <category><![CDATA[ai]]></category><category><![CDATA[open source]]></category><category><![CDATA[python]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Учебный процесс в IT (+3) — 14.09.2026 10:17]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1081904/</guid>
    <link>https://habr.com/ru/posts/1081904/?utm_campaign=1081904&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>В университета Кёльна <a href="https://workshop.virtualflybrain.org/" rel="noopener nofollow">опубликовали подборку</a> из 7 учебных курсов по поиску и анализу нейронов дрозофилы. материалы уроков структурированные, практические, с примерами и иллюстрациями.</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/380/1e6/f81/3801e6f81d0233fe1e07bafe81d63c79.png" width="1436" height="717"></figure> <a href="https://habr.com/ru/posts/1081904/?utm_campaign=1081904&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 14 Sep 2026 07:17:40 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[Virtual Fly Brain]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Python (+4) — 13.09.2026 15:47]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1081718/</guid>
    <link>https://habr.com/ru/posts/1081718/?utm_campaign=1081718&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Представлен открытый проект <a href="https://github.com/petergyang/no-ai-slop" rel="noopener nofollow">No AI Slop</a>, который чистит ИИ-тексты от 20+ типичных ИИ-штампов. Под зачистку попадают «это не X, это Y», «будущее уже здесь», но и излишний пафос и ссылки на безымянных экспертов. Скилл даёт модели правила редактирования: сохранять авторский юмор, лексику и ритм, а после правок объяснять, что поменялось. Можно отдельно попросить найти штампы в тексте.</p><iframe id="6aa69b3a94d2580d55cd883d" src="https://embedd.srv.habr.com/iframe/6aa69b3a94d2580d55cd883d" class="embed_video embed__content" allowfullscreen="true"></iframe> <a href="https://habr.com/ru/posts/1081718/?utm_campaign=1081718&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sun, 13 Sep 2026 12:47:40 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[No AI Slop]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Программирование (+4) — 13.09.2026 10:32]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1081656/</guid>
    <link>https://habr.com/ru/posts/1081656/?utm_campaign=1081656&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Все видеозаписи конференции EuroPython 2026, проходившей в Кракове (Польша) с 13 по 19 июля 2026 года, теперь <a href="https://www.youtube.com/watch?v=9ZuZfG8_jH8&amp;list=PLd3Y9yzyC5Uo&amp;ref=blog.europython.eu" rel="noopener nofollow">доступны онлайн</a> для всех пользователей (<a href="https://www.flickr.com/photos/europython/collections/72157725522022865/?ref=blog.europython.eu" rel="noopener nofollow">включая фото</a>). Также опубликован краткий обзор мероприятия от организаторов.</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/7dc/cc0/3a7/7dccc03a793e9a24ff849d3bb5b4e36e.jpg" width="1000" height="667"></figure> <a href="https://habr.com/ru/posts/1081656/?utm_campaign=1081656&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sun, 13 Sep 2026 07:32:06 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[EuroPython 2026]]></category><category><![CDATA[EuroPython]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @Songer — Оболочки (+4) — 12.09.2026 02:08]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1081472/</guid>
    <link>https://habr.com/ru/posts/1081472/?utm_campaign=1081472&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Ребят, возможно пригодится тем кто пользуется trusttunnel vpn на компе. Надоело перебирать bat'ники подумал, сейчас с клодом на питоне можно что угодно сделать. Cобрал небольшую программку, она запускается из любой директории (с правами админа, иначе vpn не подключится). В папке необходимы файлы самого сервиса trasttunnel и конфиги (в инфо есть как их надо обозвать). Удобно что видно когда впн подключился, проверяет сразу ваше местоположение и ip. Есть переключение на англ язык. Возможность менять сервера. Виден лог подключения. Сделал для себя, но решил поделиться. Выложил по совету товарищей на github - <a href="https://github.com/mobitop/trusttunnel" rel="noopener nofollow">https://github.com/mobitop/trusttunnel</a><br>Хотя по мне - просто хотел поделиться. Могу залить исходный код, только не знаю как :) Всем добра!</p><figure class=""><img src="https://habrastorage.org/getpro/habr/upload_files/dd8/a9b/187/dd8a9b187c34f8671427f7cda4bfd17a.jpg" width="477" height="579"></figure> <a href="https://habr.com/ru/posts/1081472/?utm_campaign=1081472&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 11 Sep 2026 23:08:23 GMT</pubDate>
    <dc:creator><![CDATA[Songer]]></dc:creator>
      
      <category><![CDATA[trusttunnel]]></category><category><![CDATA[оболочка]]></category><category><![CDATA[менеджер]]></category><category><![CDATA[приложение]]></category><category><![CDATA[программирование]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @Jorixxx — Python (+1) — 11.09.2026 19:20]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1081428/</guid>
    <link>https://habr.com/ru/posts/1081428/?utm_campaign=1081428&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>В начале года я опубликовал статью <a href="https://habr.com/ru/articles/979484/" rel="noopener nofollow">Прививаем машине музыкальный вкус: фильтруем плейлист на основе предпочтений</a></p><p>Результат был хорош, но далеко не идеален - обучение занимало много времени, качество незначительно росло, хотя размеченных данных стало заметно больше. Да и ощущение, что решение должно быть красивее, но я его не вижу в силу отсуствия экспертизы, сохранялось</p><p>Поэтому спустя полгода после релиза первой версии я дал исходный контекст задачи кодагенту. Без ссылки на код проекта и без подсказок стека и каких бы то ни было подходов к реализации - только цель и ограничения, а именно:</p><ul><li><p>использовать только аудиоданные</p></li><li><p>использовать только CPU</p></li><li><p>уверенно меньше 20% ложных не\срабатываний для обеих классификаций - exclude_disliked and include_liked</p></li></ul><p>Над решением успели поработать opus 4.8 (основная архитектура решения), fable 5 (ревью архитектуры; да-да, надо было наоборот, но архитектура была собрана до выхода fable) glm-5.2 (прикладные планы реализации задач) и 5.3 (прикладные планы+доведение пайплайна до рабочего состояния)</p><p>По архитектуре железный друг:&nbsp;</p><ul><li><p>предложил тот же подход, что я использовал, но выкинул polars, вместо которого решил использовать <a href="https://duckdb.org/" rel="noopener nofollow">duckdb</a>. Когда он понял, что его не получится нормально развернуть на nfs, мы сошлись на хранении фич файлами <a href="https://parquet.apache.org/" rel="noopener nofollow">parquet</a>, а duckdb-базу билдить локально при запуске обучения - уж очень удобно ее использовать</p></li><li><p>отделил пайплайны извлечения фич от обучения. Изменение довольно капитанское, но так реально гораздо быстрее проводить эксперименты и улучшать модель. Появляются четкие артефакты с сырыми фичами, которые можно анализировать сами по себе</p></li><li><p>для процессинга агент сам предложил взять ту же <a href="https://github.com/MTG/essentia" rel="noopener nofollow">essentia</a>, но вместо навеса моделей на нее - предложил взять <a href="https://github.com/qiuqiangkong/panns_inference" rel="noopener nofollow">panns</a></p></li><li><p>примитивы обучения взял те же: <a href="https://github.com/dzharikhin/zmt-bot/blob/master/core/modeling.py" rel="noopener nofollow">mean k-NN distance+GMM log-likelihood+IsotonicRegression</a>. Предложил обучать по одной single-class модели на include_liked и exclude_disliked, но делать это за один проход. На метрику какой из моделей смотреть - решаем на уровне подписки</p></li></ul><p>Когда мы собрали решение - ничего не заработало. Качество детекции было едва выше случайного. И вот тут реально LLM оказались суперполезны, т.к. в анализе данных они понимают сильно больше меня и компенсировали пробелы в экспертизе:</p><ul><li><p>модель подкинула <a href="https://github.com/dzharikhin/zmt-bot/blob/master/core/preprocessing.py#L22" rel="noopener nofollow">критерий</a>, который позволяет выделить фичи наиболее различные в датасетах. Не просто <a href="https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html" rel="noopener nofollow">PCA</a>, а выбрать те фичи, за счет которых мы различаем liked/disliked. 4k фич сжались до 64х - это значительно повысило точность ML-моделей за счет размерности</p></li><li><p>но даже после этого exclude_disliked продолжала сильно страдать false positive'ами - эксклюдила что нужно и что не нужно. И тут агент предложил балансировать вывод этой модели выводом include_liked классификатора. Т.е. если exclude_liked считает, что трек надо выкинуть, то прежде чем вернуть это решение мы смотрим на include_liked скор этого трека. Если он высокий - трек остается. С таким подходом качество модели стало выше, мой исходный подход показывал когда-либо</p></li></ul><p>В итоге получилось решение, которое работает проще и быстрее, при этом качество его выше, чем было у меня в первой итерации. Время извлечения фич на датасете из 2k треков сократилось с нескольких дней до нескольких часов, а модель стала весить на порядки меньше</p><p>Единственной сохранившейся проблемой остается довольно высокое потребление памяти при процессинге - каждый воркер, извлекающий фичи из аудио, потребляет 1.5-2ГБ. Но размен памяти на процессинг на CPU - вполне приемлем при локальном использовании</p> <a href="https://habr.com/ru/posts/1081428/?utm_campaign=1081428&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 11 Sep 2026 16:20:55 GMT</pubDate>
    <dc:creator><![CDATA[Jorixxx]]></dc:creator>
      
      <category><![CDATA[agentic coding]]></category><category><![CDATA[essentia]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @IBS_habrablog — Блог компании IBS (+1) — 07.09.2026 09:29]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/ibs/posts/1079206/</guid>
    <link>https://habr.com/ru/companies/ibs/posts/1079206/?utm_campaign=1079206&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/d3b/ad7/03a/d3bad703aca076b01fdf2ed29ecc1abd.jpg" width="1111" height="720"></figure><p>RAG (Retrieval-Augmented Generation) — подход, при котором генеративные модели ищут ответы не только в своей внутренней «памяти», но и в ваших данных через векторный поиск и используют их для ответа. Так вы получаете более точные результаты без дообучения модели.</p><p><strong>На бесплатном</strong> <strong>вебинаре&nbsp;«<a href="https://ibs-training.ru/training/seminar/162603/" rel="noopener nofollow">Создание RAG-системы на базе Qdrant</a>» покажем процесс создания RAG-системы с использованием векторной базы данных Qdrant.</strong></p><p>📆 <strong>Когда</strong>:&nbsp;10 сентября в 18:00 (Мск)<br>👨‍🎓&nbsp;️<strong>Спикер</strong>: Елисеев Илья, эксперт в области Python и машинном обучении, анализе данных и бизнес-процессов</p><p><strong>Вы узнаете</strong>:<br>👾 Что такое RAG и как расширить «память» генеративных моделей без их дообучения.<br>👾&nbsp;Типы векторных данных. Полнотекстовый и семантический поиск.<br>👾&nbsp;Чанкинг данных: как разбивать текст на части для эффективного поиска.<br>👾&nbsp;Основы работы с Qdrant: установка, настройка и использование.<br>👾&nbsp;Создание RAG-системы: пошаговое руководство по интеграции генеративной модели с Qdrant.<br>👾&nbsp;Практика: пример создания RAG на базе редких литературных текстов и LLM.</p><p>✍️<strong><a href="https://ibs-training.ru/training/seminar/162603/" rel="noopener nofollow">Записаться</a></strong></p> <a href="https://habr.com/ru/posts/1079206/?utm_campaign=1079206&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 07 Sep 2026 06:29:25 GMT</pubDate>
    <dc:creator><![CDATA[IBS_habrablog (IBS)]]></dc:creator>
      
      <category><![CDATA[вебинар]]></category><category><![CDATA[rag]]></category><category><![CDATA[qdrant]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @ipgleg — Информационная безопасность (+3) — 06.09.2026 14:18]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1078988/</guid>
    <link>https://habr.com/ru/posts/1078988/?utm_campaign=1078988&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p> Как перестать сливать ПДн в ChatGPT и Claude: On-Prem AI-Gateway на чистом Python  </p><p>Сотрудники компании (разработчики, поддержка, юристы) активно используют ChatGPT, Claude и Cursor. В промпты летят ФИО клиентов, ИИН/ИНН, карты, API-ключи и бизнес-логика. С точки зрения RegTech (152-ФЗ, Закон РК № 94-V, GDPR) — это прямая утечка данных.</p><p>Обычный DLP просто заблокирует доступ, снижая продуктивность[cite: 1]. Мы сделали <strong><a href="https://github.com/oleg-vdv/AI-Gateway" rel="noopener nofollow">AI-Gateway</a></strong> — open-source шлюз с обратимой токенизацией (Reversible Tokenization), который маскирует ПДн до отправки в LLM, восстанавливает их в ответе и ведет защищенный лог.</p><p>Как это работает</p><p><strong>1. Исходный промпт от пользователя/приложения:</strong></p><blockquote><p>«Клиент Ержан Нурсултанулы, ИИН 900715300005, оспаривает транзакцию по карте 4400 1234 5678 9101…»</p></blockquote><p><strong>2. Уходит во внешнюю LLM (ChatGPT/Claude/Gemini):</strong></p><blockquote><p>«Клиент [PERSON_1], ИИН [NATIONAL_ID_1], оспаривает транзакцию по карте [PAN_1]…»</p></blockquote><p><strong>3. Возвращается в приложение / браузер:</strong></p><blockquote><p>«…для Ержан Нурсултанулы (ИИН 900715300005) по карте 4400 1234 5678 9101 возврат…»</p></blockquote><p>Модель помогает решить задачу, пользователь получает полный ответ, а вендор не получает ни одной персональной записи[cite: 1].</p><p>Ключевая архитектура</p><ol><li><p><strong>Обратимая токенизация, а не удаление.</strong> Замена сущностей на <code>[PERSON_1]</code> сохраняет связность текста для LLM[cite: 1]. Соответствия хранятся только в OAM (<code>Mapping Store</code>) в зашифрованном виде (PRF-CTR + HMAC) и автоматически удаляются после ответа[cite: 1].</p></li><li><p><strong>Проверка по контрольным суммам.</strong> ИИН/БИН проверяются двухпроходным весовым алгоритмом, карты — по алгоритму Луна (Luhn), IBAN — ISO 13616[cite: 1]. Секреты (AWS, OpenAI, JWT, PEM) детектируются по формату и энтропии Шеннона[cite: 1].</p></li><li><p><strong>Zero-Dependency Core (Python 3.11+ stdlib).</strong> Поверхность атаки на Supply Chain инструмента, видящего все промпты — ровно ноль[cite: 1]. Устанавливается в Air-Gapped контур без <code>pip install</code>[cite: 1].</p></li><li><p><strong>Принцип Fail-Closed.</strong> Любая ошибка распарсинга или сбой детекции блокирует запрос[cite: 1].</p></li><li><p><strong>Tamper-Evident Audit Log.</strong> Append-only JSONL с цепочкой хешей SHA-256[cite: 1]. Любое редактирование записи нарушает целостность лога[cite: 1].</p></li></ol><p>Три канала перехвата</p><ul><li><p><strong>Egress Proxy:</strong> Меняем <code>base_url</code> в OpenAI SDK (<a href="http://aigate.internal:8080/v1)%5Bcite" rel="noopener nofollow"><code>http://aigate.internal:8080/v1</code>)[cite</a>: 1]. Код приложений менять не требуется[cite: 1].</p></li><li><p><strong>Browser Extension (Manifest V3):</strong> Перехватывает ввод в ChatGPT/Claude/Gemini прямо в браузере до отправки на сервер[cite: 1].</p></li><li><p><strong>Endpoint Agent:</strong> Отслеживает буфер обмена (clipboard) для вставки в IDE (Cursor, Claude Desktop)[cite: 1].</p></li></ul><p>Маршрутизация в локальные LLM</p><p>Можно настроить правило: промпты без ПДн идут в ChatGPT/Claude, а промпты с найденными чувствительными данными автоматически перенаправляются на локальный <strong>Ollama / vLLM (Llama 3.1)</strong>[cite: 1].</p><p>Быстрый запуск</p><pre><code class="bash">git clone [https://github.com/oleg-vdv/AI-Gateway.git](https://github.com/oleg-vdv/AI-Gateway.git)
cd AI-Gateway
cp .env.example .env
docker compose up -d</code></pre> <a href="https://habr.com/ru/posts/1078988/?utm_campaign=1078988&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sun, 06 Sep 2026 11:18:57 GMT</pubDate>
    <dc:creator><![CDATA[ipgleg]]></dc:creator>
      
      <category><![CDATA[AI-Gateway]]></category><category><![CDATA[GenAI DLP]]></category><category><![CDATA[LLM security]]></category><category><![CDATA[персональные данные]]></category><category><![CDATA[анонимизация]]></category><category><![CDATA[Python]]></category><category><![CDATA[OpenAI]]></category><category><![CDATA[ChatGPT]]></category><category><![CDATA[Claude]]></category><category><![CDATA[ИИН]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @ipgleg — Информационная безопасность (+4) — 05.09.2026 15:57]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1078810/</guid>
    <link>https://habr.com/ru/posts/1078810/?utm_campaign=1078810&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Регуляторы скоро спросят «где у вас RSA?». Я написал сканер, который отвечает за секунды</p><ol><li><p><strong>Завязка.</strong> Три дедлайна: США — PQC для новых госзакупок нацбезопасности с 2027 (EO 14412 / CNSA 2.0, там прямо назван CBOM), Великобритания — полная криптографическая инвентаризация и план миграции к 2028 (NCSC), ЕС — переход с конца 2026. Первый вопрос аудитора одинаковый: «где именно у вас используется RSA?» Ответа нет почти ни у кого.</p></li><li><p><strong>Что такое CBOM</strong> и почему это не то же самое, что SBOM.</p></li><li><p><strong>«Harvest now, decrypt later»</strong> — почему это не про далёкое будущее: трафик записывают сегодня, расшифруют потом. Если у секрета срок жизни больше нескольких лет — проблема уже наступила.</p></li><li><p><strong>Как работает сканер.</strong> Одна команда, три артефакта: CycloneDX 1.6 CBOM, отчёт с планом миграции на ML-KEM/ML-DSA, SARIF для GitHub code scanning. Плюс <code>scan-tls</code> — одно рукопожатие и вердикт по живому эндпоинту.</p></li><li><p><strong>Байка про баг</strong> (Хабр это любит): первый же регрессионный тест поймал, как сканер находит «криптографию» в собственных регулярках. Лечилось маскировкой литералов <code>RSA_generate_ke[y]</code>, и теперь есть вечный тест, что репозиторий подсвечивает только свои фикстуры.</p></li><li><p><strong>Честный бенчмарк против PQCA CBOMkit.</strong> Не «мы лучше», а «мы разные»: CBOMkit глубже на Java/Python (знает размеры ключей, симметрику), мы шире (10+ языков, конфиги, сертификаты) и быстрее (0,05–0,12 с против минуты). Прямая ссылка на docs/<a href="http://BENCHMARK.md" rel="noopener nofollow">BENCHMARK.md</a> — воспроизводимо кнопкой в CI.</p></li><li><p><strong>Ограничения честно:</strong> v0 на паттернах, динамические вызовы пропустит, отсутствие находок ≠ отсутствие проблем. AST-движок в планах.</p></li><li><p><strong>Финал:</strong> вопрос к читателям — у кого уже спрашивали CBOM и в каком виде.</p></li></ol> <a href="https://habr.com/ru/posts/1078810/?utm_campaign=1078810&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sat, 05 Sep 2026 12:57:20 GMT</pubDate>
    <dc:creator><![CDATA[ipgleg]]></dc:creator>
      
      <category><![CDATA[opensourse]]></category><category><![CDATA[криптография]]></category><category><![CDATA[информационная безопасность]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @it_police — Python (+1) — 03.09.2026 11:04]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1078000/</guid>
    <link>https://habr.com/ru/posts/1078000/?utm_campaign=1078000&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<figure class=""><img src="https://habrastorage.org/getpro/habr/upload_files/6c4/537/d36/6c4537d36e3d0ab51163c2323b9af8db.png" width="444" height="247"></figure><p>Может я не прав, но 8 лет пердения в офисный стул — сомнительный фильтр для выбора разработчика.</p><p>Безусловно, за это время можно приобрести огромный багаж опыта, но гарантий никаких. Будто бы все же лучше смотреть на реальные навыки.</p><p>В общем, писать софт для кибербеза с другими дедами мне пока рано. Слишком молодой специалист.</p> <a href="https://habr.com/ru/posts/1078000/?utm_campaign=1078000&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Thu, 03 Sep 2026 08:04:42 GMT</pubDate>
    <dc:creator><![CDATA[it_police]]></dc:creator>
      
      <category><![CDATA[кибербезопасность]]></category><category><![CDATA[разработка приложений]]></category><category><![CDATA[python]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Open source (+4) — 02.09.2026 13:12]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1077634/</guid>
    <link>https://habr.com/ru/posts/1077634/?utm_campaign=1077634&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Приложение ChatGPT/Codex <a href="https://simonwillison.net/2026/Sep/1/codex-libreoffice/" rel="noopener nofollow">включает</a> в себя полную копию LibreOffice.</p><p>«Я копался в&nbsp;папке ~/.cache/ с&nbsp;помощью OmniDiskSweeper и заметил кое‑что интересное. В&nbsp;папке codex‑primary‑runtime настольного приложения OpenAI Codex (позже переименованного в&nbsp;ChatGPT) находится 1,7&nbsp;ГБ файлов, включая полную установку Python, полную установку Node.js, а&nbsp;также нативные бинарные файлы для&nbsp;Poppler, git и офисного пакета LibreOffice с&nbsp;открытым исходным кодом (который отделился от OpenOffice.org в 2010&nbsp;году)»,&nbsp;— пояснил исследователь Саймон Уиллисон.</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/485/ab8/808/485ab8808cc041caaa0f9e127610ccc3.png" width="821" height="546"></figure> <a href="https://habr.com/ru/posts/1077634/?utm_campaign=1077634&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 02 Sep 2026 10:12:53 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[ChatGPT]]></category><category><![CDATA[LibreOffice]]></category><category><![CDATA[Codex]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @it_police — Python — 01.09.2026 15:10]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1077184/</guid>
    <link>https://habr.com/ru/posts/1077184/?utm_campaign=1077184&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Заманчивая вакансия на&nbsp;Python‑раба от&nbsp;владельца‑вайбкодера</p><p>Она довольно внушительная, LLM не&nbsp;поскупилась на&nbsp;требования к&nbsp;кандидату, но&nbsp;если кратко:</p><ul><li><p>нужен один разработчик</p></li><li><p>весь бэкенд нужно построить с&nbsp;нуля, так как&nbsp;сейчас он держится на&nbsp;решениях из&nbsp;го*на и гугл таблиц</p></li><li><p>весь свой опыт в&nbsp;разработке специалист должен описать в&nbsp;х*евоей горе.md файлов, чтобы владелец мог управлять проектом с&nbsp;помощью Cloude Code без&nbsp;разработчика</p></li><li><p>агентный слой из&nbsp;роя агентов в&nbsp;проде тоже очень надо</p></li><li><p>фронтенд на&nbsp;next.js тоже очень надо</p></li><li><p>работать напрямую с&nbsp;владельцем, но&nbsp;он не&nbsp;технарь, поэтому важен опыт создания технической х*ни для «нетехнических» людей</p></li><li><p>Cloude Code, Cloude Code, Cloude Code</p></li></ul><p>Еще нужно обязательно пройти анкетирование, так как&nbsp;резюме без&nbsp;анкет, которые никто кроме LLM не&nbsp;увидит, не&nbsp;рассматривают.</p><p>Так выглядит рынок нанимателя 2026.</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/466/67d/c6b/46667dc6b087d882dbe92a164cd5c9b8.png" width="746" height="981"></figure> <a href="https://habr.com/ru/posts/1077184/?utm_campaign=1077184&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 01 Sep 2026 12:10:11 GMT</pubDate>
    <dc:creator><![CDATA[it_police]]></dc:creator>
      
      <category><![CDATA[вакансии]]></category><category><![CDATA[вайб-кодинг]]></category><category><![CDATA[рынок труда]]></category><category><![CDATA[python]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @dKosarevsky — Искусственный интеллект (+4) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1076244/</guid>
    <link>https://habr.com/ru/posts/1076244/?utm_campaign=1076244&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Laconian: короткий ответ без потери смысла</p><figure class=""><img src="https://habrastorage.org/getpro/habr//post_images/1f9/c26/f77/1f9c26f772a9f8ad82414f7251b21689.png"></figure><p>Сделал Laconian - agent skill, построенный вокруг принципа <em>the shortest complete answer</em>. Не самый короткий ответ вообще, а самый короткий из тех, которые остаются корректными и практически полезными.</p><p>Логика простая: сначала определить полный ответ, затем удалить только то, без чего не пострадают точность, безопасность, существенные факты, ограничения и требования пользователя.</p><p>Skill убирает приветствия, пересказ запроса, незапрошенное описание процесса, повторы и декоративные выводы. При этом сохраняет важные оговорки, неопределённость, нужную детализацию, код, команды, числа, URL и другие данные, точная форма которых имеет значение.</p><p>Вся пользовательская часть проекта — один файл <code>SKILL.md</code>. В нём нет скриптов, зависимостей, сетевых вызовов, дополнительных разрешений или привязки к инструментам конкретной платформы.</p><p>В репозитории также развивается открытый benchmark: Laconian сравнивается с baseline, обычной инструкцией <code>Answer concisely.</code> и Caveman. Инфраструктура уже работает, но публичных результатов пока нет — поэтому пока не заявляю о выигрыше в длине, качестве или стоимости раньше данных.</p><p>Ссылки</p><ul><li><p><a href="https://agent-axiom.github.io/laconian" rel="noopener nofollow">Сайт</a></p></li><li><p><a href="https://github.com/agent-axiom/laconian" rel="noopener nofollow">GitHub</a></p></li><li><p><a href="https://t.me/data_engi/1298" rel="noopener nofollow">tg</a></p></li></ul> <a href="https://habr.com/ru/posts/1076244/?utm_campaign=1076244&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sun, 30 Aug 2026 09:15:43 GMT</pubDate>
    <dc:creator><![CDATA[dKosarevsky]]></dc:creator>
      
      <category><![CDATA[LLM]]></category><category><![CDATA[agent skills]]></category><category><![CDATA[prompt engineering]]></category><category><![CDATA[open source]]></category><category><![CDATA[if]]></category><category><![CDATA[laconian]]></category><category><![CDATA[skill]]></category><category><![CDATA[ai]]></category><category><![CDATA[ai-агенты]]></category><category><![CDATA[agentic]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @nightweb — Python (+3) — 28.08.2026 10:01]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1075614/</guid>
    <link>https://habr.com/ru/posts/1075614/?utm_campaign=1075614&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>В Bot API 10.3 появилась остановка генерации. Но LLM-запрос придётся отменять самому</strong></p><p>24 августа вышел <a href="https://core.telegram.org/bots/api-changelog" rel="noopener nofollow">Telegram Bot API 10.3</a>. В нём появилась полезная функция для AI-ботов: пользователь может остановить генерацию ответа штатной кнопкой Telegram.</p><p>В методы <code>sendMessageDraft</code> и <code>sendRichMessageDraft</code>, которые позволяют показывать черновик ответа в личном чате, добавили два параметра:</p><ul><li><p><code>can_stop=True</code> — показывает кнопку остановки;</p></li><li><p><code>keep_on_stop=True</code> — временно оставляет уже сгенерированную часть ответа в чате.</p></li></ul><p>Когда пользователь нажимает кнопку, бот получает обновление <code>stopped_message_generation</code>. В нём есть <code>chat</code>, <code>message_thread_id</code> и <code>draft_id</code>, поэтому событие можно связать с конкретной генерацией.</p><p>Если вы явно задаёте <code>allowed_updates</code>, новый тип обновления нужно добавить туда. Иначе нажатие кнопки просто не попадёт в обработчик.</p><p>Но Telegram останавливает только показ черновика. Запрос к LLM на стороне бота продолжит выполняться, пока разработчик сам его не отменит.</p><p>Например, можно хранить задачи по ключу из идентификаторов чата, темы и черновика:</p><pre><code class="python">key = (chat_id, message_thread_id, draft_id)

active_generations[key] = asyncio.create_task(
    generate_answer()
)
</code></pre><p>При получении <code>stopped_message_generation</code> находим задачу и отменяем её:</p><pre><code class="python">event = update.stopped_message_generation
key = (event.chat.id, event.message_thread_id, event.draft_id)

task = active_generations.pop(key, None)

if task is not None:
    task.cancel()

    try:
        await task
    except asyncio.CancelledError:
        pass
</code></pre><p>Это упрощённый пример: конкретный обработчик зависит от используемого фреймворка.</p><p>Одного <code>task.cancel()</code> тоже не всегда достаточно. Отмена в <code>asyncio</code> кооперативная: задача остановится только тогда, когда управление вернётся в event loop. Если внутри работает синхронный код или отдельный поток, он может продолжить работу.</p><p>Нужно также закрыть потоковое HTTP-соединение с провайдером модели. А если провайдер поддерживает отдельный API отмены, вызвать и его. Иначе модель может продолжить генерацию — вместе с расходом токенов — даже после закрытия соединения.</p><p>По сути, здесь есть три независимых действия:</p><ul><li><p>Telegram прекращает показывать черновик;</p></li><li><p>бэкенд отменяет локальную задачу и закрывает соединение;</p></li><li><p>провайдер модели останавливает генерацию, если умеет это делать.</p></li></ul><p>Ещё один нюанс касается <code>keep_on_stop=True</code>. Остановленный черновик не превращается в обычное сообщение. Он исчезнет после следующего сообщения в чате или примерно через 30 секунд.</p><p>Если частичный ответ нужно сохранить, его придётся отдельно отправить через <code>sendMessage</code> или <code>sendRichMessage</code>.</p><p>В многопроцессной системе обычного словаря тоже будет недостаточно: событие остановки может попасть не в тот процесс, где выполняется генерация. Тогда понадобится общая маршрутизация или канал отмены через Redis, брокер сообщений либо другой внешний сервис.</p><p>Telegram добавил удобный интерфейс, но жизненный цикл генерации всё равно остаётся на стороне разработчика.</p><p>Вопрос: что вы бы делали после остановки: сохраняли частичный ответ, удаляли его или показывали кнопку «Продолжить», которая запускает новый запрос с уже полученным текстом?</p> <a href="https://habr.com/ru/posts/1075614/?utm_campaign=1075614&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 28 Aug 2026 07:01:09 GMT</pubDate>
    <dc:creator><![CDATA[nightweb]]></dc:creator>
      
      <category><![CDATA[telegram]]></category><category><![CDATA[telegram bot]]></category><category><![CDATA[bot api]]></category><category><![CDATA[bot api 10.3]]></category><category><![CDATA[llm]]></category><category><![CDATA[asyncio]]></category><category><![CDATA[остановка генерации]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Open source (+4) — 27.08.2026 18:29]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1075418/</guid>
    <link>https://habr.com/ru/posts/1075418/?utm_campaign=1075418&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Представлен открытый сетевой проект <a href="https://github.com/tailscale/tailcat" rel="noopener nofollow">Tailcat</a>&nbsp;— как&nbsp;netcat, но&nbsp;поверх плоскости данных Tailscale. Также доступна экспериментальная <a href="https://tailscale.github.io/tailcat/" rel="noopener nofollow">веб‑демонстрация</a> в&nbsp;браузере (tailcat, скомпилированный в&nbsp;WebAssembly), которая может отправлять и получать файлы или&nbsp;текст, взаимодействуя с&nbsp;CLI. Трафик браузера передаётся только через DERP, без&nbsp;прямых соединений до&nbsp;появления поддержки WebRTC</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/988/5b2/c1d/9885b2c1ded06d417a2141b5679667b4.png" width="704" height="731"></figure> <a href="https://habr.com/ru/posts/1075418/?utm_campaign=1075418&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Thu, 27 Aug 2026 15:29:37 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[tailcat]]></category><category><![CDATA[netcat]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @nightweb — Искусственный интеллект (+3) — 27.08.2026 10:23]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1075096/</guid>
    <link>https://habr.com/ru/posts/1075096/?utm_campaign=1075096&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>WEB-прокси Telegram помогает клиенту, но не инфраструктуре бота</strong></p><p>В Telegram Desktop 7.1.0 появился новый тип подключения — WEB proxy. Его уже успели описать как способ, с помощью которого Telegram может выглядеть для сети как обычный HTTPS-сайт.</p><p>Если сильно упростить<a href="https://github.com/telegramdesktop/tproxy-server" rel="noopener nofollow"> официальное описание архитектуры</a>, работает это так:</p><ol><li><p>Клиент сохраняет обычный MTProxy framing и шифрование.</p></li><li><p>Соединения проходят через скрытый WebView внутри приложения.</p></li><li><p>WebView передаёт несколько логических потоков через один или несколько HTTPS- либо WebSocket-соединений с тем же доменом.</p></li><li><p>Серверный relay разделяет потоки и передаёт каждый локально запущенной официальной реализации MTProxy.</p></li></ol><p>При этом relay видит только непрозрачный поток данных: он не расшифровывает содержимое и не выбирает Telegram-сервер назначения.</p><p>Указанный домен продолжает работать как обычный HTTPS-сайт. Если запрос не содержит корректного capability, вычисленного из домена и секрета WEB-прокси, посетитель получает публичную страницу. Bridge открывается только клиенту с правильными параметрами подключения.</p><p>Сейчас готовая реализация работает в Telegram Desktop. Для Android существует экспериментальный клиент, а поддержка iOS пока описана только в планах проекта.</p><p>Что это меняет для разработчика бота</p><p>Сам WEB-прокси обслуживает соединение Telegram-клиента с инфраструктурой мессенджера. Он не становится общим туннелем для всех компонентов продукта.</p><p>По-прежнему существуют отдельные сетевые контуры:</p><ul><li><p>Telegram Desktop пользователя → WEB-прокси → Telegram;</p></li><li><p>сервер бота → <a href="http://api.telegram.org" rel="noopener nofollow">api.telegram.org</a>;</p></li><li><p>Telegram → webhook endpoint бота;</p></li><li><p>Mini App → домен, на котором размещено веб-приложение.</p></li></ul><p>Если сервер бота потеряет доступ к <a href="http://api.telegram.org" rel="noopener nofollow">api.telegram.org</a>, результат будет зависеть от способа получения обновлений.</p><p>При long polling бот перестанет и получать обновления, и вызывать методы Bot API.</p><p>При webhook входящие обновления ещё могут приходить, если endpoint доступен извне. Однако обычные исходящие обращения к Bot API работать не будут. Есть редкое исключение: Telegram разрешает передать один метод Bot API прямо в HTTP-ответе на webhook. Но узнать результат выполнения такого метода бот уже не сможет.</p><p>WEB-прокси также не восстановит недоступный webhook и не поможет загрузить Mini App, если проблема возникла с доменом самого веб-приложения.</p><p>Это не недостаток новой технологии. Просто WEB-прокси решает задачу доступности клиента, а не отказоустойчивости сторонней инфраструктуры.</p><p>Что по-прежнему остаётся на стороне разработчика</p><p>Для long polling нужно отдельно контролировать доступность Bot API и задержку получения обновлений.</p><p>Для webhook полезно отслеживать через getWebhookInfo как минимум:</p><ul><li><p>pending_update_count;</p></li><li><p>last_error_date;</p></li><li><p>last_error_message.</p></li></ul><p>Обработку обновлений лучше делать идемпотентной: если webhook отвечает кодом вне диапазона 2xx, Telegram повторяет доставку. А слепой повтор исходящих методов вроде sendMessage, наоборот, способен создать дубли.</p><p>Получается, фраза «Telegram у пользователя открылся» ещё не означает, что бот, webhook и Mini App тоже работают.</p><p>Подскажите, держите ли для Bot API резервный egress или HTTPS-прокси? И состояние webhook вы контролируете через getWebhookInfo или ограничиваетесь метриками самого приложения?</p> <a href="https://habr.com/ru/posts/1075096/?utm_campaign=1075096&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Thu, 27 Aug 2026 07:23:15 GMT</pubDate>
    <dc:creator><![CDATA[nightweb]]></dc:creator>
      
      <category><![CDATA[telegram]]></category><category><![CDATA[bot api]]></category><category><![CDATA[python]]></category><category><![CDATA[aiogram]]></category><category><![CDATA[llm]]></category><category><![CDATA[streaming]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Системное администрирование (+4) — 24.08.2026 19:18]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1073946/</guid>
    <link>https://habr.com/ru/posts/1073946/?utm_campaign=1073946&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Разработчик Гийом Мейер представил открытый инструмент <a href="https://github.com/guillaumemeyer/watermarks-remover" rel="noopener noreferrer nofollow">Watermarks Remover</a>, который помогает удалять невидимые водяные знаки из&nbsp;текста и&nbsp;изображений от ИИ-систем. «Если исследователь использует ИИ, чтобы изменить одну строку в&nbsp;конце десятистраничной работы, вся публикация потенциально может получить отметку. Это может превратиться в&nbsp;кошмар для доверия»,&nbsp;— пояснил автор решения.</p><p>Watermarks Remover работает за&nbsp;счёт небольшого изменения текста при сохранении исходного смысла. Инструмент проверяет материал на&nbsp;наличие ИИ-маркировки, создаёт вариации формулировок и&nbsp;повторяет процесс, пока статистический паттерн не&nbsp;перестанет определяться. Для изображений используется похожий подход, только вместо слов меняются пиксели.</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/c2b/eca/50a/c2beca50ab26c050f85bc82502068f8d.png" width="699" height="630"></figure> <a href="https://habr.com/ru/posts/1073946/?utm_campaign=1073946&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 24 Aug 2026 16:18:04 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[Watermarks Remover]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Искусственный интеллект (+4) — 23.08.2026 19:15]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1073490/</guid>
    <link>https://habr.com/ru/posts/1073490/?utm_campaign=1073490&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Представлен открытый проект ИИ‑учёного <a href="https://github.com/Omni-Scientist/OmniScientist" rel="noopener noreferrer nofollow">OmniScientist</a>, который сам пишет статьи, составляет библиографию, таблицы и рисует схемы для&nbsp;любых исследователей:</p><ul><li><p>анализирует любые файлы: изображения, видео, схемы, таблицы, документы, формулы и даже аудио.</p></li><li><p>выдвигает гипотезы как&nbsp;настоящая команда учёных.</p></li><li><p>проверяет информацию до&nbsp;последней запятой, чтобы не&nbsp;было ни одной выдумки или&nbsp;неточности;</p></li><li><p>строит графики, таблицы и схемы;</p></li><li><p>собирает результат в&nbsp;PDF и отдаёт в удобном формате;</p></li><li><p>знает русский язык и ориентируется в&nbsp;культурном контексте;</p></li><li><p>может подключаться к&nbsp;различным ИИ‑агентам;</p></li><li><p>работает на&nbsp;Windows, macOS и Linux.</p></li></ul><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/b78/5db/c61/b785dbc61b96a9e53e873c231f474a19.jpg" width="1280" height="588"></figure> <a href="https://habr.com/ru/posts/1073490/?utm_campaign=1073490&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sun, 23 Aug 2026 16:15:01 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[OmniScientist]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @it_police — Python — 22.08.2026 20:42]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1073348/</guid>
    <link>https://habr.com/ru/posts/1073348/?utm_campaign=1073348&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>🔎 PhishIntel — автономный OSINT-инструмент для анализа доменов</p><p>Проект помогает быстро собрать технический профиль домена и оценить потенциальный фишинговый риск в формате структурированного JSON-отчёта.</p><p>Что проверяет PhishIntel:</p><p>• DNS-записи, IP и reverse DNS;<br> • RDAP/WHOIS и регистрационные данные;<br> • HTTP, TLS-сертификаты и цепочки редиректов;<br> • содержимое веб-страниц, формы и внешние action;<br> • упоминания брендов и фишинговых ключевых слов;<br> • используемые веб-технологии;<br> • sitemap и обнаружение распространённых поддоменов;<br> • локальную историю изменений DNS и TLS;<br> • контекстный explainable scoring — с пояснением, почему домен получил тот или иной уровень риска.</p><p>Инструмент работает автономно, не требует обязательного доступа ко всем сетевым сервисам и продолжает формировать отчёт даже при недоступности DNS, HTTP или TLS-проверок.</p><p>Запуск:</p><pre><code class="bash">python3 scan.py example.com</code></pre><p>Результат сохраняется в JSON, поэтому его удобно использовать в расследованиях, автоматизированных пайплайнах и собственных аналитических инструментах.</p><p>Можно дать результат анализа любой языковой модели для получения структурированного человекочитаемого отчета, добавив промпт:</p><p>"Изучи технический отчет домена и дай оценку потенциальному фишинговому риску, составь краткий человекочитаемый отчет"</p><p>Инструмент писал для личных нужд, но может он будет полезен детективам, безопасникам и OSINT-специалистам.</p><p>🔗 Репозиторий: <a href="https://github.com/Bednyakov/PhishIntel" rel="noopener noreferrer nofollow">https://github.com/Bednyakov/PhishIntel</a></p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/7b0/951/80f/7b095180f1c1ad60d8e0797e9ab790c2.png" width="1254" height="1254"></figure> <a href="https://habr.com/ru/posts/1073348/?utm_campaign=1073348&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sat, 22 Aug 2026 17:42:50 GMT</pubDate>
    <dc:creator><![CDATA[it_police]]></dc:creator>
      
      <category><![CDATA[OSINT]]></category><category><![CDATA[информационная безопасность]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @Khabib73 — Python (+1) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1073290/</guid>
    <link>https://habr.com/ru/posts/1073290/?utm_campaign=1073290&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Как писать код с агентами правильно?</strong></p><p>Если вы пользуетесь ИИ-агентами для написания кода, ты наверняка замечали: они генерируют код быстро, но не всегда следуя единному стилю или лучшим практикам. </p><p>Недавно я познакомился с безумно хорошим инструментом для улучшения качества вашего питоновского кода - <a href="https://github.com/wemake-services/wemake-python-styleguide" rel="noopener noreferrer nofollow">wemake-python-styleguide</a></p><p>Изначально проект позиционировался как простой плагин для flake8, но с куда большим количеством правил, он стал настолько большой что его нужно воспринимать как полноценный линтер. Кстати, он полностью совместим со ВСЕМИ правилами от ruff. И что важно, его развивает core-разработчик CPython — <a href="https://github.com/sobolevn" rel="noopener noreferrer nofollow">Никита Соболев.</a></p><p>Я считаю, что каждую ошибку, который он подсвечивает, это не чья-то прихоть, а реальный опыт поддержки самого языка. При этом линтер не перегибает палку: нарушения объясняются. Например, если ваш агент написал <code>if x &gt; 42</code> линтер выдаст ошибку <a href="https://wemake-python-styleguide.readthedocs.io/en/latest/pages/usage/violations/best_practices.html#wemake_python_styleguide.violations.best_practices.MagicNumberViolation" rel="noopener noreferrer nofollow">WPS432</a> («magic number used»). Достаточно вызвать <code>wps explain WPS432</code> (или отправить MCP-запрос), и вы получите развёрнутое пояснение, почему магические числа это плохо, и как их заменить на константу, кстати именно в <a href="https://github.com/wemake-services/wemake-python-styleguide/releases/tag/1.8.0" rel="noopener noreferrer nofollow">новой версии</a> появилась эта функциональность, теперь объяснения приходят прямо в контекст агента, плюс появились скиллы. Вообщем сделано так, чтобы улучшать код и не раздражать разработчика :)</p> <a href="https://habr.com/ru/posts/1073290/?utm_campaign=1073290&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sat, 22 Aug 2026 11:36:04 GMT</pubDate>
    <dc:creator><![CDATA[Khabib73]]></dc:creator>
      
      <category><![CDATA[python]]></category><category><![CDATA[code quality tools]]></category><category><![CDATA[ai-agent]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @Lompushka — Python — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1072758/</guid>
    <link>https://habr.com/ru/posts/1072758/?utm_campaign=1072758&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Агент откатил действие, но модель его не забыла: KV-кэш может пережить rollback.</strong><br><br>Исследователи показали неприятный рассинхрон между логикой агентной среды и состоянием самой языковой модели. Агент может отменить ветку выполнения, удалить её из истории диалога и продолжить работу так, будто этой ветки никогда не существовало. Но если среда повторно использует <strong>кэш ключей и значений (KV-кэш)</strong> той же сессии, модель всё ещё может учитывать информацию из уже удалённой ветки. Авторы называют необходимое свойство <strong>rollback consistency - согласованностью отката</strong>.</p><p>Авторы проверили эффект на <strong>семи семействах открытых моделей размером от 3,8 до 36 млрд параметров</strong>. В эксперименте входные токены после rollback были идентичными, а различался только KV-кэш: в одном случае использовался старый кэш с отменённой веткой, в другом он заново строился только из подтверждённой истории. Старый KV-кэш изменил защищённое действие агента в <strong>25 из 63 тестов</strong>, хотя данные атакующего отсутствовали в текущем запросе во всех 63 случаях. После перестроения кэша эффект исчез во всех тестах - <strong>0 из 63</strong>.<br>Авторы также воспроизвели проблему через стандартный механизм повторного использования кэша в <strong>Hugging Face Transformers</strong> и через <strong>LangGraph time-travel</strong>. В тестах с LangGraph логический rollback был выполнен корректно, но сохранённое состояние KV оставалось старым; эффект проявился в <strong>25 из 45</strong> проверок. То есть журнал агента может выглядеть полностью корректным, хотя фактическое состояние, на которое смотрит модель, ему уже не соответствует.</p><p>Особенно интересно, что для возникновения эффекта необязательно оставлять в отменённой ветке прямую команду вроде «отправь данные атакующему». В экспериментах с нейтральным остаточным контекстом срабатывания были зафиксированы в <strong>7 из 21</strong> случаев, с более явным намёком - в 8 из 21, а с императивной формулировкой - в 10 из 21. Потенциальным источником такого состояния может быть результат инструмента, найденный документ или пользовательский ввод, который агент впоследствии решил отклонить.</p><p>Исправление находится не на уровне промпта. При полном rollback необходимо откатывать <strong>не только логическую историю агента, но и состояние инференса</strong>: перестраивать KV-кэш из подтверждённого контекста, корректно обрезать его либо восстанавливать контрольную точку состояния до отменённой ветки. По результатам работы все эти варианты закрывают исследованный канал без необходимости полностью очищать кэш всех сессий.</p> <a href="https://habr.com/ru/posts/1072758/?utm_campaign=1072758&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 21 Aug 2026 21:22:24 GMT</pubDate>
    <dc:creator><![CDATA[Lompushka]]></dc:creator>
      
      <category><![CDATA[KV cache]]></category><category><![CDATA[rollback consistency]]></category><category><![CDATA[AI agents]]></category><category><![CDATA[LangGraph]]></category><category><![CDATA[Hugging Face Transformers]]></category><category><![CDATA[agent security]]></category><category><![CDATA[inference state]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @IBS_habrablog — Блог компании IBS (+2) — 21.08.2026 11:47]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/ibs/posts/1072866/</guid>
    <link>https://habr.com/ru/companies/ibs/posts/1072866/?utm_campaign=1072866&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/e1e/059/cb8/e1e059cb856bd994904a5dea82908d46.jpg" width="1280" height="720"></figure><p>В последнюю неделю августа пройдут два бесплатных вебинара:</p><p>🟣&nbsp;<strong>«<a href="https://ibs-training.ru/training/seminar/162138/" rel="noopener noreferrer nofollow">ИИ-видео без съёмочной группы: от промпта до контент-завода</a>»</strong></p><p><strong>25 августа, 17:00–18:00 (Мск)</strong>.</p><p>Поговорим про системный подход к генерации видео. Вместо случайных результатов — управляемый промпт в формате JSON с параметрами сцены, персонажа, ракурса, освещения и звука. Демонстрация на живом примере: от задачи на русском до готового ролика. Сравнение генераторов Kling, Veo 3, Seedance и Wan. Построение контент-конвейера: сценарий → промпт → генерация → монтаж → публикация.</p><p>Опыт работы с нейросетями не обязателен.</p><p>✍️&nbsp;<strong><a href="https://ibs-training.ru/training/seminar/162138/" rel="noopener noreferrer nofollow">Записаться</a></strong></p><p>---</p><p>🟢&nbsp;<strong>«<a href="https://ibs-training.ru/training/seminar/162139/" rel="noopener noreferrer nofollow">Стабилизация Python-автотестов: причины и инструменты</a>»</strong></p><p><strong>28 августа, 17:00–18:00 (Мск)</strong>.</p><p>Обсудим причины нестабильности автотестов — в тестах, инфраструктуре или продукте. Разбираем flaky-тесты и гейзен-баги, применяем плагины pytest-retry и pytest-flakefinder, осваиваем стратегию экспоненциальных ожиданий с библиотекой tenacity.</p><p>Рекомендуется опыт разработки тестов на Python.</p><p>✍️&nbsp;<strong><a href="https://ibs-training.ru/training/seminar/162139/" rel="noopener noreferrer nofollow">Записаться</a></strong></p> <a href="https://habr.com/ru/posts/1072866/?utm_campaign=1072866&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 21 Aug 2026 08:47:30 GMT</pubDate>
    <dc:creator><![CDATA[IBS_habrablog (IBS)]]></dc:creator>
      
      <category><![CDATA[вебинар]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @svtoroi — Машинное обучение (+2) — 21.08.2026 11:26]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1072846/</guid>
    <link>https://habr.com/ru/posts/1072846/?utm_campaign=1072846&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Я завысил собственный Sharpe. Исправляю публично</strong></p><p>Перед стартом торговли реальными деньгами прогнал плановый аудит кода своей ML-системы — и нашёл два бага, из-за которых опубликованные цифры были лучше реальности.</p><p>Ошибка 1. Проскальзывание применялось только в live-контуре, но не в историческом бэктесте (комиссии были в обоих). Честный пересчёт: Sharpe системы ~2.7 → ~1.8, доходность за пять лет +75% → +47%. Треть доходности уходила в неучтённые издержки.</p><p>Два поворота. Бенчмарк (SMA-кросс) торгует чаще нейросети и пострадал сильнее (Sharpe 0.98 → 0.59) — отрыв системы от него после исправления даже вырос. А LightGBM-бейзлайн, который с одними комиссиями показывал «скромные, но плюсовые» +5%, с полными издержками ушёл в −19%: его кромка была тоньше издержек. «Модель немного зарабатывает после комиссий» — это не результат, а вопрос, какие издержки вы забыли.</p><p>Ошибка 2. Я публиковал стресс-тест: замороженная модель на чужой эпохе (2015–2020) теряет −28%, вывод — «в чужом режиме опасна». Аудит нашёл дыру в самом тесте: часть признаков физически существует только с 2020–2021, и загрузчик молча подставлял вместо них нули (виноват except: pass, «удобно» глотавший отсутствующую таблицу). Тест мерил не модель в чужой эпохе, а модель, ослепшую на две трети входов.</p><p>Перемер зрячей версией (только признаки, существующие в обеих эпохах): +22% вместо −28%, все шесть лет от −1% до +8.5%. Катастрофы не было — минус рисовали нули в данных, а не смена режима.</p><p>И каскадное следствие: раньше казалось, что от «катастрофы» спасает еженедельное переобучение (walk-forward на той эпохе давал +17%). Теперь видно: зрячая замороженная модель даёт +22% — переобучение ничего не спасало, спасать было нечего.</p><p>Чек-лист, если хотите проверить свой бэктест на те же грабли:</p><ol><li><p>Все ли слои издержек применяются во всех симуляторах, или только в одном?</p></li><li><p>Бенчмарк несёт те же издержки? Частота сделок разная — эффект несимметричен.</p></li><li><p>Существуют ли все признаки модели на всём периоде стресс-теста?</p></li><li><p>Есть ли в загрузчиках данных молчаливые except, превращающие отсутствующую таблицу в нули?</p></li><li><p>Стресс-тест показал катастрофу — сначала проверьте тест, потом модель.</p></li></ol><p>Подробный разбор — в UPD к статье про <a href="https://habr.com/ru/articles/1069594/" rel="noopener noreferrer nofollow">сидовый шум</a>. Цифры в старых текстах не правил — только явный UPD: тихая правка убила бы весь смысл протокола честности.</p><p>Не является индивидуальной инвестиционной рекомендацией.</p> <a href="https://habr.com/ru/posts/1072846/?utm_campaign=1072846&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 21 Aug 2026 08:26:41 GMT</pubDate>
    <dc:creator><![CDATA[svtoroi]]></dc:creator>
      
      <category><![CDATA[алготрейдинг]]></category><category><![CDATA[бэктестинг]]></category><category><![CDATA[стресс-тестирование]]></category><category><![CDATA[машинное+обучение]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @dugalb — Python — 18.08.2026 07:34]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1071464/</guid>
    <link>https://habr.com/ru/posts/1071464/?utm_campaign=1071464&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/b0d/59a/c03/b0d59ac03fdac1db65210210f11c5e12.png" width="1280" height="960"></figure><p>📐 Применение природных алгоритмов оптимизации в строительном проектировании</p><p>Современное проектирование несущих конструкций — это всегда поиск баланса между жёсткими требованиями безопасности и экономической эффективностью. Классические градиентные методы часто не справляются с многомерными пространствами ограничений, характерными для задач ПГС. Поэтому в САПР и ТИМ-решениях всё чаще применяются алгоритмы, подсказанные природой.</p><p>🧬 Генетические алгоритмы (GA) Основаны на естественном отборе и эволюционной генетике. В проектировании используются для оптимизации топологии и сечений элементов. Классические примеры — подбор оптимальных размеров подошвы и глубины заложения фундаментов, оптимизация сечений балок и рам. Алгоритм итеративно “скрещивает” варианты, отсеивая решения с недопустимыми осадками, недостаточной несущей способностью или перерасходом бетона.</p><p>Отдельное направление — задачи раскроя. Генетические алгоритмы успешно применяются для оптимизации 2D-укладки деталей сложной формы на листах металла, чтобы минимизировать отходы. В 3D-постановке это работает при компоновке арматурных каркасов, раскладке сборных элементов в опалубке или плотной упаковке конструкций для перевозки.</p><p>🐜 Алгоритмы роевого интеллекта (Swarm Intelligence) Моделируют поведение групп организмов: миграцию птиц, поиск пищи насекомыми. Наиболее известны метод роя частиц (PSO) и муравьиный алгоритм (ACO). Применяются для трассировки инженерных сетей, автоматического армирования плит, оптимизации геометрии сложных фундаментов. PSO эффективно распределяет усилия по расчётной сетке конечных элементов, снижая концентрацию напряжений за счёт корректировки параметров армирования локальными агентами.</p><p>Муравьиный алгоритм особенно полезен в логистике стройплощадки: поиск кратчайших маршрутов движения техники, оптимальная последовательность подачи материалов на монтажный горизонт, обход временных препятствий.</p><p>🔥 Алгоритмы имитации физических процессов К ним относится метод имитации отжига (Simulated Annealing), который моделирует кристаллизацию металла при охлаждении. Используется для решения комбинаторных задач: календарное планирование, оптимизация логистики движения материалов, расстановка монтажных кранов, распределение бригад по захваткам при жёстких пространственных и временных ограничениях.</p><p>⚠ Ограничения и инженерная практика При всех возможностях природные алгоритмы не заменяют классические расчётные комплексы (МКЭ/FEM). Сегодня они выступают как эффективные препроцессоры: генерируют концептуальные схемы расстановки несущих элементов, варианты раскроя и календарные графики, которые затем проходят обязательную ручную верификацию инженером-конструктором и финальный проверочный расчёт в сертифицированном ПО на соответствие СП/СНиП.</p><p>Такой подход позволяет сократить рутину на ранних этапах, но оставляет ответственность за итоговое решение человеку.</p> <a href="https://habr.com/ru/posts/1071464/?utm_campaign=1071464&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 18 Aug 2026 04:34:03 GMT</pubDate>
    <dc:creator><![CDATA[dugalb]]></dc:creator>
      
      <category><![CDATA[swarm]]></category><category><![CDATA[генетические алгоритмы]]></category><category><![CDATA[мкэ]]></category><category><![CDATA[проектирование]]></category><category><![CDATA[pso]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @faina_sn — Python (+1) — 17.08.2026 17:58]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1071358/</guid>
    <link>https://habr.com/ru/posts/1071358/?utm_campaign=1071358&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Как бы я учила Python, если бы могла отмотать время назад...</p><p># Не судите строго, впервые пиши пост, понимаю, что может быть не интересно (по причине опыта), но все же хочется внести свой вклад</p><p>Всем привет! Меня зовут Фаина я уже несколько лет пишу на Python (и не только) и зарабатываю этим на жизнь. Недавно я наткнулась на свои старые "конспекты" с первых попыток изучения языка. Это было... больно. Сотни скриншотов, обрывочные заметки и полное непонимание того, что происходит.</p><p>Если бы у меня была машина времени, я бы вернулась к той испуганной девушке, которая впервые открыла IDLE, и сказала бы ей несколько важных вещей.</p><p><strong> </strong></p><p><strong>1.Перестать коллекционировать курсы (и начать делать)</strong></p><p>Моя самая главная ошибка — «синдром хомяка». Я скачала, наверное, 50 ГБ курсов: "Python с нуля", "Python для чайников", "Python за 24 часа". Я смотрела первые два урока, чувствовала себя умной, а потом бросала, потому что "этот курс не очень".</p><p><strong>Итог:</strong>&nbsp;Один хороший курс + практика лучше, чем 50 идеальных курсов в папке "Разобрать".<br>Сейчас, если бы я начинала, я бы выбрала&nbsp;<strong>один</strong>&nbsp;интерактивный ресурс (или одну книгу, если, конечно, сможешь так учится) и шла по нему, пока не упрусь в стену. Не прыгала бы между ютуберами и методичками.<br><br></p><p><strong>2.Сначала гуглить, потом — паниковать</strong></p><p>В начале пути любая ошибка в коде вызывала у меня панику. Красный трейсбек выглядел как приговор. Я думала: "Ну всё, я бездарь, Python меня ненавидит".</p><p><strong>Итог:</strong>&nbsp;Ошибка — это не "я плохая", это "код говорит мне, что именно не так".<br>Сейчас 80% моей работы — это чтение ошибок и гугление.</p><p><strong>3.Зубрежка синтаксиса не работает. Работают проекты</strong></p><p>Я думала, что если выучу все методы списков и словарей наизусть, то стану сеньором. Я исписывала тетради шпаргалками. Толку было ноль.</p><p><strong>Итог:</strong>&nbsp;Ты запоминаешь только то, что используешь руками.<br>Вместо заучивания теории, я бы начала писать мини-программы с первого дня.</p><ul><li><p><strong>День 3:</strong>&nbsp;Калькулятор чаевых.</p></li><li><p><strong>Неделя 2:</strong>&nbsp;Парсер курса валют с сайта (с помощью&nbsp;<code>requests</code>).</p></li><li><p><strong>Месяц 1:</strong>&nbsp;Простенький телеграм-бот, который присылает погоду.</p></li></ul><p>Проекты не обязаны быть гениальными. Они должны быть действительно интересные, даже захватывающие.</p><p>Если ультра-кратко:</p><ol><li><p>Лучше уж один источник знаний вместо "все сразу"</p></li><li><p>Лучше практика каждый день по 30 минут, чем раз в неделю и до потери пульса</p></li><li><p>Ошибки - это норм, не стрем</p></li><li><p>С другом или ментором будем веселее и эффективнее - с кем можно поделится опытом или обсудить код и тд.</p></li></ol><p>Спасибо за внимание, ваша Фаина!)</p> <a href="https://habr.com/ru/posts/1071358/?utm_campaign=1071358&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 17 Aug 2026 14:58:18 GMT</pubDate>
    <dc:creator><![CDATA[faina_sn]]></dc:creator>
      
      <category><![CDATA[python]]></category><category><![CDATA[python3]]></category><category><![CDATA[учёба]]></category><category><![CDATA[учебный процесс]]></category><category><![CDATA[учебный процесс в it]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @sobolevn — Python (+2) — 17.08.2026 16:27]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1071306/</guid>
    <link>https://habr.com/ru/posts/1071306/?utm_campaign=1071306&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Какие уникальные фичи есть в django-modern-rest?</strong></p><p>Иногда, когда я добавляю какие-то фичи в мой <a href="https://github.com/wemake-services/django-modern-rest" rel="noopener noreferrer nofollow">https://github.com/wemake-services/django-modern-rest</a> (можно ставить ⭐), то я думаю про себя: почему таких фичей больше нет нигде?&nbsp;</p><p>Давайте сегодня посмотрим на них. А вы мне расскажите свое мнение в комментах.</p><p><strong>Семантическая схема</strong>&nbsp;</p><p>Допустим, вы навесили на какой-то свой endpoint auth:&nbsp;</p><pre><code class="python">class UserController(Controller[MsgspecSerializer]):
&nbsp; &nbsp; &nbsp; @modify(auth=[JWTAsyncAuth()])
&nbsp; &nbsp; &nbsp; async def get(self) -&gt; User: ...</code></pre><p>В OpenAPI <a href="https://django-modern-rest.readthedocs.io/en/latest/pages/openapi/schema.html" rel="noopener noreferrer nofollow">автоматически появятся</a> все коды ошибок, которые могут случиться в auth (401).<br>Ничего не надо допом писать. И так происходит со всеми частями фреймворка: добавил <code>throttling=[SyncThrottle(1, Rate.minute)]</code>? Теперь у тебя в ответах автоматом 429. Если нужно, можно <a href="https://django-modern-rest.readthedocs.io/en/latest/pages/openapi/schema.html#customizing-schema-generation" rel="noopener noreferrer nofollow">отключить</a> любые семантические статусы.&nbsp;</p><p>Не должно ли такое быть дефолтом везде?</p><p><strong>Умные типы ошибок</strong></p><p>Не уходя далеко: как кастомизировать формат ошибки, например, в FastAPI? Через боль. Как поменять в спеке формат? Руками.</p><p>В DMR мы просто добавили везде <code>error_model</code> как параметр. Можно <a href="https://django-modern-rest.readthedocs.io/en/latest/pages/error-handling.html#customizing-error-messages" rel="noopener noreferrer nofollow">заменять любые ошибки</a>, все автоматом сконвертится и покажет правильную схему. Зачем? Хочешь <a href="https://django-modern-rest.readthedocs.io/en/latest/pages/error-handling.html#problem-details" rel="noopener noreferrer nofollow">Problem Details</a> - используешь. Хочешь свой формат - реализуешь. Можно даже <a href="https://django-modern-rest.readthedocs.io/en/latest/pages/error-handling.html#conditionally-raising-problem-details" rel="noopener noreferrer nofollow">content negotiation на ошибки</a> навесить.</p><p>Почему никто о таком не думает в других фреймворках?</p><p><strong>Нормальный throttling</strong></p><p>Фича, которая принесла мне больше всех боли. Я прочитал throttling реализации во всех фреймворках. В Litestar <a href="https://github.com/litestar-org/litestar/pull/4683" rel="noopener noreferrer nofollow">даже</a> фиксы <a href="https://github.com/litestar-org/litestar/pull/4681" rel="noopener noreferrer nofollow">присылал</a>.&nbsp;</p><p>1. Почти нигде из коробки нет поддержки разных <a href="https://django-modern-rest.readthedocs.io/en/latest/pages/throttling.html#algorithms" rel="noopener noreferrer nofollow">алгоритмов</a>, <a href="https://django-modern-rest.readthedocs.io/en/latest/pages/throttling.html#backends" rel="noopener noreferrer nofollow">бекендов</a>, иногда даже <a href="https://django-modern-rest.readthedocs.io/en/latest/pages/throttling.html#cache-keys" rel="noopener noreferrer nofollow">cache-keys</a>. Очень жаль, есть только обычный counter с бекендом в памяти<br>2. Нигде (пришлите в комменты контр-пример) нет <a href="https://django-modern-rest.readthedocs.io/en/latest/pages/throttling.html#when-throttling-is-executed" rel="noopener noreferrer nofollow">разделения</a> на throttling до auth и после. Почему такое вообще важно? Чтобы не заддосить auth. И чтобы иметь возможность выдавать per-user правила. Нужны и важны оба варианта<br>3. <a href="https://django-modern-rest.readthedocs.io/en/latest/pages/throttling.html#headers" rel="noopener noreferrer nofollow">Кастомизация</a> заголовков ответа? Ха!</p><p>Что? Почему?</p><p><strong>Простое переиспользование кода</strong></p><p>Когда я смотрю на АПИ разных DRF проектов или FastAPI, мне становится больно. FastAPI строит все на view функциях, которые нельзя нормально кастомизировать. А DRF строит все на импортах строк внутри настроек. А как на счет классов и наследования?</p><p>У нас подобное сделано как <a href="https://django-modern-rest.readthedocs.io/en/latest/pages/reusable-code.html" rel="noopener noreferrer nofollow">абстрактные generic классы</a>. Например: получить JWT. Можно выбрать любой сериализатор, можно выбрать любые модели для запроса и ответа:</p><pre><code class="python">class RequestPayload(pydantic.BaseModel):
&nbsp; &nbsp; &nbsp;username: str
&nbsp; &nbsp; &nbsp;password: str

class ResponsePayload(pydantic.BaseModel):
&nbsp; &nbsp; &nbsp;access: str
&nbsp; &nbsp; &nbsp;refresh: str

class ObtainAccessAndRefreshSyncController(
&nbsp; &nbsp; ObtainTokensSyncController[
&nbsp; &nbsp; &nbsp; &nbsp; PydanticSerializer,
&nbsp; &nbsp; &nbsp; &nbsp; RequestPayload,
&nbsp; &nbsp; &nbsp; &nbsp; ResponsePayload,
&nbsp; &nbsp; ],
): ...&nbsp; # надо еще переопределить 2 метода</code></pre><p>Все типизировано, документировано, очевидно.&nbsp;<br>Как вы думаете, почему так больше никто не делает?</p><p><strong>Внешние вьюхи</strong></p><p>Интегрировать один фреймворк в другой - крайне сложно. Вот мы недавно даже <a href="https://t.me/opensource_findings/979" rel="noopener noreferrer nofollow">стрим проводили</a>, потому что не могли использовать <code>dj-rest-auth</code> из DRF. Так быть не должно.</p><p>Теперь в DMR можно использовать любые внешние Django View. Хоть DRF, хоть django-ninja, хоть ванильные вьюхи. И отображать любой внешний OpenAPI. Вот <a href="https://django-modern-rest.readthedocs.io/en/latest/pages/external-views.html" rel="noopener noreferrer nofollow">настолько просто</a>:</p><pre><code class="python">raw_schema = read_openapi_yaml('openapi.yml')
router = Router(
&nbsp; &nbsp; urls=[
&nbsp; &nbsp; &nbsp; &nbsp; external_path(
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'number/', number, name='number',
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; openapi=load_schema(raw_schema['paths']['/api/number'], PathItem),
&nbsp; &nbsp; &nbsp; &nbsp; ),
&nbsp; &nbsp; ],
)</code></pre><p>Почему другие фреймворки не стараются вписать существующие решения?</p><p><strong>Одной строкой</strong></p><p>- Больше подобного у меня в тегеграм канале "Находки в опенсорсе": <a href="https://t.me/opensource_findings" rel="noopener noreferrer nofollow">https://t.me/opensource_findings</a><br>- У нас есть еще куча других крутых фичей! Заглядывайте <a href="https://t.me/django_modern_rest" rel="noopener noreferrer nofollow">в наш чатик по DMR</a><br>- Релизнули <a href="https://github.com/typeddjango/django-stubs/releases/tag/6.1.0" rel="noopener noreferrer nofollow">django-stubs@6.1</a> с поддержкой <a href="https://docs.djangoproject.com/en/6.1/releases/6.1/" rel="noopener noreferrer nofollow">django@6.1</a><br>- Сделали <a href="https://t.me/addlist/o2_hXmp5nSUyODNi" rel="noopener noreferrer nofollow">папку с крутыми каналами</a> ребят из нашего Python сообщества. Смело можно закидывать коллегам как базовую папку "на кого подписаться в тг по питону". Внутри все мои друзья и коллеги, советую!</p> <a href="https://habr.com/ru/posts/1071306/?utm_campaign=1071306&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 17 Aug 2026 13:27:06 GMT</pubDate>
    <dc:creator><![CDATA[sobolevn]]></dc:creator>
      
      <category><![CDATA[python]]></category><category><![CDATA[django]]></category><category><![CDATA[web]]></category><category><![CDATA[django-modern-rest]]></category><category><![CDATA[находки-в-опенсорсе]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @nastyakopi — Блог компании Selectel (+2) — 10.08.2026 12:31]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/selectel/posts/1068650/</guid>
    <link>https://habr.com/ru/companies/selectel/posts/1068650/?utm_campaign=1068650&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/27d/c6d/bf5/27dc6dbf5ec1810ea01c8b27b28287a8.jpg" width="1560" height="880"></figure><p>И это не тавтология... <a href="https://selectel.ru/blog/stable-task-queue/?utm_source=habr.com&amp;utm_medium=referral&amp;utm_campaign=academy_post_queueoftasks_100826_content" rel="noopener noreferrer nofollow">Проверьте</a> свое знание синтаксиса, критическое мышление и умение вчитываться в ТЗ.</p><p><strong>Условие</strong></p><p>Идут обычные рабочие будни. Вы — ведущий DevOps-инженер в крупном маркетплейсе. В компании вовсю идет распродажа, и система распределенных вычислений на базе Celery работает на пределе возможностей, обрабатывая терабайты аналитики. В самом начале смены дежурный инженер замечает в системе ровно 100 активных задач. Согласно внутренней архитектуре, эти задачи зациклены: каждая задача после своего успешного завершения автоматически генерирует и ставит в очередь ровно одну новую задачу.</p><p>Через пару часов инженер бьет тревогу в рабочий чат: «Ребята, у нас проблема! График застыл! Похоже, планировщик завис или сеть легла, процессы не плодятся!». Вы открываете логи, смотрите на графики мониторинга и… Система работает абсолютно штатно, никакого бага нет.</p><p><strong>Задача</strong></p><p>Объясните паникующему инженеру, почему его логика отказала. Как так получилось, что количество задач не растет? Напишите простую симуляцию этого процесса на Python, чтобы наглядно показать коллеге, как ведет себя такая очередь.</p><blockquote><p>Убедитесь, что все решили правильно, — загляните <a href="https://selectel.ru/blog/stable-task-queue/?utm_source=habr.com&amp;utm_medium=referral&amp;utm_campaign=academy_post_queueoftasks_100826_content" rel="noopener noreferrer nofollow">в Академию Selectel</a>.</p></blockquote> <a href="https://habr.com/ru/posts/1068650/?utm_campaign=1068650&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 10 Aug 2026 09:31:00 GMT</pubDate>
    <dc:creator><![CDATA[nastyakopi (Selectel)]]></dc:creator>
      
      <category><![CDATA[selectel]]></category><category><![CDATA[python]]></category><category><![CDATA[занимательные задачи]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Python (+4) — 09.08.2026 07:47]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1068294/</guid>
    <link>https://habr.com/ru/posts/1068294/?utm_campaign=1068294&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>П</strong>редставлен открытый проект <a href="https://github.com/agentic-box/memora" rel="noopener noreferrer nofollow">Memora</a>, который сохраняет работу Codex и Claude Code между сессиями. Внутри решения находится локальная база SQLite или синхронизация через S3, R2 и Cloudflare D1. Есть также семантический поиск, TODO, документы и связи между воспоминаниями. ИИ-агент запрашивает тему и получает готовый комплект данных: важный контекст, незакрытые задачи, связанные факты и ссылки на источники. Причём всю память можно открыть как интерактивный граф и изучать через встроенный RAG-чат.</p><iframe id="6a78054b06bbbc8001838e50" src="https://embedd.srv.habr.com/iframe/6a78054b06bbbc8001838e50" class="embed_video embed__content" allowfullscreen="true"></iframe> <a href="https://habr.com/ru/posts/1068294/?utm_campaign=1068294&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sun, 09 Aug 2026 04:47:20 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[Memora]]></category><category><![CDATA[claude code]]></category><category><![CDATA[codex]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @tripolskypetr — Исследования и прогнозы в IT (+4) — 08.08.2026 19:31]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1068240/</guid>
    <link>https://habr.com/ru/posts/1068240/?utm_campaign=1068240&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Попросил ИИ чат нарисовать ИИ агента</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/986/4b8/eb7/9864b8eb7341e14c451d73fbf1a80930.jpg" width="1568" height="672"></figure> <a href="https://habr.com/ru/posts/1068240/?utm_campaign=1068240&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sat, 08 Aug 2026 16:31:28 GMT</pubDate>
    <dc:creator><![CDATA[tripolskypetr]]></dc:creator>
      
      <category><![CDATA[исскуственный интеллект]]></category><category><![CDATA[ии]]></category><category><![CDATA[ии-агенты]]></category><category><![CDATA[openai]]></category><category><![CDATA[chatgpt]]></category><category><![CDATA[claude]]></category><category><![CDATA[claude-code]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @220-380 — SQL (+1) — 07.08.2026 12:40]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1067860/</guid>
    <link>https://habr.com/ru/posts/1067860/?utm_campaign=1067860&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Привет!<br><br>Заметка о том как работает алгоритм инкрементальной загрузки, она же дельта, в  ETL процессах. Полезно будет для тех кто только погружается.<br>Для загрузки данных в хранилище данных мы выполняем два отдельных процесса: первоначальную загрузку исторических данных и инкрементальную загрузку. Первый процесс делается разово, а второй выполняется периодически.<br>Инкрементальная загрузка выбирает только новые, еще не загруженные данные из источника в цель.<br>Например, пользователи постоянно генерируют новые данные, бизнес работает. Система запускалась час назад и забрала новые на тот момент данные. При следующем  запуске алгоритм определяет максимальную дату в цели:<br><strong>max_timestamp </strong>= <code>SELECT MAX(timestamp) FROM target_table</code><br><br>и выбирает все записи из источника которые новее max_timestamp  </p><p><code>SELECT * FROM source_table WHERE timestamp &gt; </code><strong>max_timestamp</strong></p><p>При следующем запуске алгоритм снова заберет новые данные. И так далее, бесконечный цикл. Колонка по которой определяются новые данные бывает не только типом timestamp, но и просто датой и числовым значением.<br>В виде наглядно показан процесс.</p><iframe id="6a75a6337f52e38032ecb146" src="https://embedd.srv.habr.com/iframe/6a75a6337f52e38032ecb146" class="embed_video embed__content" allowfullscreen="true"></iframe> <a href="https://habr.com/ru/posts/1067860/?utm_campaign=1067860&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 07 Aug 2026 09:40:15 GMT</pubDate>
    <dc:creator><![CDATA[220-380]]></dc:creator>
      
      <category><![CDATA[ELT]]></category><category><![CDATA[etl]]></category><category><![CDATA[etl-процессы]]></category><category><![CDATA[delta]]></category><category><![CDATA[инкрементальная загрузка]]></category>
  </item>
  

	
  

  

  

      

      

      

    
  </channel>
</rss>
