Обновить
813.45

Python *

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

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

SQL-запросы, которые убивают ваш прод: учимся ловить и лечить Deadlocks

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

Разбираемся с дедлоками в PostgreSQL: от причин возникновения на разных уровнях изоляции до методов лечения. Внутри — шпаргалка по pg_stat_activity и pg_locks для поиска блокирующих запросов, 4 золотых правила написания транзакций и готовый инструмент на Python для автоматического мониторинга базы. Минимум теории, максимум SQL-запросов, проверенных на реальном проде.

Читать далее

Новости

Ваша LLM стримит в никуда: разбираемся, как работать с дисконнектами в FastAPI

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

Что делает ваше FastAPI-приложение, когда клиент неожиданно закрывает соединение? По умолчанию — ничего. Если сервису важно экономить ресурсы (например, при работе с LLM), дисконнекты приходится обрабатывать явно, иначе GPU продолжит генерировать токены в пустоту.

В FastAPI есть встроенные механизмы отмены обработки запроса при дисконнекте клиента. Однако просто включить их недостаточно: нужно подготовить ваш код к этому. Иначе возможны проблемы: зависшие транзакции и сломанный пул соединений с БД.

Читать далее

Персональный аудиогид по картинам: от запроса до аудио (LLM + TTS)

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

Персональный Telegram-аудиогид, который по запросу строит рассказ о картине и озвучивает его. В статье я покажу, как устроен этот путь от запроса до готового аудио.

Читать далее

Слепое пятно аудио-форензики: реализуем скрытый канал передачи данных в метаданных MP3 на Python

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

Считаете, что спрятать файл внутри песни, не испортив звук, невозможно? Мы тоже так думали, пока не разобрали спецификацию ID3v2 до винтика.

Оказывается, внутри каждого MP3-файла есть «слепая зона», куда можно положить ключи шифрования, документы или исходный код, и при этом:

MD5 аудиопотока не изменится.

Спектрограмма будет идеально чистой.

Файл проиграется в любом плеере.

Мы написали ChameleonLab: MP3 Stego на Python, чтобы доказать это. Внутри — полный разбор архитектуры, код и сценарии использования для защиты авторских прав.

Читать далее

Как решить TSP для 10 000 точек БЕЗ прыжков: метод «Динамического Шампура» с инерцией

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

Как обойти 10 000 точек без лишних «холостых» прыжков и геометрической путаницы? Традиционные жадные алгоритмы пасуют перед плотными структурами, заставляя инструменты ЧПУ и роботов метаться по всей рабочей зоне. В этой статье я представляю «Алгоритм Динамического Шампура» (Shampur‑Scraper Method) — иерархический подход к задаче коммивояжера, сочетающий инерционное планирование магистралей и динамическую зачистку зон ответственности. Разберем логику «Скребка», эффект «напряжения тупиков» и посмотрим, как этот метод играючи справляется с самопересекающимися трилистниками и плотными спиралями за доли секунды.

Читать далее

Обзор Open Source моделей для задачи TTS

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

Задача Text‑to‑Speech (TTS) она же задача синтеза речи — заключается в том, чтобы озвучить заранее подготовленный текст голосом спикера. Данная задача является одной из важных в системах взаимодействия человека и компьютера. Конечно, такая задача генерации речи встречается гораздо реже, чем, например, задача генерации или обработки текста, тем не менее, сферы ее применения со временем только увеличиваются в своих масштабах и становится все более востребованной.

Привет, Хабр, меня зовут Музафаров Данил, я работаю DS инженером в компании Raft и сегодня мы рассмотрим существующие Open Source модели и репозитории, которые решают задачи TTS для русского языка.

Читать далее

CPython — Сборка мусора изнутри, ч.4

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

Пришло время поговорить о главной функции сборщика мусора в CPython. В предыдущих частях (1, 2, 3) мы говорили о поколениях, инкрементальной и полной сборке мусора — но все они в итоге вызывают главную функцию, которая и реализует основной алгоритм циклического сборщика мусора — находит и разрывает циклы у объектов, которые уже вышли из использования.

В первой статье на тему устройства сборщика мусора я написал, что история началась, когда я попробовал исправить ошибку в CPython. И вот, в четвёртой статье, я наконец‑то добрался до функции, в которой была ошибка.

Если вам интересно, давайте посмотрим, как работает «сердце» сборщика мусора.

Читать далее

20 лет объяснял программистам, что делать. А теперь попробовал сам. Часть вторая

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

Как быстро пролетели шесть месяцев! Продолжаю рассказывать о том, как решил сделать пет-проект: НормЦРМ. Сам я ремесленник-одиночка и пользовался ограниченным набором инструментов для ведения дел: Google Таблицы, да Windows-заметки. Решил все эти данные свести воедино в рамках собственной црмки.

Я не разработчик, а проектировщик интерфейсов (UX/UI-дизайнер). Опыта в программировании совсем немного. Поэтому пет-проект был мне особенно интересен. Я уже двадцать лет готовлю проектную документацию для других — а в этот раз для себя.

Сейчас расскажу, что сделал по проекту за последние полгода, как мне в этом помогли ChatGPT и Codex, как изменился процесс работы и почему это поначалу было скучно и грустно — а теперь с каждым днём жизни проекта всё интереснее и веселее.

Читать далее

Q-scribe: сервис транскрибации для двоих с нулевой подпиской, разработанный за один вечер

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

Как за один вечер собрать собственную систему транскрибации, если вам надоело платить за подписки и сливать записи конфиденциальных встреч в «облачные мозги»?

В этой статье разбираем Q-scribe — прагматичный open-source конвейер для маленькой команды. В основе: OpenAI Whisper для распознавания речи, Streamlit для быстрого интерфейса и Tailscale для безопасного удаленного доступа к вашей видеокарте RTX 4080 без «выхода» в открытый интернет.

Минимум кода, максимум контроля и нулевые затраты на облака. Идеально для тех, кому нужно быстро превращать видео встреч в текст, сохраняя данные на своем железе.

Читать далее

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

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

Громкий и пафосный заголовок, согласен. Но в свой проект нужно верить, и я действительно верю и считаю, что приложение, которое я разрабатываю может «стрельнуть» - а именно вывести налоговое консультирование и сопровождение налоговых проверок на принципиально другой уровень.

Моя цель, дать бизнесу инструмент, который:

Читать далее

С Django мы все дальше от Бога

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

Я долго работал в коммерческом проекте в роли backend-разработчика с всемирно известным фреймворком Django, а также с его альтер эго - Django Rest Framework. Всегда кажется, что работать с чем-то многозвёздочном на GitHub - это кататься сыром в масле. На входе имеем: отличную документацию, отзывчивое сообщество, множество решений одной и той же проблемы, так как все уже (пред)решено...

Читать далее

Давай немного потроттлим

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

Пока вы апскейлите видео или гоняете LLM, ваш ноутбук может тихо умирать. Ядро GPU показывает комфортные 65°C, а видеопамять в это время жарится на 105°C, ведь заводская логика следит только за ядром. Рассказываю, как я написал утилиту VRAM Guard на Python, чтобы спасти "золотое" железо от деградации с помощью метода импульсного троттлинга. Вот как он работает...

Спасти видеопамять

Рекурсия в Python: от матрешки до стека вызовов. Полный гид для новичков

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

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

Читать далее

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

«Ветер истории» в «Двенадцати». Найдет ли его Python?

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

C помощью Python опроверг идею о ветре как о символе революции в поэме Александра Блока "Двенадцать". Поэма начинается со слов про ветер, написана про революцию и где-то внутри строк прячет загадочного Христа.

Читать далее

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

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

Как не потеряться в сотнях графиков и найти реальные рычаги влияния на бизнес? В статье представлен подробный разбор Дерева метрик на примере FoodTech-сервиса (доставки еды). Мы уходим от простого мониторинга цифр к системной декомпозиции North Star Metric.

Читать далее

Последовательный анализ в AB-тестировании: ускоряем принятие решений с помощью mSPRT

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

Как часто бизнес задает вопрос о результатах A/B-теста уже на второй день после запуска? В классической статистике основной ответ: необходимо ждать набора фиксированной выборки, иначе риск ложноположительного результата становится неконтролируемым. Однако современные подходы позволяют не только проводить мониторинг данных без риска математической ошибки, но и останавливать эксперименты значительно раньше срока. В основе такой гибкости лежит методология mSPRT, которая превращает эксперимент из закрытого процесса в прозрачный поток данных.

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

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

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

Читать далее

MITM-атаки в телеграмм ботах и почему этот вектор самый опасный

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

Многие Telegram-боты, особенно связанные с криптовалютами, используют HTTP-запросы для взаимодействия с внешними API. В этой статье мы разберем, как на этом можно построить MITM-атаку для подмены кошельков, чеков и перехвата данных, почему это работает, и какие меры защиты стоит применять разработчикам и пользователям. Рассмотрим реализацию на Python с использованием mitmproxy.

Telegram-боты стали неотъемлемой частью экосистемы — от новостных каналов до торговых платформ. Однако архитектура многих ботов, особенно тех, что используют популярные библиотеки вроде aiogram или python-telegram-bot, часто подразумевает выполнение внешних HTTP-запросов для обработки команд (например, для проверки баланса или генерации платежного адреса).

Если такой бот использует сторонний HTTP/HTTPS-прокси, все его запросы и ответы проходят через промежуточный сервер. Это открывает возможность для атаки «человек посередине» (MITM), когда злоумышленник может не только перехватывать, но и модифицировать трафик в реальном времени. На практике это может привести к подмене криптокошельков, платежных реквизитов или токенов доступа.

В статье рассматривается принцип работы такой атаки и ее техническая реализация в образовательных целях — чтобы разработчики и администраторы понимали риски и могли их минимизировать.

Читать далее

Интроспекция в Python на реальных примерах: как код узнает сам о себе

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

В Python код является данными. Функции, классы, модули и даже стек вызовов можно исследовать во время выполнения программы. Этот механизм называется интроспекцией.

Интроспекция активно используется во фреймворках, логировании, тестах, dependency injection контейнерах и отладчиках. При этом многие разработчики пользуются ей неосознанно.

Разберем, что это такое, зачем нужно и как применяется на практике.

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

Cложные запросы через паттерн Repository. Large Repository

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

После негодования по поводу реализации паттерна Repository в обучающих материалах, а именно скудность функционала, я решил, что нужно расширяться и это привело к тому, что появился ORM Query Builder, о котором подробно расскажет вам эта статья.

Читать далее

Разбор threading vs multiprocessing vs asyncio в Python

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

При работе с Python да и другими языками программирования часто возникает необходимость ускорения выполнения кода, масштабирования обработки данных или работы с большим количеством сетевых запросов. Именно в Python для решения этих задач существуют три базовых метода. Это: threading, multiprocessing и asyncio. На первый взгляд – механизмы схожие. Но при детальном разборе ясно, что они решают принципиально разные задачи, опираются на разные модели исполнения и обладают своими ограничениями. В статье расскажу об особенностях каждого метода – будет интересно и познавательно.

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

Вклад авторов