🛠️ Microsoft Research выложили в open-source новый инструмент — Debug-Gym.
Это песочница, где LLM‑агенты могут:
✅ Ставить брейкпоинты
✅ Чекать переменные
✅ Перезаписывать файлы, пока тесты не позеленеют
Всё изолировано в Docker — безопасно при проведение тестов.
📊 Протестировано 9 моделей на 3 бенчмарках. В эксперименте модели решали 300 багов — с доступом к Debug-Gym и без.
Когда агентам дали дебаг‑инструменты, их точность выросла. Но даже лучшие решили <50% задач на SWE‑bench Lite.
Писать код ИИ уже умеет.
Дебажить — пока нет.
А это и есть самая трудная часть.
Microsoft уже работает над обучением моделей для поиска информации при отладке, как RAG — но для дебага.
🔗 Сам инструмент: https://microsoft.github.io/debug-gym/
🔗Статья: https://arxiv.org/abs/2503.21557
#microsoft #ai #ml
@python_be1
Это песочница, где LLM‑агенты могут:
✅ Ставить брейкпоинты
✅ Чекать переменные
✅ Перезаписывать файлы, пока тесты не позеленеют
Всё изолировано в Docker — безопасно при проведение тестов.
📊 Протестировано 9 моделей на 3 бенчмарках. В эксперименте модели решали 300 багов — с доступом к Debug-Gym и без.
Когда агентам дали дебаг‑инструменты, их точность выросла. Но даже лучшие решили <50% задач на SWE‑bench Lite.
Писать код ИИ уже умеет.
Дебажить — пока нет.
А это и есть самая трудная часть.
Microsoft уже работает над обучением моделей для поиска информации при отладке, как RAG — но для дебага.
🔗 Сам инструмент: https://microsoft.github.io/debug-gym/
🔗Статья: https://arxiv.org/abs/2503.21557
#microsoft #ai #ml
@python_be1
🐍 Python + Ruff: сложность кода под контролем
На скрине — функция `validate_product`, которая проходит несколько вложенных проверок.
Линтер Ruff с правилом `C901` (McCabe Complexity) сигнализирует: сложность функции = 7, что выше лимита 5.
📏 McCabe Complexity измеряет количество ветвлений и условий в функции. Чем выше показатель, тем сложнее код для понимания и поддержки.
⚠️ Почему это важно:
• Снижение читаемости
• Рост вероятности багов
• Трудности при тестировании
💡 Решение:
1. Разбить функцию на несколько маленьких с понятными именами
2. Использовать ранние выходы (`return`) вместо вложенных `if`
3. Упрощать логику с помощью вспомогательных функций или структур данных
#Python #Ruff #CleanCode #Refactoring #McCabeComplexity
@python_be1
На скрине — функция `validate_product`, которая проходит несколько вложенных проверок.
Линтер Ruff с правилом `C901` (McCabe Complexity) сигнализирует: сложность функции = 7, что выше лимита 5.
📏 McCabe Complexity измеряет количество ветвлений и условий в функции. Чем выше показатель, тем сложнее код для понимания и поддержки.
⚠️ Почему это важно:
• Снижение читаемости
• Рост вероятности багов
• Трудности при тестировании
💡 Решение:
1. Разбить функцию на несколько маленьких с понятными именами
2. Использовать ранние выходы (`return`) вместо вложенных `if`
3. Упрощать логику с помощью вспомогательных функций или структур данных
#Python #Ruff #CleanCode #Refactoring #McCabeComplexity
@python_be1
🐉 Windmill — open-source платформа для разработки внутренних инструментов, которая превращает скрипты в готовые API, фоновые задачи и веб-интерфейсы. Проект позиционируется как альтернатива коммерческим решениям вроде Retool или Superblocks, но с акцентом на гибкость и self-hosted развёртывание.
Интересно реализована идея автоматической генерации UI: достаточно написать скрипт на Python, TypeScript, Go или Bash и Windmill создаст для него веб-форму с параметрами. Готовые скрипты можно комбинировать в сложные workflows или встраивать в low-code приложения. Под капотом — Rust, Postgres и sandbox-исполнение через nsjail для безопасности.
🤖 GitHub (https://github.com/windmill-labs/windmill)
@python_be1
Интересно реализована идея автоматической генерации UI: достаточно написать скрипт на Python, TypeScript, Go или Bash и Windmill создаст для него веб-форму с параметрами. Готовые скрипты можно комбинировать в сложные workflows или встраивать в low-code приложения. Под капотом — Rust, Postgres и sandbox-исполнение через nsjail для безопасности.
🤖 GitHub (https://github.com/windmill-labs/windmill)
@python_be1
❌ Монолитные тесты = больше головной боли при отладке.
Когда в одном тесте проверяешь всё подряд, при падении непонятно, какой именно сценарий сломался.
✅ Пишем специфичные тесты.
Каждая функция тестирует один конкретный случай. Так при падении сразу видно, где ошибка.
Плохо:
```
def test_extract_sentiment():
assert extract_sentiment("I love this!") == "positive"
assert extract_sentiment("Terrible") == "negative"
assert extract_sentiment("On time") == "neutral"
```
Хорошо:
```
def test_extract_sentiment_positive():
assert extract_sentiment("I love this!") == "positive"
def test_extract_sentiment_negative():
assert extract_sentiment("Terrible") == "negative"
```
📌 Результат — быстрее находишь баги и не тратишь время на догадки.
@python_be1
Когда в одном тесте проверяешь всё подряд, при падении непонятно, какой именно сценарий сломался.
✅ Пишем специфичные тесты.
Каждая функция тестирует один конкретный случай. Так при падении сразу видно, где ошибка.
Плохо:
```
def test_extract_sentiment():
assert extract_sentiment("I love this!") == "positive"
assert extract_sentiment("Terrible") == "negative"
assert extract_sentiment("On time") == "neutral"
```
Хорошо:
```
def test_extract_sentiment_positive():
assert extract_sentiment("I love this!") == "positive"
def test_extract_sentiment_negative():
assert extract_sentiment("Terrible") == "negative"
```
📌 Результат — быстрее находишь баги и не тратишь время на догадки.
@python_be1
🛞 CrossHair — необычный инструмент для анализа Python-кода, который использует символьное выполнение для поиска ошибок. Вместо традиционных тестов он проверяет корректность функций, анализируя их поведение на основе аннотаций типов и контрактов.
Под капотом работает SMT-решатель, который ищет входные данные, нарушающие условия. Например, может автоматически обнаружить, что ваша функция падает на отрицательных числах, хотя в контракте указано` x: PositiveInt.` Интегрируется с Hypothesis и популярными IDE.
🤖 GitHub (https://github.com/pschanely/CrossHair)
@python_be1
Под капотом работает SMT-решатель, который ищет входные данные, нарушающие условия. Например, может автоматически обнаружить, что ваша функция падает на отрицательных числах, хотя в контракте указано` x: PositiveInt.` Интегрируется с Hypothesis и популярными IDE.
🤖 GitHub (https://github.com/pschanely/CrossHair)
@python_be1
Релизнулся МОЩНЕЙШИЙ удалятор фона — Ripolas вырежет для вас ЛЮБУЮ пикчу за один клик.
• Работает очень шустро — готовый результат получаете за секунду.
• Идеально для простых задач — например, для удаления одноцветного фона.
• Готовый результат можно подредачить с помощью встроенного ползунка и поправить неровности.
• Пикча вылетает в отличном качестве и БЕЗ артефактов.
😶😶😶😶😶😶😶😶😶
Юзаем — тут. (https://ripolas.org/background-remover/)
👍
@python_be1
• Работает очень шустро — готовый результат получаете за секунду.
• Идеально для простых задач — например, для удаления одноцветного фона.
• Готовый результат можно подредачить с помощью встроенного ползунка и поправить неровности.
• Пикча вылетает в отличном качестве и БЕЗ артефактов.
😶😶😶😶😶😶😶😶😶
Юзаем — тут. (https://ripolas.org/background-remover/)
👍
@python_be1
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 Молниеносный HTML-парсинг: selectolax быстрее BS4 в разы
Полезный трюк: быстро парсим HTML прямо из строки с помощью selectolax — лёгкой и очень быстрой библиотеки на C, в разы быстрее BeautifulSoup.
Установка:
pip install selectolax
Пример:
from selectolax.parser import HTMLParser
html = """
<html><body> <h1>Hello</h1> <p class='msg'>World</p> </body></html> """
tree = HTMLParser(html)
print(tree.css_first("h1").text()) # Hello
print(tree.css_first("p.msg").text()) # World
@python_be1
Полезный трюк: быстро парсим HTML прямо из строки с помощью selectolax — лёгкой и очень быстрой библиотеки на C, в разы быстрее BeautifulSoup.
Установка:
pip install selectolax
Пример:
from selectolax.parser import HTMLParser
html = """
<html><body> <h1>Hello</h1> <p class='msg'>World</p> </body></html> """
tree = HTMLParser(html)
print(tree.css_first("h1").text()) # Hello
print(tree.css_first("p.msg").text()) # World
@python_be1
ИИ впервые взял золото на Международной олимпиаде по информатике
OpenAI сообщила, (https://x.com/sherylhsu02/status/1954966109851119921?s=46) что их экспериментальная модель заняла первое место среди всех ИИ-моделей и 6 место среди 330 кожаных участников на сложнейшей Олимпиаде по информатике для школьников.
Это без выхода в интернет, RAG, специального обучения и с теми же условиями, что и у людей.
И тут OpenAI проиграла азиатам 😁
@python_be1
OpenAI сообщила, (https://x.com/sherylhsu02/status/1954966109851119921?s=46) что их экспериментальная модель заняла первое место среди всех ИИ-моделей и 6 место среди 330 кожаных участников на сложнейшей Олимпиаде по информатике для школьников.
Это без выхода в интернет, RAG, специального обучения и с теми же условиями, что и у людей.
И тут OpenAI проиграла азиатам 😁
@python_be1
Проходим сложные собеседования без проблем — тулза cheating daddy (https://cheatingdaddy.com/) поможет получить самый жирный оффер.
Сервис генерирует готовые ответы для HR в реальном времени. Работает быстро и четко. Помимо генерации ответов, тулза умеет подсказывать формулировки, приводить примеры кода, напоминать о ключевых алгоритмах и даже корректировать технические неточности в ответах.
Все это в ПОЛНОЙ «невидимости». Сервис функционирует без сбоев, а при подключении бесплатного Gemini API раскрывает весь свой потенциал. Остается только не вылететь с работы через месяц.
Срочно забираем имбу — здесь. (https://cheatingdaddy.com/)
@python_be1
Сервис генерирует готовые ответы для HR в реальном времени. Работает быстро и четко. Помимо генерации ответов, тулза умеет подсказывать формулировки, приводить примеры кода, напоминать о ключевых алгоритмах и даже корректировать технические неточности в ответах.
Все это в ПОЛНОЙ «невидимости». Сервис функционирует без сбоев, а при подключении бесплатного Gemini API раскрывает весь свой потенциал. Остается только не вылететь с работы через месяц.
Срочно забираем имбу — здесь. (https://cheatingdaddy.com/)
@python_be1
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Python: Быстрое измерение времени выполнения кода с контекстным менеджером
Полезный трюк для Python-разработчиков: если вам нужно замерить время работы конкретного участка кода, можно использовать контекстный менеджер перф каунтер вместе с with.
Это позволит быстро и удобно профилировать фрагменты без громоздких измерений и принтов. Такой приём особенно полезен при оптимизации производительности.
@python_be1
Полезный трюк для Python-разработчиков: если вам нужно замерить время работы конкретного участка кода, можно использовать контекстный менеджер перф каунтер вместе с with.
Это позволит быстро и удобно профилировать фрагменты без громоздких измерений и принтов. Такой приём особенно полезен при оптимизации производительности.
@python_be1
Для продвинутых администраторов Linux есть одна команда, которая может значительно облегчить управление системами — это 'lsof'. Эта утилита позволяет просмотреть список открытых файлов и сокетов в системе, что крайне полезно для диагностики и мониторинга. Например, если вам нужно выяснить, какой процесс использует определённый порт, просто выполните 'lsof -i :<порт>'. Это даст вам информацию о процессе, который его использует, включая PID и имя пользователя.
Используя 'lsof', администраторы могут быстро находить утечки памяти, следить за активностью сетевых соединений и даже выявлять несанкционированные доступы. Кроме того, команда позволяет фильтровать вывод по различным критериям, что делает её мощным инструментом для анализа состояния системы и устранения проблем.
@python_be1
Используя 'lsof', администраторы могут быстро находить утечки памяти, следить за активностью сетевых соединений и даже выявлять несанкционированные доступы. Кроме того, команда позволяет фильтровать вывод по различным критериям, что делает её мощным инструментом для анализа состояния системы и устранения проблем.
@python_be1
Для продвинутых пользователей Linux одна из самых мощных команд — это 'strace'. Эта утилита позволяет отслеживать системные вызовы и сигналы, которые генерируются процессом в реальном времени. Вы можете использовать 'strace -p <PID>' для мониторинга конкретного процесса, чтобы увидеть, какие файлы он открывает, какие сетевые запросы отправляет и какие ошибки возникают. Это бесценный инструмент для отладки и диагностики, позволяющий получить детализированную информацию о работе приложения и его взаимодействии с операционной системой. Например, если приложение не может открыть файл, 'strace' покажет, какие именно вызовы были сделаны и почему они не удались. Это значительно ускоряет процесс поиска и устранения неполадок, особенно в сложных системах.
@python_be1
@python_be1
📸 Разработчик запустил свой код на сервере, имея лишь возможность изменения содержимого комментария в Python-скрипте
Участник соревнования UIUCTF 2025 обошёл ограничения задачи, где можно было изменять только содержимое комментария в Python-скрипте и подробно рассказал об этом. Вместо поиска уязвимостей в парсере, он использовал особенность интерпретатора — выполнение ZIP-архивов как Python-кода.
Секрет в структуре ZIP-файлов: Python ищет метаданные в конце архива, что позволило вставить архив в комментарий, сохранив валидность исходного скрипта. При запуске такого скрипта выполнялся код из<i> </i><i>main.</i>py внутри архива.
🔗 Ссылка - *клик* (https://www.hacktron.ai/blog/posts/python-zip-confusion/)
@python_be1
Участник соревнования UIUCTF 2025 обошёл ограничения задачи, где можно было изменять только содержимое комментария в Python-скрипте и подробно рассказал об этом. Вместо поиска уязвимостей в парсере, он использовал особенность интерпретатора — выполнение ZIP-архивов как Python-кода.
Секрет в структуре ZIP-файлов: Python ищет метаданные в конце архива, что позволило вставить архив в комментарий, сохранив валидность исходного скрипта. При запуске такого скрипта выполнялся код из<i> </i><i>main.</i>py внутри архива.
🔗 Ссылка - *клик* (https://www.hacktron.ai/blog/posts/python-zip-confusion/)
@python_be1
This media is not supported in your browser
VIEW IN TELEGRAM
🎮 GPT-5 прошёл Pokémon Red!
6 470 шагов против 18 184 у o3 — колоссальный прогресс в эффективности.
• GPT-5 гораздо реже «галлюцинирует» — главный фактор ускорения.
• Лучшая пространственная логика: o3 часто пытался «пробиться» сквозь стены и путался в сложных локациях, а GPT-5 умеет планировать длинные последовательности действий с минимумом ошибок.
• Более чёткое планирование целей и их последовательное выполнение.
Теперь посмотрим, как он справится с финальным испытанием! 🔥
🔜 Следующий челлендж: GPT-5 играет Pokémon Crystal. Старт скоро на Twitch!
Livestream: https://twitch.tv/gpt_plays_pokemon
@python_be1
6 470 шагов против 18 184 у o3 — колоссальный прогресс в эффективности.
• GPT-5 гораздо реже «галлюцинирует» — главный фактор ускорения.
• Лучшая пространственная логика: o3 часто пытался «пробиться» сквозь стены и путался в сложных локациях, а GPT-5 умеет планировать длинные последовательности действий с минимумом ошибок.
• Более чёткое планирование целей и их последовательное выполнение.
Теперь посмотрим, как он справится с финальным испытанием! 🔥
🔜 Следующий челлендж: GPT-5 играет Pokémon Crystal. Старт скоро на Twitch!
Livestream: https://twitch.tv/gpt_plays_pokemon
@python_be1
Еще одна полезная команда для системных администраторов — 'nc', или Netcat. Эта утилита позволяет отправлять и получать данные по сетевым соединениям, и может использоваться для множества задач: от отладки сетевых сервисов до создания простых чатов. Например, с помощью 'nc -l -p <порт>' вы можете создать прослушивающий сокет, который будет ждать входящих соединений. Это дает вам возможность протестировать, как ваши приложения взаимодействуют по сети, и выявлять проблемы с подключениями. Также 'nc' может быть использован для передачи файлов между машинами или для создания туннелей, что делает его настоящим швейцарским армейским ножом для сетевых администраторов.
@python_be1
@python_be1
Если вы хотите оптимизировать операции с множествами в Python, обратите внимание на использование 'frozenset'. Этот неизменяемый аналог обычного 'set' может быть использован в качестве ключей в словарях, что расширяет ваши возможности работы с данными. Например, вместо использования обычного множества в качестве ключа, создайте 'frozenset', чтобы избежать ошибок, связанных с изменяемостью. Это также позволяет создавать более сложные структуры данных, обеспечивая при этом неизменяемость. Пример создания 'frozenset': 'frozen_set = frozenset([1, 2, 3])'. С его помощью вы сможете легко проверять наличие элементов и выполнять другие операции над множествами.
@python_be1
@python_be1
🚀 Ускоряем работу с данными с помощью Delta Lake
Когда нужно добавить новые данные к уже существующему набору, есть два подхода:
🔴 Без Delta Lake
- Сначала загружаешь все старые данные (например, 10 000 записей) из CSV.
- Загружаешь новые данные (например, 50 записей).
- Объединяешь их, что требует обработки всех 10 050 записей.
- Это медленно, расходует память и ресурсы.
🟢 С Delta Lake
- Хранишь данные в формате Delta Lake.
- Загружаешь только новые записи (например, 50 штук).
- Добавляешь их напрямую в существующую таблицу с помощью `append`, обрабатывая только новые данные.
- Экономия времени, памяти и ресурсов.
💡 Преимущества Delta Lake:
- Инкрементальная загрузка данных.
- Работа с большими объёмами без полной перезагрузки.
- Поддержка транзакций (ACID).
- Совместимость с большими дата-платформами (Spark, Pandas и др.).
📊 Если у тебя миллионы строк — выигрыш в скорости будет колоссальным.
@python_be1
Когда нужно добавить новые данные к уже существующему набору, есть два подхода:
🔴 Без Delta Lake
- Сначала загружаешь все старые данные (например, 10 000 записей) из CSV.
- Загружаешь новые данные (например, 50 записей).
- Объединяешь их, что требует обработки всех 10 050 записей.
- Это медленно, расходует память и ресурсы.
🟢 С Delta Lake
- Хранишь данные в формате Delta Lake.
- Загружаешь только новые записи (например, 50 штук).
- Добавляешь их напрямую в существующую таблицу с помощью `append`, обрабатывая только новые данные.
- Экономия времени, памяти и ресурсов.
💡 Преимущества Delta Lake:
- Инкрементальная загрузка данных.
- Работа с большими объёмами без полной перезагрузки.
- Поддержка транзакций (ACID).
- Совместимость с большими дата-платформами (Spark, Pandas и др.).
📊 Если у тебя миллионы строк — выигрыш в скорости будет колоссальным.
@python_be1