Пример прикладной робототехники: на хакатоне «Робозон» участники собирают интеллектуальную систему сортировки товаров.
Задачи охватывают весь цикл — детекция и классификация объектов, трекинг на конвейере, планирование захвата и управление манипулятором. За интеграцию отвечает связка компьютерного зрения с ROS.
В ход идут Python, OpenCV, PyTorch/Detectron2, ROS/ROS2 и симуляторы вроде Isaac Gym и CoppeliaSim. Отдельный слой — имитационное моделирование движения товаров и проектирование конструкции самого сортировщика.
Финальные решения команды покажут на конференции E-CODE. Описание задач лежит в открытом доступе, если интересно посмотреть постановку.
Задачи охватывают весь цикл — детекция и классификация объектов, трекинг на конвейере, планирование захвата и управление манипулятором. За интеграцию отвечает связка компьютерного зрения с ROS.
В ход идут Python, OpenCV, PyTorch/Detectron2, ROS/ROS2 и симуляторы вроде Isaac Gym и CoppeliaSim. Отдельный слой — имитационное моделирование движения товаров и проектирование конструкции самого сортировщика.
Финальные решения команды покажут на конференции E-CODE. Описание задач лежит в открытом доступе, если интересно посмотреть постановку.
❤2👍2
Метакласс: не магия, а ещё один уровень явности Python
Если класс — фабрика объектов, то метакласс играет роль фабрики самих классов. В Python 3 это не опция, а дефолт: любой ваш класс является экземпляром
Свой метакласс наследуется от
Отсюда следует, почему в Python всё есть объект, включая само определение класса. Разбираемся в деталях.
Если класс — фабрика объектов, то метакласс играет роль фабрики самих классов. В Python 3 это не опция, а дефолт: любой ваш класс является экземпляром
type, а class Foo: pass раскрывается в type('Foo', (), {}).Свой метакласс наследуется от
type и переопределяет __new__ или __init__. Он позволяет собирать, изменять или регистрировать классы программно, но в Python явность важнее изящества. В большинстве случаев ту же задачу решают наследование или декоратор класса.Отсюда следует, почему в Python всё есть объект, включая само определение класса. Разбираемся в деталях.
❤3🤨1
Вышел mypy 2.2 — главное в релизе то, что тайпчекер научился закрытым TypedDict из PEP 728.
Что внутри:
🔘 TypedDict с closed=True запрещает любые ключи сверх объявленных — раньше лишние ключи в значении типа TypedDict были формально допустимы, и тайпчекер не мог на них ругаться;
🔘 закрытость делает надёжным сужение типов: в объединении Book | DVD проверка "author" in item теперь честно доказывает mypy, что перед ним Book;
🔘 работает и в классовом синтаксисе: class Book(TypedDict, closed=True);
🔘 завершена поддержка дефолтов типовых переменных из PEP 696 — и в старой записи TypeVar("T", default=int), и в новой class Box[T = int], включая рекурсивные дефолты;
🔘 mypy теперь уважает явно аннотированный тип возврата у
🔘 поддержка TypeForm перестала быть экспериментальной.
Пользуетесь TypedDict для словарей с фиксированной структурой или в таких местах у вас dataclass и pydantic?
@zen_of_python
Что внутри:
__new__ — раньше он молча считал, что __new__ всегда возвращает экземпляр текущего класса;Пользуетесь TypedDict для словарей с фиксированной структурой или в таких местах у вас dataclass и pydantic?
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Go-рутины в Python без async/await
Runloom экспериментально возвращает Python к простоте блокирующего кода: вызываете
Под капотом: hand-rolled ассемблерный context switch, work-stealing scheduler на C и netpoll. Цель: free-threaded Python 3.14t с выключенным GIL, когда один процесс действительно может загрузить все ядра, а не притворяться многопоточным.
Репозиторий на GitHub.
Runloom экспериментально возвращает Python к простоте блокирующего кода: вызываете
fiber(fn), пишете обычный recv/send или urlopen, а библиотека паркует задачу на сокете и переключает контекст. Никакого async def, никакого await — как до эпохи asyncio, но с миллионом лёгких потоков на всех ядрах.Под капотом: hand-rolled ассемблерный context switch, work-stealing scheduler на C и netpoll. Цель: free-threaded Python 3.14t с выключенным GIL, когда один процесс действительно может загрузить все ядра, а не притворяться многопоточным.
Репозиторий на GitHub.
✍1
Forwarded from GameDev: разработка игр
80% корпоративных программ геймификации ломаются на одном и том же месте
По данным AmplifAI, игровые кампании дают в среднем вовлечённость на 100–150% выше, чем классические подходы, а геймифицированный контент шерится в 12 раз чаще. При этом примерно 80% корпоративных программ геймификации не достигают целей. Спрос огромный, качество — низкое, а причина проста: делать это берутся не те люди.
В статье разбирают, как корпоративные клоны механик упускают баланс и контекст, и что делать, чтобы прогрессия не превращалась в цифровой пендель. Для геймдевелоперов это отличная ниша, где есть и деньги, и возможность применить свои скиллы на практике.
По данным AmplifAI, игровые кампании дают в среднем вовлечённость на 100–150% выше, чем классические подходы, а геймифицированный контент шерится в 12 раз чаще. При этом примерно 80% корпоративных программ геймификации не достигают целей. Спрос огромный, качество — низкое, а причина проста: делать это берутся не те люди.
В статье разбирают, как корпоративные клоны механик упускают баланс и контекст, и что делать, чтобы прогрессия не превращалась в цифровой пендель. Для геймдевелоперов это отличная ниша, где есть и деньги, и возможность применить свои скиллы на практике.
GameDev: разработка игр
80% корпоративных программ геймификации ломаются на одном и том же месте По данным AmplifAI, игровые кампании дают в среднем вовлечённость на 100–150% выше, чем классические подходы, а геймифицированный контент шерится в 12 раз чаще. При этом примерно 80%…
Представьте: прошли игру на сайте и выиграли приз от бренда. Какой обрадует по-настоящему? 👇
Anonymous Poll
59%
Гаджеты: наушники, клавиатура, повербанк
56%
Мерч, который не стыдно носить вне дома
27%
Подписки на полезные или дорогие сервисы
26%
Курсы и книги
32%
Билет на конференцию или митап
56%
Что-то редкое, чего не купить за деньги
6%
Приз не важен — играю ради азарта
Репозиторий python-patterns: каталог паттернов, которые стоит выбирать с умом
В python-patterns собраны классические паттерны и идиомы Python — 42,8k звёзд, 7k форков и 896 коммитов. Сообщество использует его как шпаргалку, чтобы быстро вспомнить, как выглядит тот или иной подход в коде.
Авторы явно предупреждают: каждый паттерн несёт свои компромиссы, а выбирать нужно не по красоте реализации, а по ситуации. В Python это особенно актуально — язык сам даёт идиомы, от итераторов до менеджеров контекста, и часто проще использовать встроенное, чем городить фабрику.
Полезно сохранить на тот момент, когда вам хочется применить паттерн ради паттерна. Иногда достаточно обычной функции.
В python-patterns собраны классические паттерны и идиомы Python — 42,8k звёзд, 7k форков и 896 коммитов. Сообщество использует его как шпаргалку, чтобы быстро вспомнить, как выглядит тот или иной подход в коде.
Авторы явно предупреждают: каждый паттерн несёт свои компромиссы, а выбирать нужно не по красоте реализации, а по ситуации. В Python это особенно актуально — язык сам даёт идиомы, от итераторов до менеджеров контекста, и часто проще использовать встроенное, чем городить фабрику.
Полезно сохранить на тот момент, когда вам хочется применить паттерн ради паттерна. Иногда достаточно обычной функции.
❤2✍2
На Tproger вышла история разработчика с 10 годами опыта: с инженерной частью у него всё было закрыто, а для своего дела не хватало другого — проверять идею, считать деньги, доводить продукт до рынка. Онлайн-курсы он бросал на середине, поэтому выбрал формат пожёстче: онлайн-магистратуру МФТИ по технологическому предпринимательству.
В обзоре: как совмещать такую учёбу с работой, почему реальная нагрузка выходит 20–25 часов в неделю вместо заявленных 10, где программа слабая и во сколько она обойдётся в 2026 году.
@zen_of_python
В обзоре: как совмещать такую учёбу с работой, почему реальная нагрузка выходит 20–25 часов в неделю вместо заявленных 10, где программа слабая и во сколько она обойдётся в 2026 году.
@zen_of_python
Tproger
Сколько стоит стать предпринимателем: обзор онлайн-магистратуры МФТИ
Разработчик прошёл онлайн-магистратуру МФТИ по технологическому предпринимательству и рассказывает: формат, нагрузка, стоимость и стоит ли идти.
❤1
Altair: графики через описание данных, а не ручная настройка каждой оси
В духе Zen of Python: простое лучше сложного. Если в Matplotlib вы сначала объявляете фигуру, потом крутите оси и legend, то в Altair вы просто говорите DataFrame, какую колонку на какую ось положить, что раскрасить и как сделать интерактивным. Библиотека сама строит визуализацию из HTML и JavaScript, которая работает в ноутбуке или сохраняется отдельным файлом.
Real Python советует ставить Altair в выделенное виртуальное окружение: вместе с ним приезжают pandas и Vega-Lite-рендерер, и лучше не мешать их с остальным окружением.
Это не замена Matplotlib. Для пиксельно точных публикационных фигур или 3D по-прежнему стоит брать Matplotlib; для интерактивного исследования в ноутбуке — Altair удобнее.
В духе Zen of Python: простое лучше сложного. Если в Matplotlib вы сначала объявляете фигуру, потом крутите оси и legend, то в Altair вы просто говорите DataFrame, какую колонку на какую ось положить, что раскрасить и как сделать интерактивным. Библиотека сама строит визуализацию из HTML и JavaScript, которая работает в ноутбуке или сохраняется отдельным файлом.
Real Python советует ставить Altair в выделенное виртуальное окружение: вместе с ним приезжают pandas и Vega-Lite-рендерер, и лучше не мешать их с остальным окружением.
Это не замена Matplotlib. Для пиксельно точных публикационных фигур или 3D по-прежнему стоит брать Matplotlib; для интерактивного исследования в ноутбуке — Altair удобнее.
🔥4
За
Каждый раз, когда вы вешаете декоратор на метод, Python тихо создаёт объект с методом
В свежем HOWTO от Рэймонда Хеттингера разобрано, как именно это работает: от примера, который всегда возвращает десятку, до чисто-питонических реализаций
@property и @staticmethod стоят дескрипторыКаждый раз, когда вы вешаете декоратор на метод, Python тихо создаёт объект с методом
__get__. Этот объект ловит обращение к атрибуту класса и решает, что вернуть — bound method, вычисленное значение или сам дескриптор.В свежем HOWTO от Рэймонда Хеттингера разобрано, как именно это работает: от примера, который всегда возвращает десятку, до чисто-питонических реализаций
property и __slots__. Гайд пригодится, если хотите перестать догадываться и начать предсказывать поведение своих классов.❤1
Hypothesis начал переносить внутренности с Python на Rust
Библиотека property-based тестирования Hypothesis в релизе 6.156.0 от 1 июля объявила о начале миграции внутренних компонентов на Rust. Пока перенесён один простой вспомогательный хелпер, но направление задано, и за неделю вышла целая серия патчей вокруг сборки — вплоть до 6.156.6 от 10 июля.
Что это значит на практике:
🔘 сборка из исходников теперь требует Rust toolchain — если ставить не из готового wheel, а компилировать, без Rust не соберётся;
🔘 чтобы это никого не сломало, проект выкатил широкий набор нативных wheels: Python с 3.10 по 3.14, free-threaded
🔘 добавили
🔘 отдельно собрали wheel под Pyodide (
За тем же путём Python в Rust уже ушли core-части uv, ruff и pydantic. Теперь очередь дошла и до зрелой тест-библиотеки — с явным приоритетом не сломать установку тем, кто просто делает
@zen_of_python
Библиотека property-based тестирования Hypothesis в релизе 6.156.0 от 1 июля объявила о начале миграции внутренних компонентов на Rust. Пока перенесён один простой вспомогательный хелпер, но направление задано, и за неделю вышла целая серия патчей вокруг сборки — вплоть до 6.156.6 от 10 июля.
Что это значит на практике:
3.14t и PyPy 3.11, под Linux x86_64/aarch64, macOS x86_64/arm64 и Windows x64;abi3-wheels на базе стабильного ABI 3.10 — один такой wheel работает на всех последующих версиях Python, включая 32-битные Linux и Windows;wasm32-unknown-emscripten) для запуска в браузере.За тем же путём Python в Rust уже ушли core-части uv, ruff и pydantic. Теперь очередь дошла и до зрелой тест-библиотеки — с явным приоритетом не сломать установку тем, кто просто делает
pip install.@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Типичный программист
VPS в 2026: почему сервер тормозит, хотя метрики в норме
Вы смотрите на дашборд: CPU 40%, память не вся занята, а пользователи жалуются на лаги. Скорее всего, ваш VPS просто не получает тех ресурсов, за которые вы платите.
За несколько лет картина резко поменялась. Если раньше на одно физическое ядро приходилось 4–8 виртуальных CPU, то у бюджетных провайдеров сейчас норма — 10–16. Пока соседи по хосту спят, вы получаете мощность. Когда все просыпаются одновременно, гипервизор забирает CPU у вас. Это видно в метрике
К этому добавились тяжелее ОС и стек. Ubuntu 24.04 при минимальной конфигурации занимает 3–5 GB RAM ещё до вашего приложения, а современный бэкенд часто тянет брокер, кеш, мониторинг и контейнеры. Разобрались, когда дешёвый VPS перестаёт тянуть и что с этим делать.
Вы смотрите на дашборд: CPU 40%, память не вся занята, а пользователи жалуются на лаги. Скорее всего, ваш VPS просто не получает тех ресурсов, за которые вы платите.
За несколько лет картина резко поменялась. Если раньше на одно физическое ядро приходилось 4–8 виртуальных CPU, то у бюджетных провайдеров сейчас норма — 10–16. Пока соседи по хосту спят, вы получаете мощность. Когда все просыпаются одновременно, гипервизор забирает CPU у вас. Это видно в метрике
%st — steal time.К этому добавились тяжелее ОС и стек. Ubuntu 24.04 при минимальной конфигурации занимает 3–5 GB RAM ещё до вашего приложения, а современный бэкенд часто тянет брокер, кеш, мониторинг и контейнеры. Разобрались, когда дешёвый VPS перестаёт тянуть и что с этим делать.