Cambio de Casa

Como algunos han podido notar, he cambiado (nuevamente) de casa. En la migración aproveché la volteada y migré a WordPress 1.5, que realmente mejoró muchos problemas.

Entre algunas de las nuevas características está la posibilidad de usar temas, páginas estáticas y en la parte de administración se dispone de más información y mejor ordenada.

Todavía debo pasar muchas cosas de la web vieja, sobre todo los repositorios darcs, archivos linkeados en post viejos, etc. Pero de apoco voy completando las tareas 🙂

Premios Gardel

Hoy se entregaron los Premios Gardel a la música, como se viene haciendo en los últimos años. Lo vi medio de reojo, y fue aceptable.

El disco de Floricienta ganó el premio al mejor disco infantil (mi sobrina lo ama :-)), y Bersuit Vergarabat ganó el Gardel de Oro este año, además del premio al mejor disco.

Creo que lo que más me gusto, fue cuando Diego Torres cantó «De música ligera» de Soda Stereo, con su letra alternativa «Llamen a Moe, que Larry está en cualquiera» :-D.

XML HTTP con JavaScript

En los últimos meses he tenido que trabajar mucho con Javascript para poder hacer las pantallas del sistema que desarrollo en el trabajo. La idea siempre es tener la menor cantidad de recargas de página posible, por lo menos visibles para el usuario.

Fue por eso que en un momento necesité el find as you type en una caja de texto, y buscando como lo hacía Google pude implementarlo sin problemas.

Luego necesité un poco más, así que me puse a investigar. La solución no es 100% portable, pero solo me interesaba que funcione con IE y Firefox.

Lo primero que vamos a necesitar es el objeto que se encarga de la comunicación. Como varía con el navegador, crearemos una función :

function getXMLHTTP(){
  var A=null;
  try{
    A=new ActiveXObject("Msxml2.XMLHTTP")
  }catch(e){
    try{
      A=new ActiveXObject("Microsoft.XMLHTTP")
    } catch(oc){
      A=null
    }
  }
  if(!A && typeof XMLHttpRequest != "undefined") {
    A=new XMLHttpRequest()
  }
  if (!A) {
    alert ('No XML-HTTP Capable Browser!');
  }
  return A
}

La función va probando crear el objeto XML HTTP. Si fallan todos los métodos, lanza una alerta y retorna NULL.

Para obtener datos de un script remoto es muy simple, el siguiente código lo muestra :

function saludar () {
  nombre = document.getElementById('nombre');
 _xml = getXMLHTTP();
  if (_xml) {
    _xml.open("GET", "/saludar.php?nombre="+nombre.value, true);
    _xml.onreadystatechange=function() {
      if(_xml.readyState==4&&_xml.responseText) {
        if(_xml.responseText.charAt(0)!="< "){
          eval(_xml.responseText)
        }
      }
    }
    _xml.send(null);
  } else {
    alert('XML HTTP NOT SUPPORTED');
  }
}

Bien, analicemos lo que hace nuestra función. Lo primero es obtener el INPUT del formulario donde el usuario ingresa el nombre (estoy suponiendo que existe). Luego de obtener el objeto XML HTTP y verificar que existe, abrimos una conexión GET al URL especificado (tengan en cuenta que esto todavía no realiza el GET, solo setea lo que vamos a hacer).

Lo importante viene ahora en _xml.onreadystatechange=function() . Lo que hacemos es asignar al slot onreadystatechange una función que se encarga de recibir los datos que llegan. En nuestro caso, la función verifica el estado, para ver si fue exitoso, y saltea las líneas que comienzan con «< «, quedandose solo con el contenido plano, el cual pasa a la función eval que ejecuta ese string como si fuera código JavaScript.

Por último, para realizar la acción, llamamos al método Send.

Por el lado de PHP, necesitamos el script saludar.php :

  echo "alert('Hola ".$_REQUEST['nombre'].", como va?');";

Pueden probar este ejemplo acá. La verdad es que da para jugar mucho. También les recomiendo el código de Google para hacer el autocomplete, que es muy ingenioso (pueden encontrarlo googleando en varios blogs).

Migración exitosa …

Desde el viernes por la tarde hasta hace algunas horas estuvimos con Sebastián ajustando detalles, migrando información y cerrando bugs en lo que fue la implantación del nuevo sistema de emisión de pólizas de seguro en mi trabajo.

La tarea fue larga, anotar mucho para no olvidarse las cosas, luchar contra la falta de voluntad de algunos pocos, pero con la ayuda de muchos con muy buena onda y ganas de progresar y tener un sistema más completo y que ande :-).

El trabajo no se terminó, quedan requerimientos por completar, en su mayoría ya están en desarrollo y a lo largo del mes serán completados.

El sistema fue hecho con herramientas libres en su totalidad, corre sobre un Debian, y el código es GPL, todos aspectos que nos llenan de orgullo :-).

El anuncio oficial de prensa pueden leerlo acá, con declaraciones mias incluídas :-D.

911: Emergencias Urbanas

Volviendo hoy a casa en Retino conseguí una copia del diario La Razón, que se distribuye gratuitamente. Una noticia me llamó la atención : la implementación del número telefónico 911 para realizar llamadas en casos de emergencia, como tienen los del norte.

El nuevo número funcionará a partir de mañana en 34 nuevos distritos del Gran Buenos Aires.

Buscando en Google News, encontré una noticia en formato digital en DiarioHoy. Según los números que dan en la noticia, reciben unas 21000 llamadas diarias, aunque lamentablemente el 60% llamadas en broma, pruebas o cortan apenas los atienden. Esperemos que una vez en la vida esta sociedad de mierda en la que debemos vivir todos los días, aprenda y le den el uso que se merece, y también espero que no lleguemos a este punto.

Otra referencia interesante acá.

Fotos Panorámicas

Las fotos panorámicas son algo que siempre me llamó la atención, y desde que tengo la cámara digital tenía ganas de hacerlas, y en lo posible entender como es la magia detrás de todo esto.

Pues bien, luego de más de una semana he logrado hacerlo. La imagen en cuestión es la vista desde el balcón del Hostel donde nos hospedamos en Rosario. Para poder realizarlo primero procesé las fotos con AutoPano-Sift, un programa hecho en Mono que se encarga de analizar las fotos y buscar los puntos comunes donde se supone que encajan. Es un programa bastante interesante, usa mucho Octave para hacer algunos cálculos matemáticos e implementa el algoritmo de detección Sift, creado y publicado por David Lowe de la University of British Columbia (Lamentablemente el link del README no existe).

Una vez generados los puntos necesitamos un programa para terminar el trabajo. Yo utilicé Hugin, que me costó entender bastante en un principio, pero luego de saber donde tocar sale con fritas … El resultado de todo mi trabajo:

Vista desde el balcón

Hay 2 fotos que salieron con una iluminación diferente. Con el programa se pueden hacer ajustes, pero no tenía mucho tiempo para ponerme a jugar, veré de hacerlo para la próxima.

Pueden ver los pasos previos acá, acá, acá, acá y acá 🙂

Viaje a Rosario

Este fin de semana que pasó estuvimos en Rosario con los chicos del LUGFI. En principio la idea era ir a la charla de Marcelo Tosatti en el evento Crisol, pero como no pudo venir, solo pasamos unos minutos para saludar algunos amigos y luego nos dedicamos a ser turistas :-).

El viaje estuvo lindo, hicimos de todo un poco. Nos juntamos en una estación de servicio del kilómetro 92, y de ahí partimos en 3 autos todos juntos, comunicándonos con los handis de Sebastián.

Llegamos pasada las 12 AM. Luego de sufrir las incoherentes numeraciones de las calles :-), encontramos el Hostel. Nos acomodamos y luego fuimos a almorzar.

A la tarde primero pasamos, como ya dije, a saludar por Crisol, fueron unos 10 minutos. Luego comimos un helado y paseamos por la peatonal de Rosario, hasta llegar al monumento a la bandera. Ahí descubrimos 2 cosas :

  • Que tocaba una banda llamada «Los Bitle» con una orquesta
  • Que Marga se enoja con los monumentos fálicos 😀

Por la noche no hubo mucho quorum para salir, estaban todos en abuelas, así que solo salimos con Tincho a tomar una cerveza (que en realidad fueron 2), luego de un intento frustrado por encontrar unos pubs que nos habían recomendado.

A las 12 del domingo ya estabamos todos arriba, se hicieron compras para hacer un asado y el dueño del hostel se ofreció a hacerlo, así podíamos ir a la Feria de las Pulgas de la ciudad, donde vimos muchas cosas y muy viejas :-). El asado a las 14hs estuvo mortal y muy rico, comimos y nos preparamos para partir.

Fuimos al centro a ver si podíamos comprar Merengos, sin éxito, pues estaban los locales cerrados :-(, así que nos conformamos con un helado.

La salida de Rosario fue un poco tormentosa, Marga salió adelante (creo que no quería , no se cómo terminó ahí :-)), y ya desde la primer curva, saliendo de la estación de servicio, le erró a todo camino que habíamos mirado :-D. Finalmente salimos, pero fue muy divertido ver como estábamos perdidos :-P.

A las 23hs de ayer, ya estaba en casa preparándome para descansar del viaje.

Hay fotos y videitos para todos los gustos. Espero en estos días subirlas.

Update: : Ya están las fotos del viaje a Rosario!

Se los debía …

Como había comentado en mi post anterior, hay muchas novedades en todos los campos.

Facultad

Finalmente terminé la época de exámenes, y aunque no pude rendir Modelos I como tenía planeado por las idioteces de la gente de Estructuras de las Organizaciones, el balance fue positivo.

El próximo lunes empieza otro cuatrimestre, donde se decide que orientación seguiré. Me gustaría seguir Distribuidos, pero después de toooooodo lo que me dijeron sobre la docente de Introducción a Sistemas distribuídos y que ella da la mayor parte de la orientación, me sacan las ganas :-). Cursaré Intro y después veré a mitad de año que hacer.

Oregano

Finalmente luego de un par de meses peleándome con el PageManager que pretendía agregarle al programa, lo abandoné. Las razones son, por un lado, el diseño actual es un desastre y el hack requiere un refactoring de medio programa. La segunda razón es que ya estoy trabajando en la nueva y moderna versión del Oregano utilizando Mono como plataforma y C# como lenguaje.

Lo más importante en lo que trabajo es el widget Canvas, para reemplazar a GnomeCanvas, solo que en este caso es un Canvas minimalista, para dibujar componentes y no genérico como lo es el otro. Tendré código disponible muy pronto en mis repositorios Darcs, y en el GForge cuando tengamos alternativas a CVS 🙂

Gnome

Ya desde que probé Gnome 2.9 compilado desde CVS se veía bien. La integración que están logrando es excelente, y cuando el equiop de reducción de uso de memoria realmente avance en su trabajo, creo que será un desktop con pocas cosas que criticarle :-).

Lo que más me sorprendió del ya lanzado Gnome 2.10 fue el nuevo ítem del menú contextual de Nautilus : «Share Folder». Teniendo instalado Samba y/o NFS, uno puede compartir una carpeta con solo 3 clicks. Algo que en mi trabajo, donde Windows todavía reina, es bastante cómodo. La opción de editar el archivo de configuración de Samba sigue vigente, así que los ñoños pueden seguir contentos también 😛

Un poco más …