Archive for the ‘Probando herramientas’ Category

Google Buzz!! Bzzz!!!! bzzz!!!!!

Posted on the febrero 10th, 2010 under General,Humor,Probando herramientas by

google buzz logoAjjj Google Buzz! un nuevo servicio que se agregó dentro de mi Gmail. Hoy no tengo ganas de probar nada nuevo! ningún beta nada. Menos algo invasivo que se me metió de golpe ahí tan visible. Creo que igual le di aceptar cuando me logueé en el sistema, pero no recuerdo. Por suerte existe un link al pie de página para desactivarlo. Turn Off Buzz 😀

Lo que aplaudo por ahora es el nombre. Nada más sincero que llamarlo Google Buzz. En el norte le llaman Buzz o a lo que hace «ruido»*. Claro, viene de la onomatopeya buzzzz ruido de abejas o algo así. Luego aparecen las Buzz Words, los Buzz Topics, etc. AJAX, The Cloud, Cloud Computing, Business Intelligence (bueno.. este.. esta me gusta ja). Términos acuñados para hacer un poco de ruido con cosas existentes… meterle un poco de márketing.

En fin… contradictoriamente, que vivan las buzzwords que muchas veces nos dan de que hablar jajaja 🙂

* Me entero que a veces se usa con otras intenciones o puede tener otras connotaciones.

Combinación de comandos útiles para Linux

Posted on the junio 2nd, 2009 under GNU/Linux,Probando herramientas,Software Libre by

En este post voy a ir agregando comandos útiles que vamos encontrando entre los conocidos (y los que aporten), que permiten realizar tareas desde la consola sin tener que recurrir a programas sofisticados.

Confirmar todas las acciones que pregunte un programa interactivo.

$ yes | programa

devuelve una «y» cada vez que el programa quiere leer de la entrada estandar

$ yes s | programa

devuelve una «s» cada vez que el programa quiere leer de la entrada estandar

Encontrar archivos duplicados y conservar uno.

$ yes 1 | fdupes -d ./

fdupes encuentra mediante md5 archivos duplicados en la carpeta indicada. El parámetro d, le dice que borre el resto conservando el que le indiquemos. Mediante «yes 1» le decimos que conserve el primero que encuentra. Cuidado con md5 ;-).

Generar un PDF con varias páginas en una sola partiendo de otro PDF.

$ pdfnup salida.pdf --nup 2x5 --orient portrait --frame true

Dai me contó acerca de una aplicación llamada pdfnup. Permite hacer lo que uno quiera con un PDF, como recortarlo (cortarle los márgenes excesivos), agrupar en disposición de tabla varias páginas dentro de cada una (para poder imprimir por ejemplo 2×3 páginas or carilla). Tiene muchas opciones, pero a la vez configuradas por defecto para no necesitar agregar muchas cosas. El archivo de salida se llamará igual que el de entrada más la disposición, por ejemplo «salida-2×5.pdf».

Recortar varias imágenes y convertirlas en PDF (una por página).

$ convert -crop '750x350+110+200' +repage resp?/*.png salida.pdf

convert es una de las aplicaciones de ImageMagick. Conserva los originales, permitiendo mientras convertimos de formato, modificarle brillo, contraste, recortarla, rotarla, y muchos etcéteras. Si quisieramos que convierta cada imagen en un archivo separado, bastaría con combinarlo con

$ find ./ -iname '*.png' -exec convert '{}' '{}.pdf' ';'

donde {} representa el nombre del archivo y ‘;’ finaliza el comando.

Autocompletado en bash personalizado (para tus programas!)

Posted on the abril 9th, 2009 under GNU/Linux,Probando herramientas,Software Libre by

Bash incorpora una característica que permite el autocompletado en una terminal de los parámetros que acepta un programa. Para esto utiliza un script con diversas funciones, y permite que incorporando un archivo y ciertos comandos, podamos definir como se autcompletarán los programas que querramos.

Por ejemplo, tenemos hecho un programa con Milton y Daiana, que acepta varios parámetros. Hay algunos que no los usamos hace tiempo, y para no estar consultando la ayuda, pensamos que estaría bueno que se autocompletara.

El programa está hecho en mono, y se ejecuta haciendo

$ ./programa.exe

o bien

$ mono programa.exe

Aquí el archivo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# Author: Nacho
# /etc/bash_completion.d/programa
# copy it there and enjoy magic, compadre!
#
_programa() 
{
    local cur prev opts
 
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    opts="-h -? --help -r --reemp -e -f --extrae-flex -c -g -d --vft"
 
    if [[ "${cur}" == -* ]] ; then
        COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
    else
        _filedir  '@(xml|sql)'
    fi
}
complete -F _programa $filenames programa.exe
complete -F _command $filenames mono

La línea 12 indica las opciones que acepta el programa.
La línea 17 indica que se listen (si no es que estoy intentando poner alguna opción) los directorios y archivos pero los XML y SQL únicamente.
La línea 20 indica bajo que nombre de ejecutable se completará y qué función es la encargada de tal tarea.
La línea 21 es la que indica que «mono» es un «command» al igual que otros definidos (sudo, fakeroot, nohup) que requieren autocompletado luego para el programa que le sigue.

En vez de listar la línea 12, se podría haber hecho que el programa en cuestión devuelva por defecto la lista de los parámetros que acepta. La forma de hacer esto sería reemplazar esa línea por:

12
    opts=`mono programa.exe -p`

Python tiene un módulo para realizar esto en forma más sencilla: optcomplete.

Espero les sea de utilidad!

Retornando arrays con PlPython

Posted on the abril 9th, 2009 under GNU/Linux,Probando herramientas,Software Libre by

PlPython es un lenguaje procedural (PL) que permite utilizar Python en una base de datos PostreSQL para poder escribir los procedimientos almacenados. En realidad actualmente es un lenguaje no confiado (untrusted). Se puede leer más aquí: PlPythonu.

Si bien Python maneja listas, diccionarios y otras estructuras de datos con bastante simpleza, no encontramos una manera de hacer casting a un array o vector de PostgreSQL. Particularmente, en el ejemplo debajo, se puede ver que implementamos un wrapper para poder utilizar el motor de expresiones regulares de Python, dentro de la DB, ya que tiene algunas cuestiones más avanzadas que el que trae PgSQL por defecto.

Lo que hicimos fue crear una cadena, con la representación serializada de un Array y dejar que haga el casting PgSQL. Les dejo el código para que lo adapten a sus necesidades. En este caso devuelve un vector de TEXT (TEXT[]) con la idea de emular el resultado devuelto por regexp_matches() en plsql. la signatura de la función es esta:

regexp_python(text,text)  RETURNS text[]
-- Function: regexp_python(text, text)
 
-- DROP FUNCTION regexp_python(text, text);
 
CREATE OR REPLACE FUNCTION regexp_python(p_str text, p_ereg text)
  RETURNS TEXT[] AS
$BODY$import re
import string
m = re.search(p_ereg, p_str,re.I)
IF m IS None:
    RETURN None
ELSE:
    RETURN ('{"'+'","'.join([re.escape(x) FOR x IN m.groups('NULL')])+'"}').REPLACE('"NULL"','NULL')$BODY$
  LANGUAGE 'plpythonu' VOLATILE
  COST 100;
ALTER FUNCTION regexp_python(text, text) OWNER TO postgres;

Los arrays en PgSQL son serializados como una colección de datos entre llaves:
{‘text1′,’text2’}.

Gracias Milton y Daiana por investigar y aplicar todas estas cosas conmigo 😉

Convirtiendo de rm a mp3 usando ffmpeg

Posted on the abril 9th, 2009 under GNU/Linux,Probando herramientas by

En realidad se puede utilizar para convertir a cualquier formato que soporte ffmpeg. Lo cómodo es que no necesite un archivo fifo y pude hacerlo bastante sencillo y con una sola línea en la consola.

find ./ -iname *.rm -exec ffmpeg -i "{}" -acodec libmp3lame -aq 9 "{}.mp3" -y ';'

El comando find encuentra los archivos, y por cada uno ejecuta ffmpeg…. Los «{}» se reemplazan por el nombre del archivo.