🚀 GigaChat Ultra & Lightning — новые MoE-модели от Сбера
💡 Что это такое
Две открытые (https://ria.ru/20251120/sber-2056388219.html) модели нового поколения, обученные с нуля — без чужих весов. Созданы, чтобы ускорять разработку, уменьшать рутину и быть удобным напарником для разработчиков.
🔥 Что внутри
- Ultra: 702B параметров, контекст до 131k, стабильная работа экспертов
- Lightning: 10B параметров, контекст до 256k, лёгкая и быстрая
- Генерация нескольких токенов одновременно
- Экономия памяти, оптимизация KV-кеша
- Совместимость с Hugging Face, vLLM и SGLang
🎯 Почему стоит использовать
- Сбер снимает часть технических забот, чтобы сосредоточиться на экспериментах
- Ускоряет локальное прототипирование и работу с AI-помощниками
- Подходит для масштабных решений и небольших проектов
@Python_Community_ru
💡 Что это такое
Две открытые (https://ria.ru/20251120/sber-2056388219.html) модели нового поколения, обученные с нуля — без чужих весов. Созданы, чтобы ускорять разработку, уменьшать рутину и быть удобным напарником для разработчиков.
🔥 Что внутри
- Ultra: 702B параметров, контекст до 131k, стабильная работа экспертов
- Lightning: 10B параметров, контекст до 256k, лёгкая и быстрая
- Генерация нескольких токенов одновременно
- Экономия памяти, оптимизация KV-кеша
- Совместимость с Hugging Face, vLLM и SGLang
🎯 Почему стоит использовать
- Сбер снимает часть технических забот, чтобы сосредоточиться на экспериментах
- Ускоряет локальное прототипирование и работу с AI-помощниками
- Подходит для масштабных решений и небольших проектов
@Python_Community_ru
👍1
🚀 myfy - модульный Python-фреймворк с фронтендом «из коробки»
Зачем он нужен: FastAPI - идеален для API, но без нормального фронта.
myfy берёт лучшее из FastAPI и добавляет полноценную модульность, DI и встроенный UI.
🔥 Главное
- Модульная архитектура с жизненным циклом (`start/stop`)
- Type-based DI без скрытой магии
- Фронтенд сразу из коробки:
Jinja2 + DaisyUI + Tailwind + Vite + HMR
Можно делать UI без React/Vue, идеально для внутренних тулов
- Чистая структура проекта, минимум бойлерплейта
🚀 Быстрый старт
pip install myfy
myfy init
myfy frontend init
myfy run
https://github.com/psincraian/myfy
@Python_Community_ru
Зачем он нужен: FastAPI - идеален для API, но без нормального фронта.
myfy берёт лучшее из FastAPI и добавляет полноценную модульность, DI и встроенный UI.
🔥 Главное
- Модульная архитектура с жизненным циклом (`start/stop`)
- Type-based DI без скрытой магии
- Фронтенд сразу из коробки:
Jinja2 + DaisyUI + Tailwind + Vite + HMR
Можно делать UI без React/Vue, идеально для внутренних тулов
- Чистая структура проекта, минимум бойлерплейта
🚀 Быстрый старт
pip install myfy
myfy init
myfy frontend init
myfy run
https://github.com/psincraian/myfy
@Python_Community_ru
🔥3
🔥 10 однострочных Python-функций, которые экономят время каждый день
Держи небольшой набор из 10 функций-однострочников, которые полезно просто закинуть в свой utils.py.
Они помогают быстро работать со списками, файлами, JSON, статистикой и частотами, без лишнего шума в коде.
Скопируй блок целиком и используй нужные функции по месту.
from pathlib import Path
from collections import Counter
import json, statistics as stats
chunks = lambda it, n: [it[i:i + n] for i in range(0, len(it), n)]
flatten = lambda lst: [x for sub in lst for x in sub]
unique = lambda seq: list(dict.fromkeys(seq))
sliding = lambda it, n: [it[i:i + n] for i in range(len(it) - n + 1)]
freqs = lambda seq: Counter(seq)
read_text = lambda p: Path(p).read_text(encoding="utf-8")
write_text = lambda p, text: Path(p).write_text(text, encoding="utf-8")
read_json = lambda p: json.loads(Path(p).read_text(encoding="utf-8"))
write_json = lambda p, obj: Path(p).write_text(json.dumps(obj, ensure_ascii=False, indent=2), encoding="utf-8")
mean_std = lambda xs: (stats.mean(xs), stats.pstdev(xs))
@Python_Community_ru
Держи небольшой набор из 10 функций-однострочников, которые полезно просто закинуть в свой utils.py.
Они помогают быстро работать со списками, файлами, JSON, статистикой и частотами, без лишнего шума в коде.
Скопируй блок целиком и используй нужные функции по месту.
from pathlib import Path
from collections import Counter
import json, statistics as stats
chunks = lambda it, n: [it[i:i + n] for i in range(0, len(it), n)]
flatten = lambda lst: [x for sub in lst for x in sub]
unique = lambda seq: list(dict.fromkeys(seq))
sliding = lambda it, n: [it[i:i + n] for i in range(len(it) - n + 1)]
freqs = lambda seq: Counter(seq)
read_text = lambda p: Path(p).read_text(encoding="utf-8")
write_text = lambda p, text: Path(p).write_text(text, encoding="utf-8")
read_json = lambda p: json.loads(Path(p).read_text(encoding="utf-8"))
write_json = lambda p, obj: Path(p).write_text(json.dumps(obj, ensure_ascii=False, indent=2), encoding="utf-8")
mean_std = lambda xs: (stats.mean(xs), stats.pstdev(xs))
@Python_Community_ru
🔥2
🧵 CPython 3.15 делает распаковку данных намного быстрее
В новой версии CPython улучшили производительность декомпрессии:
- Zstandard (zstd) распаковывается на 25–30% быстрее
- zlib — на 10–15% быстрее, если размер данных больше 1 MiB
Такого ускорения добились за счёт более эффективной работы с выходными буферами во время распаковки.
Подробнее: emmatyping.dev/decompression-is-up-to-30-faster-in-cpython-315.html
@Python_Community_ru
В новой версии CPython улучшили производительность декомпрессии:
- Zstandard (zstd) распаковывается на 25–30% быстрее
- zlib — на 10–15% быстрее, если размер данных больше 1 MiB
Такого ускорения добились за счёт более эффективной работы с выходными буферами во время распаковки.
Подробнее: emmatyping.dev/decompression-is-up-to-30-faster-in-cpython-315.html
@Python_Community_ru
🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Коварная ловушка с замыканиями в Python
Многие хитрые баги в Python появляются из-за того, что разработчики неверно понимают область видимости переменных в замыканиях.
Частая ошибка - внутри цикла создавать функции-лямбды, которые «помнят» одно и то же финальное значение переменной, а не значение на каждой итерации. В итоге весь список функций ведёт себя одинаково. Чтобы избежать ловушки, фиксируйте значение через аргумент по умолчанию или используйте functools.partial.
funcs = []
for i in range(5):
funcs.append(lambda x=i: x) # фиксируем i как значение по умолчанию
print([f() for f in funcs]) # [0, 1, 2, 3, 4]
@Python_Community_ru
Многие хитрые баги в Python появляются из-за того, что разработчики неверно понимают область видимости переменных в замыканиях.
Частая ошибка - внутри цикла создавать функции-лямбды, которые «помнят» одно и то же финальное значение переменной, а не значение на каждой итерации. В итоге весь список функций ведёт себя одинаково. Чтобы избежать ловушки, фиксируйте значение через аргумент по умолчанию или используйте functools.partial.
funcs = []
for i in range(5):
funcs.append(lambda x=i: x) # фиксируем i как значение по умолчанию
print([f() for f in funcs]) # [0, 1, 2, 3, 4]
@Python_Community_ru
👍6
🌀 В Python есть встроенная функция reversed(), но работает она не со всеми структурами данных. Быстрый разбор:
✓ Список можно развернуть
reversed([1, 2, 3]) возвращает итератор.
list(reversed([1, 2, 3])) → [3, 2, 1]
✓ Кортежи тоже разворачиваются
Можно итерироваться по reversed((1, 2, 3))
✓ Множества не разворачиваются
reversed({1, 2, 3}) → TypeError: 'set' object is not reversible
Причина: множества *не имеют порядка*, а значит разворачивать нечего.
Если нужно развернуть множество — сначала сделай его списком:
list(reversed(list({1, 2, 3})))
@Python_Community_ru
✓ Список можно развернуть
reversed([1, 2, 3]) возвращает итератор.
list(reversed([1, 2, 3])) → [3, 2, 1]
✓ Кортежи тоже разворачиваются
Можно итерироваться по reversed((1, 2, 3))
✓ Множества не разворачиваются
reversed({1, 2, 3}) → TypeError: 'set' object is not reversible
Причина: множества *не имеют порядка*, а значит разворачивать нечего.
Если нужно развернуть множество — сначала сделай его списком:
list(reversed(list({1, 2, 3})))
@Python_Community_ru
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Безопасный запуск Linux-команд из Python
Если нужно из Python безопасно выполнять системные команды в Linux, используй изоляцию через subprocess с принудительным сбросом привилегий. Такой приём позволяет запускать команды даже в окружениях с потенциально небезопасным вводом, блокируя доступ к опасным системным вызовам и снижая риск эксплуатации.
import subprocess
import os
def safe_run(cmd):
# Запускаем процесс без наследования переменных окружения
env = {"PATH": "/usr/bin:/bin"}
# Сбрасываем привилегии, если процесс запущен от root
def drop_priv():
os.setgid(65534)
os.setuid(65534)
result = subprocess.run(
cmd,
env=env,
preexec_fn=drop_priv,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True,
timeout=3,
)
return result.stdout
print(safe_run(["ls", "/"]))
@Python_Community_ru
Если нужно из Python безопасно выполнять системные команды в Linux, используй изоляцию через subprocess с принудительным сбросом привилегий. Такой приём позволяет запускать команды даже в окружениях с потенциально небезопасным вводом, блокируя доступ к опасным системным вызовам и снижая риск эксплуатации.
import subprocess
import os
def safe_run(cmd):
# Запускаем процесс без наследования переменных окружения
env = {"PATH": "/usr/bin:/bin"}
# Сбрасываем привилегии, если процесс запущен от root
def drop_priv():
os.setgid(65534)
os.setuid(65534)
result = subprocess.run(
cmd,
env=env,
preexec_fn=drop_priv,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True,
timeout=3,
)
return result.stdout
print(safe_run(["ls", "/"]))
@Python_Community_ru
🔥3
Изучаем Python, Docker, Git и выходим в DevOps с абсолютного нуля — нашли огромную библиотеку с сотнями подробных материалов.
• Сильная теоретическая база: язык программирования, сети, базы данных, система контроля версий.
• Короткие, но насыщенные уроки — учись по дороге на работу, в обед или во время короткого перерыва.
• Много практики — закрепишь навыки, соберёшь проекты и усилишь своё портфолио.
• Всё объясняется пошагово, простым языком — подойдёт даже тем, кто только сегодня услышал слово «программирование».
https://kodekloud.com/studio/labs
@Python_Community_ru
• Сильная теоретическая база: язык программирования, сети, базы данных, система контроля версий.
• Короткие, но насыщенные уроки — учись по дороге на работу, в обед или во время короткого перерыва.
• Много практики — закрепишь навыки, соберёшь проекты и усилишь своё портфолио.
• Всё объясняется пошагово, простым языком — подойдёт даже тем, кто только сегодня услышал слово «программирование».
https://kodekloud.com/studio/labs
@Python_Community_ru
👍4
🛠️ Tracer для системных вызовов на macOS
strace-macos — это инструмент для отслеживания системных вызовов на macOS с использованием API отладчика LLDB. Он работает с включенной защитой целостности системы и написан на чистом Python, что исключает необходимость в расширениях ядра.
🚀 Основные моменты:
- Поддержка SIP без отключения
- Вывод в формате JSON и текстовом формате
- Фильтрация системных вызовов по имени и категории
- Символическое декодирование аргументов
- Статистика вызовов и ошибок
📌 GitHub: https://github.com/Mic92/strace-macos
@Python_Community_ru
strace-macos — это инструмент для отслеживания системных вызовов на macOS с использованием API отладчика LLDB. Он работает с включенной защитой целостности системы и написан на чистом Python, что исключает необходимость в расширениях ядра.
🚀 Основные моменты:
- Поддержка SIP без отключения
- Вывод в формате JSON и текстовом формате
- Фильтрация системных вызовов по имени и категории
- Символическое декодирование аргументов
- Статистика вызовов и ошибок
📌 GitHub: https://github.com/Mic92/strace-macos
@Python_Community_ru
🔥1
🔧 Утилиты для C++ и Python
Этот репозиторий предлагает набор полезных утилит для работы с C++ и Python, упрощая взаимодействие между этими языками. Он включает функции для обработки данных, работы с файлами и выполнения различных задач, что делает его идеальным для разработчиков, работающих с обоими языками.
🚀 Основные моменты:
- Инструменты для обработки и анализа данных
- Удобные функции для работы с файлами
- Поддержка взаимодействия между C++ и Python
- Легкая интеграция в проекты
- Документация для быстрого старта
📌 GitHub: https://github.com/xZepyx/cpp-pyutils
@Python_Community_ru
Этот репозиторий предлагает набор полезных утилит для работы с C++ и Python, упрощая взаимодействие между этими языками. Он включает функции для обработки данных, работы с файлами и выполнения различных задач, что делает его идеальным для разработчиков, работающих с обоими языками.
🚀 Основные моменты:
- Инструменты для обработки и анализа данных
- Удобные функции для работы с файлами
- Поддержка взаимодействия между C++ и Python
- Легкая интеграция в проекты
- Документация для быстрого старта
📌 GitHub: https://github.com/xZepyx/cpp-pyutils
@Python_Community_ru
👍2
🖥 (https://t.iss.one/+cFLtJ_U2cbZjYzUy)Bash Академия (https://t.iss.one/+-Dm7V9sQgw5iNGNi): секреты командной строки, которые нигде не рассказывают
Олег Шелест - профессионал по информационной безопасности, раскрывает скрытые механики Linux, с помощью наглядных картинок и коротких, максимально понятных разборов у себя в тг канале.
- Без воды.
- Без лишней теории.
Только практические приёмы, которые реально используют профи.
Если хочешь уверенно владеть Bash - здесь ты получишь всё, что нужно: t.iss.one/bashmastter (https://t.iss.one/+-Dm7V9sQgw5iNGNi)
@Python_Community_ru
Олег Шелест - профессионал по информационной безопасности, раскрывает скрытые механики Linux, с помощью наглядных картинок и коротких, максимально понятных разборов у себя в тг канале.
- Без воды.
- Без лишней теории.
Только практические приёмы, которые реально используют профи.
Если хочешь уверенно владеть Bash - здесь ты получишь всё, что нужно: t.iss.one/bashmastter (https://t.iss.one/+-Dm7V9sQgw5iNGNi)
@Python_Community_ru
👍3
🖥 Минимальный и безопасный Dockerfile для Python-приложения.
В основе - python:3.11-slim, установка только нужных пакетов, удаление apt-кэша, отдельный системный пользователь без root-прав, изоляция рабочего каталога и установка зависимостей под ненадёжным пользователем.
Такой контейнер легче, безопаснее и запускается быстрее.
Отличная база для продакшена.
Переход на non-root пользователя резко снижает возможный ущерб, ограничивает доступ к файлам и заставляет держать порядок с правами и владением.
Docker (https://t.iss.one/+0WdB4uvOwCY0Mjdi) - все о Docker и Devops
@Python_Community_ru
В основе - python:3.11-slim, установка только нужных пакетов, удаление apt-кэша, отдельный системный пользователь без root-прав, изоляция рабочего каталога и установка зависимостей под ненадёжным пользователем.
Такой контейнер легче, безопаснее и запускается быстрее.
Отличная база для продакшена.
Переход на non-root пользователя резко снижает возможный ущерб, ограничивает доступ к файлам и заставляет держать порядок с правами и владением.
Docker (https://t.iss.one/+0WdB4uvOwCY0Mjdi) - все о Docker и Devops
@Python_Community_ru
🔥2
🎤 Быстрый текст-в-речь с Supertonic
Supertonic — это высокопроизводительная система текст-в-речь, работающая на вашем устройстве. Она обеспечивает молниеносное создание речи с минимальными затратами ресурсов и полным соблюдением конфиденциальности. Никаких облачных решений — всё происходит локально.
🚀Основные моменты:
- ⚡ Генерация речи до 167× быстрее реального времени
- 🪶 Легковесная архитектура с 66M параметрами
- 📱 Полная обработка на устройстве без задержек
- 🎨 Обработка сложных текстов без предварительной подготовки
- ⚙️ Гибкая настройка параметров и развертывания
📌 GitHub: https://github.com/supertone-inc/supertonic
#python
@Python_Community_ru
Supertonic — это высокопроизводительная система текст-в-речь, работающая на вашем устройстве. Она обеспечивает молниеносное создание речи с минимальными затратами ресурсов и полным соблюдением конфиденциальности. Никаких облачных решений — всё происходит локально.
🚀Основные моменты:
- ⚡ Генерация речи до 167× быстрее реального времени
- 🪶 Легковесная архитектура с 66M параметрами
- 📱 Полная обработка на устройстве без задержек
- 🎨 Обработка сложных текстов без предварительной подготовки
- ⚙️ Гибкая настройка параметров и развертывания
📌 GitHub: https://github.com/supertone-inc/supertonic
#python
@Python_Community_ru
🧩 Python Keylogger: Educational Tool for Data Capture
Этот репозиторий представляет собой простой кейлоггер на Python с использованием библиотеки Pynput. Он демонстрирует, как собирать данные и отправлять их на сервер, предназначен исключительно для образовательных целей и осведомленности о безопасности.
🚀Основные моменты:
- Легкий в использовании кейлоггер на Python.
- Использует библиотеку Pynput для захвата нажатий клавиш.
- Предназначен для образовательных целей, не для злоупотреблений.
- Возможность отправки данных на сервер.
- Пример реализации, который можно улучшить.
📌 GitHub: https://github.com/ahoaparadox8/python-keylogger
@Python_Community_ru
Этот репозиторий представляет собой простой кейлоггер на Python с использованием библиотеки Pynput. Он демонстрирует, как собирать данные и отправлять их на сервер, предназначен исключительно для образовательных целей и осведомленности о безопасности.
🚀Основные моменты:
- Легкий в использовании кейлоггер на Python.
- Использует библиотеку Pynput для захвата нажатий клавиш.
- Предназначен для образовательных целей, не для злоупотреблений.
- Возможность отправки данных на сервер.
- Пример реализации, который можно улучшить.
📌 GitHub: https://github.com/ahoaparadox8/python-keylogger
@Python_Community_ru
👍2
🖥 GitHub обновил Copilot - функция Next Edit Suggestions теперь понимает твои правки по шагам и предлагает логичные следующие изменения.
Что улучшили:
• Модель обучили на реальных сессиях редактирования, а не только на итоговом коде
• Задержка стала ниже - подсказки появляются почти мгновенно
• Предложения стали точнее и полезнее: фиксы, рефакторинг, дополнения, улучшение структуры
Как обучали:
1) Данных из pull-requests оказалось мало, там нет промежуточных правок
2) GitHub собрал датасет настоящих редакторских сессий — шаг за шагом
3) После дообучения модель улучшили через RL - отдельная модель оценивает, насколько полезна подсказка
Зачем это нужно:
Copilot теперь работает не как автодополнение, а как помощник по редактированию, он видит, что ты меняешь, понимает контекст и предсказывает твой следующий шаг. Это ускоряет работу и снижает количество ручных действий.
https://github.blog/ai-and-ml/github-copilot/evolving-github-copilots-next-edit-suggestions-through-custom-model-training/
@python
@Python_Community_ru
Что улучшили:
• Модель обучили на реальных сессиях редактирования, а не только на итоговом коде
• Задержка стала ниже - подсказки появляются почти мгновенно
• Предложения стали точнее и полезнее: фиксы, рефакторинг, дополнения, улучшение структуры
Как обучали:
1) Данных из pull-requests оказалось мало, там нет промежуточных правок
2) GitHub собрал датасет настоящих редакторских сессий — шаг за шагом
3) После дообучения модель улучшили через RL - отдельная модель оценивает, насколько полезна подсказка
Зачем это нужно:
Copilot теперь работает не как автодополнение, а как помощник по редактированию, он видит, что ты меняешь, понимает контекст и предсказывает твой следующий шаг. Это ускоряет работу и снижает количество ручных действий.
https://github.blog/ai-and-ml/github-copilot/evolving-github-copilots-next-edit-suggestions-through-custom-model-training/
@python
@Python_Community_ru
This media is not supported in your browser
VIEW IN TELEGRAM
✖ НЕЛЬЗЯ ИСПОЛЬЗОВАТЬ LAMBDA В ЦИКЛЕ И ОЖИДАТЬ ЧТО ОНА "ЗАПОМНИТ" ПЕРЕМЕННУЮ.
Из-за этого все лямбды, созданные в цикле, будут ссылаться на одно и то же последнее значение.
Код выглядит нормальным, а ведёт себя странно — это классическая проблема замыканий в Python.
Правильно — фиксировать значение через аргумент по умолчанию или выносить в обычную функцию.
Подписывайся, больше фишек каждый день !
# скрытая ошибка — lambda в цикле захватывает последнюю переменную
funcs = []
for i in range(5):
funcs.append(lambda: i) # кажется, что вернёт 0,1,2,3,4 — но нет
# все лямбды вернут одно и то же значение
print([f() for f in funcs]) # [4, 4, 4, 4, 4]
# правильный вариант
funcs_fixed = [lambda x=i: x for i in range(5)]
print([f() for f in funcs_fixed]) # [0, 1, 2, 3, 4]
@Python_Community_ru
Из-за этого все лямбды, созданные в цикле, будут ссылаться на одно и то же последнее значение.
Код выглядит нормальным, а ведёт себя странно — это классическая проблема замыканий в Python.
Правильно — фиксировать значение через аргумент по умолчанию или выносить в обычную функцию.
Подписывайся, больше фишек каждый день !
# скрытая ошибка — lambda в цикле захватывает последнюю переменную
funcs = []
for i in range(5):
funcs.append(lambda: i) # кажется, что вернёт 0,1,2,3,4 — но нет
# все лямбды вернут одно и то же значение
print([f() for f in funcs]) # [4, 4, 4, 4, 4]
# правильный вариант
funcs_fixed = [lambda x=i: x for i in range(5)]
print([f() for f in funcs_fixed]) # [0, 1, 2, 3, 4]
@Python_Community_ru