dom feb 21 14:58:43 CET 2010
obexpushd
Antes lo hacía con la n810, pasándolas directamente por bluetooth, pero resulta que el Ipod Touch sólo habla bluetooth entre los de su especie..., por lo que ahora me veo obligado a usar un proceso más largo, móvil a portátil a Ipod.
Cualquier distribución moderna viene con bluez instalado por defecto, y sólo tienes que emparejar los dispositivos. Sin embargo, la cosa sólo funciona si quieres enviar del portátil al móvil, porque al revés no hay manera.
La solución pasa por instalar obexpushd, un programa que recibe ficheros mediante bluetooth, IRDA y tcp.
La manera más sencilla de usarlo, es lanzarlo desde la carpeta donde queremos guardar los ficheros, con la opción -n:
foobar@nemesis:~/tmp$ obexpushd -n obexpushd 0.7 Copyright (C) 2006-2007 Hendrik Sattler This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. Listening on bluetooth [00:00:00:00:00:00]:9 Connection from "bluetooth/[00:24:d4:EC:59:2e]:9" 0.1: Creating file "16022010_001.jpg" ^C
sáb feb 13 00:13:05 CET 2010
La primera en... el firmware
¿Y cómo diablos lo hago en Linux? Pues de ninguna de las maneras. Es sí o sí. No me queda más remedio que pedirle prestado un portátil a mi mujer, crearme una cuenta e instalar el dichoso programita.
Ok, ya tengo el cacharrillo en marcha, y con las configuraciones básicas (wifi, correo, calendario y contactos) hechas. Un vistazo a la web, una ojeada al correo, una visita a la tienda de Apple y ya empiezo a sentir "el hormigueo".
Un prúrito que noto con cada nuevo gadget, la necesidad de meter vim, Python y ssh y poder cacharrear desde la línea de comando. Así que a la hora de tenerlo ya me he decidido a hacer el "jailbreak".
Vista la sencillez de uso, no me documento muy a fondo (léase: Bajo el blackra1n, lo ejecuto, instalo Cydia y empiezo con el openssh) y al primer reinicio, me sale lo que tomo por un error del "jailbreak". Por lo visto, con ciertos modelos modernos de iPod e iPhone, se hace algo llamado "tether jailbreak" que básicamente consiste en que hay que volver a lanzar el blackra1n con cada reinicio.
Listo de mí, conecto el cacharro al iTunes y le digo que me lo restaure al estado inicial. Y aquí cometo mi segundo y más grave error, pues el cabrito del programa me ofrece actualizar el firmware a la versión 3.1.3, y yo le digo que sí, que venga, con dos cojones...
Y ahora sí me documento, leo doscientas páginas web sobre el tema, visito 50 foros, veo un par de docenas de vídeos y todo para llegar a una sóla conclusión:
Efectivamente, no hay "jailbreak" para esta versión. De momento.
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.