lunes, 31 de diciembre de 2007

Menos borrachines con licencia de conducir


Qué excelente noticia. Es cuestión de dar una vuelta por Curicó para darse cuenta que están regalando las licencias. La rebaja a la mitad del nivel máximo aceptable del alcotest me parece notable.

A mí, que sólo tengo problemas en la visión del ojo izquierdo (compensado con lentes), me han dado sólo un año de licencia (cuando la vez anterior había renovado por 4 años y sin lentes!!!), este es un negocio más de la "Ilustre Municipalidad de Curicó S.A".

Entiendo que ahora don Celso ampliará su giro a la "Cámara de Diputados Ltda.", así que en una de esas llega un alcalde que se preocupe de arreglar todos los hoyos de Curicó (incluído el cráter de la bodega de Multihogar) y no sólo aquellos más visibles del centro de la ciudad...

Actualización: Don Celso había prometido 20 minutos de show pirotécnico para el año nuevo curicano y con suerte fueron sólo 10... La otra mitad se quedó "en el bolsillo" y la prensa es cómplice.

martes, 6 de noviembre de 2007

En pedir no hay engaño...

Esta es una lista de software que me gustaría tener a disposición en la Universidad donde trabajo, obviamente todo hecho por alumnos y bajo alguna licencia de software libre:

  • Software para laboratorios de computación que permita a los estudiantes "salir a la pizarra" sin moverse de su estación de trabajo. Me explico, la idea sería disponer de software tipo pizarra compartida (que puede ser vía servidor web, como en ScreenStream) donde el profesor pueda plantear un ejercicio (en este caso de programación) y poder mostrar a todos (mediante la conexión de un equipo principal a un datashow) cómo el alumno aborda la resolución del problema.

  • Software para programación on-line, donde a cada alumno se le asignaría un nombre de usuario y clave y pueda encontrar un entorno de programación simple pero en línea (como en TopCoder). El objetivo es realizar un seguimiento de las horas que dedica cada alumno a ejercitación de la asignatura de programación. Que provea alguna herramienta de comunicación (chat) para poder además concordar sesiones guiadas de programación para uno o varios alumnos.

  • Por último, estoy convencido de que una forma de motivar el aprendizaje de programación en los primeros años de educación superior es mediante el uso de videojuegos. Me gustaría un software tipo ColoBot, donde los alumnos puedan aprender los conceptos básicos de programación (y porqué no, algunos avanzados) de una manera gráfica atractiva (preferentemente 3D).

sábado, 1 de septiembre de 2007

Script Simple para Reconectar ADSL

La necesidad:
Teléfonica CTC (Terra) cambia a diario la dirección IP para mi conexión ADSL (vivarachos!), lo que produce la pérdida de la conexión a Internet. En Windows, existen herramientas para volver a conectar en estos casos. En Linux podemos crear un script muy simple para lograr esto.

Materiales:
Una distribución Linux (IMO, OpenSUSE es lejos la mejor... [sobretodo con KDE]).
Una conexión a Internet utilizando ppp.
Permisos de superusuario (no obligatorio).

Primero, utilizaremos el editor de texto de nuestra elección para crear el script que llamaré reconnectAdsl.sh:

pico reconnectAdsl.sh

Y agregaremos las siguientes líneas:
#!/bin/bash
#
#Script que pregunta el estado de la conexión dsl y
#la reconecta si está off
#

estado=$(ifstatus dsl0 | grep interface)
off="interface dsl0 is down"
if [ "$estado" = "$off" ]; then
ifup dsl0
echo "Conectando..."
date > horaReconexión.txt
else
echo "Está conectado..."
fi


Guardamos los cambios y le damos permiso de ejecución:

chmod +x reconnectAdsl.sh

El funcionamiento del script es el siguiente: El comando ifstatus dsl0 | grep interface nos da como resultado el estado de la conexión ADSL (pueden ser dos "interface dsl0 is down" o "interface dsl0 is up"). Almacenamos el resultado en la variable "estado". Luego creamos una variable "off" que contiene el texto que corresponde a desconectado y comparamos las cadenas. Si el "estado" actual es igual al estado "off" (desconectado) entonces simplemente conectamos (ifup dsl0); de lo contrario damos el mensaje de que ya estamos conectados.

Podemos probar el script desconectando la conexión ADSL (ifdown dsl0, como root) y ejecutándolo.

Normalmente mi proveedor de Internet cambia mi IP a distintas horas que no puedo o no nos interesa predecir. Entonces lo que debemos hacer es que nuestro script se ejecute a intervalos razonables de tiempo. Para esto, como administrador (root) copiaremos nuestro script al directorio /etc/cron.hourly/ y de esta forma el script se ejecutará a cada hora.

Y eso es todo! Claro que podemos mejorar mucho el script (como siempre), por ejemplo yo he agregado la sentencia cat date > horaDeDesconexión.txt para saber a qué hora se produjo la desconexión y, si es en intervalos predecibles (digamos todos los días a las 4.00 AM), entonces mejoro mi script para se ejecute a esa hora solamente y no a cada hora.

Nota: El nombre de la conexión ADSL (dsl0 en mi caso) puede variar según tu distribución y el número de conexiones que tengas (es dsl0 con un cero, no una O).

miércoles, 4 de julio de 2007

Movidas políticas

Existen por lo menos 43 muy buenas razones para que Fujimori se quede en Perú.
ペルーのFujimori の滞在へ最少の43 のよい理由がある。

viernes, 22 de junio de 2007

Recibir e-mail en el celular desde el PC vía bluetooth

Primero, el parche antes de la herida: No soy un experto en shell así que reconozco que mi solución no debe ser la más elegante. Pero bueno.

La necesidad era la siguiente: Quería recibir notificaciones de correo electrónico a mi teléfono móvil a través de bluetooth. Por ejemplo, normalmente dejo el PC de escritorio encendido las 24 horas del día y si en algún momento me encuentro alejado de mi escritorio y recibo un e-mail, me gustaría saber de antemano si vale la pena acercarme al escritorio para atenderlo o no. Busqué por internet y no encontré nada similar así que me puse a picar.

Materiales:

El primer paso es averiguar la dirección MAC de nuestro teléfono y el canal por el cuál podemos enviar las notificaciones. El paquete bluez-utils incluye una herramienta que nos puede ayudar. Conectamos nuestro adaptador bluetooth al computador, habilitamos la conexión bluetooth en el móvil y abrimos una consola de comandos y ponemos:
sdptool search OPUSH
Lo que nos devolverá algo como esto:
Inquiring ...
Searching for OPUSH on 00:02:EE:6D:ED:1A ...
Service Name: OBEX Object Push
Service RecHandle: 0x10016
Service Class ID List:
"OBEX Object Push" (0x1105)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 9
"OBEX" (0x0008)
Language Base Attr List:
code_ISO639: 0x454e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"OBEX Object Push" (0x1105)
Version: 0x0100

En negrita encontrarán la MAC y el canal respectivamente.
Luego, con el comando obex_test (que encontramos en el paquete openobex-apps) podemos hacer una prueba para enviar un archivo a nuestro celular, le damos como parámetros la MAC y el canal, de esta forma (en negrita aparece lo que el usuario ingresa):

obex_test -b 00:02:EE:6D:ED:1A 9
Using Bluetooth RFCOMM transport
OBEX Interactive test client/server.
> c
Connect OK!
Version: 0x10. Flags: 0x00
> p
PUT file (local, remote)> /pics/tux.jpg tux.jpg
name=/pics/tux.jpg, size=15811
Going to send 15811 bytes
Made some progress...
Made some progress...
Made some progress...
PUT successful!
> q

En este ejemplo, se ha enviado al teléfono la imagen tux.jpg que se encuentra en /pics/.
Hecho con éxito estos pasos, procedemos a descargarnos un script que nos permita hacer todo este trámite en una sola línea de comando. Este script se llama obexsend.sh y lo pueden descargar de aquí.
obexsend.sh espera como parámetros la dirección MAC, el canal y el archivo a enviar:

obexsend.sh 00:02:EE:6D:ED:1A 9 imagen.jpg

Ahora, creamos el siguiente script (reemplazando donde sea necesario) que yo llamé SendBluetoothAlert.sh:

#! /bin/sh
cd ~/inbox/
name=$(ls -tr |tail -1 |awk '{print $NF}')
from=$(grep -i -e from: $name)
subject=$(grep -i -e subject: $name)
rm /home/francisco/NewMail.txt
x1=$(echo "$from" | tee /home/francisco/NewMail.txt)
x2=$(echo "$subject" | tee -a /home/francisco/NewMail.txt)
/home/francisco/bin/obexsend.sh 00:02:EE:6D:ED:1A 9 /home/francisco/NewMail.txt

Ahora explicaré qué hace cada línea para que lo adapten a su medida.

Primero, nos posicionamos en el directorio donde Kmail almacena los mails:
cd /home/francisco/.kde/share/apps/kmail/mail/inbox/cur/

Almacenamos el nombre del archivo más reciente que existe en el directorio (el email nuevo):
name=$(ls -tr |tail -1 |awk '{print $NF}')

A partir de este archivo, creamos dos variables que almacenen el remitente y el asunto del e-mail:
from=$(grep -i -e from: $name)
subject=$(grep -i -e subject: $name)

Borramos nuestro archivo NewMail.txt que es el que enviaremos por bluetooth para "vaciarlo":
rm /home/francisco/NewMail.txt

Agregamos los campos remitente y asunto a nuestro archivo NewMail.txt:
x1=$(echo "$from" | tee /home/francisco/NewMail.txt)
x2=$(echo "$subject" | tee -a /home/francisco/NewMail.txt)


Finalmente enviamos el archivo NewMail.txt a nuestro móvil utilizando obexsend.sh (esta es una sola línea):
/home/francisco/bin/obexsend.sh 00:02:EE:6D:ED:1A 9 /home/francisco/NewMail.txt

Otorgamos permisos de ejecución a nuestro script: chmod +x SendBluetoothAlert.sh y estamos casi listos. Ahora vamos a la sección de notificaciones de Kmail y elegimos que ejecute nuestro script cada vez que tengamos un nuevo e-mail.

Eso es todo. Esto lo hice en una tarde y no creo que vuelva a trabajar en este tema pero aún falta mucho por mejorar:
  • Si llega un mail y estamos fuera del alcance del móvil (normalmente 20 metros); perdimos. Hay que implementar un sistema de cola y/o de reintentos.
  • Si se descargan dos nuevos mails del servidor, probablemente se notifique sólo del más reciente (no he probado ese caso aún).

Referencia:
1. Obtener MAC y canal de transmisión de datos, Duane Odom.

miércoles, 6 de junio de 2007

Navegando en OpenSUSE


Utilizo FireFox (FF) hace bastante tiempo y los últimos 2 meses he estado probando Opera.
La verdad es que Opera es un browser espectacular y eso que debo estar utilizando la mitad de las funcionalidades. Las funciones de Opera que más me acomodan son:
  • Wand (para múltiples logins en un mismo sitio sobretodo)
  • Mouse gestures incorporados de fábrica.
  • Buscadores personalizados.
  • El nivel de personalización de barras y botones.
  • Agregar widgets y themes sin tener que reiniciar el navegador.
Es cierto que algunas funciones las encuentro en FF en forma de Complementos, pero la verdad es que el rendimiento de Opera en OpenSUSE es perceptiblemente superior a FF (tanto con la versión tar.gz de Mozilla, como con el RPM de OpenSUSE).

Cuando he extrañado algo de FF en Opera; googleando he encontrado la alternativa existente en Opera:
  • Buscaba una forma de realizar búsquedas dentro de las páginas (Control-F en FF): Encontré la barra de vistas de Opera que me agregaba el campo, pero que no funcionaba con Control-F, busqué un poco más y apareció el atajo de teclado ".". Perfecto.
  • Una alternativa al complemento NeedleSearch de FF: El buscador integrado puede personalizarse.
  • El botón "Ir" ("Go") de FF: Arrastrar el mismo botón desde el gestor de apariencia de Opera.
La parte fea:
  • El bajo soporte de los servicios Google (Calendar, Docs, etc.).
  • Sitios chilenos como BancoEstado, SantanderSantiago, SII a duras penas soportan FireFox, así que menos queda para Opera (incluso llegué a instalar IEs4Linux!).
  • Hay un bug que me ha molestado un par de veces cuando presiono Control-T para crear una pestaña y se crean montones de ellas, causando el bloqueo del navegador.
  • Me habría gustado que el traductor en el menú desplegable abriera en un nuevo tab sin tener que mantener Shift presionado.
  • El puntero de selección de enlaces debería estar disponible aún cuando la página no ha terminado de cargar (no sé si me explico en esto).
  • Ahora mismo estoy presionando el botón "Agregar Imagen" de Blogger y Opera no reacciona :(
  • Peor aún, estoy tratando de presionar el botón "Guardar Ahora" de Blogger para poder postear desde Firefox y Opera no quiere nada. Y eso que agregué el script java para dar soporte a los servicios Google!!!
  • Finalmente este post fue publicado usando FireFox :(

jueves, 24 de mayo de 2007

Migrando (o arrancando)


Varios años atrás, tuve mi primer encuentro con GNU/Linux: Un Red Hat 7.3. Luego de probar otras distros, finalmente me quedo con OpenSuSE. En mi opinión es una distro con bastante visión de "saber cómo" facilitar la vida a los usuarios que migran desde Windows.

En estos momentos publico desde mi equipo de escritorio con OpenSuSE 10.2 configurado sin mayores complicaciones y sólo he necesitado volver a Windows para hacer algunas maldades (K9Copy se cae intermitentemente).

En estos momentos estoy trabajando dictando una cátedra de Programación para estudiantes de ingeniería y todas las labores académicas las he realizado desde OpenSuSE. A saber:

Las clases las hago con OpenOffice Impress utilizando una plantilla muy vistosa (en realidad, cualquier plantilla que sea distinta a las que trae PowerPoint por defecto es vistosa) que yo mismo diseñé para el curso utililizando Gimp.

Hacer esta simple pero original plantilla me ha tomado 5 minutos con Gimp.

Una vez terminada la clase, simplemente la exporto a PDF (one-click only) para presentarla en clases.

Para las clases prácticas (laboratorios) utilizo BlueJ, la cuál es una excelente herramienta para enseñar a programar OO usando Java (lejos mi favorito por sobre todos).

Los alumnos utilizan la versión para Windows de BlueJ y no hay diferencias.

Las notas de las pruebas y laboratorios las llevo en una planilla Calc de OpenOffice y a la hora de publicar notas, nuevamente one-click only para generar el PDF.

Finalmente, para lograr la inspiración necesaria para crear las clases: Amarok y Last.fm.

Si tienes alguna duda con respecto a OpenSuSE estaré dispuesto a ayudarte, en la medida que el tiempo me lo permita.

PS: No podía dejar de mencionar que OpenSuSE+Beryl+nVidia+SyncMaster 940nw wide 19'' = Felicidad Geek.

lunes, 2 de abril de 2007

Defensa de Memoria

El pasado jueves 29 de marzo, hice la defensa de mi Memoria de Título a las 19:30 horas, transmitiendo en "vivo y en directo" a Australia donde se encuentra mi profesor guía.

Despues de mucho lidiar con este proyecto (qué vaya que se extendió!), finalmente he podido dar vuelta la página y pasar a una nueva etapa de mi vida: La llegada al mundo laboral.

El título de mi proyecto es "Desarrollo de un software de detección de fraude para IBM WebSphere Commerce" y mi defensa fue evaluada con nota 6,9 (en escala de 1,0 a 7,0), lo que no está nada mal para vago como yo.

Pero el objetivo de este post es publicar la página de agradecimientos de mi informe. Aquí va:

"Quisiera agradecer a las personas que participaron en las pruebas de software, tanto a nivel nacional como internacional:

  • Alexis Aguiluz (Chile).
  • Cristian Arroyo (Chile).
  • Emilia Belleboni (España).
  • Daniel Britos (Argentina).
  • Ximena Dahlborn (Suecia).
  • Cristián Díaz (Chile).
  • Ricardo Núñez (España).
  • Manuel Pineda (Chile).
  • Alex Rojas (Chile).

A los profesores que me aconsejaron y guiaron durante mi carrera:

  • Per Bj. Bro.
  • Alfredo Candia.
  • Narciso Cerpa.
  • Federico Meza.

A Marcela Pacheco de la Secretaría de Escuela de Ingeniería Civil en Computación, Alejandro San Martín de la Administración del Área Informática del Campus Curicó. Al personal administrativo, auxiliar y de seguridad de la Facultad de Ingeniería y en general, a todas las personas que con su esfuerzo logran hacer funcionar nuestra Facultad.

A todos ellos; muchas gracias."

sábado, 17 de marzo de 2007

Soñar no cuesta nada...

En mi opinión, o era El Mortero o El Gurú.
...sería fantástico...

PS: Los medios insisten en llamarlo "autodenominado Gurú". Gurú lo denominamos nosotros, el público, a través de los e-mails cuando conducía su programa en La Red. Junto con otras denominaciones como Guerrero, Monje Shaolín, Saiyajin, Gokú...
Real Time Web Analytics