IT-новости про Python, которые стоит знать

Собрали в одном месте самые важные ссылки
и сделали Тренажер IT-инцидентов для DevOps/SRE

     27.08.2026       Выпуск 663 (24.08.2026 - 30.08.2026)       Статьи

Тестирование крупного Django-монолита: от хаоса с ID к стабильным прогонам в pytest

Сегодня хочу рассказать об особенностях автоматического тестирования крупного проекта на Django, в котором тесты написаны в разных стилях и есть много пересечений моделей данных. Поговорим о том, как привести всё к единому знаменателю без риска получить непредсказуемое поведение тестов. Также разберём конфигурацию pytest, параметры его запуска, работу с фабриками моделей и стили тестирования в двух парадигмах (Django и чистый pytest).

     27.08.2026       Выпуск 663 (24.08.2026 - 30.08.2026)       Статьи

Переход к неанонимным изменениям схемы СУРБД Firebird

Когда я только пришел на должность помощника DBA, я заметил, что все production базы фиксируют изменения странным образом, а именно каждый день в 00:00 вызывался скрипт, который выгружает схему БД Firebird, в виде файла script.sql, созданный встроенной утилитой isql. Далее делил весь файл на объекты (файлы), по группам (директориям) принадлежности, объясняю: есть кусок скрипта создания таблицы, он помещается в директорию 01_TABLES в виде отдельного файла названного в честь названия объекта который он содержит, и так далее. Чем же это плохо? А суть в том что разработчиков много, правки анонимны, история тяжело воспроизводимая. В такой каше сразу не разберешься.

     26.08.2026       Выпуск 663 (24.08.2026 - 30.08.2026)       Статьи

Три негативных ответа ИИ оказались о другой компании: разбор одной ошибки в метрике тональности

Решил посчитать, сколько раз языковые модели отзываются плохо о конкретной компании. Вроде простая задача: прогнать запросы через несколько моделей, разметить тональность ответов, поделить негативные на общее число. У меня получилось три негативных ответа из 358 — 0,8%. Число выглядело спокойным, и я чуть не отправил его в отчёт как есть. Потом я открыл сами эти три ответа, чтобы понять, из-за чего именно модель поставила минус.

     26.08.2026       Выпуск 663 (24.08.2026 - 30.08.2026)       Статьи

CP-SAT OR-Tools против Excel: решаем задачу оптимизации офисного пространства

Несколько раз в год отдел оптимизации думает над тем, как разместить сотрудников бэк‑офиса по локациям на несколько лет вперёд. Раньше ребята делали это вручную: было медленно (месяц работы), больно (Excel) и неоптимально (никто не мог гарантировать, что найденная рассадка удовлетворяет всем ограничениям).Коллеги хотели автоматизировать ручную работу — с этим они и пришли к нам. В целом, получаем самую стандартную задачу оптимизации, которая решается с помощью одной библиотеки. Постараюсь рассказать о некоторых нюансах, которые не с первого раза гуглятся (со второго).

     26.08.2026       Выпуск 663 (24.08.2026 - 30.08.2026)       Статьи

ИИ-агент вместо тестировщика: 20 копеек за диалог и причина, почему вас не заменит llm

Тестирую диалоговые системы: чат-ботов и голосовых ботов, часть из них с обращениями в RAG. Моя работа устроена так: беру схему диалога на Холсте, примеряю на себя роль клиента и последовательно прохожу сценарий. Задаю вопрос и проверяю ответ, соглашаюсь — смотрю, правильно ли сработал переход, отказываюсь — проверяю фолбэк. Так приходится проходить десятки сценариев, которые в крупном проекте быстро складываются в большой объем ручной работы.

     25.08.2026       Выпуск 663 (24.08.2026 - 30.08.2026)       Статьи

ICO — как я осмелел и написал свой типизированный ML-фреймворк на Python

Последние годы я работал разработчиком в области машинного обучения, компьютерного зрения и 3D-реконструкции. Писал и видел множество вариантов организации вычислений и обработки потока данных. Но в них мне не хватало системы и организованности, прозрачности и гибкости. Поэтому я набрался решимости и воплотил самые мои смелые — и, как оказалось, вполне рабочие — идеи в новом фреймворке, который я назвал ICO.

     25.08.2026       Выпуск 663 (24.08.2026 - 30.08.2026)       Статьи

Подсчет транспорта в видеопотоке: пять мест, где я ошибся

Счетчик показал десятки проездов за одну красную фазу светофора. Машина была одна, и она стояла.Нейросеть при этом отработала правильно. Она видела машину и держала ее рамку все это время. Ошибка была в семидесяти строках обычного Python, которые я написал сам.Система считает машины, автобусы и трамваи на видео с неподвижной камеры… Готовых наборов данных не брал: хотел пройти весь путь от съемки до обученной модели сам и посмотреть, где он ломается.Ломался он пять раз. Метрики тоже будут, вместе с разбором, почему верить им нельзя.

     25.08.2026       Выпуск 663 (24.08.2026 - 30.08.2026)       Статьи

Приложение упало в закрытом контуре: скрытые загрузки в Python‑библиотеках для ML

В статье расскажу, почему Python-библиотеки для ML могут незаметно ходить в интернет, как находить такие скрытые загрузки и что с ними делать в закрытом контуре.

     24.08.2026       Выпуск 663 (24.08.2026 - 30.08.2026)       Статьи

RAG‑система для анализа новостей с позиций исторической личности на основе литературных источников «АЙ_Ленин»

Широкое распространение СМИ в сети привело к формированию группы тематических экспертов — лидеров общественного мнения — блогеров. Их задача — оценка и анализ фактов, подача информации через призму собственного мнения.Закономерно, мысленное упражнение, как человек, оставивший след в истории, оценил бы тот или иной современный факт.

     23.08.2026       Выпуск 662 (17.08.2026 - 23.08.2026)       Статьи

Что вы увидели на картинке первым? Спрашиваем трансформер

Что видит трансформер: крокодила, лодку или силуэт человека? Проверяем BLIP на визуальных иллюзиях. Наверняка многие видели картинки-тесты, которые предлагают по тому, что первым бросилось в глаза определить характер, какое полушарие доминирует или что-то еще. Обычно на этих изображениях находится несколько объектов или один объект меняется в зависимости от "угла" обзора. А что будет, если попросить трансформер описать эти картинки? Что "увидит" он и на что он "обратит внимание"?

     22.08.2026       Выпуск 662 (17.08.2026 - 23.08.2026)       Статьи

Развитие FastAPI приложения в ходе разработки production-системы

Полтора года назад я написал о своём подходе к структуре FastAPI-приложений. С тех пор два крупных проекта, production и несколько архитектурных граблей заставили меня многое пересмотреть. В этой статье расскажу, что изменилось и какие решения действительно упростили мне разработку.

     21.08.2026       Выпуск 662 (17.08.2026 - 23.08.2026)       Статьи

Как найти остров по одной фотографии: геолокация через геометрию и CUDA

Фото островного курорта. Ни EXIF, ни GPS, ни модели камеры – ничего. Нужно назвать курорт, координаты и сторону света, куда смотрела камера. Пытаться ответить на эти вопросы через google lens – значит упустить возможность повеселиться. Поэтому я взялся за задачу с помощью математики и программирования.

     20.08.2026       Выпуск 662 (17.08.2026 - 23.08.2026)       Статьи

ИИ‑агент внутри КОМПАС-3D: пишет код, строит деталь и проверяет результат

Я сделал ИИ‑агента для КОМПАС-3D: он живёт прямо в окне программы, принимает запрос текстом или фотографией и строит параметрическую деталь — не мёртвую геометрию в step, а дерево построения с переменными, которое пригодно для редактирования. В статье: как хорошо агент справляется с моделированием по тексту и чертежам уже сейчас, почему один блок кода лучше десяти tool'ов и почему агенту мало просто «видеть» результат.

     20.08.2026       Выпуск 662 (17.08.2026 - 23.08.2026)       Статьи

Часть IV. Религии в IT: от ООП к ИИстерии + Большое расследование Python

Просто закройте эту главу, если вы не научились с юмором, здоровым сарказмом и самокритикой смотреть на абсурд происходящего. Её текст точно соответствует исторической фактуре, но оскорбит «чувства верующих».В народе говорят: «носится как дурак с фантиком». Многие технические или кажущиеся такими решения, казалось бы, даже в компьютерной сфере не имели научной подоплёки. Чтоб не ошибиться в выборе технологии, нужно было учесть исторический и политический факторы.Ниже истории о провальных идеях, стоивших жизни и карьеры многим разработчикам. Без знания их, прошлое будет настигать снова и снова.

     19.08.2026       Выпуск 662 (17.08.2026 - 23.08.2026)       Статьи

Найти человека по голосу среди 134 тысяч записей

В последний вечер дататона у нас оставалось три попытки отправить решение. К этому моменту мы уже перебрали несколько моделей, собрали тяжёлый ансамбль и упёрлись в 0.6605. Новые энкодеры добавляли по одной-две тысячных, а fine-tuning показывал отличные цифры локально и проваливался на лидерборде.Добавлять ещё одну модель смысла почти не было. Мы решили изменить сам поиск соседей: попробовать K-reciprocal re-ranking, а затем ещё раз применить AS-Norm. От этого варианта ждали примерно 0.67–0.69.Получилось 0.7042 и 10-е место из 93. Почти весь день мы пытались выжать из моделей тысячные, а перерасчёт соседей добавил больше четырёх сотых без дополнительного обучения.

     19.08.2026       Выпуск 662 (17.08.2026 - 23.08.2026)       Статьи

NN vs фракталы: может ли нейросеть выучить красивые математические функции?

«А может ли нейросеть выучить функцию Вейерштрасса (непрерывная функция на вещественной прямой, не имеющая производной ни в одной точке)?». Я решила проверить это на практике. Мною было принято решение не останавливаться на фракталах, а поискать другие функции, обладающие интересными для математика свойствами: лестница Кантора, функция Римана (Томаэ) и др. В данной статье представлена только функция Вейерштрасса.

     19.08.2026       Выпуск 662 (17.08.2026 - 23.08.2026)       Статьи

От struct к компиляции под схему: ускоряем RowBinary-декодер на Python

Раньше мой декодер RowBinary читал каждое числовое поле отдельно. Если брать 200 тысяч строк с десятью числовыми колонками, получалось два миллиона таких чтений, хотя все данные уже были в памяти.Сначала я думал использовать Cython, C или Rust. Но потом решил попробовать оптимизировать сам процесс: объединить соседние поля с фиксированной длиной в один struct, а полностью фиксированные строки разбирать с помощью Struct.iter_unpack.

     19.08.2026       Выпуск 662 (17.08.2026 - 23.08.2026)       Статьи

Ни строчки руками: как я вайбкодил AI-мастера D&D и что показали два месяца открытой беты

За полгода я не написал руками ни одной строчки кода. При этом в проде — почти тысяча пользователей и первые 50 тысяч рублей. Днём я геймдизайнер в мобильной игре, вечером сажусь оперировать фермой агентов, которые пишут код вместо меня — и сами же его ревьюят и тестируют. Под катом честные цифры двух месяцев открытой беты: воронка, глубина сессий, деньги и пара мест, где агенты меня знатно подставили. А вы уж сами решите, вайбкодинг — это новая разработка или преступление против профессии.

     18.08.2026       Выпуск 662 (17.08.2026 - 23.08.2026)       Статьи

Конфигурация в Python: эволюция подходов

Казалось бы, конфигурация — это просто .env и settings.py. Но стоит приложению вырасти — и начинается: секреты утекают в логи, port внезапно приходит строкой abc, настройки дублируются между окружениями. Я прошел путь от хардкода до типизированных схем и понял: конфигурация — это не мусорный код на скорую руку, а часть инфраструктуры, которую нужно проектировать так же тщательно, как бизнес-логику.

     18.08.2026       Выпуск 662 (17.08.2026 - 23.08.2026)       Статьи

Train и eval в ARC-AGI-2 — это разные распределения

Если вы замеряете прогресс своего солвера на случайной подвыборке из train, вы замеряете его не на том наборе. Медианная задача train занимает 100 клеток на выходе, у медианной задачи eval их 225. Два и более тестовых входа требуют 6.9 процента задач train и 40.8 процента задач eval. Расхождение держится по всем шести структурным осям, которые я померил, и переживает поправку на множественные сравнения.Дальше идёт распределительное сравнение обоих публичных наборов ARC-AGI-2, отпечатки файлов, на которых оно сделано, и подмножество из train, подобранное под eval по структуре. CSV со списком задач в конце.