Обновить
256K+

Python *

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

358,82
Рейтинг
Сначала показывать
Период
Уровень сложности
Формат публикации

Как тестировать конфигурацию Nginx: корректность и информационная безопасность

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

При разработке сложной системы приходится сталкиваться с использованием nginx в качестве reverse proxy: роутинг, список правил, регулирующих путь запроса во внутренние системы или между подсистемами.
Быстро развивающиеся сервисы обрастают правилами, назначение которых не очевидно или имеет недокументированные особенности. Проверенный способ рефакторинга таких систем: зафиксировать и вылечить упростить. Фиксировать будем тестами.

Как проверить корректность вашей конфигурации Nginx'а? Как проверить ее безопасность и нет ли уязвимостей ? Какие есть для этого варианты, их плюсы, минусы, практическая применимость и как эти проверки встроить в CI пайплайн ?
Ответы на эти вопросы под катом. Будет полезно, погнали.

Погнали

История одного бота: как сэкономить 500 часов на откликах и случайно отправить резюме боссу

Время на прочтение3 мин
Охват и читатели6.9K

Привет, Хабр.

Меня зовут Вадим, я бэкенд-разработчик.

Все мы знаем, что поиск работы в IT — это отдельный круг ада. Особенно этап "воронки": чтобы получить один оффер, нужно отправить 100+ откликов. Причем не пустых, а с вменяемым сопроводительным.

Как инженер, я не люблю рутину. Если алгоритм действий повторяется ("прочитать — сопоставить — написать — отправить"), значит, его можно заскриптовать.

Так появился мой pet-проект «Аврора», который на прошлой неделе перерос в закрытую бету на 100 человек. Рассказываю про архитектуру, промпт-инжиниринг и о том, почему if company_name != current_job — это самая важная строчка кода, которую я забыл написать.

Читать далее

Вы написали AI-агента, а что дальше? Разбираем Google Vertex AI Agent Engine — спасательный круг или золотая клетка?

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

Давайте честно: написать умного AI-агента сегодня — это самая простая часть работы. Собрали LangChain или LangGraph, прикрутили API OpenAI или Gemini, заставили это работать у себя в терминале — красота! Вы чувствуете себя Тони Старком.

Но настоящий кошмар начинается, когда возникаетвопрос: «А как выкатить это в продакшен?»

И тут вы понимаете, что ваш скрипт на Python — это не бэкенд. Вам нужно думать про:

Читать далее

ГОСТ Р 50779.29-2017 (ИСО 16269-6:2014) и статистические толерантные интервалы с практическим примером и кодом

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

Статья демонстрирует два подхода к практическому применению статистических толерантных интервалов и адресована двум категориям читателей:

Отраслевым технологам специалистам по автоклавированию: для них приведена пошаговая процедура решения прикладной задачи «подбор времени выдержки продукта при температуре стерилизации» с использованием таблиц ГОСТа.

Специалистам в области контроля и диагностики, которым интересен инструментарий толерантных интервалов для решения задач в непараметрической постановке. Для них с помощью Python кода мы получим непараметрическую оценку границы толерантного интервала (то есть воспроизведём то, что «зашито» в таблицах ГОСТа для непараметрической постановки). Дополнительно бутстрап‑моделированием проведём анализ устойчивости этой оценки и рассчитаем достигнутые значения уровней покрытия и доверия.

Ссылка на блокнот с кодом в конце статьи.

Читать далее

Как написать собственные классы классификации для маленьких

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

В прошлый раз я уже рассказывала о том, как в ходе обучения в "Школе 21" создавала класс линейной регресии, на этот раз будем рассматривать реализацию LogisticRegression, GaussianNB, KNN. Как и в прошлый раз, минимум теории, максимум практики.

Читать далее

Релиз Tewi 1.0.0 — открытого консольного клиента для Transmission и qBittorrent

Время на прочтение1 мин
Охват и читатели6.5K

14 ноября 2025 года состоялся первый мажорный выпуск открытого текстового клиента (TUI — text user interface) Tewi для управления демонами BitTorrent‑клиентов. Исходный код проекта написан на Python и опубликован на GitHub под лицензией GNU General Public License v3.0. Разработка Tewi ведётся с октября 2024 года. В решении используется открытый фреймворк Textual для реализации интерфейса.

Читать далее

Приглашаем на Pytup — онлайн-митап для Python-разработчиков и инженеров машинного обучения

Время на прочтение2 мин
Охват и читатели5.1K

27 ноября в Екатеринбурге пройдёт Pytup — онлайн‑митап для Python‑разработчиков и инженеров машинного обучения. Это площадка, где встречаются эксперты Python и ML, чтобы обсудить тренды, подходы, решения и вызовы индустрии в неформальной обстановке. Вас ждут четыре технических доклада, дискуссии и возможность пообщаться с коллегами из разных компаний.

Читать далее

Асинхронный OSINT против WAF: Как я дорабатывал свой сканер периметра до стандартов Kali Linux

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

«Мы не можем упаковывать каждый скрипт в мире, покажите нам реальный интерес комьюнити» — именно такой вежливый отказ прилетел мне от майнтейнеров Kali Linux в ответ на заявку добавить мою утилиту Web-Recon в официальный дистрибутив.

Вызов был принят. За последние недели простой скрипт эволюционировал в зрелый open-source продукт по гайдам Debian Policy: с переходом на src-layout, сборкой .whl колес через pyproject.toml и автоматическими CI/CD пайплайнами в облаке GitHub Actions.

Но главное — я полностью переписал сетевой движок. В этой статье я расскажу, как укрощал реактивную асинхронную мощность asyncio, защищал целевые хосты от случайного DoS-атаки с помощью семафоров и проектировал трехуровневый каскадный конвейер веерной ротации User-Agent для обхода жестких блокировок WAF и Cloudflare. Под капотом — разбор архитектуры стелс-сканирования периметра и инструкция по локальной установке пакета одной командой.

Далее

Python 3.15 включил UTF-8 по умолчанию: что ломается в cp1251 и как это найти до бухгалтерии

Время на прочтение7 мин
Охват и читатели6.4K

В Python 3.15 open() без encoding читает и пишет UTF-8 независимо от локали (PEP 686). На русской Windows и серверах с ru_RU.CP1251 это значит падения на выгрузках из 1С и, что хуже, тихие кракозябры в файлах для соседних систем. Воспроизводим на 3.14 и 3.15, находим такие места через EncodingWarning и ruff и чиним так, чтобы код одинаково работал на всех версиях.

Читать далее

Задача «Бедный Йорик»: как добиться от локального синтеза речи переходов на шёпот, пауз и смены эмоционального регистра

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

Для ровной дикторской начитки локальных TTS-моделей сегодня хватает с запасом: подаёшь на вход чистый образец голоса, расставляешь ударения — и получаешь разборчивую озвучку для лекции, технической заметки или видеоинструкции.

Сложности начинаются, когда нужна не дикторская читка, а актёрская игра с широким эмоциональным диапазоном — чтобы внутри одного абзаца голос прошёл через горькую иронию, ком в горле, глухой шёпот на выдохе и резкий эмоциональный срыв. Компактные модели на 0,5B–1,7B параметров такие перепады сглаживают: нейросеть держит среднюю интонацию исходного образца и читает драматический монолог с тем же бодрым выражением, что и документацию к API.

Ниже расскажу, через какие грабли я прошёл, пытаясь решить эту задачу локально — от ручной правки высоты голоса в фонетическом пакете Praat до подбора актёрских референсов — и как с этим справляется вышедшая в конце октября 2026 года модель Fish Audio Drama 3 (35B-A3B MoE) в сравнении с младшей версией S2 Pro (4B).

Читать далее

Признаки в обучении и проде расходятся: воспроизводим ошибку на тестовом наборе

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

Модель проходит офлайн-тесты, но ошибается в продакшене из-за расхождения входных признаков. На примере Python разбираем, как выявить Training–Serving Skew, восстановить данные на момент прогноза и автоматизировать проверку перед релизом.

Разобрать пример

HTML‑виджеты Telegram до выхода Bot API 10.4: отправляем через MTProto из Telethon и разбираем грабли слоя 233

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

В Telegram появились HTMLBubbles: бот присылает сообщение, внутри которого работает крошечная веб-страница со скриптом. Игра, опрос или калькулятор живут прямо в пузыре чата, без Mini App и хостинга. В публичном Bot API метода для них пока нет, но в протоколе MTProto они уже есть.

Я сделал мини-игру из Telethon, подменив клиенту слой протокола с 229 на 233. Рассказываю, где брать схему (документация расходится с исходниками Telegram Desktop), как описать новые типы руками, почему бот падает, если сделать его админом канала, и как это чинится парсером на десяток строк. В конце - таблица того, что умеет движок виджетов, и проверка, куда их на самом деле пускают: пересылка, инлайн, каналы и группы закрыты, хотя документация разрешает.

Разбираем грабли слоя 233

AI Sous-chef: как мы собрали приложение с облачными моделями и вынесли промпты из кода

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

Представьте: открываете холодильник — морковь, йогурт, яблоко. На полке арахисовое масло. Продукты есть, но что из этого приготовить? Можно искать рецепты и проверять, хватает ли ингредиентов. А можно сфотографировать продукты и попросить приложение предложить варианты.

Такой сценарий мы выбрали для командного проекта AI Sous-chef. Пользователь фотографирует продукты или вводит их списком, а сервис предлагает блюда и шаги приготовления. За два с половиной месяца мы выпустили Android-приложение и Telegram-бота.

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

Основной репозиторий AI Sous-chef опубликован под лицензией GNU AGPL v3.0. В нём находятся бэкенд, промпты, конфигурации и материалы проверок. Покажем, как устроены загрузка инструкций и обработка ответов, какие решения могут пригодиться в похожем проекте и что нам ещё предстоит доработать.

Читать далее

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

Как я предсказал просмотры на Хабре через ML

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

Чуть больше года назад у меня вышла статья про биржу Kwork (ссылка на статью). Она набрала 30 000 просмотров. Результат неплохой, но в топе того же хабра лежат публикации по 150 000 и 350 000 просмотров. Мне стало интересно, почему одни статьи собирают пару тысяч просмотров, а другие читают сотнями тысяч.

Я решил проверить это с помощью Python и машинного обучения. План был простой: собрать статистику по статьям из моего хаба, оценить качество текстов через языковую модель, загрузить все метрики в Random Forest и посмотреть, какие параметры сильнее всего влияют на просмотры.

В процессе я уперся в лимиты облачного API, локальная нейросеть в LM Studio схитрила на промпте, а сам алгоритм машинного обучения сначала выдал аномальный прогноз из-за утечки данных. Ниже расскажу, как я это исправлял и какие цифры получил в итоге.

Предсказала ли модель статистику статьи?

timeout=5 в requests — не то, что кажется: connect, read, ретраи и бюджет времени

Время на прочтение6 мин
Охват и читатели5.1K

По умолчанию у requests таймаута нет: клиент может висеть часами. Разбираем, чем connect отличается от read, почему одно число в timeout — не «длина всего запроса», как настроить urllib3.Retry без шторма и POST-дублей, и как ограничить всю операцию бюджетом времени. Код прогнан на Python 3.13 и requests 2.34 / urllib3 2.8; цифры — с локального стенда.

Читать далее

Сколько стоит минута: 200 тысяч партий Lichess о том, как часы съедают рейтинг

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

Игрок с рейтингом 2100+ в блице, у которого на часах больше минуты, ошибается примерно как игрок 2300. Когда на часах остается меньше пяти секунд, доля грубых ошибок у того же игрока такая, как у 1400 со спокойным запасом времени. Почти тысяча пунктов рейтинга теряется на последней минуте.

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

Читать далее

Пока вы учите агентов читать чеки, ABBYY Hot Folder просто работает

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

На написание этой статьи меня натолкнула недавняя публикация модели Xiaomi-OCR-0. Мои AI-агенты давно уже умели читать тексты с картинок, да и я сам темой распознавания символов много лет интересуюсь, но, так или иначе, в моих взаимоотношениях с OCR с самого начала был еще один участник…

O_O тройничок! Посмотрим, посмотрим...

Пайпы OpenWebUI: зачем писать код там, где «всё уже есть в настройках»

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

Настроить кастомную модель с инструментами и RAG в OpenWebUI — легко. Заставить её работать предсказуемо в бою — сложнее. Наш бот техподдержки на Gemma 4 сначала отвечал правдоподобно, но без данных из систем. Мы разобрались, почему это происходит, и превратили «одну модель в интерфейсе» в детерминированный конвейер с помощью пайпов.

Читать далее

Скрипт работает в терминале, а под systemd не находит файл. Почему? Представим: app.py и config.json лежат в...

Охват и читатели3.3K

Скрипт работает в терминале, а под systemd не находит файл. Почему?

Представим: app.py и config.json лежат в /opt/mybot. При запуске из этого каталога всё работает, а системный сервис падает с FileNotFoundError.

Причина может быть в такой строке:

Читать дальше →

Старый трейдер поделился секретом заработка. Я проверил с помощью кода. Удалось заработать?

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

Есть в трейдинге фраза, после которой мне хочется открыть не терминал, а Python:
«Эта стратегия работает десятилетиями»

Хорошо. Десятилетия прошли. А прибыль-то осталась?

Читать далее