This media is not supported in your browser
VIEW IN TELEGRAM
При генерации 3D-моделей с помощью AI каждый компонент можно отдельно выделять, переименовывать, перемещать или менять ему материал — без необходимости заново генерировать всю модель.
Nova3D генерирует Python-скрипты для Blender на основе промптов, вместо прямого вывода объединённого mesh-файла. В сгенерированном GLB каждая часть имеет своё имя и иерархию, благодаря чему их можно редактировать по отдельности.
https://github.com/RareSense/Nova3D
👉 @PythonPortal
Nova3D генерирует Python-скрипты для Blender на основе промптов, вместо прямого вывода объединённого mesh-файла. В сгенерированном GLB каждая часть имеет своё имя и иерархию, благодаря чему их можно редактировать по отдельности.
https://github.com/RareSense/Nova3D
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Please open Telegram to view this post
VIEW IN TELEGRAM
😁76👍8
Python-совет: как писать код с эффективным использованием памяти
Это проблемный код:
Проблема в том, что такой подход сохраняет ВСЕ обработанные строки в памяти перед тем, как что-либо вернуть. Это как приготовить 10 000 блюд и хранить их все на кухне — место быстро закончится.
👉 Лучший подход — использовать
Вместо того чтобы собирать один большой список в памяти, эта функция выдаёт по одной транзакции за раз, только когда это нужно. Это как готовить блюда только по мере поступления заказов. Проблем с памятью здесь нет.
👉 @PythonPortal
Это проблемный код:
def generate_transactions_inefficient(df: pd.DataFrame):
transactions = []
for _, row in df.iterrows():
transactions.append({
'user_id': row['user_id'],
'amount': row['amount'],
'transaction_date': row['transaction_date'],
'status': row['status']
})
return transactions
Проблема в том, что такой подход сохраняет ВСЕ обработанные строки в памяти перед тем, как что-либо вернуть. Это как приготовить 10 000 блюд и хранить их все на кухне — место быстро закончится.
yield:def generate_transactions_efficient(df: pd.DataFrame):
for _, row in df.iterrows():
yield {
'user_id': row['user_id'],
'amount': row['amount'],
'transaction_date': row['transaction_date'],
'status': row['status']
}
Вместо того чтобы собирать один большой список в памяти, эта функция выдаёт по одной транзакции за раз, только когда это нужно. Это как готовить блюда только по мере поступления заказов. Проблем с памятью здесь нет.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤20
Один соло-разработчик выиграл хакатон Anthropic, он за 8 часов собрал рабочий продукт с помощью Claude Code и забрал $15,000 призовых.
Затем выложил весь стек в опенсорс.
189,000 звёзд на GitHub. Полная конфигурация:
→ 38 специализированных агентов (planner, security reviewer, debugger, code reviewer)
→ 156 skills, подгружаемых по требованию (/plan, /tdd, /security-scan, /quality-gate)
→ 72 кастомные slash-команды
→ AgentShield: 1,282 security-теста по CLAUDE.md, MCP-конфигам, хукам и skills
→ 3 агента на Opus 4.6, запускающих red-team пайплайны (Attacker, Defender, Auditor)
→ слой непрерывного обучения
→ покрытие 12 языковых экосистем
Работает в Claude Code, Codex, Cursor, OpenCode, Gemini и тд
👉 @PythonPortal
Затем выложил весь стек в опенсорс.
189,000 звёзд на GitHub. Полная конфигурация:
→ 38 специализированных агентов (planner, security reviewer, debugger, code reviewer)
→ 156 skills, подгружаемых по требованию (/plan, /tdd, /security-scan, /quality-gate)
→ 72 кастомные slash-команды
→ AgentShield: 1,282 security-теста по CLAUDE.md, MCP-конфигам, хукам и skills
→ 3 агента на Opus 4.6, запускающих red-team пайплайны (Attacker, Defender, Auditor)
→ слой непрерывного обучения
→ покрытие 12 языковых экосистем
Работает в Claude Code, Codex, Cursor, OpenCode, Gemini и тд
Please open Telegram to view this post
VIEW IN TELEGRAM
❤16🔥10👍5
Почему
Вот один из типичных Unicode-подводных камней, который часто приводит к очень запутанным багам в Python:
Две строки могут выглядеть одинаково на экране, но при этом отличаться внутри:
Внешне они одинаковые, но Python хранит их как разные последовательности Unicode-кодпоинтов.
Посмотреть, что реально внутри строки, можно через
Вывод:
Как правильно сравнивать такие строки?
Нужно нормализовать Unicode перед сравнением:
Такие различия часто появляются в:
- пользовательском вводе
- копипасте из разных источников
- именах файлов
- поиске и фильтрации текста
- данных из разных языков и систем
Ещё один похожий кейс — невидимые символы
Например, zero-width space может ломать сравнение вообще без визуальных признаков:
Подробнее можно почитать здесь:
https://pythonkoans.substack.com/p/koan-15-the-invisible-ink
👉 @PythonPortal
"é" == "é" может возвращать False в PythonВот один из типичных Unicode-подводных камней, который часто приводит к очень запутанным багам в Python:
Две строки могут выглядеть одинаково на экране, но при этом отличаться внутри:
import unicodedata
a = "é" # один кодпоинт: U+00E9
b = "e\u0301" # "e" + комбинирующий акцент (acute accent)
print(a)
print(b)
print(a == b)
# False
print(len(a))
# 1
print(len(b))
# 2
Внешне они одинаковые, но Python хранит их как разные последовательности Unicode-кодпоинтов.
Посмотреть, что реально внутри строки, можно через
repr() и unicodedata.name():import unicodedata
for char in "e\u0301":
print(repr(char), unicodedata.name(char))
Вывод:
'e' LATIN SMALL LETTER E
'́' COMBINING ACUTE ACCENT
Как правильно сравнивать такие строки?
Нужно нормализовать Unicode перед сравнением:
import unicodedata
a = "é"
b = "e\u0301"
a_normalized = unicodedata.normalize("NFC", a)
b_normalized = unicodedata.normalize("NFC", b)
print(a_normalized == b_normalized)
# True
NFC приводит текст к “составной” форме, где комбинация "e" + accent превращается в один символ "é".Такие различия часто появляются в:
- пользовательском вводе
- копипасте из разных источников
- именах файлов
- поиске и фильтрации текста
- данных из разных языков и систем
Ещё один похожий кейс — невидимые символы
Например, zero-width space может ломать сравнение вообще без визуальных признаков:
text = "hello\u200b"
print(text == "hello")
# False
print(text)
# hello
print(repr(text))
# 'hello\u200b'
print() скрывает проблему, но repr() показывает реальное содержимое строки.Подробнее можно почитать здесь:
https://pythonkoans.substack.com/p/koan-15-the-invisible-ink
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤6🔥2🤣1
Если ты работаешь с data пайплайнами, эти репозитории очень полезны:
ibis
Python API, который позволяет писать запросы один раз и запускать их на разных backend’ах для данных, таких как DuckDB, BigQuery и Snowflake.
pygwalker
Мгновенно превращает DataFrame в интерактивный UI для визуального исследования данных.
katana
Быстрый и масштабируемый веб-краулер, часто используется для security testing и крупномасштабного сбора/поиска данных.
#Data_Science
👉 @PythonPortal
ibis
Python API, который позволяет писать запросы один раз и запускать их на разных backend’ах для данных, таких как DuckDB, BigQuery и Snowflake.
pygwalker
Мгновенно превращает DataFrame в интерактивный UI для визуального исследования данных.
katana
Быстрый и масштабируемый веб-краулер, часто используется для security testing и крупномасштабного сбора/поиска данных.
#Data_Science
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Почему профилирование кода важно 🐍
Невозможно оптимизировать то, что нельзя измерить.
Профилирование показывает, ГДЕ именно ваш код работает медленно:
• Помогает выявить узкие места производительности, о существовании которых вы могли даже не подозревать.
• Показывает, какие функции потребляют больше всего процессорного времени.
• Позволяет не тратить время на оптимизацию не тех участков кода.
• Помогает обнаружить неэффективные алгоритмы и структуры данных.
• Показывает точное количество вызовов и время выполнения каждой функции.
В Python 3.15 доступны два подхода к профилированию:
• profiling.sampling — статистический профилировщик с минимальными накладными расходами, отлично подходит для продакшена.
• profiling.tracing (cProfile) — детерминированный профилировщик с точным подсчётом вызовов функций.
Реальный пример: в Grand Theft Auto Online узкое место производительности, приводившее к потере около 70% производительности, оставалось незамеченным 8 лет, пока кто-то не выполнил профилирование. Исправление оказалось простым, а прирост производительности — огромным.
Профилируйте код до того, как приступать к оптимизации. Скорее всего, вы удивитесь тому, где на самом деле тратится время выполнения.
👉 @PythonPortal
Невозможно оптимизировать то, что нельзя измерить.
Профилирование показывает, ГДЕ именно ваш код работает медленно:
• Помогает выявить узкие места производительности, о существовании которых вы могли даже не подозревать.
• Показывает, какие функции потребляют больше всего процессорного времени.
• Позволяет не тратить время на оптимизацию не тех участков кода.
• Помогает обнаружить неэффективные алгоритмы и структуры данных.
• Показывает точное количество вызовов и время выполнения каждой функции.
В Python 3.15 доступны два подхода к профилированию:
• profiling.sampling — статистический профилировщик с минимальными накладными расходами, отлично подходит для продакшена.
• profiling.tracing (cProfile) — детерминированный профилировщик с точным подсчётом вызовов функций.
Реальный пример: в Grand Theft Auto Online узкое место производительности, приводившее к потере около 70% производительности, оставалось незамеченным 8 лет, пока кто-то не выполнил профилирование. Исправление оказалось простым, а прирост производительности — огромным.
Профилируйте код до того, как приступать к оптимизации. Скорее всего, вы удивитесь тому, где на самом деле тратится время выполнения.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍3
Нашли легкий способ изучить математику для ML: Mathematics for Machine Learning
это курируемая коллекция на GitHub, включающая книги, научные статьи, видеолекции и базовые материалы по математике для изучения и повторения математических основ машинного обучения.
Она помогает выстроить более прочную базу знаний, объединяя проверенные ресурсы вокруг тем, с которыми инженеры машинного обучения сталкиваются постоянно: линейная алгебра, математический анализ, теория вероятностей, статистика, теория информации, матричное исчисление и математика глубокого обучения.
Бесплатный публичный репозиторий на GitHub.
👉 @PythonPortal
это курируемая коллекция на GitHub, включающая книги, научные статьи, видеолекции и базовые материалы по математике для изучения и повторения математических основ машинного обучения.
Она помогает выстроить более прочную базу знаний, объединяя проверенные ресурсы вокруг тем, с которыми инженеры машинного обучения сталкиваются постоянно: линейная алгебра, математический анализ, теория вероятностей, статистика, теория информации, матричное исчисление и математика глубокого обучения.
Бесплатный публичный репозиторий на GitHub.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2
- Отключите автообновление расширений в VS Code, Cursor и других форках
(macOS:
Cmd + Shift + P → Disable Auto Updating Extensions)- Используйте статический анализатор zizmor для GitHub Actions, чтобы выявлять потенциальные проблемы безопасности
- Используйте actions-up для обновления GitHub Actions до актуальных версий с SHA-pinning
- Добавьте Socket Free Firewall или safe-chain при установке npm-пакетов, чтобы снизить риски атак через цепочку поставок (supply chain attacks)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8
Откройте для себя очень плавный Markdown-редактор, специально разработанный для сценариев управления контекстом AI-чатов: марка 🏁
Построен на Tauri + React + TypeScript, с кроссплатформенной поддержкой macOS / Windows / Linux.
Слева — редактор на CodeMirror 6; справа — предпросмотр в реальном времени на markdown-it + Shiki + Mermaid. Поддерживает 8 наборов тем, Vim mode, command palette, файловый сайдбар, reading mode и экспорт в PDF.
👉 @PythonPortal
Построен на Tauri + React + TypeScript, с кроссплатформенной поддержкой macOS / Windows / Linux.
Слева — редактор на CodeMirror 6; справа — предпросмотр в реальном времени на markdown-it + Shiki + Mermaid. Поддерживает 8 наборов тем, Vim mode, command palette, файловый сайдбар, reading mode и экспорт в PDF.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤6
Парни, создали самый быстрый PDF-парсер в мире ⚡️
И при этом он точнее любого другого open-source PDF-парсера без использования моделей (pymupdf, pypdf, markitdown, pdftotext, opendataloader, pymupdf4llm).
Презентовали LiteParse v2. Девелоперы полностью переписали библиотеку на Rust и адаптировали её как нативные пакеты для Python и Node.js.
Поддерживается более 50 различных форматов документов. LiteParse можно вызывать напрямую или устанавливать прямо внутрь вашего любимого AI-агента.
Чуть подробнее и обширней в их блоге
👉 @PythonPortal
И при этом он точнее любого другого open-source PDF-парсера без использования моделей (pymupdf, pypdf, markitdown, pdftotext, opendataloader, pymupdf4llm).
Презентовали LiteParse v2. Девелоперы полностью переписали библиотеку на Rust и адаптировали её как нативные пакеты для Python и Node.js.
Поддерживается более 50 различных форматов документов. LiteParse можно вызывать напрямую или устанавливать прямо внутрь вашего любимого AI-агента.
Чуть подробнее и обширней в их блоге
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤3
Сборка GPT-подобных LLM с нуля на PyTorch.
https://github.com/analyticalrohit/llms-from-scratch
10 ноутбуков. Пошаговое объяснение.
👉 @PythonPortal
https://github.com/analyticalrohit/llms-from-scratch
10 ноутбуков. Пошаговое объяснение.
Разбирает архитектуру LLM на простые части.
Подходит для новичков.
Полностью hands-on.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍2
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍2