Petty little joy # 7: tres por el precio de uno: animación de consola, algoritmos y depuración

Esta semana, no se encontraron alegrías lo suficientemente grandes, pero hubo 3 alegrías muy pequeñas.


termtosvg


Ahora es habitual equipar sus bibliotecas y repositorios en github con hermosas animaciones que muestran una consola con una demostración en vivo de su creación.


imagen


La tradición es indudablemente buena y correcta. Solo grabar tales animaciones puede ser difícil / flojo / una vez. Los autores de termtosvg dispararon a todos los pájaros de un tiro y les dieron a los programadores una gran cosa para grabar demos de consola.


A diferencia de muchas otras soluciones, termtosvg no escribe un video o un gif. Esto capta todo lo que sucede en la consola y renderiza la animación SVG en función de lo que aparece en el terminal. En la salida, obtienes no solo la animación de tu pantalla, sino también una representación hermosa y elegante de las operaciones de la consola. SVG pesa mucho menos que otros formatos y, sin embargo, puede editarse con bastante facilidad.


Para las personas más exigentes, se incluyen varias soluciones de color predefinidas para que pueda personalizar sus demostraciones en vivo.


Puede representar la salida en un tema ligero:



Puede renderizar en un tema tan oscuro, con botones de control de ventana y una barra de progreso a continuación:



Y puede hacerlo en una docena de otros esquemas de color.


Todo está configurado como siempre,


pip install termtosvg 

las macros también se pueden entregar a través de brew (las versiones necesarias de Python y un montón de dependencias se extraerán por sí mismas)


 brew install termtosvg 

El manual está aquí , una lista completa de temas predefinidos para renderizar está aquí . Todo esto está en Python, por lo que al menos puede leer fuentes interesantes si no necesita animaciones de consola.


La colección de algoritmos


Los algoritmos en Python. Este repositorio ya ha sido visto por muchos y es bien conocido: casi 50,000 estrellas en github. La implementación de un paquete de algoritmos clásicos en Python puro: gráficos, matemáticas, cifrado, protocolos, enrutamiento de red y un montón de cosas diferentes.


Pocas personas necesitarán esto para el trabajo diario, pero será muy útil para el desarrollo general o para prepararse para una entrevista con una compañía que pueda ofrecerle trabajar con un árbol binario para una entrevista.


No solo hay implementaciones de mascotas disponibles, sino también otros idiomas .


helado



Parece que las herramientas de depuración y monitoreo para código poderoso están completas y satisfacen todas las necesidades del desarrollador: depuradores, recolectores de registros, monitoreo de errores, recolectores métricos.


Pero a veces sucede que los ingenieros tienen que dar una palmada al viejo código print() para descubrir qué está sucediendo.


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

El método de depuración es controvertido, sucio, efectivo y no para todos. Para tales amantes, hay un helado de biblioteca pycodib (así como implementaciones para C ++, Node.JS, Rust, Dart y PHP).


Ahora puedes escribir


 from icecream import ic def foo(): ic() first() if expression: ic() second() else: ic() third() 

y obtener un código de depuración como


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

Para la depuración puramente por este método, personalmente lo habría perforado en el cuello, pero con ciertas modificaciones se puede usar. Hay algo más en esta biblioteca que podría ser útil:


  • La capacidad de depositar rápida y fácilmente argumentos de entrada y el resultado de las funciones.
  • Personalice la salida con diferentes prefijos y datos.
  • Cuelgue sus funciones personalizadas para manejar la salida de mensajes de depuración.

Si todo esto se combina perfectamente con diferentes indicadores de cambio del modo de depuración al modo de producción, entonces resulta bastante sensato, que le informará sobre todo lo que sucede en su código.

Source: https://habr.com/ru/post/459074/


All Articles