Resumen de Google Dev Fest 2009

La gente de google con las camisetas de la selección
Como prometí les traigo un resumen de Google Dev Fest, el evento estuvo muy entretenido ya que la gente de Google está muy acostumbrada a este tipo de eventos, y van relajados y saben llevar a la audiencia, son fanaticos de los productos de Google, hicieron muchos comentarios positivos (muchos, como cuando algo te gusta).
Como contra, especialmente para los que no entienden muy bien el inglés, la charla de casi todos los integrantes del staff fue en inglés.
Como pro atendieron muy bien a la audiencia con breaks entre las charlas que fueron acompañadas de medialunas, pastafrola, lemon pie, café, coca cola, fanta y agua. Al mediodia se lucieron con unas empanadas excelentes como para continuar las charlas con los colegas en el pasillo. Las charlas tuvieron el clasico toque geek, algo técnicas por momentos, fueron muy bien explicadas, a la vez que hubo muchas preguntas por parte de los participantes y eso hizo que las charlas se fueran desfasando en el tiempo con respecto al cronograma, con lo que los dos tracks terminaron casi cerca de las 18.
Como puntos muy positivos fue la buena predisposición y las explicaciones fueron muy didácticas, más allá del clásico error en la demo... ¿A quién no le pasó?
En la foto de la derecha explican el procesamiento en tiempo real de imágenes y videos utilizando HTML5 y CSS 3 que aún no es soportado por Internet Explorer. La verdad que nos volaron la mente con lo nuevo y ahí estamos.
La gente de sumavisos.com explicó como habían usado Wave para sus charlas y seguian algunas cosas del proyecto ahí, presentaron un robot que te tira info en la ventana donde estás escribiendo de pendiendo de la charla, claro que tenés que invitar al robot.
También estuvo la gente de Globant que explicó como implementaron OpenSocial en el ambiente empresarial y como las redes sociales se van sumando al mundo corporativo.
Por último si les interesa pueden ver más fotos y videos de Google DevFest 2009 acá.
La verdad que se viene Chrome y Android, por el simple hecho que programar es más fácil en estas dos plataformas.
No puedo esperar a presentarme en el próximo Google DevFest 2010 y para los que se lo perdieron no lo duden e incríbanse en el próximo!
Expresiones regulares para tontos
Las expresiones regulares son un misterio para la mayoría de los desarrolladores, cuando uno se encuentra con una en medio del código, no importa el lenguaje de programación que se use, uno suele quedarse con los ojos abiertos de par en par como diciendo WTF*. Yo en lo que va de mi historia como programador detecté algunos usos comunes de estos jeroglíficos:
- Para filtrar una string (el uso mas viejo)
- Para validar un campo de un formulario (muy usado en ajax)
- Para parsear** páginas web completa con un webspyder (muy usado hoy en día por las famosas páginas que trajo la web 2.0 que hacen minería de datos por las diferentes páginas de la web para juntar toda la información en una sóla página casos famosos confronte.com, buscape.com, entre otros ).
He pasado por eso varias veces, y por esto quisiera aliviarles el trabajo de entender una expresión regular compleja, y lo voy a hacer con un breve pero efectivo ejemplo. Esto es una expresion regular:
//Expresion regular de ejemplo (<a href=\"http:\/\/m\.facebook\.com\/.*?>([^<]+)<\/a>(.*?))<small> - (.*?)<\/small>.*?id=(\d+)&story_fbid=(\d+).*?<a href=\"(.*?)>
Vieron, yo les dije que se iban a quedar con la boca abierta. En fin, esta regular expresion aunque no lo crean parsea la siguiente página de Facebook: http://m.facebook.com/stories.php?raf2da235&tab=3&refid=7 y obtiene los siguientes datos:
- URL
- Nombre de usuario
- Mensaje del usuario (de tipo status)
- Fecha de inserción
- Id de usuario
- Id de mensaje
- URL para postear un "me gusta"
Bueno, la solución es conseguir un software que nos ayude a comprende (y hasta a armar) expresiones regulares sin tener que conocer a fondo la sintaxis. En mi caso voy a destacar RegexBuddy, una excelente herramienta. En las capturas pueden ver como muestra los resultados de nuestra expresión regular y como identifica cada comando dentro de la expresión regular.
En esta primera captura pueden ver como se extrae toda la información que mencioné antes. En la ventana que dice "Test" lo único que hice fue pegar el código fuente de la página que estoy queriendo parsear. Esta expresión regular escrita en PHP (basada en PERL) extrae todos los datos que se encuentran entre paréntesis, en la captura pueden ver como estan resaltados los paréntesis en verde.
Otra funcionalidad muy potente de la herramienta es el analizador de tokens que figura en la opción "Create" y que identifica y explica el significado de cada carácter. La opción "Library" que no figura en las capturas trae una biblioteca de expresiones regulares comunes, entre ellas, como detectar un email, como detectar una fecha en un formato determinado, como detectar un nro de documento, tarjeta de crédito, código postal, tag de html, etc. Mi conclusión es, pierdanle el miedo de una vez a las expresiones regulares, son muy potentes y no son tan complejas como parecen a simple vista.
*What the fuck?
**Parsear: De inglés Parser, se traduce como analizador sintáctico, pieza de software que puede detectar y extraer información dentro de documentos de texto.
Google DevFest 2009 Argentina

Se viene el Google DevFest para los amantes del gigante, será el 17 de Noviembre de 2009, de 9 a 20, en "Paseo La Plaza", salas Pablo Picasso y Pablo Neruda donde seguramente haya muchas de las cosas nuevas de google, además de charlas informativas más que interesantes.
Van a estar la gente de Globant, gente de Palermo Valley y obviamente varios de los craneos de Google, así que estaremos esperando con ansias que nos confirmen.
Va a haber varias charlas distribuidas en las 11 horas, organizadas en dos "Tracks", el Track 1 que está más orientado al desarrollo y las herramientas y los títulos son Geo Web, Android y HTML 5/Chrome, en el Track 2 las charlas son Cloud Computing, Development Tools (50% orientado a Google Wave), y Social Web.
Es con inscripción previa, así que vayan reservando sus lugares, pueden inscribirse ingresando en https://sites.google.com/a/mazalan.com.ar/devfest/home. Yo voy a ir así que les voy a estar contando, en los próximos posts.
Espero sus comentarios!
Matias Perrone
Argentina y el huso horario
Gracias clase política por complicarle la vida a todo el mundo con sus indesiciones. A la madrugada del domingo, todas las computadoras configuradas con la zona horaria de Argentina (ARST) y con el horario de verano activo sufrieron un adelantamiento de hora, esto no debería haber sido un problema, salvo que a último minuto al gobierno se le ocurrió arrepentirse de realizar el cambio.
Solucion en windows: Desactivar el horario de verano en sus computadoras.
Solucion en linux: Cambiar la zona horaria de Buenos Aires (ARST) por la de otra ciudad, ej. Rio Gallegos (ART). O conseguir el parche de la zona horaria de Buenos Aires y reemplazar el archivo.
Primeros pasos con graficos Annotated Timeline
A veces entro a Yahoo Finance para ver como se mueve el mercado, ultimamente tengo el bichito de curiosidad de como evolucionan las empresas y como reaccionan ante algún suceso. Después entro al Google Finance, y finalmente me quedo ahí un rato mucho mas largo. ¿Porqué? Por el hermoso grafico que sin recargar la página (al mejor estilo web 2.0) nos permite remontarnos a la historia de las empresas desde que se hicieron públicas. ¿Que permite esta maravilla? Son los gráficos de tipo Annotated Timeline que yo los llamaría los gráficos del momento ya que son una forma nueva de representar algo que ya se hacía. Porqué "annotated", porque una de las características geniales que posee es poner anotaciones relacionadas con algún suceso ocurrido en la fecha que produjo un cambio de conducta en el gráfico (en realidad en la gente, en el grafico se ve reflejado). Veamos un ejemplo:
Aqui pueden ver lo que digo. Ya se estan imaginando las aplicaciones, no? Es fantastico este gráfico para seguir la evolucion en el tiempo de lo que queramos! Ya sean variables de negocio o de sistemas.
Cual es el truco? El truco está en los datos, y esto no lo resuelve el gráfico, uno tiene que alimentar la planilla de información, a mi me interesa saber la información de ayer con la mismo detalle que un día de un año atras? Por supuesto que no, los datos de ayer son mucho mas importantes y los datos de un año atrás con tener un promedio del dia o de la semana suele alcanzar. Entonces uno tiene que alimentar el gráfico con el detalle de datos que a uno le interese, doy un ejemplo:
- Ultima semana: Resolucion x minuto
- Ultimo mes: Resolucion x hora
- Ultimo año: Resolucion x día
- Ultima decada: Resolucion x mes
Cuando uno haga zoom, según el período que marquemos vamos a poder ver mas o menos detalle de la información. Y si por ejemplo yo hago zoom desde hace 3 años hasta el ultimo día, el gráfico realiza promedios de la información mas detallada que no llega a graficar por la resolución. Como ven, la tarea pesada es lograr obtener la información de esta forma de la base de datos. Una buena práctica es regenerar una planilla CSV o Excel todas las noches mediante un proceso.
¿Qué opciones hay en el mercado?, si buscan por internet algo podrán encontrar, yo me quedo con la que implementó la gente de amCharts que está muy bien lograda tanto visualmente como las opciones de carga de datos que aunque ellos le llaman StockCharts, es el mismo tipo de gráfico.
Google también abrió a la comunidad developer una versión de su producto dentro de la Visualization API, que me resultó un poco mas compleja de utilizar, pero también les dejo el link para que experimenten por su cuenta: http://code.google.com/intl/es-AR/apis/visualization/documentation/gallery/annotatedtimeline.html
Espero sus comentarios!
Santiago Cattaneo
Poder capturar las alarmas de nuestras aplicaciones desde una herramienta de soporte
Uno de los problemas típicos de los desarrolladores es qué hacer cuando algo no anda bien con nuestra aplicación que está corriendo en producción, todos aprendimos a usar el famoso try-catch, algunos mas expertos hasta aprendieron a usar el try-catch-finally, pero la pregunta es ¿dónde van a parar estas alarmas?. Muchas veces terminan en un log que nadie mira hasta que se llena el disco o la otra alternativa es hacer spam a alguna casilla de mail del personal de soporte que seguramente ya puso una regla en su lector de correos para que no le ensucie la bandeja de entrada.
Una muy buena práctica que suelo utilizar frente a dicha situación es incorporar en el código una clase que se ocupe del logueo pero que permita configurar la salida dinámicamente, lo cual permite que no tengamos que recompilar cada vez que queremos hacer un cambio de donde queremos guardar la información de logueo. En .NET particularmente el componente mas famoso es Log4Net (de Apache Fundation), también está para que puedan elegir NLOG que no es de una empresa tan reconocida en el medio pero tiene características muy potentes.
El siguiente paso es armar bien la estructura de try-catch, lo mas importante es que solo la clase de nivel superior llame al objeto de Log4Net para generar la salida, y que los try-catch de las clases mas bajas en el stack de llamados eleven una excepción mas detallada del problema a la clase superior, como pueden ver en el ejemplo.
Ejemplo:
//clase superior
try
{
subclass.dosomething();
}
catch(MyException ex)
{
Logger.Error(ex);
}
catch(Exception ex)
{
Logger.Error(ex);
}
//subclass - Method dosomething()
try
{
Todo.Something();
}
catch(Exception ex)
{
throw new MyException("estamos en el horno", ex);
}
Luego hay que elegir bien que hacer con cada alarma, si usan Log4Net tienen 5 niveles de logueo:
- Debug: Usarlo para todo lo que necesita un programador para buscar un bug escondido.
- Informacion: Usarlo como log de transaccion del servicio/aplicacion.
- Advertencias: Usarlo cuando ocurrio un error pero que el servicio puede seguir, por ejemplo, suspender esa tarea y seguir con otro tema.
- Error: Cuando el error no te deja seguir hasta que se solucione.
- Fatal: Errores de memoria, cosas realmente feas.
Como dije, cada uno de estos niveles de error por archivo de configuracion puedo decir si se loguean o no, también puedo decir a donde va a parar el log, en el caso de Log4Net pueden ir a parar a los siguientes lugares:
- Archivo de file system
- DB
- Consola
- Event Log: El que se lee con el Event Viewer de Windows
- Syslog: Mensajes de registros de entornos Linux/Unix
- Telnet
- Trace System
- A una memoria compartida
Y si no te alcanza podes crear tu propio lugar de logueo (tenes que crear lo que le llaman un Appender).
Ok, ya sabemos como disparar alarmas y a donde dirigirlas.
Ahora lo interesante es poder capturarlo con alguna herramienta de soporte.
En mi caso utilizo una herramienta que corre en Linux conocida en el mercado como Nagios, que recibe eventos de todos los equipos y dispara alarmas al personal adecuado para tratar el problema a tiempo.
Por lo tanto mi configuracion de logueo en produccion quedaría como la que detallo a continuacion:
- Debug: En produccion deshabilitado!
- Informacion: Lo guardo en archivo de file system
- Advertencias: Lo guardo en Syslog
- Error: Syslog
- Fatal: Syslog
En mi server Linux activo el Syslog para recibir eventos externos (ojo, conviene limitar el acceso desde algun firewall ya que si está publicado en internet pueden recibir muchos eventos maliciosos que generen deny of service en el equipo). Y por último configuran el Nagios que para cada tipo de error dispare una alarma diferente.
Este artículo no pretende ser un paso a paso de como realizar este tipo de configuración sino entender conceptualmente como organizar nuestros desarrollos para que pueda integrarse a la estructura de operaciones de la organización.
Espero sus comentarios!
Santiago



