Узнаем расстояние между городами
Геодезическое расстояние — это длина кратчайшего пути между двумя точками на любой поверхности Земли. В следующем примере мы покажем, как пользователь может вычислить геодезическое расстояние на основе данных широты и долготы.
В нашем примере мы узнаем, что расстояние между городами Нью-Йорк и Техас 2507 километров.
@python_be1
Геодезическое расстояние — это длина кратчайшего пути между двумя точками на любой поверхности Земли. В следующем примере мы покажем, как пользователь может вычислить геодезическое расстояние на основе данных широты и долготы.
В нашем примере мы узнаем, что расстояние между городами Нью-Йорк и Техас 2507 километров.
@python_be1
🔍 Основные нововведения в Django 5.2
1. 📦 Автоматический импорт моделей в интерактивной оболочке
Теперь при запуске команды python manage.py shell все модели из установленных приложений автоматически импортируются.
Это упрощает работу в интерактивной оболочке, позволяя сразу использовать модели без необходимости ручного импорта. Для получения подробностей об импортированных объектах можно использовать флаг -v 2.
2. 🔗 Поддержка составных первичных ключей
Django 5.2 вводит нативную поддержку составных первичных ключей через класс CompositePrimaryKey. Это позволяет создавать таблицы с первичным ключом, состоящим из нескольких полей, без необходимости использования сторонних решений.
3. 🧩 Гибкая настройка BoundField в формах
Теперь можно переопределять класс BoundField на уровне проекта, формы или отдельного поля, устанавливая атрибут bound_field_class. Это предоставляет разработчикам более тонкий контроль над отображением и поведением форм.
4. ⚡ Расширенная асинхронная поддержка
Django продолжает движение в сторону асинхронности, добавляя новые асинхронные методы и улучшая реализацию бэкендов аутентификации. Это особенно полезно для операций, связанных с вводом-выводом, и способствует созданию более производительных приложений.
5. 🎨 Новые виджеты форм и улучшения интерфейса
Добавлены новые виджеты форм, такие как ColorInput, SearchInput и TelInput, соответствующие стандартам HTML5. Также улучшена доступность форм для пользователей с особыми потребностями.
Bastaki Software Solutions L.L.C-FZ
6. 🗃️ Улучшения в работе с базой данных
Поддержка изогнутых геометрий в GDAL, включая CurvePolygon, CompoundCurve, CircularString, MultiSurface и MultiCurve.
По умолчанию соединения с MySQL используют кодировку utf8mb4 вместо устаревшей utf8mb3.
Улучшена работа методов values() и values_list(), теперь они генерируют SELECT-запросы в указанном порядке.
🔧 Совместимость и поддержка
Django 5.2 поддерживает Python версий 3.10–3.13.
С выходом этой версии, основная поддержка Django 5.1 завершена. Последний минорный релиз 5.1.8, также содержащий обновления безопасности, был выпущен одновременно с 5.2.
Django 5.0 достиг конца расширенной поддержки. Последний релиз безопасности, 5.0.14, также был выпущен сегодня. Рекомендуется обновиться до версии 5.1 или более новой.
📥 Обновление и ресурсы
Загрузить Django 5.2 можно с официальной страницы загрузки или через PyPI.
Полные примечания к релизу доступны в официальной документации.
Для автоматического обновления кода и устранения устаревших конструкций можно использовать инструмент django-upgrade.
Django Project
Django 5.2 предлагает множество улучшений, направленных на упрощение разработки и повышение производительности приложений. Рекомендуется ознакомиться с новыми возможностями и планировать обновление своих проектов для использования всех преимуществ этой версии.
📌 Релиз (https://adamj.eu/tech/2025/04/07/django-whats-new-5.2/)
@python_be1
1. 📦 Автоматический импорт моделей в интерактивной оболочке
Теперь при запуске команды python manage.py shell все модели из установленных приложений автоматически импортируются.
Это упрощает работу в интерактивной оболочке, позволяя сразу использовать модели без необходимости ручного импорта. Для получения подробностей об импортированных объектах можно использовать флаг -v 2.
2. 🔗 Поддержка составных первичных ключей
Django 5.2 вводит нативную поддержку составных первичных ключей через класс CompositePrimaryKey. Это позволяет создавать таблицы с первичным ключом, состоящим из нескольких полей, без необходимости использования сторонних решений.
3. 🧩 Гибкая настройка BoundField в формах
Теперь можно переопределять класс BoundField на уровне проекта, формы или отдельного поля, устанавливая атрибут bound_field_class. Это предоставляет разработчикам более тонкий контроль над отображением и поведением форм.
4. ⚡ Расширенная асинхронная поддержка
Django продолжает движение в сторону асинхронности, добавляя новые асинхронные методы и улучшая реализацию бэкендов аутентификации. Это особенно полезно для операций, связанных с вводом-выводом, и способствует созданию более производительных приложений.
5. 🎨 Новые виджеты форм и улучшения интерфейса
Добавлены новые виджеты форм, такие как ColorInput, SearchInput и TelInput, соответствующие стандартам HTML5. Также улучшена доступность форм для пользователей с особыми потребностями.
Bastaki Software Solutions L.L.C-FZ
6. 🗃️ Улучшения в работе с базой данных
Поддержка изогнутых геометрий в GDAL, включая CurvePolygon, CompoundCurve, CircularString, MultiSurface и MultiCurve.
По умолчанию соединения с MySQL используют кодировку utf8mb4 вместо устаревшей utf8mb3.
Улучшена работа методов values() и values_list(), теперь они генерируют SELECT-запросы в указанном порядке.
🔧 Совместимость и поддержка
Django 5.2 поддерживает Python версий 3.10–3.13.
С выходом этой версии, основная поддержка Django 5.1 завершена. Последний минорный релиз 5.1.8, также содержащий обновления безопасности, был выпущен одновременно с 5.2.
Django 5.0 достиг конца расширенной поддержки. Последний релиз безопасности, 5.0.14, также был выпущен сегодня. Рекомендуется обновиться до версии 5.1 или более новой.
📥 Обновление и ресурсы
Загрузить Django 5.2 можно с официальной страницы загрузки или через PyPI.
Полные примечания к релизу доступны в официальной документации.
Для автоматического обновления кода и устранения устаревших конструкций можно использовать инструмент django-upgrade.
Django Project
Django 5.2 предлагает множество улучшений, направленных на упрощение разработки и повышение производительности приложений. Рекомендуется ознакомиться с новыми возможностями и планировать обновление своих проектов для использования всех преимуществ этой версии.
📌 Релиз (https://adamj.eu/tech/2025/04/07/django-whats-new-5.2/)
@python_be1
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 Python на скорости Rust
Новый Function (fxn) — фреймворк, который компилирует Python-функции в нативный код с производительностью, сравнимой с Rust.
🧠 Как это работает?
- Использует символическое трассирование на CPython для анализа функций
- Генерирует промежуточное представление (IR)
- Транслирует IR в C++ или Rust, а затем компилирует в бинарный код
- Поддерживает платформы: Linux, Android, WebAssembly и др.
📦 Пример:
@compile (https://vk.com/club41774388)
def fma(x: float, y: float, z: float) -> float:
return x * y + z
После компиляции вы получаете нативный бинарник, который можно запускать без интерпретатора Python.
🔗 Подробнее (https://blog.fxn.ai/python-at-the-speed-of-rust/)
🔗 Github (https://github.com/olokobayusuf/)
#Python #Rust #fxn #Compiler #Performance #AI #ML #Wasm
@python_be1
Новый Function (fxn) — фреймворк, который компилирует Python-функции в нативный код с производительностью, сравнимой с Rust.
🧠 Как это работает?
- Использует символическое трассирование на CPython для анализа функций
- Генерирует промежуточное представление (IR)
- Транслирует IR в C++ или Rust, а затем компилирует в бинарный код
- Поддерживает платформы: Linux, Android, WebAssembly и др.
📦 Пример:
@compile (https://vk.com/club41774388)
def fma(x: float, y: float, z: float) -> float:
return x * y + z
После компиляции вы получаете нативный бинарник, который можно запускать без интерпретатора Python.
🔗 Подробнее (https://blog.fxn.ai/python-at-the-speed-of-rust/)
🔗 Github (https://github.com/olokobayusuf/)
#Python #Rust #fxn #Compiler #Performance #AI #ML #Wasm
@python_be1
🚀 13 Docker‑трюков с примерами и пояснениями 1\\. Multi\\-stage builds
``` FROM golang:1.22 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp .
FROM alpine:3.20
COPY —from=builder /app/myapp /usr/local/bin/
ENTRYPOINT ["myapp"] ```
Минимизирует размер и зависимости. 2\\. Squash layers
``` docker build —squash -t myapp:latest . ```
Сжимает слои в один. 3\\. BuildKit secrets
``` RUN —mount=type=secret,id=token git clone git@github.com:corp/private.git ```
Безопасное использование ключей. 4\\. .dockerignore
``` node_modules
*.md ```
Ускоряет сборку, снижает риск. 5\\. HEALTHCHECK
``` HEALTHCHECK CMD curl -f http://localhost/healthz || exit 1 ```
Контейнер сам сообщает, что он жив. 6\\. CLI —format
``` docker ps —format '{{.Names}}\t{{.Status}}' ```
Удобный вывод для скриптов. 7\\. Оптимизация Dockerfile
``` COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . . ```
Стабильные шаги выше — быстрее кеш. 8\\. Лимиты ресурсов
``` docker run —cpus=1 —memory=512m app ```
Ограничивает потребление ресурсов. 9\\. docker events
``` docker events —filter type=container —filter event=start ```
Реагируйте на события демона. 10\\. Read-only
``` docker run —read-only —tmpfs /tmp app ```
Файловая система только для чтения. 11\\. docker system prune
``` docker system prune -a —volumes ```
Удаляет всё ненужное. 12\\. ENTRYPOINT override
``` docker run —entrypoint /bin/sh -it app ```
Отладка падающих контейнеров. 13\\. Docker contexts
``` docker context create prod —docker "host=ssh://user@host"
docker context use prod ```
Быстрое переключение между окружениями.
@python_be1
``` FROM golang:1.22 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp .
FROM alpine:3.20
COPY —from=builder /app/myapp /usr/local/bin/
ENTRYPOINT ["myapp"] ```
Минимизирует размер и зависимости. 2\\. Squash layers
``` docker build —squash -t myapp:latest . ```
Сжимает слои в один. 3\\. BuildKit secrets
``` RUN —mount=type=secret,id=token git clone git@github.com:corp/private.git ```
Безопасное использование ключей. 4\\. .dockerignore
``` node_modules
*.md ```
Ускоряет сборку, снижает риск. 5\\. HEALTHCHECK
``` HEALTHCHECK CMD curl -f http://localhost/healthz || exit 1 ```
Контейнер сам сообщает, что он жив. 6\\. CLI —format
``` docker ps —format '{{.Names}}\t{{.Status}}' ```
Удобный вывод для скриптов. 7\\. Оптимизация Dockerfile
``` COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . . ```
Стабильные шаги выше — быстрее кеш. 8\\. Лимиты ресурсов
``` docker run —cpus=1 —memory=512m app ```
Ограничивает потребление ресурсов. 9\\. docker events
``` docker events —filter type=container —filter event=start ```
Реагируйте на события демона. 10\\. Read-only
``` docker run —read-only —tmpfs /tmp app ```
Файловая система только для чтения. 11\\. docker system prune
``` docker system prune -a —volumes ```
Удаляет всё ненужное. 12\\. ENTRYPOINT override
``` docker run —entrypoint /bin/sh -it app ```
Отладка падающих контейнеров. 13\\. Docker contexts
``` docker context create prod —docker "host=ssh://user@host"
docker context use prod ```
Быстрое переключение между окружениями.
@python_be1
🖥 Roboflow Trackers Roboflow/trackers — это новая, унифицированная Python‑библиотека object‑tracking, в которой «с нуля» реализуются популярные алгоритмы многoобъектного трекинга (первым уже готов SORT, вскоре планируются Deep SORT, ByteTrack и др.) GitHub
.
Проект входит в open‑source‑экосистему Roboflow (Supervision, RF‑DETR и т.д.) и предоставляет единый API поверх разных детекторов, так что вы можете, например, скрестить Ultralytics YOLO‑v9, MMDetection или HuggingFace Transformers с любым трекером из пакета без «клея»‑оберток. Установка
`pip install trackers`
``` import supervision as sv
from rfdetr import RFDETRBase # любой детектор
from trackers.sort_tracker import SORTTracker model = RFDETRBase() # или Ultralytics, MMDet…
tracker = SORTTracker() def callback(frame, _): dets = model.predict(frame) # сводим к sv.Detections dets = tracker.update(dets) # добавляем tracker_id return sv.LabelAnnotator( text_position=sv.Position.CENTER ).annotate(frame, dets, dets.tracker_id) sv.process_video("in.mp4", "out.mp4", callback)
``` На выходе ‑ ролик с пронумерованными боксами, где каждый объект сохраняет ID между кадрами. Лицензия без ограничений (Apache‑2.0) и возможность править алгоритм под себя. 👉 Репозиторий (http://github.com/roboflow/trackers)
@python_be1
.
Проект входит в open‑source‑экосистему Roboflow (Supervision, RF‑DETR и т.д.) и предоставляет единый API поверх разных детекторов, так что вы можете, например, скрестить Ultralytics YOLO‑v9, MMDetection или HuggingFace Transformers с любым трекером из пакета без «клея»‑оберток. Установка
`pip install trackers`
``` import supervision as sv
from rfdetr import RFDETRBase # любой детектор
from trackers.sort_tracker import SORTTracker model = RFDETRBase() # или Ultralytics, MMDet…
tracker = SORTTracker() def callback(frame, _): dets = model.predict(frame) # сводим к sv.Detections dets = tracker.update(dets) # добавляем tracker_id return sv.LabelAnnotator( text_position=sv.Position.CENTER ).annotate(frame, dets, dets.tracker_id) sv.process_video("in.mp4", "out.mp4", callback)
``` На выходе ‑ ролик с пронумерованными боксами, где каждый объект сохраняет ID между кадрами. Лицензия без ограничений (Apache‑2.0) и возможность править алгоритм под себя. 👉 Репозиторий (http://github.com/roboflow/trackers)
@python_be1
GitHub
GitHub - roboflow/trackers: A unified library for object tracking featuring clean room re-implementations of leading multi-object…
A unified library for object tracking featuring clean room re-implementations of leading multi-object tracking algorithms - roboflow/trackers
🐍 Dulwich — проект, предлагающий альтернативу классическим библиотекам вроде GitPython и pygit2. Это полностью Python-реализация Git-клиента без зависимостей от нативного Git. Инструмент поддерживает как низкоуровневые операции с репозиториями, так и сложные команды, имитирующие интерфейс командной строки Git. Для тех, кому важна производительность, есть опциональные Rust-расширения. 🤖 GitHub (https://github.com/jelmer/dulwich)
@python_be1
@python_be1
Наконец-то появился бенчмарк с Doom ☺️
Исследователи из Принстона представили Video Game Bench (https://www.vgbench.com/) — бенчмарк, в котором модели пытаются пройти 20 классических игр из 90-х.
На видео GPT-4o, Claude Sonnet 3.7, Gemini 2.5 Pro и Gemini 2.0 Flash играют в Doom II. Результат: ни одна из моделей не прошла даже 1 уровень. Например, модели часто путают мертвых врагов с живыми и тратят на них все свои патроны.
Опенсорс, GitHub тут (https://github.com/alexzhang13/VideoGameBench)
@python_be1
Исследователи из Принстона представили Video Game Bench (https://www.vgbench.com/) — бенчмарк, в котором модели пытаются пройти 20 классических игр из 90-х.
На видео GPT-4o, Claude Sonnet 3.7, Gemini 2.5 Pro и Gemini 2.0 Flash играют в Doom II. Результат: ни одна из моделей не прошла даже 1 уровень. Например, модели часто путают мертвых врагов с живыми и тратят на них все свои патроны.
Опенсорс, GitHub тут (https://github.com/alexzhang13/VideoGameBench)
@python_be1