Parseando un feed

27 02 2008

Hace como una hora que llegué a mi casa, me bañe y me puse a buscar algo para hacer con Python. Le pregunté a perrito666 sobre el facundario, ya que había estado teniendo algunos problemas. Y me dijo que todavía no lo había visto, asique seguí buscando otra cosa.

Me acordé que mi amigo personal, aunque desconocido, Leo (leo_rockaway… ups perdón leo_rockway) estaba buscando un feed que le informara como era el cambio entre una moneda a otra de forma actualizada. Hacía algún tiempo que estaba buscando eso, pero hacía unos días me había comentado que lo había encontrado. Busqué en los logs de las conversaciones y no encontré la dirección asique busqué en Google: “currency feed” y era el primer link, lo que me hizo pensar que fue bastante vago para buscar este pibe.

Como nunca había parseado un archivo de feed, ni sabía que tan complicado era, o que tan fácil, me puse a ver qué podía hacer. Hacía un tiempo que yo le había recomendado a Leo el módulo feedparser de Python, aunque nunca lo había utilizado.

Lo primero que hice fue fijarme si lo tenía instalado. Como lo tenía, me leí la documentación de ejemplo que hay en esa página web y me fue suficiente para hacer lo que Leo necesitaba. Busqué cómo estaban ordenados los cambios del feed de pesos argentinos a alguna otra moneda, el que me interesaba era el cambio con respecto a dólares estadounidenses. Éste aparecía en la antepenúltima ubicación.

Con un par de líneas me dí cuenta que obtenía lo que quería. No puedo dejar de sorprenderme con Python, no puede ser todo tan fácil. ¿O yo soy muy inteligente? :) [1]

>>> import feedparser
>>> import re
>>> rss = 'http://currencysource.com/RSS/ARS.xml'
>>> feed = feedparser.parse(rss)
>>> title = feed['entries'][-3]['title']
>>> title
u'1 ARS = USD (0.331388)'
>>> regex = re.compile('(.+)')
>>> result = regex.search(title)
>>> result
<_sre.SRE_Match object at 0xcc9510>
>>> title[result.start():result.end()]
u'(0.331388)'
>>> title[result.start()+1:result.end()-1]
u'0.331388'
>>>

Y ahí sale andando fácil ahora Leo. Ya tenés la equivalencia que necesitabas. Espero que te sirva de algo. Podés encarar tu problema de varias forma ahora, esto era lo más fácil de hacer, por eso lo hice yo… ;)

[1] no lo creo, después se me complicó con la expresión regular y era una boludés.





Una lucha que nunca va a terminar

27 02 2008

Como comenté en un post anterior, una de las veces que llamé a Arnet me dijeron que me iban a cambiar el modem, pero no me habían dado número de recibo, por lo que pensé que nunca llegaría.

Cerca de las 11 de la mañana del día de hoy me tocan el portero. Era el de OCA que me traía el modem. Yo esperando a que sea un modem de lo más cho** como el Huawei alfajorcito, que sólo tiene conexión USB y a mi no me sirve, o por lo menos no lo quiero.

Asique lo primero que me fijé era lo que decía en la caja. La primer línea debajo de “En su interior encontrarás”, decía: Modem ADSL Wi-Fi… Si! Wi-Fi, lo que me pareció bastante raro. Pero igual firmé todo lo que había que firmar, y cuando empiezo a volver a mi casa, el tipo me dice que le tenía que dar el modem que yo tenía porque el comprobante decía “Cambio de modem“, lo cual no me gustó nada, porque no me quería llevar ninguna sorpresa después. Pero bueno, no me quedaba otra. Subí, busqué el modem y lo cambiamos.

Cuando abro la caja, me encuentro con un Modem Wireless, Ethernet con 4 bocas, USB. La verdad muy lindo a simple vista. El transformador correspondiente, los microfiltros y los cables correspondientes. Ya era un paso bastante grande. Algunas fotos:

Lo primero que hago es conectar todo como se debe, viendo que tenía 4 bocas de ethernet, saqué el switch que tenía antes, ya que no lo iba a necesitar, si sólo tengo tres máquinas. Entro a la dirección 10.0.0.2 que es dónde se configuraba mi modem anterior. Selecciono que tengo arnet y demás. Cuando me pregunta el nombre de usuario y contraseña, pongo lo que me acordaba de haber registrado en la web de Arnet cuando contraté el servicio username: humitos password: ******* le doy Conectar y quedaba mostrando un cartelito que decía Conectando… con una barra de progreso que nunca se modificaba.

Llamo al servicio técnico por primera vez para ver si estaba mal mi nombre de usuario. Me comunican que estaba fallando la validación de la contraseña, asique verificamos con otros usuarios de prueba, tampoco funcionaban. A esta altura ya les había dado mi número de cliente, nombre del titular, dónde se encuentra vacacionando mi mamá y como se llama la persona que la estaba acompañando, dónde trabaja y algunos datos más. En lo más lindo del proceso de comunicación (la musquita) con el servicio técnico… ¡¡¡SE CORTA!!! Asique, otra vez a volver a empezar…

Llamo por segunda vez 0800-555-9999, ingreso todo tipo de datos, hablo de mi familia y demás, como las quichisientas reiteradas veces anteriores. Me dicen que ya tengo varios reclamos hechos. Y otra vez empezamos el proceso de verificación de usuarios de prueba. Mientras estoy haciendo esto, abro una máquina virtual con virtualbox que tiene Windows XP y entro a un Internet-Explorer. Le digo que me aguarde un momento y descubro que la página del modem no es compatible con Firefox ni con Konqueror, funciona únicamente con IE. El tipo que hizo el driver del modem un grande, ¡esa esa la gente que necesita el mundo!

Para este momento, el flaco ya me había cambiado la clave. Asique probé conectarme y funcionó. Le pregunté como era el password de la sección de administrador del modem y me dijo que no me lo podía decir, que no tenía esa información. Llamé de nuevo y me lo dieron (previos 15-20 minutos de espera y charla).

Siguiente paso: habilitar los puertos para amule, ssh, torrent y demás. Como el firmware de este modem es distinto del anterior. Busqué, busqué, busqué y no encontraba la configuración, hasta que caí en una página muy buena en la que hay muchos problemas típicos explicados ahí. El ejemplo de cómo habilitar puertos era de un firmware viejo, del 2006… Y al parecer cambió bastante con el del 2007 que es el que tengo yo. Igual logré hacerlo funcionar sin demasiadas complicaciones.

Por el momento, está funcionando como debería… Al menos puedo abrir páginas, descargar con aMule, y algunas otras cosas más. Vamos a ver como sigue esto.





Bongó

25 02 2008

Hace un mes por lo menos ya que me compré un Bongó. Siempre quise tener un instrumento de percusión, ya que justamente tengo problemas con el tiempo en la guitarra. Algo que sea un poco difícil en cuestiones de tiempo, se me complica y mucho más si lo que estoy tocando tiene contratiempos.

Asique para hacerle contra a este problema y además que me parece un instrumento re divertido, me lo compré. En este mes estuve tocando algo, bastante más al principio. Después empecé a estudiar para la facu y se me terminaron los tiempos y/o ganas cuando tenía el tiempo.

Además de practicar lo que me parecía, porque no tenía idea ni siquiera de cómo se agarraba, empecé a buscar técnicas de distintos golpes en internet (para esto iba a la casa de un amigo, lo cual era bastante incómodo) y practicaba éstas técnicas también. Algunas me hacían sufrir bastante porque me partía los dedos con los bordes de madera del bongó en reiteradas ocasiones cuando le “pifiaba”.

Conseguí algunos ejemplos en MP3 de distintos ritmos, pero la mayoría bastantes complicados. Un amigo que es percusionista me dijo algunas cositas a tener en cuenta, además de afinarme el bongó ya que sonaba bastante feito. Yo no me daba cuenta porque era la primera vez que escuchaba uno en vivo y pensé que era así, pero cuando lo afinó se notó bastante la diferencia.

La afinación consiste en la tensión que tiene el parche, de modo que si está más tenso suena más agudo, de lo contrario más grave. Influye mucho el gusto de cada uno acá, no es que hay una afinación específica, como en la guitarra por ejemplo. Pero si deben tener relación los sonidos de un tambor y el del otro, si queda un cambio muy brusco entre ambos sonidos queda “mal”.

Ahora que volví a Santa Fé y tengo internet acá, me puse a buscar clases de bongó en YouTube, encontré algunas cosas interesantes y otras demasiadas complicadas para alguien que recién empieza.

Dejo algunas fotos del instrumento y algunos ritmos que hice recién para webear un rato. Arriba de estos ritmos simples se puede improvisar mucho, y pasar varias horas tocando sobre un mismo patrón, eso es lo divertido. Ah! me olvidab, están grabados con un micrófono de $3 no busquen mucha calidad :D





Python Bug Day

24 02 2008

El sábado pasado hubo un Python Bug day, en el cuál se “juntan” en el canal de IRC python-dev de freenode.net y entre todos cooperan para solucionar todos los Bugs, errores de documentación, y demás problemas que tiene Python, porque, que sea el mejor lenguaje que exista actualmente no lo hace que esté libre de Bugs ;) .

El viernes por la tarde estuve hablando con los chicos de PyAr, bah, hinchando como siempre. Les pregunté qué es lo que tenía que saber, probar y hacer para poder participar. Facundo me recomendó que lea unos slices que hablaban sobre el tema de forma muy reducida, pero que explicaba los puntos claves.

Bueno, me leí esto, bajé el código, compilé y probé… ¡Funcionaba!, con la única diferencia, que de hecho no sé a qué se debe, en el python que me compilé no andan las flechitas del teclado para desplazarte por la línea actual.

Después de esto consulté la página de Facundo, que muestra todos los Tickets que están abiertos todavía, y además permite hacer algunos filtrados. Busqué los que tenían de llave “Easy” (Fácil), para ver si podía resolver alguno.

El primero que agarré, era sobre el módulo ConfigParser, que sirve para trabajar con archivos de configuración, estilo .ini. El problema era que al agregar una sección con el nombre “DEFAULT” y luego agregarle a esta sección un valor, se duplicaba. Osea, quedaban dos secciones “DEFAUL” lo cuál está mal… Perdón, ‘estaba’ mal :) .

El ejemplo que mostraba el autor de la apertura del Ticket es este:
>>> import sys, ConfigParser
>>> c = ConfigParser.ConfigParser()
>>> c.add_section('DEFAULT')
>>> c.write(sys.stdout)
[DEFAULT]
>>> c.set('DEFAULT', 'color', 'yellow')
>>> c.write(sys.stdout)
[DEFAULT]
color = yellow
[DEFAULT]

Me puse a ver bien cuál era el problema, preguntando en PyAr si me podían ayudar, investigué un poco, leía todos los comentarios, intentaba traducirlos. La verdad es que estaba bastante en bolas. Después de un tiempo buscando algo (pero no sabía qué) encontré que ya había un parche hecho, incluso documentado y demás. Lo descargué y lo probé. Funcionaba perfecto. Sólo que le faltaba agregar algunas cositas, como testeos y modificar el archivo NEWS, que es donde se ponen todos los cambios entre las versiones.

Asique subí la versión completa del parche y comenté que lo había probado, funcionaba bien y estaba todo OK. Le avisé a Facundo y él cerró el ticket ese. Gracias Facu!

Me hice unos mates, dí un par de vueltas en casa (toqué el bongó y la guitarra un rato) y volví a buscar algún ticket que pueda llegar a solucionar. Encontré este. Y ví que el tipo pedía un agregado de una funcionabilidad, pero esta ya existía. Asique pregunté en python-dev algo así como: “Why this ticket http://bugs.python.org/issue2130 is open yet?” (estuve 15 minutos formulando esta pregunta) o lo que enseguida Facundo me contestó “Thanks humitos!” y lo cerró.

Ya le había agarrado el gustito a esto y estaba bastante embalado. Está bueno, poder ayudar aunque sea en lo más mínimo a un lenguaje que me dió tantas satisfacciones y me enseñó muchas cosas. Ademas de darme unos pesitos también. Asique busqué otro y encontré uno que venía como anillo al dedo con lo que había rendido yo (Sistemas Operativos), era sobre el módulo mutex de python y decía que esta función no hacía nada automáticamente. Osea, permitía que dos procesos se ejecuten simultáneamente estando en su región crítica.

Me costó bastante entender bien algunas cosas. Porque decían que esta clase no se tenía que utilizar para multithreading, pero justamente es para eso que están hechos los mutex. Asique bueno, después de unas discusiones ¿filosóficas? sobre si este módulo lo utilizaba alguien o no, y si debía seguir estando en Python, llegamos a un acuerdo en lo que pensábamos entre todos. Facundo envió un mail a python-dev preguntado estas cosas y por lo que tengo entendido este módulo va a desaparecer en Python 3 o al menos lo van a ocultar.

Resumiendo, en una mañana y una parte de la siesta, con los chicos de PyAr cerramos 3 tickets, lo que me parece para ser la primera vez que intento ayudar acá está bien.





Comunicaciones. Un dolor de cabeza.

22 02 2008

Vuelvo a escribir en mi blog luego de unas vacaciones largas en el mundo cibernético. A decir verdad está bueno, pensar que todos los días me levantaba, prendía la PC, verificaba el correo, contestaba algunos, entraba al canal de PyAr, desayunaba frente a la máquina, leía algunos artículos de blogs interesantes, escribía algo quizás en el mío, y cuántas cosas más… Pero era todos los días lo mismo. Como todo, al principio es divertido, pero cuando se vuelve una rutina, pasa a ser aburrido, aunque esté leyendo cosas interesantes.

De esto, pasé a levantarme todos los días en Paraná, bien tempranito e irme caminando hasta la casa de Guille a estudiar Sistemas Operativos, que de hecho la saqué y con 7 (siete), seguramente se equivocaron, como en Análisis II.

Tenía la computadora allá pero no tenía monitor, asique era lo mismo que nada. Resumiendo, lo que hice fue configurar la salida a TV que fue bastante complicado para que funcione correctamente (no voy a entrar en detalles).

Luego de esta pequeña introducción, empiezo a hablar de lo que dice el título de este post. Otra vez tengo problemas con internet, y otra vez el servicio técnico de Arnet me dice cualquier cosa. Yo creo que nací para pelearme con Telecom.

En mis “vacaciones” de estudio, pedí el servicio de internet para la casa de mi mamá en Paraná, en la que tengo Línea Uno (costo fijo por mes $30 y chirolas, sin excusas, si te quedás sin crédito no podés seguir hablando) no porque queramos pagar siempre $30 sino porque siempre nos venía alrededor de unos $100 que NUNCA pudimos saber de dónde salían.

A mi mamá la estuvieron llamando quichisientas veces ofreciéndole un servicio en el que se paga por minuto unos 5 centavos, a una velocidad de 640Kbps. Como a mi mamá no le interesaba, osea, tiene un modem de 56Kbps con Fullzero y lo usa. Sinceramente no sé como hace, cada vez que abro Gmail ahí estoy 35 minutos.

Me comentó esto y me preguntó si quería que pongamos eso en casa, ya que yo iba a estar unos meses y total mientras no esté, solo se iba a pagar los minutos que se consumian. Asique le dije que la próxima vez que llamen les diga que sí, pero con la condicion de que el modem que le den sea el DUAL, como tengo yo en Santa Fé, que tiene conexión USB y RJ45, así lo podía usar en Linux.

Le dejé todo anotadito como era lo que le tenía que decir. Justo en el momento que llamaron de nuevo (al otro día, estaban re pesados), estaba yo, asique cuando vino la parte del modem hablé yo con “Natalia”, muy simpática la chica pero no entendió un corno lo que le decía. Le pregunté cuál era el modem, si era un Pirelli (en este momento están dando esos como DUAL) y me dijo que si que me quede tranquilo que nunca nadie tuvo un problema y que me iba a llegar en los próximos 10 días hábiles.

Pasaron dos días y el modem estaba ahí. “¡Que bueno!”, dije yo; dentro de poco tengo internet acá. Cuando leo la caja decía Modem USB. Fuck!. Lo llamo a mi hermano que estaba en santa fé, sospechando que la caja que me había llegado allá por fuera decía USB, pero adentro tenía el DUAL. Lo cuál me confirmó que no era como pensaba. Asique llamé a Arnet, le comenté la situación y me dijo que el plan que yo había pedido: “Arnet libre” el modem que traía era el que me habían enviado y después me preguntaron cuál era… ¿Entonces?.

Les dije que no sabía como era, porque no lo quería abrir para que después no me digan que no lo podía devolver una vez que estaba abierto y me terminen cagando como siempre. Me hicieron abrirlo y que les diga el modelo y todo. Era el típico alfajorcito (fué lo primero que les dije). Y me volvieron a decir lo mismo, que estaba bien. Les dije que no lo quería porque no me servía y me dijeron que llame para darme de baja al 0800 de arnet otra vez y que presione la opción #1. La verdad me tenían los huevos inflados.

Hice esto, llamé, esperé 35 min cantando la melodía (ya me la sé de memoria, incluso la toco en la guitarra :D ), me comuniqué con esa opción y no era, asique el tipo me derivó, otra vez con la musiquita. Cuando me atendió la última chica me dijo:

Arnet: “Señor, me comunican que usted quiere darse de baja en el servicio, ¿Esto es así?”
Yo: “Si”
Arnet: “¿Porqué motivo?”
Yo: “¿Querés la versión corta o la versión larga?” (*)
Arnet: “Ah, le enviaron un modem que usted no solicitó…” (**)
Yo: “Aja”
Arnet: “Bueno, ya está hecho el pedido. Van a pasar a retirar el modem por su domicilio”
Yo: “Gracias, chau. Espero no tener que pagar nada por esto”
Arnet: “Quédese tranquilo, señor, que todavía no le dió ‘aceptar’ al contrato que se hace vía web, asique es como que no hubiese pasado nada”

(*) de cualquier forma los iba a mandar a la mierda
(**) se dió cuenta

Después de esto tuve otro problema, pero con el teléfono de santa fé. No me llegaba la factura de diciembre. Llamé para reclamar y me dijeron que ya había sido emitida, que si no llegó no era un problema de ellos y que podía ir a la página web de telecom e imprimir la factura para pagarla.

Pasó un tiempo, llamaron a casa y dijeron que me iban a cortar el servicio si no pagaba antes del 25 de enero creo. Asique nos alertamos un poco y fuimos a internet, imprimimos la factura, y cuando la leo era $110,46 ¡UNA LOCURA! yo no pago más de $70. Asique otra vez volvimos a la musiquita, pero esta vez no fuí yo por suerte, fué mi mamá. A la que le dijeron que se quede tranquila que era un error de ellos y que iba a ser solucionado a la brevedad. Que no la pague porque me iba a llegar la factura el 15 de febrero más o menos corregida. Pero que sí pague la factura de enero. Le dió el número de reclado y demás. La atendió una tal “Nancy”. ¿Qué hago con esto?

Ayer vino la factura de febrero de Telecom, con $40 más o menos. Por lo que pensé que me habían descontado lo del mes pasado, pero… Yo no lo había pagado a lo anterior y figuraba como que adeudaba esa factura (que era correcto), pero que nunca había llegado modificada

Asique volví a llamar, primero me comuniqué con una computadora que me informaba que la factura de diciembre no estaba paga pero que tenía un reclamo. Y que tampoco estaba paga la de febrero que recién me llegaba. Acá la prueba de fuego.

Luego llamé de nuevo para ver en qué estado estaba el reclado de dicha factura, estuve una “brevedad” esperando para que me atienda y el tipo se lavó las manos como loco. Me dijo que él no se hacía responsable si la solicitud me iba a salir favorable o no. Y que tenía que esperar algunos días hábiles. Asique estoy a la espera aún. Acá el audio.

Todo esto por un lado, el lado del teléfono. Por el otro tengo el problema de internet. Que no sé qué está pasando que durante los primeros 10 minutos aproximadamente puedo hacer cualquier cosa, pero después no puedo cargar ninguna página, pero si se siguen descargando las cosas que durante los primeros minutos pude poner. Unos amigos me dijeron que podía ser problemas de DNS, probé OpenDNS y parecía que se había solucionado, pero luego de un tiempo pasaba lo mismo.

Lo que hacía para “poder navegar” era reiniciar el modem, y ahí tenía otros 10 minutos tranquilo para loguearme en las cosas que uso y luego bue… Reiniciar otra vez :P

Anoche como a las 23 hs llamé al servicio técnico de Arnet y me preguntaron dos mil boludeces como siempre. Entre ellas que sistema operativo tengo, les dije que linux y me dijo que era un problema mío, que tenía que llamar a un técnico. Después me preguntó si no tenía WIndows en otra partición, les dije que sí que me espere a que reinicie, me dijo que no me podía esperar y me cortó. Lamentablemente a esta no la grabé, todavía no me había avivado.

Llamé de nuevo ayer. Y fui “Tan amable de aguardar en línea” como 3 millones de veces. Me preguntaron lo mismo de siempre, las luces del modem cuáles son, que sistema operativo (esta vez le dije que ni con windows ni con linux funcionaba), me preguntaron si tengo antivirus, musiquita, me preguntó la conexión física, cualquier cosa!. Acá está el audio de esta conversación. “Si anda el MSN el servicio está utilizable”

Hoy llamé de nuevo, ya un poco más cansado de aguardar tantas veces en línea, y “conseguí” que me manden otro modem, o al menos que me dijeran que me lo iban a mandar, ya que me dijeron que el problema es del modem.  Me sorprende como es que cada vez que llamas te dicen cosas distintas. Además me dijo que el modem no estaba en garantía. Y la verdad que no tengo ni idea cuál es la garantía del modem, pero le dije que no podía ser, y al toque me dijo que se equivocó. ¿ :) ?. Acá va el audio. Esta vez me olvidé de pedir el número de reclamo, que igualmente no sé para qué sirve. Vamos a ver que pasa de acá a unos días… Mientras tanto a seguir sufriendo.