[#RESHARPER] INotifyPropertyChanged de una forma muy rapida con #ReSharper

Hola!

Si has trabajado con WPF, Silverlight, Windows Phone o Windows 8 (y sus actualizaciones), seguro que te suenta la interfaz INotifyPropertyChanged. Seguro que si además has creado clases POCO, te habrás encontrado con la necesidad de implementar este esquema de notificaciones para cada campo de tu clase.

Pues, ayer creando clases on the fly, me encuentro con que ReSharper nos ayuda mucho con esta tarea. Primero el hecho de implementar la interfaz se hace con un único click y luego convertir una auto propiedad a una propiedad con un backing field y con soporte para esta interfaz es el 2do click.

Veamos un ejemplo:

resharper

 

Saludos @ Home

El Bruno

image image image Google

[#ONENOTE] #OCR en 2 clicks !!! (OCR= reconocimiento optico de caracteres)

Hola!

Después de Excel, OneNote es tal vez la 2da mejor aplicación del paquete Microsoft Office. Hoy me encontré en esos momentos raros donde tenía que pasar números de serie de hardware a formatos digitales. Una tarea de esas que es un incordio (o un coñazo!) y que sacan el lado práctico de cada uno (o el vago).

Pues bien, OneNote posee una feature muy poderosa que es la capacidad de realizar un reconocimiento óptico de caracteres (OCR) en cada una de las imágenes que se pegan en una nota. Es decir, que si sacas una foto con el móvil, la pegas en OneNote, pues ya lo tienes !!!

En la siguiente imagen, puedes ver como a partir de una foto, OneNote da la posiblidad de copiar el texto de la misma (el texto que reconoce con OCR)

image

Una vez que lo tienes en el portapapeles, ya puedes acceder al mismo. En mi caso además del nro de serie, ha copiado esto al clipboard

AC220-240V 50Hz 45W
C
CE
MADE IN HUNGARY

Y OneNote además indexa el texto de las imágenes de forma automática. Si en algún momento realizas una búsqueda y el resultado está “dentro de una imágen”, pues te lo resalta como en la siguiente imagen.

image

Lo dicho, OneNote mola Open-mouthed smile

 

Saludos @ La Finca

El Bruno

image image image Google

[#TFS2013] HowTo: hacer un Get Latest con un BAT (despues la version con PowerShell)

image

Hola.

No se ustedes, pero yo es abrir el Visual Studio y tener que hacer un Get Latest de varias sources para estar al día. Como las tareas repetitivas son la medida por la que se define un buen programador, pues hace ya bastantes años que me cree un archivo BAT con el siguiente contenido

tf.exe get "$/location1/sampleA/dev" recursive force
tf.exe get "$/location2/sampleB/dev" recursive force
tf.exe get "$/location2/sampleB/main" recursive force

 

¿Bastante auto explicativo no?, y así de un tirón tengo lo último de estas 3 ramas.

Hoy por motivos que dejo para otro post, lo he tenido que actualizar a PoweShell; pero … esa es otra historia.

Saludos @ Home

El Bruno

image image image Google

[#VS2013] HowTo: Iniciar el IDE con permisos de Admin, medium privileges, etc

image

Hola.

Si trabajas con aplicaciones para Windows 8 u 8.1, seguramente te habrás dado algún que otro golpe lanzando el emulador. Y si en este punto se te ocurre attacharte a tu servidor IIS, verás que el modo anterior no te sirve. Pues bien, aquí comienzas a lanzar el VS con permisos de Admin o con permisos normales de acuerdo al escenario.

Hoy me encuentro con que el AddIn VSCommands for Visual Studio 2013 te da esta opción directamente sobre el contexto del IDE, tanto para Visual Studio 2012 como para Visual Studio 2013.

image

Asi que ,.,, un click que me ahorro.

Download: http://visualstudiogallery.msdn.microsoft.com/c6d1c265-7007-405c-a68b-5606af238ece

Saludos @ Home

El Bruno

image image image Google

[#VS2013] Intentando utilizar VS2013 para programar apps de Windows 8 (si pero no)

image

Hola!

Estraño escenario el que estoy viviendo ahora con Windows 8, Windows 8.1, Visual Studio 2012 y Visual Studio 2013. A ver si lo puedo explicar (eso significaría que lo he entendido)

Por lo general, las herramientas de desarrollo tienen compatibilidad hacia atrás, esto permite suponer que es posible utilizar VS2013 para crear apps Windows 8, pues no; no puedes crear apps Windows 8 con Visual Studio 2013.

Estas son las opciones que tienes para la creación de una app para Windows Store en VS2013,

image

Una vez que creas la app, tampoco es que puedas cambiar el target de la misma …

image

Ahora bien, con Visual Studio 2013 si puedes editar proyectos de apps para Windows 8 y trabajar con los mismos. Eso sí, verás una sugerencia muy light para migrarlos a Windows 8.1, si la ignoras pues sigues compilando para Windows 8.

Hasta aqui los escenarios con los que me he enfrentado, si hay algún workaround no lo conozco.

Yo por ejemplo, he intentado evitar instalar VS2012, ya que tengo el VS2013 y pensaba que era suficiente; inicialmente le pedía a algún compañero que cree el proyecto en blanco y luego lo editaba con VS2013. Hasta que llegué a un momento donde decidí utilizar Bing Maps. Aquí la cosa se pone interesante.

Hay 2 versiones de Bing Maps para apps de Windows Store

Si quieres trabajar con Visual Studio 2013 en apps de Windows 8 con Bing Maps, pues deberás instalar la 2da opción; pero claro el instalador REQUIERE VISUAL STUDIO 2012; así que no me ha quedado otra opción más que instalar Visual Studio 2012.

La conclusión a la que he llegado hoy, es que para desarrollar apps de Windows 8, y Windows 8.1 necesito

  • Windows 8.1
  • Visual Studio 2012
  • Visual Studio 2013

Nota: instalar VS2012 no es mucho problema, un par de GBs en el disco perdidos y además el tiempo de instalación que no es desdeñable; especialmente cuando instalas el update 3.

 

Saludos @ Home

El Bruno

image image image Google

[#HDI] HowTo: Listar dispositivos #HDI conectados en Windows 8.1

Hola!

Primero lo más importante: como me he dejado estar con este tema. En Windows 8.1 tenemos una nueva capacidad que nos permite trabajar con dispositivos HDI, con lo que mis posts sobre el lanza missiles USB conectado al Kinect o el notificador de correos por USB, ahora es mucho más simple.

Vamos por partes, el primer artículo que deberías leer al respecto es el siguiente:

En el mismo explican las capacidades que tenemos en Win81 para conectarnos con:

  • Impresoras 3D
  • Dispositivos USB
  • Human Devices Interfaces
  • etc.

Para este ejemplo el que me importa es el 3ro, la capacidad para conectar con HDI. Y vamos con un paso a paso donde crearemos una app Win81 que muestre los HDI conectados.

1. Crear una app Windows Store para Windows 8.1

2. Una vez creada la app, debemos definir en su manifiesto que la misma se conectará con un device HDI. El editor de appxmanifiest no soporta esta funcionalidad, con lo que debemos editar el mismo en modo texto. La sección que modificamos es la sección de Capabilities y en la misma definimos el acceso a HID.

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

   2: <Package xmlns="http://schemas.microsoft.com/appx/2010/manifest" 

   3:          xmlns:m2="http://schemas.microsoft.com/appx/2013/manifest">

   4: ...

   5: ...

   6:   <Capabilities>

   7:     <Capability Name="internetClient" />

   8:     <m2:DeviceCapability Name="humaninterfacedevice">

   9:       <m2:Device Id="any">

  10:         <m2:Function Type="usage:0001 FFFF"/>

  11:       </m2:Device>

  12:     </m2:DeviceCapability>

  13:   </Capabilities>

  14: </Package>

Importante: En el ejemplo anterior definimos el acceso a cualquier tipo de HDI (línea 10), sin embargo si conocemos los valores de Vendor Id y Product ID, podemos refinar el mismo como en el siguiente ejemplo:

   1: <wb:DeviceCapability Name="humaninterfacedevice">

   2:   <!--Light Sensor Device-->

   3:   <wb:Device Id="vidpid:1294 1320">

   4:     <wb:Function Type="usage:FF55 00A5" />

   5:   </wb:Device>

   6: </wb:DeviceCapability>

En próximos posts mostraré el detalle para un lanza misiles o el light notifier.

4. Una vez modificado el appxmanifiest, podemos agregar un listview y un boton para mostrar en el mismo los dispositivos conectados. La siguiente función realiza esta tarea.

   1: private async void EnumerateHidDevices()

   2: {

   3:     var deviceSelector = HidDevice.GetDeviceSelector(0xFF00, 0x0001);

   4:     var devices = await DeviceInformation.FindAllAsync(deviceSelector);

   5:  

   6:     if (ListViewDevices.Items == null) return;

   7:     ListViewDevices.Items.Clear();

   8:     foreach (var deviceInformation in devices)

   9:     {

  10:         ListViewDevices.Items.Add("Name: " + deviceInformation.Name);

  11:         ListViewDevices.Items.Add("- Id: " + deviceInformation.Id);

  12:         ListViewDevices.Items.Add("- Is Default: " + deviceInformation.IsDefault);

  13:         ListViewDevices.Items.Add("- Is Enabled: " + deviceInformation.IsEnabled);

  14:     }

  15: }

5. Si ejecutamos la aplicación, con el USB EMail Notifier (del que hablé aquí), veremos el siguiente resultado

image

Este es el sensor

image

Dentro del string de resultado, podemos ver que el identificador del device es el siguiente

  • Vendor Id: 1294
  • Product Id: 1320

Vemos que son los mismos valores que nos entrega el HID.

image

Y listo! ya podemos realizar un sondeo por todos los devices conectados a nuestro ordenador y en próximos posts mostraré como interactuar con los mismos.

 

Fuentes:

Saludos @ Home

El Bruno

image image image Google

[#VS2013] HowTo: Delayed start en algunos proyectos (y una solucion que no me deja dormir)

image

Hola.

Me parece un poco raro no encontrar una solución más elegante a este escenario:

Estoy trabajando con una solución de VS con

  • 1 Proyecto WebAPI
  • 1 Proyecto WPF
  • 1 Proyecto Win8

El proyecto WepAPI es además un hub de SignalR para que se comuniquen el proyecto WPF y el proyecto Win8. Aprovechado las capacidades de Lanzamiento de multiples proyectos de Visual Studio, lanzo al mismo tiempo los 3 proyectos para poder probar en local mis apps.

image

El problema está que tanto el proyecto WPF como el proyecto Win8, inicializan el “cliente signalR” en su AppStart(); y como el proyecto WebAPI tarda un poco, pues tengo una fiesta de timeouts de los buenos.

Se me ocurrió que tal vez alguien había creado un AddIn para Visual Studio que me permitiese controlar el tiempo de lanzamiento para cada proyecto, pero no lo encontré. Así que opté por una solución mucho más casera y sucia, muy sucia, agregar el siguiente código en el AppStart() de cada app:

   1: public static void DelayAppStart()

   2: {

   3: #if DEBUG

   4:     // delayed start of the app to be 

   5:     // used locally with the service layer

   6:     Thread.Sleep(5000);

   7: #endif

   8: }

En modo debug, cada app en su start se “detiene 5 segundos” antes de seguir si ejecución. Luego en Release, este código ya no sería ejecutado … Me da una mala espina que no veas (code smell que le dicen), aunque es la solución temporal.

¿Alguna idea qué me ayude a dormir mejor?

 

Saludos @ Home

El Bruno

image image image Google

[#AZURE] HowTo: usar archivos #SVG en proyectos web en AZURE

Hola!

hoy me encuentro con uno de esos errores de viernes que me roban 2 horas en algo que tendría que ser una acción de 10 minutos.

El escenario era simple, tenía que publicar una aplicación ASP.Net MVC con mucho Bootstrap dentro en Azure para validarlo con el equipo de USA. Desde la V2 del Azure SDK, esto solo son 2 clicks. Sin embargo, una vez publicado el website, me encuentro con que el site se pinta más raro que un huevo cuadrado. (????)

Asi que a ver que sucede. Después de ver un poco que pasa, me termino dando cuenta que el proceso de publicación de websites a AZURE no ha subido las imágenes con extensión .svg (Scalable Vector Graphics). Pues nada, a ver como se puede soluciona esto.

Por suerte, este post de los amigos de OdeToCode explica muy bien como agregar determinados tipos de archivo a proyectos Web para esta casuística. Lo que debemos hacer es modificar el archivo we.config y en la sección <system.webserver> agregar los elementos que necesitamos, por ejemplo.

<staticContent>
<remove fileExtension=".mp4"/>
<remove fileExtension=".ogv"/>
<remove fileExtension=".webm"/>
<remove fileExtension=".svg"/>
<mimeMap fileExtension=".mp4" mimeType="video/mp4" />
<mimeMap fileExtension=".ogv" mimeType="video/ogg" />
<mimeMap fileExtension=".webm" mimeType="video/webm" />
<mimeMap fileExtension=".svg" mimeType="image/svg+xml"/>
</staticContent>

Y listo !!!

Fuente: http://odetocode.com/blogs/scott/archive/2012/08/07/configuration-tips-for-asp-net-mvc-4-on-a-windows.aspx

Saludos @ La Finca

El Bruno

imageimageimageGoogle

[#VS2013] HowTo: cerrar SOLO algunas ventanas en el IDE

image

Hola!

Por lo general no soy de esas personas que tengan muchas ventanas abiertas en Windows. Mi teoría del “foco único” hace que solo tenga abiertas las aplicaciones las que necesito.

En el IDE de Visual Studio me pasa lo mismo, solo tengo abierta las clases que necesito. Y cuando cierro, lo hago como Chuck Norris >> hago una catarata de CTRL+F4 o un “Close all windows”.; en ese punto me toca empezar todo desde cero.

Ahora bien, me parece increíble descubrir recién ahora que … en el menú “Window // Windows” puedo ver todas las ventanas que tengo abierta y seleccionar las que quiero cerrar !!!

image

Veo que esto está en el IDE de VS2012 y VS2013, supongo que estará desde antes … Open-mouthed smile

Como dicen por ahí >> “nunca te irás a dormir sin aprender algo nuevo”

Saludos @ Home

El Bruno

image image image Google