16/9/08

Otra fortune-cookie demasiado graciosa para no compartir.

Fortune es un programa que muestra dichos, frases, citas, etc. al azar de una gigantesca database y que configure para que se corra al abrir bash. Algunos chisten son malisimos, por suerte la seccion de fortunes offensivas esta disponible. Esta es una que me hiso reir en voz alta, aca les pongo el original en ingles:

     One night when his charge was pretty high, Micro-Farad decided to seek out a cute little coil to let him discharge. He picked up Milli-Amp and took her for a ride on his Megacycle.
     They rode across the Wheatstone bridge, around the sine waves, and stopped in the magnetic field by the flowing current. Micro-Farad, attracted by Milli-Amp's charactaristic curves, soon had her fully charged and excited, her resistance to a minimum. He laid her on the ground potential, raised her frequency, and lowered her reluctance.
     He pulled out his high voltage probe and inserted it into her socket, connecting them in parallel and began short circuiting her resistance shunt.
Fully excited, Milli-Amp mumbled: "OHM-OHM-OHM."
     With his tube operating at a maximum and her field vibrating with his current flow, it caused her shunt to overheat, and Micro-Farad was rapidly discharged and drained of every electron. They Fluxed all night trying various connections and sockets until his magnet had a soft core and lost all of its field strength.
     Afterwards, Milli-Amp tried self-induction and damaged her solenoids. With his battery fully discharged, Micro-Farad was unable to excite his field, so they spent the night reversing polarity and blowing each others fuses.
               -- Eddie Currents, "The Sex Life of an Electron"


Ahora en español (un intento de):

     Una noche que su carga estaba bastante ata, Micro-Farad decidio ir en busca de una linda bobina para descargarse. Recogio a Milli-Amp y se la llevo a pasear en su Megacycle.
     Pasaron sobre el puente de Wheatstone, por las ondas senosoidales y pararon en el campo magnetico cercano a una corriente. Micro-Fard, atraido por las curvas caracteristicas de Mill-Amp, la tuvo totalmente cargada y excitada en pocos segundos, con su resistencia en minimo. La apoyo en tierra, aumento su frequencia, y bajo su reductancia. Saco su ficha de alto voltaje y la inserto en su enchufe, conectandose en pararelo, y empezo a cortocircuitar su resistencia de shunt. Totalmente excitada Milli-Amp gritaba "OHM-OHM-OHM".
     Con su valvula operando a maximo y el campo de ella vibrando con la corriente, su shunt se sobrecalento, y Micro-farad se descargo rapidamente y se quedo sin electrones. Pasaron toda la noche tratando varias conexiones y enchufes hasta que su iman tuvo un nucleo blando y perdio toda su energia de campo.
     Al final, Milli-Amp intento la auto-induccion y se daño los selenoides. Con su bateria totalmente descargada, Micro-Farad no podia excitar su campo, asi que gastaron la noche invirtiendo polaridades y quemandose sus respectivos fusibles.
        -- Eddie Currents, "La Vidaa Sexual de un Electron"



Chay!

13/9/08

Un poco de Awking

Awk es el dios de la manipulacion de texto automatica, es onda sed pero (desde mi punto de vista y conocimientos) mucho mejor. Por ejemplo yo queria que el irssi con un alias (osea que llame a bash con /exec porque de perl no entiendo un pomo) que diga el tema que estoy escuchando con MOCP, el output de mocp -i es algo asi:

State: PLAY
File: /home/alvare/Desktop/Ezequiel-Win32/Music 2.3/Punk/rage against the machine - calm like a bomb.mp3
Title: Rage Against The Machine - Calm Like A Bomb (Matrix Reloaded)
Artist: Rage Against The Machine
SongTitle: Calm Like A Bomb
Album: Matrix Reloaded
TotalTime: 04:58
TimeLeft: 04:46
TotalSec: 298
CurrentTime: 00:12
CurrentSec: 12
Bitrate: 192Kbps
AvgBitrate: 192Kbps
Rate: 44KHz



Entonces lo primero que hice fue esto:

echo "Escuchando: `basename \"\$(mocp -i | awk '/^File/ {print $0}' | cut -d\" \" -f 2-100)\"`" | sed s/'.mp3'/''/g


Que es absurdamente largo y complicado y no vale la pena explicar.

Despues hice esto:

mocp -i | awk -F/ 'NR == 2{gsub("\.mp3","");print "Listening:",$NF}'

Que es exageradamente mas sencillo xP y me da este output:

"Listening: rage against the machine - calm like a bomb"



Que hace esta cosa? mocp -i lo pipea a awk que hace su "magia", elige el renglon 2, donde dice el Filename y despues al decirle con -F'/' el se cree que las palabras estan separadas por / , entonces le digo que imprima la ultima palabra, que vendria a ser el nombre del archivo, porque sino pondria todo el path del archivo (con gsub le saco el ".mp3").

Otra experiencia Awkeante que tuve fue cuando consegui de "terceros" 2 CDs de Queen, Bests Hits I y II. Todos los archivos .mp3 venian con este formato por ejmplo:

Queen(GreatestHitsI)-(9)BohemienRapsody.mp3


Y esto era muy molesto al leer los nombres de los temas, asi que me decidi a cambiar eso automaticamente.
Que resulto de esto? Este simple comandillo:

for A in *.mp3 ; do mv $A "$(echo $A | awk '{gsub(/\(.*\)/,"");print}'|sed 's/Q/q/'|sed 's/[A-Z]/ &/g')"


Que hace esto ?? Facil, el for es facil, le da a $A el valor de cada uno de los archivos .mp3 y los pasa a mv, aca mv los mueve de $A a $A pasado por una combo de Awk y sed. Esta combo 1º borra toda la mierda entre ( y ), entonces me queda QueenBohemienRapsody.mp3. Luego cabmia las Q por q y despues cambia todas las mayusculas por esa misma letra con un espacio atras, se entiende?
Si tenias "QueenPocholo.mp3" te queda " Queen Pocholo.mp3", pero como transforme las Q en q solo me añade los otros espacios, eso me da "queen Bohemien Rapsody.mp3" que es lo que quiero lograr.

Antes de irme a jugar al UrT quiero aclarar que esto en windows es totalmente imposible usando las herramientas nativas o de DOS (total no fue hecho para ser usado por gente conciente). Cuando usaba Windows me acuerdo que si algo no me gustaba como estaba lo dejaba asi, porque otra no tenia, ahora como puedo hacer todo (menos escribir drivers para webcams) eso no me pasa mas, y ahora siempre que veo un problema, tanto en la vida como en la PC, busco la forma de resolverlo (usando pipes en lo posible).
-------Viva BASH y muera Microsoft !

PS:Una banda de Heavy que tiene cierto agrado por windows y su mejor amiga, la BSoD