Как стать автором
Обновить

Мелкая питонячая радость #7: три штуки по цене одной — консольная анимация, алгоритмы и отладка

Время на прочтение2 мин
Количество просмотров11K

На этой неделе достаточно крупных мелких радостей не нашлось, зато нашлись 3 совсем мелкие мелкие радости.


termtosvg


Сейчас принято снабжать свои библиотеки и репо на github красивой анимацией, показывающей консоль с живой демкой вашего творения.


image


Традиция, бесспорно, хорошая и правильная. Только записывать такие анимации бывает трудно/лень/некогда. Авторы termtosvg пристрелили всех зайцев одим выстрелом и дали программистам прекрасную штуку для записи консольных демок.


В отличие от многих других решений, termtosvg пишет не видео или гифку. Эта штука ловит все происходящее в консоли и рендерит SVG анимацию на основе того, что появляется в терминале. На выходе вы получаете не анимацию именно вашего экрана, а красивый и стильный рендер консольных операций. SVG весит куда меньше других форматов, а еще его можно достаточно легко редактировать.


Для взыскательных людей прилагается несколько предустановленных цветовых решений, чтобы вы могли кастомизировать свои живые демки.


Можно рендерить вывод в светлой теме:



Можно рендерить в такой вот темной теме, с кнопками управления окна и прогрессбаром внизу:



А можно еще в десятке других цветовых решений.


Ставится все как обычно,


pip install termtosvg

маководы могут поставиться еще и через brew (нужные версии Python и еще пачка зависимостей подтянется сама)


brew install termtosvg

Мануал лежит тут, полный список предустановленных тем для рендера — здесь. Все это на Python, так что можно как минимум читатать интересные исходники, если нужды в анимациях консоли у вас нет.


Сборник алгоритмов The Algorithms


The Algorithms на Python. Этот репо уже многие видели и он на слуху — почти 50 000 звезд на github. Реализация пачки классических алгоритмов на чистом Python — графы, математика, шифрование, протоколы, сетевая маршрутизация и куча всего разного.


Для повседневной работы такое понадобится мало кому, но очень пригодится для общего развития или для подготовки к интервью в компанию, которая может предложить вам поработать с бинарным деревом на собеседовании.


В наличии есть не только питонячие реализации, но и другие языки.


icecream



Казалось бы, инструментов отладки и мониторинга питонячего кода полно и они удовлетворяют всем нуждам разработчика — дебаггеры, сборщики логов, мониторинги ошибок, сборщики метрик.


Но иногда бывает так, что инженерам приходится шлепать в коде старый добрый print(), чтобы разобраться в происходящем.


if something:
    print(1)
    operation_one()
else:
    print(2)
    operation_two()

Метод отладки спорный, грязный, действенный и на любителя. Для таких любителей существует питонячая библиотека icecream (а еще реализации для C++, Node.JS, Rust, Dart и PHP).


Теперь можно написать


from icecream import ic

def foo():
    ic()
    first()

    if expression:
        ic()
        second()
    else:
        ic()
        third()

и получить в ответ отладочный код типа


ic| example.py:4 in foo()
ic| example.py:11 in foo()

За отладку чисто таким вот методом лично я врезал бы по шее, но при определенных модификациях это можно использовать. Еще в этой либе есть кое-что еще, что может быть полезным:


  • Возможность быстро и легко залогировать на выход входные аргументы и результат работы функций.
  • Кастомизировать вывод разными префиксами и данными.
  • Повесить свои кастомные функции для обработки вывода отладочных сообщений.

Если это все аккуратно скомбинировать с разными флагами-переключалками из режима отладки в режим продакшн, то получается вполне себе вменяемая штука, которая доступно расскажет обо всем, происходящем у вас в коде.

Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
+31
Комментарии9

Публикации

Истории

Работа

Data Scientist
62 вакансии
Python разработчик
135 вакансий

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн