<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="http://www.evilgirls.net/~foobar/blog/styles/feed.css"?>
<rss version="2.0" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:admin="http://webns.net/mvcb/">
<channel>
<title>/var/foobar</title>
<link>http://www.evilgirls.net/~foobar/blog</link>
<description>Otro tipo que no tiene nada que decir</description>
<dc:language>es-es</dc:language>
<dc:creator>foobar</dc:creator>
<dc:date>2010-06-27T12:56:00+02:00</dc:date>
<admin:generatorAgent rdf:resource="http://nanoblogger.sourceforge.net" />
<item>
<link>http://www.evilgirls.net/~foobar/blog/archives/2010/02/21/index.html#e2010-02-21T14_58_43.txt</link>
<title>obexpushd</title>
<dc:date>2010-02-21T14:58:43+02:00</dc:date>
<dc:creator>foobar</dc:creator>
<description>
<![CDATA[En mi trabajo, a veces, me veo obligado a hacer fotos, fotos que después debo
mostrar a mis superiores (básicamente, incidencias de seguridad). Las fotos
las hago con mi <a
href="http://www.nokia.es/productos/moviles/6210navigator">nokia 6210</a>,
pero a la hora de mostrarlas, me gusta usar una pantalla más grande. 
<p>
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.
<p>
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. 
<p>
La solución pasa por instalar <a
href="http://sourceforge.net/projects/obexpushd/">obexpushd</a>, un programa
que recibe ficheros mediante bluetooth, IRDA y tcp.
<p>
La manera más sencilla de usarlo, es lanzarlo desde la carpeta donde queremos
guardar los ficheros, con la opción -n:
<p>
<blockquote>
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
</blockquote>]]>
</description>
</item>
<item>
<link>http://www.evilgirls.net/~foobar/blog/archives/2010/02/13/index.html#e2010-02-13T00_13_05.txt</link>
<title>La primera en... el firmware</title>
<dc:date>2010-02-13T00:13:05+02:00</dc:date>
<dc:creator>foobar</dc:creator>
<description>
<![CDATA[Feliz me veía yo con mi flamante iPod Touch, y nada más encenderlo me llevo la sorpresa de que tengo que activarlo con iTunes.
<p>
¿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.
<p>
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".
<p>
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". 
<p>
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.
<p>
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...
<p>
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:
<p>
Efectivamente, no hay "jailbreak" para esta versión. De momento.]]>
</description>
</item>
<item>
<link>http://www.evilgirls.net/~foobar/blog/archives/2010/02/08/index.html#e2010-02-08T10_02_59.txt</link>
<title>GTD</title>
<dc:date>2010-02-08T10:02:59+02:00</dc:date>
<dc:creator>foobar</dc:creator>
<description>
<![CDATA[Aunque ya he hablado antes de la gestión de las cosas por hacer, desde que me
hice con una <a href="http://www.nokia.es/productos/moviles/n810">n810</a>, el
proceso ha variado un tanto. 
<p>
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.
<p>
Para ello, lo más inmediato era usar <a
href="http://gpe.linuxtogo.org/projects/GPE-todo.shtml">gpe-todo</a>, ya que
hay soporte GTK y Maemo. 
<p>
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: <a
href="http://www.cis.upenn.edu/~bcpierce/unison/">unison</a>.
<p>
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 <a
href="http://groups.google.com/group/es.comp.os.linux.instalacion/browse_thread/thread/3d54c9c02c061779/5fc2d1062fd318b9?pli=1">e.c.o.l.i</a>,
me he tenido que conformar con hacerlo a mano.
<p>
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.
<p>
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.
<p>
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 <a href="files/todo.py.html">script</a> que correrá como cgi en el apache:
<p>
Para que el lector se haga una idea, un  <a
href="files/todo.png">pantallazo</a> de mi escritorio.
<p>
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.
 ]]>
</description>
</item>
<item>
<link>http://www.evilgirls.net/~foobar/blog/archives/2010/02/05/index.html#e2010-02-05T16_11_20.txt</link>
<title>ipod touch</title>
<dc:date>2010-02-05T16:11:20+02:00</dc:date>
<dc:creator>foobar</dc:creator>
<description>
<![CDATA[Que debo ser un buen marido, porque mi mujer me ha regalado un ipod touch en
sustitución de la n810 que pasó a mejor vida hace no mucho (consejo para
futuras generaciones, no guardeis móviles, pdas y demás dispositivos más o
menos delicados en el bolsillo de atrás del pantalón. Y si lo haceis, no os
senteis).
<p>
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).]]>
</description>
</item>
<item>
<link>http://www.evilgirls.net/~foobar/blog/archives/2010/02/03/index.html#e2010-02-03T18_53_48.txt</link>
<title>Nexus One, python, BS. Otra más</title>
<dc:date>2010-02-03T18:53:48+02:00</dc:date>
<dc:creator>foobar</dc:creator>
<description>
<![CDATA[¿Y por qué limitarse a ser el primero en saberlo?
<p>
<code>
import sys<br>
import urllib2<br>
from BeautifulSoup import BeautifulSoup<br>
import twitter<br>
<br>
page = urllib2.urlopen("http://www.google.com/phone/")<br>
soup = BeautifulSoup(page)<br>
<br>
try:<br>
        no_nexus = soup.find(attrs={"class" : "callout-box"}).contents<br>
except:<br>
        api = twitter.Api(username="yo_en_twitter", password="pass_de_twitter")<br>
        api.PostUpdate("Ya está disponible el Nexus One en aquí")<br>
</code>
<p>
Sé el primero en contárselo a los demás. ]]>
</description>
</item>
<item>
<link>http://www.evilgirls.net/~foobar/blog/archives/2010/02/02/index.html#e2010-02-02T17_02_34.txt</link>
<title>Nexus One, Python, BS</title>
<dc:date>2010-02-02T17:02:34+02:00</dc:date>
<dc:creator>foobar</dc:creator>
<description>
<![CDATA[Los que tengan la desgracia de compartir pais con el que esto suscribe sabrán
que la <a href="http://www.google.com/phone/">página</a> de google sobre el
Nexus One nos obsequia con un "Sorry, the Nexus One phone is not available in
your country."
<p>
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:
<p>
<code>
import urllib2<br>
from BeautifulSoup import BeautifulSoup<br>
page = urllib2.urlopen("http://www.google.com/phone/")<br>
soup = BeautifulSoup(page)<br>
try:<br>
        no_nexus = soup.find(attrs={"class" : "callout-box"}).contents<br>
except:<br>
        print "¡¡¡Ya está disponible!!!"<br>
</code>
<p>
Con un par de pinceladas más, y un juicioso uso del cron, voy a ser el primero
conocer el notición.]]>
</description>
</item>
<item>
<link>http://www.evilgirls.net/~foobar/blog/archives/2010/02/01/index.html#e2010-02-01T16_05_46.txt</link>
<title>sshfs</title>
<dc:date>2010-02-01T16:05:46+02:00</dc:date>
<dc:creator>foobar</dc:creator>
<description>
<![CDATA[Me deja un compañero del trabajo <a
href="http://es.wikipedia.org/wiki/Band_of_Brothers">Band of Brothers</a>.
<p>
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.
<p>
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.
<p>
<blockquote>
sshfs foobar@servidor.en.mi.red:/media/cdrom0 tmp/mnt/
</blockquote>
<p>
Y a disfrutar de la serie.
<p>
Aunque antes voy a jugar un pquito con iptables y un par de IP's de esos
enanos desagradecidos...]]>
</description>
</item>
<item>
<link>http://www.evilgirls.net/~foobar/blog/archives/2010/01/17/index.html#e2010-01-17T18_18_06.txt</link>
<title>Probando nanoblogger con una plantilla</title>
<dc:date>2010-01-17T18:18:06+02:00</dc:date>
<dc:creator>foobar</dc:creator>
<description>
<![CDATA[
La idea es ver si esto funciona con un .txt 
<p>
<img src="files/PRP.jpg">
<p>
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. ]]>
</description>
</item>
<item>
<link>http://www.evilgirls.net/~foobar/blog/archives/2010/01/09/index.html#e2010-01-09T19_41_51.txt</link>
<title>Tucan y BeautifulSoup</title>
<dc:date>2010-01-09T19:41:51+02:00</dc:date>
<dc:creator>foobar</dc:creator>
<description>
<![CDATA[<p>
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.
<p>
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.
<p>
Para esas situaciones he descubierto <a
href="http://doc.tucaneando.com/index.html">tucan</a>, un gestor de descargas
lbre, de código abierto, escrito en python y ampliable mediate plugins.
<p>
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.
<p>
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.
<p>
¿Y que hace un <a
href="http://es.wikipedia.org/wiki/Bastard_Operator_from_Hell">BOFH</a> ?
<p>
Efectivamente, usa python. Y en este caso, <a
href="http://www.crummy.com/software/BeautifulSoup/">BeautifulSoup</a>.
<p>Digamos que nos interesa la serie anime <a
href="http://es.wikipedia.org/wiki/Hellsing">Helsing</a>, y hemos encontrado
una página en la que están los enlaces a todos los episodios en megaupload.
<p>
Descargamos la página con urllib2
<p>
<code>
page = urllib2.urlopen("http://www.mcanime.net/descarga_directa/anime/detalle/dd_hellsing_espanol_castellano_1313_mas_ova27s/596")
</code>
<p>
Creamos una lista de tags que apunten a megaupload
<p>
<code>
linkToSite = SoupStrainer('a', href=re.compile("megaupload.com/")<br>
getTags = [tag for tag in BeautifulSoup(page, parseOnlyThese=linkToSite)]<br>
</code>
<p>
Y finalmente, extraemos los enlaces
<p>
<code>
for link in getTags:<br>
&nbsp;&nbsp;&nbsp;&nbsp; print link.get('href')<br>
</code>
<p>
Y ahora sí, copiamos el chorro de enlaces a tucan, que el se los irá
bajando tranquilamente.
<p>
Esas 6 líneas de código, un poco más elaboradas en <a
href="files/feedabird.py">feedabird.py</a> y el código en colorines (gracias a
vim) <a href="files/feedabird.py.html">aquí</a>
<p>
<bold>Actualización</bold>
<p>
Resulta que sitios como <a href="http://www.taringa.net/">taringa!</a>, 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.
<p>
<code>
page = urllib2.urlopen(options.url).read()<br>
page = re.sub('</scr', '<\/scr', page)<br>
</code>]]>
</description>
</item>
<item>
<link>http://www.evilgirls.net/~foobar/blog/archives/2010/01/01/index.html#e2010-01-01T22_51_57.txt</link>
<title>Empezando el 2010</title>
<dc:date>2010-01-01T22:51:57+02:00</dc:date>
<dc:creator>foobar</dc:creator>
<description>
<![CDATA[1 de enero, hoy no trabajo, y tengo unos minutos para pensar que quiero hacer
este año.
<p>
Huir despendolado no es una opción, así que no me van a quedar más narices que
enfrentarme a mis miedos y carencias. 
<p>
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.
<p>
Meterle mano a bola8, que esta primavera quiero llevarme a kania a un par de
concentras, y así presumir de churri y de hierro.
<p>
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!
<p>
Actualizar el blog. En serio. Todas las semanas... Bueno, cada quince días.
<p>
Y tatuarme. Por supuesto. ]]>
</description>
</item>
</channel>
</rss>
