Introducción

Ya que no hay demasiado documentación de Mono en la red y creo que es una alternativa muy válida para muchos proyectos, voy a seguir publicando más tutoriales y tips sobre este tema.

Mi intención hoy es comentar cómo referenciar el conector de MySQL dentro de un proyecto de Mono con MonoDevelop, de forma que podamos utilizarlo con la arquitectura y las funcionalidades de ADO.NET para manejar datos con un servidor de base de datos MySQL. El conector os valdrá tanto para aplicaciones web como locales.

Si no conocéis ADO.NET os recomiendo que os leáis el artículo al que os referencio de la Wikipedia porque realmente es una arquitectura muy útil para el manejo de datos, aunque los más puristas la rechazarán por venir de Microsoft.

Instalación

Lo primero será estar seguros de que tenemos instalados Mono, MonoDevelop y que tenemos a nuestro alcance un servidor de MySQL al que conectarnos. Si no lo tenéis instalados podéis instarlo prácticamente seguro desde vuestro gestor de paquetes y en todo caso, desde la web oficial del Proyecto Mono. Una vez hecho esto descargaremos el conector desde este enlace en la web de MySQL. Elegimos la plataforma: “.NET & Mono”. Se os descargará un fichero dll con los ensamblados correspondientes.

Referencia dentro de un proyecto

Ahora nos dirigimos a Mono Develop y creamos una solución nueva (da igual si de consola o GTK#). Al crearse la solución nos dirigimos a las Referencias del proyecto y desde allí importamos el ensamblado. Para ello seleccionáis  “Editar referencias…”. De las tres opciones que aparecen en el diálogo entramos en “Ensamblado .NET”, elegimos el fichero dll que acabamos de descargar y lo añadimos.

Prueba

Para terminar vamos a probar que todo está bien. En el Main.cs vamos a implementar el típico ¡Hola Mundo!, añadiéndole al comienzo una referencia al conector. Si compila correctamente hemos llegado a nuestro objetivo.

using System;
using MySql.Data.MySqlClient; 

namespace ejemplo_mono_ado
{
	class MainClass
	{
		public static void Main(string[] args)
		{
			Console.WriteLine("Hello World!");
		}
	}
}

En un futuro post explicaré más sobre el uso y la potencia de esta herramienta.

La posibilidad de generar valores automáticos para nuestras claves primarias gracias a la propiedad: AUTO_INCREMENT presente en muchos sistemas gestores de bases de datos modernos, es además de cómodo, seguro para quien lo implementa.

Sin embargo, en caso de borrar todos los datos de una tabla y volver a introducirlos, el valor del campo con AUTO_INCREMENT activado, en lugar de empezar desde 1, seguirá con la cuenta anterior. Esto es un detalle sin mucha importancia en algunos casos, pero que en algunas implementaciones puede dar problemas. Imaginemos una tabla con 10 registros con valores para su clave primaria numérica comprendidos entre 65 y 74. Sería por lo menos raro.

¿Cómo solucionarlo en MySQL? Simplemente deberemos ejecutar:

ALTER TABLE nombre_tabla AUTO_INCREMENT = 1

Y este problema habrá desaparecido. Si queréis optar por rellenar los valores “a mano” siempre os quedará la posibilidad de indicar el valor del campo de forma explícita, aunque sea un valor que se auto incremente.

JAVA

No sé si os ha pasado en alguna ocasión, que cuando estáis utilizando algún código Javascript de un tercero, ya sea de algún plugin, framework, etc. o cualquier código que estéis utilizando, aparece en una sola línea, mal tabulado o con una sintaxis un tanto difusa. Si queréis tratar dicho código y manejarlo, porque queráis ampliarlo o algo por estilo y no encontráis una versión para desarrolladores que sea más legible, la mejor solución es utilizar un formateador de Javascript.

El formateador que os recomiendo Felgall Pty Ltd una compañía australiana creada por Stephen Chapman and Elaine Bell que lo pone a disposición pública a través de la aplicación web que os acabo de indicar. El uso es directo, copiamos el código al cuadro de texto y le damos a Format. Paso seguido ya tendremos en la parte inferior todo el código formateado y con la sintaxis resaltada.

Por cierto, antes de terminar, comentaros que no siempre enredar el código de esa manera que os cuento arriba, es para evitar ocultarlo (con aplicaciones de este tipo es inútil realizar ese trabajo), sino para ahorrar por ejemplo caracteres como ‘\n’ o por otras razones que puedan hacer al intérprete de Javascript o a la transmisión del código hasta el cliente más rápidas.

Interesante entrada de Checho explicando los pasos a seguir para solucionar el error cuando realizamos un commit indebido.

Cómo revertir un commit errado en Subversion por Checho.

Existen muchas maneras de matar un proceso si sólo sabes el nombre del proceso. Aquí se supone que el proceso se llama ‘programa’, sólo tienes que cambiarlo por el nombre del proceso que quieras eliminar. Aquí están las posibilidades:

 killall -v programa

 pkill programa

 kill $(pgrep programa) 

 kill `ps -ef | grep programa | grep -v grep | awk ‘{print $2}’`

Estas técnicas pueden ser útiles en los scripts para el shell en donde puedes no saber el ID del proceso y necesitas eliminarlo por su nombre.

Probablemente en alguna ocasión hayáis necesitado rotar texto en algún sitio web. La opción que os traigo hoy para este problema, utiliza CSS, por lo que se integra a la perfección en cualquier tipo de sitio y es perfectamente compatible con los navegadores más populares de la actualidad: Mozilla Firefox (y familia Gecko), Google Chrome/Chromium (y familia WebKit) e incluso Internet Explorer (aunque de una manera menos directa).

Las reglas CSS a incluir son las siguientes (rotación de -90º o 270º):
-webkit-transform: rotate(-90deg);
-moz-transform: rotate(-90deg);
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);

El tip original ha aparecido en unos de mi blog favoritos de diseño web, Gloobs.

Abre una ventana de terminal de consola y escribe los siguientes comandos:

sudo mkdir /media/iso

sudo modprobe loop
sudo mount filename.iso /media/iso -t iso9660 -o loop

Ahora deberías ser capaz de ver en la carpeta /media/iso los contenidos de la imagen ISO. Si quieres desmontar la imagen ISO ejecuta lo siguiente:

sudo umount /media/iso

Para instalar Apache 2, ejecuta en el terminal de tu consola:

sudo apt-get install apache2

Para comprobar que funciona perfectamente ejecuta:

sudo /etc/init.d/apache2 restart

Ubuntu a veces no define el nombre del servidor para Apache así que es bueno que lo hagamos. Edita apache2.conf:

sudo gedit /etc/apache2/apache2.conf

y añade esta línea:

ServerName "your-server-name"

que debería ir cerca a esta línea:

ServerRoot "/etc/apache2"

En realidad no necesitaremos este nombre del servidor pero vale la pena para evitar que Apache escupa advertencias en cada reinicio.

Para comprobar que todo está en orden entra desde un navegador a:

http://localhost