Archivo de Marzo, 2007

AjaxControlToolkit no carga correctamente los CSS dentro de UpdatePanel

Si tenemos un control de AjaxControlToolkit que este seteado en el ASPX o ASCX con el atributo visible=”false” y éste se encuentra dentro de un UpdatePanel. Nos encontraremos con el problema que al hacerlo visible, no se cargaran lo estilos y por lo tanto no veremos el formato como debe ser.

En mi caso particular me ha ocurrido con los controles Calendar y Tabs.

Para solucionar este problema debemos añadir en el Page_Load de nuestra página el link a la hoja de estilos al header de nuestra página.

En el caso se utilice MasterPage lo haremos de la siguiente forma:

  1. Añadimos al tag <head> de nuestra página los atributo de runat=”server” y un id, por ejemplo id=”MasterHeader”
  2. En el evento Page_Load ponemos los siguiente
string cssFile = Page.ClientScript.GetWebResourceUrl(typeof(ClientCssResourceAttribute),                      "AjaxControlToolkit.Calendar.Calendar.css");
HtmlLink cssLink = new HtmlLink();
cssLink.Href = cssFile;
cssLink.Attributes.Add("rel", "stylesheet");
cssLink.Attributes.Add("type", "text/css");
MasterHeader.Controls.Add(cssLink);

Y si lo utilizamos en una pagina sin Master Page, evitamos el punto 1 y en la ultima linea de código pondremos:

MasterHeader.Controls.Add(cssLink);

Si en vez del Calendar queremos cargar el control Tabs solo tendremos que cambiar en la primera linea la referencia al archivo de estilos.

string cssFile = Page.ClientScript.GetWebResourceUrl(typeof(ClientCssResourceAttribute),
AjaxControlToolkit.Tabs.Tabs.css“);

Primeros pasos con TDD

Hoy he comenzado a leer Test-Driven Development in Microsoft.NET de MSPress, y la idea de este Post es resumir la introducción y el Capitulo 1 “Test-Driven Development Practices”

Introducción:

No todo en TDD es el testeo de software. El principal objetivo de TDD es ayudar al programador y al cliente en el proceso del desarrollo con requerimientos inciertos o dudosos.

Es importante que los problemas se descubran lo antes posible y sean corregidos cuando estos se encuentren. Frecuentemente los problemas ocurren por desacuerdos entre el cliente y los que producen el software. Esto se puede evitar especificando requerimientos que puedan ser interpretados de diferentes formas antes de comenzar el desarrollo. Estos test deben especificarse de tal forma que no requieran intervención de una persona para indicar si han sido correctos o erróneos.

Los test no solo sirven para el proceso de desarrollo, también es interesante aplicarlos una vez que el producto este en producción, y por ejemplo si se detecta un error lo primero que debemos hacer es escribir un test para identificar el problema y luego de obtener un test fallido, solucionar el problema.

Si tenemos suficientemente cubierto nuestro desarrollo con tests esto nos permitirá en un futuro poder añadir nuevas funcionalidades quitándonos el miedo de que surjan errores, y que éste miedo provoque que nos retrasemos.

Reglas principales

Nunca escribir una sola línea de código a menos que tengas un test automatizado que falle.

Eliminar código duplicado. En Extreme Programing esto esta regla se llama “Once and Only Once!” (Una vez y solamente una vez)

Tipos de Test

Test de programador (technology facing or programmer tests): Puede estar escrito en diferentes lenguajes, la herramienta que se suele usar es NUnit

Test del cliente (acceptance tests or functional tests): Deben estar especificado de tal forma que el cliente pueda entenderlo. La idea es conseguir que el cliente pueda escribir estos test. Una herramienta que se puede usar es Framework for Integrated Test (FIT)

Diseño simple

El código escrito debe satisfacer los requerimientos de forma mínima para que el proyecto funcione correctamente, pero no se debe añadir funcionalidades de más, que no están especificadas en los requerimientos, porque esto conllevará una carga de mantenimiento innecesaria.

Por lo tanto lo que debemos procurar es lo siguiente:

  • El código es apropiado y entendible para otros programadores
  • El código pasa todos los tests
  • El código comunica todo lo que necesita
  • El código tiene el menor número de clases
  • El código tiene el menor número de métodos

Refactorizar :

Significa mejorar el código y que éste no cambia su funcionalidad. Esta es una parte crítica de TDD ya mientras refinas el código necesitas ir añadiendo test adicionales.

Procesos:

Lista de Tests:

Al comenzar una nueva lista de tareas o características, lo importante es idear una buena cantidad de pruebas a realizar. Y tal como las vamos pensando debemos ir escribiéndolas. Además de describir de forma clara los requerimientos, esta lista nos ayudará a determinar el alcance de la actividad que estemos planteando y será la definición más completa para el objetivo que deseemos alcanzar.

El tiempo aproximado que debemos utilizar para realizar estas actividades será de 15-20 minutos por cada 4 horas de trabajo que nos determine la tarea que realicemos.

Una vez completada esta lista, debemos elegir cuál es el test más significativo que vamos a utilizar, éste será el que mayor información nos brinde acerca del problema que hemos planteado, y así ejecutaremos todos los tests hasta terminar.

Red/Green/Refactor:

Define el proceso a seguir para implementar cada uno de los tests que hayamos definido. Lo interesante de todo esto es que estaremos trabajando con pequeños trozos de trabajo de forma organizada, lo que nos brindará una información más precisa mientras estemos codificando.

La lista a seguir es la siguiente:

  1. Escribir el código del test
  2. Compilarlo (el cual fallará porque no hemos codificado ninguna funcionalidad)
  3. Codificar lo suficiente para poder compilar
  4. Ejecutar el test para ver si falla
  5. Codificar lo suficiente para que el test pase
  6. Refactorizar para eliminar duplicados y obtener mayor claridad en nuestro código
  7. Ejecutar todos los test nuevamente

Por más tonta que parezca esta lista, es importante realizarlo de esta forma, tan simple y paso a paso, porque será lo que nos permita detectar los errores en el preciso instante que se produzcan mientras los estemos codificando, lo cual nos evitará tener que utilizar el debugger (depurador).

Gracias a esto vamos a notar que los tiempos de codificación serán mucho menores ya que tendremos la certeza y la confianza que nuestro código no va a fallar. Esta confianza es el resultado de la información que iremos recibiendo mientras ejecutemos los tests.

En el próximo post intentaré ejemplificar esto para que se vea un poco más claro.

WAST en Windows Vista

Ahora que estoy desarrollando sobre Vista, me encontré que al instalar Web Application Stress Tool, da un problema en la instalación.

Si lo intentaron se habrán dado cuenta que el error dice que no puede encontrar la DLL msvcp50.dll y por lo tanto no se llega a instalar correctamente.

Solución:

  1. Descargar la DLL msvcp50.dll faltante por ejemplo desde aquí
  2. Copiarla a la carpeta C:\Windows\System32
  3. Desde la consola ejecutar regsvr32 msvcp50.dll
  4. Nos saldrá una alerta, pero no pasa nada…
  5. Si han intentado instalar WAST y había fallado, volver a instalar.

Me pasan la pelota…

Me acaba de pasar la pelota el gran Matías Woloski y es realmente un orgullo que un grande como él me haya puesto en su lista de marcados. Así que ahí vamos…

1.- Fue sobre el año 1982 cuando recibí como regalo mi primer Commodore 64, y al poco tiempo mi primer Modem de 300bps.

Al migrar a mi nueva Commodore 128 cree mi primer BBS (Bulletin Board System) llamado “Osborne BBS” con el Software All American BBS de Nick Smith, utilizando la línea de teléfono de mis padres de 23hs a 07hs.

Ya con mi primer XT y un modem de 1200 bps, llego por fin el tan codiciado RemoteAccess escrito por Andrew Milner.

Luego llego Fidonet y fui HUB y ufff que recuerdos, me voy a poner a llorar, 286, 386 y 486 en todas sus variantes, hasta el día de hoy…

2.- En el año 1990 se me dio por la Radio Afición y me compre primer equipo de radio SuperStar 3900, y de la mano, mi primero antena omni-direccional BC-3.
Aunque el primer tiempo lo usaba para comunicarme con amigos, mas adelante comencé a contactar con otros países para obtener mi numero Alfa Tango y poder “Ser alguien” en la banda internacional de 11 Metros. Y así después de conseguir 30 países diferentes Alfa Tango me fui a Mar Del Plata para que me otorgaran mi 4AT138…

�

�

3.- Siempre me gusto mucho la música, y sobre en la adolescencia el Heavy Metal aunque ahora soy más abierto y escucho de todo un poco y desde hace unos años la música electrónica es una de mis debilidades.

Gracias a bandas como Judas Priest, Iron Maiden, Helloween, Accept, Deep Purple y guitarristas como Ritchie Blackmore, Yngwie Malmsteen, Joe Satriani, Steve Vai, entre tantos otros, empecé a tocar la guitarra allá por los fines de los 80’s con mi primer Fender Stratocaster USA año ‘91 (se me cae la baba)

Aunque últimamente no le dedico casi nada de tiempo porque estoy demasiado metido con el desarrollo de software.

4.- En Marzo del 2003 me vine de vacaciones a Sevilla - España, a visitar a mis padres que estaban viviendo aquí y decidí quedarme hasta el día de hoy.

En Junio del mismo año decidí montar mi primer empresa de Informática en Sevilla Computerapia SL hasta Junio de 2007 (todavía se puede ver por ahí la web en http://old.computerapia.com aunque hoy en dia como verán utilizo el dominio para mi Blog.

5.- A comienzos de 2007 y después unas cuantas charlas con Alejandro Jack, decido nuevamente volverme a Buenos Aires a trabajar en su empresa Southworks.

Aunque sé que esto será una oportunidad única para codearme con auténticos Genios como la persona que me ha pasado la pelota entre otras. No puedo opinar mucho al respecto hasta después del 3 de Mayo que es cuando volaré a mi tan querido país!

Espero no haberlos aburrido y de paso aprovecho para pasarle la pelota a Alejandro Jack, Alberto Ortega, Ezequiel Jadib, Ezequiel Morito y a Juan Arguello

Validando código Javascript con "Javascript Lint"

Desarrollando un Gadget para Windows Vista, Resultados de Fútbol, para participar en el concurso de Gadgetizate! he tenido que programar mucho con Javascript.

Como todos saben una de las cosas más molestas es que en los entornos de desarrollo normales no tenemos la posibilidad de verificar la sintaxis de nuestro código js. Esto nos hace perder muchísimo tiempo, ya que a veces por un simple error, podemos estar un rato hasta descubrir que es realmente hace que nuestra aplicación no funcione como lo deseamos.

Más aún si lo que estamos desarrollando es un Gadget, ya que al ejecutarlo, ni siquiera nos indica si ha habido un error o no, como suele hacerlo nuestro explorador. Además tampoco podemos debugear nuestro gadget en el explorador completamente porque al utilizar las librerías propias de Gadgets el explorador no las reconocerá.

Para evitarnos todo esto, existe una herramienta llamada Javascript Lint que nos hace la vida mucho más fácil.

Esta herramienta basada en el motor de Javascript del explorador Firefox, nos provee de un Framework robusto que no solo se encargará de chequear la sintaxis de nuestro código, sino que además examinará nuestras técnicas de codificación y nos alertará sobre prácticas que él considere cuestionables.

Tenemos tres formas de utilizarla:

  • Integrándola en nuestro entorno de desarrollo ( I love it! )
  • Integrarla en Internet Explorer
  • Ejecutarla desde línea de comandos

A continuación voy a explicar cómo podemos integrarla en nuestro VS 2005, que es el entorno que yo estoy utilizando.

  1. Descargar la última versión desde y extraer los ficheros a una carpeta, por ejemplo “c:\Program Files\Javascript Lint”
  2. Abrir nuestro VS2005 > Menu Tools > External Tools
  3. Añadir y configurar como muestro en la imagen

Para hacer funcionar la herramienta unicamente hay que ir al menu  Tools, y si la hemos añadido en el paso previo nos encontraremos con un nuevo Item de “Javascript Lint”.

Vamos a probarla con un ejemplo, para eso voy a crear una nueva página HTML (aunque podría ser un archivo include con funciones, un aspx…) y voy a generar entre medio del código de la pagina una serie de lineas de Javascript con un error para que vean como funciona.

Ahora, Tools > Javascript Lint y como podemos observar en el Output del VS obtendremos lo siguiente:

Interesante no?, además, si tenemos archivos de include de tipo js en nuestro html, también los analizará.

Espero que les sea útil como a mí.

Concurso Gadgetizate!

Como muchos de ustedes estarán al tanto, la gente de Madrid .NET User Group ha puesto en marcha un concurso para la creación de Gadgets para el nuevo Windows Vista.

Los premios son muy interesantes, entre otros, el más importante es un viaje a Las Vegas para asistir como invitado al MIX ‘07 y a éste es al que yo apunto!

Para ello he desarrollado un Gadget, y ayer por la noche fue cuando por fin tomé la decisión de publicarlo definitivamente en la web de Gadgetizate.

La gente, y tú que estás leyendo este Post, pueden comenzar a votar y a utilizarlo por supuesto, ya que creo q es un Gadget cuanto menos útil, para la gente que le interese ver los resultados en vivo de los partidos de Fútbol de muchas de las ligas internacionales, España, Italia, Inglaterra, Portugal, Argentina entre muchísimas otras…

La url para descargarlo, y para votar :) (que molesto no?) es que me quiero ir a Las Vegas! es la siguiente.

http://gadgetizate.madriddotnet.com/VerGadget.aspx?id=25

Aquí les dejo unas pequeñas capturas de como se ve la versión 1.0 en funcionamiento, y más adelante iré posteando como fue el desarrollo y las herramientas que he utilizado para el mismo.

 

Como pueden ver, la primer imagen del gadget en pleno funcionamiento, informándonos que se ha producido un gol, y acerca del estado de los partidos de futbol que se están disputando en el dia de la fecha.

La segunda imagen es la que nos muestra, la configuración del mismo, aquí podremos

  1. Seleccionar cual es la Liga que queremos monitorizar
  2. El tiempo de refresco de la información en pantalla
  3. Si queremos reproducir un sonido de GOLLL al producirse uno :)

Bueno espero que les guste!

Visual Studio ORCAS CTP Marzo 2007

Microsoft acaba de liberar la nueva versión CTP (Community Technology Preview) de Visual Studio Orcas.

Tienen dos opciones para descargala e ir probandola:

Aquí les dejo también un video del gran Scott Guthrie’s realizando una presentación en Bélgica de lo que será el nuevo Visual Studio.