ar
Feedback
About Python [ru]

About Python [ru]

الذهاب إلى القناة على Telegram

Пишем на Python, создаём нейросети и ИИ-агентов. Алгоритмы, задачи и вайбкодинг. Личный блог автора - @just_genych По вопросам рекламы или разработки: @g_abashkin

إظهار المزيد
6 502
المشتركون
-624 ساعات
-277 أيام
-10030 أيام
أرشيف المشاركات
Ну что, брат, попал я тут в историю. Надо было отсортировать строки в базе, да ещё и зашифрованные. Первая мысль, конечно, как у нормального человека — наверняка есть какой-нибудь стандартный крипто-лайфхак, все так делают. Ну, копнул поглубже... и понял, что облом. Никто тебе готовую таблетку не подсунул. Простого решения там не завезли. И главный сюрприз: искал я ответ совсем не в том месте, где надо было. Читать на Хабре 👉 About Python

Митап DataLens про BI и AI 23 июля обсудим реальные сценарии BI для крупных компаний. Встречаемся офлайн в Москве. 📊 В прогр
+4
Митап DataLens про BI и AI 23 июля обсудим реальные сценарии BI для крупных компаний. Встречаемся офлайн в Москве. 📊 В программе: • облачная аналитика, on-premises и гибридные архитектуры; • внедрение DataLens в закрытом контуре; • GenAI и AI-агенты для аналитики; • кейсы Lamoda, Skyeng и финансового сектора; • дискуссия о том, почему AI в BI не всегда даёт ожидаемый эффект. Для BI-лидов, архитекторов, CDO и владельцев BI-платформ. Регистрируйтесь на сайте Зарегистрироваться #реклама 16+ yandex.cloud О рекламодателе

6× быстрее бинарный поиск: от скомпилированного кода к механической симпатии Как выжать больше скорости из Python-кода, который считает? Первое, что приходит в голову — алгоритм покруче натянуть, накатить экстеншен на компилируемом языке или параллельность для нескольких ядер CPU раскочегарить. Но что, если и этого мало? Детали — тут: https://pythonspeed.com/articles/branchless-binary-search/ 👉 About Python

Аренда VPS/VDS-сервера. Виртуальные выделенные серверы в дата-центрах уровня Tier III — 7 готовых конфигураций от 200 ₽/мес.
Аренда VPS/VDS-сервера. Виртуальные выделенные серверы в дата-центрах уровня Tier III — 7 готовых конфигураций от 200 ₽/мес. Преимущества аренды: - Выделенные ресурсы без переплаты; - KVM-виртуализация; - Быстрые NVMe SSD; - Соответствие 152-ФЗ, PCI DSS; - Бесплатная защита от DDoS; - Управление через панель, API и Terraform; - Техподдержка 24/7. Запустите сервер за несколько минут! Попробовать #реклама 16+ selectel.ru О рекламодателе

😎 Полный каминг-аут экипажа 🔫 Чувак из Китая под ником «Blyat» решил, что в Танки надо рубиться по-взрослому. Зацени, что он собрал. Там реальная бригада: механик-водитель, заряжающий и наводчик. Все при деле 😨
#cyberpunk
👉 About Python

Хотите внедрить ИИ, но не знаете с чего начать? ГигаАкадемия запустила ИИ-менторинг — индивидуальную сессию с практикующим экспертом для собственников и бенефициаров. Никакой теории. Только вы, эксперт и ваша задача. Три часа фокуса на вашем запросе. Ментор разбирает процессы, данные и ограничения и помогает определить, где ИИ быстрее всего даст бизнес-эффект и повлияет на рост выручки. Вы уходите не с вдохновением, а с планом: — карта вашего ИИ-кейса: задача, эффект, риски — 3 приоритетных сценария — где ценность выше, а запуск проще — дорожная карта пилота на 2–6 недель Цель ментора — усилить вашу экспертизу: научить самостоятельно находить, оценивать и запускать ИИ-решения. ИИ уже готов работать на вас. А вы готовы взять его в партнёры? Оставьте заявку на сайте и получите консультацию. Узнать больше Номер реестровой записи: С502024004938. #реклама 16+ sberuniversity.ru О рекламодателе

Сборка Python-приложения в единый бинарник: избавляемся от зависимостей от системных библиотек с PyInstaller и staticx Каждый раз, когда нужно задеплоить Python-приложение не в контейнер, а просто скопировать один файл на сервер, всплывает проблема зависимостей от системных библиотек. PyInstaller собирает бинарник, но он всё равно тащит libc, libssl и другие .so-файлы. На старой Ubuntu или в Docker на scratch это приводит к ошибкам при запуске. Опытные разработчики часто забывают, что статическая сборка решает эту проблему радикально. Почему одного PyInstaller недостаточно PyInstaller с флагом --onefile упаковывает Python-интерпретатор и код в один файл, но он динамически линкует системные библиотеки. Проверка через ldd покажет кучу зависимостей. На машине с другой версией glibc или отсутствующей библиотекой (например, libcrypto) приложение упадёт. Это типичная ошибка: разработчик уверен, что бинарник самодостаточен, но на проде получает segfault. Решение: статическая линковка через staticx staticx переупаковывает полученный PyInstaller-бинарник, заменяя динамические зависимости на статические. Он встраивает musl libc и делает бинарник полностью независимым от системы. Для этого:
pyinstaller --onefile --name myapp main.py
pip install staticx
staticx dist/myapp dist/myapp_static
На выходе — бинарник, который запускается на любом Linux с ядром >= 2.6.28. Без Python, без pip, без системных библиотек. Типичные ошибки и trade-offs * Размер бинарника: 5-30 МБ вместо 5 МБ. Для большинства серверных задач это приемлемо, но для embedded может быть критично. * Проблемы с glibc-расширениями: staticx использует musl libc, поэтому старые C-расширения (например, NumPy, некоторые ORM) могут сломаться. Решение — собирать всё в Docker на alpine:latest с musl-dev. * Динамические ctypes: если в коде используются ctypes для загрузки .so, их нужно вручную добавить через --add-binary, иначе приложение упадёт с тишиной. * Дебаг: ошибки сложнее диагностировать. Помогает флаг --debug в PyInstaller и strace на скомпилированном бинарнике. Production-пример: CI/CD деплой в корпоративной сети Представьте: вы разворачиваете сервис на серверах, где IT-отдел одобряет установку только через внутренний репозиторий, а на копирование одного файла — без ограничений. Вы запускаете в CI:
pyinstaller --onefile --name service main.py
staticx dist/service dist/service_static
Копируете service_static на сервер — и он работает сразу, без Python, зависимостей и permission battles. Это особенно ценно для edge-устройств и минималистичных Docker-образов на scratch. Вывод: staticx превращает PyInstaller-бинарник в truly portable решение, но требует учёта C-расширений и динамических загрузок — без этого сборка будет работать нестабильно на проде.

Как прокачать инструменты для кодинг-агента Чувак из блога mathspp.com снова в деле — гнет свою серию про написание кодинг-агента с нуля. В этот раз речь пойдет о том, как запилить для него реально годные инструменты. Все подробности — по ссылке: https://mathspp.com/blog/write-a-coding-agent-from-first-principles-better-tools 👉 About Python

Кастомный семафор с приоритетами и TTL для асинхронных in-memory кэшей Стандартный asyncio.Semaphore не учитывает приоритеты задач и не имеет time‑to‑live. В production‑кэшах это приводит к тому, что чтение с высоким приоритетом блокируется фоновой записью, а зависшая задача может навсегда захватить ресурс. Решение — семафор на PriorityQueue с TTL. Архитектура на heapq и TTL Внутри используется heapq — вставка и извлечение за O(log n). Каждая задача помещается в очередь с приоритетом, а TTL отсчитывается от момента постановки. Если время истекло — выбрасывается TimeoutError. Освобождается слот — подхватывается самая приоритетная задача. Context manager гарантирует вызов release. Типичные грабли Если TTL истёк, будущее (Future) нужно явно вычищать из очереди, иначе оно остаётся мёртвым грузом и накапливает память. Также приоритеты инвертированы: heapq считает минимальное значение наивысшим приоритетом. Поэтому в acquire передаётся отрицательное число, если нужно обратное поведение. Пример из production В in‑memory кэше расставлены приоритеты: запись от пользователя — 0, фоновое обновление — 5, чтение — 10. Для чтения установлен короткий TTL — при зависании можно отдать stale данные вместо полной блокировки. Это trade‑off между свежестью и доступностью.
@asynccontextmanager
async def acquire(self, priority: int, ttl: float):
    future = self._loop.create_future()
    heapq.heappush(self._queue, (priority, future))
    try:
        result = await asyncio.wait_for(future, timeout=ttl)
        yield result
    except asyncio.TimeoutError:
        self._cleanup_expired()
        raise
    finally: ...  # release and pop next
Недостаток и решение Если очередь большая и приоритеты постоянно высокие, низкоприоритетные задачи могут умирать по TTL повторно. В таких сценариев стоит внедрить dynamic priority aging — со временем повышать приоритет ожидающей задачи. Но для большинства кэшей описанного подхода достаточно. Вывод: Кастомный семафор с приоритетами и TTL решает конкретные проблемы конкурентного доступа в асинхронных кэшах, но требует аккуратной очистки и осознания trade‑offs при голодании низкого приоритета.

django-filter — 26.1 На свет появилась свежая версия django-filter 26.1. Если кратко — это такая штука для Django, с помощью которой ты легко настраиваешь фильтрацию для querysets своих моделей. Без лишней магии. Забрать можно тут: https://pypi.python.org/pypi/django-filter/ 👉 About Python

💀 — 2026-й: железяки полезут в медицину, космос и вообще везде, где мы тупим. 😂 — А в реальности 2026-го: ... 👉 About Python

Директ возвращает 10% бюджета за рекламу в мессенджерах Запускайте кампании в Telegram и МАКС с 1 июня по 31 августа — получа
Директ возвращает 10% бюджета за рекламу в мессенджерах Запускайте кампании в Telegram и МАКС с 1 июня по 31 августа — получайте кешбэк 10%. Его можно потратить на новые кампании. 💰 Как получить кешбэк: — Заполните форму: укажите логин в Директе и что продвигаете (сайт или канал); — Запустите рекламу в МАКС, Telegram или сразу на двух площадках с оплатой за клики; — В сентябре начислим кешбэк. Получить предложение #реклама yandex.ru О рекламодателе

Память под контролем: __slots__, pympler и гибридные модели Про __slots__ пишут часто, но в реальных проектах с сотнями классов можно нарваться. Не всё так радужно. Оверхед словаря и мифы По умолчанию каждый экземпляр держит атрибуты в __dict__. Словарь с хеш-таблицей для миллионов объектов - это 50-70% оверхеда. __slots__ фиксирует список атрибутов на уровне класса и убирает __dict__ (если не добавить вручную). Экономия до 40-60%. Но в больших кодовых базах всплывают грабли: - наследование: у родителя нет __slots__, у наследника есть - __dict__ все равно создается, выигрыша нет - жесткость: нельзя динамически добавить атрибут - ломаются ORM, сериализаторы, половина библиотек - дебаг: без __dict__ не увидишь текущие поля экземпляра в отладчике, приходится лезть в класс Профилирование через pympler Вместо гаданий - профилирование через pympler. Пример:
from pympler import asizeof

class WithSlots:
    __slots__ = ('x', 'y')
    def __init__(self):
        self.x = 10
        self.y = 20

class WithoutSlots:
    def __init__(self):
        self.x = 10
        self.y = 20

print(asizeof.asizeof(WithSlots()))  # ~72 байта
print(asizeof.asizeof(WithoutSlots()))  # ~184 байта
Цифры не врут: видно, где оверхед реально критичен, а где можно забить. Гибридная модель: __slots__ + __dict__ Когда часть объектов динамическая (dataclass с optional полями), добавляем __dict__ в __slots__:
class FlexibleSlots:
    __slots__ = ('id', 'name', '__dict__')
    def __init__(self, id, name, **kwargs):
        self.id = id
        self.name = name
        for k, v in kwargs.items():
            setattr(self, k, v)

obj = FlexibleSlots(1, 'test', extra_field=42)
print(obj.extra_field)  # 42
Жесткие поля - без оверхеда словаря, динамические - через __dict__. Памяти чуть больше, но гибкость остается. Что я обычно делаю: - профилирую не на старте, а когда память реально начинает течь (pympler.muppy, pympler.summary) - для тысяч объектов - ORM-модели, объекты игр - обязательно __slots__ - если dataclass с наследованием - @dataclass(slots=True) (Python 3.10+), но контролирую дерево наследования - никогда не пихаю __slots__ в классы, которые подмешиваются через MRO или передаются в гибкие фреймворки Вывод: __slots__ - мощный инструмент для сокращения памяти, но его применение требует профилирования и осознанного проектирования, особенно при наследовании и в гибридных сценариях с __dict__.

Anthropic толкает самоуправляемых агентов Команда, стоящая за Claude Code, выкатила гайд по loops — это такие паттерны, где а
Anthropic толкает самоуправляемых агентов Команда, стоящая за Claude Code, выкатила гайд по loops — это такие паттерны, где агент гоняет свой рабочий цикл по кругу, пока не долбит стоп-сигнал. Суть проста: завязывай с ручным управлением и постепенно отдавай агенту всё больше контроля. Всего есть 4 типа циклов: • Агентный — стартует от промпта, вырубается, когда Claude решает, что работа сделана (ручная верификация через SKILL.md). • Целевой /goal — ты сам задаёшь условие останова, а отдельная модель-оценщик проверяет результат на соответствие. • Временной /loop или /schedule — агент сам дёргает триггер: норм для рутины и возни с внешними системами. • Проактивный — выкидывает человека из цепочки, активируется по событию или по расписанию. Пара советов в довесок: стартуй с самого простого решения, держи код в чистоте, а на ревью подключай второго агента (/code-review). За токенами следи — ставь чёткие условия останова и выбирай модель с умом. Масштаб динамических воркфлоу проверяй на небольшой выборке, а не сразу на всём. 👉 About Python

⚡️ GPT-5.6 Sol Ultra завалила 50-летнюю гипотезу о циклах Легендарная задача из теории графов, которую в 1973-м выкатил Дьерд
⚡️ GPT-5.6 Sol Ultra завалила 50-летнюю гипотезу о циклах Легендарная задача из теории графов, которую в 1973-м выкатил Дьердь Секереш, наконец-то дождалась. Суть гипотезы: мол, в любом графе без мостов существует такой букет циклов, что каждое ребро входит ровно в два из них. И всё это без шансов на отмазку. Пару часов назад сотрудник OpenAI дропнул заяву (X): новая GPT-5.6 Sol сварганила доказательство за час, натравив на неё 64 субагента. Файл с решением положили (PDF), но математический бомонд пока молчит — подтверждения нет. 👉 About Python

Утраиваем бюджет на продвижение в Директе Запустите первое продвижение в Яндекс Директе с утроенным бюджетом и ИИ-помощником
Утраиваем бюджет на продвижение в Директе Запустите первое продвижение в Яндекс Директе с утроенным бюджетом и ИИ-помощником ✨ Используйте один из промокодов : При пополнении от 10 000 ₽ +20 000 ₽ Промокод START20 При пополнении от 15 000 ₽ +30 000 ₽ Промокод START30 Зарегистрироваться #реклама direct.yandex.ru О рекламодателе

Парень раскатал гео-аналитическую платформу с нуля за 2,5 месяца. И да, он юзал AI-разработку. Пальцем в код не тыкал — отдал
Парень раскатал гео-аналитическую платформу с нуля за 2,5 месяца. И да, он юзал AI-разработку. Пальцем в код не тыкал — отдал всё на откуп нейронке, хотя сам сомневался, что её хватит на реальный прод. «Нутром чую: чем жирнее проект, тем быстрее AI теряет нить и долбится в лимиты», — делится автор. Но хрен там: платформу, на которую в доисторические времена потратили бы годы, вдвоём забацали за 2,5 месяца. Хочешь разобраться, как это работает и что надо чтобы повторить — курить статью на Хабре: читать далее 👉 About Python

Телеграм канал AI для бизнеса AI - не будущее. Это настоящее вашего бизнеса. Телеграм-канал "AI для бизнеса" знает все о внед
+4
Телеграм канал AI для бизнеса AI - не будущее. Это настоящее вашего бизнеса. Телеграм-канал "AI для бизнеса" знает все о внедрении и использовании искусственного интеллекта в бизнесе в России и мира. Только со своими подписчиками канал делится: - как внедрить искусственный интеллект в реальные бизнес-процессы, - разборами кейсов: как компании сократили затраты на 30-50% с помощью AI, - лайфхаками по автоматизации рутинных задач, - новостями мира AI и разборами трендов. Сами давно читаем и вам советуем подписаться. Подписаться #реклама 16+ О рекламодателе

С IT-вакансиями уже давно не цветочки — реальная «лимонная» свалка, про которую все в курсе. На Хабре не просто ноют, а пробе
С IT-вакансиями уже давно не цветочки — реальная «лимонная» свалка, про которую все в курсе. На Хабре не просто ноют, а пробежались по фактам: что из этого дерьма вытекает для соискателей и для тех, кто нанимает. Автор не разводит сопли, а тащит годные тулзы для разработчиков и эйчаров, чтоб выжить в этом долбаном цирке. 👉 Читать на Хабре👉 About Python