[#RESHARPER] Ahora integrado con StyleCop 4.6

image47dd1de4

Buenas,

hace un par de días el amigo Víctor me comentó que estaba por comenzar un proyecto desde cero, así que sentamos las bases mínimas de colaboración y calidad para el mismo. Si comienzas un proyecto desde cero, donde trabajen diferentes personas en modo desconectado, es recomendable aplicar una serie de normas que ayuden a que “las reglas del juego sean las mismas para todos”. En el caso del estilo de codificación, pues StyleCop es un excelente aliado para esto. Además, en Avanade Spain tenemos una plantilla extendida de compilación que entre otras cosas aplica las reglas de StyleCop a una ejecución de Team Build e indica que nivel de calidad estética tiene nuestro código (si quieres más info al respecto hablamos porque la plantilla hace muchas cosas que no viene Out Of the Box con TFS2010).

Pero vuelvo que me disperso, desde que comencé a trabajar con Windows 8 no había instalado el plugin de StyleCop en mi entorno de trabajo. Así que para demostrarle las capacidades de StyleCop a Victor, me descargué la última versión y me llevé una gran sorpresa > esta versión esta 100% INTEGRADA CON RESHARPER 6.0. Vamos que se adapta como un plugin para ReSharper y a partir de aquí te encuentras con el análisis en tiempo de codificación de las reglas de StyleCop.

image

 

Obviamente, que para gustos > colores, y que no creo que todas las reglas deban aplicarse en todos los casos. Pero es agradable ver que por ejemplo, ahora los [this.] son obligatorios según StyleCop (ReSharper los aborrecía), y que todo tu código seguramente no cumplirá las reglas básicas. Sobre una WCF Application creada desde cero, la lista de errores es bastante larga.

image

 

Pero no desesperes, que siempre tienes la opción de definir el comportamiento deseado para cada una de las reglas. Por ejemplo, si no crees en la documentación (ni tampoco en los reyes magos), pues puedes desactivar esta regla en particular para que se comporte como un Hint, por ejemplo.

image

 

O inclusive en las opciones generales de inspección de código de ReSharper, puedes definir las acciones a tomar para cada una de las reglas de StyleCop.

image

 

Si me preguntas a mi qué me parece, pues te diré que me parece genial Risa

Saludos @ Here

El Bruno

   

[# KINECT] Let’s look a little information about how the depth sensor works

image

Good,

After the small post I wrote 2 days ago [# KINECT] HowTo: display the contents of the depth sensor in our applications, today we will see a little more detail or the guts of this mechanism. As well as the camera viewfinder is simply map of RGB values that convert to an image and then we show with an IMAGE of WPF, the information that gives us the depth sensor is a collection of distances that then "we paint" in our application.

The distances that handles Kinect ranges from 0.85 m to 4 m; and the information that we provide the depth sensor in millimeters. If we look at the code from the example of the post, we see that during the processing of the event DepthFrameReady() of the sensor, we work with an object of type PlanarImage (line 3). In this case the array of pixels that we return the sensor contains 2 bytes for every pixel. Each of these bytes determined us the distance to each of the cameras used the sensor.

   1: void KinectDepthFrameReady(object sender, ImageFrameReadyEventArgs e)
   2: {
   3:     var planarImage = e.ImageFrame.Image;
   4:     var depthImageHelper = new DepthImageHelper();
   5:     byte[] convertedDepthBits = 
   6:            depthImageHelper.ConvertDepthFrame(planarImage.Bits, RuntimeOptions);
   7:     if (this.imageHelper == null)
   8:     {
   9:         this.imageHelper = new InteropBitmapHelper(planarImage.Width, 
  10:                                                    planarImage.Height, 
  11:                                                    convertedDepthBits);
  12:         this.DepthSensorViewer.Source = this.imageHelper.InteropBitmap;
  13:     }
  14:     else
  15:     {
  16:         this.imageHelper.UpdateBits(convertedDepthBits);
  17:     }
  18: }

In addition, if we initialized the sensor with the option [DepthAndPlayerIndex], the array of information will contain 3 bytes where the 3rd byte corresponds to a specific player recognized by the sensor.

To identify the real value of the depth of each element of the array, we need to check if the sensor has been initialized with the option to [Depth] or [DepthAndPlayerIndex]. In the example of the post, we do from a simple calculation taking into account if we work with 3 or 2 bytes. In this case depthFrame is an array of bytes that we then convert to an image using the InteropBitmapHelper class we saw in the previous post.

   1: var hasPlayerData = runtimeOptions.HasFlag(RuntimeOptions.UseDepthAndPlayerIndex);
   2: for (int i16 = 0, i32 = 0; i16 < depthFrame16.Length && i32 < depthFrame32.Length; i16 += 2, i32 += 4)
   3: {
   4:     var player = hasPlayerData ? depthFrame16[i16] & 0x07 : -1;
   5:     int realDepth;
   6:  
   7:     if (hasPlayerData)
   8:     {
   9:         realDepth = (depthFrame16[i16 + 1] << 5) | (depthFrame16[i16] >> 3);
  10:     }
  11:     else
  12:     {
  13:         realDepth = (depthFrame16[i16 + 1] << 8) | (depthFrame16[i16]);
  14:     }
  15:  
  16:     // transform 13-bit depth information into an 8-bit intensity appropriate
  17:     // for display (we disregard information in most significant bit)
  18:     var intensity = (byte)(255 - (255 * realDepth / 0x0fff));
  19:  
  20:     depthFrame32[i32 + RedIndex] = 0;
  21:     depthFrame32[i32 + GreenIndex] = 0;
  22:     depthFrame32[i32 + BlueIndex] = 0;

The great lack at this point, is to know the depth of a Joint or an element of the Skeleton in order to have access to gesturas as a Push or Pull.

Unfortunately that doesn’t come from factory in Kinect Beta 2 SDK , but…. isn’t so complicated no?

In the next post about Kinect solve it with 4 lines of code (that if the Victor returns me the Kinect!)

Greetings @ Home

The Bruno

PS: I have finished writing the post, but I see that on the challenges of MSDN they explain very, very well!http://blogs.msdn.com/b/esmsdn/archive/2011/07/20/Reto-kinect-Usar-Las-c-225-maras-del-sensor.aspx

[#KINECT] Veamos un poco de información sobre como funciona el sensor de profundidad

image

Buenas,

después del pequeño post que escribí hace 2 días [#KINECT] HowTo: Mostrar el contenido del depth sensor en nuestras aplicaciones, hoy veremos un poco más el detalle o las tripas de este mecanismo. Así como el visor de la cámara simplemente es mapa de valores RGB que convertimos a una imagen y luego mostramos con un IMAGE de WPF, la información que nos da el sensor de profundidad es una colección de distancias que luego "pintamos” en nuestra aplicación.

El rango de distancias que maneja Kinect va desde los 0,85 metros hasta los 4 metros; y la información que nos provee el sensor de profundidad es en milímetros. Si analizamos el código del ejemplo del post, veremos que durante el procesamiento del evento DepthFrameReady() del sensor, trabajamos con un objeto del tipo PlanarImage (línea 3). En este caso el array de pixels que nos retorna el sensor contiene 2 bytes por cada pixels. Cada uno de estos bytes nos determina la distancia a cada una de las cámaras que utiliza el sensor.

   1: void KinectDepthFrameReady(object sender, ImageFrameReadyEventArgs e)

   2: {

   3:     var planarImage = e.ImageFrame.Image;

   4:     var depthImageHelper = new DepthImageHelper();

   5:     byte[] convertedDepthBits = 

   6:            depthImageHelper.ConvertDepthFrame(planarImage.Bits, RuntimeOptions);

   7:     if (this.imageHelper == null)

   8:     {

   9:         this.imageHelper = new InteropBitmapHelper(planarImage.Width, 

  10:                                                    planarImage.Height, 

  11:                                                    convertedDepthBits);

  12:         this.DepthSensorViewer.Source = this.imageHelper.InteropBitmap;

  13:     }

  14:     else

  15:     {

  16:         this.imageHelper.UpdateBits(convertedDepthBits);

  17:     }

  18: }

Adicionalmente, si inicializamos el sensor con la opción [DepthAndPlayerIndex], el array de información contendrá 3 bytes donde el 3er byte corresponde a un player específico reconocido por el sensor.

Para identificar el valor real de la profundidad de cada elemento del array, tenemos que verificar si el sensor se inicializó con la opción [Depth], o con [DepthAndPlayerIndex]. En el ejemplo del post, lo hacemos a partir de un simple cálculo teniendo en cuenta si trabajamos con 3 o 2 bytes. En este caso depthFrame es un array de bytes que luego convertimos a una imagen utilizando la clase InteropBitmapHelper que vimos en el post anterior.

   1: var hasPlayerData = runtimeOptions.HasFlag(RuntimeOptions.UseDepthAndPlayerIndex);

   2: for (int i16 = 0, i32 = 0; i16 < depthFrame16.Length && i32 < depthFrame32.Length; i16 += 2, i32 += 4)

   3: {

   4:     var player = hasPlayerData ? depthFrame16[i16] & 0x07 : -1;

   5:     int realDepth;

   6:  

   7:     if (hasPlayerData)

   8:     {

   9:         realDepth = (depthFrame16[i16 + 1] << 5) | (depthFrame16[i16] >> 3);

  10:     }

  11:     else

  12:     {

  13:         realDepth = (depthFrame16[i16 + 1] << 8) | (depthFrame16[i16]);

  14:     }

  15:  

  16:     // transform 13-bit depth information into an 8-bit intensity appropriate

  17:     // for display (we disregard information in most significant bit)

  18:     var intensity = (byte)(255 - (255 * realDepth / 0x0fff));

  19:  

  20:     depthFrame32[i32 + RedIndex] = 0;

  21:     depthFrame32[i32 + GreenIndex] = 0;

  22:     depthFrame32[i32 + BlueIndex] = 0;

La gran carencia en este punto, es poder lograr conocer la profundidad de un Joint o de un elemento del Skeleton para poder tener acceso a gesturas como Push o Pull.

Lamentablemente eso no viene de fábrica en la Beta 2 del SDK de Kinect, pero …. tampoco es tan complicado no?

En el próximo post de Kinect lo solucionamos con 4 líneas de código (eso si el Victor me devuelve el Kinect!!!!)

 

Saludos @ Home

El Bruno

   

PD: he terminado de escribir el post, pero veo que en los retos de MSDN lo explican muy pero muy bien !!! http://blogs.msdn.com/b/esmsdn/archive/2011/07/20/reto-kinect-usar-las-c-225-maras-del-sensor.aspx

[# ALM] My new book on teamwork with Visual Studio ALM

Hi,

While a couple of weeks that has come to the market, just now I have time to do a bit of self-aggrandizement and promote my new book on teamwork with Visual Studio Alm. Again I’ve profited from CampusMVP people so that they are those who publish the book, although this time is a book 100% different from the previous. In my previous book "Visual Studio 2010.".NET 4.0 and ALM"did a tour of many of the innovations of this version of Visual Studio and."NET Framework. I had my favor a new language that comment on F # (that thing stupid is now in version 3.0), a new IDE, new tools, etc.

Now the focus is different. After over 6 years working with Visual Studio + Team Foundation decided to translate a book my experiences in this regard. In this book I would like a review by the ABC of the bases of a software project: management of code source, work management and quality management. It’s amazing the amount of software projects often fail to have problems in any of these pillars; and that’s why I commented some experiences and suggestions.

Beware! I assume that if you sit down with this book (or read it standing on the subway) you’ll meet ALM tools and concepts of AGILE, SCRUM, etc. Even you can carry out all the examples and suggestions without the tools of Visual Studio ALM (although I do not think that anyone does).

In short, it is a book of personal experiences and suggestions on how to carry out a software project working as a team. Risa

If you want to give a look the first 27 pages, where you’ll see a little stories of vampires and merge, you can do it fromhttp://es.scribd.com/doc/71555650/Trabajo-en-equipo-con-Visual-Studio-ALM-Bruno-Capuano-Krasis-Press-Indice

Shop: http://www.campusmvp.com/catalogo/Product-Trabajando-en-equipo-con-Visual-Studio-ALM_145.aspx

Greetings @ Home

The Bruno

PS: all the money raised from the book going to a bank account of the Valentino and la Martina. My grateful dwarves Sonrisa

[#ALM] Mi nuevo libro sobre trabajo en equipo con Visual Studio ALM

Buenas,

si bien hace un par de semanas que ha salido al mercado, recién ahora tengo tiempo para hacerme un poco de autobombo y promocionar mi nuevo libro sobre trabajo en equipo con Visual Studio ALM. Otra vez me he aprovechado de la gente de CampusMVP para que sean los que publiquen el librako, aunque esta vez es un libro 100% diferente del anterior. En mi anterior libro “Visual Studio 2010, .NET 4.0 y ALM”  hice un recorrido por muchas de las novedades de esta versión de Visual Studio y de .NET Framework. Tenía a mi favor un nuevo lenguaje que comentar F# (que a lo tonto ya va por su versión 3.0), un nuevo IDE, nuevas herramientas, etc.

Ahora el enfoque es diferente. Después de trabajar más de 6 años con Visual Studio + Team Foundation, decidí plasmar en un libro mis experiencias al respecto. En este libro doy un repaso por al ABC de las bases de un proyecto de software: gestión de código fuente, gestión del trabajo y gestión de la calidad. Es increíble la cantidad de proyectos de software que suelen fallar por tener problemas en alguno de estos pilares; y es por eso que comento algunas experiencias y sugerencias al respecto.

¡Cuidado! doy por sentado que si te sientas frente a este libro (o lo lees de pie en el metro) conocerás herramientas de ALM y conceptos de AGILE, SCRUM, etc. Inclusive puedes llevar adelante todos los ejemplos y sugerencias sin las herramientas de Visual Studio ALM (aunque no creo que nadie lo haga).

Resumiendo, es un libro de experiencias personales y sugerencias sobre como llevar adelante un proyecto de software trabajando en equipo. Risa

Si quieres darle un vistazo  las primeras 27 páginas, donde verás un poco de historias de vampiros y merge, puedes hacerlo desde http://es.scribd.com/doc/71555650/Trabajo-en-equipo-con-Visual-Studio-ALM-Bruno-Capuano-Krasis-Press-Indice

 

Shop: http://www.campusmvp.com/catalogo/Product-Trabajando-en-equipo-con-Visual-Studio-ALM_145.aspx

Saludos @ Home

El Bruno

   

PD: todo el dinero recaudado del libro va a una cuenta bancaria del Valentino y la Martina. Mis enanos agradecidos Sonrisa

[# KINECT] Microsoft will help 10 Startups developing applications with Kinect

image

Good,

as part of the Bizsparkprogram, with which Microsoft helps companies develop with their products, now Microsoft is a little contest to help 10 businesses that want to develop applications with Kinect. If you’re one of the elected 10, can spend three months at the Microsoft Redmond campus working elbow to elbow with experts in the field, in addition to U$ S 20000, the kit of development of Kinect, and other little things. If you want more details, them can be viewed athttp://www.microsoft.com/bizspark/kinectaccelerator/

And obviously, I already I have applied.

Greetings @ Home

The Bruno

Sources:

[#KINECT] Microsoft ayudará a 10 Startups a desarrollar aplicaciones con Kinect

image

Buenas,

como parte del programa Bizspark, con el que Microsoft ayuda a las empresas a desarrollar con sus productos, ahora Microsoft realiza un pequeño concurso para ayudar a 10 empresas que quieran desarrollar aplicaciones con Kinect. Si eres uno de los 10 elegidos, podrás pasar 3 meses en el campus de Redmond de Microsoft trabajando codo a codo con expertos en el tema, además de U$S 20000, el kit de desarrollo de Kinect, y otras cosillas más. Si quieres ver más detalles, los puedes consultar en http://www.microsoft.com/bizspark/kinectaccelerator/

Y obviamente, yo ya me he apuntado.

 

Saludos @ Home

El Bruno

   

Fuentes: