18 jun 2009

Ubuntu puesta al día

Por febrero del presente año, de nuevo había escuchado el llamado...Entonces comencé con el Ubuntu 8.10 Intrepid, dejándome un grato sabor de boca.
Hoy cinco meses después toca una puesta al día de mi ubuntesca incursión. Comencemos por el cambio, Sí, cambié de 8.10 intrepid a Ultimate 2.0. ¿La razón? La desconexión.

Como no pude hacer que Ubuntu reconociera mi winmodem, pues no me podía conectar a Internet, como no me podía conectar pues las actualizaciones eran un dolor de cabeza. Navegando por Internet me encontré con el Ubuntu Ultimate Gamers Edition para ser exactos. Desinstalé mi intrepid e instalé la nueva adquisición y "voila!" TODOS los codec de vídeo (lo que más necesitaba) estaban listos y armados. Nada de andar buscando paquetes adicionales ni dependencias. Perfecto!


Después me di cuenta que mi hacía falta los necesarios para ver video rmv pero era un mal menor que puede superar rápidamente. Ahorita puedo ver todos mis capítulos de anime,escuchar mis mp3, tengo mi suite de ofimática (OpenOffice), tengo máquinas virtuales de windows montadas sobre VirtualBox para mi trabajo en .Net todas comunicándose por virual networking, instalados los drivers Nvidia, juego ocasionalmente con el gridwars o Chromium y hasta ocurrió el milagro de poder instalar mi nuevo winmodem (el anterior pasó a mejor vida) este post lo hice desde Ubuntu!

Conclusión: Aunque el cambio es algo brusco y no muy fácil, voy aprendiendo, ya se me va quitando el miedo a la terminal, aunque a veces tengo que hacer una pausa para pensar ¿que estoy haciendo? ya que no se trata de copiar y pegar en la consola si no tratar de entender que estoy haciendo. Sin embargo en términos generales estoy muy satisfecho con el Ultimate, facilita bastante esa transición, aunque aún tengo Windows XP instalado para jugar el COD Modern Warfare :-)

12 jun 2009

Null y DBNull hermanos pero no gemelos

Hace poco me encontré con que este código
Total= (monto_evaluar== null) ? 0 : Convert.ToDecimal(monto_evaluar);
genera el error:

Object cannot be cast from DBNull to other types

Resulta que la variable monto_evaluar estaba declarada como object y ademas se obtenía directamente de un Dataset. Pues bien cuando se hacen cosas como estas hay que tener en mente que desde la base de datos en caso de que el dato este nulo, no se devuelve un null si no un tipo dato DBNull. Ellos son hermanos pero no gemelos, significan prácticamente lo mismo pero son tipos de dato diferentes y, adicionalmente, si un objeto es de tipo DBNull no se puede castear (convertir) en ningún otro tipo ni siquiera para comparar y éste es precisamente el error que se nos muestra.

La línea de código debe quedar como sigue:
Total=(monto_evaluar== System.DBNull.Value) ? 0 : Convert.ToDecimal(monto_evaluar);

De esta forma comparamos utilizando el tipo de dato correcto.