OpenOffice Draw y UML

En varias de mis asignaturas necesito crear diagramas UML, en concreto diagramas de clases y de secuencia. Existen varias herramientas disponibles bajo licencia abierta para estos menesteres, como ArgoUML, Umbrello o DIA, pero personalmente, por un lado me gusta trabajar y adaptar OpenOffice.org a mis necesidades, y por otro, no me gusta salir del “entorno” OpenOffice para realizar otras tareas. Además, OOo Draw me permite crear filigranas que otras las otras herramientas mencionadas no soportan. No soy el único al que le interesa crear diagramas UML en OOo, y de hecho, en el Bugzilla de esta suite ofimática he encontrado un bug con una solución parcial a lo que yo busco: una serie de flechas en OOo Draw para representar los distintos tipos de relaciones entre clases en un diagrama de clases UML.

Por mi parte, dejo aquí otro enlace con mi aportación: un Diagrama de Secuencia hecho en OOo Draw. Como lo que el resto de colegas aprovechará serán los elementos gráficos y no el texto, seguro que no os importa que el texto del diagrama esté en Euskera y que el propio diagrama sea un borrador 🙂 Estoy seguro de que aquel que busque una plantilla para comenzar a crear diagramas UML en OOo Draw, agradecerá lo que ofrezco.

MySQL Administrator en Ubuntu

MySQL Administrator es una aplicación de código abierto para gestionar el servidor de base de datos MySQL de forma gráfica. En general, tras instalarla con apt-get install mysql-admin, funciona bien, pero tiene una gran pega: al pinchar en Gestión de Usuarios la aplicación se queda colgada. Es un bug del que se está quejando mucha gente según el BugZilla de Ubuntu. Y por supuesto, alguien ha dado con un parche que permite usar esta funcionalidad de gestión de usuarios de forma gráfica (menos mal ! ) :

$ export DEBUG_DONT_SPAWN_FETCHES=1
$ mysql-admin

RetailMeNot: cupones de descuento que funcionan

Este post no tiene mucho que ver con el software libre, pero creo que a muchos de los administradores de sistemas que hagan compras online (por ejemplo, renovación de dominios) les interesará.   Hace  tiempo que uso el servicio BugMeNot.com para entrar en webs restringidas por login y password. No es que el login y el password sean de pago, no, basta con registrarte en la web en cuestión, de forma gratuita, para que te asignen un login y un password con el que poder leer el contenido restringido. Pero a veces, rellenar los formularios de alta es un auténtico infierno (preguntas interminables, datos personales, incompatibilidad con Firefox… etc, etc.) y aquí es donde entra BugMeNot.com, una web donde los usuarios dan de alta sus login/password gratuitos (y normalmente con info falsa) para que los podamos reutilizar SIN la necesidad de darnos de alta en la web en cuestión. Es decir, una especie de reutilización de personalidades. “Muy útil, pero ¿qué tiene eso que ver con el título de este post?” se preguntará algún avispado lector.

La respuesta es que BugMeNot y RetailMeNot son dos servicios ideados y realizados por la misma persona. Y ambos son muy muy interesantes y útiles. RetailMeNot se basa en la misma idea que BugMeNot: la gente dona gratuitamente información que vamos a poder reutilizar en nuestro beneficio. En este caso (RetailMeNot), la información donada es: códigos de cupones de descuento.

No lo había probado hasta hoy, pero al ir a renovar el nombre de dominio de uno de mis servidores,  en GoDaddy.com, he visto que me solicitaba, en caso de tenerlo, un código de descuento. Se me ha ocurrido consultar en RetailMeNot,  ¡y he encontrado un cupón que funciona! El descuento me ha permitido rebajar 2 euros a mi cuenta, que no es mucho, pero he pasado de tener que pagar 9 euros a sólo 7 por una renovación de un .com.   Gracias a GoDaddy y a RetailMeNot. Que os aproveche.

Intel 3945ABG en Ubuntu Dapper

Estoy usando EHUX 2.0 , la distro Linux de la UPV/EHU basada en Ubuntu Dapper, en mi nuevo portátil (el viejo murió hace 4 días 🙁 El caso es que no podía conectarme a la wifi de casa, porque entre los dispositivos de red sólo aparecía la tarjeta Ethernet.

Sin embargo, si lanzaba el comando dmesg | grep ipw sí que me aparecía la tarjeta :

root@morton:~# dmesg | grep ipw
[17179584.112000] ipw3945: Intel(R) PRO/Wireless 3945 Network Connection driver for Linux, 1.0.5m
[17179584.112000] ipw3945: Copyright(c) 2003-2006 Intel Corporation
[17179584.112000] ipw3945: Detected Intel PRO/Wireless 3945ABG Network Connection
[17179585.572000] ipw3945: Detected geography ABG (13 802.11bg channels, 23 802.11a channels)

También veía que los módulos necesarios estaban cargados:

root@morton:~# lsmod | grep ipw
ipw3945 126620 1
ieee80211 37064 1 ipw3945

Pero tras instalar network-manager-gnome con apt-get, en el icono del mismo, sólo veía la red cableada, sin ninguna posibilidad de usar la wireless.

Indagando por distintos foros, y tras unas cuantas pruebas, parece ser que sólo me faltaba una cosa por instalar para que la Intel 3945ABG funcionara: el paquete linux-resticted-modules.

# apt-get install linux-restricted-modules-$(uname -r)

Ahora escribo este mensaje desde el sillón de mi casa, conectado por wifi !

Descarga de páginas web con wget

A partir de este mes, estaré inmerso en un trabajo de investigación y desarrollo para obtener mi título de “suficiencia investigadora”. Más adelante comentaré en detalle cuál es el objetivo y en qué consiste este trabajo, pero durante una temporada, escribiré aquí sobre distintas herramientas open-source que integraré en la herramienta final que quiero conseguir como “prueba de concepto”. Una de las herramientas en las que me basaré es el conocido GNU Wget, una utilidad para la descarga no-interactiva de ficheros web. Soporta los protocolos http, https y ftp, así como el uso de proxys http.

Veamos algunas de las más importantes opciones de este versátil comando:

-r Descarga recursiva. Sin más parámetros se seguirán todos los enlaces para descargar de forma masiva todo un site.
-l # : Profundidad de descarga # (cuántos niveles de enlaces se deben seguir)
-x : crear estructura de directorios en el disco duro mapeando la estructura de carpetas del servidor web
-np: (no-parent) al descargar de forma recursiva, no seguir los enlaces que lleven a niveles superiores al inicial en la estructura de carpetas
– N : time-stamping. Esta opción es una de las más importantes si tu intención es descargar periodicamente cierta web y traerte sólo las actualizaciones ocurridas desde la última descarga. Es decir, con esta opción conseguiremos una actualización incremental, con lo que no sólo se ahorra en ancho de banda, ¡sino también en tiempo! Un fichero se marcará para descarga si se cumple alguna de las siguientes condiciones: 1. no tenemos ya un fichero local con el mismo nombre que el archivo a descargar y 2) existe un fichero con el mismo nmbre, pero el archivo remoto fue modificado más recientemente que el local. Para implementar esas condiciones, debemos de conocer la fecha de última modificación tanto del fichero local como del remoto. Esta información se conoce como time-stamps.

Según la documentación, Wget se fija también en cambios en el tamaño del archivo. En caso de diferencia entre el tamaño local y remoto, se descargará el fichero, independientemente de la fecha del time-stamp.

– P : directorio prefijo, es decir, el directorio local de destino a partir del cual se guardarán todos los ficheros remotos que descarguemos. Por defecto es . (el directorio actual).–cookies=on : activar el uso de cookies. Algunas páginas sólo permiten ser visitadas si nuestro navegador dispone de ciertas cookies (generalmente, estas cookies se instalan en una página inicial de login. A partir de ahí, con el login correcto y las cookies cargadas, podremos visitar/descargar cualquier otra página)

–load-cookies=cookie_file : acompaña a la opción anterior. cookie_file es el nombre del fichero de donde wget leerá las cookies que enviará al servidor en cada petición.

–save-cookies=cookie_file : precede o acompaña a la anterior. Con esta opción, podremos visitar una página y guardar sus cookies (las cookies de la página visitada) en nuestro fichero local cookie_file.

–timeout=# : fija un tiempo de # segundos de espera. Si se cumple ese tiempo sin haber conseguido acceder al fichero web remoto, la conexión se dará por terminada. Es equivalente a especificar –dns-timeout, –connect-timeout, y –read-timeout, con un valor #.

Por defecto, wget fija el valor de –read-timeout a 900 segundos. Si ponemos un timeout de 0, deshabilitaremos todos los valores de espera (de timeout).

-R patrón : indica que no queremos descargar ningún fichero cuyo nombre case con el patrón especificado. Por ejemplo -“R aif,au,avi,class,gif,java,jpg,mid,mov,mp3,mpeg,mpg,png,ram,rm,swf,wmv,zip” evitaría la descarga de los ficheros gráficos, de vídeo y música asociados a una página web que estemos descargando.

-o fichero.log : guarda un log de toda la actividad de GNU Wget en el fichero fichero.log.

En DevArticles.com podemos leer un artículo con ejemplos básicos de utilización de algunas de las opciones mencionadas.

Y si queremos experimentar con todas sus posibles opciones por nosotros mismos, en la Universidad de Cornell han preparado un circuito de páginas con distintas opciones y enlaces, para probar GNU Wget y otros web spider. Que os divirtáis!