Marcos Dione: restoring-signals-before-os.exec

A short note. As both the signal module doc and the subprocess module doc (almost at the end, when it finally goes around to talk about the restore_signals parameter), Python3 disables the following signals, so it can properly report them as exceptions:

  • SIGPIPE
  • SIGXFZ
  • SIGXFSZ
  • SIGINT

But if you're executing processes with any of the os.exec*() functions, you have to restore them by hand. Of course, the option is to use subprocess, which is best for most cases; not for ayrton.

I spent a long time analyzing the process-which-didn't-die-on-SIGPIPE's source code and wondering what was all this about. The I compared the same pipeline under bash and ayrton with strace to find the real culprit.


python ayrton

Marcos Dione: ayrton-0.4.2

Today I released another minor version of ayrton, one year after the last release, almost to the minute: Same day of the same month, same hour. Hence, I named it The 'one year is nothing' release.

The changelog, at least, is quite extensive:

  • _bg allows running a command in the background.
  • _fails allows a Command to fail even when option('-e') is on.
  • Try program_name as program-name if the first failed the path lookup.
  • Convert all arguments to commands to str().
  • chdir() is an alias of cd().
  • Capture is a class, not an arbitrary value.
  • Updated doc.
  • Fixed globals and local passed to the execution of the script.
  • Fixed some fd leakage.
  • Fixed redirection when _out and _err where Capture.
  • Fixed keyword handling while doing our black magic.
  • More, better unit tests!

Get it on github or pypi!


python ayrton

Juanjo Conti: Restos del pasado presente

Ayer estuve ayudando a mis papás a mover un ropero de mi vieja habitación en Carlos Pellegrini. En el proceso encontré varios objetos que con solo verlos me transportaron al pasado. Entre ellos rescato mi primer trabajo en computadora:

Estaba en una carpeta que mi escuela primaria armaba para cada alumno con elementos destacados de cada años. Recuerdo incluso cuando nos la presentaron: “Cuando terminen séptimo, esta carpeta las va a quedad de recuerdo”, dijo una de las maestras.

Alejandro Santos: oggdec lame pipe: converting ogg to mp3

If this command shows "Warning: unsupported audio format":
oggdec -o - file.ogg | lame - file.mp3
Try using raw mode:
oggdec -R -o - file.ogg | lame -r - file.mp3
Or, if the generated mp3 file is pure noise, swap the bytes with -x:
oggdec -R -o - file.ogg | lame -rx - file.mp3
To convert a batch of multiple ogg files:
for x in *.ogg; do oggdec -R -o - "$x" | lame -rxh - "$x.mp3"; done

Juanjo Conti: Cuento Bicicleta (video)

El 24 a la noche, sentado en el baño, leí el anuncio de una competencia: SLAM Guerrilla Navideño. La consigna era filmarse leyendo algo y subirlo en el momento; unas horas mas tarde se anunciaría el ganador. El objetivo era claro: divertirse.

Ya había tomado algunos Ananá Fizz (diciembre es el único mes del año en el que bebo y bebo solo esa bebida), y no le puse al texto la expresividad característica del SLAM que se puede lograr en un relato oral, y por su puesto no gané. Pero ya está filmado, así que se los comparto. ¡Feliz año nuevo!

Este cuento forma parte del libro La prueba del dulce de leche.

Mariano Reingart: Entrevista para PyDev of the Week

Aprovechando el cierre del año, y a modo de resumen, a continuación transcribo una entrevista (traducida) que me realizó Mike Driscoll para su blog "Mouse vs Python":


"Desarrollador Python" de la Semana: Mariano Reingart


¿Puedes contarme un poco sobre ti (hobbies, educación, etc)?:


Soy programador independiente y docente, casado con dos hijos pequeños.

Comencé a programar cuando era un chico y mi padre compró una ZX Spectrum TK-90 a fines de los '80.
Para 1989, con sólo 11 años, tomé mi primer curso "formal" de programación "Basic I" usando computadoras MSX y "D.O.S." hacia 1991.
Luego de terminar la primaria, en 1992 me anoté en un colegio con orientación de "Bachiller especializado en Informática"  (nivel secundario) donde se enseñaba Visual Basic y Visual Fox Pro en los cursos finales.

Luego de egresar, trabajé en esa escuela como Ayudante de Laboratorio, instalando mi primer servidor Slackware Linux circa 1997 para la conexión de Internet, y programando los sistemas del colegio (usando inicialmente VB + Access).
Mi primer experiencia "open source" fue desarrollando un modulo para el kernel de Linux y así usar la linea telefónica dedicada de 128Kps (incluso tuvimos que importar la placa de comunicaciones); y un controlador de kernel de ucLinux para PiCoTux (una micro-computadora embebida corriendo Linux).
También, di mis primeros pasos en la migración de bases de datos a PostgreSQL y trabajando con los primeros dispositivos "WiFi".

Luego, estudié Ingeniería Electrónica por varios años, pero me dí cuenta que mis habilidades iban más por el lado del software, por lo que me cambié de carrera a una Universidad local para Estudiar Licenciatura en Sistemas.
Finalmente me gradué en 2011 luego de varios años "sabáticos" donde gané experiencia laboral desarrollando pequeños sistemas de gestión administrativa/contable para PyMEs, y una aplicación 911(en colaboración ad-honorem con un amigo de la radio-estación policial local).

Actualmente estoy terminado la Maestría en Software Libre (Universidad Abierta de Cataluña), y el Profesorado en Disciplinas Industriales / Docencia Superior (UTN - INSPT).

¿Por qué comenzaste a utilizar Python?


Empecé a usar python en los '00, buscando alternativas a Visual Basic.
Lo elegí para mi tesis de grado en 2006 "Desarrollo Rápido de Aplicaciones bajo el Proceso de Software Personal"

Desde 2009 enseño Python en un Instituto Terciario. Comenzó en un curso pero luego acordamos (con otros profesores) implementar un Proyecto Curricular Institucional orientado al software libre, principalmente en las siguientes materias:


Basado en ello, con otro colega estamos preparando una "Diplomatura en Software Libre" (programa de cursos de formación profesional de 1 de año de duración con actividades de extensión universitaria, enfocados Python, PostgreSQL and GNU/Linux, para más información ver documento de trabajoarticulo).

Felizmente, laboralmente hoy trabajo principalmente brindando planes de soporte comercial de código abierto gracias a Python, dado que desde 2008 el proyecto PyAfipWs: "factura electrónica", iniciado desde la lista de correo PyAr, la comunidad de Python Argentina, creció, siendo usado por una base de usuarios relativamente grande (incluyendo grandes empresas, PyMEs y profesionales)

¿Que otros lenguajes de programación conoces y cual es tu favorito?


Obviamente Python es mi favorito, y tengo cierta experiencia en PHP, C/C++, Java y otros lenguajes.

Lamentablemente aún tengo que usar Visual Basic Clásico (6.0) para algunos de mis sistemas ERP "legados" (son grandes, alrededor de cientos de miles de líneas de código, y no he tenido tiempo / recursos para migrarlos a Python por el momento)

Ahora estoy investigando vb2py, un proyecto para convertir código VB a Python.
Me intriga por qué  no llegó a juntar masa crítica / tracción (el desarrollo parece estancado desde 2004), teniendo en cuenta que hay mucho código VB dando vueltas...

En el proyecto de factura electrónica, use pywin32 (de Mark Hammond et al) para hacer componentes Python usables desde lenguajes legados (VB, VFP), y bibliotecas como dbf (de Ethan Furman) para interactuar con lenguajes aún más antiguos (Clipper, xBase, etc.).
Recientemente también comencé a experimentar con Jython, para usar proyectos Python desde Java.

¿En que proyectos estás trabajando ahora?


Para mi tésis de grado, comencé a desarrollar rad2py, un entorno integrado de desarrollo (IDE) experimental y herramientas CASE de ayuda al desarrollador , previstas para ser usadas para propósitos comerciales, educativos y académicos.

Ahora estoy terminando la invesigación para mi tesis de maestría "Desarrollo Rápido de Software Libre de Alta Calidad", tratando de facilitar la vida a los desarrolladores integrando enfoques modernos como interfaces basadas en tareas (Eclipse Mylyn) y Ágil ALM (gestión del ciclo de vida de las aplicaciones), con principios disciplinados de la ingeniería de software para aseguramiento de calidad y mejora continua.

¿Que bibliotecas Python son tus favoritas (del núcleo or de terceros)?


Trato de usar solo la Biblioteca Estándar de Python + wxPython y web2py, y adicionalmente pywin32 y dbf para ciertos proyectos, como mencioné antes.

Particularmente encuentro a web2py fascinante, dado que tiene prácticamente una curva de aprendizaje plana, permite prototipado rápido, una interfaz integrada de desarrollo en linea (web), etc.
Sus enfoques no tradicionales también son interesantes para traer otras perspectivas y "pensamiento crítico", especialmente gracias al liderazgo abierto, cordial y reflexivo de Massimo Di Pierro, su creador, y por supuesto, su comunidad afable.
Descargo: soy uno de los desarrolladores "principales", no muy activo estos días debido a la falta de tiempo, pero he contribuido un depurador en linea y otras mejoras, co-escribí el libro "web2py app development cookbook" de Packt, etc.

wxPython también me merece una mención especial, el trabajo de Robin Dunn es grandioso (phoenix py3k!), los widgets agw widgets de Andrea Gavana en puro phyton son realmente impresionantes, solo para mencionar algunos desarrolladores de dicha comunidad.
También veo a wxWidgets más ortogonal y fácil de usar que otras alternativas.
Este año traté de colaborar más en profundidad con una variante experimental wxQt, como becario enmarcado en el Google Summer of Code 2014 (ahora es usable, incluso desde wxPython! y bajo Android al menos la parte C++ ...).

Cuando necesito algo no cubierto por estas opciones, tiendo a mirar hacia soluciones simples (muchas veces influenciadas por extensiones PHP), iniciando, continuando o "forkeando" ("escindiendo") otros proyectos:
  • PySimpleSoap: interfaces ad-hoc livianas para construir clientes y servidores SOAP
  • PyFPDF: clase para la generación simple de PDF basada en FPDF de  PHP y derivados
  • gui2py: un fork (bifurcación) de PythonCard (conjunto de construcción GUI visual "rápido" & simple) para evolucionarlo y modernizarlo 
Más allá de que ciertos desarrolladores los ven como esfuerzos "naif" (por decir lo más leve), la mayoría de los proyectos ha encontrado su nicho y hoy en día varias contribuciones son hechas por otros colaboradores que también los han encontrado útiles .
También ayudan a entender las tecnologías subyacentes, a proveer alternativas implementadas en "puro Python" y a experimentar con la migración a Python 3.

¿Hay algo más que quieras decir?


No, disculpas por las largas respuestas, pero la entrevista es irresistible :-) ...
También, disculpas por mi Inglés (en la entrevista original), dado que hablo español es dificultoso a veces encontrar la traducción correcta.

Gracias a vos Mike por tus esfuerzos y este proyecto sobre artículos de entrevistas, y ¡gracias a toda la comunidad Python!

Mariano Guerra: Youtube Video to Audio Download

this is a reminder for myself in the future, I tend to watch/listen to talks when I'm doing something like cooking, cleaning.

but when I'm outside I want to take my music player and the talks tend to be on youtube, so normally I search for "youtube to mp3" and there's some ad ridden site that does that (sometimes)

but today I wanted to learn how to do it from the cli and here is the post that explains it so I can come back int he future to copy paste the commands.

first install youtube-dl and ffmpeg:

sudo yum install youtube-dl ffmpeg

then download your video:

youtube-dl https://www.youtube.com/watch\?v\=06h21nBqwec

then extract the audio from the video:

ffmpeg -i Music\ Theory\ and\ Performance\ Analysis\ with\ Sebastian\ and\ Czerny-06h21nBqwec.webm -strict experimental -acodec vorbis -ab 128k -vn ./output.ogg

then do whatever you want with the video and the audio