domingo, 4 de enero de 2009

Autopsia al código fuente del Zune

El pasado 28 de diciembre (día de los inocentes para más narices) se produjo lo que muchos dieron en llamar La muerte del Zune. Según aparece en diversos blogs, los Zunes de Microsoft dejaron de funcionar. Poco días más tarde, FayerWayer publicó un post titulado Autopsia al código fuente de Zune revela orden de suicidio donde, mediante un pantallazo de parte del código fuente del Zune (en teoría) averiguaron las causas del problema. La imagen es la siguiente:



Al parecer, el problema está en el cálculo del año ya que al entrar en el bucle (la lína 259) llegamos a la línea 263 (if (days>366)). ¿Y cual es el problema? Pues que el año 2008 es bisiesto y tiene 366 días en lugar de los 365 habituales, con los que entramos en un bucle infinito y por consiguiente, la muerte del Zune.

En otros blogs, como el de alt1040 publicaron las instrucciones pararesucitar a tu Zune, si que si eres uno de los afectados, allí puedes encontrar la manera de hacer que vuelva a la vida.

Es curioso ver como este error con las fechas (que suele ser bastante habitual, por cierto) aparece de vez en cuando como ejemplo de los errores que este tipo de cuestiones pueden causar en los programas de ordenador (por desgracia me he topado con este problema alguna que otra vez). Los años bisiestos, los cambios de hora o el famoso segundo de más que ha tenido el año 2008 son grandes quebraderos de cabeza para los informáticos. Además, no es fácil "acordarse" que existen años bisiestos cuando estás escribiendo código y tienes en la cabeza un montón de cuestiones más. Siempre hay que tener en cuenta todas estas cuestiones mientras se está tirando código, por muy pequeña o tonta que parezca, porque puede que el día de mañana sea esa tontería que no tuviste en cuenta (total, ¿nunca se va a dar?) sea la causante de un error en tu programa. No hagas como todos aquellos que pensaron que el año 2000 no iba a llegar nunca.

1 comentario:

Ludovico dijo...

El problema de los años bisiestos no es que se despisten los programadores; es que como tienen contratos demierda que no durarán cuatro años, cuando llegue el año bisiesto no estarán en la empresa.
Y NO HAY MAS