Gnome, VNC y Virtual Box (apuntes)

Instalación remota (SSH) de Gnome,  VNC (Virtual Network Computing) Server y Virtual Box en  CentOS

Este tengo que revisarlo pues parece que es el oficial:

http://wiki.centos.org/HowTos/VNC-Server  (aqui dice tambien como instalar gnome)

Instalacion de los fuentes del kernel, esto hará falta para instalar el driver de VirtualBox:

http://wiki.centos.org/HowTos/I_need_the_Kernel_Source

Lo resolvi siguiendo mas o menos estos pasos:

http://www.linuxquestions.org/questions/linux-desktop-74/latest-version-of-virtualbox-kernel-errors-on-centos-5-i386-645991/

Instalacion de VirtualBox

http://www.if-not-true-then-false.com/2010/install-virtualbox-with-yum-on-fedora-centos-red-hat-rhel/
http://wiki.centos.org/HowTos/Virtualization/VirtualBox 

Clientes VNC para Windows:

http://www.tightvnc.com/download.php
http://www.realvnc.com/products/free/4.1/winvncviewer.html 

=============================================

CentOS 6.3

Instalacion de Gnome a partir de una instalación minima

yum groupinstall “X Window System” “Desktop” “Desktop Platform” “Base”
http://alexcline.net/2012/06/15/installing-gnome-in-centos-6-minimal/

Instalación de UnixODBC y el driver de MySQL en CentOS

Descargar la última versión de los fuentes de http://www.unixodbc.org/ , en el momento de este post ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.1.tar.gz  y descomprimir:

tar xzvf unixODBC-2.3.1.tar.gz
cd  /usr/local/src/unixODBC-2.3.1
./configure
make
make install

Por defecto no se instala el driver para MySQL, para hacerlo:

yum install mysql-connector-odbc

Para mostrar la configuración de ODBC:

odbcinst -j

/etc/odbcinst.ini contiene los drivers en el sistema, en este caso PostgreSQL y MySQL:

[PostgreSQL]
Description=ODBC for PostgreSQL
Driver=/usr/lib/libodbcpsql.so
Setup=/usr/lib/libodbcpsqlS.so
FileUsage=1

[MySQL]
Description=ODBC for MySQL
Driver=/usr/lib/libmyodbc3.so
Setup=/usr/lib/libodbcmyS.so
FileUsage=1
UsageCount=1

/etc/odbc.ini contiene los DSN de sistema, ejemplo:

[test]
Description=Test database
Trace=Off
TraceFile=stderr
Driver=MySQL
SERVER=localhost
USER=root
PASSWORD=password
PORT=3306
DATABASE=test

Para instalar los drivers:

odbcinst -i -d -f /etc/odbcinst.ini

Para instalar los DSN de sistema: (cada vez que se adicione uno nuevo hay que instalarlo asi)

odbcinst -i -s -l -f /etc/odbc.ini

Para listar las fuentes de datos:

odbcinst -s -q

y para probar la conexion:

isql -v test root password

Fechas, malditas fechas

Este flash viene con dedicatoria a mi socio Inge, el cual vive traumatizado con el manejo de las fechas.

Desde que la computación trascendió la barrera del idioma inglés han surgido nuevos retos para los que hacemos programas multilingües.  El fenómeno se conoce como internacionalización y localización (abreviado i18n).  Uno de sus aspectos es el tratamiento de las fechas de acuerdo a su representación en diferentes regiones; he visto programas colapsar dramáticamente debido a la asunción de un formato específico de fecha.  Aunque los motores actuales de bases de datos también cuentan con herramientas para i18n, es práctica común almacenar los datos en un formato específico y centrar los esfuerzos en la interfaz de usuario.  Pero ello requiere el dominio de las herramientas que proporcionan los lenguajes de programación para la conversión entre los formatos de datos en su recorrido bidireccional entre el punto de almacenamiento (memoria, base de datos, archivo de texto, etc) <-> procesamiento <-> interfaz de usuario.

Siguiendo con las fechas, C# cuenta con una función muy útil para convertir cadenas de caracteres que contienen fechas en un formato predeterminado a variables DateTime de .NET:  DateTime.ParseExact().  El gran problema con las fechas consiste en su variedad de representaciones con la consiguiente ambiguedad, ej.

  • Mes – Dia – Año
  • Mes / Día / Año
  • Dia / Mes / Año
  • Febrero 14, 2011
  • 3 / 4 / 2011  puede ser 3 de abril ó 4 de marzo en dependencia de si usamos formato español o norteamericano.
  • etc

Pues bien, ParseExact( ) permite que le indiquemos exactamente cual es el formato esperado, imagine Ud los problemas que pudiera traer confundir el mes con el día !!!  Su documentación completa se puede encontrar en http://msdn.microsoft.com/es-es/library/w2sa9yss.aspx.  A modo de resumen, acepta como parámetros una cadena que debe contener una fecha, una segunda cadena que especifica en qué formato esta esa fecha, y un objeto IFormatProvider.  Vista hace fe, veamos el siguiente ejemplo:

Obtenemos de una base de datos una cadena que contiene una fecha (fecha_original) en formato estándar Mes/Dia/Año y debemos calcular una fecha de expiración de 5 meses después y devolver el resultado nuevamente como cadena:

CultureInfo provider = CultureInfo.InvariantCulture;
DateTime fecha_original_datetime = DateTime.ParseExact(fecha_original, "M/d/yyyy", provider);
string fecha_expiracion = DateTime.Now.AddMonths(5).ToString("M/d/yyyy");

Note que la conversión inversa se realiza con la función ToString( ) y un parámetro que también especifica el formato deseado.  Los formatos pueden ser predeterminados de .NET (http://msdn.microsoft.com/es-es/library/az4se3k1.aspx) o definidos por nosotros según las reglas en http://msdn.microsoft.com/es-es/library/8kb3ddd4.aspx .  Ojo pues como su nombre lo indica, los formatos deben ser EXACTOS, no es lo mismo dia 01 que día 1.

Fácil cierto?  Feliz programación con fechas 🙂