• WarNov Developer Evangelist

    Cómo agregar y consultar info personalizada a Bing Maps

    • 0 Comments

    Bing Maps tiene abiertos sus servicios de mapeo, para que los desarrolladores puedan hacer uso de ellos. Como vemos en esa breve reseña del servicio, se tiene un tipo de cuenta gratuita (developer) para trabajar con estos servicios y otra paga (Enterprise).

    Cuando trabajamos con una cuenta de developer, solo podemos usar datos que ya tiene Bing Maps en sus bases de datos. Pero puede que nuestra necesidad de negocio requiera mapear puntos propios del negocio que no están en Bing Maps. Por ejemplo para tenerlos en un caché y que se dibujen siempre sin necesidad de requests adicionales a los servidores. Puede que además necesitemos obtener información personalizada y extendida de esos puntos personalizados y queramos hacver consultas sobre esa información. En ese caso, deberemos subir nuestra información a Bing Maps. Esta funcionalidad es brindada por Bing Spatial Data Services que solo es accesible en la versión Enterprise.

    Estos servicios proveen la funcionalidad de tener puntos de interés preestablecidos a través de fuentes de datos propias y generar diversas consultas tradicionales o geoespaciales sobre ellos. Aquí podemos encontrar algunos ejemplos de las implementaciones posibles.

     

    Las fuentes de datos personalizadas son accesibles muy fácilmente a través de directorios online que contienen ubicaciones (lat/long, campos de dirección y otros campos personalizados). Estos son creados cuando subimos y publicamos un archivo que contiene estos datos en un esquema estándar. Esto se hace a través del portal de Bing Maps o con el uso del API de administración de fuentes de datos.

    En conclusión, para poder manejar nuestros propios puntos como si fueran originarios de Bing Maps, hemos de subirlos a la nube de Bing Maps, a través de Bing Maps Data Services; una solución solo disponible para usuarios de tipo Enterprise.

  • WarNov Developer Evangelist

    Obteniendo lo mejor de Bing Maps en la Web

    • 1 Comments

    Los servicios de Mapas de Bing para desarrolladores nos ofrecen un conjunto enriquecido de herramientas para crear grandes experiencias basadas en mapas. Estos servicios están disponibles a través del veloz control de AJAX, una API de servicios basada en REST, un SDK para crear mash-ups y además SDKs móviles para Windows Phone, Android, iOS y  Windows 8.

    Enfocándonos ya en la alternativa para la web, a través del control de AJAX, existe un gran conjunto de operaciones disponibles que pueden apreciarse en vivo aquí. Podemos ver cómo se pueden crear mapas con sus opciones, añadir pushpins, figuras, capas, infoboxes, hacer consultas, ejecutar geolocalización, visualizar tráfico y direcciones para llegar, administrar datos espaciales y muchos más.

    Para usar estos servicios gratuitamente, se puede crear una cuenta de developer for free que permite el acceso a todas estas características siempre y cuando sea para sitios web públicos no protegidos con password con 125,000 sesiones o 500,000 transacciones por año. Esta es una excelente alternativa para probar los servicios, o usarlos en sitios públicos de un uso no tan alto.

    Sin embargo, ya en ambientes empresariales o de servicios a consumidores masivos, estos límites son sobrepasados y se requiere una alternativa más amplia. Esta se obtiene a través de una cuenta de tipo Enterprise, que es paga.

    Además de los límites de uso, otras ventajas que tienen las cuentas Enterprise las podemos encontrar aquí.

  • WarNov Developer Evangelist

    Cómo cambiar el nombre de una suscripción de Azure

    • 0 Comments

    Si ustedes como yo han tenido que manejar muchas cuentas y suscripciones de Azure al tiempo, habrán observado que muchas veces las suscripciones quedan con el mismo nombre y luego se hace muy difícil identificar cuál es cuál. Por ejemplo manejando las tools para consola bien sea desde Windows, Linux o MAC.

    Bien, esto se puede corregir sencillamente cambiando el nombre de la suscripción desde el portal de administración: https://account.windowsazure.com/subscriptions

    Allí se debe ingresar con la cuenta a través de la cual se adquirió el servicio (no es posible usar una cuenta de administrador asociada). Damos click sobre la suscripción que deseamos modificar y esto nos lleva al sumario de dicha suscripción. Al final de la página encontramos un conjunto de acciones disponibles:

    image

    De esas acciones escogemos Edit Subscription Details

    Y allí podremos cambiar el nombre de la suscripción y el administrador de la misma:

    image 

  • WarNov Developer Evangelist

    Usa el simulador de Windows 8 a discreción

    • 0 Comments

    Solo para recapitular un poco, recordemos que en Windows Phone, la aplicación que simula al aparato para poder hacer pruebas, se llama Emulator. La de Windows 8 se llama Simulator.

    El Emulator queda agregado al menú inicio automáticamente, tras la instalación del SDK, de manera que para abrirlo tanto en Windows 7 como en Windows 8 basta con escribir en el search: Emulator y luego seleccionarlo. Esto nos abre inmediatamente el emulador.

    Sin embargo, con Windows 8 no sucede esto. El Simulator, no queda agregado al menú inicio. Pero esto no quiere decir que no se pueda ejecutar independientemente de Visual Studio. Lo único que debes hacer es buscarlo y anclarlo de esta ruta si quieres:

    C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Simulator\11.0\Microsoft.Windows.Simulator.exe

    Para qué correr el simulador independientemente?

    image

    Esto te puede ser útil para sacar screen shots de las pantallas de la interfaz moderna, o probar apps de las que solo te han pasado el paquete, desde un entorno simulado en el que puedes cambiar resoluciones y demás.

  • WarNov Developer Evangelist

    Windows Apps: Para qué países debería publicarlas?

    • 2 Comments

    El Windows Store y el Windows Phone Store, nos permiten escoger los países en los que nuestras apps estarán disponibles. Podemos escoger uno o varios. Esta segmentación de países existe porque a veces queremos que nuestras apps estén en un solo país o en determinados países y además porque las leyes y costumbres de diversos países pueden provocar que el contenido de ciertas apps sea inaceptable.

    Esto nos lleva a que en general, cuando publicamos nuestra app, escojamos solo publicarla para el país objetivo, que la mayoría de las veces es el país del Desarrollo. Por decir algo, un desarrollador Colombiano, escoge publicar su app en Colombia únicamente.

    Esto no está mal, pero podría estar mejor… por qué?

    La mayoría de las apps están creadas en EEUU. Y los desarrolladores de allí, las han puesto solo disponibles para ese país. De manera que usuarios del resto del mundo que tengan configurado su store para sus países de origen (con un procedimiento como el descrito aquí), no las podrán ver. Es así como varios usuarios optarán por cambiar la región de su store a EEUU y de esa manera poder acceder a esas apps. Esto implica obviamente, que dejarán de ver las apps que solo estén creadas para el país de origen y no estén validadas para estar en EEUU.

    Entonces es aquí donde debemos tener en cuenta que si queremos que esos usuarios también encuentren nuestras apps, deberemos publicar nuestra app en EEUU también, aparte de haber seleccionado también nuestro país de origen. De esta manera aseguramos que tanto usuarios que tengan sus máquinas configuradas con nuestro país de origen, como aquellos que la hayan cambiado a EEUU, puedan encontrar la app.

    mapapp

    Desventajas? Ninguna. Podría pensarse que al poner la app en EEUU tendríamos crear una versión en Inglés para la misma. Pero este no es el caso. Podemos poner apps en cualquier idioma sobre cualquier país.

    En conclusión, si quieres que tus apps sean más visibles, aparte de ponerlas disponibles para los países target, piensa la posibilidad de ponerla disponible también para EEUU.

  • WarNov Developer Evangelist

    No encuentro apps de Windows 8 que mi amigo si tiene!

    • 2 Comments

    Cuando un desarrollador crea una app para Windows 8 y la va a publicar en el Windows Store, éste tiene la oportunidad de escoger el país o países para los cuales la quiere publicar. La mayor cantidad de apps (entre ellas las más populares), están publicadas solo para EEUU, por ejemplo. Entonces para poder accede a ellas, debemos modificar la ubicación de nuestra máquina, al menos mientras estas son descargadas. Luego podemos cambiar nuevamente la ubicación sin que las apps ya instaladas se vean afectadas. Ellas seguirán funcionando correctamente.

    Entonces por ejemplo si tu amigo tiene la app de eBay y tú no la encuentras, probablemente es porque a la hora de instalarla tu amigo tenía su Windows 8 localizado en Estados Unidos, y puede que tú por ejemplo lo tengas localizado en Colombia. Lo que tienes que hacer entonces es abrir el cuadro de diálogo de Location, buscando “region” en Settings y escogiendo “Region”

    image

    Esto te llevará a este cuadro de diálogo:

    Capture

    Y de aquí escogemos la región deseada:

    image

    Damos Apply, OK y luego volvemos a buscar la app que queremos.

     

    Ten en cuenta eso sí, que también te puede pasar el efecto contrario. Es decir: Dejaste tu Windows 8 en Estados Unido como Home Location por ejemplo y luego quieres instalar una app local que el desarrollador solo dispuso para Colombia. En ese caso, no la verás. Lo bueno eso sí, es que ya sabes cómo cambiar la ubicación a tu discreción!

  • WarNov Developer Evangelist

    Un Par de Curiosidades acerca del Snap View en Windows 8

    • 0 Comments

    La primera, es orientada a usuarios finales: Sabían que pueden cambiar el estado Snap de una App a través del teclado, sencillamente presionando Windows + .   (tecla Windows más tecla punto)

    Aquí aprovecho para contarles los shortcuts que más uso en Windows 8:

    • Windows+F para buscar de inmediato
    • Windows+I para pasar a settings de inmediato (allí encuentro el menu de apagar, por ejemplo)
    • Windows+C para abrir los charms y hacer por ejemplo un share
    • Windows+Z para abrir el appbar de una app, y ejecutar los comandos disponibles

    La segunda curiosidad es más orientada a desarrolladores y nos muestra cómo podemos obligar a restaurar la vista desde un estado de snap a un estado full, a través de código:

     

                //
                Windows.UI.ViewManagement.ApplicationView.TryUnsnap();
                //

    Pero… con qué fin?

    Sucede que en ocasiones ciertas funcionalidades de nuestras apps no funcionan o se ven correctamente en una visa de Snap por más que tratemos de contraer el espacio usado. En estos casos, recomiendo que cuando el usuario escoja dicha funcionalidad, tal vez mediante un tap, entonces obliguemos a la interfaz a expandirse para lograr el cometido.

  • WarNov Developer Evangelist

    3 Reglas de Oro para manejar archivos desde el código

    • 0 Comments
    Los archivos son elementos externos a los programas. De hecho, residen en elementos físicos que están fuera de los espacios lógicos de las apps o aplicaciones. Por ende, muchas situaciones inesperadas pueden ocurrir al trabajar con ellos. Aquí una tres puntos a tener en cuenta cuando manejamos archivos desde nuestros desarrollos, que no solo aplican para el sistema de archivos tradicional, sino también para el Isolated Storage de Windows Phone y el Local Storage de Windows 8.
    1. Las operaciones con archivos siempre deberían ir enmarcadas en un bloque try-catch para prevenir que excepciones inesperadas lleguen al usuario. Y en la medida de lo posible, cada excepción probable, ha de ser manejada por separado.
    2. Las operaciones con archivos siempre deberían ir enmarcadas en una sentencia Using, dado que esto provee una sintaxis conveniente que asegura una liberación de recursos efectiva. En el caso siguiente, vemos que no tenemos que preocuparnos por hacer dispose de los manejadores de stream. Esto también aplica por ejemplo a cadenas de conexión a bases de datos, que se pueden crear dentro de un using.
      using System;
      using System.IO;
      class Test
      {
          static void Main()
          {
              using (TextWriter w = File.CreateText("log.txt"))
              {
                  w.WriteLine("This is line one");
                  w.WriteLine("This is line two");
              }
              using (TextReader r = File.OpenText("log.txt"))
              {
                  string s;
                  while ((s = r.ReadLine()) != null)
                  {
                      Console.WriteLine(s);
                  }
              }
          }
      }
    3. Antes de usar un directorio o un archivo, chequee que éste existe. Las apis generalmente proporcionan elementos como File.Exists(); y Directory.Exists();
  • WarNov Developer Evangelist

    Algunas Verdades Útiles del Isolated Storage en Windows Phone 7

    • 0 Comments
    El Isolated Storage es el mecanismo ofrecido por Windows Phone para permitir que mantengamos el estado de nuestras apps, dado que para proteger el hardware, el software y al usuario de software malintencionado, el sistema de archivos convencional ha sido modificado para ser un esquema protegido en el cual una app no puede acceder a espacio de memoria física ni lógica de otras apps. Es así como el almacenamiento de cada app está completamente aislado de los espacios de almacenamiento de los demás y por eso recibe este nombre.

    Abundan posts y artículos que enseñan a usar el Isolated Storage: cómo almacenar y leer archivos y demás. Pero este post está dedicado a hablar de las circunstancias especiales que rodean al Isolated Storage y que en general solo la práctica lleva a concluirlas.

     

     
    • Si los espacios de almacenamiento están aislados, entonces cómo hacemos para que dos o más apps compartan datos?
      • En este caso la recomendación es almacenar los datos en la web o cloud, bien sea a través de web services o web apis.
    • Qué pasa con mi Isolated Storage, cuando le hago un update a la app? Se borra?
      • El Isolated Storage permanece intacto, así que la nueva versión de la app podrá seguir accediendo a los datos previamente guardados. Eso sí hay que tener en cuenta que si la app es desinstalada por parte del usuario, en ese caso el Isolated Storage desaparecerá. Por lo tanto si se desean mantener los datos, se recomienda hacer un update sencillo de la app, sin desinstalarla previamente.
      • Lo que si hay que tener MUY en cuenta, es que la nueva versión de la app esté capacitada para leer correctamente la data que estaba en el Iso; porque por ejemplo puede suceder que hayan serializado una clase en el Iso y luego en la nueva versión la estructura de la clase puede haber cambiado, lo que imposibilitará recuperar los datos almacenados. El desarrollador debe asegurarse de que todo funciona antes de subir la nueva versión de la app.
    • Qué cantidad de espacio tengo disponible en el Isolated Storage para mi app?
      • Tanta como para no ocupar más del 90% del espacio del teléfono.

    A pesar de que el Isolated Storage no es el FileSystem tradicional que conocemos, todas las buenas prácticas para manejar un sistema de archivos aplican. Las pueden observar en este post.

    • WarNov Developer Evangelist

      Soporte de Emergencia en Windows Azure

      • 0 Comments

      Este post es para responder a la pregunta:

      Qué pasa si tengo un caso de soporte supremamente urgente en Windows Azure? Cómo lo obtengo?

      Si estás en Colombia De lunes a Viernes y de 09:00 a 17:00, puedes llamar al 01-800-5-1-81409 donde te atenderán en ingles o en español.

      Si estás fuera de este horario, puedes llamar a Estados Unidos, donde te atenderán 24/7 en inglés: 1 (866) 676 6546.

      Otras opciones incluyen poner casos de soporte online en esta dirección.

    • WarNov Developer Evangelist

      SQLite: DB Locales en Win8

      • 5 Comments

      Hoy estuve charlando con Sorey Garcia acerca de la app que está creando para el lanzamiento de Windows 8. Me contaba que estaba implementando mucho en el backend, por que estaba siendo muy difícil para ella manejar información estructurada del lado del cliente, dado que la promesa de SQLite, que era la tecnología que se había puesto disponible por parte de terceros para este tipo de manejos, aún no estaba claramente desarrollada… sin embargo, eso hoy ya ha cambiado, y se lo hice saber:

      - Niña, hoy en día ya está completamente implementado!!!
      le dije… ella muy juiciosa y proactiva me respondió:
      - Súper! Voy a estudiarlo y a hacer un post, porque ya hace rato no escribo…
      - Eso sería excelente… - musité…
      - Porque yo iba a escribir ese post… te parece más bien si te invito al mío con el post que escribas??
      A ella le gusto la idea, y aquí está su post acerca de cómo usar SQLite en Win8:

      _________________________________________

      Sorey says:


      Aprovechando que hoy ando trabajando por estos días con Windows 8, hoy les traigo este tema que nos hizo sufrir a más de uno mientras esperábamos el RTM, en realidad esperábamos ansiosamente el wrapper de SQLite sin saberlo.

      SQLite es una biblioteca de software que implementa una en sí misma, sin servidor, sin necesidad de configuración, el motor de base de datos transaccional de SQL y su código fuente para SQLite es de dominio público.

      Pues bien, SQLite ahora está disponible para nuestras aplicaciones Windows 8 que requieren almacenamiento estructurado local. El dolor que teníamos es que hasta ahora no existía una implementación de un wrapper estable y aprobado por Microsoft, que nos permitiera usarlo en nuestras apps. Soy enfática en el tema de aprobado por Microsoft puesto que ya habían varias implementaciones por ahí que muchos estaban usando, sin embargo al enviar nuestras aplicaciones a ser certificadas para publicarse en el Windows Store, estas podían recibir observaciones. Sin embargo ya la librería oficial escrita en C++ y que nos provee todo el poder y funcionalidad de SQLite está disponible para nuestras apps.

      A continuación voy a hacer un ejemplo sencillo, paso a paso, mostrando como usarlo en una aplicación  Windows 8, este ejemplo está basado en el artículo publicado por Tim Heuer, una de mis fuentes recurrentes.

      Aclaro y soy muy enfática en ello, de la interfaz que use en el ejemplo, nada que ver con como debería ser una aplicación Windows 8, en este caso el ejemplo está más centrado en como usar SQLite.

      En primer lugar debemos instalar la extensión que nos permite usar la librería de C++ creada por el equipo de Windows. La encontramos en Tools > Extensions and Updates


      Luego buscamos los componentes en línea SQLite for Windows Runtime y la descargamos para que sea instalada en nuestra máquina.


      Se nos pide una confirmación, que aceptamos para proceder con la instalación.

       
      Visual Studio nos notifica que debemos reiniciar para que la extensión sea tomada.
       
       
      Reiniciamos y abrimos nuestro proyecto y seleccionamos la opción de añadir referencias.
       
       
      Debemos seleccionar SQLite y Microsoft Visual C++ Runtime para que la librería funcione correctamente.


      En mi caso Visual Studio reportaba un error, ya que debía seleccionar una plataforma específica a pesar de que en realidad se nombran todas las posibles en el mismo mensaje de error.
       

      Para corregir ingresamos a las propiedades del proyecto

       
      Y seleccionamos en la sección Build, la plataforma de destino.

       
      Ahora bien,  en este punto si tenemos el conocimiento podríamos acceder a la librería y usarla, sin embargo lo recomendado es buscar algún Wraper existente en C# como es mi caso, para no tener que lidiar con esto si no sabemos como hacerlo. Muchos de esos wraper se encuentran disponibles en NuGet. Si usamos VB debemos continuar los pasos hasta añadir el código del wraper, y compilar una librería en C# y luego referenciar esta desde nuestro proyecto VB.
       
      Para iniciar la instalación del wraper verificamos en las extensiones si lo tenemos instalado y si no procedemos a hacerlo igual que se hizo con el SQLite.
       

      Ahora bien ingresamos a NuGet para buscar un wrapper adecuado para nuestra aplicación.
       

      El wrapper recomendado en el artículo de base de este post es sqlite-net, lo seleccionamos e instalamos.
       

      Se nos pide seleccionar en que aplicación vamos a añadir el código, en este caso solo tengo un proyecto.
       
       
      Lo que sucede es que añaden dos API a nuestro código, una de ellas es una API que usa  Async , palabra que si no entiendes a este instante te recomiendo estudiar en Channel 9 o en el Blog de Walter Novoa
       
      En este post usaré Async, si quieres ver como usar la otra API, puedes ver el post de Tim Heuer o bien leer la documentación en español del Windows Developer Center

       
      Para esto también es muy importante tener los conceptos de objetos y ORM claros en tu cabeza. De hecho empezamos nuestro ejemplo construyendo la clase que mapea con la estructura de nuestra tabla de ejemplo. No debemos confundir la clase con la tabla, la tabla de hecho no la veremos, sin embargo es la clase quien nos ayudará a que finalmente se cree la tabla (esto solo suena enredado si no tienes claros los conceptos que te mencioné)
       
      La clase es sencilla, sin embargo podrás ver unos decoradores sobre ella
       
      Otros decoradores pueden ser AutoIncrement, MaxLength(30).

      Ahora creamos nuestra interfaz sencilla, les comparto el Document Outline para que se guien.
       

       
      Tambien pueden ver el XAML del formulario. Solo recuerden que hacer una aplicación Windows 8 requiere de mucho más, pero es bueno iniciar desde lo fácil.
       
      Aprovecho para recomendarles que aprendan a manejar Blend, de verdad es una gran herramienta para abstraernos un poco del arduo trabajo de hacer XAML, sin embargo es igual de importante entender y saber modifical el XAML cuando algo va mal.
       
       
      Ahora va el código del botón insertar como ven es bastante sencillo de usar cuando ya tienes el wrapper correcto.
       
       
      Aquí la aplicación funcionando.

       
      Luego tenemos el botón consultar que lleva un ListView los items de la base de datos, bastante sencillo tambien.

       
      Aqui vemos la aplicación mostrando los nombres registrados.

       
      Recuerden que hay mucho que hacer con respecto a las listas, y en XAML si sabemos manejar los enlaces correctamente podemos mostrar más información sin hacer más código, veamos un ejemplo de esto para terminar.
       
      Pueden modificar el DataTemplate del ListView así:


      Como mostraremos todo el objeto y no solo una parte de el modificamos el código.

       
      Y de esta forma podemos tener una lista con más forma, que de hecho podemos editar mucho mejor si usamos Expression Blend.

       
      Espero que este corto ejemplo les resulte de mucha utilidad. Nos vemos la próxima.
      ______________________________________________
       
       
      WarNov Says: Para estar al tanto de muchos otros posts muy buenos como este, les recomiendo que visiten el blog de Sorey.
       

      Sorey García es líder de la comunidad Avanet, MCS Gold en Colombia con especialidad de Windows Phone,
      Organizadora de Eventos como el Barcamp Medellin
      y también lidera la investigación tecnológica en su actual empleo.
    • WarNov Developer Evangelist

      Visual Studio 2012 – El Lanzamiento!

      • 0 Comments

      Para mí, Visual Studio no es solo un IDE. Es todo un micromundo al que me voy a vivir por noches enteras cuando inmerso en él, desarrollo soluciones que le van a hacer la vida más fácil a muchas personas.

      image

      Es una de las más poderosas herramientas para desarrollo construida por la humanidad y es fácil concluirlo si analizamos todo lo que nos ofrece:
      Desarrollo de aplicaciones de Consola, de Windows Forms, WPF, Silverlight, Web Sites, Web Applications, Web Services, Windows Services, Librerías de Clase, Windows Store Apps, Cloud Computing, Windows Phone, XBOX, DirectX, Office, Reporting Services, Sharepoint, Workflow y Lightswitch.

      Permite el desarrollo nativo y administrado para todas las plataformas soportadas por Microsoft Windows, Windows Mobile, Windows CE, Windows Phone, .NET Famework, .NET Compact Framework, Microsoft Silverlight y WinRT.

      El poderoso editor de código soporta IntelliSense y code refactoring para un desarrollo veloz y seguro. Además el debugger integrado puede funcionar a nivel de código y a nivel de máquina. Juntemos esto con los excelentes diseñadores: de interfaz gráfica, de web, clases, esquema de bases de datos, y ahora hasta Blend para Store Apps es incluido en el paquete sin instalar nada más!

      Y hay más: Soporte a diversos lenguajes: C/C++, VB.NET, C#, F#, motores de visualización web como HTML Simple, ASP.NET, ASP.NET MVC, y Razor y a través de instalaciones adicionales, M, Python, Ruby y muchos más. Además soporte a HTML, XHTML, HTML5, XML/XSLT, JavaScript, JSON y CSS3.

      Por si fuera poco, es totalmente extensible, con más de 3300 extensiones y plugins disponibles para descargar en la galería online; de manera que cada vez más y más funcionalidades se agregan a este micro mundo de desarrollo. Gracias a estos plugins es muy fácil en cualquier momento descargar componentes con código pre escrito, utilidades, herramientas y acceso por ejemplo a plataformas Open Source independientes como GitHub para administrar código fuente.

      Y hablando de administración de código fuente, basado en Visual Studio fue construido Team Foundation Server. Un servidor que se adapta perfectamente al IDE para poder hacer planeación y seguimiento del proyecto, así como control de código fuente, de ítems de trabajo y de evolución del proyecto, todo con una variedad de metodologías que incluyen tanto las ágiles como las convencionales.

      Visual Studio viene en todos los sabores de licenciamiento. Gratuito con: Versiones Express, Versiones Trial, Dreamspark, BizSpark, WebSiteSpark y las versiones con costo a través de las suscripciones MSDN.

      La historia de Visual Studio como IDE se remonta a Abril de 1995 cuando con la versión interna 4.0 se integraron por primera vez Visual Basic, Visual C++, Visual FoxPro y Visual SourceSafe. Ahora estamos con la versión interna 11.0 que con nombre Visual Studio 2012, se suma a todos los lanzamientos sin precedentes que hemos tenido este año, incluyendo mejoras como: Soporte a Windows Store Apps, LigthSwitch y Blend incluidos, editor de código completamente mejorado, exploradores renovados, mejoras en los editores web e inclusiones para tecnologías web modernas y muchas otras más, que pueden encontrar en este post. No se pierdan el lanzamiento online que estaremos presenciando el 12 de Septiembre.

    • WarNov Developer Evangelist

      Lidiando con la DeveloperStorage account en Azure

      • 0 Comments

      Todos sabemos que en Windows Azure existe una simulador de cómputo y otro del storage. Y que el simulador de storage usa tecnología SQL Server (puede estar en uno full, en una versión Express o hasta en LocalDB!

      Sabemos que si creamos un Cloud Service convencional, éste se autoconfigura para usar el Storage Emulator y luego uno cambia la conexión con datos de una cadena real.

      Pero si estamos hacienda una solución Azure bien personalizada (por ejemplo una app de consola que se conecta a Azure), entonces cómo hacemos para configurar este DevelopmentStorage manualmente?

      Primero un dato curioso y bien interesante:

      La Developer Storage Account tiene un nombre y un PAK (Primary Acces Key) bien definidos! Y son los mismos en cualquier lado que se use… por eso es obvio que no debemos usarla para producción. Pues bien, esos datos son:

      Account name: devstoreaccount1
      Account key: Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==

      Entonces ya tendríamos mucha de la información para armar la cadena de conexión manualmente… sin embargo, una conexión al storage de Azure es de la forma:

      "DefaultEndpointsProtocol={0};AccountName={1};AccountKey={2}"

      Así que nos faltaría indicar el DefaultEndpointsProtocol (en general es http o https); pero el Development Storage no soporta HTTP, así que no podríamos poner nada… la solución que nos da el SDK es que sencillamente como cadena de conexión escribamos: UseDevelopmentStorage=true así, sin clave, tal como aparece… de esta manera, nuestro proyecto siempre la tomará como la cuenta de acceso al Development Storage.

       

      Cuando ya necesitemos probar contra el storage real en Azure, ahí sí que tendremos un nombre y una PAK. Además decidiremos si enviamos por http o https. Y en ese caso, solo será necesario reemplazar los placeholders en la sentencia que describí. Al final en C# podríamos escribir:

      if (!CloudStorageAccount.TryParse(strConnection, out _storageAccount))

      Entonces si strConnection viene con el formato adecuado, el TryParse funciona y la cuenta de almacenamiento ya queda instanciada en _storageAccount, desde donde se podrán crear los clients de blobs, colas y tablas, independientemente si hemos pasado la cadena de DevelopmentStorage o la de un Storage en Azure.

      Para finalizar, si no requerimos comportamiento dinámico y sabemos que solo usaremos por ahora la cuenta del DevelopmentStorage podemos sencíllamente escribir:

      var account = CloudStorageAccount.DevelopmentStorageAccount;
    • WarNov Developer Evangelist

      Visual Studio 2012: What’s New.

      • 0 Comments

      Ya habrán leído en mi editorial para este mes del flash de MSDN por qué Visual Studio es todo un templo para desarrolladores.

      Tal como lo mencioné en ese post, aquí quiero profundizar acerca de solo algunas de las novedades que nos esperan con la versión Visual Studio 2012.

      Nuevo explorador de soluciones:

      Veamos un video que nos muestra sus nuevas características:

      Mejoras Generales:

      clip_image002

      La más obvia de todas, es la inclusión de los tipos de proyectos para Windows Store (apps WinRT). Para
      soportar estas apps, Blend ahora es incluido en la instalación de Visual Studio.

      Mejoras para el desarrollo Web:

      Nuevos templates, mejoras a los editores de HTML y CSS, inspector de páginas en vivo que muestra que parte de la página corresponde al código que se está viendo y nuevas herramientas de publicación. Grandes mejoras en el soporte a Javascript (IntelliSense, DOM Explorer y consola JavaScript).

      clip_image004

      Windows Phone 8:

      En bien sea liberado el SDK de WP8, el IDE lo soportará plenamente. Recordemos que se podrá elegir a que versión de Phone se quiere compilar: Windows Phone 7.X y 8.

      Windows Azure:

      Las mejoras incluyen soporte a caching distribuido, nuevas opciones de publicación, nuevos template4s y una instalación más liviana. Además integrándose con Team Foundation Server, se pueden generar escenarios de integración y despliegue continuo.

      Aplicaciones de Negocio

      Aquí hay grandes innovaciones. Por ejemplo en Sharepoint tenemos nuevos diseñadores para listas y tipos de contenido, nuevos templates para columnas y páginas Silverlight, así como nuevas opciones de despliegue. Adicionalmente ahora tiene características de ALM disponibles como profiling de performance, pruebas unitarias e IntelliTrace. Por si fuera poco, estrenamos un nuevo modelo de apps para Office y Sharepoint 2013 en el cual apps hechas por developers pueden ser hospedadas en el cloud (Office 365) usando tecnologías web para desarrollarlas. Visual Studio 2012 da soporte al desarrollo de estas apps a través de las Microsoft Office Developer Tools for Visual Studio 2012 – Preview. Y finalmente LightSwitch está disponible como parte de Visual Studio Professional, Premium y Ultimate. Ahora con un nuevo tema y la habilidad de acceder a fuentes de datos OData, integración con Active Directory y nuevos tipos de negocio. Más de LightSwitch aquí.

      Performance

      Entre muchos otros aspectos, por ejemplo el tiempo de carga de soluciones ha disminuido enormemente en VS2012:

      clip_image005

      ALM:

      Muchas son las mejoras en este sentido, sobretodo la integración con TFS, la inclusión de Pruebas xploratorias (Agile testing) y el soporte a distintos frameworks de pruebas tanto propios como de terceros: xUnit.net y NUnit entre otros, todos con soporte en el nuevo Test Explorer.

      clip_image007

      Lo visto hasta ahora, es apenas un ápice de todas las novedades incluidas en Visual Studio 2012. Para una referencia completa, visiten msdn.

    • WarNov Developer Evangelist

      Entrevista a WarNov para el boletín de MSDN Latam

      • 0 Comments

      Este es el copy de la entrevista que me hizo el equipo de Flash MSDN Latam, respecto a mi trabajo en Microsoft; refleja un poco de mi historia profesional al día de hoy:

       

      MSDN: ¿Quién eres en tus propias palabras?  

      warfboksmall 200x200

       WarNov: Soy una persona que ha moldeado su vida en torno a la tecnología a tal punto que mi trabajo que es precisamente sobre tecnología, para mí no es un trabajo sino más bien un hobbie que disfruto plenamente a cada momento. Adicionalmente soy alguien a quien le encanta aprender cada vez más sobre nuevos temas y sobretodo compartir ese conocimiento. Además me gusta mucho ayudar a que las personas puedan desplegar su potencial a través de ese conocimiento o de herramientas que yo pueda proveerles.


      MSDN: ¿Qué ha sido lo que te ha motivado para trabajar con tecnologías Microsoft?   WarNov: Inicié a trabajar con tecnologías Microsoft desde 2001 en medio de la universidad. Estudié en la Nacional de Colombia y allí no era muy bienvenido Microsoft en ese entonces. Pero de un modo u otro, se colaron unas cuantas copias licenciadas de Visual Studio .NET. Creo que a través de lo que se llamaba Células .NET en ese entonces llegaron a mis manos y empecé de ceros a leer la documentación de MSDN que venía en esos CDs (el internet todavía era precario). Noté la gran productividad, solidez y documentación que me proveían estas herramientas (antes había tenido que trabajar con C++ y Java en distintos entornos… pero de lejos Visual Studio .NET se los llevaba a todos). De ahí en adelante, luché para poder presentar todos mis trabajos en .NET y así me gradué con fuertes conocimientos en esta tecnología que cada vez se fueron acrecentando más y más al conocer todo el mundo de opciones que hoy día ofrecemos a la comunidad y a la industria.

       

      MSDN: ¿Cuál es el punto más fuerte que quisieras resaltar acerca del nuevo sistema operativo Windows 8?

      WarNov: Windows 8 es el mayor representante de la gran transformación que estamos teniendo dentro de Microsoft. Del nuevo aire que respiramos y que ha logrado tantos éxitos y tantos lanzamientos en un solo año. Del nuevo enfoque que estamos adquiriendo centrado al Cloud y al usuario final obviamente.

      Esto se ve reflejado en la totalmente nueva experiencia de usuario ofrecida. De hecho, cada vez que hago demos, me siento muy orgulloso de que además de poder mostrar que tenemos todos los features a los que ya estamos acostumbrados con las Tablet adicionales, puedo mostrar que cada uno de esos features mejora lo que había anteriormente. Pero eso no es nada… luego paso a mostrar que nos trae una gran cantidad de innovaciones no vistas anteriormente, como un share totalmente transversal a todas las apps que permite que éstas estén en contacto permanente con otras apps y con el sistema, un search para buscar dentro de una app desde cualquier parte de Windows, o el snap view que nos permite tener dos apps en la pantalla al mismo tiempo, entre muchos otros.

       

      MSDN: Cuéntanos cuáles crees que son las tres fortalezas del nuevo paquete de desarrollo de Visual Studio 2012

       

       

      WarNov: La más importante diría yo: El soporte para desarrollo de Apps WinRT; esto, entre otras, trae como consecuencia que Blend se incluya también en la instalación de Visual Studio, sin costo adicional!   
      Soporte a GIT. Cada vez logramos abrir más nuestros productos y tecnologías al mundo. Es así como ahora nativamente vamos a poder hacer push de nuestro código desde Visual Studio a repositorios de naturaleza Open Source, como GIT.
      Lightswitch nativo: La poderosa herramienta de desarrollo rápido de aplicaciones basadas en formularios y datos, ahora viene out of the box con Visual Studio y no hay que comprarla aparte. Además, ahora soporta HTML5 para llegar a todo lado.

      Son muchas más las ventajas y precisamente estaré escribiendo un post al respecto.

       

       

      MSDN: ¿Qué le recomendarías a los Desarrolladores que estén comenzando su carrera profesional y desean utilizar tecnologías Microsoft dentro de su organización?  



      WarNov: La clave está en leer. Leer bien. Leer y desarrollar. Hay que leer mucho para llegar a ser brillante en esta profesión (y en muchas otras). Microsoft afortunadamente tiene teras de documentación en la Web… MSDN tiene que ser su biblia técnica. Es de notar que el idioma por defecto de la literatura tecnológica de desarrollo es el inglés. Así que un buen developer debería esforzarse bastante por tener un buen nivel en el manejo de este idioma.
      No se angustien ni pierdan oportunidades con mitos irreales acerca de que Microsoft es cerrado, privativo o costoso. Si quieren arrancar hay muchas alternativas con las que pueden tener nuestras herramientas sin costo: Versiones Express, Versiones Trial, Dreamspark, BizSpark, WebSiteSpark. En Microsoft los apoyamos en sus inicios para que puedan crecer sin costo… luego cuando ya sean una empresa grande, allí si comenzaremos a hablar de licenciamiento.

       


      MSDN: Para un desarrollador que está trabajando en una nueva aplicación, ¿qué le recomendarías? ¿desarrollo para la maquina cliente, para web, o nube?



       WarNov: Esta es la pregunta que quizá más fácilmente origina un depende.
      Hoy en día está de moda el desarrollo de apps. Hace un año era la nube. Hace dos era la web. Pero la industria del software no es cuestión de moda, sino de soluciones adecuadas. La recomendación por ende, viene entonces dada por los requisitos del cliente y sería muy extenso mencionar aquí cuando usar cada tipo de enfoque. Lo que sí puedo mencionar, es que los tres enfoques son muy válidos hoy en día.

      No obstante, me gustaría recomendar que los nuevos desarrolladores aprendan acerca del desarrollo de apps, pues esto es el fiel reflejo de la evolución de la industria y habrá mucha ocupación para aquellos que sepan de esto. Además, luego será fácil aprender otro tipo de tecnologías como la web, o de backend como Cloud Computing.

      MSDN: ¿Qué  experiencia laboral interesante sobre desarrollo con tecnologías Microsoft puedes compartir con la comunidad?

      WarNovCodonosor Full Desktop
       
      WarNov: Toda mi experiencia laboral ha sido con Microsoft, desde 2001 cuando descubrí Microsoft Access. Hice un aplicativo de manejo de cartera para vendedores puerta a puerta a crédito. Abandoné la universidad que apenas acababa de empezar para correr mi empresa. Esto me permitió viajar por todo el país vendiendo mi solución, y nunca me llamaron por soporte. De resto para resaltar puedo contarles que luego trabajé desde Colombia para una empresa de Estados Unidos y allí tuve la oportunidad de crear el lenguaje APL.NET que era una adaptación del lenguaje APL (basado en signos y orientado al campo financiero y de actuaría) para que fuese CLS compliant; es decir que fuera otro de los muchos lenguajes de la familia .NET, lo que lo modernizó y amplió su espectro de acción. Luego de esto trabajé ya como desarrollador en una casa de software, donde pasé a ser líder técnico y luego arquitecto de soluciones .NET. De allí pasé a otra empresa de publicidad a ser arquitecto de portales de páginas amarillas y luego comencé a trabaja en Microsoft, donde he ganado algunos premios :)

      MSDN: Hace poco obtuviste un reconocimiento muy importante en tu carrera profesional, ¿puedes compartir con nosotros los detalles?

      image
       
      WarNov: El MGX es como la fiesta internacional de Microsoft que cada año reúne a 20K de los casi 100K empleados que hay en el mundo. Allí entre otras muchas actividades se premian a los empleados más destacados. Un día del evento estaba yo sentado por allá en la última fila, cuando estaban premiando a los mejores en su cargo a nivel mundial. Y cuál no sería mi sorpresa, cuando me mencionaron como el ganador al premio de mejor Developer Evangelist del Mundo! No lo podía creer mientras recorría todo el camino para ir a recibir el trofeo. Para mí este ha sido uno de los más importantes logros a nivel profesional en mi carrera.


      MSDN: Hablando sobre Surface, ¿Cuál es el potencial de las aplicaciones para nuestra región?



      WarNov: Surface es nuestro propio dispositivo creado para brillar con Windows 8. En principio va a estar disponible en Estados Unidos. Pero mientras llega a nuestra región, tendremos innumerables dispositivos de los fabricantes tradicionales como Dell, Acer, ASUS, Lenovo, Samsung y muchos más. Solo en Colombia se espera que durante el próximo año se vendan más de 3 millones de dispositivos.

      Todos esos dispositivos serán una vitrina para las apps WinRT. Entonces es un gran momento para ser desarrollador de dichas apps, pues claramente si construimos la app adecuada, podríamos llegar a resolver de una vez por todas, nuestra vida financiera de esta manera. El Windows Store estará abierto para todo el mundo. Así que hasta el developer del pueblo más apartado en los andes podrá subir su app y venderla en todo el mundo. Realmente las posibilidades que se abren solo son limitadas por nuestra imaginación y empeño para desarrollar apps.

       

      MSDN: Nombra 3 recursos indispensables que quieras recomendarle a la comunidad


      WarNov: El newsletter de MSDN de la región nos mantiene actualizados con artículos muy importantes que provienen de todo el continente y lo mejor, en nuestro idioma. Cuando estaba arrancando mi carrera era mi principal fuente de actualización.
      La cuenta de twitter @msdevcol está dedicada sustancialmente a promulgar información acerca de nuevos artículos producidos por la comunidad de desarrolladores Microsoft de Colombia
      El portal de MSDN. Tengo la firme convicción que allí es donde se hacen los Developers más tesos de la industria.

    • WarNov Developer Evangelist

      Publicación de WinRT Apps al Windows Store

      • 0 Comments

      UPDATE: Me han preguntado bastante por los costos de la suscripción. En Colombia, para individuos es de COP$90.000 y para companies es de COP$180.000

      Capture

      En esta ocasión me complace invitar a mi blog a uno de nuestros MCS: Róbinson Moscoso. Quien hace parte del core de la comunidad BDotNet y además de su amplio trabajo con la comunidad, es emprendedor y también pasó por los laboratorios de excelencia de Apps WinRT que ejecutamos en Colombia son su App Sipse Microfinanzas, con la que adquirió gran experiencia en el desarrollo de apps para el Windows Store y además ganó un token para acceder al store gratuitamente por un año.

      Hoy nos cuenta su experiencia, acerca de los pasos que se han de seguir para subir una app al Windows Store:

      Dentro de las oportunidades que se vienen con Windows 8 es la de poder ofrecer nuestras aplicaciones a través del Windows app store. En este artículo veremos los pasos para subir nuestras apps:

      1. Registro:

      Lo primero es ir al Windows Dev Center (http://msdn.microsoft.com/en-us/windows/apps) e iniciar sesión con el live id.
      Seguido vamos a la opción de Dashboard, en la cual iniciamos el proceso de registro, seleccionando el país en el que nos encontramos, para nuestro caso “Colombia”


      clip_image001


      Una vez en la ventana de registro llenamos la información correspondiente. Para tener en cuenta, el código postal lo podemos encontrar en la página de 4-72 (aplica para Colombia: http://190.26.208.149/CodigosPostales/Index.html#app=76ee&4817-selectedIndex=1)


      clip_image002


      Una vez hacemos clic en siguiente debemos leer y aceptar el contrato (Application Development Agreement)
      clip_image003

       

      2. PRECIO y pago

      En la página se nos especifica el precio a pagar por el registro, si se tiene un código se puede incluir en esta parte.


      clip_image004


      Una vez se hace clic en siguiente se activa la ventana de pago, en la cual registramos la información de una Tarjeta de Crédito por medio de la cual se hará el pago.


      clip_image005


      Una vez registrados los datos del medio de pago se debe hacer la confirmación de la compra:


      clip_image006


      Una vez realizados estos pasos nos llega un correo de conformación de la creación de la cuenta y del pago realizado. Ahora ya podemos iniciar nuestro trabajo en el dashboard


      clip_image007

       

      3. SUBIR UNA APP

      Una vez ingresamos al Dash Board podemos iniciar con el proceso de carga de nuestra aplicación, para ello utilizamos el link Submit an app:


      clip_image008


      Para subir la app nos pide los siguientes pasos:


      clip_image009

      • App Name

      Se debe reservar el nombre que tendrá la app.


      clip_image010


      clip_image011

      • Selling details (Opciones para la venta)

      En esta opción se determina el precio, y si aplica en periodo de prueba de la app, para nuestro caso nuestra app será gratis (Free).
      Además en esta opción se debe seleccionar en que mercados quedará disponible, teniendo en cuenta las opciones y palabras que tiene nuestra app, pues una palabra común en el dialecto colombiano, puede ser mal vista en otra región, lo cual puede causas que la app no sea subida al app store.


      clip_image012


      También se debe seleccionar la fecha en que será lanzada nuestra app, la primera opción es publicarla una vez pase el proceso certificación. 
      Igualmente se debe seleccionar la categoría sobre la cual se alojará la app, en mi caso “Business” .
      Se debe también seleccionar si la app requiere para funcionar algunas especificaciones de hardware, particularmente si el dispositivo debe tener alguna versión de DirectX o si requiere dispositivos con más de 2GB de RAM.
      Se debe seleccionar si la app  cumple con las directrices de accesibilidad, importante tener en cuenta que si la app no cumple con alguna de las opciones de accesibilidad descritas en la guía y es seleccionada esta opción, la app no será certificada.


      clip_image013

      • Características avanzadas

      clip_image014


      En este apartado configuramos

      1. si la app y cuenta con  “Push notifications and Live Connect services”  los cuales deben ser configurados antes de subir la app para la certificacion.

      2. “In-app offers” si se quiere configurar ofertas dentro de la aplicación.

      • Audiencia a quien va dirigida la app (Age rating and rating certificates)

      Se debe seleccionar para que público puede estar disponible la app, hay que tener en cuenta que Windows Store no permite subir aplicaciones explicitas para adultos únicamente (por ejemplo apps de contenido sexual)

      clip_image015

      • Criptografía (Cryptography)

      Permite especificar si la app usa encriptación.
      clip_image016

      • Paquetes

      Es necesario subir el paquete de nuestra app, este paquete se puede crear a través de Visual Studio (proximante publicaré un post al respecto)
      clip_image017

      • Descripción

      Una ves tenemos los paquetes subidos, precedemos a dar una descripción de nuestra app, en la cual se pide:

      1. Descripción de la app, que será el texto que leerán nuestros usuarios antes de descargar la app
      2. App Features (Características)
      3. Keywords (Palabras clave)
      4. Description of update (descripción de la actualización)
      5. Copyright and trademark (Derechos de autor)
      6. Additional license terms (Términos adicionales de la licencia)
      7. Screenshots (pantallazos)
      8. Promotional images (imágenes promocionales)
      9. Recommended hardware (Hardware recomendado)
      10. Website
      11. Support contact info (Información de contacto para soporte)
      12. Privacy policy ( Política de privacidad)

      clip_image018

      • Notas a los probadores (Notes to testers)

      Permite escribir información que ayuda a los probadores a entender y a utilizar la aplicación. La información ingresada en esta parte no será vista por los usuarios de la app.

      clip_image019

      4. Enviar la app para certificación

      Una vez se han completado todos los pasos se habilita la opción de enviar la app para la respectiva certificación.


      clip_image020


      Y finalize Robinson diciéndonos: “Bueno, espero sea de utilidad este pequeño tutorial sobre el proceso de carga de nuestras apps”

       

      Este mismo tutorial, así como muchos otros posts interesantes adicionales, los pueden encontrar en el blog de Robinson.

    • WarNov Developer Evangelist

      Autodocumentación .NET: XMLDoc+GhostDoc+Sandcastle

      • 5 Comments

      Sin documentación, el software nace, crece, se vuelve spaghetti, desquicia a los developers y todos mueren.

      Aquí una guía súper rápida para que la documentación no sea un pain, y además tener el motivador de que al final vamos a poder tener páginas de documentación estilo MSDN, usando la última versión de Visual Studio: la 2012.

      Ingredientes:

      • Visual Studio 2012
        • No necesita presentación
      • Ghost Doc
        • Es una extensión para Visual Studio que genera comentarios de documentación XML automáticamente para métodos y propiedades, basándose en su tipo, parámetros, nombre y otra información contextual. Es un addin que además desinstala automáticamente versiones anteriores y las actualize con las nuevas que estemos instalando.
      • Sandcastle Help File Builder
        • Sandcastle es una herramienta creada por Microsoft y publicada Open Source en Codeplex para crear documentación Estilo MSD basándose en los assemblies .NET y sus comentarios XML asociados. Es un tool basado en línea de comandos y no tiene una GUI pre-definida. Así que la curva de aprendizaje es alta. Afortunadamente la aplicación Sandcastle Help Builder ha sido construida sobre Sandcastle para proveer un fácil manejo de todas las opciones que tiene Sandcastle, de tal manera que el uso sea parecido al del antiguo NDoc.
          La instalación de esta aplicación requiere varios paquetes preinstalados y configurados. Por eso viene con un wizard bastante amigable que ayuda a la configuración.

      Una vez tenemos todo instalado, pasemos a observar cómo generar la documentación!

    • WarNov Developer Evangelist

      Windows 8 RTM Dev Machine

      • 2 Comments

      Tal vez ustedes ya hayan leído un post parecido a este aquí en mi blog, en el que enseñaba a dejar lista una máquina con Windows 8 RP para desarrollar todo lo que tradicionalmente se desarrolla con Visual Studio mas Windows Phone, Windows Azure y WinRT Apps.

      Pues bien, consideren este post como una actualización del mismo, para aquellos que ya tienen la última versión de Windows 8 (RTM) y la última de Visual Studio 2012, dado que el hecho de que tengamos las versiones finales, no significa que los tools que añadimos a Visual Studio para desarrollar para Azure o para Phone estén listos. La idea, es que estos últimos estén listos no más tarde que el día de GA (Disponibilidad General) de Windows 8 que es el 26 de octubre.

      Efectivamente, si instalamos Windows 8 RTM y luego VS2012, ya tendremos listo el ambiente para Desarrollo WinForms, Web WinRT y otros. Pero ni Phone ni Azure estarán listos. Es preferible preparar la máquina primero para Azure antes de Phone.

      La forma para poder continuar desarrollando para Azure y Phone es la siguiente:

      Azure

      1. Instalar Win8 RTM
      2. Instalar VS2012 RTM
      3. Abriendo un nuevo proyecto de tipo Cloud en VS2012 como ya es costumbre cuando no tenemos Azure, nos aparecerá un link para ir a descargar lo necesario a través del WebPI (Web Platform Instaler). Pero aquí puede pasar que nos ocurre un error que nos dice que se deben desinstalar todas las versiones previas al RTM de VS2012. Cuando cerramos este mensaje de error nos aparece la ventana que vemos a continuación:

      azureen8

      Esto no es el acabose sin embargo…. solo basta con seguir los “Direct Download Link”. Uno por uno y en orden. Al final, ya podremos desarrollar en Azure. Recuerden que por ahora solo está disponible el framework 4.0 para Azure. Así que Deben seleccionarlo en la lista cuando vayan a crear un Nuevo proyecto.

       

      Phone

      Tengan en cuenta que el SDK 7.1 solo está disponible con Visual Studio 2010.

      Así que pueden instalar todo el VS2010 o la versión express para Phone. Yo recomiendo lo segundo, pues se instala automáticamente con el SDK y no ocupa tanto espacio solo para Phone, pues el resto de funcionalidades andan correctamente en VS2012.     

       

      1. Instalar Win8 RTM
      2. Instalar VS2012 RTM
      3. Instalar la última versión de Games for Windows – LIVE. Esto es requerido para poder desarrollar juegos con XNA para WP7, dado que Windows 8 requiere archivos más nuevos que los que vienen con el SDK 7.1
      4. Instalar Windows Phone SDK 7.1 (Incluye gratuitamente Visual Studio Express for Windows Phone 7)
        1. En este paso, puede que el sistema pida instalar antes el Service Pack 1 de VS2010. Luego de esto ya se podrá instalar el SDK 7.1 Sí: Se puede instalar el service pack de VS2010 sin tener el VS2010 instalado.
      5. Instalar el patch 7.1.1
      6. Instalar Zune
      7. Desarrollar en WP7!!!
    • WarNov Developer Evangelist

      This is for Developers…

      • 2 Comments

      Esto es para los developers...
      los geeks,
      los nerds,
      los hackers...

      Aquellos que ven las cosas,
      de manera diferente.

      Ellos no tienen reglas que los aten.
      Y no tienen respeto por los estados establecidos.

      Trabajan en las noches,
      inician compañías,
      se sientan solos...
      con sus audífonos... porque están ocupados
      porque están ocupados...
      cambiando
      el mundo...

      Ellos inventan

      Codifican,
      exploran,
      inspiran


      Empujan la internet hacia adelante

      Depronto esllos estén,
      locos...
      de lo contrario como podrían estar al frente de una pantalla vacía
      y ver una obra de arte....
      o al frente de miles de líneas de código,
      y ver el futuro

      Mientras unos los ven como geeks,
      en realidad son genios...


      Porque aquellos que pueden crear magia...
      con código,
      son quellos que algún día,
      dominarán el mundo.

      Wistia
    • WarNov Developer Evangelist

      WindowsRT + Telerik

      • 2 Comments

      En mi experiencia de evangelización muy pero muy temprana en Windows 8, he visto que una de las principales falencias de la plataforma WindowsRT, es la inexistencia de controles para presentar información estadística tales como pie, scatt, lines, así como controles avanzados con autocomplete y en general todos esos a los que ya estamos acostumbrados en Web, Silverlight y Phone, gracias a los trabajos de terceros como Infragistics y Telerik entre muchos otros.

      Es una gran falencia, pues muchas apps quieren presentar a los usuarios información tipo Dash Board y requieren de este conjunto de controles para funcionar más adecuadamente liberando de trabajo muy pesado al desarrollador.

      Afortunadamente, Telerik anunció y efectívamente liberó en Beta los controles para Metro Style Apps. Estos están disponibles tanto para XAML como para HTML5+JS (Aunque a hoy algunos tienen ambas versiones, otros solo están disponibles para uno u otro enfoque, encontrándose más en este momento para HTML5).

      El instalador de estos controles se puede bajar a modo de evaluación desde aquí. Y una vez instalados en sus máquinas con Windows 8 y Visual Studio 2012 RC, se pueden hacer desarrollos como el que les muestro a continuación en el siguiente video, usando XAML.

      Como lo mencioné en el video, en el Framework 4.5 hay una interesante nueva característica llamada Caller Information que nos ha servido para construir este ejemplo. Si desea saber más de ella, visite este post donde la explico mejor, y luego este otro donde la implemento.

      Espero en un siguiente post mostrar un ejercicio similar, pero con HTML5.

    • WarNov Developer Evangelist

      INotifyPropertyChanged sin quemar nombre de propiedad

      • 0 Comments

      Aunque la información del caller demuestra ser muy útil para la depuración, existe un uso colateral muy interesante sobretodo para el mundo de las apps, donde el binding es muy usado.

      En las apps es muy frecuente enlazar datos a vistas a través de paradigmas como MVVM. Y este enlace de datos requiere de clases que soporten notificación de cambios en las propiedades, de manera que la interfaz siempre permanezca sincronizada con los valores a los que está ligada y que se encuentra mostrando.

      Es así como si tenemos una clase del Modelo, destinada a ligarse a una vista bien sea a través de un controlador o de una clase VistaModelo, lo más común es que queramos que implemente  INotifyPropertyChanged con el fin de que se incluya el evento de tipo PropertyChangedEventHandler que se dispara cada vez que una propiedad cambia.

      Esto se logra de la siguiente manera:

      class Person:INotifyPropertyChanged
      {
          public event PropertyChangedEventHandler PropertyChanged;
      
          string _name;
          public string Name
          {
              get { return _name; }
              set 
              {
                  _name = value;
                  NotifyPropertyChanged("Name");
              }
          }
      
          int _age;
          public int Age
          {
              get { return _age; }
              set 
              { 
                  _age = value;
                  NotifyPropertyChanged("Age");
              }
          }
      
          private void NotifyPropertyChanged(string propertyName)
          {
              if (PropertyChanged != null)
              {
                  PropertyChanged(this, 
      new PropertyChangedEventArgs(propertyName)); } } }

      Como observamos, siempre nos toca poner como parámetro de NotifyPropertyChanged el nombre de la propiedad en un string. Esto puede generar algunos problemas sobretodo a la hora del refactoring tras cambiar el nombre de alguna propiedad, pues dado que estos parámetros son strings, el refactoring no cambiará automáticamente estos valores y además no podríamos detectar el error en tiempo de compilación, sino que obtendríamos una excepción difícil de descifrar en tiempo de ejecución si cambiamos por ejemplo Name por SecondName.

      Para evitar hacer estas referencias quemadas como strings, podemos aprovechar el hecho de que el Framework 4.5 incluye información del caller. Así pues, lo único que hacemos es citar el nombre del miembro que hizo el llamado que provocó el cambio en la propiedad. En este caso, ese nombre, es precisamente el nombre de la propiedad que se está modificando, así que independientemente de que cambie, siempre se referenciará la propiedad adecuada:

      class Person:INotifyPropertyChanged
          {
              public event PropertyChangedEventHandler PropertyChanged;
      
              string _name;
              public string Name
              {
                  get { return _name; }
                  set 
                  {
                      _name = value;
                      NotifyPropertyChanged();
                  }
              }
      
              int _age;
              public int Age
              {
                  get { return _age; }
                  set 
                  { 
                      _age = value;
                      NotifyPropertyChanged();
                  }
              }
      
              private void NotifyPropertyChanged(
      [
      CallerMemberName] string propertyName="") { if (PropertyChanged != null) { PropertyChanged(this,
      new PropertyChangedEventArgs(propertyName)); } } }

      Como se observa, ya no es necesario quemar el nombre de la propiedad, dado que CallerMemberName representará ese nombre en el parámetro propertyName que al ser opcional, no requiere ser llamado por nosotros, sino que es llenado por el servicio de compilación. Esta es una práctica que espero tendrá una amplia difusión en las apps de Windows 8 y de Windows Phone 8.

    • WarNov Developer Evangelist

      Caller Information: Quién me llamó?

      • 1 Comments

      Una de las inclusiones que más me ha gustado en el Framework 4.5, es la adición de mecanismos que nos permiten identificar información acerca de quién llamó un método de nuestro código, en tiempo de ejecución.

      Así pues, la información que se puede obtener comprende el path del archivo que contiene el código que hizo el llamado, la línea dentro de ese archivo y el nombre del miembro que hizo el llamado. Obviamente toda esta información nos hace mucho sentido cuando hablamos de hacer tracing, depuración y diagnóstico de nuestras aplicaciones.

      La forma de obtener esta información es muy sencilla, a través de nuevos atributos que son aplicados como parámetros opcionales con un valor por defecto, dentro del método que queremos inspeccionar. Estos atributos todos se encuentran dentro del namespace System.Runtime.CompilerServices

      En la siguiente aplicación de consola de ejemplo, observamos cómo podemos usar estos nuevos atributos para obtener información acerca de quién llamó un método:

      using System;
      using System.Runtime.CompilerServices;
      
      
      namespace ConsoleApplication2
      {
          class Program
          {
              static void Main(string[] args)
              {
                  WriteMessage("Mensaje de Trazado");
              }
      
              private static void WriteMessage(string message,
                  [CallerMemberName] string caller="",
                  [CallerLineNumber] int lineNumber=0,
                  [CallerFilePath] string path = "")
              {
                  Console.WriteLine
                      ("Mensaje:{0}\nLlamado:{1}\nArchivo:{2}\nLínea {3}",
                      message,
                      caller,
                      path,
                      lineNumber);
                  Console.ReadLine();
              }
          }
      }

      El resultado de la ejecución es como sigue:

      image

      Como se observa, este mecanismo nos ha permitido tener información muy específica de quién llamó determinado método, sin necesidad de alterar la forma en que se llamó el método, pues los parámetros que tienen la información de caller son opcionales, de manera que es transparente para la línea de código que llama al método.

      Aunque la información del caller demuestra ser muy útil para la depuración, existe un uso colateral muy interesante sobretodo para el mundo de las apps, donde el binding es muy usado. Esto lo veremos en mi siguiente post.

    • WarNov Developer Evangelist

      APPS: Depurando un error de navegación desde un Tile

      • 0 Comments

      Tanto Windows Phone como Windows 8 tienen la capacidad de poder adicionar un tile primario y uno secundario al inicio del teléfono o la tablet. Cuando se hace tap sobre alguno de estos tiles, se genera una navegación hacia alguna página o vista dentro de la app.

      Pero en ocasiones al tratar de lanzar la app desde un tile, la app abre y de inmediato se cierra. Esto es obviamente causado por un error en la forma en que programamos la navegación o en el estado que se encuentra la app.

      En condiciones normales pondríamos un breakpoint y chequearíamos que sucede; pero dado que estamos lanzando la app desde el inicio, esto quiere decir el el debugger ya no está anclado al proceso de ejecución de la app, así que no podemos hacer depuración.

      Cómo proceder entonces para detectar el error?
      Una alternativa muy que traigo de mis batallas en la Web, sencillamente consiste en manipular el evento de error no manejado en la clase principal de la ejecución... en Web, esta era la Global.asax.cs y en las apps es App.xaml.cs. Por ejemplo en Windows Phone tenemos dentro de esta clase el manejador del evento:

          private void Application_UnhandledException(object sender, 
              ApplicationUnhandledExceptionEventArgs e)
          {
              if (System.Diagnostics.Debugger.IsAttached)
              {
                  // An unhandled exception has occurred; break into the debugger
                  System.Diagnostics.Debugger.Break();
              }
              var storage = IsolatedStorageFile.GetUserStoreForApplication();
              using (var writer = new StreamWriter(new IsolatedStorageFileStream(
                  "LastError1.txt", FileMode.CreateNew, storage)))
              {
                  writer.Write(DateTime.Now.ToLongTimeString() + "\n\n");
                  writer.Write(WOW.HistoryTracker.ToString());
                  writer.Write(e.ExceptionObject.Message);
              }
          }
      

      Como se observa, lo que hice fue adicionalmente a las líneas de debugging, adicionar una pequeña rutina que copia el contenido de la última excepción a un archivo en el Isolated Storage, que queda como si de caja negra de avión se tratará, con las evidencias de lo que pasó antes de que el avión (la app) se estrellara. De esta manera podríamos por ejemplo poner pistas dentro del código que se escribieran en el archivo para saber en donde está el error. Por ejemplo, podemos tener un StringBuilder global que vaya acumulando la historia de hasta donde se llegó y luego descargue todo su contenido en el archivo. De hecho, podemos usar directivas de preprocesador, para estructurar más el asunto:

      #if DEBUG
      
                  if (WOW.HistoryTracker == null)
                  {
                      WOW.HistoryTracker = new System.Text.StringBuilder();
                      WOW.HistoryTracker.AppendLine("I was Null");
                  }
                  WOW.HistoryTracker.AppendLine("Directive is working.");
      #endif
      

      Luego sencillamente descargamos el contenido del isolated storage a una carpeta en el sistema de archivos convencional, y revisamos:

      image

      de esta manera ya podemos saber qué nos hace falta arreglar para que la app se lance bien por ejemplo desde un tile secundario.

    • WarNov Developer Evangelist

      Copiando Archivos al Isolated Storage de Windows Phone

      • 0 Comments

      Copiar archivos al Isolated Storage de Windows Phone no es tan sencillo como crear nuevo contenido allí.

      Copiar en este contexto, significa tomar algún archivo que esté almacenado en nuestro proyecto como contenido por ejemplo y luego pasarlo al Isolated Storage. Las situaciones en que esto hace sentido, son por ejemplo cuando queremos tener imágenes para los tiles, o para mostrar como contenido estático formateado en Web a través del WebBrowser Control de WP.

      Como ejemplo aquí trato de escribir un mapa de bits obtenido de los contenidos del proyecto

      var bitImage = new BitmapImage();
      bitImage.CreateOptions = BitmapCreateOptions.None;
      bitImage.UriSource = new Uri("Images/car.png", UriKind.Relative); 
      using (var store = IsolatedStorageFile.GetUserStoreForApplication())
      {
                     
          using (var st = new IsolatedStorageFileStream(
              WOW.passingCar.ImgUrl, FileMode.Create, FileAccess.Write, store))
          {
      
              WriteableBitmap wbmp = new WriteableBitmap(bitImage);
              wbmp.SaveJpeg(st, 173, 173, 0, 100);
          }
      }
      

      Pero por seguridad y como su nombre lo indica, el Isolated Storage ha de tener su propio puntero de datos. De manera que si intentamos hacer que el reader que leyó el archivo escriba sobre el Isolated Storage, entonces se nos producirá la siguiente excepción: (NullReferenceException was unhandled. Invalid Pointer)

      image

      Tenemos entonces que proceder a un accionar un poco más elaborado:

      byte[] data;
      StreamResourceInfo sr = Application.GetResourceStream(new Uri("Images/car.png",
      UriKind.Relative)); using (BinaryReader br = new BinaryReader(sr.Stream)) { data = br.ReadBytes((int)sr.Stream.Length); } using (BinaryWriter bw = new BinaryWriter(store.CreateFile
      (WOW.passingCar.ImgUrl))) { bw.Write(data); bw.Close(); }
                          
      Como se nota, es necesario recurrir a unos procedimientos un poco más básicos en los que recurrimos a los BinaryReader y BinaryWriter. Parece un poco complejo, pero es necesario, dada la naturaleza del Isolated Storage.
    • WarNov Developer Evangelist

      Por qué Windows Phone no transmite Archivos por Bluetooth?

      • 2 Comments

      La tecnología de Bluetooth está basada en algo conocido como perfiles. Cada perfil sirve para desempeñar una función de Bluetooth. Por ejemplo hay un perfil llamado A2DP que permite emitir Audio a través del bluetooth y además controlar la reproducción del mismo: Siguiente Canción, Anterior, Pausar, stop, Volumen. Este perfil viene en Windows Phone y por eso es posible por ejemplo conectarlo al radio de mi auto y controlar toda la reproducción de la música que tengo allí a través de Bluetoothpor medio de la pantalla de mi estéreo.

      El perfil de transferencia de archivos no está presente en Windows Phone y esto principalmente obedece a que de esta manera se protege al usuario de que le transfieran programas dañinos a través de este medio, porque este perfil no permite limitar el tipo de archivos transmitidos. Es por eso que la única forma de transferir archivos permitidos es a través de Zune (fotos, videos, música) y descargados de internet: (documentos de office, PDFs, además de los ya mencionados).

    Page 3 of 13 (318 items) 12345»