La notificación de eventos en Ubuntu es una de las novedades en las últimas versiones de este sistema, pero yo personalmente no la encajo muy bien. Estás trabajando concentrado, y de repente se cae la red WiFi (muy común en algunas ocasiones), lo cual te genera dos cosas: 1) la insatisfacción de haberte quedado sin Internet y 2) Ubuntu, no contento con ello, te lo recuerda (y en reiteradas ocasiones).
Pues bien, para desahilitarlo tenemos varias opciones, yo os planteo dos, y para ambas abrimos el terminal y con permisos de superusuario:
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.
Con este videotutorial que me encuentro en LifeHacker y usando la distribución BackTrack podremos conocer la vía para romper una clave WEP y acceder a una red protegida.
Se encuentra en inglés, pero no te preocupes que el idioma no es un impedimento si no lo conoces, ya que a través de las capturas e imágenes es bastante atendible y podrás llevar a cabo todos los pasos.
Nota: El equipo de Linux Hispano no promueve las iniciativas vinculadas con el acceso a redes privadas, el videotutorial mostrado se propone para verificar la integridad y seguridad en nuestra propia red, nunca para hacer uso fraudulento de ninguna otra.
Aunque en la entrada de la presentación de Django se habla de la instalación del framework, a través de dos métodos: script install.py e instalación de paquete desde el repositorio; vamos a explicar otro método más, algo más largo pero a la vez más compatible. Nos quita la limitación del paquete de que la versión no sea la más reciente (limitación que no tiene el método de instalación con install.py).
Doy por supuesto que tenéis instalado Python en vuestro equipo.
Nos dirigimos a nuestro directorio $HOME
Descargamos la última revisión del proyecto: svn co http://code.djangoproject.com/svn/django/trunk/ djtrunk
Averiguamos cuál es el directorio en el que Python guarda los paquetes: python -c “from distutils.sysconfig import get_python_lib; print get_python_lib()”
Nos dirigimos al directorio que nos indique y creamos un fichero de nombre django.pth (el fichero podéis crearlo con nano mismo nano django.pth).
En dicho fichero indicamos sólo una línea con el directorio en el que hemos descargado el código de Django (en nuestro caso será /home/miusuario/djtrunk).
Añadimos a la variable PATH la ruta de los binarios de Django:
Editamos el fichero con las variables de entorno /etc/environment
Añadimos a la variable PATH la ruta: PATH=”lo_que_haya_antes: $HOME/djtrunk/djtrunk/django/bin”
Ya podemos probar la instalación de Django. Podéis probar a importar el módulo Django desde Python o podéis probar a crear un sitio y lanzar el servidor de prueba:
django-admin.py startproject misitio
python manage.py runserver
Lanzamos el navegador para escuchar el puerto 8000 del host local: http://localhost:8000
A lo largo de la presentación que adjuntamos en este enlace y con motivo del trabajo voluntario planteado en las prácticas de Programación Avanzada, José Antonio Sánchez Pallero y yo, hemos tratado de transmitir una idea general acerca de Django, el framework libre basado en Python orientado a la creación rápida de aplicaciones web. Al final del mismo y para completar la explicación, presentamos un pequeño ejemplo de desarrollo haciendo uso de esta herramienta.
Toda persona que haya tenido contacto con el desarrollo web, sabrá de los inconvenientes que crean temas como: el control de las entradas del usuario, la interacción con la base de datos, la creación de direcciones amigables para los buscadores (tan necesario para el SEO), la modificación de las estructuras de datos una vez creadas o la definición de distintos roles de permisos para los usuarios del sistema.
Todo este tipo de problemas los soluciona Django de una manera muy intuitiva, con la potencia añadida de un lenguaje tan amable y completo como Python.
A continuación os dejo la presentación y adjunto también capturas de pantalla del ejemplo desarrollado y el código fuente del ejemplo para descargar. Los objetivos y la funcionalidad del ejemplo están comentados en la presentación; la implementación en sí explicada está comentado directamente sobre el código.
Esta entrada es la continuación de la serie Juegos en Linux. Parte 1 y Juegos en Linux. Parte 2. Por lo que os recomiendo su lectura antes de continuar la del presente. Así, pasamos a través de este tercer capítulo a describir detalladamente que opciones de configuración de nuestros sistemas para prepararlos de cara a las pruebas de rendimiento. Linux (Arch Linux) vs Windows 7.
Una de las ventajas de Linux es que existen cientos de distribuciones donde elegir, en esta caso y para la prueba que vamos a realizar vamos a usar Arch Linux (64-bit) por diversas razones. En primer lugar, el sistema base de Arch es bastante reducido y no vienen con paquetes preconfigurados. Esto evitará que nos planteemos si existe algún proceso en background que se esté ejecutando y en consecuencia afectando al rendimiento del juego en las pruebas que vamos a realizar.
En lo que a la prueba en sistemas Windows se refiere, vamos a usar Windows 7 Ultimate, así que vamos a comparar lo último de Linux con la última oferta de Microsoft.
Benchmark en ambos sistemas. Características
A continuación se muestra una lista abreviada de los paquetes relevantes para nuestra prueba en la distribución Arch Linux. Vamos a lanzarlo sobre un escritorio Gnome por defecto, sin Compiz ni efectos similares.
Configuración de paquetes para Arch Linux
En la selección de juegos hemos hecho una mezcla de géneros y fechas de lanzamiento. Proporcionaremos así mismo más información sobre los nuevos lanzamientos testeados en este conjunto de entradas.
Selección de juegos para las pruebas
La mayoría de los juegos incluyen una evaluación comparativa del juego. Corremos cada benchmark tres veces y tomamos la media para los resultados finales. Eve Online requiere de una utilidad para mostrar los frames por segundo (fps), en tal caso nos encontramos con un registro de 180 segundos desde la estación vacía hasta que grabamos los FPS y la abandonamos. Nuevamente nos encontramos con estas pruebas 3 veces y hacemos el promedio de cada una de ellas. Una vez completada la evaluación comparativa, nos hemos tomado la molestia de ejecutar detenidamente y jugar con los juegos con el fin de garantizar la funcionalidad de los mismos o encontrar cualquier defecto.
Los resultados de esta comparativa en la próxima entrada.
¿Por qué escoger este binomio en lugar de XSP? La respuesta es fácil: XSP es un servidor de pruebas, no de producción y si queremos tener un servicio o aplicación web ejecutando de forma decente en producción, mejor utilizar Apache y mod_mono. Las razones no son sólo por la escalabilidad y eficiencia que permite Apache, sino que están relacionadas por la seguridad que provee el servidor más utilizado a nivel mundial y por la gran variedad de opciones que nos ofrece.
De todas maneras sigo pensando que al igual que el servidor de pruebas de Django es útil para las pruebas, XSP es un buen servidor de pruebas para practicar con nuestro PC cuando estemos aprendiendo ASP.NET. Cuando la aplicación se hace compleja y sobre todo queramos pasarla a producción, Apache.
Instalación y configuración
Instalamos:
Apache 2 (si utilizáis sistema de paquetería será algo así como apache2).
Módulo para multiproceso: apache2-mpm-worker.
Módulo de Mono: libapache2-mod-mono.
Interfaz entre Mono y servidor: mono-apache-server.
Reiniciamos el servicio de Apache para que recargue la configuración: sudo /etc/init.d/apache2 restart
Activamos el módulo (a2enmod significa apache2 enable module): sudo a2enmod mod_mono
Vemos qué versión de ASP.NET está activada (lo recomendable es que sea la 2 y no la 1). Para comprobarlo nos dirigimos a: /etc/apache2/mods-available y vemos el ficheromod_mono.conf, debería estar así (comentada con # la primera): #Include /etc/mono-server/mono-server-hosts.conf
Include /etc/mono-server2/mono-server2-hosts.conf
En definitiva, una forma simple de tener un servidor ASP.NET corriendo en nuestro equipo Linux, con software libre y en sólo cuatro pasos. Para tenerlo perfectamente preparado para producción, deberéis de tener en cuenta algunos detalles más propios de Apache, pero la parte específica de Mono es ésta.
Ya me contaréis vuestras impresiones con esta tecnología.
Parece que la noticia ha gustado y lo han colgado de Menéame. Si queréis ya sabéis: menead.