Обновить
1024K+

Python *

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

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

Опыт разработки российской платформы виртуализации с нуля: libvirt, cgroups v2 и почему это никому не нужно

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

Виртуализация в России — тема горячая. VMware ушёл, Hyper‑V под вопросом, Proxmox — открытый, но не «суверенный». Я задался вопросом: а можно ли написать платформу управления KVM с нуля, с полным контролем ресурсов через cgroups v2, без единой строки GPL‑кода?

Спойлер: да. Встречайте Eskvisor — мой проект, переросший в зарегистрированную в Роспатенте программу для ЭВМ. Под капотом — архитектура, грабли с cgroups, и почему полностью суверенный проект был мертворожденным.

Читать далее

Новости

Моделирование распределений

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

Привет, Хаброжители! Мы открыли предзаказ на книгу «Думай как аналитик. Статистика и данные с примерами на Python. 3-е изд.», хотим немного рассказать вам о ней и поделиться интересным отрывком.

Читать далее

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

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

Полторы недели назад я выложил на 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 мин
Охват и читатели4.8K

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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

Читать далее

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

SOLID в Python без воды

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

Читать кейс →

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

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

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

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

Читать далее

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

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

Платежный код обычно выглядит ровным ровно до первого реального сбоя. Пока платежи идут по ожидаемому сценарию, кажется, что достаточно создать оплату, дождаться вебхука и обновить локальный статус. Но как только вебхук приходит повторно, приходит позже нужного, прилетает от не того 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.5K

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

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

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