miércoles, 26 de agosto de 2009

¿Qué licencia Open Source elijo?

Me llega la hora (por fin :) ) de la entrega de mi proyecto fin de carrera. Lo he llamado GASWED, o Gestor de Actualizaciones Software Web en Entornos Distribuidos. Básicamente consiste en un gestor que, ayudándose de svn (subversion), controla revisión de los distintos ficheros de un proyecto software web en distintos servidores y, además, está orientado a paquetes. Es decir, no trabajamos con ficheros individuales como con svn, sino con paquetes de éstos tales que agrupen alguna funcionalidad (tablón, foros...). Además, cada paquete puede ser importado en distintos servidores o eliminado, llevando asociadas sentencias sql que serán ejecutadas en las bases de datos de cada uno de estos servidores. Sí, prometo una explicación más detallada cuando lo finalize y entregue ;) .

Si tú tambien eres programador y estás desarrollando una aplicación a la que le quieres aplicar una licencia Open Source, seguramente te hayas dado cuenta de que hay muchas opciones. ¿Cuál es la mejor elección a la hora de trabajar con Open Source? Es en lo que trata de ayudarnos un completo artículo en el que un desarrollador ha analizado cada una de las licencias Open Source que existen actualmente.

Shlomi Fish, un joven desarrollador especializado en desarrollos Open Source, ha elaborado un interesante artículo en el cual compara las distintas alternativas que los programadores de Software Libre y Open Source (Free and Open Source Software, FOSS) tienen cuando están trabajando en un nuevo proyecto.

Lo cierto es que este tipo de decisión cada vez es más compleja debido al creciente número de licencias que han ido apareciendo con el paso del tiempo. Aunque la GPL es la más conocida y extendida -sobre todo en su versión 2- en los últimos años distintas organizaciones han propuesto otro tipo de licencias que ofrecían ciertas ventajas con respecto a otras alternativas, de modo que básicamente cada programador disponía de una licencia que más o menos se ajustaba a sus necesidades.

Fish elabora un completo análisis dividiendo el actual segmento de las licencias FOSS en tres grandes grupos:
  1. Licencias de Dominio Público: permiten hacer prácticamente cualquier cosa que te convenga con el software y su código fuente. Ejemplos de estas licencias: licencias BSD, MIT X11, Apache e ISC.
  2. Licencias Copyleft "débiles": este tipo de licencias obligan que el código fuente derivado de estos desarrollos siga usando la misma licencia, aunque uno puede enlazar esa licencia débil e integrarla en un desarrollo global con otra licencia -incuyendo licencias que no son Open Source. Ejemplos: LGPL, Artistic Licence, o la MPL.
  3. Licencias Copyleft "fuertes": parecidas a las anteriores, pero que obligan a que incluso desarrollos que incluyan a código fuente con esa licencia tengan que usar esas licencias, y no otras. Ejemplos: la famosa GPL (tanto en su versión 2 como en su versión 3), o la Sleepycat License.
A partir de ahí Fish realiza una serie de recomendaciones en las que por ejemplo indica que es mejor utilizar licencias compatibles con la GPL, pero que no es buena idea usar las licencias GPL o LGPL porque contienen demasiadas restricciones adicionales al concepto de copyleft. Según su opinión, la licencia MIT X11 es "corta, simple y fácil de comprender", y además es compatible con la GPL.

Personalmente, creo que me voy a decidir por una licencia GPL en su versión 3. Como gustos, colores.

EDITED:
Por fin está el proyecto acabado y entregado. Finalmente me decidí por AGPL v3.

¿Es seguro el DNI electrónico?

ElDNI electrónico es el nuevo carnet de identidad de los españoles. Una de las grandes novedades es la incorporación de un chip que permite realizar operaciones de firma electrónica e identificar a los ciudadanos a través de Internet. El DNI-e sitúa a España en la vanguardia mundial en cuanto a firma digital y permitirá agilizar enormemente muchos de los trámites administrativos que hasta hace bien poco solo podían ser realizados en persona o bien requerían de engorrosos trámites técnico-burocráticos -obtención de un certificado, etc-.

Pero... ¿Son totalmente seguras todas estas operaciones? ¿Están nuestros datos personales totalmente seguros? Un estudio llevado a cabo por PenTest nos demuestra que tenemos que andarnos con mucho ojo. Podemos ver este estudio aquí. No tiene desperdicio.

sábado, 4 de julio de 2009

Empezando con Rails

Bueno, pues ya llevo tres días en el trabajo :) . La verdad es que se está muy agusto, hay un muy buen ambiente de trabajo. Estos tres días los he dedicado a entender la forma de programar que usa rails. Es un poco complejo al principio, pero una vez que empiezas a escribir algo de código esa complejidad se convierte en satisfacción.

Hasta ahora, estaba acostumbrado a programar aplicaciones web con PHP. Con Rails, se tiene una forma de desarrollar aplicaciones con una complejidad alta, seguridad alta, etc. y en no mucho tiempo (seguro menos que con PHP). Con PHP todo está a un nivel de abstracción más bajo. Quizá PHP me ha venido muy bien para aprender sobre el desarrollo web. Con Rails te tienes que subir un nivel más arriba y dar por hecho muchas cosas que Rails se encarga de hacer automáticamente, una vez tienes definido el modelo y controlador correctamente. Aparte de todo esto, Rails usa MVC (Modelo-Vista-Controlador) por lo que a pesar de ser aplicaciones mucho más complejas, son también más claras de leer y más fáciles de mantener. Por ahora, ¡con Rails todo son ventajas!

Cuando ya empieze de verdad con aplicaciones complejas, seguro que me van surgiendo muchas curiosidades para postear por aquí. Hasta entonces, o hasta que tenga otro motivo por el que escribir, bye bye.

miércoles, 24 de junio de 2009

Vuelta al blog

Tras algunos meses de parada, vuelvo de nuevo a escribir en mi blog. Estoy a punto de teminar la carrera de ingeniería informática en la Universidad de Granada. Acabo de encontrar un trabajo. Y ahora que espero tener algo más de tiempo para mí (la carrera es terrible, cuando no hay que estudiar un parcial, tienes que entregar prácticas, y cuando no...exámenes finales! Y cuando parece que tienes un respiro...septiembre!!). Espero no tragarme mis propias palabras, pues dicen que estudiar es mucho mejor que trabajar (lo dice quien trabaja...) pero yo creo que estudiamos para poder trabajar de lo que nos gusta, y bueno, no creo que sea tan terrible.

Voy a entrar a trabajar en una empresa dedicada al desarrollo de software. El 95% del trabajo de la misma es desarrollo de aplicaciones web, usando rails. La verdad que de ruby tengo poca idea... Pero bueno, ahora entraré para aprender el lenguaje y el framework a fondo. Rails es un framework para el desarrollo de aplicaciones web con bases de datos de acuerdo con la estructura modelo-vista-controlador. Supongo que se usará ajax en la vista...bueno, no adelanto acontecimientos que aún me queda mucho que aprender.

Aquí en el blog iré poniendo curiosidades, problemas que me surjan y resuelva, etc. sobre rails. Me parece una buena forma de compartir con vosotros algunos conocimientos que os pueden venir de perlas (si usáis rails...).

¡Espero que os guste e interese todo lo que vaya poniendo por aquí!

lunes, 22 de junio de 2009

Comparativa de uso de memoria entre navegadores

El navegador Firefox de Mozilla Foundation siempre ha sido muy criticado por su enorme consumo de memoria, un problema que parece haber sido resuelto en las vesiones preliminares de Firefox 3.5, que sorprenden por su eficiencia. Me hago eco de una comparativa que analiza este apartado y enfrenta a Firefox 3.5 RC, Google Chrome 3.0 Dev, Safari 4.0 y Opera 10b. Pese a lo que tenía entendido sobre Chrome, parece ser que es el que sale peor parado al menos con respecto a su consumo de memoria.

¿Mejorarán posteriores versiones al igual que lo han hecho para Firefox? Seguro que sí.

martes, 22 de julio de 2008

Spam

Se denomina spam o correo basura a aquellos mensajes no solicitados, habitualmente de tipo publicitario, enviados en grandes cantidades (incluso masivas) que perjudican de alguna o varias maneras al receptor.
Hoy día, contamos con muchos y muy buenos filtros anti-spam. La mayoría de ellos están basados en el texto del email. Se lee de manera automática la cabecera y cuerpo del mensaje y mediante algunas técnicas de clasificación se lleva a cabo de forma automática una clasificación de dicho email (por ejemplo, podría verse el número de veces que aparece la palabra "viagra"). Normalmente, aquel que es considerado como spam viene colocado en una carpeta distinta a la bandeja de entrada, por ejemplo la carpeta spam.

Los spammers han optado por una nueva forma de spam con el objetivo de saltarse los filtros anteriormente comentados. Básicamente consiste en añadir el texto del mensaje a una imagen, y añadir dicha imagen en el email. De esta forma, no habría texto de forma legible según los métodos anteriormente dichos.
Para tratar de solucionar este nuevo problema, existen programas como SpamAssassin (bajo licencia Apache 2.0) que usan otras técnicas para la clasificación. En particular, para el problema anteriormente propuesto, bastaría con usar un OCR y extraer todo el texto de la imagen para posteriormente pasarlo a un clasificador como los anteriormente mencionados.

Pero los spammers han ido más allá. Ahora tratan de ocultar el texto en imágenes y además tratan de ofuscarlo. Es decir, tratan de meter el texto en imágenes y añaden técnicas para que un programa OCR no sea capaz de extraer dicho texto (como puede ser el uso de fondos de colores no uniformes, trazos de lineas por encima del texto, texto cursivo, etc.).
Para ello, en colaboración con el grupo de investigación P.R.A. de la universidad de Cagliari he desarrollado un plugin para el programa SpamAssassin basado en el trabajo que llevan desarrollando bastante tiempo. Básicamente se trata de extraer ciertas características de la imagen (no de extraer el texto) como el número de colores (una imagen de spam normalmente tendrá muchos menos colores que una imagen legítima...) y una vez normalizados los datos y habiendo entrenado previamente un classificador SVM (Support Vector Machine) con kernel RBF (Radial Basis Function) se procede a la clasificación.
Los resultados obtenidos han sido bastante buenos. No solo basta con tener un número alto de aciertos y bajo de fallos, sino que en este caso debemos tratar de minimizar los falsos positivos (clasificar el email como spam siendo legítimo) aunque a costa de ello perdamos eficacia en los falsos negativos (clasificar el email como legítimo siendo SPAM). A ninguno de nosotros nos gustaría que se clasificase como spam un email que no lo es, ¿vedad? Aunque alguno que sí lo sea lo tengamos que borrar de la bandeja de entrada...

Podéis ver más sobre el trabajo realizado aquí.

martes, 1 de julio de 2008

Bug Firefox 3 - Ubuntu

Supongo que a más de uno le habrá pasado o le estará pasando. Cuando intento ver un vídeo en el reproductor flash de Youtube o cualquier otro sitio web, al cargar el vídeo FireFox se cierra automáticamente. Si volvemos a abrir el programa y volvemos a intentar reproducir el vídeo, entonces sí se reproduce sin ningún problema.

En algunos foros he leído que parece ser que hay un paquete, libflashsupport, que está dando problemas. Dicen que basta desinstalarlo y todo volverá a funcionar correctamente. El problema de desinstalar este paquete parece ser que, si tenemos otro programa de audio abierto, no escucharemos el audio del vídeo. Digo parece porque a mí esto no me pasa. Desinstalé el paquete1 y el audio funciona correctamente, aunque sigue el problema del cierre inesperado de FireFox. Mi problema no era ese. Si quieres saber más sobre este bug, puedes ver el siguiente thread.

Según he leído por otros foros, el problema puede solucionarse instalando Flash 10 Beta2. Ésta solución si me ha servido. Por ahora todo perfecto. Se reproduce todo a la primera y no hay cierres inesperados del navegador.

Si tienes este problema y se te soluciona con algunas de las soluciones propuestas, deja un comentario y compartes tu experiencia.

**************************************************
1Para desinstalar dicho paquete solo tienes que irte al gestor de paquetes Synaptic, buscar dicho paquete, marcar para eliminar y aplicar cambios. Si lo que quieres es volver a instalarlo, procede de la misma forma. En el gestor de paquetes Synaptic marca dicho paquete para instalar y aplica cambios.
**************************************************
2Para instalar Flash 10 Beta haremos lo siguiente: eliminaremos el plugin de Flash, si es que está instalado; descargamos y extraemos el Flash Player 10 BETA en tu directorio Home; en caso que no exista, creamos la carpeta de plugins de FireFox; copiamos el plugin Flash hacia la carpeta de FireFox plugins para instalarlo; eliminamos el directorio que que hemos utilizado para descargar el Flash Player Plugin.
Para realizar estos pasos, ejecuta los siguientes comandos en un terminal:

$> sudo apt-get remove flashplugin-nonfree
$> wget -O - http://download.macromedia.com/pub/labs/flashplayer1/flashplayer10_install_linux_051508.tar.gz | tar xz -C ~
$> mkdir ~/.mozilla/plugins/
$> cp ~/install_flash_player_10_linux/libflashplayer.so ~/.mozilla/plugins/libflashplayer.so
$> rm -r ~/install_flash_player_10_linux

Después, reinicia FireFox para habilitar el nuevo plugin.

Si lo que quieres es eliminarlo y volver al plugin anterior:

$> rm ~/.mozilla/plugins/libflashplayer.so
$> sudo apt-get install flashplugin-nonfree

**************************************************