Обновить
512K+

Python *

Высокоуровневый язык программирования

514,82
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Робот, который звонит в WhatsApp: как я автоматизировал то, что автоматизировать не предполагалось

Уровень сложностиСредний
Время на прочтение18 мин
Охват и читатели8.2K

Задача формулировалась в одно предложение: робот должен сам звонить людям в WhatsApp, проигрывать голосовое приветствие, записывать ответ и присылать оператору расшифровку с вердиктом «да / нет / надо посмотреть руками».

Проблема в том, что официально это невозможно. У WhatsApp нет API для голосовых роботов: Business API умеет шаблонные сообщения, провайдеры на рынке умеют текстовые рассылки, голосовые звонки закрыты наглухо. Готового решения не существует ни за деньги, ни за большие деньги.

Зато существует официальное десктопное приложение, которое звонить умеет. И его можно водить за руку.

Это рассказ о том, что из этого вышло: с чего начиналось, какие подходы умерли по дороге, четыре слоя автоматизации — от CDP до виртуальных аудиокабелей — и один урок про производительность, который перечеркнул половину архитектуры уже на живых звонках.

Сразу оговорюсь: по отношению к правилам платформы это серая зона, и я не предлагаю это повторять. Мне здесь интересна чистая инженерия — как автоматизируется то, что автоматизировать не предполагалось. Ограничения и риски честно разберу в конце.

Кода будет много. Всё интересное в этом проекте живёт именно в деталях.

Читать далее

Playwright не спасает от флапающих тестов: разбираемся, как он ждёт на самом деле

Уровень сложностиСредний
Время на прочтение17 мин
Охват и читатели13K

Локально тесты проходят стабильно, а в CI начинают падать в случайных местах — знакомая картина даже для проектов на Playwright.

В статье разберём, где заканчивается встроенное автоожидание, какие привычные конструкции возвращают гонки и как выстроить тесты так, чтобы результат меньше зависел от скорости окружения и состояния данных.

Читать далее

Я написал ASGI-фреймворк, в котором дерево папок — это и есть API

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели8.3K

Несколько месяцев пилил pet-проект, который зашёл дальше, чем планировал: файловый ASGI-фреймворк, где дерево папок — это и есть таблица роутов. Сегодня вышла версия 1.0 — с адверсариальным security-аудитом (нашёл у себя pickle RCE и CSWSH), 2329 тестами и нативным async на PostgreSQL. Рассказываю, что внутри и что было больнее всего сделать правильно.

Узнать подробнее об EndoCore

Должны ли библиотеки запрещать уязвимые версии зависимостей?

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели7.9K

Когда в зависимости обнаруживают уязвимость, очевидное решение — поднять её минимально допустимую версию во всех библиотеках, которые ее используют. Тогда пакетный менеджер не подтянет уязвимую версию даже при новой установке. Сет Ларсон из Python Software Foundation предлагает не делать этого автоматически. По его мнению метаданные библиотеки должны описывать только совместимость, а контроль безопасности сборки оставаться на стороне приложения.

Колонка Сета вызвала спор в Python-сообществе: одни поддержали разделение ответственности между библиотекой и приложением, другие заметили, что безопасность тоже может входить в условия поддержки библиотеки. Мы в CodeScoring подготовили перевод колонки, разбор обеих позиций и наш взгляд на этот вопрос.

Читать далее

Я сделал ASGI-фреймворк, где дерево папок — и есть API

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели6.6K

Рассказываю, как я сам сделал ASGI-фреймворк, в котором дерево папок заменяет таблицу маршрутов, — и почему это решает проблему расхождения роутов с кодом. Разбираю встроенную безопасную ORM, показываю на примерах, как версионирование превращается в копирование папки, и честно привожу гоночные тесты на реальной конкурентности.

Узнать больше про EndoCore

ИИ для анализа рентген‑снимков грудного отдела

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели7.3K

Недавно занимался задачей, которую в медтехе обсуждают часто, а до рабочего прототипа доходят не все: нужно было научить модель смотреть на рентген грудной клетки и выдавать вероятности по нескольким патологиям сразу. Не сегментация, не генерация отчёта — именно мультилейбл‑классификация, чтобы на выходе было что‑то вроде «плевральный выпот 87%, пневмоторакс 12%».

Полный fine‑tune большой сети на арендованной GPU мне не хотелось: дорого, долго, и есть риск переобучиться на паре десятков тысяч снимков. Поэтому пошёл по пути linear probing — взял тяжёлый предобученный энкодер, заморозил его и обучил только небольшую голову. В итоге macro AUC на валидации вышел 0.9025, обучение уложилось в десяток эпох.

Ниже — как устроен пайплайн, где накосячил с путями к датасету, и почему отказался от горизонтального отражения.

Читать далее

Заставляем Airflow самого заводить задачи в YouTrack без смс и регистрации

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели7.1K

Работая единственным QA в команде, в обязанности которого активно входит мониторинг, я столкнулась с проблемами тайм-менеджмента: очень много времени уходит на анализ упавших пайплайнов, заведение однотипных задач, поднятие тревоги, отмена тревоги, потому что проблема уже исправляется и прочие прелести тестерской работы. В один прекрасный осенний денек, сидя на окне и думая о нем (мониторинге), я решила - хватит это терпеть. Посидела, погуглила, вспомнила родительские слова “Хочешь сделать что-то хорошо - сделай это сама”. Что ж таков путь.

Читать далее

LLM-судье нельзя верить на слово: как построить надёжный гейт и проверить сами тесты

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели6.8K

Как перестать доверять LLM-судье на слово и построить безопасную двухконтурную систему оценки?

Внутри статьи:

Архитектурный паттерн сдерживания: почему у классической нормализации должно быть право вето.

CI-инварианты: как ловить галлюцинации моделей с помощью враждебных фикстур в grounded-judge-gate.

Разбор факапов: три реальных бага проектирования, которые едва не увели систему в ложноположительное пике.

Читать далее

Я перенёс на Python библиотеку, которой физики пользуются двадцать лет. Перевод оказался самой лёгкой частью

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели13K

Есть код, который физики передают друг другу с 2002 года. Кристиан Мэтцлер из Бернского университета написал набор MATLAB‑функций для расчёта рассеяния Ми, физики, из‑за которой небо голубое, а молоко белое. В 2009-м Стивен Жак обернул его для тканевой оптики, и с тех пор эти полторы сотни строк разошлись по тысячам работ, от атмосферных исследований до лазерной медицины.

Читать далее

Credit Scoring: Одинокое дерево, целый лес и разочарование в нейросетях

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели6.6K

Введение

Кажется, что нейросети могут все. Мы видим результат их работы в системах распознавания лиц, видеоаналитике. Нас поражает умение нейросетей рисовать изображения, распознавать и синтезировать голос, а большие языковые модели уже давно проходят тест Тьюринга и ведут беседу как живые люди. Но, как показал мой эксперимент, в задачах кредитного скоринга они нисколько не лучше классических ML-моделей. В этой статье я расскажу, как решающее дерево, случайный лес, бустинг и даже многослойная нейросеть упираются в один и тот же потолок на данных кредитного скоринга.

Ход эксперимента

В качестве датасета были взяты данные кредитного скоринга с https://www.kaggle.com/competitions/GiveMeSomeCredit. Сначала мы обучили решающее дерево, с кросс-валидацией.  График зависимости roc-auc от количества элементов выборки (Ореол вокруг кривой – это дисперсия (разброс) при кроссвалидации):

Читать далее

Как перестать проверять Codex каждые пять минут: мобильные уведомления через ntfy

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели9.3K

Когда я начал активно использовать OpenAI Codex для длительных задач, я быстро заметил странный парадокс. Агент способен работать самостоятельно десятки минут, но именно человек продолжает каждые несколько минут проверять терминал: не закончил ли он работу. Я решил поменять эту модель взаимодействия. Вместо того чтобы следить за агентом, агент стал сам сообщать, когда моё участие действительно необходимо.

Читать далее

Своя GPT-like LLM по WH40K с нуля. Часть 4: Дообучение на вопрос–ответ (SFT)

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели8.4K

Привет, Хабр! Меня зовут Владимир, и это четвёртая часть цикла статей по написанию и обучению небольшой decoder-only LLM с нуля.

Данная статья целиком посвящена этапу SFT - дообучению на датасете “вопрос - ответ”, чтобы модель могла вести диалог с пользователем, а не просто дописывать за него фразы.

Читать далее

Начал раздавать бесплатные поддомены на fluxcast.dev и погряз в войне с DNS, гитом и сертификатами

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели11K

Недавно я зарегистрировал fluxcast.dev и понял, что основной домен простаивает без дела. Рассказываю, как я написал свой реестр бесплатных поддоменов на Python через PR на GitHub и с какими подводными камнями DNS, Cloudflare и Git столкнулся.

Читать далее

Ближайшие события

В CSV было 11 строк, до BI дошло 7. Куда пропали остальные четыре?

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели10K

В исходном orders.csv было 11 строк. До BI-витрины дошло 7, а валовая сумма 4720.30 после применения бизнес-правил превратилась в 2200.30 выручки. Четыре строки не исчезли: каждая попала в rejects с конкретной причиной.

На этом небольшом примере покажу весь путь данных через RAW, STG, CORE и MARTS. Разберём, где меняются строки и суммы, как пережить повторную доставку файла и какие проверки позволяют доверять итоговому дашборду. Внутри MinIO, Postgres и Airflow.

Читать далее

Интеграция компьютерного зрения в АСУ ТП. IEC 61499 + python + CV = OpenFb

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели12K

В июле вышла новая версия OpenFB - открытой среды исполнения для IEC 61499, позволяющая вести разработку на python. OpenFB предназначена для разработки и интеграции приложений компьютерного зрения и ML алгоритмов в АСУ ТП.

В статье рассмотрен пример включения базовых алгоритмов компьютерного зрения в систему управления.

Читать далее

Что нового в PyCharm 2026.2

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели9.1K

Несмотря на то, что PyCharm уже несколько лет официально недоступен в России, он по-прежнему остаётся одним из главных инструментов для Python-разработчиков. Недавно вышла новая версия PyCharm 2026.2.

В релиз вошли разработка Python-расширений на Rust, новый отладчик debugpy, интеграция с Pyrefly, поддержка инструментов uv и uvx и многопроектных конфигураций Poetry и Hatch. Также появились мини-карта редактора, генерация проектов с помощью ИИ, менеджер скиллов для агентов и поддержка TypeScript 7.

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

Читать далее

Как искать проблемы производительности в Python

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели7.8K

У каждого бывают ситуации, когда сервис в проде начинает тормозить. Клиенты жалуются, дашборды пестрят красными графиками, а перед глазами открывается бездна метрик, логов и трейсов. В этот момент возникает непреодолимое желание открыть профайлер и начать оптимизировать наугад. И это главная ошибка.

Меня зовут Юра Ашуров, я тимлид в Точка Банк. В статье расскажу, почему не стоит начинать расследование с профайлера и какие метрики помогают сузить область поиска. Всё это — на примере двух реальных кейсов с высоконагруженными проектами.

Читать далее

Асимметричная криптография в Java Card

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели7.1K

В этой статье разговор пойдет о приложении на Java Card, бегающем на смарт-картах. На хабре уже есть несколько публикаций на эту тему, в своей же я бы хотел немного выйти за рамки стандартного “Hello World”. Здесь вы узнаете как собирать апплет, увидите пример размещения данных в апплет на этапе инсталляции, а также установим защищенный канал между Хостом и картой.

Читать далее

Визуализация основных шагов упрощенной схемы доказательства гипотезы Пуанкаре

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели13K

Как известно, гипотеза Пуанкаре на сегодня является единственной решённой задачей тысячелетия.

Её формулировка довольно проста:Всякое односвязное компактное трёхмерное многообразие без края гомеоморфно трёхмерной сфере.

В этой статье мы создадим простенькую компьютерную визуализацию основных пунктов  упрощённого доказательства.

Читать далее

Как я научил Claude заказывать продукты в Яндекс Лавке (и что для этого пришлось отреверсить)

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели13K

У Яндекс Лавки нет публичного API. А мне захотелось написать ассистенту «закажи молоко и что-нибудь к ужину» — и чтобы заказ реально уехал курьеру.

Рассказываю, как я отреверсил приватный веб-API Лавки прямо из браузерного трафика и завернул его в MCP-сервер: поиск, корзина, оформление с подтверждением суммы. А главное — про грабли, которые ловил воспроизведением, а не «на глаз»: заголовок X-CSRF-Token, зашитый в HTML; гонки за общую корзину и HTTP 409; «Раскупили» и «только из Большой Лавки», которые оказались не тем, чем выглядели; пустой способ оплаты; и удалённый деплой с OAuth, чтобы заказывать с телефона.

Код открыт (MIT), ставится через uvx. Осторожно: неофициально, реверс приватного API, оформление тратит реальные деньги.

Читать далее