[# KINECTSDK] HowTo: Use Kinect as a green screen (I) (playing with the Rolling Stones)


image

Buenas,

the following image already lets you clear of that goes this post

image

The Bruno with the Rollings! Awesome… things that allows us to KinectSdk. In this case I have taken as starting point the example that brings the Developer Toolkit Browser 1.5 that is included with the KinectSDK and after a few modifications I have to create my own green screen.

But well going to the code which is really what interests us and before I read to me, better to read a bit of code. In this case work with a WPF application in which the main form has the following code

   1: <Window x:Class="ElBruno.KinectGreenScreen.MainWindow"

   2:         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

   3:         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

   4:         Title="MainWindow" Height="768" Width="1024">

   5:     <Grid>

   6:         <Grid.RowDefinitions>

   7:             <RowDefinition Height="245"></RowDefinition>

   8:             <RowDefinition Height="*"></RowDefinition>

   9:         </Grid.RowDefinitions>

  10:         <Image x:Name="imgHeader" Source="ElBrunoKinect.png" Stretch="Fill"></Image>

  11:         <Grid Grid.Row="1">

  12:             <Image x:Name="imgBackground" Source="Fondo3.png" Stretch="UniformToFill"></Image>

  13:             <Image x:Name="imgMask"></Image>

  14:         </Grid>

  15:     </Grid>

  16: </Window>

As you can see in the previous code, it is nothing out of this world. A WPF form with a superior as a header image and 2 images at the bottom. The first "imgBackground" image is used as the basis of the background with which it will work and that it will process data from the Depth and Kinect Camera. The second image "imgMask" is that which is used to paint the final outcome of the green screen.

The form code is not very complicated, as you can see below:

   1: using System;

   2: using System.Linq;

   3: using System.Windows;

   4: using System.Windows.Media;

   5: using System.Windows.Media.Imaging;

   6: using Microsoft.Kinect;

   7:  

   8: namespace ElBruno.KinectGreenScreen

   9: {

  10:     public partial class MainWindow

  11:     {

  12:         private KinectSensor _sensor;

  13:         private int _depthWidth;

  14:         private int _depthHeight;

  15:         private int _colorWidth;

  16:         private int _colorHeight;

  17:         private int _colorToDepthDivisor;

  18:         private short[] _depthPixels;

  19:         private byte[] _colorPixels;

  20:         private int[] _greenScreenPixelData;

  21:         private ColorImagePoint[] _colorCoordinates;

  22:         private WriteableBitmap _colorBitmap;

  23:         private const int OpaquePixelValue = -1;

  24:         private WriteableBitmap _playerOpacityMaskImage;

  25:  

  26:         public MainWindow()

  27:         {

  28:             InitializeComponent();

  29:             Loaded += MainWindowLoaded;

  30:             Closed += MainWindowClosed;

  31:         }

  32:  

  33:         void MainWindowClosed(object sender, EventArgs e)

  34:         {

  35:             if (_sensor != null)

  36:             {

  37:                 _sensor.Stop();

  38:                 _sensor = null;

  39:             }

  40:         }

  41:  

  42:         void MainWindowLoaded(object sender, RoutedEventArgs e)

  43:         {

  44:             foreach (var potentialSensor in KinectSensor.KinectSensors.Where(potentialSensor => potentialSensor.Status == KinectStatus.Connected))

  45:             {

  46:                 _sensor = potentialSensor;

  47:                 break;

  48:             }

  49:             if (_sensor == null) return;

  50:  

  51:             _sensor.DepthStream.Enable(DepthImageFormat.Resolution320x240Fps30);

  52:             _depthWidth = _sensor.DepthStream.FrameWidth;

  53:             _depthHeight = _sensor.DepthStream.FrameHeight;

  54:             _sensor.ColorStream.Enable(ColorImageFormat.RgbResolution640x480Fps30);

  55:             _colorWidth = _sensor.ColorStream.FrameWidth;

  56:             _colorHeight = _sensor.ColorStream.FrameHeight;

  57:             _colorToDepthDivisor = _colorWidth / _depthWidth;

  58:             _sensor.SkeletonStream.Enable();

  59:             _depthPixels = new short[_sensor.DepthStream.FramePixelDataLength];

  60:             _colorPixels = new byte[_sensor.ColorStream.FramePixelDataLength];

  61:             _greenScreenPixelData = new int[_sensor.DepthStream.FramePixelDataLength];

  62:             _colorCoordinates = new ColorImagePoint[_sensor.DepthStream.FramePixelDataLength];

  63:             _colorBitmap = new WriteableBitmap(_colorWidth, _colorHeight, 96.0, 96.0, PixelFormats.Bgr32, null);

  64:             imgMask.Source = _colorBitmap;

  65:  

  66:             _sensor.AllFramesReady += SensorAllFramesReady;

  67:             _sensor.Start();

  68:         }

  69:  

  70:         void SensorAllFramesReady(object sender, AllFramesReadyEventArgs e)

  71:         {

  72:             if (_sensor == null) return;

  73:             var hasDepth = false;

  74:             var hasColor = false;

  75:             hasDepth = GetDepthFrame(e);

  76:             hasColor = GetColorFrame(e);

  77:             ProcessDepthFrame(hasDepth);

  78:             ProcessColorFrame(hasColor);

  79:         }

  80:  

  81:         // more code goes here

  82:  

  83:     }

  84: }

The process is actually quite simple:

  • The sensor is initialized to make it work with the skeleton, the Chamber and the depth sensor
  • Store the values of work of these Streams for the subsequent processing of data
  • Is tabaja on the AllFramesReady event of the Kinect sensor
  • In this event the depth and color frames are processed
  • With the outcome of these frames, creates a new image that makes a merge between the background and the body of the detected person

The interesting code is called in the 70-79 lines, that I reserve for tomorrow and to also be able to explain it better.

 

Saludos @ Home

El Bruno

image image image

[#KINECTSDK] HowTo: Utilizar Kinect como una pantalla verde (I) (tocando con los Stones !)


image

Buenas,

la siguiente imagen ya te deja claro de que va este post

image

El Bruno con los Rollings!!! Awesome … las cosas que nos permite hacer KinectSdk. En este caso he tomado como punto de partida el ejemplo que trae el Developer Toolkit Browser 1.5 que se incluye con el KinectSDK y después de unas modificaciones he llegado a crear mi propia green screen.

Pero bueno vamos al código que es realmente lo que nos interesa y antes que leerme a mi, mejor leer un poco de código. En este caso trabajo con una aplicación WPF en la que el formulario principal posee el siguiente código

   1: <Window x:Class="ElBruno.KinectGreenScreen.MainWindow"

   2:         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

   3:         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

   4:         Title="MainWindow" Height="768" Width="1024">

   5:     <Grid>

   6:         <Grid.RowDefinitions>

   7:             <RowDefinition Height="245"></RowDefinition>

   8:             <RowDefinition Height="*"></RowDefinition>

   9:         </Grid.RowDefinitions>

  10:         <Image x:Name="imgHeader" Source="ElBrunoKinect.png" Stretch="Fill"></Image>

  11:         <Grid Grid.Row="1">

  12:             <Image x:Name="imgBackground" Source="Fondo3.png" Stretch="UniformToFill"></Image>

  13:             <Image x:Name="imgMask"></Image>

  14:         </Grid>

  15:     </Grid>

  16: </Window>

Como se puede ver en el código anterior, no es nada del otro mundo. Un formulario WPF con una imagen superior a modo de cabecera y 2 imágenes en la zona inferior. La primera imagen “imgBackground” se utiliza como la base del background con el que trabajaremos y sobre la que procesaremos los datos del Depth y Camera de Kinect. La segunda imagen “imgMask” es la que se utiliza para pintar el resultado final de la pantalla verde.

El código del formulario tampoco es muy complicado, como se puede ver a continuación:

   1: using System;

   2: using System.Linq;

   3: using System.Windows;

   4: using System.Windows.Media;

   5: using System.Windows.Media.Imaging;

   6: using Microsoft.Kinect;

   7:  

   8: namespace ElBruno.KinectGreenScreen

   9: {

  10:     public partial class MainWindow

  11:     {

  12:         private KinectSensor _sensor;

  13:         private int _depthWidth;

  14:         private int _depthHeight;

  15:         private int _colorWidth;

  16:         private int _colorHeight;

  17:         private int _colorToDepthDivisor;

  18:         private short[] _depthPixels;

  19:         private byte[] _colorPixels;

  20:         private int[] _greenScreenPixelData;

  21:         private ColorImagePoint[] _colorCoordinates;

  22:         private WriteableBitmap _colorBitmap;

  23:         private const int OpaquePixelValue = -1;

  24:         private WriteableBitmap _playerOpacityMaskImage;

  25:  

  26:         public MainWindow()

  27:         {

  28:             InitializeComponent();

  29:             Loaded += MainWindowLoaded;

  30:             Closed += MainWindowClosed;

  31:         }

  32:  

  33:         void MainWindowClosed(object sender, EventArgs e)

  34:         {

  35:             if (_sensor != null)

  36:             {

  37:                 _sensor.Stop();

  38:                 _sensor = null;

  39:             }

  40:         }

  41:  

  42:         void MainWindowLoaded(object sender, RoutedEventArgs e)

  43:         {

  44:             foreach (var potentialSensor in KinectSensor.KinectSensors.Where(potentialSensor => potentialSensor.Status == KinectStatus.Connected))

  45:             {

  46:                 _sensor = potentialSensor;

  47:                 break;

  48:             }

  49:             if (_sensor == null) return;

  50:  

  51:             _sensor.DepthStream.Enable(DepthImageFormat.Resolution320x240Fps30);

  52:             _depthWidth = _sensor.DepthStream.FrameWidth;

  53:             _depthHeight = _sensor.DepthStream.FrameHeight;

  54:             _sensor.ColorStream.Enable(ColorImageFormat.RgbResolution640x480Fps30);

  55:             _colorWidth = _sensor.ColorStream.FrameWidth;

  56:             _colorHeight = _sensor.ColorStream.FrameHeight;

  57:             _colorToDepthDivisor = _colorWidth / _depthWidth;

  58:             _sensor.SkeletonStream.Enable();

  59:             _depthPixels = new short[_sensor.DepthStream.FramePixelDataLength];

  60:             _colorPixels = new byte[_sensor.ColorStream.FramePixelDataLength];

  61:             _greenScreenPixelData = new int[_sensor.DepthStream.FramePixelDataLength];

  62:             _colorCoordinates = new ColorImagePoint[_sensor.DepthStream.FramePixelDataLength];

  63:             _colorBitmap = new WriteableBitmap(_colorWidth, _colorHeight, 96.0, 96.0, PixelFormats.Bgr32, null);

  64:             imgMask.Source = _colorBitmap;

  65:  

  66:             _sensor.AllFramesReady += SensorAllFramesReady;

  67:             _sensor.Start();

  68:         }

  69:  

  70:         void SensorAllFramesReady(object sender, AllFramesReadyEventArgs e)

  71:         {

  72:             if (_sensor == null) return;

  73:             var hasDepth = false;

  74:             var hasColor = false;

  75:             hasDepth = GetDepthFrame(e);

  76:             hasColor = GetColorFrame(e);

  77:             ProcessDepthFrame(hasDepth);

  78:             ProcessColorFrame(hasColor);

  79:         }

  80:  

  81:         // more code goes here

  82:  

  83:     }

  84: }

En realidad el proceso es bastante simple:

  • Se inicializa el sensor para que trabaje con el skeleton, la cámara y el sensor de profundidad
  • Se almacenan los valores de trabajo de estos Streams para el posterior procesamiento de datos
  • Se tabaja sobre el evento AllFramesReady del sensor Kinect
  • En este evento se procesan los frames de depth y de color
  • Con el resultado de estos frames, se genera una nueva image que hace un merge entre el background y el cuerpo de la persona detectada

Como el código interesante es el que se llama en las líneas 70 a 79, a ese me lo reservo para mañana y para además poder explicarlo mejor.

Saludos @ Home

El Bruno

image image image

[#TFS] HowTo: NuGet and TFS


image

Buenas,

Today the friend Juan has written a post where he presents a little to NuGet. As it leaves the ball in the air and also provides a little to one conversation we had with @ EduDelPozo, today plays a little talk about how to work with NuGet and Team Foundation Server.

First things first, in my case assume a directory structure where we separate on the one hand the source code in the SRC folder and then shared libraries in the LIB folder.

image

In the picture above we can see in this project there are 2 class libraries. To further complicate the scenario we are going to add a couple of references of Enterprise Library from NuGet. In this case logging from http://nuget.org/packages/EnterpriseLibrary.Logging.

Once installed we have our dlls added as a reference and the package.config file has been added in the project.

   1: Each package is licensed to you by its owner. Microsoft is not responsible for, 
   2: nor does it grant any licenses to, third-party packages. Some packages may 
   3: include dependencies which are governed by additional licenses. Follow the 
   4: package source (feed) URL to determine any dependencies.
   5:  
   6: Package Manager Console Host Version 1.8.30524.9000
   7:  
   8: Type 'get-help NuGet' to see all available NuGet commands.
   9:  
  10: PM>; Install-Package EnterpriseLibrary.Logging
  11: Attempting to resolve dependency 'EnterpriseLibrary.Common (≥ 5.0)'.
  12: Attempting to resolve dependency 'Unity.Interception (≥ 2.1)'.
  13: Attempting to resolve dependency 'Unity (≥ 2.1)'.
  14: Attempting to resolve dependency 'CommonServiceLocator (≥ 1.0)'.
  15: Successfully installed 'CommonServiceLocator 1.0'.
  16: You are downloading Unity from Microsoft patterns &; practices, the license 
  17: agreement to which is available at http://www.opensource.org/licenses/ms-pl. 
  18: Check the package for additional dependencies, which may come with their own 
  19: license agreement(s). Your use of the package and dependencies constitutes 
  20: your acceptance of their license agreements. If you do not accept the 
  21: license agreement(s), then delete the relevant components from your device.

Now, in our case we had defined the external references should go to the LIB folder. As NuGet is intelligent, but not so much, we have to tell you that you need to change the behavior by default. It consists in letting the assembled in a packages folder, for example

[…\NuGet\src\ClassLibrary2\packages\EnterpriseLibrary.Common.5.0.505.0\lib\NET35\Microsoft.Practices.EnterpriseLibrary.Common.dll]

Well, to change this functionality we selected the solution, deploy the contextual menu and select the [Enable NuGet Package Restore] option

image

This action add us a new solution folder called .nuget and within the same executable NuGet and an MSBuild file with different targets for the download of packages added.

image

If we are going to the directory we will see that it also creates a file called NuGet.Config. But for our example it will not this configuration file which defines the directory to download the packages. What we do will be the following:

1 Add a file called nuget.config in the directory of the solution

2 Within the same defined the path to download the packages with the following code

do do <? xml version = "1.0" encoding = "utf-8"? >

< settings >

< repositoryPath >…\..\..\Lib < /repositoryPath >

< /settings >

3 Donate!

If we see the lib folder, we will see that we have packages with which we are working within the same

image

Ahh and thanks to the @ Edudelpozo that I gave a hand with this last part Risa

Saludos @ Home

El Bruno

image image image

[#TFS] HowTo: NuGet y TFS


image

Buenas,

hoy el amigo Juan ha escrito un post donde nos presenta un poco a NuGet. Como deja la pelota en el aire y además se presta un poco a una charla que tuvimos con @EduDelPozo, hoy toca hablar un poco sobre como trabajar con NuGet y Team Foundation Server.

Primero lo primero, en mi caso partimos de una estructura de directorios donde separamos por un lado el código fuente en la carpeta SRC y luego las bibliotecas compartidas en la carpeta LIB.

image

En la imagen anterior podemos ver en este proyecto hay 2 bibliotecas de clases. Para complicar un poco más el escenario vamos a agregar un par de referencias de Enterprise Library desde NuGet. En este caso logging desde http://nuget.org/packages/EnterpriseLibrary.Logging.

Una vez instalado ya tenemos nuestras dlls agregadas como referencia y en el proyecto se ha agregado el archivo package.config.

   1: Each package is licensed to you by its owner. Microsoft is not responsible for, 

   2: nor does it grant any licenses to, third-party packages. Some packages may 

   3: include dependencies which are governed by additional licenses. Follow the 

   4: package source (feed) URL to determine any dependencies.

   5:  

   6: Package Manager Console Host Version 1.8.30524.9000

   7:  

   8: Type 'get-help NuGet' to see all available NuGet commands.

   9:  

  10: PM>; Install-Package EnterpriseLibrary.Logging

  11: Attempting to resolve dependency 'EnterpriseLibrary.Common (≥ 5.0)'.

  12: Attempting to resolve dependency 'Unity.Interception (≥ 2.1)'.

  13: Attempting to resolve dependency 'Unity (≥ 2.1)'.

  14: Attempting to resolve dependency 'CommonServiceLocator (≥ 1.0)'.

  15: Successfully installed 'CommonServiceLocator 1.0'.

  16: You are downloading Unity from Microsoft patterns &; practices, the license 

  17: agreement to which is available at http://www.opensource.org/licenses/ms-pl. 

  18: Check the package for additional dependencies, which may come with their own 

  19: license agreement(s). Your use of the package and dependencies constitutes 

  20: your acceptance of their license agreements. If you do not accept the 

  21: license agreement(s), then delete the relevant components from your device.

Ahora bien, en nuestro caso habíamos definido que las referencias externas debían ir a la carpeta LIB. Como NuGet es inteligente pero no tanto, tenemos que indicarle que tiene que cambiar el comportamiento por defecto. Que consiste en dejar los ensamblados en una carpeta packages, por ejemplo

[…\NuGet\src\ClassLibrary2\packages\EnterpriseLibrary.Common.5.0.505.0\lib\NET35\Microsoft.Practices.EnterpriseLibrary.Common.dll]

Pues bien, para cambiar esta funcionalidad seleccionamos la solución, desplegamos el menú contextual y seleccionamos la opción [Enable NuGet Package Restore]

image

Esta acción nos agrega un nuevo solution folder llamado .nuget y dentro del mismo agrega el ejecutable de NuGet y un archivo de MSBuild con diferentes targets para la descarga de los paquetes.

image

Si vamos al directorio veremos que también se crea un archivo llamado NuGet.Config. Pero para nuestro ejemplo no será este archivo de configuración el que defina el directorio de descarga de los paquetes. Lo que haremos será lo siguiente:

1. Agregar un archivo llamado nuget.config en el directorio de la solución

2. Dentro del mismo definir el path de descarga de los paquetes con el siguiente código

<?xml version="1.0" encoding="utf-8"?>

<settings>

  <repositoryPath>..\..\..\Lib</repositoryPath>

</settings>

3. Done !!!

Si vemos la carpeta lib, veremos que dentro de la misma tenemos los paquetes con los que estamos trabajando

image

Ahh y gracias al @Edudelpozo que me dió una mano con esta última parte Risa.

Si subimos los paquetes a la carpeta lib de nuestro TFS ya tendremos todo listo para trabajar on the fly !!!

 

Saludos @ Home

El Bruno

image image image

[#VS11] Microsoft Feedback Client (II)


image

Buenas,

in the post yesterday I presented the 2 ways in which Microsoft Feedback Client can launch

  • voluntary feedback mode
  • requested mode

From the second stage today we will see capabilities gives us this tool. Once launched the tool, we can see that the same presents us with 3 phases of work in sequential order:

  • Start
  • Provide
  • Submit

image

In the first of her we will have a number of indications about the proof that we have to do and the points which we are asked to take into account.

In my case, when you try to launch the calculator application from the route [c:\windows\calc.exe] I see that it does not exist (is in another site, for testing this comes great!). So we come to the stage of complete (PROVIDE) feedback and here we can see we have several options to attach a file, make a recording and detailing any aspect, etc.

image

Review the validation options, in my case I have commented that the route was wrong, and that the correct path is perhaps [c:\Windows\System32\calc.exe] and I’ve added a screenshot of the error.

image

And when we have finished giving our feedback as we move to the final step [SUBMIT] to send the information.

image

Now the information is already in our server TFS (in this case in the cloud!) and in the next post we see as process this information to incorporate into our development lifecycle.

 

Saludos @ Home

El Bruno

image image image

[#VS11] Microsoft Feedback Client (II)


image

Buenas,

en el post de ayer presenté los 2 modos en los que se puede lanzar Microsoft Feedback Client

  • voluntary feedback mode
  • requested mode

A partir del segundo escenario hoy veremos que capacidades nos entrega esta herramienta. Una vez lanzada la herramienta, podremos ver que la misma nos presenta 3 fases de trabajo en orden secuencial:

  • Start
  • Provide
  • Submit

image

En la primera de ella tendremos una serie de indicaciones sobre la prueba que tenemos que hacer y los puntos que se nos pide tener en cuenta.

En mi caso, al intentar lanzar la aplicación de la calculadora desde la ruta [c:\windows\calc.exe] veo que la misma no existe (está en otro sitio, para la prueba esto me viene genial!). Así que pasamos a la fase de completar el feedback (PROVIDE) y aquí podemos ver que tenemos varias opciones para adjuntar un archivo, realizar una grabación y detallar algún aspecto, etc.

image

Luego de revisar las opciones de validación, en mi caso he comentado que la ruta estaba mal, y que tal vez la ruta correcta sea [c:\Windows\System32\calc.exe] y he agregado un pantallazo del error.

image

Y cuando hemos terminado de dar nuestro feedback ya podemos pasar al paso final [SUBMIT] para enviar la información.

image

Ahora ya la información está en nuestro servidor TFS (en este caso in the cloud!) y en el próximo post podremos ver como procesar esta información para incorporarla en nuestro ciclo de vida de desarrollo.

Saludos @ Home

El Bruno

image image image

[#VS11] Microsoft Feedback Client (I)


image

Buenas,

as long that not writing anything new on Visual Studio 11, now I give a review to

Microsoft Feedback Client

It seems to me that there will be one or two posts on the subject so create you its corresponding TAG in the blog.

But first thing first, what is this? As well it a tool to manage the feedback from members of a team to level application on the usability or functionality thereof (something like the stakeholders). Usually they are usually end users who develop this role, but it can also open to new horizons. The good thing about this approach is that we can quickly validate that the application we are developing is not very different from the idea that they have in mind our stakeholders, etc. etc. etc. We will tell the roll of the advantage of iterations short and close to the Customer if you want, but I guess you already know.

MFC (Microsoft Feedback Client, not the other MFC) allows these users to provide its opinion thereon. This tool can be used in two ways: on a voluntary basis, i.e. without anyone request us opinion can comment on an application; or from an application, which is when requested us that we think about an application.

The first scenario is very simple, we are looking for and we launched the application and first thing we will see is that it does not request to connect to Team Foundation Server 11.

image

Once selected the Team Project, we will see that the application opens in SideBar mode to allow us to interact with other applications without interfering with them. It is also possible to put the application in "floating" mode so that it is not dockeada to the desktop.

As we launched the application without a request, we will see in the same "voluntary feedback mode" orvoluntary mode .

image

If what we want is to request the feedback of an implementation of one or more specific stakeholders, we can do so from the Team Project portal. Select the option "Request Feedback" in it and we will be able to start this process.

image

In the picture below you can see the form where begins the process of request for feedback

image

Once this process of request, send an email to the person or group of persons with the necessary information to launch a session of MFC. The mail that arrives is similar to the following:

image

As the link to launch the application requires special permissions, so first thing we will see is a Security Warning.

image

If the stakeholder does not have the tool, you can download it from http://www.microsoft.com/en-us/download/details.aspx?id=28984

Once launched the application, already we can see how joins the stakeholder the information I request

image

Well, tomorrow more about the use of the application itself. Only today left us with

Saludos @ Home

El Bruno

image image image

[#VS11] Microsoft Feedback Client (I)


image

Buenas,

como hace mucho que no escribía nada nuevo sobre Visual Studio 11, hoy le doy un repaso a

Microsoft Feedback Client

Me parece que contará con uno o dos posts al respecto así que le crearé su TAG correspondiente en el blog.

Pero primero lo primero, ¿qué es esto? Pues bien se trata de una herramienta para gestionar el feedback de los integrantes de un equipo a nivel aplicación sobre la usabilidad o funcionalidad de la misma (algo así como los stakeholders). Por lo general suelen ser los usuarios finales los que desarrollan este papel, pero también se puede abrir a nuevos horizontes. Lo bueno de este enfoque es que podemos validar rápidamente que la aplicación que estamos desarrollando no es muy diferente a la idea que tienen en mente nuestros stakeholders, etc. etc. etc. Vamos que te cuento el rollo de la ventaja de iteraciones cortas y cercanas al Customer si quieres, pero supongo que ya lo conoces.

MFC (Microsoft Feedback Client, no el otro MFC) permite que estos usuarios aporten su opinión al respecto. Esta herramienta se puede utilizar de dos modos: de forma voluntaria, es decir sin que nadie nos solicite opinión podemos opinar sobre una aplicación; o a partir de una solicitud, que es cuando se nos solicita que opinemos sobre una aplicación.

El primer escenario es muy simple, buscamos y lanzamos la aplicación y lo primero que veremos es que no solicita conectarnos a Team Foundation Server 11.

image

Una vez seleccionado el Team Project, veremos que la aplicación se abre en modo SideBar para permitirnos interactuar con otras aplicaciones sin interferir en las mismas. También es posible poner la aplicación en modo “flotante” de manera que no esté dockeada al escritorio.

Como hemos lanzado la aplicación sin una petición, podremos ver en la misma el “voluntary feedback mode” o modo voluntario.

image

Si lo que deseamos es solicitar el feedback de una aplicación de uno o más stakeholders específicos, podremos hacerlo a partir del portal del Team Project. En el mismo seleccionamos la opción “Request Feedback” y podremos dar comienzo a este proceso.

image

En la siguiente imagen es posible ver el formulario donde se da comienzo al proceso de solicitud de feedback

image

Una vez finalizado este proceso de petición, se envía un correo a la persona o grupo de personas con la información necesaria para lanzar una sesión de MFC. El correo que llega es similar al siguiente:

image

Como el link para lanzar la aplicación requiere permisos especiales, pues lo primero que veremos será un Warning de seguridad.

image

Si el stakeholder no posee la herramienta, puede descargar la misma desde http://www.microsoft.com/en-us/download/details.aspx?id=28984

Una vez lanzada la aplicación, ya podremos ver como se incorpora la información que se solicito al stakeholder

image

Bueno, mañana más sobre el uso de la aplicación propiamente dicha. Hoy solo quedarnos con

Saludos @ Home

El Bruno

image image image

[#VS2010] Error working with ASP.NET MVC and IIS in Windows 8


image

Buenas,

today was about to begin work on a brand new project of ASP.NET MVC in my Visual Studio 2010 on Windows 8, when I came across the following:

image

—————————
Microsoft Visual Studio
—————————
ASP.NET 4.0 has not been registered on the Web server. You need to manually configure your Web server for ASP.NET 4.0 in order for your site to run correctly.
—————————
OK Help
—————————

Chan! new Windows 8 making mischief, but clear in reality was I that trying a few scripts I delete some features of Windows. So from the option "Turn Windows features on or off", simply choose which are necessary for ASP.NET 3.5 and ASP.Net 4.5 and ready!

image

If it is that, these days I fix one thing and break 2!

 

Saludos @ Home

El Bruno

image image image

[#VS2010] Error con ASP.Net MVC y el IIS en Windows 8


image

Buenas,

hoy estaba por comenzar a trabajar en un flamante proyecto de ASP.Net MVC en mi Visual Studio 2010 sobre Windows 8, cuando me encontré con lo siguiente:

image

—————————
Microsoft Visual Studio
—————————
ASP.NET 4.0 has not been registered on the Web server. You need to manually configure your Web server for ASP.NET 4.0 in order for your site to run correctly.
—————————
OK   Help  
—————————

Chan! de nuevo Windows 8 haciendo de las suyas, pero claro en realidad fui yo que probando unos scripts eliminé unas features de Windows. Así que desde la opción “Turn Windows features on or off”, simplemente elegimos las que son necesarias para ASP.Net 3.5 y ASP.Net 4.5 y listo!

image

si es que, estos días arreglo una cosa y rompo 2 !!!

Saludos @ Home

El Bruno

image image image