This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ MicroVMS — новая платформа для запуска кода от AI-агентов с максимальной безопасностью и скоростью.
В отличие от Docker и других тяжелых решений, MicroVMS использует легковесные песочницы для быстрой изоляции, мгновенного старта и простого управления.
● Поддержка разных сред: Python, Node.js и другие
● Идеально для AI-агентов — разработка и запуск без лишних сложностей
● Удобная система управления проектами — настройка песочниц в пару кликов
Если вы хотите запускать код AI-агентов быстро, безопасно и удобно — обратите внимание на MicroVMS.
`pip install microsandbox`
🔗 Github (https://github.com/microsandbox/microsandbox)
@python_be1
В отличие от Docker и других тяжелых решений, MicroVMS использует легковесные песочницы для быстрой изоляции, мгновенного старта и простого управления.
● Поддержка разных сред: Python, Node.js и другие
● Идеально для AI-агентов — разработка и запуск без лишних сложностей
● Удобная система управления проектами — настройка песочниц в пару кликов
Если вы хотите запускать код AI-агентов быстро, безопасно и удобно — обратите внимание на MicroVMS.
`pip install microsandbox`
🔗 Github (https://github.com/microsandbox/microsandbox)
@python_be1
✔️Пять нейросетей — один вопрос. Спорят до идеального ответа.**
Разработчики запустили Nexus of Mind — платформу, где сразу *пять* топовых ИИ дискутируют над вашим вопросом, чтобы выдать на выходе максимально точный, согласованный и аргументированный ответ.
🔥 Что внутри:
• В одном чате — ChatGPT, Gemini, DeepSeek, LLaMA и Cohere
• Моде
https://nexusofmind.world/
@python_be1
Разработчики запустили Nexus of Mind — платформу, где сразу *пять* топовых ИИ дискутируют над вашим вопросом, чтобы выдать на выходе максимально точный, согласованный и аргументированный ответ.
🔥 Что внутри:
• В одном чате — ChatGPT, Gemini, DeepSeek, LLaMA и Cohere
• Моде
https://nexusofmind.world/
@python_be1
🚀 Pipedream — платформа для создания интеграций и автоматизаций между сервисами. Этот инструмент позволяет соединять более 1000 приложений через готовые компоненты или собственный код на Node.js, Python, Go и Bash.
Главное преимущество проекта — это гибкость: можно быстро настроить триггеры и цепочки действий без сложной инфраструктуры. Для кастомных сценариев доступно выполнение произвольного кода с подключением любых npm/pip-пакетов. Интеграции развертываются в облаке Pipedream, что избавляет от необходимости настраивать серверы.
🤖 GitHub (https://github.com/PipedreamHQ/pipedream)
@python_be1
Главное преимущество проекта — это гибкость: можно быстро настроить триггеры и цепочки действий без сложной инфраструктуры. Для кастомных сценариев доступно выполнение произвольного кода с подключением любых npm/pip-пакетов. Интеграции развертываются в облаке Pipedream, что избавляет от необходимости настраивать серверы.
🤖 GitHub (https://github.com/PipedreamHQ/pipedream)
@python_be1
🚀 TurboDRF — ускоритель Django REST Framework без боли
TurboDRF — лёгкий способ ускорить ваш Django API без перехода на FastAPI или переписывания логики.
🔥 Что даёт TurboDRF:
• ⚡ Быстрый рендер сериализаторов
• 🧠 Автоматический `prefetch_related` и `select_related`
• 🧊 Кэширование сериализованных ответов
• 🧩 Совместим с обычными DRF-сериализаторами
📦 Установка:
`pip install turbodrf`
🛠️ Пример:
```
from turbodrf.mixins import TurboModelSerializer
class MySerializer(TurboModelSerializer):
class Meta:
model = MyModel
fields = "__all__"
```
✅ Идеален для больших Django-проектов, где важна скорость ответа.
🔗 GitHub: https://github.com/alexandercollins/turbodrf
@python_be1
TurboDRF — лёгкий способ ускорить ваш Django API без перехода на FastAPI или переписывания логики.
🔥 Что даёт TurboDRF:
• ⚡ Быстрый рендер сериализаторов
• 🧠 Автоматический `prefetch_related` и `select_related`
• 🧊 Кэширование сериализованных ответов
• 🧩 Совместим с обычными DRF-сериализаторами
📦 Установка:
`pip install turbodrf`
🛠️ Пример:
```
from turbodrf.mixins import TurboModelSerializer
class MySerializer(TurboModelSerializer):
class Meta:
model = MyModel
fields = "__all__"
```
✅ Идеален для больших Django-проектов, где важна скорость ответа.
🔗 GitHub: https://github.com/alexandercollins/turbodrf
@python_be1
🖥 Вышел Git 2.50
Вот основные обновления:
1. Новый уровень работы с cruft packs
- Git хранит неиспользуемые (невидимые) объекты в специальных “cruft packs”.
- Раньше управлять ими было сложно: чтобы добавить или объединить объекты, нужно было всё перепаковывать, что занимало много времени и места.
- Теперь появился флаг `--combine-cruft-below-size`: можно легко объединять мелкие cruft packs в один, постепенно “чистить” репозиторий.
- Исправлена важная ошибка: раньше такие объекты могли случайно удаляться раньше времени — теперь это под контролем.
2. Быстрее для больших репозиториев — многослойные битмапы
- В больших проектах Git создаёт специальные “карты” (bitmaps), чтобы быстро понимать, какие объекты нужны для определённых коммитов.
- Новая версия поддерживает “инкрементальные” битмапы для multi-pack index — можно добавлять новые данные быстро, не пересоздавая всю структуру.
3. Новый движок слияния ORT
- Старый движок `recursive` полностью удалён: теперь слияния (`merge`) обрабатывает только быстрый и надёжный ORT.
- Это упростит разработку, повысит скорость merge и уменьшит количество ошибок.
4. Улучшения в утилитах и команде cat-file
- Теперь можно фильтровать объекты по типу, например, быстро получить только “деревья” (tree) с помощью `--filter='object:type=tree'`.
- Команда для удаления reflog стала интуитивной: вместо сложных параметров просто пишем `git reflog delete <branch>`.
5. Больше контроля над сетевыми соединениями
- Добавлены настройки для TCP Keepalive, теперь можно гибко управлять поведением Git в нестабильных сетях.
6. Меньше Perl — проще тестировать и собирать
- Git ещё больше избавился от зависимостей на Perl: тесты и документация теперь проще и стабильнее, особенно на системах без Perl.
7. Работа с разреженными (sparse) репозиториями стала удобнее
- Команды вроде `git add -p` теперь не требуют полной загрузки содержимого — удобно при работе с огромными проектами.
8. Косметические улучшения
- При ребейзе (rebase -i) названия коммитов теперь оформляются как комментарии — так ясно, что это просто для ориентира.
9. Быстрее клонируем через bundle-uri
- Git стал лучше справляться с ускоренным клонированием через *.bundle: теперь клиент правильно учитывает все ссылки, ускоряя загрузку репозитория.
Git 2.50 — это не просто исправление багов, а реальное ускорение и упрощение работы для всех, кто ведёт большие проекты, часто сливает ветки и заботится о “чистоте” репозитория. Новые команды делают жизнь проще, а старые баги — ушли в прошлое.
➡️ Почитать про все обновления (https://github.blog/open-source/git/highlights-from-git-2-50/)
@python_be1
Вот основные обновления:
1. Новый уровень работы с cruft packs
- Git хранит неиспользуемые (невидимые) объекты в специальных “cruft packs”.
- Раньше управлять ими было сложно: чтобы добавить или объединить объекты, нужно было всё перепаковывать, что занимало много времени и места.
- Теперь появился флаг `--combine-cruft-below-size`: можно легко объединять мелкие cruft packs в один, постепенно “чистить” репозиторий.
- Исправлена важная ошибка: раньше такие объекты могли случайно удаляться раньше времени — теперь это под контролем.
2. Быстрее для больших репозиториев — многослойные битмапы
- В больших проектах Git создаёт специальные “карты” (bitmaps), чтобы быстро понимать, какие объекты нужны для определённых коммитов.
- Новая версия поддерживает “инкрементальные” битмапы для multi-pack index — можно добавлять новые данные быстро, не пересоздавая всю структуру.
3. Новый движок слияния ORT
- Старый движок `recursive` полностью удалён: теперь слияния (`merge`) обрабатывает только быстрый и надёжный ORT.
- Это упростит разработку, повысит скорость merge и уменьшит количество ошибок.
4. Улучшения в утилитах и команде cat-file
- Теперь можно фильтровать объекты по типу, например, быстро получить только “деревья” (tree) с помощью `--filter='object:type=tree'`.
- Команда для удаления reflog стала интуитивной: вместо сложных параметров просто пишем `git reflog delete <branch>`.
5. Больше контроля над сетевыми соединениями
- Добавлены настройки для TCP Keepalive, теперь можно гибко управлять поведением Git в нестабильных сетях.
6. Меньше Perl — проще тестировать и собирать
- Git ещё больше избавился от зависимостей на Perl: тесты и документация теперь проще и стабильнее, особенно на системах без Perl.
7. Работа с разреженными (sparse) репозиториями стала удобнее
- Команды вроде `git add -p` теперь не требуют полной загрузки содержимого — удобно при работе с огромными проектами.
8. Косметические улучшения
- При ребейзе (rebase -i) названия коммитов теперь оформляются как комментарии — так ясно, что это просто для ориентира.
9. Быстрее клонируем через bundle-uri
- Git стал лучше справляться с ускоренным клонированием через *.bundle: теперь клиент правильно учитывает все ссылки, ускоряя загрузку репозитория.
Git 2.50 — это не просто исправление багов, а реальное ускорение и упрощение работы для всех, кто ведёт большие проекты, часто сливает ветки и заботится о “чистоте” репозитория. Новые команды делают жизнь проще, а старые баги — ушли в прошлое.
➡️ Почитать про все обновления (https://github.blog/open-source/git/highlights-from-git-2-50/)
@python_be1
🐍 PyLeak — найди утечку памяти в своём Python-коде
PyLeak — простой и мощный инструмент для отладки утечек памяти в Python-приложениях.
🔍 Возможности:
• Показывает объекты, которые не удаляет сборщик мусора
• Строит граф зависимостей между объектами
• Выявляет циклические ссылки и "висящие" объекты
• Поддерживает визуализацию через Graphviz
📦 Установка:
`pip install pyleak`
🧰 Идеален для отладки сервисов, где память утекает незаметно.
🔗 GitHub (https://github.com/deepankarm/pyleak)
@python_be1
PyLeak — простой и мощный инструмент для отладки утечек памяти в Python-приложениях.
🔍 Возможности:
• Показывает объекты, которые не удаляет сборщик мусора
• Строит граф зависимостей между объектами
• Выявляет циклические ссылки и "висящие" объекты
• Поддерживает визуализацию через Graphviz
📦 Установка:
`pip install pyleak`
🧰 Идеален для отладки сервисов, где память утекает незаметно.
🔗 GitHub (https://github.com/deepankarm/pyleak)
@python_be1
🎯 Практическое руководство: Signals — реактивное управление состоянием в Python
Недавно вышло отличное руководство «The Missing Manual for Signals: State Management for Python Developers», где автор показывает, как внедрять реактивную модель на Python с помощью библиотеки
Почему Signals полезны
Стандартный подход—императивный—скрывает зависимости между переменными, что ведёт к ошибкам:
class OrderService:
def add_order(self, order):
self.orders.append(order)
self.total += order.amount
self.avg = self.total / len(self.orders)
self.notify_if_needed()
self.track_analytics()
Если забыть обновить одно значение — всё сломается.
Как работают Signals
Signals = реактивные переменные, которые:
1. Хранят значение (`Signal`)
2. Автоматически вычисляют производные (`Computed`)
3. Выполняют побочные действия (`Effect`) на изменениях
Пример:
from reaktiv import Signal, Computed, Effect
orders = Signal([])
total = Computed(lambda: sum(o.amount for o in orders()))
avg = Computed(lambda: total() / len(orders()) if orders() else 0)
Effect(lambda: notify(avg()) if avg() > 100 else None)
orders.update(lambda os: os + [new_order])
Теперь всё обновляется автоматически — вручную ничего делать не нужно.
Когда стоит применять
* Сложные производные значения, зависящие от нескольких источников
* Реальные Cascading-настройки, например, конфиг, кэши, соединения
* Сценарии real-time: дашборды, метрики, воркфлоу
Когда лучше не использовать
* Простые последовательные преобразования
* Одноразовые API-вызовы
* Прямолинейные функции (например, вычисление налога)
Основные преимущества
- ✅ Чёткое, декларативное управление зависимостями
- ✅ Обновления только нужных значений благодаря ленивому пересчёту
- ✅ Упрощение тестирования и устранение ошибок обновления
Реальные примеры
- Управление конфигурацией микросервисов
- Реализация real-time дашбордов
- Мониторинг состояния кластера, триггеры скейлинга
💡 Итог: Signals — отличная альтернатива громоздкому императиву.
Декларируешь связь один раз, и система сама поддерживает согласованность.
Полезно как для backend‑разработчиков, так и для ML‑инженеров.
📚 Материал — ~16 минут чтения, и он того стоит
📌 Читать (https://bui.app/the-missing-manual-for-signals-state-management-for-python-developers/)
@python_be1
Недавно вышло отличное руководство «The Missing Manual for Signals: State Management for Python Developers», где автор показывает, как внедрять реактивную модель на Python с помощью библиотеки
Почему Signals полезны
Стандартный подход—императивный—скрывает зависимости между переменными, что ведёт к ошибкам:
class OrderService:
def add_order(self, order):
self.orders.append(order)
self.total += order.amount
self.avg = self.total / len(self.orders)
self.notify_if_needed()
self.track_analytics()
Если забыть обновить одно значение — всё сломается.
Как работают Signals
Signals = реактивные переменные, которые:
1. Хранят значение (`Signal`)
2. Автоматически вычисляют производные (`Computed`)
3. Выполняют побочные действия (`Effect`) на изменениях
Пример:
from reaktiv import Signal, Computed, Effect
orders = Signal([])
total = Computed(lambda: sum(o.amount for o in orders()))
avg = Computed(lambda: total() / len(orders()) if orders() else 0)
Effect(lambda: notify(avg()) if avg() > 100 else None)
orders.update(lambda os: os + [new_order])
Теперь всё обновляется автоматически — вручную ничего делать не нужно.
Когда стоит применять
* Сложные производные значения, зависящие от нескольких источников
* Реальные Cascading-настройки, например, конфиг, кэши, соединения
* Сценарии real-time: дашборды, метрики, воркфлоу
Когда лучше не использовать
* Простые последовательные преобразования
* Одноразовые API-вызовы
* Прямолинейные функции (например, вычисление налога)
Основные преимущества
- ✅ Чёткое, декларативное управление зависимостями
- ✅ Обновления только нужных значений благодаря ленивому пересчёту
- ✅ Упрощение тестирования и устранение ошибок обновления
Реальные примеры
- Управление конфигурацией микросервисов
- Реализация real-time дашбордов
- Мониторинг состояния кластера, триггеры скейлинга
💡 Итог: Signals — отличная альтернатива громоздкому императиву.
Декларируешь связь один раз, и система сама поддерживает согласованность.
Полезно как для backend‑разработчиков, так и для ML‑инженеров.
📚 Материал — ~16 минут чтения, и он того стоит
📌 Читать (https://bui.app/the-missing-manual-for-signals-state-management-for-python-developers/)
@python_be1
🖥 Быстрый совет Linux: Узнай, какой у тебя shell
Хочешь быстро узнать, какой shell ты сейчас используешь? Просто введи:
```
echo $0
```
📝 Важно:
Команда работает корректно только из интерактивного терминала. Если ты вызываешь её внутри скрипта — она может вернуть имя самого скрипта, а не shell.
Альтернативные способы:
```
echo $SHELL
which $SHELL
```
📌 $0 показывает запущенную оболочку,
а $SHELL — дефолтную оболочку, заданную в настройках пользователя (например, в `/etc/passwd`)
@python_be1
Хочешь быстро узнать, какой shell ты сейчас используешь? Просто введи:
```
echo $0
```
📝 Важно:
Команда работает корректно только из интерактивного терминала. Если ты вызываешь её внутри скрипта — она может вернуть имя самого скрипта, а не shell.
Альтернативные способы:
```
echo $SHELL
which $SHELL
```
📌 $0 показывает запущенную оболочку,
а $SHELL — дефолтную оболочку, заданную в настройках пользователя (например, в `/etc/passwd`)
@python_be1
✔️ LAION и Intel создали инструмент для анализа 40 эмоций по мимике и голосу.
Совместный проект «Empathic Insight» - это набор моделей и датасетов для распознавания эмоций. Система оценивает интенсивность 40 эмоций на изображениях или аудиозаписях, используя шкалу от 0 до 7 для лиц и градации «отсутствие/слабо/сильно» для голоса. В основе - модели EmoNet, которые оперируют вероятностями и построенные на расширенной эмоциональной таксономии.
Для обучения использовали 203 тыс. синтетических лиц и 4,7 тыс. аудиозаписей, включая данные из датасета Laion’s Got Talent (https://huggingface.co/datasets/laion/laions_got_talent_raw) (5 тыс. часов речи на нескольких языках). EmoNet обешел Gemini 2.5 Pro и Hume AI в точности соответствия оценкам психологов.
Попутно разработанаBUD-E Whisper (https://huggingface.co/laion/BUD-E-Whisper) - файнтюн Whisper, добавляющая анализ эмоций, возраста и пола в транскрибацию. Модели доступны (https://huggingface.co/collections/laion/emonet-6855238709fb1b2a7295d4ed) на Hugging Face под лицензиями CC и Apache 2.0.
laion.ai (https://laion.ai/blog/do-they-see-what-we-see/)
@python_be1
Совместный проект «Empathic Insight» - это набор моделей и датасетов для распознавания эмоций. Система оценивает интенсивность 40 эмоций на изображениях или аудиозаписях, используя шкалу от 0 до 7 для лиц и градации «отсутствие/слабо/сильно» для голоса. В основе - модели EmoNet, которые оперируют вероятностями и построенные на расширенной эмоциональной таксономии.
Для обучения использовали 203 тыс. синтетических лиц и 4,7 тыс. аудиозаписей, включая данные из датасета Laion’s Got Talent (https://huggingface.co/datasets/laion/laions_got_talent_raw) (5 тыс. часов речи на нескольких языках). EmoNet обешел Gemini 2.5 Pro и Hume AI в точности соответствия оценкам психологов.
Попутно разработанаBUD-E Whisper (https://huggingface.co/laion/BUD-E-Whisper) - файнтюн Whisper, добавляющая анализ эмоций, возраста и пола в транскрибацию. Модели доступны (https://huggingface.co/collections/laion/emonet-6855238709fb1b2a7295d4ed) на Hugging Face под лицензиями CC и Apache 2.0.
laion.ai (https://laion.ai/blog/do-they-see-what-we-see/)
@python_be1
🛠️ CRUDAdmin — генератор админок на Python за минуты
`crudadmin` — это фреймворк на Python для моментальной генерации интерфейсов на основе SQLAlchemy-моделей.
🔹 Поддержка Flask и FastAPI
🔹 Автоматическая генерация CRUD-интерфейсов
🔹 Простая настройка и кастомизация форм
🔹 Поддержка авторизации и управления доступом
🔹 Пагинация, поиск, фильтры — всё из коробки
📦 Установка:
```
pip install crudadmin
```
🔗 GitHub (https://github.com/benavlabs/crudadmi)
@python_be1
`crudadmin` — это фреймворк на Python для моментальной генерации интерфейсов на основе SQLAlchemy-моделей.
🔹 Поддержка Flask и FastAPI
🔹 Автоматическая генерация CRUD-интерфейсов
🔹 Простая настройка и кастомизация форм
🔹 Поддержка авторизации и управления доступом
🔹 Пагинация, поиск, фильтры — всё из коробки
📦 Установка:
```
pip install crudadmin
```
🔗 GitHub (https://github.com/benavlabs/crudadmi)
@python_be1
📦 InvenTree — умная система учета для мастерских и инженерных проектов. Этот open-source инструмент — достойная замена Excel, которая поможет вам перестать страдать от перегруженных корпоративных систем.
Инструмент предлагает продуманный баланс между простотой и функциональностью: отслеживание деталей, управление несколькими складами, работа с партиями и серийными номерами — всё в одном месте.
📌 Особенности проекта:
— Гибкая интеграция через REST API и Python-модули
— Мобильные приложения для iOS/Android со сканированием штрих-кодов
— Плагинная система для кастомизации под конкретные нужды
— Простой деплой — от Docker до однострочной установки на Linux
🤖 GitHub (https://github.com/inventree/InvenTree)
@python_be1
Инструмент предлагает продуманный баланс между простотой и функциональностью: отслеживание деталей, управление несколькими складами, работа с партиями и серийными номерами — всё в одном месте.
📌 Особенности проекта:
— Гибкая интеграция через REST API и Python-модули
— Мобильные приложения для iOS/Android со сканированием штрих-кодов
— Плагинная система для кастомизации под конкретные нужды
— Простой деплой — от Docker до однострочной установки на Linux
🤖 GitHub (https://github.com/inventree/InvenTree)
@python_be1
ChatGPT решит ЛЮБУЮ вашу проблему — нашли промт, который превратит ИИ в жёсткую машину для стратегического мышления.
Забираем:
Your role:
You are the Mental Model Mastermind, an AI that transforms ordinary thinking into extraordinary insights by applying powerful mental models to any problem or question.
## Your Mission:
I’ll present you with a problem, decision, or situation. You’ll respond by analyzing it through EXACTLY 5 different mental models or frameworks, revealing hidden insights and perspectives I would never see on my own.
## For Each Mental Model:
1. Name & Brief Explanation - Identify the mental model and explain it in one sentence
2. New Perspective - Show how this model completely reframes my situation
3. Key Insight - Reveal the non-obvious truth this model exposes
4. Practical Action - Suggest one specific action based on this insight
## Mental Models to Choose From:
Choose the 5 MOST RELEVANT models from this list for my specific situation:
- First Principles Thinking
- Inversion (thinking backwards)
- Opportunity Cost
- Second-Order Thinking
- Margin of Diminishing Returns
- Occam’s Razor
- Hanlon’s Razor
- Confirmation Bias
- Availability Heuristic
- Parkinson’s Law
- Loss Aversion
- Switching Costs
- Circle of Competence
- Regret Minimization
- Leverage Points
- Pareto Principle (80/20 Rule)
- Lindy Effect
- Game Theory
- System 1 vs System 2 Thinking
- Antifragility
## Example Input:
«I can’t decide if I should change careers or stay in my current job where I’m comfortable but not growing.»
## Remember:
- Choose models that create the MOST SURPRISING insights for my specific situation
- Make each perspective genuinely different and thought-provoking
- Be concise but profound
- Focus on practical wisdom I can apply immediately
Now, what problem, decision, or situation would you like me to analyze?
Отвечай на русском языке.
@python_be1
Забираем:
Your role:
You are the Mental Model Mastermind, an AI that transforms ordinary thinking into extraordinary insights by applying powerful mental models to any problem or question.
## Your Mission:
I’ll present you with a problem, decision, or situation. You’ll respond by analyzing it through EXACTLY 5 different mental models or frameworks, revealing hidden insights and perspectives I would never see on my own.
## For Each Mental Model:
1. Name & Brief Explanation - Identify the mental model and explain it in one sentence
2. New Perspective - Show how this model completely reframes my situation
3. Key Insight - Reveal the non-obvious truth this model exposes
4. Practical Action - Suggest one specific action based on this insight
## Mental Models to Choose From:
Choose the 5 MOST RELEVANT models from this list for my specific situation:
- First Principles Thinking
- Inversion (thinking backwards)
- Opportunity Cost
- Second-Order Thinking
- Margin of Diminishing Returns
- Occam’s Razor
- Hanlon’s Razor
- Confirmation Bias
- Availability Heuristic
- Parkinson’s Law
- Loss Aversion
- Switching Costs
- Circle of Competence
- Regret Minimization
- Leverage Points
- Pareto Principle (80/20 Rule)
- Lindy Effect
- Game Theory
- System 1 vs System 2 Thinking
- Antifragility
## Example Input:
«I can’t decide if I should change careers or stay in my current job where I’m comfortable but not growing.»
## Remember:
- Choose models that create the MOST SURPRISING insights for my specific situation
- Make each perspective genuinely different and thought-provoking
- Be concise but profound
- Focus on practical wisdom I can apply immediately
Now, what problem, decision, or situation would you like me to analyze?
Отвечай на русском языке.
@python_be1
This media is not supported in your browser
VIEW IN TELEGRAM
🎥🔥 VideoPrism от GoogleDeepMind — универсальный видеоэнкодер нового поколения
Модель легко подключается к LLM или текстовому энкодеру, превращая видео в источник контекста.
🧠 Как работает:
• Сначала обучают CLIP-подобную video-text модель
• Затем дистиллируют видеоэнкодер в VideoPrism
• Получается компактный, но гибкий видеоэнкодер, готовый к интеграции в мультимодальные модели
Все модели доступны под лицензией A2.0
Установка:
`$ git clone https://github.com/google-deepmind/videoprism.git
$ cd videoprism
$ pip install .`
• Github: https://github.com/google-deepmind/videoprism
• HF: https://huggingface.co/google/videoprism#model-description
• Arxiv: https://arxiv.org/pdf/2402.13217
• Blogpost: https://research.google/blog/videoprism-a-foundational-visual-encoder-for-video-understanding/
#AI #VideoAI #DeepLearning #GoogleDeepMind #LLM #multimodal
@python_be1
Модель легко подключается к LLM или текстовому энкодеру, превращая видео в источник контекста.
🧠 Как работает:
• Сначала обучают CLIP-подобную video-text модель
• Затем дистиллируют видеоэнкодер в VideoPrism
• Получается компактный, но гибкий видеоэнкодер, готовый к интеграции в мультимодальные модели
Все модели доступны под лицензией A2.0
Установка:
`$ git clone https://github.com/google-deepmind/videoprism.git
$ cd videoprism
$ pip install .`
• Github: https://github.com/google-deepmind/videoprism
• HF: https://huggingface.co/google/videoprism#model-description
• Arxiv: https://arxiv.org/pdf/2402.13217
• Blogpost: https://research.google/blog/videoprism-a-foundational-visual-encoder-for-video-understanding/
#AI #VideoAI #DeepLearning #GoogleDeepMind #LLM #multimodal
@python_be1
🐍 Хитрая задача для опытных Python-разработчиков
Почему этот код не работает как ожидается?
```
def magic():
return [lambda: i for i in range(5)]
funcs = magic()
results = [f() for f in funcs]
print(results)
```
На первый взгляд, ты ожидаешь результат:
```
[0, 1, 2, 3, 4]
```
Но на деле вывод будет:
```
[4, 4, 4, 4, 4]
```
🔍 Что пошло не так
lambda: i не захватывает значение i, а замыкается на саму переменную i, которая одна и та же для всех лямбд.
К моменту вызова всех функций i = 4 (последнее значение цикла), и все лямбды возвращают одно и то же.
Это классический пример late binding — лямбда "вспоминает" переменную, а не её значение в момент создания.
✅ Как исправить
Способ 1: фиксируем значение i через аргумент по умолчанию
```
def magic():
return [lambda i=i: i for i in range(5)]
funcs = magic()
results = [f() for f in funcs]
print(results)
```
Теперь вывод:
```
[0, 1, 2, 3, 4]
```
Способ 2: functools.partial
```
from functools import partial
def f(x): return x
funcs = [partial(f, i) for i in range(5)]
results = [f() for f in funcs]
print(results)
```
🧠 Почему это важно
Такие баги встречаются:
- в колбэках и ивентах (например, при работе с GUI или CLI)
- в генерации функций внутри циклов
- в async-замыканиях и DSL-интерпретаторах
- в тестовых фреймворках, где создаются сценарии динамически
Понимание области видимости, замыканий и позднего связывания (late binding) — необходимый навык для confident-сеньора.
@python_be1
Почему этот код не работает как ожидается?
```
def magic():
return [lambda: i for i in range(5)]
funcs = magic()
results = [f() for f in funcs]
print(results)
```
На первый взгляд, ты ожидаешь результат:
```
[0, 1, 2, 3, 4]
```
Но на деле вывод будет:
```
[4, 4, 4, 4, 4]
```
🔍 Что пошло не так
lambda: i не захватывает значение i, а замыкается на саму переменную i, которая одна и та же для всех лямбд.
К моменту вызова всех функций i = 4 (последнее значение цикла), и все лямбды возвращают одно и то же.
Это классический пример late binding — лямбда "вспоминает" переменную, а не её значение в момент создания.
✅ Как исправить
Способ 1: фиксируем значение i через аргумент по умолчанию
```
def magic():
return [lambda i=i: i for i in range(5)]
funcs = magic()
results = [f() for f in funcs]
print(results)
```
Теперь вывод:
```
[0, 1, 2, 3, 4]
```
Способ 2: functools.partial
```
from functools import partial
def f(x): return x
funcs = [partial(f, i) for i in range(5)]
results = [f() for f in funcs]
print(results)
```
🧠 Почему это важно
Такие баги встречаются:
- в колбэках и ивентах (например, при работе с GUI или CLI)
- в генерации функций внутри циклов
- в async-замыканиях и DSL-интерпретаторах
- в тестовых фреймворках, где создаются сценарии динамически
Понимание области видимости, замыканий и позднего связывания (late binding) — необходимый навык для confident-сеньора.
@python_be1
This media is not supported in your browser
VIEW IN TELEGRAM
🌟 alphaXiv —выпустили расширение для хрома
alphaXiv упрощает работу с научными статьями (arXiv, bioRxiv, PDF):
● чат с ИИ прямо в документе: выделение текста открывает диалог
● ссылки на другие статье через “@” для быстрого вызова статей
● позволяет генерировать блог одним кликом: иллюстрации к статьям, ключевые идеи, перевод
● закладки и автоматические BibTeX-цитаты для хранения и ссылок
https://chromewebstore.google.com/detail/alphaxiv-understand-resea/liihfcjialakefgidmaadhajjikbjjab
@python_be1
alphaXiv упрощает работу с научными статьями (arXiv, bioRxiv, PDF):
● чат с ИИ прямо в документе: выделение текста открывает диалог
● ссылки на другие статье через “@” для быстрого вызова статей
● позволяет генерировать блог одним кликом: иллюстрации к статьям, ключевые идеи, перевод
● закладки и автоматические BibTeX-цитаты для хранения и ссылок
https://chromewebstore.google.com/detail/alphaxiv-understand-resea/liihfcjialakefgidmaadhajjikbjjab
@python_be1
Полезный совет по Pytest:
Используйте пользовательские маркеры pytest, чтобы добавлять метаданные к тестам.
Это значительно упрощает организацию и запуск определённых групп тестов
В примере на изображении используются два пользовательских маркера:
🔹@pytest.mark.performance
– Применён к тесту для замера производительности test_page_load_time
🔹@pytest.mark.database
– Применён к тестам для работы с базой данных test_database_connection и test_data_integrity
Мы можем запускать выборочно, например тесты, помеченные маркером @pytest.mark.database
pytest -m database
@python_be1
Используйте пользовательские маркеры pytest, чтобы добавлять метаданные к тестам.
Это значительно упрощает организацию и запуск определённых групп тестов
В примере на изображении используются два пользовательских маркера:
🔹@pytest.mark.performance
– Применён к тесту для замера производительности test_page_load_time
🔹@pytest.mark.database
– Применён к тестам для работы с базой данных test_database_connection и test_data_integrity
Мы можем запускать выборочно, например тесты, помеченные маркером @pytest.mark.database
pytest -m database
@python_be1
🖥 Как написать ещё худший Python-код: часть 2
Первая часть - Как написать худший возможный Python-код .
Если тебе показалось, что хуже уже некуда — ты просто не включал всё сразу.
Вот продолжение правил, которые гарантируют страдания будущих читателей твоего кода.
14. Используй side‑effects везде
Изменяй список внутри функции, возвращай `None`, пусть никто не знает, что произошло.
```
def corrupt(data):
for i in range(len(data)):
data[i] = None
```
15. Ломай SRP (Single Responsibility Principle)
Пусть одна функция отправляет запрос, пишет лог, делает retry, парсит ответ и сохраняет в БД.
```
def handle_user_request(request):
log_request(request)
try:
response = requests.post(...)
save_to_db(json.loads(response.text)["data"])
except:
retry_later(request)
```
16. Используй вложенные функции ради хаоса
Функции в функциях в функциях. Замыкания? Да, но не ради пользы, а ради анархии.
```
def outer():
def middle():
def inner():
print("deep")
inner()
middle()
```
17. Импортируй всё звёздочкой
Пусть никто не знает, откуда приходят функции. Магия.
```
from somewhere.unknown import *
```
18. Используй случайную логику
Добавь random в бизнес-функции. Почему бы и нет?
```
import random
def calculate_discount():
return random.choice([0, 5, 10, 50])
```
19. Используй структуры не по назначению
Сохраняй все данные в строках. JSON, XML, дата, числа — всё строкой.
```
user = {
"name": "Alice",
"age": "27",
"is_active": "true",
"joined": "2023-12-01"
}
```
20. Игнорируй ошибки
Тихо, мирно, try/except без except. Или просто pass. Не паникуй.
```
try:
do_critical_operation()
except:
pass
```
21. Логируй всё подряд
Каждый шаг. Каждую переменную. Каждую мысль.
```
print("entering loop")
print("value of x:", x)
print("loop end")
```
22. Используй глобальные настройки через переменные
Никаких config-файлов. Пусть все настройки — глобальные переменные.
```
DEBUG_MODE = True
RETRY_COUNT = 3
```
23. Пиши асинхронный код синхронно
async с time.sleep, await с requests.get. Главное — выглядеть современно.
```
import time
async def fetch_data():
time.sleep(3)
return "data"
```
24. Храни всё в одной функции
1000 строк? Один def main(). Абсолютно всё. Другие функции — для слабаков.
```
def main():
# 600 строк бизнес-логики
pass
```
🧠 Заключение
Если ты следуешь этим правилам — ты либо пишешь код, который никто не осмелится менять,
либо работаешь на тёмной стороне. Но лучше всё же пересмотреть подход.
"Simple is better than complex.
Complex is better than complicated.
Readability counts."
— The Zen of Python
@python_be1
Первая часть - Как написать худший возможный Python-код .
Если тебе показалось, что хуже уже некуда — ты просто не включал всё сразу.
Вот продолжение правил, которые гарантируют страдания будущих читателей твоего кода.
14. Используй side‑effects везде
Изменяй список внутри функции, возвращай `None`, пусть никто не знает, что произошло.
```
def corrupt(data):
for i in range(len(data)):
data[i] = None
```
15. Ломай SRP (Single Responsibility Principle)
Пусть одна функция отправляет запрос, пишет лог, делает retry, парсит ответ и сохраняет в БД.
```
def handle_user_request(request):
log_request(request)
try:
response = requests.post(...)
save_to_db(json.loads(response.text)["data"])
except:
retry_later(request)
```
16. Используй вложенные функции ради хаоса
Функции в функциях в функциях. Замыкания? Да, но не ради пользы, а ради анархии.
```
def outer():
def middle():
def inner():
print("deep")
inner()
middle()
```
17. Импортируй всё звёздочкой
Пусть никто не знает, откуда приходят функции. Магия.
```
from somewhere.unknown import *
```
18. Используй случайную логику
Добавь random в бизнес-функции. Почему бы и нет?
```
import random
def calculate_discount():
return random.choice([0, 5, 10, 50])
```
19. Используй структуры не по назначению
Сохраняй все данные в строках. JSON, XML, дата, числа — всё строкой.
```
user = {
"name": "Alice",
"age": "27",
"is_active": "true",
"joined": "2023-12-01"
}
```
20. Игнорируй ошибки
Тихо, мирно, try/except без except. Или просто pass. Не паникуй.
```
try:
do_critical_operation()
except:
pass
```
21. Логируй всё подряд
Каждый шаг. Каждую переменную. Каждую мысль.
```
print("entering loop")
print("value of x:", x)
print("loop end")
```
22. Используй глобальные настройки через переменные
Никаких config-файлов. Пусть все настройки — глобальные переменные.
```
DEBUG_MODE = True
RETRY_COUNT = 3
```
23. Пиши асинхронный код синхронно
async с time.sleep, await с requests.get. Главное — выглядеть современно.
```
import time
async def fetch_data():
time.sleep(3)
return "data"
```
24. Храни всё в одной функции
1000 строк? Один def main(). Абсолютно всё. Другие функции — для слабаков.
```
def main():
# 600 строк бизнес-логики
pass
```
🧠 Заключение
Если ты следуешь этим правилам — ты либо пишешь код, который никто не осмелится менять,
либо работаешь на тёмной стороне. Но лучше всё же пересмотреть подход.
"Simple is better than complex.
Complex is better than complicated.
Readability counts."
— The Zen of Python
@python_be1
🛠️ Copier — удобный инструмент для создания и обновления проектов из шаблонов. Эта Python-утилита умеет работать как с локальными путями, так и с Git-репозиториями, подставляя переменные в файлы любого формата. Главная фишка Copier — это аккуратная работа с существующими файлами: он не перезаписывает их без явного указания.
Инструмент будет полезен тем, кто часто создаёт однотипные проекты или хочет автоматизировать их обновление. Шаблоны поддерживают сложную логику через Jinja2, а настройки задаются в простом YAML-формате. Для начала работы достаточно установить Copier через pipx или pip. Проект развивается при поддержке сообщества и доступен под лицензией MIT.
🤖 GitHub (https://github.com/copier-org/copier)
@python_be1
Инструмент будет полезен тем, кто часто создаёт однотипные проекты или хочет автоматизировать их обновление. Шаблоны поддерживают сложную логику через Jinja2, а настройки задаются в простом YAML-формате. Для начала работы достаточно установить Copier через pipx или pip. Проект развивается при поддержке сообщества и доступен под лицензией MIT.
🤖 GitHub (https://github.com/copier-org/copier)
@python_be1
🎯 Хочешь следить за загрузкой своей GPU прямо из Python?
Вот простой скрипт, который показывает текущую загрузку видеокарты NVIDIA (через `nvidia-smi`). Подходит для мониторинга в ML-задачах, инференсе и просто для интереса.
📦 Зависимости: установленный `nvidia-smi` и Python 3.6+
🧠 Код:
```
import subprocess
def get_gpu_utilization():
try:
result = subprocess.check_output(
['nvidia-smi', '--query-gpu=utilization.gpu,memory.used,memory.total',
'--format=csv,nounits,noheader'],
encoding='utf-8'
)
lines = result.strip().split('\n')
for idx, line in enumerate(lines):
gpu_util, mem_used, mem_total = map(str.strip, line.split(','))
print(f"🖥 GPU {idx}: {gpu_util}% load | {mem_used} MiB / {mem_total} MiB")
except FileNotFoundError:
print("❌ nvidia-smi not found. Make sure NVIDIA drivers are installed.")
except Exception as e:
print(f"⚠️ Error: {e}")
get_gpu_utilization()
```
📊 Вывод будет примерно такой:
`GPU 0: 23% load | 412 MiB / 8192 MiB`
🔥 Советы:
• Можно запускать в цикле для live-мониторинга
• Легко интегрировать в Telegram-бота или Slack-уведомления
• Работает на всех машинах с установленным NVIDIA драйвером и nvidia-smi
@python_be1
Вот простой скрипт, который показывает текущую загрузку видеокарты NVIDIA (через `nvidia-smi`). Подходит для мониторинга в ML-задачах, инференсе и просто для интереса.
📦 Зависимости: установленный `nvidia-smi` и Python 3.6+
🧠 Код:
```
import subprocess
def get_gpu_utilization():
try:
result = subprocess.check_output(
['nvidia-smi', '--query-gpu=utilization.gpu,memory.used,memory.total',
'--format=csv,nounits,noheader'],
encoding='utf-8'
)
lines = result.strip().split('\n')
for idx, line in enumerate(lines):
gpu_util, mem_used, mem_total = map(str.strip, line.split(','))
print(f"🖥 GPU {idx}: {gpu_util}% load | {mem_used} MiB / {mem_total} MiB")
except FileNotFoundError:
print("❌ nvidia-smi not found. Make sure NVIDIA drivers are installed.")
except Exception as e:
print(f"⚠️ Error: {e}")
get_gpu_utilization()
```
📊 Вывод будет примерно такой:
`GPU 0: 23% load | 412 MiB / 8192 MiB`
🔥 Советы:
• Можно запускать в цикле для live-мониторинга
• Легко интегрировать в Telegram-бота или Slack-уведомления
• Работает на всех машинах с установленным NVIDIA драйвером и nvidia-smi
@python_be1
This media is not supported in your browser
VIEW IN TELEGRAM
Cursor теперь в браузере и в телефоне — вышла (https://www.cursor.com/blog/agent-web) веб-версия любимого приложения вайб-кодеров ⌨️
Функционал почти полностью аналогичен десктопной версии, есть синхронизация с GitHub. Идея утопическая: дать вайб-кодерам возможность зайтись где-нибудь на пляже и удаленно раздавать команды сверхумным агентам.
Можно заценить здесь (https://www.cursor.com/agents).
@python_be1
Функционал почти полностью аналогичен десктопной версии, есть синхронизация с GitHub. Идея утопическая: дать вайб-кодерам возможность зайтись где-нибудь на пляже и удаленно раздавать команды сверхумным агентам.
Можно заценить здесь (https://www.cursor.com/agents).
@python_be1