lun feb 8 10:02:59 CET 2010
GTD
La idea principal es mantener una lista de tareas tanto en casa (con un portátil con ubuntu o alguna de sus variantes, ahora mismo crunchbang) como en la tableta.
Para ello, lo más inmediato era usar gpe-todo, ya que hay soporte GTK y Maemo.
gpe-todo guarda la lista de tareas en un fichero $HOME/.gpe/todo, que no es más que una base de datos sqlite 2.0. Y para sincronizar entre portátil y tableta, un clásico de toda la vida: unison.
Lo ideal sería poder lanzar la sincronización cada vez que la tableta conectara con mi red interna, pero udev en maemo tiene sus caprichos, y a pesar de la ayuda de los gurus de e.c.o.l.i, me he tenido que conformar con hacerlo a mano.
Hasta aquí todo correcto, pero a mi me picaba el hecho de no tener un recordatorio casi constante de lo que tengo pendiente. Y como no sé si existe alguna solución más sencilla, lo que se me ocurrió fue tirar de python y apache.
Casi todas mis tareas en el portátil giran alrededor del navegador, por lo que tener un recordatorio en el mismo parece ser lo más razonable. Cada vez que arranque el navegador, o cree una pestaña nueva, me aparecerá una página en la que se vea la lista de cosas pendientes, sencillo de configurar tanto en firefox como en chrome.
Buscando un poco en google, y haciendo unas cuantas pruebas con el idle de python, he conseguido extraer la lista de tareas del fichero $HOME/.gpe/todo, y con cuatro líneas más, crear un script que correrá como cgi en el apache:
Para que el lector se haga una idea, un pantallazo de mi escritorio.
Y sí, es cierto, este artículo lo tenía guardado desde hace un par de semanas, antes de que me sentara encima de la n810 y me regalaran el ipod touch. Ahora mismo estoy mirando opciones como google tasks o RTM.
vie feb 5 16:11:20 CET 2010
ipod touch
En cuanto al bichillo, muy chulo, muy sencillo de usar, y muchas aplicaciones en la tienda Apple. Supongo que acabaré "jailbrokeándolo", pero de momento voy a ver hasta dónde llego con software gratis (que no libre, ojo, San Kanterobi nos proteja).
mié feb 3 18:53:48 CET 2010
Nexus One, python, BS. Otra más
import sys
import urllib2
from BeautifulSoup import BeautifulSoup
import twitter
page = urllib2.urlopen("http://www.google.com/phone/")
soup = BeautifulSoup(page)
try:
no_nexus = soup.find(attrs={"class" : "callout-box"}).contents
except:
api = twitter.Api(username="yo_en_twitter", password="pass_de_twitter")
api.PostUpdate("Ya está disponible el Nexus One en aquí")
Sé el primero en contárselo a los demás.
mar feb 2 17:02:34 CET 2010
Nexus One, Python, BS
Lo que me hace pensar que el día que por fin esté disponible, esa frase desaparecerá. Y eso me lleva a BeautifulSoup y a tres o cuatro líneas que harán que me entere rápidamente cuando esto ocurra:
import urllib2
from BeautifulSoup import BeautifulSoup
page = urllib2.urlopen("http://www.google.com/phone/")
soup = BeautifulSoup(page)
try:
no_nexus = soup.find(attrs={"class" : "callout-box"}).contents
except:
print "¡¡¡Ya está disponible!!!"
Con un par de pinceladas más, y un juicioso uso del cron, voy a ser el primero conocer el notición.
lun feb 1 16:05:46 CET 2010
sshfs
En casa descubro que el a) el reproductor de DVD por fin se ha rendido a tanto Pocoyo, b) el lector de DVD de mi portátil ha decidido dejar de funcionar, y c) NFS es una mierda y no consigo exportar el lector de DVD del servidor.
Soluciones que se me ocurren: camelarme a uno de mis hijos y que me dejen sus portátiles (juas, un domingo, por la tarde, papá, ¿estás tonto?), o buscar alternativas a NFS en google. Y resulta que hay una maravilla llamada sshfs.
sshfs foobar@servidor.en.mi.red:/media/cdrom0 tmp/mnt/
Y a disfrutar de la serie.
Aunque antes voy a jugar un pquito con iptables y un par de IP's de esos enanos desagradecidos...
dom ene 17 18:18:06 CET 2010
Probando nanoblogger con una plantilla
Y sí, la imagen no tiene nada que ver con el asunto, pero lo bueno de tener un blog en el que el lector no puede opinar es eso. Que pongo lo que me sale de los huevos.
sáb ene 9 19:41:51 CET 2010
Tucan y BeautifulSoup
Supongo que todos conoceis sitios como RapidShare o Megaupload, y el procedimiento estándar para descargarte un fichero: captcha, enlace a la cuenta gratuita, espera de unos segundos, o minutos, y por fin el enlace deseado.
El problema viene cuando el fichero en cuestión está partido en una docena de trozos. Ninguno de esos sitios va a permitirte que, por tu cara bonita, hagas varias conexiones simultáneas. Y te obsequiará con tiempos de espera cada vez más largos en cada descarga.
Para esas situaciones he descubierto tucan, un gestor de descargas lbre, de código abierto, escrito en python y ampliable mediate plugins.
Básicamente, abres tucan, copias y pegas las direcciones de los ficheros a bajar, y te olvidas, tucan se encarga de ir conectando y bajando los ficheros.
El problema es que cuando son más de dos enlaces, a mí, personalmente, me parece un coñazo tener que colocar el cursor en el enlace, botón derecho, copia dirección, alt-tab, pegar, enter, alt-tab, repetir.
¿Y que hace un BOFH ?
Efectivamente, usa python. Y en este caso, BeautifulSoup.
Digamos que nos interesa la serie anime Helsing, y hemos encontrado una página en la que están los enlaces a todos los episodios en megaupload.
Descargamos la página con urllib2
page = urllib2.urlopen("http://www.mcanime.net/descarga_directa/anime/detalle/dd_hellsing_espanol_castellano_1313_mas_ova27s/596")
Creamos una lista de tags que apunten a megaupload
linkToSite = SoupStrainer('a', href=re.compile("megaupload.com/")
getTags = [tag for tag in BeautifulSoup(page, parseOnlyThese=linkToSite)]
Y finalmente, extraemos los enlaces
for link in getTags:
print link.get('href')
Y ahora sí, copiamos el chorro de enlaces a tucan, que el se los irá bajando tranquilamente.
Esas 6 líneas de código, un poco más elaboradas en feedabird.py y el código en colorines (gracias a vim) aquí
Resulta que sitios como taringa!, que suelen ser muy buena fuente de enlaces utilizan javascript, sobre todo para la publicidad, que a BS se le atraganta, por lo que hay que hacer una fea ñapa.
page = urllib2.urlopen(options.url).read()
page = re.sub('
vie ene 1 22:51:57 CET 2010
Empezando el 2010
Huir despendolado no es una opción, así que no me van a quedar más narices que enfrentarme a mis miedos y carencias.
Aprender de una vez a programar en python. Pero aprender de verdad, no sólo conseguir que el script funcione, sino que pueda publicar el código sin usar vergonzantes seudónimos.
Meterle mano a bola8, que esta primavera quiero llevarme a kania a un par de concentras, y así presumir de churri y de hierro.
Decidir si realmente quiero tener cuenta en facebook, myspace, tuenti, spotify, y demás sitios que las modas y la tontería del momento me han ido tentando. ¡Si hasta he picado con el google wave!
Actualizar el blog. En serio. Todas las semanas... Bueno, cada quince días.
Y tatuarme. Por supuesto.
dom dic 13 17:40:34 CET 2009
¿Pero esto todavía está aquí?
mar nov 6 21:15:30 CET 2007
Queridos Reyes Magos
Cualquiera de estas motos
Un driver para mi tarjeta Ati, que me permita
tener Compiz en el portátil.
Una prueba palpable de que Dios existe. Si no existe, una kirin
estaría bien.
Una Nec900c
Un encendedor usb.
Sí, lo sé. Fumar mata. Y vivir. Nos ha jodido mayo con las flores.
Un productor para mi guión. Un corto acojonante en el que se mezcla Pulp
Fiction y la PSP. No doy más detalles porque no los tengo.
Eso es todo. Ah, bueno, sí. La paz en el mundo y todas esas mierdas. Pero lo dicho. Al final traeis lo que os sale de los huevos.