Обновить
512K+

Python *

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

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

Переиспользуем Python-функции между проектами — без переписывания и передеплоя

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

У меня есть функция. Крошечная - десяток строк, которые приводят суммы из платёжек к нормальному виду: "1 234,50 ₽" превращают в 1234.5. Ничего гениального. Но я писал её, кажется, раз пять. В парсере банковских выписок, в импортёре заказов, в отчёте для бухгалтерии, в скрипте, который потом выкинул, и ещё где-то, о чём уже забыл.

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

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

Читать далее

Оповещения о БПЛА через Яндекс Станцию

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

Задача звучала как на полчаса: пусть Яндекс.Станция сама произносит вслух сообщения из Telegram-канала, без обращения к Алисе. По факту — несколько вечеров, потому что Яндекс не даёт из коробки простой возможности “скажи произвольный текст по внешнему событию”. Прошёл два тупика (виртуальные устройства и локальный TTS) и собрал рабочий пайплайн на Home Assistant + webhook. Рассказываю весь путь, включая то, что не сработало — тупики тут поучительнее итога.

Читать далее

IoT системы не безопасны и разрознены

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

Ни для кого не секрет, что IoT‑устройства собирают огромное количество информации, в том числе личные данные пользователей и фиксируют их местоположение. А также они жёстко привязаны к конкретному производителю, т.е. пользователь зависим от конкретного производителя или бренда. Гаджеты совместимы с парой основных систем, но кроссплатформенность отсутствует. Устройства разных производителей часто не могут взаимодействовать друг с другом без дополнительных шлюзов. Универсального протокола связи устройств тоже нет. Из стандартов: Zigbee, Matter, Z‑Wave, Bluetooth, Wi-Fi — как следствие умные устройства плохо дружат между собой.

Читать далее

Поддерживая pyfenn: первые впечатления

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

Наверное, как и многие обитатели Хабра, весной я попал под волну сокращений. Погрустив над текущей ситуацией на рынке, решил попробовать себя в open‑source. В конце концов, есть запас денег, отсутствуют (тьфу‑тьфу‑тьфу) ипотеки/кредиты, да и всегда хотелось почувствовать себя частью чего‑то большего, что ли. Спустя пару месяцев у меня получилось стать мейнтейнером в небольшой ML‑библиотеке, о чём и хочу сегодня рассказать.

Читать далее

Как добавить генерацию изображений в ваш продукт без DevOps-настроек: пошаговый гайд

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

Уверен, у многих есть хотя бы один пет-проект, перспективный B2B SaaS, CRM, другими словами — сервис, который когда-нибудь обязательно выстрелит. В процессе разработки у многих стильных, модных и молодежных проектов рано или поздно появляется вопрос: «А что если добавить генерацию изображений или видео?». На первый взгляд все выглядит просто: берем Comfy UI, собираем workflow, выбираем модели — и готово. Локально все действительно можно собрать за один вечер.

Проблемы начинаются ровно в тот момент, когда решением пользуетесь не только вы. Первый пользователь ждет 20-30 секунд, второй стоит в очереди, остальные уже получили свои тайм-ауты, а вы внезапно ловите себя на том, что читаете документацию про Kubernetes и настраиваете балансировку запросов, вместо того, чтобы сконцентрироваться на развитии продукта... И вот тут уже развертывание Comfy UI кажется не настолько простой задачей как в начале.

Если вам знакома эта ситуация или вы только планируете добавить генеративный ИИ в свое приложение, эта статья для вас. Покажу, как превратить Comfy UI workflow в API, которым можно пользоваться из любого приложения, не поднимая инфраструктуру и не привлекая внимания санитаров.

Добавить асинхронную генерацию!

1002 хендоффа за 60 дней: как я собрал шину координации для 12 Claude-агентов

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

Шестьдесят дней назад я держал всю координацию своего SaaS в голове. Двенадцать вкладок Claude Code, в каждой своя роль: тимлид, аналитик, тестировщик, медиабайер. Я переключался между ними и был единственным местом, где эти вкладки узнавали друг о друге.

Сейчас в очереди 1002 задачи, из них 954 закрыты. Медиана от постановки до закрытия составляет 47 минут. Вся координация умещается в 600 строк Python на стандартной библиотеке и один markdown-файл.

Статья про то, как устроена координация. Не про то, что я попробовал модный инструмент, и без советов «промптите лучше».Три подхода, которые не сработали. Один, который сработал. Отказ, стоивший мне двух рабочих окон. И метрики, которые я не приукрашивал.

Кода в открытом доступе нет, это внутренний инструмент, а не библиотека. Но механизмы я показываю снипетами, их хватит, чтобы собрать своё.

Читать далее

Запуск и оптимизация локальной LLM с llama.cpp

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

В статье разберём фреймворк llama.cpp для запуска локальной LLM на выделенном облачном GPU, а также практический подход к оптимизации производительности. Мы поднимем REST API, выполним запрос, проведем бенчмаркинг и подберем оптимальные параметры под конкретную видеокарту.

Читать далее

Когда конкуренты демпингуют: как нейросети помогают ПМ-у сокращать Time-to-Market

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

Вообще, я — ПМ с опытом в коде. А еще мы с мужем делаем сами ремонт в новой квартире, и в процессе я случайно обнаружила «золотую жилу» неэффективности.

Искала металл и столкнулась с тем, что у большинства компаний, занимающихся прокатом, сайты застряли в начале 2000-х. Каталоги неактуальны: то, что лежит в корзине, «не оформить», заявки висят вечно, на звонки отвечают через раз. А если ты не покупаешь металл тоннами, то для них ты вообще не клиент.

Короче, с B2B-продажами в этой нише всё, мягко говоря, не очень.

В этот момент во мне проснулся ПМ, который привык оптимизировать процессы, и инженер, которому стало обидно за плохой UX. Я поняла: либо я сейчас найду металл, либо я напишу инструмент, который поможет таким компаниям перестать терять заказы.

В общем, вот во что это вылилось...

Читать далее

Один комментарий на Хабре — и ещё один пакет для Django Admin

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

Недавно я опубликовал на Хабре статью о небольшом пакете django-scroll-to-top, который добавляет кнопку «Наверх» в проекты на Django. Сам пакет решает довольно локальную задачу, но обсуждение под статьёй оказалось интереснее, чем я ожидал.

В комментариях возник вполне закономерный вопрос: насколько вообще подобным интерфейсным дополнениям место в стандартной Django Admin? Ведь каждое установленное приложение добавляет свои пункты в боковое меню, и со временем административная панель действительно может начать выглядеть перегруженной.

Один из комментариев заставил меня посмотреть на эту проблему немного под другим углом. В результате вместо долгого спора появился ещё один небольшой open-source-пакет — теперь уже для сворачивания групп приложений в боковой панели Django Admin.

Читать далее

Обошёл блокировки в интернет магазине, но чуть не сломал корзину. Пишем автономный мониторинг на Playwright и n8n

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

Наш магазин работает на InSales. Как и у большинства российских магазинов на этой платформе, часть системных JS и CSS файлов раздавалась через static.insales-cdn.com.

В какой-то момент этот CDN попал под блокировки на уровне РКН у части российских провайдеров. Сайт начал тормозить: страницы грузились с задержкой, часть фото и иконок просто не появлялась. Саппорт платформы на обращения отвечал в духе "это блокировки, мы не можем повлиять" - свяжитесь с оператором связи (не понятно, как это могло помочь), и на этом всё. Ждать, пока провайдеры и РКН договорятся между собой - не вариант, когда у тебя действующий интернет-магазин и живые заказы каждый день.

Решение напрашивалось: перестать зависеть от чужого CDN и раздавать критичные файлы через стороннюю, более надёжную инфраструктуру. Я перевёл загрузку системных библиотек на Yandex Cloud Storage/CDN - загрузка стала заметно быстрее и стабильнее, фото и иконки снова грузились без проблем.

Читать далее

Своя GPT-like LLM по WH40K с нуля. Часть 1: токенизируем Империум

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

Привет, Хабр! Меня зовут Владимир, и я давно хотел погрузиться во вселенную Warhammer40K. Для погружение во вселенную я решил обучить LLM на лоре Warhammer40K. И чтобы было интереснее, код этой LLM я решил написать сам, на голом pytorch (ну почти).

Данная статья - первая в цикле статей по созданию и обучению GPT-like LLM с нуля. В них я постараюсь рассказать, как работают Decoder-only модели, как обучить небольшую LLM, сколько это заняло у меня времени.

Читать далее

Квантование ломает вызов инструментов не так, как показывает BFCL: проверил на MCP-серверах

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

Как на самом деле квантование ломает вызов инструментов? Собрал бенчмарк QuantMCP, протестировав модели на 4 ГБ VRAM не на синтетике, а на реальных схемах MCP-серверов. Главный инсайт: популярные бенчмарки вроде BFCL систематически врут - корреляция их оценок с реальным падением качества оказалась отрицательной (-0.755). На живых схемах модели ведут себя иначе: Llama-3.2-1B начинает возвращать саму JSON-схему вместо вызова или галлюцинирует имена инструментов, а Qwen3-0.6B выдумывает несуществующие таблицы в SQLite. Также показал, что сложность схемы не гарантирует большую деградацию, а выбор кванта «по таблицам» может привести к обратному эффекту.

Читать далее

Ваш бот всё ещё дёргает Telegram каждую секунду? Чиним архитектуру: вебхуки на FastAPI в контейнере

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

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

Long Polling — это первый способ. Бот в бесконечном цикле долбит getUpdates на серверы Telegram: «есть что‑нибудь? а сейчас? а сейчас?». Telegram, надо отдать ему должное, держит соединение открытым и отвечает не мгновенно, а когда появляются апдейты — поэтому polling и называется long. Но суть не меняется: инициатор — вы, соединение висит постоянно, и весь этот механизм живёт внутри одного вашего процесса.

Webhook — это почтальон. Вы один раз говорите Telegram: «вот мой HTTPS‑адрес, стучись сюда». Дальше при каждом новом сообщении Telegram сам делает POST‑запрос на ваш эндпоинт с JSON‑апдейтом внутри. Нет сообщений — нет запросов. Нет запросов — нет расхода ресурсов.

Для пет‑проекта на пять пользователей разницы никакой, поллинг даже удобнее — не нужен домен и сертификат. Но как только бот становится частью нагруженной системы, вебхуки выигрывают по всем фронтам: апдейт прилетает мгновенно, а не в конце очередного цикла опроса; входящий трафик — это обычные HTTP‑запросы, которые можно балансировать между несколькими инстансами; и главное — бот превращается в обычный веб‑сервис, к которому применим весь стандартный инструментарий: Nginx, healthcheck'и, метрики, горизонтальное масштабирование.

Читать далее

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

Как я разработал легковесный Guardrails для русского языка

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

В этой статье расскажу о том как я воплотил в реальность свою идею разработать легковесный prodaction guardrails. Расскажу что такое Guardrails, далее поделюсь основными компонентами lite-guardrails, его архитектурой, этапами разработки, настройкой observability, а также созданием документации по проекту.

🔥 Начинаем 🔥

Что будет, если доверить стандартизацию логов лингвисту

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

Логирование часто считают второстепенной задачей. Но когда сервисов становится десятки, оказывается, что качество логов влияет на разработку не меньше, чем качество кода.

Меня зовут Александра, и я ML-инженер в RUTUBE TECH. В этой статье расскажу, как мой лингвистический бекграунд помог создать единый стандарт логирования для всей платформы.

Читать далее

Параметризованные отчёты в CSV без таймаута

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

Эта идея появилась у меня давно.

Когда мы внедряли BI в крупном банке, я заметил одну вещь: больше всего внедрению радовались руководители. У них появлялись дашборды, графики, показатели, визуальная картина происходящего.

А вот люди, которые каждый день работали с данными, не всегда были в таком же восторге.

BI хорошо показывает, что что-то изменилось: появилась аномалия, просел показатель, выросло значение, изменилась динамика. Но после этого почти всегда возникает следующий вопрос: почему так произошло?

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

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

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

Для таких задач пользователи всё равно часто уходили в Excel: добавляли формулы, сверяли расчёты, сравнивали текущую выгрузку с предыдущей.

Так появилась первая версия программы: она формировала отчёты в Excel и хранила на сервере историю выгрузок.

Читать далее

Ленивые импорты в Python 3.15: как PEP 810 ускоряет старт приложений

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

На PyCon US 2026 Руководящий совет Python рассказал о новых возможностях Python 3.15. Среди них — явные ленивые импорты (PEP 810): модули теперь можно загружать не при старте программы, а только в момент первого обращения. Я решил разобраться, как это работает, и измерить производительность в PyCharm.

Читать далее

RAG для закупок: Qdrant и LlamaIndex в локальном контуре

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

Привет Хабр! Меня зовут Владимир, и недавно я решил изучить новую (для себя) технологию - LlamaIndex. А тут и задачка подвернулась - надоело копаться в Положении о закупках, поэтому понадобился RAG для ответов по ФЗ-44, ФЗ-223, ну и локальному положению.

В этой статье разберу, как создать простенький RAG, не выходящий из локального контура, на базе LlamaIndex + Qdrant, напишем к нему API и UI на Gradio. Поехали.

Читать далее

Как я решал задачу сортировки зашифрованных строк

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

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

Читать далее

Как быстро собрать полезный инструмент: транскрибатор видео с помощью вайб‑кодинга

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

После рабочих встреч часто остаются записи. В моем случае это записи Яндекс Телемоста.

Запись есть, но пользоваться ей не всегда удобно. Если нужно что‑то вспомнить, приходится открывать видео, перематывать, искать нужный кусок, переслушивать. Если нужно передать встречу другому человеку, одного видео обычно мало.

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

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

Идея была простая: загрузить видео встречи и получить транскрипт, протокол и DOCX, который можно отправить дальше.

Первую рабочую версию получилось собрать через Codex примерно за 30 минут.

Читать далее