На GitHub вышел новый бесплатный Git-клиент
Многие новички, начав пользоваться Git для управления кодом, быстро устают от кучи сложных команд в консоли. А хорошие визуальные клиенты, где всё можно делать мышкой, обычно платные и это раздражает.😡
Недавно на GitHub появилась полностью бесплатная и открытая альтернатива. Открытый, без ограничений и с удобным интерфейсом. Поддерживает всё: коммиты, пуши, мерджи, ребейзы, работу с ветками, подмодулями и даже сравнение изображений.
Доступен для Windows, macOS и Linux (Flatpak).
github.com/JetpackDuba/Gitnuro
👉 @PythonPortal
Многие новички, начав пользоваться Git для управления кодом, быстро устают от кучи сложных команд в консоли. А хорошие визуальные клиенты, где всё можно делать мышкой, обычно платные и это раздражает.
Недавно на GitHub появилась полностью бесплатная и открытая альтернатива. Открытый, без ограничений и с удобным интерфейсом. Поддерживает всё: коммиты, пуши, мерджи, ребейзы, работу с ветками, подмодулями и даже сравнение изображений.
Доступен для Windows, macOS и Linux (Flatpak).
github.com/JetpackDuba/Gitnuro
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27❤13💊6😁2🤝2
This media is not supported in your browser
VIEW IN TELEGRAM
Мгновенная визуализация геоданных из командной строки
Теперь можно интерактивно смотреть растры и векторные слои без запуска настольного GIS или Jupyter.
Просто выполните:
А потом визуализируйте данные одной командой:
Нужна настройка отображения:
Эти CLI-утилиты работают на базе Leafmap, MapLibre и LocalTileserver и поддерживают все форматы, совместимые с rasterio и geopandas.
Смотрите тут: https://github.com/opengeos/leafmap
👉 @PythonPortal
Теперь можно интерактивно смотреть растры и векторные слои без запуска настольного GIS или Jupyter.
Просто выполните:
pip install "leafmap[viewer]"
А потом визуализируйте данные одной командой:
view-raster /path/to/raster.tif
view-vector /path/to/vector.geojson
Нужна настройка отображения:
view-raster /path/to/raster.tif --band 1 --colormap coolwarm
view-vector /path/to/vector.geojson --style liberty
Эти CLI-утилиты работают на базе Leafmap, MapLibre и LocalTileserver и поддерживают все форматы, совместимые с rasterio и geopandas.
Смотрите тут: https://github.com/opengeos/leafmap
Please open Telegram to view this post
VIEW IN TELEGRAM
❤21👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Вот она сила YOLO: обучена на ноутбуке примерно за час, на датасете с Kaggle.
И всё это примерно 100 строк Python-кода.
С таким проектом можно хоть стартап запускать, а ушло всего пару часов.
👉 @PythonPortal
И всё это примерно 100 строк Python-кода.
С таким проектом можно хоть стартап запускать, а ушло всего пару часов.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥63❤14🤣10
This media is not supported in your browser
VIEW IN TELEGRAM
Собери человекоподобного робота сам 🪚
OpenArm — это open-source гуманоидный робот.
В комплекте есть полный CAD, код управления, прошивка и инструменты для симуляции = всё, что нужно, чтобы собрать, модифицировать и запускать его.
Руки сделаны комплаентными и бэкдрайвимыми. Поддерживается телеуправление с обратной связью по усилию и компенсацией гравитации в реальном времени, чтобы оператор мог естественно вести руку.
Очень важно: в части симуляции OpenArm работает с платформами вроде MuJoCo и Isaac Sim, что позволяет разработчикам тестировать политики в виртуальной среде перед запуском на железе.
Собирайте сами из набора или берите предсобранный, цель проекта = доступность для исследовательских лабораторий, небольших команд и энтузиастов.🌠
👉 @PythonPortal
OpenArm — это open-source гуманоидный робот.
В комплекте есть полный CAD, код управления, прошивка и инструменты для симуляции = всё, что нужно, чтобы собрать, модифицировать и запускать его.
Руки сделаны комплаентными и бэкдрайвимыми. Поддерживается телеуправление с обратной связью по усилию и компенсацией гравитации в реальном времени, чтобы оператор мог естественно вести руку.
Очень важно: в части симуляции OpenArm работает с платформами вроде MuJoCo и Isaac Sim, что позволяет разработчикам тестировать политики в виртуальной среде перед запуском на железе.
Собирайте сами из набора или берите предсобранный, цель проекта = доступность для исследовательских лабораторий, небольших команд и энтузиастов.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18❤4👍4
Please open Telegram to view this post
VIEW IN TELEGRAM
😁78❤4
This media is not supported in your browser
VIEW IN TELEGRAM
Наконец-то в Python 3.14 можно отключить GIL
Это реально круто, потому что раньше, даже если ты писал многопоточный код, Python всё равно выполнял только один поток за раз — никакого прироста в производительности.🍫
А теперь Python может выполнять твой многопоточный код параллельно.
И uv это полностью поддерживает
👉 @PythonPortal
Это реально круто, потому что раньше, даже если ты писал многопоточный код, Python всё равно выполнял только один поток за раз — никакого прироста в производительности.
А теперь Python может выполнять твой многопоточный код параллельно.
И uv это полностью поддерживает
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍59🔥19❤11
Фраза «Мы не храним ваш пароль» - не маркетинговая болтовня. Это правда.
Компании хранят хэши паролей, а не сами пароли.
Как работает хэширование:
› Односторонний процесс (обратного пути нет)
› Один и тот же ввод = один и тот же вывод
› Разный ввод = разный вывод
Так можно проверить пароль, но нельзя его восстановить.
👉 @PythonPortal
Компании хранят хэши паролей, а не сами пароли.
Как работает хэширование:
› Односторонний процесс (обратного пути нет)
› Один и тот же ввод = один и тот же вывод
› Разный ввод = разный вывод
from hashlib import sha256
# всегда будет один и тот же результат для "mySecret123"
saved_password = sha256(
"mySecret123".encode()
).hexdigest()
# Нельзя вернуть исходный пароль "mySecret123"
# Но можно захэшировать ввод и сравнить
password = sha256(
input("Введите пароль: ").encode()
).hexdigest()
if password == saved_password:
print("Добро пожаловать!")
else:
print("Доступ запрещён!")
Так можно проверить пароль, но нельзя его восстановить.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍46🔥12❤8
Если тебе когда-нибудь покажется, что ты крутой программист, вспомни, что один чувак написал Roller Coaster Tycoon целиком на ассемблере, в одиночку.
И заработал на этом 30 миллионов долларов роялти.
👉 @PythonPortal
И заработал на этом 30 миллионов долларов роялти.
Please open Telegram to view this post
VIEW IN TELEGRAM
1😁77👍33🤯13❤12🔥3
Please open Telegram to view this post
VIEW IN TELEGRAM
😢50😁14👀4
Ни одно Python-сообщество раньше не принимало новый инструмент так быстро, как uv. 👀
Скорее всего, uv это лучший инструмент для Python за последние несколько лет.
Если ты им ещё не пользуешься, отложи всё и посмотри, что это такое.
А если уже пользуешься => глянь на прикреплённый читщит, там есть полезные штуки.
👉 @PythonPortal
Скорее всего, uv это лучший инструмент для Python за последние несколько лет.
Если ты им ещё не пользуешься, отложи всё и посмотри, что это такое.
А если уже пользуешься => глянь на прикреплённый читщит, там есть полезные штуки.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14❤10👍2
Нужно поймать и IndexError, и KeyError?
Просто используй их общего родителя — LookupError
LookupError базовый класс для ошибок, связанных с поиском по ключу или индексу (включая KeyError и IndexError), так что этот трюк аккуратно покрывает оба случая.
👉 @PythonPortal
Просто используй их общего родителя — LookupError
try:
db_host = config['db'][0]['hosts'][0][0]
except LookupError: # ловит оба варианта
db_host = 'localhost'
LookupError базовый класс для ошибок, связанных с поиском по ключу или индексу (включая KeyError и IndexError), так что этот трюк аккуратно покрывает оба случая.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22❤5
Вышел PyTorch 2.9, обновление с упором на производительность, переносимость и удобство для разработчиков
Свежая версия приносит стабильный libtorch ABI для C++/CUDA-расширений, симметричную память для multi-GPU ядер, расширенную поддержку wheel-пакетов под ROCm, XPU и CUDA 13, а также улучшения для платформ Intel, Arm и x86.
В релизе — 3216 коммитов от 452 контрибьюторов, и PyTorch 2.9 продолжает развивать экосистему open source AI по всему миру.
Полный разбор: https://hubs.la/Q03NNKqW0
👉 @PythonPortal
Свежая версия приносит стабильный libtorch ABI для C++/CUDA-расширений, симметричную память для multi-GPU ядер, расширенную поддержку wheel-пакетов под ROCm, XPU и CUDA 13, а также улучшения для платформ Intel, Arm и x86.
В релизе — 3216 коммитов от 452 контрибьюторов, и PyTorch 2.9 продолжает развивать экосистему open source AI по всему миру.
Полный разбор: https://hubs.la/Q03NNKqW0
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20❤9
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣60❤6😁6🏆4🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯51❤11👀10
This media is not supported in your browser
VIEW IN TELEGRAM
Многие зевают на теме косинуса, думая, что это скучная тригонометрия.
Но на деле именно косинус лежит в основе того, как работают векторные базы данных.
Короткий разбор — byhand.ai/vecdb
Косинус это угол между векторами.
Cosine similarity способ сравнивать эмбеддинги.
Векторная база ищет наиболее релевантный кусок, измеряя, какие векторы направлены одинаково.
Вот она, та самая математика, на которой держатся поиск, RAG и агенты.
👉 @PythonPortal
Но на деле именно косинус лежит в основе того, как работают векторные базы данных.
Короткий разбор — byhand.ai/vecdb
Косинус это угол между векторами.
Cosine similarity способ сравнивать эмбеддинги.
Векторная база ищет наиболее релевантный кусок, измеряя, какие векторы направлены одинаково.
Вот она, та самая математика, на которой держатся поиск, RAG и агенты.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤22👍10🤔5💊1
Принес годноту: свежие доклады по аналитике
Чуть контекста:
Вот пара докладов, что особенно мне откликнулись:
- End-to-end качество Алисы как универсального AI-ассистента / Мария Акопян. Как измерить «качество» виртуального ассистента, который живёт в колонках, чатах и приложениях? Мария рассказала, как команда переосмыслила оффлайн-оценку Алисы, научилась собирать сложные срезы пользовательских сессий и перешла на гибридную разметку с помощью LLM. Получился доклад про то, как метрики превращаются в реальные улучшения поведения ИИ.
- Дашборд как средство коммуникации разработчика с пользователем / Владимир Дмитриев. 10 000 дашбордов за три месяца - и всё равно пользователи не находят нужные данные. Владимир объяснил, почему дашборд, это не просто визуализация, а инструмент общения аналитика с командой. И как сделать так, чтобы данные реально помогали, а не лежали красивыми графиками в BI
Забирайте под горячий кофе☕️
Все доклады можно посмотреть на сайте. Или здесь:
- Трек "Data to Insights": YT | VK
- Трек "Data to Artifacts": YT | VK
Реклама. ООО "Яндекс". ИНН 7736207543
Чуть контекста:
20 сентября в Москве прошла Data Driven - ежегодная конфа для аналитиков от Поиска и Рекламных технологий Яндекса.
Вот пара докладов, что особенно мне откликнулись:
- End-to-end качество Алисы как универсального AI-ассистента / Мария Акопян. Как измерить «качество» виртуального ассистента, который живёт в колонках, чатах и приложениях? Мария рассказала, как команда переосмыслила оффлайн-оценку Алисы, научилась собирать сложные срезы пользовательских сессий и перешла на гибридную разметку с помощью LLM. Получился доклад про то, как метрики превращаются в реальные улучшения поведения ИИ.
- Дашборд как средство коммуникации разработчика с пользователем / Владимир Дмитриев. 10 000 дашбордов за три месяца - и всё равно пользователи не находят нужные данные. Владимир объяснил, почему дашборд, это не просто визуализация, а инструмент общения аналитика с командой. И как сделать так, чтобы данные реально помогали, а не лежали красивыми графиками в BI
Забирайте под горячий кофе
Все доклады можно посмотреть на сайте. Или здесь:
- Трек "Data to Insights": YT | VK
- Трек "Data to Artifacts": YT | VK
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9🌭1
Роадмап по AI Engineering, которому реально могут следовать новички. Всё построено на 100% бесплатных, опенсорс и комьюнити-ресурсах
Все ресурсы можно найти здесь: GitHub
👉 @PythonPortal
Все ресурсы можно найти здесь: GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
❤28👍5
This media is not supported in your browser
VIEW IN TELEGRAM
Не программируй больше в одиночку в VS Code. Это расширение добавит питомцев прямо в твой редактор
Забираем здесь. GitHub тут
👉 @PythonPortal
Забираем здесь. GitHub тут
Please open Telegram to view this post
VIEW IN TELEGRAM
❤64🔥15😁7💊1
This media is not supported in your browser
VIEW IN TELEGRAM
Чёрт, не верится, что этот инструмент бесплатный и с открытым исходником 🤯
Идеальный конвертер файлов: без ограничений по размеру, без рекламы и полностью open source.
- Конвертирует изображения, видео, документы и многое другое
- Быстрый и простой в использовании
- Поддерживает кучу форматов
- Без регистрации и прочей ерунды
Обязательная штука для разработчиков, дизайнеров, контент-мейкеров, короче, для всех, кто работает с файлами :)
👉 @PythonPortal
Идеальный конвертер файлов: без ограничений по размеру, без рекламы и полностью open source.
- Конвертирует изображения, видео, документы и многое другое
- Быстрый и простой в использовании
- Поддерживает кучу форматов
- Без регистрации и прочей ерунды
Обязательная штука для разработчиков, дизайнеров, контент-мейкеров, короче, для всех, кто работает с файлами :)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🔥11🏆6❤2
Совет по Python:
Кортежи - неизменяемые, то есть их нельзя менять.
Точнее говоря, сам кортеж - его длина и ссылки на объекты не могут изменяться.
Но если внутри кортежа лежит ссылка на изменяемый объект, этот объект можно менять.
👉 @PythonPortal
Кортежи - неизменяемые, то есть их нельзя менять.
Точнее говоря, сам кортеж - его длина и ссылки на объекты не могут изменяться.
Но если внутри кортежа лежит ссылка на изменяемый объект, этот объект можно менять.
>>> a = (10, ["S","u","m","m","e" ,"r"], "abc")
>>> a[1] = ["S","u","m","m","e" ,"r", "Mode"]
TypeError: 'tuple' object does not support item assignment
>>> a[1].append("Mode")
>>> a
(10, ['S', 'u', 'm', 'm', 'e', 'r', 'Mode'], 'abc')
Please open Telegram to view this post
VIEW IN TELEGRAM
👍35❤11