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!

Google Summer of Code 2007

Ayer se publicó la lista de organizaciones mentoras candidatas a presentar proyectos open source al Google Summer of Code de este año. Grandes como KDE, GNOME, OpenOffice, Mozilla, Eclipse, Ubuntu, Fedora… y por supuesto proyectos más modestos como ArgoUML , Plone, InkScape o Drupal… forman parte de la lista de organizaciones aprobadas. Comienza ahora el periodo de inscripción de estudiantes, que durará hasta el día 24 de Marzo. A partir de ahí, Google estudiará las candidaturas con ayuda de las organizaciones mentoras y decidirá quiénes (unos 600 estudiantes de todo el mundo) tendrán el honor de participar en este evento durante el verano del 2007. Aquí he dejado un calendario resumen de lo que acontecerá en este SoC’07.

¡Suerte a todos los participantes (en especial a mis alumnos ;-)!

Diseño gráfico de BBDD con MySLQ Workbench

MySQL WorkbenchMySQL WorkBench formaba parte hasta hace bien poco del grupo de aplicaciones gráficas MySQL GUI Tools para gestión del popular servidor de bases de datos. Basado en fabFORCE DBDesigner4, es una aplicación multi-plataforma, desarrollada por la propia empresa MySQL, para poder gestionar/crear/editar/modificar el esquema entidad/relación de una base de datos. También permite la ingeniería inversa (dada una BBDD, extraer el esquema E/R).

Una de las pegas de Workbench (y de DBDesigner) es que es una aplicación bastante (o muy) inestable. Y debido a esa inestabilidad, y a que el equipo de desarrollo se quiso centrar en MySQL Query Browser y MySQL Administrator durante el año 2006, Workbench desapareció de la suite GUI-Tools.

Sin embargo, en un post de este mes en los foros de MySQL, uno de los ingenieros de desarrollo (Michael Zinner) nos indica que durante el 2007, se centrarán y tomarán como producto estrella precisamente Workbench.

Entre las mejoras en las que se emplearán a fondo, destacar :

* Limpieza y refactorización del código actual
* Actualizar el canvas para basarlo en Cairo
* Restructuración de los repositorios Subversion

Por ahora, no hay ningún binario de Workbench disponible, pero es posible descargar el código fuente desde el repositorio Subversion (svn.mysql.com).