Diciembre 31, 2005

Clasificado bajo: PersonalPablo Orduña @ 10:59 pm

¡¡¡Feliz 2006… y los que fumeis os jodeis!!!

Sin más deseo que no constiparse esta noche, feliz año a todo el mundo!

Diciembre 30, 2005

Clasificado bajo: Software librePablo Orduña @ 1:17 pm

Y thu? te has bajado ya firefox 1.5 de playboy.com para tu Debian GNU/Linux? xDDDDD

Voy a bajarme Eclipse 3.1.1 para ISO 1… y al ir a seleccionar mirror leo en los de EEUU:

...
[United States] ibiblio   (ftp)
[United States] OSU Open Source Lab   (ftp)
[United States] Playboy Enteprises, Inc.
[United States] TDS Internet Services   (ftp)
...

¿¿¿Playboy Enterprises, Inc.???

Total, que echando un ojo a http://mirrors.playboy.com veo que tienen un mirror desde Apache hasta Mozilla pasando por FreeBSD, Fedora o CPAN! Y con una nota de:

Playboy’s resident tech nerds would like to thank the authors, contributors, bug testers, and everyone else involved in the Open Source software we use on a daily basis. THANK YOU!

Y por lo que veo en varios sitios aparece en la lista de mirrors.

Me ha parecido de coña. Es que… ¿en cuántos sitios *.playboy.com estará capado? xDDDD

Diciembre 26, 2005

Clasificado bajo: Móvil, PythonPablo Orduña @ 3:08 am

En ratos libres, sigo jugando con Python en el móvil. Y ya tocaba probar la consola de Python del móvil a través de Bluetooth.

O sea, hasta ahora había jugado o bien desde el móvil diréctamente (cuando no tenía el ordenador a mano), o bien desde el ordenador, escribiendo la prueba, mandándola al móvil por bluetooth, y desde ahí ejecutándola. Pero una de las cosas que más me gusta de Python es el hecho de que tenga una consola interactiva, en la que puedas ir escribiendo código y viendo su efecto en ejecución, y por eso también me mola por ejemplo jython cuando tengo que programar en Java, para tareas como probar de manera más intuitiva el resultado de determinadas librerías.

Y el intérprete de Python de Nokia para Symbian, pues tiene una opción de “Bluetooth console”, que lo que hace es establecer una conexión bluetooth con el ordenador y emular una comunicación de puerto serie, de manera que con un programa como minicom puedes tener abierta una consola de Python del móvil en el ordenador.

Para hacerlo, hay documentación en varios sitios, que resumido:

En /etc/bluetooth/rfcomm.conf tengo:

rfcomm0 {
        bind no;
        device 00:13:fd:b8:52:d5;
        channel 1;
        comment "Example Bluetooth device";
}

Y luego, pues ejecuto:

# /etc/init.d/bluez-utils restart
# sdptool add --channel=1 SP
# rfcomm listen /dev/rfcomm0

desde el móvil, ejecuto en python lo de “Bluetooth Console”, y veo en el donde había puesto lo de rfcomm:

Connection from 00:13:FD:B8:52:D5 to /dev/rfcomm0
Press CTRL-C for hangup

Entonces, ya:

$ minicom -m

que previamente habré configurado para que tire de /dev/rfcomm0 haciendo:

$ minicom -m -s

Y me dice que iniciando modem y luego ya:

>>> AT S7=45 S0=0 L1 V1 X4 &c1 E1 Q0
  File "“, line 1
    AT S7=45 S0=0 L1 V1 X4 &c1 E1 Q0
        ^
SyntaxError: invalid syntax
>>> print “hola mundo”
hola mundo
>>>

Lo primero no tengo la menor idea de por qué sale, pero paso de buscar :-)

Y eso, todo lo que vas ejecutando lo está ejecutando el móvil, con lo que si haces:

>>> import appuifw
>>> appuifw.note(u'Hola',u'info')

pues te aparece un bonito “Hola” en el móvil. Y el resto, pues sin más, puedes probar la API y librerías que metas.

Y Escape + X para salir.

Una cosilla que igual no mola mucho es que no he visto nada tipo sandbox. Porque cuando estuve en el codecamp, pude comprobar que puedo mandar SMSs o sacar fotos en dos o tres líneas:

>>> #Sacar foto
>>> import camera
>>> f = camera.take_photo()
>>> f.save('C:\prueba.png')
>>> #O bien en una línea
>>> __import__('camera').take_photo().save('C:\prueba.png')

o

>>> #Mandar un SMS
>>> import messaging
>>> messaging.sms_send(u"61235678",u"hola")
>>> #O bien en una línea
>>> __import__('messaging').sms_send(u'612345678',u'hola')

y el script se ejecuta y lo hace sin preguntar ni nada (hombre, ves por ahí el simbolito de que se está enviando un SMS… pero vamos, que no es mucho).

Por último, como curiosidad, Kalgan nos contó el otro día un par de huevos de pascua de Python:

>>> import this

y

>>> from __future__ import braces

que, curiosamente, la implementación de Nokia implementa también el segundo :-D pero no el primero.

Clasificado bajo: PersonalPablo Orduña @ 1:45 am

En primer lugar, Feliz Navidad.

Normalmente soy de los que no les mola el rollo navideño, asociándolo a tema religioso, o a comprar cosas que ni quieres, ni necesitas, ni que son un capricho puntual, sino comprar porque “hay que comprar” (y que levante la mano al que nunca en Navidades le ha llegado el típico regalo “recogepolvo” de “erm… ah!… gracias…”), o cosas así. Tampoco es que las comidas sean algo que me chifle, o sea que normalmente no son más que unas vacaciones más, y no muy largas.

Pero si ya el año pasado simplemente pasaba y me quedaba con que eran vacaciones, este año ya diréctamente me molan. Supongo que influye el que vengan a pasarlas a Bilbao dos colegas a los que, desde que viven en Mallorca y Ciudad Real, no puedo ver más que de tiempo en tiempo (bueno, al de Ciudad Real en verano). O no sé por qué razón si es que la hay, estoy un poco más contento.

Sea como fuere, este año, sí, Feliz Navidad.

Y ahora pondré unos posts más techies de otras cosas con las que he podido jugar desde el último post (ya 20 días)

Diciembre 7, 2005

Clasificado bajo: Python, Idas de ollaPablo Orduña @ 11:55 pm

En ocasiones… no veo sueños. Vamos, que a veces me cuesta dormir. Y más los últimos días. Y esperando a que el sueño llegue, a veces me pongo a hacer el chorra.

Por ejemplo, ayer mi hermana por el día cogió una foto de una compañera de curro y con el Gimp hizo una movida como los típicos pósters de Marylin Monroe o Ché Guevara hechos por Andy Warhol (qué mofa, lo digo como supiera lo que digo!). Ella seguía esta guía, y el rollo de coger la imagen final, ir copiándola varias veces, cambiando colores cada vez, e ir pegándolas ordenaditas en una nueva… fue como “qué rollo”.

Y anoche, pues no podía dormir, y rayado me dio el puntazo pensando… “qué diablos! fijo que se puede programar!”… et voilà! un scriptillo cutre en Python y más o menos facilita la parte rayada de la tarea.

Yo, a lo Andy Warhol

La movida es que Gimp tiene su libgimp, y tiene la capacidad de hacer plug-ins rápidos mediante scripts que llamen a esas funciones para interactuar con la imagen. Y los scripts pueden estar programados en Python, me imagino que gracias a tener instalado en Ubuntu el paquete gimp-python.

Con esto puedes hacer cosas como eso, tener un submenú más en el menú de la imagen, y que cuando lo llames, pues le pases unos parámetros (datos del plugin que tú pidas) y actúes en consecuencia (haciendo lo que te de la gana). Es un poco jarto porque por lo que parece no hay nada tipo sandbox, o sea que tienes que confiar mucho en los plug-ins. A cambio, lo que pueden hacer es bastante cañero, porque en tareas muy mecánicas, pues te ahorra tiempo.

Entonces, para hacer los Andy Warhols, sólo hay que:

  • Instalar el plugin (bajarlo de aquí a ~/.gimp-2.2/plug-ins/ y darle permisos de ejecución - chmod 755 andy_warhol.py)
  • Coger una foto:
    Yo, a lo Andy Warhol
  • Y con el lacete (”Seleccionar regiones dibujadas a mano”), pues pillar el jeto de la foto, copiar y “pegar como nueva”, por ejemplo.
    Yo, a lo Andy Warhol
  • Coger la capa en la que se ha pegado, y duplicarla. Si la ventana con las capas no está a la vista, pues en la ventana principal del Gimp darle a: Archivo -> Diálogos -> Capas (o bien Control + L)
  • En la capa duplicada, dando a Capa -> Colores -> Umbral, sale un menucillo que según lo cambias puedes ver los rasgos que se verán luego. Dependerá de la imagen y eso
    Yo, a lo Andy Warhol
  • También le damos a Seleccionar -> por color, seleccionamos el blanco y lo quitamos
  • Una vez hecho esto, cambiamos el nombre de la capa en la que está la foto original, y la llamamos “Original”
  • Para hacerlo más chulo, podemos cambiar nombre de la capa en la que está la cara, y la llamamos “Face”
  • Entonces, haciendo click en Python-fu -> Andy-Warhol, sale un menucillo con una serpiente. Le decimos que aceptar y..
  • Se ejecuta el script.

Yo, a lo Andy Warhol
Lo que hace el script es una chorrada, coge la imagen original, le pone un umbral de la ostia para distinguir la silueta, y entonces, teniendo un fondo, la silueta, y lo que hemos cogido de la jeta antes, va copiando la imagen con diferentes colores pues las veces que venga en el script en una nueva imagen.

¿Que cuántas veces y qué colores? Pues los colores he hecho una de rapiña de este sitio, y están en la primera línea del script con una cosa de este pelo:

AW_BACKGROUND_COLORS=[
[ [0xFF,0xFD,0x0A], [0x05,0x83,0xEA], [0x2A,0x20,0x81] ],
[ [0xF6,0x84,0x07], [0xE2,0x09,0x1C], [0x86,0xB2,0x07] ],
[ [0x21,0x6E,0x64], [0xFF,0xFB,0x06], [0xE4,0x04,0x7C] ]
]

AW_FACE_COLORS=[
[ [0x2B,0x25,0x7D], [0xE3,0x05,0x7C], [0xE9,0x06,0x21] ],
[ [0x79,0x43,0x99], [0x1D,0x1A,0x21], [0xEA,0x68,0x08] ],
[ [0xE7,0x09,0x76], [0xE9,0x1D,0x20], [0x29,0x20,0x7D] ]
]

Entonces… los colores son esos (en RGB), en plan AW_FACE_COLORS por ejemplo es una lista, que tiene 3 filas, cada una de las cuales tiene 3 colores (una por columna), siendo cada color una lista de tres números (R,G,B). Y el número de filas / columnas, pues es ese también. Vamos, que si lo cambiamos por:

AW_BACKGROUND_COLORS=[
[ [0xFF,0xFD,0x0A], [0x05,0x83,0xEA] ],
[ [0xF6,0x84,0x07], [0xE2,0x09,0x1C] ],
[ [0x21,0x6E,0x64], [0xFF,0xFB,0x06] ]
]

AW_FACE_COLORS=[
[ [0x2B,0x25,0x7D], [0xE3,0x05,0x7C] ],
[ [0x79,0x43,0x99], [0x1D,0x1A,0x21] ],
[ [0xE7,0x09,0x76], [0xE9,0x1D,0x20] ]
]

pues en lugar de 3 filas por 3 columnas, tiene 3 filas por 2 columnas, sin más.

Supongo que para peña que sepa todo esto será una chapuza y mal hecha, o sea que mis oídos están abiertos a todo tipo de críticas constructivas y sugerencias :-D (y no hace falta decir que si alguien se pone a mejorar el script, que haga lo que quiera con él, vamos, que dominio público)

Y ya con eso, acaba mi puntazo pseudo-artístico por un tiempo :-) a ver si le sirve de algo a alguien

Como fin, otras pruebas que he hecho, con Richard:
Richard, a lo Andy Warhol
María:
Richard, a lo Andy Warhol
Nando:
Nando, a lo Andy Warhol
o Saladino:
Saladino, a lo Andy Warhol

EDIT: Dejo aquí una pequeña actualización, que permite colorear también el borde, por ejemplo:
Saladino, a lo Andy Warhol