jueves, 4 de febrero de 2010

Eventos del mouse en Eclipse bajo Karmic

Luego de instalar karmic, encontre que la interface grafica de Eclipse no respondia correctamente a los eventos del mouse, por lo tanto, para presionar un boton, debia primero marcarlo con un click y luego presionar barra o enter, bastante molesto por cierto, a la hora de programar.

Casualmente encontre un pequeño workaround para el mismo hasta tanto la gente de Eclipse genere el correspondiente parche, parece ser que bajo 9.10 eclipse no maneja correctamente los eventos de SWT.

la solución, crear el siguiente script, darle permiso de ejecución y utilizar el mismo para arrancar Eclipse.


#!/bin/sh
export GDK_NATIVE_WINDOWS=1
/home/eckenbre/programas/eclipse/eclipse


reemplazar /home/eckenbre/programas/eclipse/eclipse por el path de su eclipse.

Ahora que lo pienso, si agregamos la variable de ambiente GDK_NATIVE_WINDOWS=1 al .profile debería funcionar, lo cual seria una solución mas elegante.

Después lo pruebo, por ahora sigo que tengo que solucionar un tema en producción.

lunes, 9 de noviembre de 2009

Ubuntu 9.10 Karmic Koala ... Up and Running !

La actualizacion de Ubuntu 9.04 a 9.10 por medio del gestor de actualizaciones fue exitosa funcionando todos los programas instalados perfectamente hasta que... por curioso... ejecute el "Encargado de limpieza" pues queria eliminar los kernel's antiguos del sistema, como era de esperar se encontraron varios archivos y los elimine...

Una vez concluida la "limpieza" cai en la cuenta de que el gestor elimina todo aquel paquete que no se haya instalado por medio del synaptic.
En resumen, el Oracle, el IBM open client y demas fue "desinstalado exitosamente"

Al reinstalarlos me encontre con algunos problemas, pero aqui les detallo el workaround correspondiente:

IBM Open Client for Debian:
---------------------------------

fue necesario descargar manualmente e instalar el paquete libkrb53_1.6.dfsg.4~beta1-5ubuntu2_i386.deb

luego, la instalacion se detenia pues no encontraba un archivo de configuracion de gdm,
pero con el siguiente comando se soluciona:

/etc/gdm
sudo cp gdm.conf.dpkg-bak gdm.conf-custom

Con estos dos pasos es posible instalar el OCDC de IBM sin problemas.

Paquetes rotos
------------------

Por algun motivo el paquete de wine quedo corrupto y no era posible instalar nada mas ya que ante cualquier peticion de actualizacion trataba de finalizar la instalacion del mismo.
Una vez agotadas todas las opciones "elegantes" (apt-get con todas sus variantes) decidi hacer cirugia mayor con los siguientes comandos:

# sudo mv /var/lib/dpkg/info/ /var/lib/dpkg/info_moved
# sudo mkdir /var/lib/dpkg/info

Abri Synaptic, reinstale wine

Luego, copio la nueva instalacion y vuelvo todo a su estado inicial con:

# sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/info_moved
# sudo rm /var/lib/dpkg/info
# sudo mv /var/lib/dpkg/info_moved /var/lib/dpkg/info

Este procedimiento es valido para cualquier paquete... no solo para wine.


Conectividad Wifi:
---------------------

Al probar Karmic con Wifi tuve la impresion de que se caia mas frecuentemente que con 9.04
(la señal en mi casa no es muy buena...)
Instale el paquete wicd (el cual reemplaza el network-manager) y la conectividad mejoro sensiblemente.


Espero que esta informacion resulte de utilidad.

miércoles, 30 de septiembre de 2009

Primera experiencia utilizando Pair Programming...

En mi post anterior hable sobre la idea de implementar scrum y XP en mi team con el fin de mejorar la calidad de los entregables, reducir el rework y sobre todo aumentar el foco de los programadores en la tarea realizada ya que estamos trabajando sobre aplicaciones OSS de Telecomunicaciones bastante complejas y desarolladas mayoritariamente por terceros, lo cual implica un trabajo adicional, siendo mas parecido al mantenimiento que al desarollo puro de aplicaciones en si...
(la diferencia entre ambas es un tema amplio y merece un post propio).

Respecto a la implementacion de Scrum, la experiencia es muy positiva mostrando buenos resultados en corto tiempo, pero dada la naturaleza del grupo de trabajo (mantenemos 5 aplicaciones diferentes), promediando el primer sprint decide realizar las reuniones diarias de scrum con c/u de los grupos en lugar de hacer meetings generales, ya que esto le permite a las personas aprovechar mejor el tiempo (... me niego a utilizar la denominacion "recursos" ....)
Creo que la clave, al menos en mi caso, ha sido tomar los fundamentos de la metodologia y adaptarlos a este proyecto en particular...

Ayer tuve la oportunidad de utilizar pair programming por primera vez, en verdad fue una decision de urgencia, pues debiamos de entregar un web service al grupo de testeo si o si para esta mañana y era necesario rehacer gran parte del codigo.
Por lo tanto nos pusimos a trabajar en el, Nacho Barker (programador java todo terreno si los hay) y yo.
Basicamente esta tecnica consiste en programar por parejas, donde una de las personas lleva adelante el rol de "driver" (o encargado de escribir el codigo) y la otra lleva el rol de "observador" o "navegante" (es la encargada de revisar el codigo, fijar la direccion estrategica del trabajo e identificar futuros problemas).
Es recomendable que los roles se intercambien peridicamente o al menos una vez ejecutada la prueba unitaria del programa...
En este caso en particupar no realizamos rotacion pues yo estoy mas familiarizado con la parte funcional y el modelo de datos y Nacho, con la programacion en si.

En la practica pude comprobar que ante un desarollo complejo fue posible reducir el tiempo del mismo, alcanzar un intercambio de ideas productivo que nos permitio superar
rapidamente los cuellos de botella que fueron presentandose y sobre todo, cuando uno de los dos estabamos cansados, el otro siguio adelante con las tareas (estuvimos 30 hs seguidas programando... si.. ya lo se.. no es recomendable para la salud de nadie...)

En resumen, mi primer contacto con Pair Programming resulto un exito y comenzare a utilizarlo en los proximos desarollos que se me presenten

Una tarea pendiente que tengo (ya casi es una necesidad) es la implementacion de tecnicas de TDD (programacion orientada al testeo) y la mejora de las pruebas unitarias...
En cuanto logre algun avanze en ese aspecto les comentare mi experiencia.