viernes, 29 de febrero de 2008

AJAX: Tecnologías que la componen

Asynchronous JavaScript and XML, o AJAX, es posible gracias a la combinación de tecnologías. Algunas de estas tecnologías son utilizadas del lado del cliente, pero algunas requieren componentes del lado del servidor para trabajar correctamente. Debido a esta característica de tratarse de una serie de tecnologías relacionadas, realizar debug en aplicaciones AJAX puede ser un proceso complicado. Veamos los principales componentes de AJAX:

- HTML: Hypertext Markup Language, o HTML es el standard aceptado para mostrar aplicaciones web tradicionales en un browser y esto no cambia al comenzar a utilizar AJAX. Es posible utilizar el nuevo HTML extensible o XHTML que posee mejoras en la sintaxis, pero en líneas generales podremos crear la interfaz de usuario de la misma forma en que lo veníamos haciendo con este lenguaje.

- CSS: Las hojas de estilo en cascadas o Cascading Style Sheets es el standard utilizado para agregar estilos y diseño a nuestras paginas HTML o XHTML. CSS es extremadamente util ya que permite separar el contenido de la pagina HTML de la forma en la que será visualizado pudiendo almacenarse en un archivo separado y ser aplicado en muchas o todas las paginas de una determinada aplicación.

- DOM: El Document Object Model, o DOM, es una forma de representar HTML o XHTML en una estructura jerárquica y también proveer acceso de forma programática a los elementos de nuestras aplicaciones, ya sea contenido, estilos o información misma de la estructura.- JavaScript: JavaScript es lenguaje mejor soportado y el mas utilizado para agregar funcionalidad del lado del cliente en aplicaciones web. Utilizando JavaScript podemos crear páginas web más dinámicas manipulando DOM desde el cliente respondiendo a eventos generados por el usuario. HTML, CSS, DOM y JavaScript se pueden combinar para crear aplicaciones DHTML (Dynamic HTML).

- XML: Extensible Markup Language, o XML, es el lenguaje de marcado que se ha convertido en el standard para representar datos en formato de texto e independientes de la plataforma. AJAX utiliza XML para comunicar datos desde el cliente al servidor. Además cuenta con la ventaja de que al tratarse de un standard, existen disponibles muchas herramientas como Stylus Studio o Altova XML SPy.

- JSON: JavaScript Object Notation es un formato para el intercambio de datos que es muy util para la representación de objetos en JavaScript permitiendo la serialización y deserialización de objetos.

-XMLHTTP: El protocolo XMLHTTP es una forma de intercambio de datos en formato XML entre el cliente y el servidor. Se puede acceder a este protocolo del lado del cliente a través del objeto XmlHttpRequest. AJAX combina el uso de este protocolo con la otras tecnologías listadas anteriormente para montar el framework que posibilita la llamada de postbacks de forma asincrónica.

jueves, 28 de febrero de 2008

Revisión de Resharper 3.0 de JetBrains

Tuve la oportunidad de utilizar este add-in en mi actual empleo. En mi empleo anterior habia tenido la oportunidad de utilizarlo en su versión 2.5 y los resultados habían sido muy buenos. Con esta nueva versión que nos provee JetBrains, mis expectativas han sido superadas.

Para conseguirlo visiten http://www.jetbrains.com/resharper/

Las principales ventajas que he encontrado a este producto son las siguientes:
* Es tanto una herramienta para ser utilizada en tareas de refactoring sino que incrementa la calidad de nuestro código.
* Está perfectamente integrada con el IDE de desarrollo de Visual Studio 2005
* Implementa las mejores prácticas de programación para brindarnos sugerencias a la hora de escribir código.
* Posee una API abierta lo cual posibilita la creación de plugins de terceras partes.



Como no existe el producto perfecto, las desventajas también existen:
* Las herramientas para test de unidad (UT) no se integran con Visual Studio Team Suite. Esto podría solucionarse con productos de terceras partes.
* Si bien es mucho más ágil que la versión anterior, aún tiene algunos aspectos de performance que por lo general se mitigan agregando mas RAM.
* Las reglas de análisis de código parecen no ser personalizables y digo parecen porque no lo he podido lograr aún anque necesita mas investigación.

Mas allá de estas desventajas, se trata de un producto que me resultó de mucha utilidad y ayuda.
Con esta entrada del blog comienzo una serie de entradas en las que voy a mostrar algunas de las características que he tenido la oportunidad de utilizar, testear y aprovechar. Vamos a comenzar separando las prestaciones en diferentes categorías:


I) Categoría: Análisis de Código
a) Análisis dinámico de código
Resharper detecta de forma automática e instantánea errores en nuestro código y lo resalta sin que tengamos la necesidad de compilar siquiera. Realiza esta operación mientras estamos trabajando. Si posicionamos el mouse en la sección resaltada aparece un tooltip con la descripción del error

b) Advertencias
Además de los errores y advertencias que son detectables por el compilador, Resharper nos provee advertencias adicionales que pueden llegar a ser errores reaales de código.
Por citar algunos ejemplos nos brinda avisos de casteos redundantes, formateo incorrecto de strings, variables locales declaradas pero nunca utilizadas, etc

c) Sugerencias de Código
Resharper realiza un análisis en profundidad en la estructura de nuestro código activando sugerencias de código, las cuales no representan que existen errores pero nos proporciona información que es muy útil conocer, dado que están basadas en las mejores prácticas de diseño.





d) Quick-fixes
Cuando Resharper detecta un error, lo señaliza a traves del ícono de una lampara roja en la parte izquierda de la linea que contiene el error. A través de un shortccut (ALT+ENTER) aparecen las diferentes opciones de fix y al seleccionar la opción que mejor se adecua a nuestras necesidades se corrige automáticamente.


e) Indicador de estado
Al abrir un archivo, Resharper ejecuta un análisas en profundidad utilizando las reglas y mejores prácticas y nos informa a traves de códigos de colores el "estado de salud" del código que contiene nuestro archivo. Este indicador de estado lo encontramos en la esquina superior derecha del archivo, pero adicionalmente posee indicadores de color en cada linea (también en la parte derecha de nuestro editor).


f) Análisis de valor
Este tipo de análisis está relacionado a los valores de nuestras variables y objetos. Es utilizada principalmente para detectar valores que pueden estar seteados a null y brindar un aviso inmediatamente. Otra utilización frecuente es avisarnos de que una variable del tipo boolean está siempre seteada a true o a false.