🖥 Малоизвестный факт о Python random.seed(), который может поломать ваш код
Документация создаёт впечатление, что любое целое число просто используется как seed (это “начальная точка” для генератора случайных чисел.).
Но Python перед использованием просто берёт абсолютное значение.
То есть:
➡️ seed(3) и seed(-3) - порождают один и тот же поток случайных чисел.
Это значит, что разные seed не всегда дают разные последовательности -
Python гарантирует только обратное: одинаковый seed → одинаковые числа.
Почему так?
В исходниках CPython есть строка, которая буквально делает:
seed = abs(seed)
И знак просто теряется, хотя алгоритм случайных чисел мог бы учитывать его.
🧠 Вывод:
Не используйте небольшие вариации seed (например 5 и -5) как способ получить разные потоки случайностей — это небезопасно.
Если вам нужны независимые RNG — создавайте их явно, а не полагаясь на “умные” seed.
[1] https://docs.python.org/3/library/random.html
[2] https://github.com/python/cpython/blob/main/Modules/_randommodule.c#L321C13-L321C30
@Python_Community_ru
Документация создаёт впечатление, что любое целое число просто используется как seed (это “начальная точка” для генератора случайных чисел.).
Но Python перед использованием просто берёт абсолютное значение.
То есть:
➡️ seed(3) и seed(-3) - порождают один и тот же поток случайных чисел.
Это значит, что разные seed не всегда дают разные последовательности -
Python гарантирует только обратное: одинаковый seed → одинаковые числа.
Почему так?
В исходниках CPython есть строка, которая буквально делает:
seed = abs(seed)
И знак просто теряется, хотя алгоритм случайных чисел мог бы учитывать его.
🧠 Вывод:
Не используйте небольшие вариации seed (например 5 и -5) как способ получить разные потоки случайностей — это небезопасно.
Если вам нужны независимые RNG — создавайте их явно, а не полагаясь на “умные” seed.
[1] https://docs.python.org/3/library/random.html
[2] https://github.com/python/cpython/blob/main/Modules/_randommodule.c#L321C13-L321C30
@Python_Community_ru
🔥2
🖊️ Google Research представила InkSight — систему, которая превращает сфотографанный рукописный текст в настоящие *цифровые рукописные данные*.
Что делает InkSight?
✨ Берёт фото тетрадей, заметок или документов и переводит их в «цифровое перо» - данные, которыми можно редактировать, искать, хранить.
🧠 Под капотом:
• Vision Transformer (ViT) + mT5
• Обучение на чтение и письмо одновременно
• Без специальных планшетов - работает с обычными фото
💡 Возможности:
✔ Обработка слов и целых страниц
✔ Работает с разными языками и стилями письма
✔ Корректно извлекает текст даже на шумном фоне
✔ Результат - редактируемый векторный «ink», а не просто картинка
То есть InkSight — мост между бумажной реальностью и цифровым миром: сделал фото заметок → получил полный цифровой текст, пригодный для поиска и редактирования.
🔗 В репозитории доступны веса модели, датасет и пример кода:
github.com/google-research/inksight
@Python_Community_ru
Что делает InkSight?
✨ Берёт фото тетрадей, заметок или документов и переводит их в «цифровое перо» - данные, которыми можно редактировать, искать, хранить.
🧠 Под капотом:
• Vision Transformer (ViT) + mT5
• Обучение на чтение и письмо одновременно
• Без специальных планшетов - работает с обычными фото
💡 Возможности:
✔ Обработка слов и целых страниц
✔ Работает с разными языками и стилями письма
✔ Корректно извлекает текст даже на шумном фоне
✔ Результат - редактируемый векторный «ink», а не просто картинка
То есть InkSight — мост между бумажной реальностью и цифровым миром: сделал фото заметок → получил полный цифровой текст, пригодный для поиска и редактирования.
🔗 В репозитории доступны веса модели, датасет и пример кода:
github.com/google-research/inksight
@Python_Community_ru
🔥3
📌 Первые впечатления от системы фоновых задач в Django
В свежем разборе объясняется, как Django наконец получает встроенный инструмент для фоновой обработки заданий без необходимости тянуть сторонние библиотеки вроде Celery.
🔹 Что это такое
Django Background Tasks - новый официально поддерживаемый механизм для:
- отложенного выполнения задач (delayed jobs),
- периодических задач (cron-style),
- асинхронной фоновой обработки в рамках приложения.
🔹 Почему это важно
Раньше разработчикам приходилось выбирать сторонние решения (Celery, RQ, Dramatiq) с дополнительной инфраструктурой (Redis/RabbitMQ и т.п.). Теперь у Django будет собственный, простой и интегрированный способ:
- выполнять задачи после ответа пользователю,
- обрабатывать тяжёлые операции вне запроса,
- запускать периодические задачи без внешних кронов.
🔹 Как это работает
- Вы определяете задачу как обычную Python-функцию.
- Django регистрирует её в очереди внутреннего раннера.
- Фоновый воркер выполняет такие задачи по расписанию или сразу - без внешнего брокера.
🔹 Плюсы по сравнению с альтернативами
✔ встроенная интеграция с ORM и Django-экосистемой
✔ нет необходимости настраивать отдельный брокер
✔ ожидаемая простота и знакомый синтаксис для Django-разработчиков
🔹 О чём ещё в статье
- примеры кода с определением фоновых задач;
- как запускать и мониторить воркеры;
- ограничения и когда всё же стоит использовать более мощные системы.
📌 В сумме: Django делает шаг к тому, чтобы базовая фонвая обработка стала простой и доступной из коробки - это ускоряет разработку и снижает операционную сложность для большинства проектов.
https://roam.be/notes/2025/a-first-look-at-djangos-new-background-tasks/
@Python_Community_ru
В свежем разборе объясняется, как Django наконец получает встроенный инструмент для фоновой обработки заданий без необходимости тянуть сторонние библиотеки вроде Celery.
🔹 Что это такое
Django Background Tasks - новый официально поддерживаемый механизм для:
- отложенного выполнения задач (delayed jobs),
- периодических задач (cron-style),
- асинхронной фоновой обработки в рамках приложения.
🔹 Почему это важно
Раньше разработчикам приходилось выбирать сторонние решения (Celery, RQ, Dramatiq) с дополнительной инфраструктурой (Redis/RabbitMQ и т.п.). Теперь у Django будет собственный, простой и интегрированный способ:
- выполнять задачи после ответа пользователю,
- обрабатывать тяжёлые операции вне запроса,
- запускать периодические задачи без внешних кронов.
🔹 Как это работает
- Вы определяете задачу как обычную Python-функцию.
- Django регистрирует её в очереди внутреннего раннера.
- Фоновый воркер выполняет такие задачи по расписанию или сразу - без внешнего брокера.
🔹 Плюсы по сравнению с альтернативами
✔ встроенная интеграция с ORM и Django-экосистемой
✔ нет необходимости настраивать отдельный брокер
✔ ожидаемая простота и знакомый синтаксис для Django-разработчиков
🔹 О чём ещё в статье
- примеры кода с определением фоновых задач;
- как запускать и мониторить воркеры;
- ограничения и когда всё же стоит использовать более мощные системы.
📌 В сумме: Django делает шаг к тому, чтобы базовая фонвая обработка стала простой и доступной из коробки - это ускоряет разработку и снижает операционную сложность для большинства проектов.
https://roam.be/notes/2025/a-first-look-at-djangos-new-background-tasks/
@Python_Community_ru
🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
📝 Как быстро объяснить проект коллеге, если не знаешь, с чего начать
Иногда проще ответить на вопросы новичка, чем структурировать рассказ самому. Но когда сервис большой, а процессов много, легко запутаться: что упомянуть первым, какие детали важны, а что можно оставить на потом.
Голосовой ИИ-помощник ГигаЧат подсказывает, как выстроить объяснение так, чтобы оно было понятным с первого раза.
📌 В итоге один короткий диалог превращается в ясное объяснение, которое не требует пересказывать всё снова. Слушаем!
@Python_Community_ru
Иногда проще ответить на вопросы новичка, чем структурировать рассказ самому. Но когда сервис большой, а процессов много, легко запутаться: что упомянуть первым, какие детали важны, а что можно оставить на потом.
Голосовой ИИ-помощник ГигаЧат подсказывает, как выстроить объяснение так, чтобы оно было понятным с первого раза.
📌 В итоге один короткий диалог превращается в ясное объяснение, которое не требует пересказывать всё снова. Слушаем!
@Python_Community_ru
⚡ Git Cheatsheet - коротко и по делу
Настройка
git config --global user.name "Name" — задать имя
git config --global user.email "email" — задать почту
git config --list — показать настройки
Старт
git init — создать репозиторий
git clone url — клонировать репо
Стейджинг и коммиты
git status — статус
git add . — добавить все изменения
git reset file — убрать из стейджа
git commit -m "msg" — коммит
git commit --amend — исправить последний коммит
Ветки
git branch — список
git branch name — создать
git checkout -b name — создать и перейти
git branch -d name — удалить
Merge и Rebase
git merge branch — слить ветку
git merge --abort — отменить
git rebase branch — перебазирование
История
git log --oneline — компактная история
git log --graph --all — граф
git diff — показать изменения
Откат
git restore file — вернуть файл
git reset --soft HEAD~1 — откатить коммит, сохранить изменения
git reset --hard HEAD~1 — откатить и удалить изменения
git clean -f — удалить лишние файлы
Удалённые репозитории
git remote -v — список
git push origin branch — запушить
git pull — получить изменения
git fetch — только забрать
Теги
git tag — список
git tag name — создать
git push origin --tags — отправить теги
Stash
git stash — сохранить изменения
git stash list — список
git stash apply — применить
Поиск и анализ
git blame file — кто менял строки
git grep "text" — поиск
git bisect — бинарный поиск бага
Продвинутое
git cherry-pick commit — взять коммит
git revert commit — отменить коммит через новый
git submodule add url — добавить сабмодуль
Полезно сохранить под рукой.
@Python_Community_ru
Настройка
git config --global user.name "Name" — задать имя
git config --global user.email "email" — задать почту
git config --list — показать настройки
Старт
git init — создать репозиторий
git clone url — клонировать репо
Стейджинг и коммиты
git status — статус
git add . — добавить все изменения
git reset file — убрать из стейджа
git commit -m "msg" — коммит
git commit --amend — исправить последний коммит
Ветки
git branch — список
git branch name — создать
git checkout -b name — создать и перейти
git branch -d name — удалить
Merge и Rebase
git merge branch — слить ветку
git merge --abort — отменить
git rebase branch — перебазирование
История
git log --oneline — компактная история
git log --graph --all — граф
git diff — показать изменения
Откат
git restore file — вернуть файл
git reset --soft HEAD~1 — откатить коммит, сохранить изменения
git reset --hard HEAD~1 — откатить и удалить изменения
git clean -f — удалить лишние файлы
Удалённые репозитории
git remote -v — список
git push origin branch — запушить
git pull — получить изменения
git fetch — только забрать
Теги
git tag — список
git tag name — создать
git push origin --tags — отправить теги
Stash
git stash — сохранить изменения
git stash list — список
git stash apply — применить
Поиск и анализ
git blame file — кто менял строки
git grep "text" — поиск
git bisect — бинарный поиск бага
Продвинутое
git cherry-pick commit — взять коммит
git revert commit — отменить коммит через новый
git submodule add url — добавить сабмодуль
Полезно сохранить под рукой.
@Python_Community_ru
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 PYTHON В DOCKER: УСКОРЯЕМ СБОРКУ!
Если ваш Python-приложение в Docker работает медленно при старте или «греет» CPU, проблема часто в том, что Docker пересобирает зависимости каждый раз.
Хитрый приём: замораживайте зависимости в отдельный слой и используйте .dockerignore, чтобы локальные файлы не ломали кеш.
Так Docker перестаёт пересобирать pip-пакеты и старт проекта ускоряется в разы.
для оптимизации Python-сборки
FROM python:3.12-slim
WORKDIR /app
Слой с зависимостями (кешируется!)
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
Теперь копируем код (не ломает кеш pip)
COPY . .
CMD ["python", "main.py"]
@Python_Community_ru
Если ваш Python-приложение в Docker работает медленно при старте или «греет» CPU, проблема часто в том, что Docker пересобирает зависимости каждый раз.
Хитрый приём: замораживайте зависимости в отдельный слой и используйте .dockerignore, чтобы локальные файлы не ломали кеш.
Так Docker перестаёт пересобирать pip-пакеты и старт проекта ускоряется в разы.
для оптимизации Python-сборки
FROM python:3.12-slim
WORKDIR /app
Слой с зависимостями (кешируется!)
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
Теперь копируем код (не ломает кеш pip)
COPY . .
CMD ["python", "main.py"]
@Python_Community_ru
🔥2
🖥 Django 6.0 вышел - крупное обновление фреймворка
Вышел Django 6.0, и это одно из самых насыщенных обновлений за последнее время. Релиз добавляет функциональность, которую разработчики долго закрывали сторонними библиотеками или кастомными решениями.
Что нового и действительно важно:
Поддержка template partials из коробки
Теперь Django умеет частичные шаблоны на уровне фреймворка. Это упрощает структуру HTML, повышает переиспользуемость и делает шаблоны чище и понятнее без лишних include-хаков.
Нативный фреймворк для фоновых задач
В Django появился встроенный механизм для background tasks. Для многих проектов это означает, что Celery или RQ больше не обязательны для базовых задач — отложенные и асинхронные операции можно реализовать стандартными средствами.
Встроенная система Content Security Policy (CSP)
Django 6.0 получил полноценную поддержку CSP. Это серьёзный шаг в сторону безопасности по умолчанию и защита от XSS и других атак без внешних middleware.
Современный email API с нормальной Unicode-поддержкой
Работа с email стала более предсказуемой и дружелюбной к Unicode, что особенно важно для международных проектов и сложных шаблонов писем.
Жизненный цикл версий
Django 5.2 больше не имеет mainstream-поддержки. Разработчикам рекомендуется переходить на 6.0, чтобы получать новые возможности, обновления безопасности и улучшения платформы.
Django продолжает двигаться в сторону «batteries included», но делает это аккуратно и прагматично. Django 6.0 снижает зависимость от внешних библиотек, усиливает безопасность и делает повседневную разработку заметно удобнее.
Это релиз, который стоит внимательно изучить и запланировать апгрейд.
https://www.djangoproject.com/weblog/2025/dec/03/django-60-released/
@Python_Community_ru
Вышел Django 6.0, и это одно из самых насыщенных обновлений за последнее время. Релиз добавляет функциональность, которую разработчики долго закрывали сторонними библиотеками или кастомными решениями.
Что нового и действительно важно:
Поддержка template partials из коробки
Теперь Django умеет частичные шаблоны на уровне фреймворка. Это упрощает структуру HTML, повышает переиспользуемость и делает шаблоны чище и понятнее без лишних include-хаков.
Нативный фреймворк для фоновых задач
В Django появился встроенный механизм для background tasks. Для многих проектов это означает, что Celery или RQ больше не обязательны для базовых задач — отложенные и асинхронные операции можно реализовать стандартными средствами.
Встроенная система Content Security Policy (CSP)
Django 6.0 получил полноценную поддержку CSP. Это серьёзный шаг в сторону безопасности по умолчанию и защита от XSS и других атак без внешних middleware.
Современный email API с нормальной Unicode-поддержкой
Работа с email стала более предсказуемой и дружелюбной к Unicode, что особенно важно для международных проектов и сложных шаблонов писем.
Жизненный цикл версий
Django 5.2 больше не имеет mainstream-поддержки. Разработчикам рекомендуется переходить на 6.0, чтобы получать новые возможности, обновления безопасности и улучшения платформы.
Django продолжает двигаться в сторону «batteries included», но делает это аккуратно и прагматично. Django 6.0 снижает зависимость от внешних библиотек, усиливает безопасность и делает повседневную разработку заметно удобнее.
Это релиз, который стоит внимательно изучить и запланировать апгрейд.
https://www.djangoproject.com/weblog/2025/dec/03/django-60-released/
@Python_Community_ru
🔥3
📝 Редактирование PDF с помощью ИИ 🚀
Nano PDF - это CLI инструмент для редактирования PDF-документов с использованием естественных языковых запросов. Он позволяет изменять слайды, добавлять новые и сохранять текстовый слой благодаря OCR. Инструмент использует модель Gemini 3 Pro Image для быстрого и качественного редактирования.
🚀 Основные моменты:
- Редактирование слайдов по текстовым командам
- Генерация новых слайдов в стиле существующих
- Поддержка многопоточной обработки
- Сохранение текстового слоя PDF
📌 GitHub: https://github.com/gavrielc/Nano-PDF
#python
@Python_Community_ru
Nano PDF - это CLI инструмент для редактирования PDF-документов с использованием естественных языковых запросов. Он позволяет изменять слайды, добавлять новые и сохранять текстовый слой благодаря OCR. Инструмент использует модель Gemini 3 Pro Image для быстрого и качественного редактирования.
🚀 Основные моменты:
- Редактирование слайдов по текстовым командам
- Генерация новых слайдов в стиле существующих
- Поддержка многопоточной обработки
- Сохранение текстового слоя PDF
📌 GitHub: https://github.com/gavrielc/Nano-PDF
#python
@Python_Community_ru
👍1
🌍🤖 GigaWorld-0: Модели мира
GigaWorld-0 - это унифицированная платформа для обучения Vision-Language-Action, использующая генерацию видео и 3D моделирование. Она обеспечивает создание разнообразных и реалистичных последовательностей, что делает её мощным инструментом для разработки эмбодированных ИИ.
🚀Основные моменты:
- Интеграция видео и 3D генерации для физической реалистичности.
- Поддержка текстовых подсказок для генерации видео.
- Модели доступны на Hugging Face для быстрого старта.
- Открытый исходный код с лицензией Apache 2.0.
📌 GitHub: https://github.com/open-gigaai/giga-world-0
#python
@Python_Community_ru
GigaWorld-0 - это унифицированная платформа для обучения Vision-Language-Action, использующая генерацию видео и 3D моделирование. Она обеспечивает создание разнообразных и реалистичных последовательностей, что делает её мощным инструментом для разработки эмбодированных ИИ.
🚀Основные моменты:
- Интеграция видео и 3D генерации для физической реалистичности.
- Поддержка текстовых подсказок для генерации видео.
- Модели доступны на Hugging Face для быстрого старта.
- Открытый исходный код с лицензией Apache 2.0.
📌 GitHub: https://github.com/open-gigaai/giga-world-0
#python
@Python_Community_ru
This media is not supported in your browser
VIEW IN TELEGRAM
💀➡️ Большинство кодеров не знают про это ускорение в Python
Одна из самых недооценённых оптимизаций в Python — вынесение повторяющихся вычислений в локальные переменные.
Причина проста: доступ к локальной переменной в CPython *в 2–3 раза быстрее*, чем к глобальной или атрибуту модуля.
Особенно важно в циклах и горячих участках кода.
import math
# Медленнее: math.sqrt вызывается через глобальное пространство имён
def slow(nums):
return [math.sqrt(x) for x in nums]
# Быстрее: ссылка на функцию закэширована в локальной переменной
def fast(nums):
sqrt = math.sqrt
return [sqrt(x) for x in nums]
# Ещё пример: длину списка лучше сохранить локально
def sum_fast(nums):
total = 0
ln = len(nums) # локальная ссылка быстрее
for i in range(ln):
total += nums[i]
return total
@Python_Community_ru
Одна из самых недооценённых оптимизаций в Python — вынесение повторяющихся вычислений в локальные переменные.
Причина проста: доступ к локальной переменной в CPython *в 2–3 раза быстрее*, чем к глобальной или атрибуту модуля.
Особенно важно в циклах и горячих участках кода.
import math
# Медленнее: math.sqrt вызывается через глобальное пространство имён
def slow(nums):
return [math.sqrt(x) for x in nums]
# Быстрее: ссылка на функцию закэширована в локальной переменной
def fast(nums):
sqrt = math.sqrt
return [sqrt(x) for x in nums]
# Ещё пример: длину списка лучше сохранить локально
def sum_fast(nums):
total = 0
ln = len(nums) # локальная ссылка быстрее
for i in range(ln):
total += nums[i]
return total
@Python_Community_ru
🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
🤯💣 PYTHON ТРЮК ПО УСКОРЕНИЮ #python
Совет по Python: если в цикле много обращений к атрибутам объекта или модуля — вынеси их в локальную переменную.
Доступ к локалам работает быстрее, чем к атрибутам, поэтому такой приём иногда ускоряет код на 20–50 процентов.
#медленно — каждый проход лезет в атрибут
for i in range(10_000_000):
x = obj.value
#быстрее — сохрани ссылку заранее
val = obj.value
for i in range(10_000_000):
x = val
#ещё пример — кешируем функцию
import math
sqrt = math.sqrt
for i in range(1_000_000):
r = sqrt(i)
@Python_Community_ru
Совет по Python: если в цикле много обращений к атрибутам объекта или модуля — вынеси их в локальную переменную.
Доступ к локалам работает быстрее, чем к атрибутам, поэтому такой приём иногда ускоряет код на 20–50 процентов.
#медленно — каждый проход лезет в атрибут
for i in range(10_000_000):
x = obj.value
#быстрее — сохрани ссылку заранее
val = obj.value
for i in range(10_000_000):
x = val
#ещё пример — кешируем функцию
import math
sqrt = math.sqrt
for i in range(1_000_000):
r = sqrt(i)
@Python_Community_ru
🎧 Модель аудиоразмышлений Step-Audio-R1
Step-Audio-R1 — первая аудиомодель, которая преодолевает проблему "обратного масштабирования", улучшая производительность при увеличении вычислительных ресурсов. Используя метод MGRD, модель фокусируется на акустическом анализе, что позволяет ей эффективно обрабатывать аудиоданные.
🚀 Основные моменты:
- Успешно решает проблему "обратного масштабирования"
- Сравнима с Gemini 3 по аудиобенчмаркам
- Инновационный подход к обучению через акустические особенности
- Доступна для использования на Hugging Face и ModelScope
📌 GitHub: https://github.com/stepfun-ai/Step-Audio-R1
@Python_Community_ru
Step-Audio-R1 — первая аудиомодель, которая преодолевает проблему "обратного масштабирования", улучшая производительность при увеличении вычислительных ресурсов. Используя метод MGRD, модель фокусируется на акустическом анализе, что позволяет ей эффективно обрабатывать аудиоданные.
🚀 Основные моменты:
- Успешно решает проблему "обратного масштабирования"
- Сравнима с Gemini 3 по аудиобенчмаркам
- Инновационный подход к обучению через акустические особенности
- Доступна для использования на Hugging Face и ModelScope
📌 GitHub: https://github.com/stepfun-ai/Step-Audio-R1
@Python_Community_ru
🖥 Как уменьшить Docker-образ в 10+ раз - понятный и практичный разбор.
Размер Docker-образа - это не косметика.
Он напрямую влияет на:
- скорость CI/CD
- время деплоя
- cold start контейнеров
- расходы на storage и трафик
В примере ниже образ удалось сократить с 588 MB до 47.7 MB - почти на 92%.
Вот какие приёмы реально дают эффект.
1) Выбор базового образа - самое важное решение
Полный python:3.9 тянет за собой:
- лишние системные утилиты
- документацию
- dev-пакеты
Переход на python:3.9-alpine:
- в разы меньше размер
- быстрее скачивание
- меньше attack surface
Это первый и самый крупный выигрыш.
2) Оптимизация слоёв Docker
Каждый RUN, COPY, ADD - это новый слой.
Много мелких инструкций = раздув образа.
Правило:
- объединяй связанные команды
- удаляй временные файлы в том же RUN
Меньше слоёв - меньше вес - быстрее сборка.
3) .dockerignore - бесплатная оптимизация, которую часто забывают
Без .dockerignore в build context улетает всё:
- .venv
- .cache
- .git
- временные файлы
Это:
- увеличивает размер контекста
- замедляет сборку
- иногда ломает кеширование
.dockerignore должен быть всегда. Без исключений.
4) Multi-stage build - must-have для продакшена
Одна из самых мощных техник.
Идея простая:
- stage 1 - сборка, компиляция, зависимости
- stage 2 - только то, что нужно для запуска
В финальном образе:
- нет build-инструментов
- нет лишних библиотек
- только runtime
Результат:
- меньше размер
- меньше уязвимостей
- быстрее старт
Итоговый эффект:
- 588 MB -> 47.7 MB
- −91.89% размера
- быстрее CI
- быстрее деплой
- дешевле инфраструктура
Главный вывод:
маленькие оптимизации накапливаются.
Каждый сэкономленный мегабайт:
- ускоряет каждый pull
- ускоряет каждый deploy
- масштабируется вместе с вашей системой
@Python_Community_ru
Размер Docker-образа - это не косметика.
Он напрямую влияет на:
- скорость CI/CD
- время деплоя
- cold start контейнеров
- расходы на storage и трафик
В примере ниже образ удалось сократить с 588 MB до 47.7 MB - почти на 92%.
Вот какие приёмы реально дают эффект.
1) Выбор базового образа - самое важное решение
Полный python:3.9 тянет за собой:
- лишние системные утилиты
- документацию
- dev-пакеты
Переход на python:3.9-alpine:
- в разы меньше размер
- быстрее скачивание
- меньше attack surface
Это первый и самый крупный выигрыш.
2) Оптимизация слоёв Docker
Каждый RUN, COPY, ADD - это новый слой.
Много мелких инструкций = раздув образа.
Правило:
- объединяй связанные команды
- удаляй временные файлы в том же RUN
Меньше слоёв - меньше вес - быстрее сборка.
3) .dockerignore - бесплатная оптимизация, которую часто забывают
Без .dockerignore в build context улетает всё:
- .venv
- .cache
- .git
- временные файлы
Это:
- увеличивает размер контекста
- замедляет сборку
- иногда ломает кеширование
.dockerignore должен быть всегда. Без исключений.
4) Multi-stage build - must-have для продакшена
Одна из самых мощных техник.
Идея простая:
- stage 1 - сборка, компиляция, зависимости
- stage 2 - только то, что нужно для запуска
В финальном образе:
- нет build-инструментов
- нет лишних библиотек
- только runtime
Результат:
- меньше размер
- меньше уязвимостей
- быстрее старт
Итоговый эффект:
- 588 MB -> 47.7 MB
- −91.89% размера
- быстрее CI
- быстрее деплой
- дешевле инфраструктура
Главный вывод:
маленькие оптимизации накапливаются.
Каждый сэкономленный мегабайт:
- ускоряет каждый pull
- ускоряет каждый deploy
- масштабируется вместе с вашей системой
@Python_Community_ru
🔥2
📌 Подробная шпаргалка по командам Docker
Удобный и практичный референс для повседневной работы с Docker: образы, контейнеры, сети, тома и Docker Compose.
🐋 Общие команды Docker
- docker --version — версия Docker
- docker info — информация о системе Docker
- docker help — список доступных команд
- docker --help — помощь по конкретной команде
📦 Работа с образами
- docker pull — скачать образ из реестра
- docker images — список локальных образов
- docker build -t name:tag . — собрать образ из Dockerfile
- docker tag : — назначить тег образу
- docker rmi — удалить образ
- docker image prune — удалить неиспользуемые образы
- docker image prune -a — удалить все неиспользуемые, включая невисячие
🚀 Контейнеры: запуск и управление
- docker run — запустить контейнер
- docker run -d — запуск в фоне
- docker run -it bash — интерактивный режим
- docker ps — активные контейнеры
- docker ps -a — все контейнеры
- docker stop — остановить контейнер
- docker start — запустить остановленный
- docker restart — перезапуск
- docker rm — удалить контейнер
- docker rm -f — принудительно удалить
- docker logs — логи контейнера
- docker exec -it bash — войти внутрь контейнера
- docker inspect — подробная информация (JSON)
🧹 Очистка и обслуживание
- docker container prune — удалить все остановленные контейнеры
- docker image prune — удалить неиспользуемые образы
- docker volume prune — удалить неиспользуемые тома
- docker network prune — удалить неиспользуемые сети
- docker system prune — очистить всё неиспользуемое
- docker system prune -a — максимально агрессивная очистка
- docker system df — использование диска Docker’ом
📊 Мониторинг и отладка
- docker stats — использование CPU и памяти контейнерами
- docker top — процессы внутри контейнера
- docker diff — изменения файловой системы контейнера
🌐 Сети Docker
- docker network ls — список сетей
- docker network inspect — информация о сети
- docker network create — создать сеть
- docker network rm — удалить сеть
💾 Docker Volumes
- docker volume ls — список томов
- docker volume inspect — информация о томе
- docker volume create — создать том
- docker volume rm — удалить том
⚙️ Docker Compose
- docker compose up — запустить сервисы
- docker compose up -d — запуск в фоне
- docker compose down — остановить и удалить всё
- docker compose build — пересобрать образы
- docker compose pull — скачать образы
- docker compose logs — логи всех сервисов
- docker compose ps — статус сервисов
- docker compose restart — перезапуск
🧠 Полезные советы
- Используй --rm, чтобы контейнер удалялся после выполнения
- Проверяй размер Docker-данных через docker system df
- Для отладки всегда полезен docker inspect
- Регулярно чисти систему, чтобы Docker не съел весь диск
Эта шпаргалка закрывает 90% повседневных задач при работе с Docker - от локальной разработки до продакшена.
@Python_Community_ru
Удобный и практичный референс для повседневной работы с Docker: образы, контейнеры, сети, тома и Docker Compose.
🐋 Общие команды Docker
- docker --version — версия Docker
- docker info — информация о системе Docker
- docker help — список доступных команд
- docker --help — помощь по конкретной команде
📦 Работа с образами
- docker pull — скачать образ из реестра
- docker images — список локальных образов
- docker build -t name:tag . — собрать образ из Dockerfile
- docker tag : — назначить тег образу
- docker rmi — удалить образ
- docker image prune — удалить неиспользуемые образы
- docker image prune -a — удалить все неиспользуемые, включая невисячие
🚀 Контейнеры: запуск и управление
- docker run — запустить контейнер
- docker run -d — запуск в фоне
- docker run -it bash — интерактивный режим
- docker ps — активные контейнеры
- docker ps -a — все контейнеры
- docker stop — остановить контейнер
- docker start — запустить остановленный
- docker restart — перезапуск
- docker rm — удалить контейнер
- docker rm -f — принудительно удалить
- docker logs — логи контейнера
- docker exec -it bash — войти внутрь контейнера
- docker inspect — подробная информация (JSON)
🧹 Очистка и обслуживание
- docker container prune — удалить все остановленные контейнеры
- docker image prune — удалить неиспользуемые образы
- docker volume prune — удалить неиспользуемые тома
- docker network prune — удалить неиспользуемые сети
- docker system prune — очистить всё неиспользуемое
- docker system prune -a — максимально агрессивная очистка
- docker system df — использование диска Docker’ом
📊 Мониторинг и отладка
- docker stats — использование CPU и памяти контейнерами
- docker top — процессы внутри контейнера
- docker diff — изменения файловой системы контейнера
🌐 Сети Docker
- docker network ls — список сетей
- docker network inspect — информация о сети
- docker network create — создать сеть
- docker network rm — удалить сеть
💾 Docker Volumes
- docker volume ls — список томов
- docker volume inspect — информация о томе
- docker volume create — создать том
- docker volume rm — удалить том
⚙️ Docker Compose
- docker compose up — запустить сервисы
- docker compose up -d — запуск в фоне
- docker compose down — остановить и удалить всё
- docker compose build — пересобрать образы
- docker compose pull — скачать образы
- docker compose logs — логи всех сервисов
- docker compose ps — статус сервисов
- docker compose restart — перезапуск
🧠 Полезные советы
- Используй --rm, чтобы контейнер удалялся после выполнения
- Проверяй размер Docker-данных через docker system df
- Для отладки всегда полезен docker inspect
- Регулярно чисти систему, чтобы Docker не съел весь диск
Эта шпаргалка закрывает 90% повседневных задач при работе с Docker - от локальной разработки до продакшена.
@Python_Community_ru
👍2🔥2
🚀 Интерактивный помощник для Кодинга Mistral Vibe
Mistral Vibe - это командный интерфейс для взаимодействия с кодом, который позволяет использовать естественный язык для выполнения задач.
Он предлагает мощные инструменты для работы с файлами, поиска кода и управления версиями, обеспечивая удобный и интуитивный опыт.
🚀 Основные моменты:
- Интерактивный чат с AI для выполнения запросов.
- Набор инструментов для манипуляции файлами и выполнения команд.
- Автоматическое сканирование структуры проекта для контекстной информации.
- Высокая настраиваемость через конфигурационные файлы.
- Поддержка UNIX и Windows.
📌 GitHub:
@Python_Community_ru
https://github.com/mistralai/mistral-vibe
Mistral Vibe - это командный интерфейс для взаимодействия с кодом, который позволяет использовать естественный язык для выполнения задач.
Он предлагает мощные инструменты для работы с файлами, поиска кода и управления версиями, обеспечивая удобный и интуитивный опыт.
🚀 Основные моменты:
- Интерактивный чат с AI для выполнения запросов.
- Набор инструментов для манипуляции файлами и выполнения команд.
- Автоматическое сканирование структуры проекта для контекстной информации.
- Высокая настраиваемость через конфигурационные файлы.
- Поддержка UNIX и Windows.
📌 GitHub:
@Python_Community_ru
https://github.com/mistralai/mistral-vibe
GitHub
GitHub - mistralai/mistral-vibe: Minimal CLI coding agent by Mistral
Minimal CLI coding agent by Mistral. Contribute to mistralai/mistral-vibe development by creating an account on GitHub.
🖥 python-injection - практический сборник уязвимостей в Python
python-injection - это репозиторий с наглядными примерами инъекций и небезопасных паттернов в Python-коде, которые регулярно встречаются в реальных проектах.
Проект показывает, как «обычный» Python-код превращается в уязвимость, если не понимать, как именно работают интерпретатор, библиотеки и внешние вызовы.
Что внутри:
- Command Injection через os.system, subprocess, shell=True
- SQL Injection при неправильной работе с запросами
- Code Injection через eval, exec, pickle
- Path Traversal и небезопасная работа с файлами
- Template Injection
- Примеры небезопасной десериализации
- Реальные анти-паттерны из production-кода
Главная ценность репозитория — код, а не теория:
- есть уязвимый пример
- есть объяснение, почему он опасен
- понятно, как именно происходит атака
Подходит для:
- Python-разработчиков
- backend-инженеров
- security-энтузиастов
- code review и обучения безопасному программированию
Если ты пишешь Python и думаешь, что «у нас же не веб» - этот репозиторий стоит открыть.
pip install python-injection
https://github.com/100nm/python-injection
@Python_Community_ru
python-injection - это репозиторий с наглядными примерами инъекций и небезопасных паттернов в Python-коде, которые регулярно встречаются в реальных проектах.
Проект показывает, как «обычный» Python-код превращается в уязвимость, если не понимать, как именно работают интерпретатор, библиотеки и внешние вызовы.
Что внутри:
- Command Injection через os.system, subprocess, shell=True
- SQL Injection при неправильной работе с запросами
- Code Injection через eval, exec, pickle
- Path Traversal и небезопасная работа с файлами
- Template Injection
- Примеры небезопасной десериализации
- Реальные анти-паттерны из production-кода
Главная ценность репозитория — код, а не теория:
- есть уязвимый пример
- есть объяснение, почему он опасен
- понятно, как именно происходит атака
Подходит для:
- Python-разработчиков
- backend-инженеров
- security-энтузиастов
- code review и обучения безопасному программированию
Если ты пишешь Python и думаешь, что «у нас же не веб» - этот репозиторий стоит открыть.
pip install python-injection
https://github.com/100nm/python-injection
@Python_Community_ru
Новая работа MIT: LLM, который видит и меняет состояние Python
В MIT предложили подход, при котором языковая модель работает не только с текстом, а напрямую с живым состоянием Python-кода - переменными, объектами в памяти и текущей точкой выполнения.
Подход называется NIGHTJAR.
Главный результат
В экспериментах NIGHTJAR сократил объем кода в среднем на 39.6% без потери корректности.
В чем была проблема
Обычная LLM:
- читает текст
- генерирует текст
- не видит реальные данные программы
Поэтому типичный пайплайн выглядит так:
- данные сериализуются в текст
- отправляются модели
- ответ парсится
- программа вручную обновляется
Много glue-кода, много мест для ошибок.
Что меняет совместное состояние
Shared state полностью меняет модель взаимодействия:
- LLM может читать и писать переменные
- изменять объекты прямо в памяти
- останавливать и пропускать циклы
- работать с текущим состоянием выполнения
Модель не «рассуждает о коде», она с ним взаимодействует.
Как это реализовано
LLM не получает прямой доступ к памяти.
Она отправляет небольшие команды:
- прочитать переменную
- записать значение
- обновить объект
- выйти из цикла
Python-обработчик выполняет эти команды.
Такой контракт авторы называют natural function interface.
Результаты
На бенчмарке SPSBench с 25 программами:
- корректность осталась на уровне ручной интеграции или выше
- код стал заметно короче
- но время выполнения иногда росло до 4.3 раза
Причина проста - каждое обращение к состоянию может требовать отдельного вызова модели.
Почему это важно
- меньше шаблонного glue-кода
- проще писать сложную логику с участием LLM
- шаг к более тесной интеграции AI и runtime
- фундамент для новых агентных и интерактивных систем
Это не про ускорение.
Это про изменение архитектуры взаимодействия между программой и моделью.
📌 Статья: arxiv.org/abs/2512.14805
#AI #LLM #Python
@Python_Community_ru
В MIT предложили подход, при котором языковая модель работает не только с текстом, а напрямую с живым состоянием Python-кода - переменными, объектами в памяти и текущей точкой выполнения.
Подход называется NIGHTJAR.
Главный результат
В экспериментах NIGHTJAR сократил объем кода в среднем на 39.6% без потери корректности.
В чем была проблема
Обычная LLM:
- читает текст
- генерирует текст
- не видит реальные данные программы
Поэтому типичный пайплайн выглядит так:
- данные сериализуются в текст
- отправляются модели
- ответ парсится
- программа вручную обновляется
Много glue-кода, много мест для ошибок.
Что меняет совместное состояние
Shared state полностью меняет модель взаимодействия:
- LLM может читать и писать переменные
- изменять объекты прямо в памяти
- останавливать и пропускать циклы
- работать с текущим состоянием выполнения
Модель не «рассуждает о коде», она с ним взаимодействует.
Как это реализовано
LLM не получает прямой доступ к памяти.
Она отправляет небольшие команды:
- прочитать переменную
- записать значение
- обновить объект
- выйти из цикла
Python-обработчик выполняет эти команды.
Такой контракт авторы называют natural function interface.
Результаты
На бенчмарке SPSBench с 25 программами:
- корректность осталась на уровне ручной интеграции или выше
- код стал заметно короче
- но время выполнения иногда росло до 4.3 раза
Причина проста - каждое обращение к состоянию может требовать отдельного вызова модели.
Почему это важно
- меньше шаблонного glue-кода
- проще писать сложную логику с участием LLM
- шаг к более тесной интеграции AI и runtime
- фундамент для новых агентных и интерактивных систем
Это не про ускорение.
Это про изменение архитектуры взаимодействия между программой и моделью.
📌 Статья: arxiv.org/abs/2512.14805
#AI #LLM #Python
@Python_Community_ru
🚀 PyTogether - Google Docs для Python-кода
PyTogether - это браузерная IDE для Python с совместной работой в реальном времени. Несколько человек могут писать и запускать код одновременно, видеть курсоры друг друга и общаться прямо внутри редактора.
Что умеет:
• Совместное редактирование Python-кода (live-collaboration)
• Запуск Python прямо в браузере через Pyodide
• Чат и голосовая связь внутри IDE
• Живые курсоры, выделения и заметки
• Простая авторизация и проекты для команд
• Никакой установки — всё работает в браузере
Кому подойдёт:
• Обучение и менторство
• Парное программирование
• Онлайн-курсы и воркшопы
• Быстрые разборы кода и собесы
Технологии под капотом:
Python (Django, DRF), WebSockets + Y.js для синхронизации, React + CodeMirror, Redis и PostgreSQL. Всё open-source под MIT-лицензией.
Хороший пример того, как современные web-технологии превращают IDE в социальный инструмент для обучения и командной работы.
https://github.com/SJRiz/pytogether
@Python_Community_ru
PyTogether - это браузерная IDE для Python с совместной работой в реальном времени. Несколько человек могут писать и запускать код одновременно, видеть курсоры друг друга и общаться прямо внутри редактора.
Что умеет:
• Совместное редактирование Python-кода (live-collaboration)
• Запуск Python прямо в браузере через Pyodide
• Чат и голосовая связь внутри IDE
• Живые курсоры, выделения и заметки
• Простая авторизация и проекты для команд
• Никакой установки — всё работает в браузере
Кому подойдёт:
• Обучение и менторство
• Парное программирование
• Онлайн-курсы и воркшопы
• Быстрые разборы кода и собесы
Технологии под капотом:
Python (Django, DRF), WebSockets + Y.js для синхронизации, React + CodeMirror, Redis и PostgreSQL. Всё open-source под MIT-лицензией.
Хороший пример того, как современные web-технологии превращают IDE в социальный инструмент для обучения и командной работы.
https://github.com/SJRiz/pytogether
@Python_Community_ru
👍1
🚀 AI Agents for Android Apps
Библиотека для автоматизации работы с нативными Android-приложениями. Идеально подходит для мобильных рабочих процессов в логистике, экономике на заказ и других отраслях, где ноутбук неуместен. Позволяет значительно ускорить выполнение задач и сократить затраты.
🚀 Основные моменты:
- Автоматизация процессов на Android-устройствах
- Снижение затрат на 95% по сравнению с традиционными методами
- Поддержка различных мобильных приложений
- Быстрая реакция — менее 1 секунды на действие
- Идеально для логистики и мобильного обслуживания
📌 GitHub: https://github.com/actionstatelabs/android-action-kernel
@Python_Community_ru
Библиотека для автоматизации работы с нативными Android-приложениями. Идеально подходит для мобильных рабочих процессов в логистике, экономике на заказ и других отраслях, где ноутбук неуместен. Позволяет значительно ускорить выполнение задач и сократить затраты.
🚀 Основные моменты:
- Автоматизация процессов на Android-устройствах
- Снижение затрат на 95% по сравнению с традиционными методами
- Поддержка различных мобильных приложений
- Быстрая реакция — менее 1 секунды на действие
- Идеально для логистики и мобильного обслуживания
📌 GitHub: https://github.com/actionstatelabs/android-action-kernel
@Python_Community_ru