Один разработчик реализовал
Бенчмарки (RTX 3090)
🔘 1 MB: 1,09x (почти одинаково)
🔘 5 MB: 1,80x
🔘 50 MB: 3,43x
🔘 100 MB: 4,37x
Среднее ускорение: 3,45x, пропускная способность: 0,79 GB/s
Ключевые фичи
🔘 Точная семантика Python (leftmost, non-overlapping replacements)
🔘 Streaming mode — файлы больше VRAM обрабатываются чанками
🔘 Session API — несколько замен подряд без переинициализации
🔘 Thread-safe
Пример
➡️ Зачем это нужно
Автор делал GPU-компрессию и хотел убрать лишние трансферы между CPU и GPU. Другие применения: санитизация логов, обработка сетевых пакетов, любые задачи с поиском/заменой в больших бинарных данных.
И давайте признаем, это просто круто, search-replace на CUDA блин :)
📎 Код на GitHub
@zen_of_python
bytes.replace() из Python на CUDA — для обработки многогигабайтных файлов прямо на GPU без передачи данных на CPU.Бенчмарки (RTX 3090)
Среднее ускорение: 3,45x, пропускная способность: 0,79 GB/s
Ключевые фичи
Пример
from cuda_replace import CReplaceLib
lib = CReplaceLib()
result = lib.unified(data, b"pattern", b"replacement")
# Для больших файлов
cleaned = lib.gpu_streaming(huge_data, b"old", b"new", chunk_size=256*1024*1024)
Автор делал GPU-компрессию и хотел убрать лишние трансферы между CPU и GPU. Другие применения: санитизация логов, обработка сетевых пакетов, любые задачи с поиском/заменой в больших бинарных данных.
И давайте признаем, это просто круто, search-replace на CUDA блин :)
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9⚡4
Вышел pandas 3.0: строки теперь хранятся через PyArrow (до 70% экономии памяти, до 13x быстрее), а Copy-on-Write стал обязательным.
Что сломается
🔘 Цепочечное присваивание больше не работает:
🔘 Проверки dtype:
Как мигрировать
1️⃣ Обновитесь до pandas 2.3, уберите warnings
3️⃣ Включите в тестах:
3️⃣ Найдите
4️⃣ Обновляйтесь до 3.0
Требования: Python 3.11+, NumPy 1.26.0+, PyArrow 13.0.0+
Для production лучше подождать пару недель — релиз свежий.
📎 Changelog, GitHub
@zen_of_python
Что сломается
# Было: работало с warning'ом
df["foo"][df["bar"] > 5] = 100
# Стало: молча НЕ работает
# Правильно:
df.loc[df["bar"] > 5, "foo"] = 100
# Было
if df['col'].dtype == object: ...
# Стало
if pd.api.types.is_string_dtype(df['col']): ...
Как мигрировать
pd.options.future.infer_string = Truedtype == object и цепочечные присваиванияТребования: Python 3.11+, NumPy 1.26.0+, PyArrow 13.0.0+
Для production лучше подождать пару недель — релиз свежий.
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🫡5🔥1
Репозиторий anthropics/skills — самый популярный Python-репозиторий на GitHub прямо сейчас. +1400 звёзд в день, 50 тыс. уже набежало.
➡️ Что такое Skills
Skills — это папки с инструкциями и скриптами, которые Claude динамически подгружает для выполнения специализированных задач. По сути, плагины для ИИ: вместо того чтобы каждый раз объяснять модели, как работать с вашими процессами, вы описываете это один раз в файле.
Примеры: создание документов с учётом правил компании, анализ данных по специфическим воркфлоу, генерация MCP-серверов, тестирование веб-приложений.
➡️ Как устроено
Skill — это YAML с названием, описанием и markdown-инструкциями. Можно указать примеры использования и ограничения. Claude читает это при активации и следует описанным правилам.
➡️ Зачем это вам
Если используете Claude для повторяющихся задач — Skills позволяют один раз описать процесс и использовать повторно. Документные skills (PDF, DOCX, XLSX) уже готовы. Для собственных — есть шаблон и примеры.
📎 Репозиторий
@zen_of_python
Skills — это папки с инструкциями и скриптами, которые Claude динамически подгружает для выполнения специализированных задач. По сути, плагины для ИИ: вместо того чтобы каждый раз объяснять модели, как работать с вашими процессами, вы описываете это один раз в файле.
Примеры: создание документов с учётом правил компании, анализ данных по специфическим воркфлоу, генерация MCP-серверов, тестирование веб-приложений.
Skill — это YAML с названием, описанием и markdown-инструкциями. Можно указать примеры использования и ограничения. Claude читает это при активации и следует описанным правилам.
---
name: my-skill-name
description: What this skill does
---
# Instructions for Claude...
Если используете Claude для повторяющихся задач — Skills позволяют один раз описать процесс и использовать повторно. Документные skills (PDF, DOCX, XLSX) уже готовы. Для собственных — есть шаблон и примеры.
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤2
Вышел packaging 26.0 — тот самый релиз с ускорением в три раза, о котором писал пару недель назад.
Напомню контекст:packaging — библиотека для работы с версиями и зависимостями. Встроена в pip, а pip — в Python. 650+ миллионов скачиваний в месяц.
➡️ Что в релизе
Обещанные оптимизации: регулярки больше не перекомпилируются каждый раз, добавлены
➡️ Новые фичи
PEP 751 — поддержка pylock-файлов для воспроизводимых установок. PEP 794 — импорт метаданных имён пакетов. Positional pattern matching для
➡️ Breaking changes
Обновление подтянется автоматически с новыми версиями pip.
📎 Changelog, PyPI
@zen_of_python
Напомню контекст:
Обещанные оптимизации: регулярки больше не перекомпилируются каждый раз, добавлены
__slots__ для Version и Specifier, улучшено кэширование. Результат — парсинг версий стал в три раза быстрее, количество создаваемых объектов в pip упало с 4,8 млн до 400 тыс.PEP 751 — поддержка pylock-файлов для воспроизводимых установок. PEP 794 — импорт метаданных имён пакетов. Positional pattern matching для
Version и Specifier — теперь работает match version:from packaging.version import Version
match Version("3.14.0"):
case Version(major=3, minor=14):
print("Python 3.14!")
.contains() теперь возвращает False вместо исключения для невалидных версий. Если ловили InvalidVersion — проверьте код.Обновление подтянется автоматически с новыми версиями pip.
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12
Django в продакшене на 500 000 пользователей в месяц — не стартап, а французское правительство.
La Suite — экосистема цифровых инструментов для госслужащих Франции. 15 министерств, 500 000 активных пользователей ежемесячно.
Что внутри:
🔘 Tchap — мессенджер на Matrix, 375 000 активных пользователей ежемесячно
🔘 Visio — видеозвонки с ИИ-транскрипцией на LiveKit
🔘 Docs — совместное редактирование
🔘 Grist — таблицы как база данных
🔘 France Transfert — передача больших файлов
Бэкенд на Django. Весь код в открытом доступе.
Данные хранятся на SecNumCloud во Франции с полной портабельностью — экспорт в .ppt, .xls, .odt без vendor lock-in.
Это хороший пример того, как выглядит Django в govtech-продакшене уровня страны. Можно изучить архитектуру, посмотреть как они решают масштабирование, безопасность и интеграцию с legacy-системами.
📎 La Suite, GitHub
@zen_of_python
La Suite — экосистема цифровых инструментов для госслужащих Франции. 15 министерств, 500 000 активных пользователей ежемесячно.
Что внутри:
Бэкенд на Django. Весь код в открытом доступе.
Данные хранятся на SecNumCloud во Франции с полной портабельностью — экспорт в .ppt, .xls, .odt без vendor lock-in.
Это хороший пример того, как выглядит Django в govtech-продакшене уровня страны. Можно изучить архитектуру, посмотреть как они решают масштабирование, безопасность и интеграцию с legacy-системами.
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍4🔥3
Forwarded from Типичный программист
От кого только не прилетает самокатчикам. Иногда за дело, иногда нет. Не нам судить, но мы обсудим, что делать, например, с явными нарушителями? Как их контролировать, если операторы кикшеринга не пускают в свои данные? Закрывать глаза на хаос на тротуарах или тотально запрещать?
Мы получили кейс, где за 4 месяца команда из 7 человек создала платформу мониторинга, которая фиксирует самокатовские нарушения. Их задачей было сделать инструмент для структурирования данных, чтобы чиновники и операторы нашли общий язык.
Планируем поделиться с вами целой пачкой интересных артефактов. Ставьте 👀, если любопытно узнать их все.
Please open Telegram to view this post
VIEW IN TELEGRAM
👀13👍4☃1
Bandit — SAST-сканер для Python от PyCQA (те же люди, что делают pylint и flake8). Парсит AST, ищет типичные дыры: eval(), хардкод паролей, слабая криптография, небезопасные temp-файлы.
➡️ Как работает
Каждый файл → AST → прогон плагинов по нодам → отчёт. У каждой находки два атрибута: severity (критичность) и confidence (уверенность, что это реальная проблема). Это помогает расставить приоритеты — сначала High/High, потом остальное.
Интеграция:
Есть официальный GitHub Action (
Для легаси-проектов: сохраняешь текущие находки в baseline, дальше CI показывает только новые. Старые никуда не деваются, но не блокируют билд.
⚡️ UPD: Ruff включает все правила Bandit через реимплементацию flake8-bandit. Если используете ruff, то достаточно добавить select = ["S"] в pyproject.toml:
Ruff в 10-100x быстрее оригинального Bandit и не требует отдельной зависимости.
📎 Код на GitHub
@zen_of_python
Каждый файл → AST → прогон плагинов по нодам → отчёт. У каждой находки два атрибута: severity (критичность) и confidence (уверенность, что это реальная проблема). Это помогает расставить приоритеты — сначала High/High, потом остальное.
Интеграция:
# .pre-commit-config.yaml
repos:
- repo: https://github.com/PyCQA/bandit
rev: 1.7.5
hooks:
- id: bandit
args: ['-ll', '-ii']
Есть официальный GitHub Action (
PyCQA/bandit-action@v1) и расширение для VS Code.Для легаси-проектов: сохраняешь текущие находки в baseline, дальше CI показывает только новые. Старые никуда не деваются, но не блокируют билд.
[tool.ruff.lint]
select = ["S"] # все проверки Bandit
Ruff в 10-100x быстрее оригинального Bandit и не требует отдельной зависимости.
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Мелочь, но приятно: copier-astral — шаблон, который генерит для нового проекта настройки для ruff, uv, pytest, CI/CD одной командой. Как вы поняли, всё для любителей Astral-стека (а кто сейчас не такой?).
Что внутри:
🔘 uv — пакетный менеджер
🔘 ruff — линтер + форматтер (замена black/isort/flake8)
🔘 ty — новый тайпчекер от Astral на Rust
🔘 pytest + hatch — тесты с матрицей версий
🔘 MkDocs Material — документация
🔘 prek — Rust-альтернатива pre-commit (быстрее)
🔘 GitHub Actions — CI/CD из коробки
🔘 git-cliff — changelog по Conventional Commits
Опционально: Typer CLI scaffold, Docker
Установка:
Почему Copier, а не cookiecutter?
Copier умеет обновлять уже созданные проекты при изменении шаблона — не нужно руками мержить новые best practices.
📎 Код в репо, доки, пример проекта
@zen_of_python
Что внутри:
Опционально: Typer CLI scaffold, Docker
Установка:
# сначала uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# затем copier через uv
uv tool install copier --with copier-template-extensions
# создать новый проект
copier copy --trust gh:ritwiktiwari/copier-astral my-project
Почему Copier, а не cookiecutter?
Copier умеет обновлять уже созданные проекты при изменении шаблона — не нужно руками мержить новые best practices.
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🙈2
Закрыты три SQL-инъекции высокой критичности:
CVE-2026-1207 — инъекция через raster lookups в PostGIS при использовании пользовательских данных как индексов band.
CVE-2026-1287 — инъекция через управляющие символы в алиасах колонок при использовании FilteredRelation со специально сформированными словарями.
CVE-2026-1312 — инъекция через order_by() и FilteredRelation при использовании точки в алиасах колонок.
Также исправлены: DoS через повторяющиеся заголовки в ASGI (CVE-2025-14550), DoS через незакрытые HTML-теги в Truncator (CVE-2026-1285), timing-атака для перечисления пользователей в mod_wsgi (CVE-2025-13473).
Если используете PostGIS или FilteredRelation — обновляйтесь срочно.
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
✍1
И ещё один свежий релиз: вышел Python 3.14.3 с несколькими крупными фичами.
🔘 Free-threading (PEP 779)
Официальная поддержка потоков без GIL. Теперь можно собрать Python без глобальной блокировки интерпретатора и получить настоящую многопоточность. Для большинства это пока не актуально — требует пересборки и совместимых библиотек. Но направление задано.
🔘 T-strings (PEP 750)
Новый синтаксис
🔘 Отложенная оценка аннотаций (PEP 649)
Аннотации типов теперь вычисляются лениво. Можно писать def foo() -> Bar до определения класса Bar. Это упрощает работу с циклическими импортами и forward references.
Практический совет
Если у вас 3.14 на продакшене — обновляйтесь осторожно. А вот для экспериментов с free-threading — самое время попробовать.
@zen_of_python
Официальная поддержка потоков без GIL. Теперь можно собрать Python без глобальной блокировки интерпретатора и получить настоящую многопоточность. Для большинства это пока не актуально — требует пересборки и совместимых библиотек. Но направление задано.
Новый синтаксис
t"..." — как f-strings, но без автоматической интерполяции. Возвращает шаблон, который можно обработать отдельно. Полезно для безопасной работы со строками в SQL, HTML, логах.query = t"SELECT * FROM users WHERE id = {user_id}"
# query — не строка, а Template объектАннотации типов теперь вычисляются лениво. Можно писать def foo() -> Bar до определения класса Bar. Это упрощает работу с циклическими импортами и forward references.
Практический совет
Если у вас 3.14 на продакшене — обновляйтесь осторожно. А вот для экспериментов с free-threading — самое время попробовать.
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6✍1
PEP 822 предлагает d-строки — новый способ работы с многострочным текстом в Python 3.15.
Проблема: при использовании тройных кавычек внутри функций приходится либо ломать отступы кода, либо получать лишние пробелы в строке. d-строки автоматически удаляют общий ведущий отступ.
Работает аналогично
Можно комбинировать с f-строками:
PEP пока в статусе Draft, целевая версия — Python 3.15.
@zen_of_python
Проблема: при использовании тройных кавычек внутри функций приходится либо ломать отступы кода, либо получать лишние пробелы в строке. d-строки автоматически удаляют общий ведущий отступ.
def example():
query = d"""
SELECT *
FROM users
WHERE active = true
"""
# query не содержит лишних пробелов слева
Работает аналогично
textwrap.dedent(), но на уровне синтаксиса — без вызова функции и накладных расходов в рантайме.Можно комбинировать с f-строками:
df"""...""" для шаблонов с подстановкой переменных.PEP пока в статусе Draft, целевая версия — Python 3.15.
@zen_of_python
👍22🔥3
Нашёл прекрасное: memory_graph — визуализация того, что реально происходит в памяти Python. Либа рисует граф объектов: переменные, ссылки, алиасы, копии. Сразу видно почему
Вот примеры: Hash Map, Binary Tree, Copying, Recursion.
Установка:
Для изучения питона — очень круто, рекомендую.
@zen_of_python
b += [1] и b = b + [1] — это разные вещи.Вот примеры: Hash Map, Binary Tree, Copying, Recursion.
Установка:
pip install --upgrade memory_graphДля изучения питона — очень круто, рекомендую.
@zen_of_python
This media is not supported in your browser
VIEW IN TELEGRAM
❤6❤🔥1
«У Python только один реальный конкурент» — и это не Rust, не Go, не Julia
Это Clojure. Автор (Ethan McCue) объясняет логику:
Для реальной конкуренции с Python в Data Science нужно два условия:
1️⃣ Иметь аналогичную экосистему
3️⃣ Превосходить Python в чём-то важном
Экосистема: У Clojure есть полные аналоги numpy (
Превосходство: Python медленный, и это не починить. CPython не может оптимизироваться, потому что детали его реализации стали частью API — сломаешь numpy/pandas. Отсюда вечное «есть быстрый способ и медленный способ» делать одно и то же.
Clojure работает на JVM, которая агрессивно оптимизирует рантайм. Можно писать логику на самом языке, а не убегать в C. Поясню тут логику автора: Python структурно не может стать быстрым — его внутренности (reference counting, GIL, C API) стали частью контракта с экосистемой. У JVM таких ограничений нет.
Станет ли Clojure массовым — вопрос удачи, но по набору характеристик это единственный язык, у которого есть шанс.
@zen_of_python
Это Clojure. Автор (Ethan McCue) объясняет логику:
Для реальной конкуренции с Python в Data Science нужно два условия:
Экосистема: У Clojure есть полные аналоги numpy (
dtype-next), pandas (tech.ml.dataset), ML-пайплайны (metamorph.ml), плоттинг (Tableplot), ноутбуки (Clay). А чего нет — можно вызвать Python напрямую через libpython-clj.Превосходство: Python медленный, и это не починить. CPython не может оптимизироваться, потому что детали его реализации стали частью API — сломаешь numpy/pandas. Отсюда вечное «есть быстрый способ и медленный способ» делать одно и то же.
Clojure работает на JVM, которая агрессивно оптимизирует рантайм. Можно писать логику на самом языке, а не убегать в C. Поясню тут логику автора: Python структурно не может стать быстрым — его внутренности (reference counting, GIL, C API) стали частью контракта с экосистемой. У JVM таких ограничений нет.
Станет ли Clojure массовым — вопрос удачи, но по набору характеристик это единственный язык, у которого есть шанс.
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣18❤1🤔1🤓1💊1
Forwarded from Типичный программист
This media is not supported in your browser
VIEW IN TELEGRAM
Ну и еще немного про ИИ! 😁
Одни компании недолюбливают нейросети за риск утечки конфиденциальной информации. Судя по комменту к предыдущему посту вы тоже от него устали🤪 Но каким-то образом у разных компаний получается приручить эту химеру и выуживать из нее пользу.
Как, например, у этих ребят. Команда хотела облегчить работу коллег и создала то, что стало ключом к корпоративному ИИ. Они хотели доступ к мощным нейросетям, но так, чтобы ни байта данных не вышло за порог компании. И чтобы запускал это не только технарь, но и обычный менеджер.
Главный стоппер был предсказуем: как заставить прожорливые модели стабильно работать в облаке под нагрузкой? Решение оказалось элегантным.
Это девятый артефакт — для тех, кто побаивается нейросетей, но явно на них облизывается. Покажите вашему начальнику, скажите, что все не так страшно👻
Одни компании недолюбливают нейросети за риск утечки конфиденциальной информации. Судя по комменту к предыдущему посту вы тоже от него устали
Как, например, у этих ребят. Команда хотела облегчить работу коллег и создала то, что стало ключом к корпоративному ИИ. Они хотели доступ к мощным нейросетям, но так, чтобы ни байта данных не вышло за порог компании. И чтобы запускал это не только технарь, но и обычный менеджер.
Главный стоппер был предсказуем: как заставить прожорливые модели стабильно работать в облаке под нагрузкой? Решение оказалось элегантным.
Это девятый артефакт — для тех, кто побаивается нейросетей, но явно на них облизывается. Покажите вашему начальнику, скажите, что все не так страшно
Please open Telegram to view this post
VIEW IN TELEGRAM
👎4❤2
Документация для нейросетей — как получать нормальный код от LLM
Основная идея: вайбкодинг работает плохо не из-за моделей, а из-за отсутствия контекста. Если LLM не знает структуру проекта, стек и ограничения — она додумывает сама.
В статье разбирают, какие файлы документации стоит держать в проекте, чтобы нейросеть генерировала код в рамках существующей архитектуры, а не с нуля. Приводят готовые шаблоны.
@zen_of_python
Основная идея: вайбкодинг работает плохо не из-за моделей, а из-за отсутствия контекста. Если LLM не знает структуру проекта, стек и ограничения — она додумывает сама.
В статье разбирают, какие файлы документации стоит держать в проекте, чтобы нейросеть генерировала код в рамках существующей архитектуры, а не с нуля. Приводят готовые шаблоны.
@zen_of_python
Tproger
Секрет эффективного вайбкодинга — документация для нейросетей
Делаем документацию для ИИ-кода, в конце статьи будет 5 шаблонов, которые можно копировать и использовать для проектов.
👍2👎1
Премия Tproger объявляется открытой! 🐀
Каждый год команды разработки фиксят баги, выкатывают редизайн, добавляют фичи или создают совершенно новые продукты внутри известных нам брендов. Какие-то результаты работы мы видим, но чаще внутрянка не доступна и оценить по достоинству ее не получается.
Отсюда родилась идея Премии Tproger. В ней ИТ-компании делятся успешными кейсами разработки, а аудитория решает, какой проект заслуживает награды — золотой мыши🐀
В премии участвуют 16 компаний в 4 номинациях:
⚫ Продукт года
⚫ Облачный продукт года
⚫ Дизайн года
Теперь они в ваших руках👍
1. Переходите на сайт премии.
2. Выбирайте понравившиеся кейсы в каждой категории.
3. И вручайте им золотую мышь.
Голосование продлится до конца февраля и уже в марте мы объявим победителей. Stay tuned!
Каждый год команды разработки фиксят баги, выкатывают редизайн, добавляют фичи или создают совершенно новые продукты внутри известных нам брендов. Какие-то результаты работы мы видим, но чаще внутрянка не доступна и оценить по достоинству ее не получается.
Отсюда родилась идея Премии Tproger. В ней ИТ-компании делятся успешными кейсами разработки, а аудитория решает, какой проект заслуживает награды — золотой мыши
В премии участвуют 16 компаний в 4 номинациях:
Здесь представлены платформенные решения, направленные на комплексную автоматизацию ключевых направлений деятельности: от контроля безопасности разработки ПО и ИТ-инфраструктуры до управления ресурсами компании.
В этом разделе вас ждут платформы виртуализации, облачные среды для AI/ML, инструменты управления кластерами и микросервисами, обеспечивающие высокую производительность и быстрый запуск цифровых сервисов.IT-ивент года⚫
Участники рассказывают о профессиональных конференциях и хакатонах, объединяющих тысячи разработчиков и инженеров.
В номинации представлены проекты, где дизайн встречается с инженерией: нейросети, создающие презентации за секунды; инсталляции, собравшие десятки миллионов контактов; и визуальные стратегии, транслирующие ценности разработки.
Теперь они в ваших руках
1. Переходите на сайт премии.
2. Выбирайте понравившиеся кейсы в каждой категории.
3. И вручайте им золотую мышь.
Голосование продлится до конца февраля и уже в марте мы объявим победителей. Stay tuned!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Пять платформ, где дети учат Python через игры — от простых песочниц до олимпиадных задач. Trinket, Tynker, CodeCombat, Minecraft, CheckiO — разобрано для кого что подходит по возрасту и уровню.
@zen_of_python
@zen_of_python
Tproger
Топ-5 платформ и игр, которые незаметно научат ребенка основам Python
Описали платформы: CheckiO, Minecraft, CodeCombat, Tinker, Trinket. Рассказали про сильные сторону и что учесть, если вы выбрали именно эту платформу.
👍4