-->

“Pa” donde va linux?

January 27th, 2009

Pues desgraciadamente las cosas están así:
http://www.google.com/trends?q=linux&ctab=0&geo=all&date=all&sort=0

Tampoco están bien para los puristas:
http://www.google.com/trends?q=gnu&ctab=0&geo=all&date=all&sort=0



Pero tranquilos, aunque las “noticias” van a menos, es que ahora se le llama las cosas por su nombre, y al ser así:
http://www.google.com/trends?q=ubuntu&ctab=0&geo=all&date=all&sort=0
http://www.google.com/trends?q=xandros&ctab=0&geo=all&date=all&sort=0
http://www.google.com/trends?q=redhat&ctab=0&geo=all&date=all&sort=0

Creo que antes se le llamaba a todo gnu/linux como “linux”, y ahora al llamar cada cosa por su nombre la cosa se ramifica:
http://www.linux-es.org/files/distribuciones_en_el_tiempo.png

Y es que poca gente he oido hablar de linux en la ps3, a los pocos que hablan del tema dicen, “yellow dog para ps3″.

-->

Este post es para aquellos que usan el escritorio movistar bajo linux (¿y quizás exista un problema similar en windows o mac?) y se han encontrado que en el 2009 no pueden conectar con su ordenador conectado al módem o al móvil.

Algo a lo que no están acostumbrados los usuarios de windows es a tener el código fuente de todo,si algo falla, se buscan otro programa o esperan un tiempo a que el autor mejore el programa. Teniendo conocimientos básicos de programación y el código fuente es cuestión de minutos el que uno mismo se corrija el problema.

En estos días de vacaciones no es extraño que todos estemos un poco desconectado de los ordenador, y en mi caso, esto no es distinto. Tan solo usar emails y leer algún blog desde el móvil, sin portátil y poco mas. A un par de días de regreso de mis vacaciones, me da por coger el portátil y no puedo conectar con el “escritorio movistar”.

Intento conectar utilizando el “escritorio movistar”, y compruebo que no hace nada, así que lo ejecuto desde línea de comandos ($escritorio-movistar) para ver si crea alguna traza, líneas de log o similar, y entre muchísimas lineas se ve al fín, lo que interesa:

Traceback (most recent call last):
  File "/usr/bin/MSDesktop.py", line 71, in 
    main()
  File “/usr/bin/MSDesktop.py”, line 65, in main
    x = MSD.MSDMainWindow()
  File “/usr/lib/python2.5/site-packages/MSD/MSDMainWindow.py”, line 164, in __init__
    self.consum_manager = MSD.MSDConsumManager(self.mcontroller, self.main_stats, self.consum,self.MSDConf)
  File “/usr/lib/python2.5/site-packages/MSD/MSDConsumManager.py”, line 130, in __init__
    self.__clean_needed()
  File “/usr/lib/python2.5/site-packages/MSD/MSDConsumManager.py”, line 763, in __clean_needed
    ciclo_date = datetime.datetime(ciclo_y, ciclo_m, ciclo_d)
ValueError: month must be in 1..12
emtraffic_Traffic: Traffic object destroyed.
emtraffic_Traffic: Traffic object destroyed.

No soy programador de python, pero es conocido que son los ficheros .py, que son y como modificarlo, apuesto a que no hay que ser un entendido para corregir el error, así que hago copia del fichero /usr/lib/python2.5/site-packages/MSD/MSDConsumManager.py y me dispongo a corregir el problema.

Al parecer “ciclo_m” a veces toma el valor “0″, pero los únicos valores correctos son del “1″ al “12″… No hay que investir el problema, tan solo mirar que hay en la línea 763 y sus alrededores, el original es esto:

757         if today_d >= ciclo_d :
758             ciclo_m = today_m
759         else:
760             ciclo_m = today_m - 1
761
762         last_date = datetime.datetime(last_resumen_y, last_resumen_m, last_resumen_d)
763         ciclo_date = datetime.datetime(ciclo_y, ciclo_m, ciclo_d)

Ni me pregunto si se hacen cálculos mas arriba en el código. Tan solo me aseguro que cuando ciclo_m va a ser “0″ , este sea “1″ antes de utilizarlo, y a vivir. El código queda así:

757        if today_d >= ciclo_d :
758             ciclo_m = today_m
759         else:
760             ciclo_m = today_m - 1
761
762         if ciclo_m == 0 :
763             ciclo_m = 1
764
765
766         last_date = datetime.datetime(last_resumen_y, last_resumen_m, last_resumen_d)
767         ciclo_date = datetime.datetime(ciclo_y, ciclo_m, ciclo_d)

Supongo que es igual de fácil, realizar los cambios si se usa otra versión de python, o hay una instalación ligeramente diferente.

EDITO: Me comentan que desde ayer los de movilforum ya tienen corregido el error. Son muy rápidos, eso está genial, pero cuando tu única conexión es el 3G del móvil, es imposible que te informes de ello, ya que paradojicamente, para eso necesitas una conexión a internet. Por eso, a todos los que tenemos conocimientos de programación, nos viene bien tener el código fuente disponible. Por mi parte, ya estoy usando el ADSL de casa. :-)