Обновить
1024K+

Python *

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

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

10 дней спустя: как мой бот дважды умирал незаметно, а метрика релевантности мне врала

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

Полторы недели назад я выложил на Habr бота с лентой хороших новостей на sqlite-vec за $5/мес. Потом пришли живые юзеры — и началось самое интересное. Не код. Эксплуатация.

За 10 дней в проде:

🪦 Бот дважды умирал незаметно — поллил Telegram и казался живым, но не создавал ни одной новости по 4–5 дней. Один раз — OOM на загрузке модели, другой — feedparser.parse(url) без таймаута заморозил весь пайплайн.

📉 Метрика релевантности «рухнула» до 30% — и я чуть не откатил рабочую фичу. Оказалось, один юзер поставил 106 дизлайков из 228 и отравил и метрику, и приор источников. Починил, считая по уникальным юзерам — правда оказалась 42%.

🎯 Реакции 78 человек сами показали, какие источники выкинуть: tech-аудитория отвергает общие новости и любит курируемое.

Внутри — реальные логи, код фиксов (httpx-таймаут, watchdog, робастные метрики) и уроки про надёжность воркеров и доверие к цифрам.

👉 @futur_e_news_bot

Читать далее

Новости

Ваши тесты медленные не из-за базы данных. Я измерил

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

Есть устойчивое поверье: интеграционные тесты медленные, потому что ходят в настоящую базу. «Подними SQLite в памяти», «замокай репозитории», «не гоняй Postgres в CI» — стандартный набор советов. Мокать я не люблю, но крыть упрёк «настоящая база — это медленно» было нечем. Поэтому я сел, спрофилировал и померил: 3316 интеграционных тестов, прогон 30 минут. После трёх правок инфраструктуры — 109 секунд. База оказалась ни при чём, а совет «чисти базу через TRUNCATE, это быстрее DELETE» у меня работал ровно наоборот — обидно вдвойне, потому что эта рекомендация уже лежала в черновике моей следующей статьи.

Читать далее

Claude против краевых случаев: как LLM-агент нашёл баги в NumPy и других Python-библиотеках

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

Исследователи Anthropic собрали LLM-агента, который читает код Python-библиотек, сам формулирует свойства, пишет property-based тесты на Hypothesis и ищет контрпримеры. В результате он нашёл баги в NumPy, aws-lambda-powertools, tokenizers и других проектах — часть патчей уже приняли мейнтейнеры. Разбираемся, как работает такой агент, почему property-based тестирование хорошо подходит для LLM и где у подхода пока границы.

Читать далее

Spawn — фреймворк для разработки AIDD методологий

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

Всем привет! Я создал инструмент для разработки AIDD и назвал его Spawn. Это Python-утилита, которая помогает когерентно использовать несколько AIDD-методологий в одном репозитории — без ручной синхронизации правил, скилов и MCP-конфигов между ними.

Далее — краткое введение, затем я расскажу, как работает Spawn, как им пользоваться с клиентской точки зрения, как разрабатывать расширения, и приведу несколько примеров.

Читать далее

Откуда в обучении берётся nan: численная нестабильность в ML и почему всё считают в логарифмах

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

Многие ML‑инженеры знают, что нужно использовать CrossEntropyLoss, log_softmax и logsumexp. Гораздо меньше людей могут объяснить, что именно они спасают и почему без них обучение модели периодически превращается в генератор nan. Именно об этом и поговорим.

Читать далее

Как я написал портативный файлообменник

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

Каждый раз, когда нужно перекинуть файл, код или ссылку с ПК на телефон (или другу в той же Wi‑Fi сети), начинается классическая возня. Либо гоняешь через «Избранное» в мессенджерах (где режется качество и файлы вечно висят в облаке), либо поднимаешь локальные веб‑серверы через консоль. Мне это надоело, и я решил написать свою утилиту — FlashStash.

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

После нескольких итераций проект дорос до версии 1.6, и я хочу поделиться тем, как устроена утилита изнутри и с какими техническими проблемами пришлось столкнуться.

Читать далее

Как я за несколько месяцев совместно с AI — ассистентом собрал SaaS для прокатного бизнеса и при чем тут QA Automation

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

В статье представлен разбор создания CRM-системы, разработанной с применением искусственного интеллекта для ускорения кодинга и архитектурного планирования. Проект представлен как будущий полигон для построения хорошего фреймворка для автотестирования с помощью Python.

Читать далее

Как я реализовал передачу диалога из ИИ-консультанта сайта в MAX

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

Представьте: клиент зашел на сайт в полночь. Менеджер спит. Утром клиент уже забыл о вас и купил у конкурента. Обычный чат-бот не спасает: он либо тупой, либо безумно дорогой, либо хранит данные за океаном.

Я создал решение, которое решает эту проблему раз и навсегда.

Читать далее

Фрактальная криптография: может ли хаос стать основой постквантового шифрования?

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

Всем Q. А тем, у кого малиновые штаны много QqQq. Когда-то, n-лет тому назад, много и долго исследовал фракталы ...

Читать далее

Как я создал и развиваю ИИ-тренера привычек в Telegram

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

Хорошего тренера узнают в лицо.

Как я создал и развиваю ИИ‑тренера привычек в Telegram: техническое описание проекта для гиков и нетехническое описание продукта для тех, кто хочет стать лучше.

Развить полезные привычки

Dead Letter Queue в Kafka на практике

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

DLQ — это просто топик. Сложное — всё, что вокруг него.

Эта статья — про практическую архитектуру обработки событий из Kafka с отправкой данных во внешний REST API.

Главная проблема такого сценария — нестабильность внешнего API. Он периодически деградирует по latency или начинает отвечать с ошибками, и это напрямую влияет на пропускную способность всего консьюмера.

Читать далее

SOLID в Python без воды

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

Открываешь чужой код на Python, а там — Java. Абстрактные базовые классы в местах, где хватило бы простой функции, фабрики фабрик и нагромождение паттернов, усложняющих чтение бизнес-логики. Знакомая картина?

Многие разработчики механически переносят архитектурные привычки из строго типизированных языков в Python, создавая переусложненный неидиоматичный код. В этой статье мы возьмем классические правила SOLID и переведем их на язык динамической типизации (Pythonic way). Разберем на реальных примерах, где принципы спасают проект, а где слепое следование им скатывается в карго-культ.

Читать далее

Преобразование Фурье в цифровой обработке сигналов. Часть 1: Дискретное преобразование Фурье

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

В этой статье мы начинаем погружение в одну из фундаментальных тем цифровой обработки сигналов (ЦОС) — дискретное преобразование Фурье (ДПФ). Именно ДПФ служит математической основой для понимания более сложных методов спектрального анализа и является отправной точкой для изучения всех остальных видов преобразования Фурье в ЦОС. Будет рассмотрено ДПФ действительных сигналов.

Материал построен так, чтобы объединить теорию, наглядные графики и практический код на Python.

Тема преобразования Фурье в ЦОС обширна и многогранна, поэтому я разбил материал на несколько частей. В первой части мы сосредоточимся на базовых принципах, интуитивном понимании алгоритма и его реализации.

Краткое содержание статьи. Часть 1

В ней поэтапно разбираются фундаментальные понятия, необходимые для понимания ДПФ:

Аналоговые и дискретные сигналы — краткое введение, объясняющее разницу между двумя типами сигналов. В статье используются только дискретные сигналы, поэтому эта тема кратко рассмотрена.

Корреляция и ортогональность функций — ключевые понятия, лежащие в основе ДПФ. Именно эти свойства позволяют разложить сложный сигнал на отдельные частотные составляющие.

Зависимость корреляции от сдвига фазы — на примерах показано, как изменение фазы влияет на результат скалярного произведения и почему это важно для анализа сигналов.

Формула ДПФ — финальный этап, где все изученные понятия сводятся к классической формуле дискретного преобразования Фурье.

Читать далее

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

Как мы автоматизировали отдел продаж в Bitrix24 с помощью ИИ

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

Привет! Я Влад Вандер, контент-маркетолог в Velmi. Ребята из команды рассказали мне, как автоматизировали отдел продаж и научили ИИ-бота квалифицировать лидов в Битриксе. В этой статье расскажу про это: от архитектуры до граблей, на которые пришлось наступить.

Читать кейс →

Жесты вместо горячих клавиш: подключаем ИИ к веб-камере

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

Наткнулся на старую веб-камеру, которая валялась без дела. Дешевый вариант с посредственным качеством. С такой камерой не стать звездой онлифанс. Но выкидывать жалко. Пришла в голову мысль — почему не соорудить управление жестами для компьютера?

Полноценное управление компьютером, как в фильмах с Томом Крузом, пока остаётся фантастикой: руки затекают, случайные движения превращаются в случайные команды. А вот привязать к жестам пару действий — выключить звук, свернуть окна, прокрутить ленту — реально и за один вечер. Понадобится старая веб-камера, Python и готовые модели Google. В статье — пошаговая сборка, разбор кода и инструкция, как обучить модель реагировать на жесты.

Читать далее

Вебхуки оплаты ЮKassa, IP-check, event log, idempotency и аварийный capture

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

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

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

В одном из проектов этот узел был собран так, первый платеж создается с capture=False, входящий webhook проверяется по IP, каждое событие сначала пишется в журнал, потом маршрутизируется в обработчик, capture подтверждается стабильным idempotence key, успешный платеж валидируется по сумме, валюте и metadata, а на случай расхождения остается отдельный ручной confirm, который умеет дочитать фактический статус из ЮKassa и синхронизировать локальную базу.

То есть задача тут не просто принять webhook, а построить платежный контур, которому можно верить.

Читать далее

Как перестать сливать ключи клиентов в ChatGPT: пишем умный буфер обмена для n8n и Python

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

Каждый интегратор сегодня дебажит код и JSON-воркфлоу через нейросети. И каждый хоть раз ловил холодный пот, понимая, что только что скормил в ChatGPT боевой токен от базы данных клиента или API-ключ продакшена.

В этой статье я покажу, как навсегда закрыть проблему утечки данных (NDA) при работе со стеком n8n и Python. Мы напишем фоновый демон, который на лету перехватывает буфер обмена Mac/Linux, вырезает все секреты, а когда ИИ возвращает исправленный код — автоматически подставляет реальные ключи обратно из локального сейфа. Итог: 100% безопасность коммерческой тайны, сохранение типов данных для n8n и ноль рутины.

Читать далее

Питон по Пассову: как NLP помог сделать Python понятным гуманитариям

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

О том, почему вводный курс Python для гуманитариев лучше начинать не с калькуляторов и абстрактных циклов, а с текста, частотности и осмысленных исследовательских задач.

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

Читать далее

Контекстный менеджер Python: пишем свой with и управляем ресурсами через ООП

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

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

Чтобы не писать громоздкие и плохо читаемые конструкции try…finally, в Python используется оператор with. Однако многие разработчики применяют его исключительно как встроенный инструмент для функции open(), упуская огромный архитектурный потенциал этой конструкции.

Читать далее

Локальный инструмент для поиска закупок ЕИС по 44-ФЗ и 223-ФЗ: ключевые слова, фильтры и выгрузка в Excel

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

Смотрю на этот текст и понимаю, что все пользуются ИИ, просто кто-то это хорошо скрывает.

Сейчас всё больше рабочих задач имеет смысл не просматривать вручную, а сначала прогонять через ИИ. Закупки — хороший пример такой задачи.

Проблема не только в том, чтобы открыть сайт ЕИС и вбить пару фильтров. Проблема в том, что нужно быстро понять: подходит закупка или нет, относится ли она к нужной теме, есть ли там нужные работы, стоит ли тратить время на документацию.

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

ИИ с такой первичной сортировкой может помочь. Но для этого ему нужно дать нормальные данные: таблицу, где есть номер закупки, заказчик, регион, наименование, цена, сроки, ОКПД2, ссылка и дополнительные поля.

Мне был нужен не просто “поиск на сайте”, а программа, которая создаёт Excel для последующей загрузки в ИИ и ручного анализа.

Так появилась идея сделать локальную программу, которая:

Читать далее
1
23 ...