Monthly Archives: May 2008

Python y XML

Sigo con la labor de traducir mis script de Bash a Python y en este caso he trabajado con el que se encarga de avisarme de que hay nuevas versiones en la documentación en inglés de Gentoo y que tengo que traducir.

Soy traductor de la documentación de Gentoo y tengo a mi cargo los documentos de Guía de compilación optimizada, Guía de configuración de XFCE, la Guía Gentoo de Bluetooth y la Guía de virtualización con XEN.

La documentación se sincroniza con cvs y está escrita en xml, el programa coge los cuatro documentos antes listados y los compara con la versión inglesa en busca de una nueva versión. En caso de nuevas versiones avisará con un correo electrónico. Es secuencial, sólo comprueba mis documentos. Se puede implementar en un bucle para saber el estado general de la documentación.

Bueno, el script aquí. 

Profeta

Hay una frase sabía que dice nadie es profeta en su tierra. Aquí como todo, hay un depende.

Desde hace años tengo una guerra abierta con mis amigos para que se pasen a Linux, les hablo de sus virtudes y ventajas, les ofrezco ayuda para instalarlo, les hago un poco de spam con noticias y sucesos interesantes del mundo GNU y no hay manera.

En mi casa si he logrado una migración completa, hasta mi madre usa Ubuntu. Pero de puertas para afuera nada, ahí sólo soy el geek del grupo y lo que digo no tiene sentido.

Aquí viene lo del "depende", si yo, que se supone que soy profesional del la informática, recomiendo un sistema y no me hacen caso, ¿le pasará lo mismo a un médico? ¿a un economista? ¿a otro profesional de algún sector? 

Aprendiendo Python

Me he decidido a aprender Python, para ello, lo primero que estoy haciendo es traducir mis script de Bash al nuevo lenguaje. Mucho Google y mucho leer, probar, corregir y volver a probar. De momento no veo que sea demasiado complicado, aunque aun no he profundizado mucho.

El primer script que he traducido ha sido el del temporizador, no tenía apenas dificultad.

#!/usr/bin/python
import sys
import time
import os
tiempo = input("Introduzca el tiempo: ")
tiempo *= 60
time.sleep(tiempo)
for i in range(3):
  os.system('beep')
  time.sleep(1)

El segundo script, lo he escrito para que mi amigo nickel pueda practicar con mi script de las peliculas, él aprende Ruby.

import os, os.path
import glob
def listado(path):
  try:
    for fichero in os.listdir(path):
      fname = os.path.join(path, fichero)
      if os.path.isdir(fname):
        os.makedirs(target + fname) # crea directorio y padres
        listado(fname)
      else:
        print fname
        file = open(target + fname, "w")
        file.close()
  except OSError, e:
    print e
path = "/mnt/backup/pelis"
target = "/home/nordri/target"
# Creamos la raiz del objetivo
if not os.path.exists(target): os.makedirs(target)
if not os.path.exists(target + path): os.makedirs(target + path)
listado(path)

Este script genera un árbol espejo del árbol path pero con los archivos vacios. Útil para practicar si quiere obtener el mismo listado de pelis que me sale a mi. No creo que tenga ningun problema en implementarlo. Yo mismo he notado como Python generaba el árbol sin preocuparme de los caracteres extraños que pueden contener los títulos de las pelis. De echo, seguro que la implementación suya le da mil vueltas a la mia, este chaval es un genio.

Comodidad

Hay que partir de la premisa de que los ordenadores son nuestros esclavos y han venido aquí para servirnos y hacer lo que les digamos. Como todo buen informático, soy flojo y esta es una de esas historias en las que se pone de manifiesto como una mente informática trabaja para que el resto del informático no tenga que hacer demasiado esfuerzo.

La cosa es, que en mi PC hace tiempo que murió la lectora de DVD y me quiero comprar una pero aun no he tenido tiempo, así, me gusta ponerme una película mientras hecho la siesta, la pongo con el sonido bajito y la veo mientras dormito. Como no la veo bien (por aquello de cerrar los ojos para dormir) pongo alguna que halla visto muchas veces y me sepa de memoria. La mayoría de mis películas están en soporte óptico…

Afortunadamente, tenemos otro equipo en casa con dos lectores de DVD, yo quería ver una peli que ocupaba dos CDROM, estupendo. Introduzco un CD en cada una de las unidades, se montan solas (esto es magia) y por el scp las copio a mi máquina.

El scp tarda un rato y yo quiero tumbarme ya… No hay problema, la cuestión está en que la lista de reproducción del mplayer no verifica que los archivos que le estás agregando son verdaderamente archivos de vídeo, así, mientras te llega el primer cd por la red, creas un archivo vacío con el titulo de la peli CD2 y lo añades a la lista. Cuando el mplayer termine de reproducir el CD1, saltará al CD2 que a estas alturas ya se habrá copiado dentro del archivo vacío y tu puedes estar tranquilamente durmiendo que tu PC cuidará de ti…

Lo Que Quedaba

Bueno, la última batalla que quedaba con la actualización a Hardy Heron ha sido resuelta. Era el portátil, un Compaq C700, con una tarjeta wifi Broadcom con chipset BCM94311MCG en general 43xx.

El problema ha sido que hay un pequeño bug en la forma en la que el nuevo Ubuntu carga los drivers. El módulo ndiswrapper debe cargar antes que ssb y no lo hacía, así, la tarjeta se controlaba con este último módulo y no con el que debería, el de ndiswrapper.

Para comprobar que módulo carga cada hardware lo hacemos con el comando:

lshw -C [class]

donde class es el tipo de hardware (video, bus, network, etc)

Según Google, hay mucha gente afectada por este problema, para resolverlo puedes empezar por aqui, es un how to para configurar esta tajeta concreta en Hardy (no Gutsy). Si cuando acabas el how to la salida que te muestra lshw es:

# lshw -C network
[…]
module=ssb

entonces tienes el problema, y tienes que seguir este how to. 

Los desarrolladores de Ubuntu trabajan aun para resolver este problema pero se propone una solución temporal para poder disfrutar de este hardware.