NDepend

La verdad es que me ha causado una gran impresión esta herramienta y por eso me he decidido a ponerla en el blog para que la tengais en cuenta. NDepend nos proporciona una forma sencilla y fácil de verificar los efectos que puede tener en un aplicación cambios en código, como por ejemplo como afecta al conjunto de la aplicación el cambio de nombre de un método de una clase, diciéndonos cuantos objetos hacen uso de este método etc… etc…


Además descubrí con sumo gusto una alternativa a distintas herramientas de reflexión gracias a una API que se fundamente en un lenguaje que defininen como CQL ( Code Query Language), básicamente un simil de SQL para analizar código. Este nuevo lenguaje nos permite verificar distintas métricas de calidad de código de una forma sencilla y clara….


 


Bueno, no me enrollo más, lo mejor es que la probeis….


 


NDepend


P.D: Por supuesto es gratuíta


Saludos


Unai Zorrilla Castro


Microsoft MVP Compact Framework


Plain Concepts

Compact Framework 2.0 SP1

Ya está en el aire el primer SP de Compact Framewok 2.0, aunque aún en beta. Lo que traerá de nuevo este service pack están en la siguiente lista:


 


  • Support for WinCE 4.2.
  • Allow GAC to be installed to Storage Card.
  • Allow DataGrid cell drawing to be overridden.
  • Enable .NET Framework SDK Debugging via MDBG.
  • Include Network Log Viewer.
  • Include .NET Compact Framework Remote Performance Monitor.
  • Support Headless WinCE 5.0 Devices.
  • Add the [Serializable] attribute to better facilitate serialization extensibility and code portability.

     


    Lo que ‘menos’ me ha gustado es el tema del monitor de performance, y os explico porqué:


    Hasta ahora los valores de los contadores de rendimiento los teníamos en un archivo,separado por comas, .stat en el dispositivo. Si lo querías analizar lo más usual era traerlo al desktop y abrirlo mediante Excel. Como podeis suponer este proceso es bastante rudimentario y como buen ‘geek’ que soy me había implementado una aplicación capaz de realizar toda esta tarea incluyendo la persistencia de los valores en Sql Server para hacer comparativas, automatización por RAPI etc etc…. y ahora los amigos de MS pues ya lo han hecho y claro está seguro que mucho mejor que yo… 🙁  .. ¿Trabajo perdido?


    Si quieres saber más sobre la herramienta de MS, de la mia no pongo nada porque las comparaciones son odiosas…..


    Compact Framework Remote Performance Monitor


     


    Saludos


    Unai Zorrilla Castro

  • Nuevo emulador de SmartPhone

    Microsoft acaba de poner a nuestra disposición la imagen de un nuevo emulador para Smart Phone con soporte para 320×240 y pantalla a Landscape con Windows Mobile 5.0. Esto era algo muy demandado con el fin de probar aplicaciones con esta configuración de pantalla.


    Emulator Image for WM5 Smartphone 320×240(Landscape)


    Espero que os resulte interesante….


    Un saludo


    Unai Zorrilla Castro

    State and Notification Broker API

    Compact Framework y Windows Mobile 5.0 nos proporcionan una nueva API de notificaciones de estado del dispositivo. Sin duda es una gran ayuda ya que nos libera de los tediosos códigos no manejados para acceder a determinadas propiedades del dispositivo como pudiera ser el estado de la batería.


    La librería Microsoft.WindowsMobile.Status nos proporciona una gran cantidad de estados del dispositivo, más de 100 propiedades, para los cuales podemos recuperar su valor mediante la clase SystemState. Estas propiedades van desde propiedades del estado de la batería, apuntes de calendario, mensajes sin leer a propiedades sobre la cobertura del teléfono, en el caso de que se trate de una Pocket Phone Edition o un SmartPhone. Si esto ya es una gran ayuda, más nos sorprenderemos si además con el manejo de un sencillo evento,  podemos manejar los cambios de estas propiedades.


     


    Si llegados hasta aquí aún no ha tenido una buena impresión de la nueva API de notificaciones, quizás esto le guste más. Al igual que MessageInterception, la API de notificaciones de Windows Mobile 5.0 nos va a permitir ‘levantar’ aplicaciones en el momento de cambio de los estados del dispositivo. Un buen ejemplo de esto sería el siguiente: ‘ Imágínese que desea intercambiar datos con un equipo una vez que el dispositivo se sincronice con el ’. Pues bien SystemState además de notificarnos cambios también permite activar un lanzador de aplicaciones de igual forma que lo hacemos con MessageInterception para levantar una aplicación en función del mensaje SMS recibido.


     


    Adjunto al post un ejemplo sobre el uso de esta nueva API de notificaciones.

    Una lucha desigual ‘Try vs TryParse’

    Tenía pensado empezar este post con una serie de frases míticas del titán y vecino de blog R.Corral como por ejemplo ‘ Cuando tienes un martillo todo parecen clavos ‘pero después de leer el post  sobre el cordinador de transacciones distribuídas  me he decidido por hacer algo que tenga que ver más sobre buenas prácticas de desarrollo.


    Try vs TryParse


    El ‘parseo’ o la conversión de cadenas de texto a formatos numéricos como por ejemplo int o decimal es una tarea relativamente frecuente cuando estamos escribiendo código, la mayoría de estas conversiónes se realiza con un simple bloque Try Catch tal y como se ve a continuación:


             try


             {


                      int.Parse(cadenaToParser);


             }


             catch (FormatException)


             {


                   //Manejar la excepcion


             }


    En el momento en el que la cadena no se pueda parsear, se lanzará la excepción FormatException, el proceso a seguir una vez lanzada esta seria la comprobación de la existencia de un bloque Try Catch y comprobar si el Stack de excepciones está exhausto o no, si tiene más interés podría ver el proceso de unwind del stack. El caso es que guiar el flujo de un programa mediante la captura de excepciones, a parte de ser una forma mala de diseñar, tiene un rendimiento muy pobre. Como alternativa tenemos los métodos TryParse, pertenecientes a la mayoria de tipos como int,decimal, etc. El método TryParse, en conversiones de cadenas erroneas ofrece un rendimiento enormementa más alto que usar un bloque Try Catch para verificar si la conversión se hace correctamente o no.


    Un ejemplo de uso de TryParse puede verse a continuación


    int.TryParse(cadenaToParser, out result);


    Tenía pensado poner una grafiquilla excel para mostrar las comparativas de rendimiento pero son tan grandes las diferencias que no tendría mucho sentido hacerla, a grandes rasgos podría comentaros que en 10000 iteraciones con conversiones erroneas el proceso de Try Catch tardaría unos 315 segundos con TryParse este proceso se realizaría entre 1 y 2 s 🙂 ¿Asombrados… ?


    Si no os lo creeis podeis hacer los pruebas con el código adjunto al post, y como diría nuestro amigo Rodrigo << los test de rendimiento se hacen con ‘release’>>


     


     


     

    El primer post para este nuevo blog de Geeks.ms

    Como introducción y primer post para esta nueva comunidad debería empezar por poner algún título chulo como el de nuestro amigo R.Corral, pero no tengo ni tiempo ni imaginación suficiente o sea que va a quedar como está. 🙂


    Espero con este blog compartir y recibir comentarios sobre los temas de tecnología que en el se escriban y seguramente sobre vivencias de los ‘Más Viciosos del Pueblo’ que nos vemos y compartimos nuestros pequeños chascarrillos…..


    Quiero agradecer además desde aquí a todas las personas que se han acercado a la gira de Microsoft Visual Studio 2005 en Valencia, Bilbao las cuales tuvieron la gran desgracia de soportarme como ponente en desarrollo sobre dispositivos móviles y en las cabañas de seguridad en Windows Mobile 


    hasta la próxima….. que será pronto !!


     


     


    Este mensaje se proporciona “como está” sin garantías de ninguna clase, y no otorga ningún derecho.