Обновить
801.86

Python *

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

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

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

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

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

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

Новости

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

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

Читать далее

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

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

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

Читать далее

Хватит парсить Excel вручную: я написал библиотеку, которая сделает это за вас

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

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

Стало немного больно.

Поэтому я написал xlea…

Читать далее

Как я переписал Model Context Protocol на Go и получили 100K ops/sec (может и больше)

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

Привет!
Сегодня расскажу о GoMCP — production-grade альтернативе официальному MCP SDK от Anthropic. Спойлер: получилось в 10 раз быстрее, с multi-tenancy и enterprise-фичами из коробки.

100K+ tool calls/sec (vs ~10K у Python SDK)

Security hardening: input validation, audit logging, rate limiting

Multi-tenancy: изоляция namespace + квоты

3 адаптера: stdio (MCP v1), gRPC, HTTP REST

213 тестов, 430+ Full Ralph итераций

Читать далее

Как я создал свой сканер и пришёл к выплатам на багбаунти

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

Привет, Хабр! Сегодня хочу поделиться историей о том, как желание автоматизировать рутинную работу привело меня к созданию собственного инструмента FullMute и, как следствие, к первым серьезным выплатам на платформах bug bounty.

Как многие начинающие исследователи, я начал с хаотичного ручного поиска уязвимостей: проверял заголовки, искал известные пути к админкам, пытался угадать версии CMS. Это было неэффективно, медленно и сильно зависело от везения. Мне нужен был «компас», который бы проводил первоначальную разведку за меня и давал четкие цели для атаки. Так родилась идея FullMute.

Читать далее

LLM — 3 «семёрки» против SOTA, строим «градиентный бустинг» из SLM моделей

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

Превращаем LLM в CatBoost: как ансамбль из маленьких моделей (7B) пытается побить Gemini 3 flash

Почему не классическое MOE?

Я проанализировал свои промпты за последние два месяца и заметил паттерн: современные задачи к LLM стали мульти-итентными . Я прошу в одном сообщении: "Возьми данные X, примени логику Y, напиши код Z и оформи в JSON". Архитектура MoE в таких случаях плывет (если мы говорим о single-turn конечно). Single-pass модели часто не справляются, так как не могут реверснуть свой ответ и перепроверить себя перед ответом. К тому же роутер может отдать запрос не тому "эксперту", может неправильно чанковать (условно), в целом мы это и наблюдаем в gemini 3. Текущая предложенная архитектура бустинга решает эту проблему через последовательную ответственность. Первая модель (черновик) пытается сделать всё сразу (и ошибается), вторая (Критик) проверяет выполнение условий постфактум, третья (фиксер) работает с тз крит��ка и исправляет ответ. Такой цикл может длиться от 2 до множества операций, что может значительно экономить ресурсы и улучшать качество ответа (изначальный тезис). При этом даже SOTA-модели пытаются решить всё в один проход, и именно поэтому они «плывут» на сложных мульти-интентных задачах. Текущий подход - итеративное улучшение ответа между разными моделями. Но, пожалуйста, держите в голове что это не классический бустинг и к тому же этап инференса, а не обучения.

Пару ремарок которые можно пропустить если вы и так знакомы с терминами и dl/ml и не интересуетесь архитектурой:

Читать далее

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

Большой бенчмарк: ROCm vs Vulkan в LM Studio 0.4 и добавление параллельных запросов

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

27 января вышла LM Studio версии 0.4.0 и это обновление принесло долгожданную функцию параллельной обработки запросов через continuous batching. Это критически важное обновление для production-использования локальных LLM, которое обещает значительное увеличение пропускной способности. Теперь можно не просто "крутить модельку для себя", а разворачивать реальные multi-user сервисы.

Но как это работает на практике? Я провел комплексное исследование на своем домашнем ПК, сравнив производительность ROCm и Vulkan, а также влияние количества потоков на пропускную способность (TPS).

Спойлер: Разница между ROCm и Vulkan оказалась шокирующей — до 2 раз в пользу ROCm, а правильная настройка потоков дает +50% бесплатной производительности.

Читать далее

Аннотации в Python: модуль typing

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

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

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

Сегодня я для себя открыл: Project Loom

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

"Loom" означает "ткацкий станок" - так назывался проект по добавлению асинхронности в джаву. Тяжёлые системные потоки заменили легковесными виртуальными потоками. Потоки и нити в английском называются одинаково - thread - отсюда название.

Проект успешно внедрили пару лет назад, и я, к сожалению, это полностью пропустил. Основная причина, конечно - что я в принципе не ожидал от джавы никаких прорывов (и оказался на 100% неправ!) Ну и, как бэкенд-разработчик на питоне, я не очень-то слежу за развитием JVM-языков.

Но исправляюсь: Project Loom - это блестящая идея. Учитывая, что его внедрили совместимым образом, и почти не было ломающих изменений. Я считаю, это оптимальная реализация асинхронности для высокоуровневого серверного языка.

Уже почти все использующие JVM языки переехали на новую версию JVM, и, таким образом, на проект Loom: деваться им некуда. Так что, есть надежда, что это изменение откроет новую главу для некоторых из них. Есть также предположение, как оно может повлиять на скриптовые языки, такие как питон. Гипотеза только.

Также, вы узнаете, почему Гвидо ван Россум не ошибся, когда добавлял async/await в питон, а Мацумото — создатель Ruby — тоже угадал, когда, наоборот, отказался от async/await.

Читать далее

Наглядная математика с Python и Minecraft

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

Введение

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

Такие разделы как аналитическая и дифференциальная геометрия, теория чисел, математическая логика, линейная алгебра и т.д., известны малому кругу людей.

Статистика выбора технических направлений

Согласно статистическим данным выбора детьми кружков для дополнительного занятия, мы видим, что стабильно из года в года всего 5 - 9 % процентов детей от общего числа, «выбирают» так называемые «научно-технические» кружки. К ним относят математические и физические кружки, робототехнику, программирование, радиотехнику, биологические и медицинские кружки. Но даже выбрав направление нет гарантий, что ребёнок закончит предназначенный для него курс. Почти 60% детей, которые пришли на кружки покидают их, не справившись со сложностью подаваемого материала.

         Согласно социологическим опросам (2023 - 2025 годов) видно, что преобладают люди от 35 лет и старше, которые переучиваются или хотят пойти учиться по техническим направлениям, чтобы сменить профессию. Получается, что только с возрастом человек осознаёт значимость «научно-технических» направлений. Но обучать взрослого человека не тоже самое, что обучать ребёнка 9-12 лет.

Причины низкой популярности

         У каждого поколения должен быть свой подход в обучении. Почему же так непопулярно «научно-техническое» направление среди детей?

Читать далее

contextvars: почему thread-local сломался в asyncio и как это починили

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

В мире потоков всё было просто: threading.local() даёт каждому потоку свои данные. Request ID, текущий пользователь, database connection — положил в thread-local, достал когда нужно. FastAPI, Flask, Django — все так делали.

Потом пришёл asyncio, и эта модель сломалась. В одном потоке выполняются тысячи корутин, и thread-local у них общий. Положил request ID в одной корутине — прочитал чужой в другой. contextvars, появившийся в Python 3.7, решает эту проблему, но механика его работы не очевидна.

Разберём, почему thread-local не работает в async, как устроены contextvars, и какие паттерны использовать.

Читать далее

Скрытая деградация продакшена: когда система работает, но уже больна

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

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

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

Читать далее

Как AI убъет вашу базу: безопасность вайбкодинга в 2026

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

Не прошло и дня, как я писал про«AI‑диспетчера» — генерируешь, проверяешь, мержишь. Выглядит замечательно. Но ни слова про секурити. А между тем, произошло достаточно инцидентов, чтобы понять: модель рабочая, но только если ты действительно проверяешь, а не делаешь вид.

А если не проверяешь? Replit удаляет базу данных, Claude Code становится инструментом киберпреступников, а твой стартап оказывается взломан за 16 минут.

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

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

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