@snisnik esta bueno.. Pero es bastante incomodo acostumbrarse

Módulo readline en OSX

Me emputecí cuando vi que en OSX no funcionaba el modulo readline de python.
La solución era simple…

1
sudo easy_install readline

Mis amigos, usando Python

Hace un tiempo que vengo con un pequeño proyectito por trabajo que parecía ser una pavada, pero resultó ser un dolor de hígado bastante, bastante fuerte.

La idea es obtener la lista de amigos de varios contextos distintos, entre ellos Gtalk y Facebook. Ambos, por suerte, usan xmpp como protocolo para manejar las aplicaciones de chat. En PHP logré hacer (en parte) lo que quería, pero con todas las librerías que probe tuve problemas de velocidad, tamaño, timeout, hacian una parte y no la otra.

Asi fue que pedí permiso para probar con python y por suerte al cliente le gustó. Buscando no más de 10 minutos encontré la librería xmpppy, y ésto me hizo recordar porque python es TAN lindo.

1
2
3
4
5
6
7
8
9
10
11
12
13
import xmpp
 
class FacebookClient(object):
    def __init__(self, user, password):
        self._cl = xmpp.Client('chat.facebook.com')
        self._con = self._cl.connect()
        self._auth = self._cl.auth(user, password)
        self._roster = self._cl.getRoster()
        self._nameAndJid = {}
        for user in self._roster.getItems():
            self._nameAndJid[user] = self._roster.getName(user)
    def getNamesAndJid(self):
        return self._nameAndJid

Y modificandolo un poco para Gtalk

1
2
3
4
5
6
7
8
9
10
11
class GtalkClient(object):
    def __init__(self, user, password):
        self._cl = xmpp.Client('gmail.com')
        self._con = self._cl.connect(server=('talk.google.com',5222))
        self._auth = self._cl.auth(user, password)
        self._roster = self._cl.getRoster()
        self._nameAndJid = {}
        for user in self._roster.getItems():
            self._nameAndJid[user] = self._roster.getName(user)
    def getNamesAndJid(self):
        return self._nameAndJid

Para probarlo:

1
2
3
if __name__ == "__main__":
    # print FacebookClient('','').getNamesAndJid()
    print GtalkClient('','').getNamesAndJid()

Y así fue que en menos de 20 minutos tengo lo que buscaba, el roster (lista de contactos) de facebook y gtalk/gmail/orkut lista para usar en lo que sea que lo necesite.

Además si hubiese querido, xmpppy me permite chatear o lo que sea me permite xmpp, porque es una libreria con el api completo..

Que lindo es volver a escribir python.

Me encanta programar

Estos días después de un rato largo, volvi a programar cosas mas alla de estupideses como venía haciendo. No porque ésto que estoy programando sea re útil, pero son trabajos practicos para la facu que hay que hacer, y vió como es la cosa, uno es hijo del rigor (diría la abuela de Andy).

Esta vez está mas interesante, porque los Tps que tengo que hacer son mas ¿difíciles?, más bien te hacen quemar el bocho bastante más. No justamente el que hice hoy para TSB, que de por sí era bastante estúpido, pero estoy viendo que se vienen cosas interesantes y eso me copa. Me gusta tener que rebuscarmela. Otra cosa interesante, es que estoy programando en dos lenguajes, encima, gracias a uno, logré que kOT se cope al menos un poco con Linux y Python y vea que yo al menos un poquito de razón tenia con las cosas que le digo, hasta llegó a decirme que netbeans en linux anda mejor (o al menos que cargaba mas rápido), además de a poco llegó a entender la consola de linux :P .

Justo ahora que estoy con los dos lenguajes que mas me gustan, noto las diferencias, y cada vez me gusta mas Python. Hoy estuve armando cositas para acomodar una lista en java, y no paré de tirar lineas en python y el compilador de java se quejaba constantemente, es hasta gracioso.

Python no puede ser tan lindo.. es excelente para leer, fácil de programar, sin quilombos, además lo que mas me gusta es poder ir probando con la consola python y editarlo en cualquier editor de texto (en java también se puede, pero es un quilombo después juntar todo).

Y es así, no puedo evitarlo, no hay cosa que me apasione mas que programar, es impresionante, me puedo pasar horas depurando codigo, buscandole la vuelta para que sea lo mas lehible posible, en menos líneas, mas practico, mas rapido, menos aparatoso, mas javesco, mas pythonesco, mas modularizable, menos acoplado, mas objetoso, mas mas mas…