⚡ pyfastlogging- быстрый неблокирующий логгер для Python
Что умеет:
- thread-safe логирование
- несколько writers на один logger
- консоль, файлы, TCP, syslog и callbacks
- ротация и сжатие логов
- AES-шифрование сетевого логирования
- multiprocessing и threads
- конфигурация через JSON, XML и YAML
- экспорт логов в OpenTelemetry по OTLP/HTTP
Установка:
Поддерживается Python 3.10+. Актуальный релиз - 0.9.0, лицензия - MIT OR Apache-2.0. PyPI
Хороший вариант для сервисов, где обычное логирование уже начинает влиять на latency.
https://pypi.org/project/pyfastlogging/
pyfastlogging — Python-обёртка над fastlogging, где запись логов вынесена в фоновые потоки. За счёт этого основной код меньше блокируется на I/O. Что умеет:
- thread-safe логирование
- несколько writers на один logger
- консоль, файлы, TCP, syslog и callbacks
- ротация и сжатие логов
- AES-шифрование сетевого логирования
- multiprocessing и threads
- конфигурация через JSON, XML и YAML
- экспорт логов в OpenTelemetry по OTLP/HTTP
Установка:
pip install pyfastlogging
python
from pyfastlogging import TRACE, Logging, ConsoleWriterConfig
logger = Logging(
TRACE,
"main",
[ConsoleWriterConfig(TRACE, True)],
)
logger.info("Hello")
logger.shutdown()
Поддерживается Python 3.10+. Актуальный релиз - 0.9.0, лицензия - MIT OR Apache-2.0. PyPI
Хороший вариант для сервисов, где обычное логирование уже начинает влиять на latency.
https://pypi.org/project/pyfastlogging/
❤8🔥6👍4😢1
Если давно хотел разобраться в теме, но постоянно откладывал или терялся среди десятков материалов, этот курс на Stepik поможет выстроить обучение последовательно.
Что получишь:
- Понятные объяснения без лишней воды.
- Практические задания для закрепления знаний.
- Возможность учиться в удобном темпе.
- Структурированный подход вместо хаотичного поиска информации.
Подойдёт тем, кто начинает с нуля или хочет систематизировать знания.
Начни прокачивать навыки уже сейчас:
https://stepik.org/course/303477/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🔥5👍1😁1😱1😢1🎉1
🐍 Yokan - компилятор Python в нативные desktop-приложения
Yokan позволяет писать приложение на обычном Python, запускать его через CPython во время разработки, а затем собирать тот же код в нативный machine-code executable.
Что интересного:
- статически типизированное подмножество Python;
- hot reload во время разработки;
- нативная сборка через
- без CPython внутри бинарника, если не используется
- можно подключать обычный Python-код и библиотеки через
- есть интеграция с Rust для производительных частей;
- UI на базе GPUI, движка редактора Zed;
- около 36 UI-компонентов и десятки готовых демо.
Для проверки совместимости есть
Сейчас поддерживаются macOS Apple Silicon и Linux, Python 3.14+.
По сути, идея похожа на Flutter-подход: быстрая разработка с live reload, затем AOT-сборка в нативное desktop-приложение.
GitHub:
https://github.com/i2y/yokan
Yokan позволяет писать приложение на обычном Python, запускать его через CPython во время разработки, а затем собирать тот же код в нативный machine-code executable.
Что интересного:
- статически типизированное подмножество Python;
- hot reload во время разработки;
- нативная сборка через
yokan build;- без CPython внутри бинарника, если не используется
@py;- можно подключать обычный Python-код и библиотеки через
@py;- есть интеграция с Rust для производительных частей;
- UI на базе GPUI, движка редактора Zed;
- около 36 UI-компонентов и десятки готовых демо.
Для проверки совместимости есть
yokan gate: он запускает приложение в CPython и в нативной сборке, повторяет одинаковые действия и сравнивает результат. :Сейчас поддерживаются macOS Apple Silicon и Linux, Python 3.14+.
По сути, идея похожа на Flutter-подход: быстрая разработка с live reload, затем AOT-сборка в нативное desktop-приложение.
GitHub:
https://github.com/i2y/yokan
1❤11🎉5👍4🔥1
ORM превратила один SQL-запрос в 51. Разработчик даже не заметил
Знакомая ситуация: код выглядит чисто, никаких SQL-запросов вручную, всё через ORM.
Например, в Django:
Кажется, что мы просто получаем 50 постов с авторами. Но на практике это может вызвать 51 запрос к базе данных.
Один запрос загружает посты, а ещё 50 отдельно получают авторов.
Это классическая проблема N+1 queries. Причём чем больше записей, тем больше обращений к БД.
Исправляется одной строкой:
Теперь Django использует
ORM избавляет от написания SQL, но не от необходимости понимать, какой SQL выполняется.
Именно поэтому при оптимизации API полезнее сначала посмотреть на количество запросов, чем переписывать Python-код ради нескольких миллисекунд.
Знакомая ситуация: код выглядит чисто, никаких SQL-запросов вручную, всё через ORM.
Например, в Django:
posts = Post.objects.all()[:50]
for post in posts:
print(post.author.name)
Кажется, что мы просто получаем 50 постов с авторами. Но на практике это может вызвать 51 запрос к базе данных.
Один запрос загружает посты, а ещё 50 отдельно получают авторов.
Это классическая проблема N+1 queries. Причём чем больше записей, тем больше обращений к БД.
Исправляется одной строкой:
posts = Post.objects.select_related("author")[:50]
Теперь Django использует
JOIN и получает посты вместе с авторами одним запросом.ORM избавляет от написания SQL, но не от необходимости понимать, какой SQL выполняется.
Именно поэтому при оптимизации API полезнее сначала посмотреть на количество запросов, чем переписывать Python-код ради нескольких миллисекунд.
👍14❤8🔥5😁2🎉1
👾 Русскоязычный каталог из 2118 проектов по декомпиляции игр: от Ocarina of Time до Xbox 360
На GitHub появился awesome-список, собранный на русском: проекты, которые восстанавливают игры из машинного кода. Это декомпиляции, статические рекомпиляции, порты на исходниках и ремейки движков. Задача простая: помочь найти проект под нужную игру и платформу и объяснить, как всё это устроено.
Масштаб впечатляет. В каталоге около 2118 проектов для примерно 1829 игр, из них 1771 активных. По типам: 786 декомпиляций, 525 статических рекомпиляций, 269 портов на исходниках, 238 ремейков движков, 234 дизассемблирования, 57 браузерных портов и 9 инструментов.
По платформам лидирует ПК с 295 проектами, дальше Nintendo 64 (190), Xbox 360 и PlayStation 1 (по 161). Следом идут DOS, GameCube, PS2, Game Boy Advance и Wii. Среди примеров Zelda (Ocarina of Time, Majora's Mask, Twilight Princess), Mario 64, Sonic, Diablo, Morrowind, OpenRA и OpenRCT2.
Внутри не просто список. В README есть топ-25, отдельный список браузерных портов, каталоги по типам и платформам, раздел о том, как начать декомпилировать самому, FAQ и глоссарий. Из инструментов упоминаются N64Recomp, XenonRecomp, RT64, splat, decomp.me, objdiff и m2c. Каталог обновляется автоматически через GitHub Actions.
Важная оговорка: сами проекты работают с данными из легально купленных копий игр, а в репозитории лежат только ссылки.
Репозиторий: https://github.com/justxor/awesome-decomp-games-ru
На GitHub появился awesome-список, собранный на русском: проекты, которые восстанавливают игры из машинного кода. Это декомпиляции, статические рекомпиляции, порты на исходниках и ремейки движков. Задача простая: помочь найти проект под нужную игру и платформу и объяснить, как всё это устроено.
Масштаб впечатляет. В каталоге около 2118 проектов для примерно 1829 игр, из них 1771 активных. По типам: 786 декомпиляций, 525 статических рекомпиляций, 269 портов на исходниках, 238 ремейков движков, 234 дизассемблирования, 57 браузерных портов и 9 инструментов.
По платформам лидирует ПК с 295 проектами, дальше Nintendo 64 (190), Xbox 360 и PlayStation 1 (по 161). Следом идут DOS, GameCube, PS2, Game Boy Advance и Wii. Среди примеров Zelda (Ocarina of Time, Majora's Mask, Twilight Princess), Mario 64, Sonic, Diablo, Morrowind, OpenRA и OpenRCT2.
Внутри не просто список. В README есть топ-25, отдельный список браузерных портов, каталоги по типам и платформам, раздел о том, как начать декомпилировать самому, FAQ и глоссарий. Из инструментов упоминаются N64Recomp, XenonRecomp, RT64, splat, decomp.me, objdiff и m2c. Каталог обновляется автоматически через GitHub Actions.
Важная оговорка: сами проекты работают с данными из легально купленных копий игр, а в репозитории лежат только ссылки.
Репозиторий: https://github.com/justxor/awesome-decomp-games-ru
🔥8❤5👍3🎉1
🏎 Всю Формулу-1 можно воспроизвести на Python. Нашёл проект с 7000 звёзд на GitHub
F1 Race Replay позволяет заново просматривать реальные гонки Формулы-1 в интерактивном режиме, отслеживая перемещения болидов и телеметрию пилотов.
Проект написан на Python и использует библиотеку FastF1 для получения исторических данных гонок.
Что умеет:
Показывает положение всех болидов на трассе, порядок пилотов, используемые шины и текущий круг.
Позволяет останавливать гонку, перематывать назад и вперёд, а также менять скорость воспроизведения от 0,1x до 256x.
Отображает скорость пилотов, передачи, состояние DRS, времена кругов и секторов. Можно выбирать нескольких гонщиков и сравнивать их телеметрию.
Есть визуализация выезда машины безопасности, графики деградации шин и отдельные окна для анализа гоночной стратегии.
Всё запускается локально:
Внутри используются Python 3.11+, FastF1, Arcade, PySide6 и NumPy. Можно создавать собственные панели телеметрии и подключать их к потоку данных.
Хороший проект для тех, кто хочет попрактиковаться в Python, визуализации данных и анализе спортивной телеметрии.
GitHub: https://github.com/IAmTomShaw/f1-race-replay
F1 Race Replay позволяет заново просматривать реальные гонки Формулы-1 в интерактивном режиме, отслеживая перемещения болидов и телеметрию пилотов.
Проект написан на Python и использует библиотеку FastF1 для получения исторических данных гонок.
Что умеет:
Показывает положение всех болидов на трассе, порядок пилотов, используемые шины и текущий круг.
Позволяет останавливать гонку, перематывать назад и вперёд, а также менять скорость воспроизведения от 0,1x до 256x.
Отображает скорость пилотов, передачи, состояние DRS, времена кругов и секторов. Можно выбирать нескольких гонщиков и сравнивать их телеметрию.
Есть визуализация выезда машины безопасности, графики деградации шин и отдельные окна для анализа гоночной стратегии.
Всё запускается локально:
git clone https://github.com/IAmTomShaw/f1-race-replay
cd f1-race-replay
pip install -r requirements.txt
python main.py
Внутри используются Python 3.11+, FastF1, Arcade, PySide6 и NumPy. Можно создавать собственные панели телеметрии и подключать их к потоку данных.
Хороший проект для тех, кто хочет попрактиковаться в Python, визуализации данных и анализе спортивной телеметрии.
GitHub: https://github.com/IAmTomShaw/f1-race-replay
🔥12❤8👍8🎉1