• WarNov Developer Evangelist

    Windows 8. Primeras revelaciones.

    • 10 Comments

    Viene nuestra tablet!

    Windows 8 Start Screen

    Esta interfaz recibe el nombre de “Immersive” y hace parte de una de las dos variantes con las que vendrá Windows 8. Una de ellas, será la familia de OS ya conocida por todos: Ultimate, Professional, Home, etc. enfocadas a PCs y Laptops convencionales, y esta otra dedicada a tablets, con un diseño totalmente adaptado para este tipo de aparatos.

    Como se aprecia, en esta interfaz el menú inicio es reemplazado por una pantalla de inicio basada en tiles tipo Windows Phone 7. Pero tranquilos; no es un Windows Phone 7 "agrandado" esta Tablet sí traerá mucho más. La pantalla es completamente personalizable y escalable a tal punto que los tiles pueden verse full screen.

    Cada tile tiene vida propia y nos muestra notificaciones e información siempre actualizada de las mismas y además permite un cambio fluido muy natural entre las aplicaciones en ejecución. Por si fuera poco, podemos pegar aplicaciones a los costados  y cambiar su tamaño de manera que se aprovechan realmente las capacidades de Multitask de Windows.

    Las aplicaciones en general estarán siempre conectadas al Web y serán escritas en HTML5 + Javascript que tiene acceso completo a todo el poder del PC.

    Vendrá de plano con IE10 optimizado para touch. De manera que la navegación será optimizada completamente para esta forma de entrada.

    Los tablet para Windows 8 han de obedecer a estrictas exigencias por parte de Microsoft que permitirán que los usuarios en realidad tengan la experiencia buscada. Es así como se exige siempre procesadores SOC (System on a Chip) ARM con mayor performance, más pequeños y de menos consumo energético y de memoria).

    Más novedades se presentarán en el evento Build: Windows. A llevarse en reemplazo del PDC en Anaheim CA, en Septiembre 13 de este año! Un evento que no hay que perderse!!!!

    Para finalizar les dejo un preview de lo que será nuestro Windows 8:

     

  • WarNov Developer Evangelist

    Problemas con el Connection Pool de ADO.NET

    • 0 Comments
    Cuando se crea una conexión SQL en ASP.NET, por defecto siempre irá al POOL de conexiones administrado por el framework. Es así como ni al cerrarla ni haciéndole dispose, esa conexión realmente se cierra en el SQL Server como tal. El pool de conexiones existe para mejorar en general el rendimiento de las aplicaciones, dado que el hecho de abrir una conexión es bastante costoso. Así que aunque lógicamente la conexión está ConnectionString es requerida, se sirve una de las ya existentes en el pool de una manera más rápida que creandola desde 0 (from the scratch).

    Si no se desea este comportamiento, basta con incluir en la conexión o en el WebConfig POOLING=FALSE

    El pool para un ConnectionString en particular se puede configurar con el número máximo y mínimo de conexiones. Jugar con estos valores puede mejorar o empeorar el rendimiento de la aplicación. El valor por defecto es de 100.

    Existe un error bastante grotesco que puede asustar mucho si no se entiende de connection pools:

    A transport-level error has occurred when sending the request to the server. (provider: Shared Memory Provider, error: 0 - No process is on the other end of the pipe.)

    Ocurre por ejemplo si en el pool no hay conexiones disponibles, debido a que han sido terminadas por un ente distinto a la aplicación (alquien desconectó el cable de red, apagaron el server, le hicieron kill a las conexiones, etc.)

    No ocurre porque la operación esté tardando demasiado. Y el que ocurran excepciones por éste último motivo no se arregla aumentando el timeout de la conexión. El timeout de la conexión se refiere al tiempo de espera para logran conexión con el server de db, antes de que una excepción sea lanzada.

    El tiempo de timeout por defecto es de 15 segundos. Y en el connectionstring está medido siempre en segundos. Siempre ha tener valores positivos o 0. De lo contrario una excepción surge. Si es 0, significa que nunca se lanzará excepción por incapacidad de alcanzar al server. Esto no es buena idea, porque el sistema se puede volver irresponsivo, y no habría indicios de por qué sucede esto.

    Para que los pool funcionen correctamente, debe existir un manejo responsable de las conexiones. Cómo se manejan responsablemente? Cerrándolas cada vez que no se vayan a requerir más.

    SqlConnection conn = new SqlConnection(myConnectionString);
    try
    {
      conn.Open();
      doSomething(conn);
    }
    finally
    {
      conn.Close();
    }


    Como se vé si hay un fallo, igual se cierra la conexión.

    Teniendo en cuenta: http://www.15seconds.com/issue/040830.htm

    "Close and Dispose methods of Connection object are equivalent. Neither one gives you any specific advantages over the other. "

    Por tanto se puede usar también de una forma más elegante y ostentosa:
     

    using (SqlConnection conn = new SqlConnection(myConnectionString))
    {
      conn.Open();
      doSomething(conn);
    }


    El using en este contexto libera todos recursos declarados, por medio de Dispose.

  • WarNov Developer Evangelist

    Sistemas POS que piensan en la Nube

    • 2 Comments

    Antes que nada, veamos algunos requerimientos urgentes de los sistemas POS, dadas las condiciones económicas de hoy en día:

    ·         Puntos con funcionalidad extendida, pero con máxima velocidad y disponibilidad

    ·         Conexión directa con un ERP central para permitir decisiones óptimas y oportunas

    ·         Apertura para la colaboración con partners y otros servicios para reducir costos

    ·         Desarrollo y despliegue de software rápido y económico

    ·         Nada de inversiones iniciales en infraestructura

    En primera medida uno pensaría en SaaS como una alternativa. Pero usualmente los thin clients (browsers) no son capaces de trabajar offline. De esta manera se hace obvia la necesidad de un Front Store o repositorio en cada cliente. Además los browsers no pueden garantizar el manejo de periféricos ni pueden garantizar las velocidades requeridas en las cajas.

    Por todo esto, la mejor elección es usar Smart Clients con un caché de datos local usando por ejemplo SQL CE en cada cliente. El deployment se puede implementar usando ClickOnce. Sumado a esto pueden estar los protocolos WS-* que permiten una seguridad máxima sin tener que recurrirse a VPN u otras complicadas configuraciones de Firewall, así que las instalaciones serían muy sencillas.

    BEDIN Shop Systems, un ISV italiano creó la solución aKite enfocada a crear POS usando esta metodología. En un principio toda esta solución era auto hosteada y aunque solucionaba los problemas descritos, presentaba problemas a la hora de manejar picos de consumo y sobretodo de generar un esquema centralizado de integración con otros sistemas como el ERP, CRM, BI, Logística y demás...

    Con la llegada de Azure a producción, este ISV decidió migrar su aplicación y lo logro en solo tres meses sin mayores problemas, según su reporte.

    Esquema de POS comunicado con Azure

    Lograron crear un Hub Inteligente que remueve la complejidad técnica y facilita compartir datos entre los POS y otros sistemas. Por ejemplo en el caso de tarjetas de fidelidad y de regalo, se logró una inmediatez total, un mejor servicio y sobretodo menor riesgo de fraude.

    Además gracias al esquema nativo de Azure, los picos de uso dejaron de ser problema y sobretodo, cuando un cliente va a implementar su sistema POS, el up-front (o inversión inicial) es nulo, pues toda la infraestructura ya existe.

    Las ventas en este sistema pueden efectuarse desde todos los continentes, con distintos lenguajes, monedas e impuestos. Luego de esto, a través de los “Retail Web ServicesaKite RWS-” (creados por el ISV y hospedados en Azure usando SQL Azure) los datos se envían a un ERP central para actualizar el inventario y la contabilidad. Las estadísticas de ventas también se hacen inmediatamente disponibles, pero no solo en el ERP, sino también en los sistemas de Back Store.

    aKite RWS es un conjunto de servicios WCF que explotan muchas características de esta tecnología. De esta manera, solo fue necesario crear un conjunto claro de servicios, cuya configuración se adapta a cualquiera de los puntos de conexión requeridos. Por ejemplo, solo bastó con configurarlos para el uso con Smart Clients, y quedaron listos para usarse en los clientes POS.

    Como si fuera poco, la migración de estos servicios a Azure, generó valores agregados como un balanceo de carga automático (nativo de Azure), asegurando gran escalabilidad y una subdivisión más equitativa de los recursos entre las tareas. Antes eso era manejado por una aplicación bastante compleja y difícil de mantener.

    El proyecto fue dividido en un Web Role y cuatro Worker Roles que se comunican entre ellos usando Queues y Blobs. BEDIN declara que en la migración de datos y código de ORM no tuvo ningún problema, dado que Sql Azure demostró ser completamente compatible con el código de Sql Server que ya se tenía, aun cuando este había sido generado con un ORM de un tercero (LLBL GenPro)

    Como ISV, BEDIN también confirmó los siguientes beneficios:

    ·         Ausencia de costos iniciales en Hardware

    ·         Costos proporcionales en relación al número de usuarios

    ·         Ahorros que se pueden destinar a mercadeo, ampliación de funcionalidad y costos que se transfieren al usuario final en forma clara

    ·         Monitoreo automático

    ·         Auto recuperación de desastres

    En conclusión, Windows Azure permitió a BEDIN Shop Systems concentrarse en su aplicación y habilidades arquitecturales y en ofrecer un valor máximo a sus usuarios. Es una empresa con más de 20 años de experiencia en el desarrollo de POS. Fueron los pioneros en implementar .NET con aplicaciones para el Retail. (: www.bedin.it  www.akite.net )

     

  • WarNov Developer Evangelist

    Múltiples Líneas en los Textblock de Windows Phone 7

    • 2 Comments

    Nivel: Básico: 100.

    También surgido de otra pregunta que me hicieron en http://formspring.me/warnov, aquí una corta explicación de cómo funcionan los Texblock multilínea en WP7.

    Básicamente la duda de este developer, era cómo hacía para generar un Textblock (Texto no editable que aparece como nativo en la interfaz) que presentara varios párrafos.

    Lo primero que debemos garantizar, es que el TextBlock haga autoajuste de línea de acuerdo al ancho que tenga en determinado momento. Para esto ajustamos la propiedad de “ TextWrapping” en Wrap. Luego, existen varios métodos para agregar el texto que viene en párrafos.

    El primero, es aprovechando la mayor flexibilidad que nos da el editor XAML para asignar textos. Como ven, sencillamente podríamos traer nuestros párrafos tal y como están por ejemplo en Word o notepad y asignarlos al control:

    image

    Como ven es un sencillo copy paste o escribir las líneas y darles el salto de línea donde sea pertinente.

    Este copy paste también se puede ejecutar en el cuadro de propiedades:

    image

    Sin embargo si queremos escribir las líneas, observaremos que para darles un salto de línea el Enter no funciona. Sencillamente usamos Shift+Enter y listo. Tendremos nuestro salto de línea. Y el resultado es el esperado:

    image

    Obviamente, este tipo de ajuste de contenido no es posible en tiempo de ejecución, ya que no podremos copiar/pegar de ningún lado, sino indicar con una variable el contenido. Esta variable es fácil de armar con el carácter especial de cambio de línea \n:

    txbInstructions.Text = "primera larga línea \n segunda \n tercera";

    Esto nos da:

    clip_image008

    Y qué pasa si el texto está en un archivo de recursos?

    En un mercado de aplicaciones como el de Windows Phone 7, es muy importante ofrecer la capacidad de multilenguaje de nuestras aplicaciones, así que es muy frecuente que nos encontremos con la necesidad de crear un archivo de recursos distinto para cada lenguaje a usar. En estos casos, cada archivo tiene los textos a usar. Entonces cómo poner valores multilínea en los archivos de recursos?

    Allí también podemos copiar y pegar de otra fuente. Igual funciona el mecanismo de Shift+Enter para ingresar un salto de línea.

    image 

  • WarNov Developer Evangelist

    MIX 11: Prólogo. Por qué se habló tanto de HTML5 y tan poco de Silverlight 5?

    • 11 Comments

     



    El mundo es de los consumidores y la tecnología es fiel representante de ello. Lejos están los días en que los negocios sólo eran influenciados por los desarrollos empresariales. Es totalmente tangible como los últimos éxitos mundiales son aplicaciones de consumo para usuario final... Llámese Facebook, Twitter o Flickr, vemos como el concepto ha dado un giro de 180 grados. Anteriormente los éxitos empresariales eran llevados al consumidor final. Pero hoy en día, vemos como ejércitos de empresas movilizan sus tropas al social media para combatir en el campo del mercadeo viral usando el económico Word of Mouth Marketing (voz a voz). Y esto no es mera coincidencia. Obedece a que las aplicaciones de usuario finan realmente están enfocadas en agradar al usuario. En atraerles y mantenerles cautivos. El target ahora se llama todo el mundo. Y para llegarle a todo el mundo se requiere de una plataforma que permita este alcance.

    image

    Este no es un esfuerzo único de Microsoft. Muchos líderes tecnológicos detectaron la necesidad de un estándar que permitiese a las aplicaciones llegar a todo el mundo, sin que ello significase la tortura para los desarrolladores que prácticamente tenían que hacer un desarrollo para cada plataforma.

    Esta necesidad hoy es reconocida como HTML5. Y a pesar de que ya lleva años tratando de despegar, el sueño cada vez va perdiendo su carácter utópico y va siendo realidad aun cuando se trate de poner de acuerdo a todo el mundo.

    Microsoft no es ajeno a estos esfuerzos globales y está a la cabeza del desarrollo del estándar. Se reconoce la importancia de esta tecnología y por ello y por ello ha sido protagonista en este MIX11.

    Protagonistas tecnológicos como Apple niegan la entrada de tecnologías ajenas en sus reinos donde aparte de sus plataformas propietarias solo aceptarían un estándar como HTML5. Microsoft pretende que sus desarrolladores puedan desplegar su aplicación en todo el mundo y ve en HTML5 un medio natural para lograrlo.

    Es por este motivo que Microsoft está trabajando muy fuertemente en el campo de HTML5 aventajando a sus competidores en muchos campos. Y el trabajo no solo consiste en investigación y desarrollo sino en lograr la adopción de esta tecnología por parte de los desarrolladores web del mundo. Es por esto, que desde el lanzamiento de los primeros previews de IE9 se ha dado un alto protagonismo a HTML5 sobretodo en los eventos grandes de Microsoft como el MIX10, PDC10, MIX11 y de seguro va a seguir dando mucho de qué hablar en eventos como el TechEd, PDC11 y MIX12.

    Este alto protagonismo a generado un efecto coyuntural que afecta sobre todo a los desarrolladores y fanáticos de Silverlight (me cuento entre ellos).

    Y es apenas obvio. HTML5 viene para enriquecer la web y facilitar la creación de experiencias de usuario enriquecidas que se puedan experimentar de manera nativa en todos los navegadores web estándares. Y hasta hoy hemos visto que en realidad se pueden crear aplicaciones realmente impactantes con alto contenido multimedia sobre esta tecnología. El tema de experiencia de usuario enriquecida, precisamente es la fortaleza de Silverlight y su poco protagonismo últimamente ha llevado a pensar que Silverlight sencillamente sería reemplazado por HTML5 y que Microsoft no le invertirá más a esta tecnología.

    Hay un hecho innegable y es que cada gigante informático tratará de proteger sus valores usando estrategias que entre otros puede incluir el negar la entrada de plugins de terceros tales como Flash o Silverlight (el caso de Apple). Entonces Microsoft no se puede quedar únicamente con Silverlight. Necesita ofrecerle a sus desarrolladores la posibilidad de estar en todo el mundo y para eso es HTML5.

    ImportanceHTML5

    No obstante: HTML5 aún puede cambiar mucho. Aún le hace falta completar muchas de las características propuestas. Sumémosle que el conjunto de herramientas aún es precario y que hay incertidumbre acerca de qué y cómo desarrollarlo a pesar de los grandiosos ejemplos prototipos aislados que uno puede encontrar en la web. Sin embargo, es el futuro de la web y en Microsoft se trabaja fuertemente para que cuando llegue, estemos totalmente preparados; y eso es algo que usted como desarrollador o empresa desarrolladora debería tener en cuenta y seguir en cierto grado de acuerdo a su nicho de trabajo.

    Microsoft ha logrado importantísimos avances en HTML5 y su browser: IE9 y ahora IE10 como se anunció en el MIX11. Pero aunque esto nos pone en cabeza de lanza para cuando realmente se llegue a ese “estándar”, hoy la situación es muy distinta. Internet Explorer con la tajada más grande del mercado de navegadores soporta Canvas2D de HTML5 con una velocidad que ridiculiza a los otros navegadores. Estos por su parte han hecho trabajos con WebGL para manejar 3D que Internet Explorer no soporta. Ejemplos como estos se pueden encontrar varios y vemos que en ese orden de ideas, al menos en el corto y mediano plazo, sería muy difícil que HTML5 hiciera todo lo que hace Silverlight. Sin mencionar que aún no tiene mecanismos de protección de derechos de autor (DRM - Silverlight ya los tiene y Microsoft es uno de los primeros investigadores de esta aplicación en HTML5) y que elementos muy necesarios para aplicaciones LOB como el manejo de sockets es aún muy incipiente entre muchas otras características diferenciales.

    Pero entonces si en el corto y mediano plazo no lo reemplazaría que pasaría a futuro? Hay situaciones en las que la tecnología del lado del cliente es fácilmente predecible y acondicionable. Por ejemplo cuando hacemos aplicaciones de Línea de Negocio (LOB) en las que la empresa puede implantar en todos los equipos de sus empleados el plugin de Silverlight. En este caso existe una enorme ventaja de Silverlight sobre HTML5 sobretodo en el tiempo de desarrollo y capacidades reales a la fecha. Esto se evidencia con hechos reales en los cuales muchas empresas han alcanzado el éxito a través del desarrollo de aplicaciones LOB en Silverlight. En general los desarrolladores de aplicaciones de negocio se sentirán mucho más cómodos trabajando con Silverlight y .NET que con un lenguaje de marcado mezclado con Javascript, CSS, JQuery, AJAX y cuanto framework más inventen para “facilitar” la tarea; y esto no precisamente por la falta de herramientas que es evidente hoy en día y que poco a poco va a ser menor, sino por la misma concepción de las tecnologías. Dado que con HTML5 hay que integrar muchos esfuerzos tecnológicos que son difíciles de unificar pues siempre se está tratando de poner de acuerdo a todo el mundo.

    Otro escenario importante en el que se puede determinar completamente la plataforma tecnológica, es el de dispositivos móviles. Y allí Microsoft decidió enteramente dejar a Silverlight como la plataforma de desarrollo nativa para el teléfono Windows Phone 7. De manera que entre otras mejoras, para la versión 5 se le ha dado un potencial enorme en el único campo que aún no había completado que era el 3D, al permitir una entera integración con XNA.

    Todo lo anterior nos permite concluir que también a futuro, Silverlight aún sigue teniendo mucha relevancia.

    En el MIX11 se anunció Silverlight 5 y se respondió afirmativamente ante la pregunta de si habría un Silverlight 6. Nosotros fans de Silverlight seguimos teniendo mucho que hacer y mucho por ganar con esta tecnología. Pero debemos comprender que vivimos en un mundo que evoluciona más rápido que el de cualquier otra profesión. Un mundo en el que nuevas tecnologías emergen para satisfacer distintas necesidades y que en la medida en la que estas tecnologías son lanzadas, necesitan tener un empuje mercadotécnico especial aún sobre las otras tecnologías excelentes que ya existen pero que ya han sido lanzadas.

    Precisamente así pasa con HTML5 que ahora es protagonista sobre Silverlight 5 sin demeritarle para nada (piensen también en un ejemplo similar: MVC sobre ASP.NET). Es más, el hecho de que Silverlight sea una plataforma tan madura y que funcione tan bien y que genere tantos casos de éxito hace que haya pocas novedades súper WOW adicionales para anunciar (Gráficas 3D reales, impresión con vectores, decodificación de video acelerada por GPU, etc.) y que pase más bien con algo de bajo perfil… pero esto mismo demuestra la radical diferencia entre ambas tecnologías; es como comparar peras con manzanas. Si lo requerido es una aplicación altamente funcional con acceso a los recursos y dispositivos del dispositivo del cliente y que funcione ahora mismo de la misma manera en todos los browsers donde instalar el plugin no sea un inconveniente, entonces Silverlight es la mejor opción. Pero si lo que desea es tener una aplicación masiva con una gran experiencia de usuario donde no se puede exigir la instalación de un plugin (aún a costa de un proceso de desarrollo un poco más costoso) y no se requiere una funcionalidad tan alta como la ofrecida por Silverlight, en ese caso usaremos HTML5 para lo cual Microsoft también está trabajando fuertemente en la actualidad.

    Conclusión:

    HTML5 es el futuro de la web a nivel mundial y Microsoft está a la cabeza en investigación, desarrollo y creación de herramientas para soportarlo, crearlo y usarlo; es por esto que se le da un alto énfasis a esta tecnología en todos nuestros eventos. Este protagonismo sin embargo no demerita a Silverlight 5 que también fue anunciado no con tanto ahínco dado que ya conocemos su gran potencial y que ya es una tecnología muy madura que sigue teniendo un gran campo de acción en las aplicaciones de negocio que ahora se ve ampliado al ser la plataforma de desarrollo nativa para Windows Phone 7, lo que le ofrece un futuro muy prometedor.

    No. HTML5 no reemplaza a Silverlight.

    Una comparación más detallada entre las dos tecnologías aquí.

  • WarNov Developer Evangelist

    Curso Básico Gratuito de Visual Studio .Net 2010 con C#

    • 0 Comments

    Hace poco me llegó una agradable oferta de los muchachos de NET CELL; una gran comunidad de desarrolladores de la costa Colombiana. Ofrecen un curso básico para que las personas puedan comenzar desde ceros a aprender de esta tecnología. El curso se dictará a través de Live Meeting todos los jueves desde las 18:00pm (GMT-5) a partir de febrero 25. Mayor información aquí.



  • WarNov Developer Evangelist

    Creando un Switch en C# para enumeraciones grandes en segundos!

    • 6 Comments

    Alguna vez han tenido que evaluar una sentencia Switch-Case de C# sobre una enumeración que tiene, que se yo; unos 30 elementos?

    Si les ha tocado pasar por eso, sabrán que es bastante tedioso escribir todas las líneas pertinentes para cada uno de los elementos de la enumeración.

    En este video, les muestro cómo con Visual Studio lo podemos lograr en solo segundos. Es un video de solo un poco mas de un minuto, que hace parte de una serie de videos cortos que encontrarán en mi blog bajo la categoría de WarFastVideos, y que pretenden mostrar cosas interesantes en muy pocos minutos.

    Enjoy!

  • WarNov Developer Evangelist

    6 Capítulos de programación para Windows Phone 7 Gratis!!!

    • 0 Comments

    Para hoy les traigo este excelente draft - preview del libro “Programming Windows Phone 7 Series” escrito por el señor Charles Petzold (han de haber visto su nombre en la portada de muchos libros de MSPRESS)

    clip_image002

    Son seis capítulos que nos dejarán listos para programar cualquier tipo de aplicaciones en Windows Phone 7 Series!

    Disfrútenlo!



  • WarNov Developer Evangelist

    Windows 8 Dev Machine

    • 1 Comments

    Hasta hace unos días, lo único que me impedía desarrollar completamente basado en Windows 8, era el tema de Windows Azure y sobretodo el de Windows Phone, dado que al usar emuladores, aún no estaban plenamente soportados.

    Afortunadamente, al interior de Microsoft estamos siendo muy veloces y a hoy, ya tenemos un gran conjunto de tools que nos permiten desarrollar para todas las tecnologías que teníamos disponibles en VS2010 sobre Windows 7 por ejemplo.

    Primero aclaremos algunos hechos básicos:

    1. Visual Studio 2010 (VS10) y Visual Studio 11 (VS11) coexisten sin problemas en el mismo sistema operativo ya sea Windows 7 o Windows 8.

    2. VS11 en Windows 7 aunque permite desarrollar varios tipos de proyectos convencionales, no permite desarrollar apps Metro Style, obviamente porque el OS no tiene todo el soporte requerido

    3. A pesar de que “parece” que VS11 soportara proyectos Windows Azure, esto aún no es posible, así que es requerido VS10 y unas configuraciones especiales que describiré en este post para que funcionen en Windows 8.

    clip_image002

    4. VS11 aún no soporta WP7. Así que también es necesario trabajarlo con VS10 y en Windows 8 se requieren ciertas configuraciones especiales que describiré en este post.

    Entonces, antes de entrar en materia, quiero que quedemos claros en que vamos a requerir Visual Studio 2010 instalado en Windows 8. Esto como les mencioné no tiene ninguna contraindicación ni aún con VS11 instalado, y puede ser cualquier versión. Yo estoy usando la Ultimate. Pero se puede Visual Studio Express for Windows Phone y Visual Studio Web Developer para Azure y gratuitamente tendremos operatividad total.

    WINDOWS 8 + WINDOWS PHONE

    Esto se hace posible gracias a la publicación del patch 7.1.1 del SDK de Windows Phone, cuyo principal objetivo es el permitir el desarrollo de apps de WP7 enfocadas a dispositivos económicos de solo 256MB de ram, al incluir una nueva imagen de emulador que tiene esta memoria. Sin embargo, aunque este fue el fin principal, se aprovechó la publicación para entre otras cosas, solucionar unos inconvenientes que impedían al emulador de Windows Phone 7 funcionar correctamente en Windows 8, por lo que ahora esto ya es posible, aunque no oficialmente soportado, sino hasta que salga el RTM de Windows 8.

    clip_image003

    Procedimiento:

    1. Instalar Win8CP

    2. 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

    3. Instalar VS2010 Pro o superior si es posible; si no, proceder a 3

    4. Instalar Windows Phone SDK 7.1 (Incluye gratuitamente Visual Studio Express for Windows Phone 7)

    5. Instalar el patch 7.1.1

    6. Instalar Zune

    7. Desarrollar en WP7!!!


    WINDOWS 8 + WINDOWS AZURE

    UPDATE:  Las instrucciones siguientes SOLO aplican para la instalación del SDK y Tool de Windows Azure v. 1.6 sobre Visual Studio 2010 en Windows 8 CP y RP. Con la liberación del SDK de Windows Azure versión Junio 2012 (1.7) y las tools de la misma versión, el proceso nuevamente es automatizado y ahora además tiene completo soporte para Visual Studio 2012 RC!!! Chequea este post, para instrucciones de cómo instalarlo.

    SDK 1.6 en VS2010 sobre Windows 8:

    Aquí solo es necesario activar algunas características adicionales del sistema operativo y luego descargar los bits requeridos.  

    1. Activación de Características:

    a. Presione TeclaWindows+F para abrir el cuadro de búsqueda y escriba Windows Features. Luego haga click en settings y escoja en los resultados Turn Windows Features on or Off.

    b. Una vez allí, asegúrese de tener todas estas características activadas:

    clip_image004

    2. IDE: Instalar VS2010 Pro o superior o Visual Web Developer 2010 Express como alternativa free

    a. Instalar el Service Pack de VS2010

    b. Descargar e Instalar MVC3

    3. DB: Windows Azure usa una base de datos SQL para emular el storage. La DB que debe instalarse es SQL Express 2008 R2 with SP1

    4. Descargar e instalar los componentes individuales de Windows Azure bien sea para x86 o para x64.
    Hasta aquí ya estamos listos para desarrollar aplicaciones de Windows Azure convencionales. Pero a hoy, tenemos unas nuevas herramientas especialmente creadas para desarrollar aplicaciones para Windows 8 basadas en Windows Azure sobretodo para los servicios de notificaciones y almacenamiento. Aquí les muestro cómo habilitarlas:

    5. Apps de Windows 8 sobre Azure:
    Descargar e instalar el Toolkit de Windows Azure para Windows 8

    a. Instalar la última versión del Nuget Package Manager (si existe ya instalada una versión distinta a la antigua, abrir Visual Studio en modo administrador y desinstalarlo desde el extensión manager el menú de tools)

    b. Ejecutar el script Setup.cmd que queda en el root de la instalación del anterior Toolkit

    Obtendremos:
    clip_image006

    c. Después al abrir nuestro VS2010, nos encontraremos con que ya podemos crear Windows 8 Cloud Applications

    clip_image008


    y en VS11 podremos crear aplicaciones basadas en Notificaciones más control de Acceso:


    clip_image010

    Conclusión:

    Windows 8 Consumer Preview por ser aún una versión de evaluación requiere ciertas configuraciones especiales para poder servir como máquina de desarrollo de aplicaciones basadas en Windows Azure y para Windows Phone. En este post, vimos las acciones a tomar para poder lograrlo.

  • WarNov Developer Evangelist

    Fin de Año con Camps: Los mejores eventos técnicos de Microsoft Colombia!

    • 0 Comments
        
    UPDATE: Si quieres convertirte en un desarrollador WaW, te tengo esta herramienta que te ayudará a descargar todos los SDKs necesarios de una manera muy sencilla!

    A llevarse a cabo en Medellín y Bogotá, estaremos ejecutando los Camps de Microsoft para 2011. Para todos hay! Es así como para los ITPROs, tenemos el ITCAMP y para desarrolladores, el Code Camp.

    IT CAMP (Para IT Cloud Champs):

    Sql Server 2012 (Denali)
    Private Cloud

    Fechas:

    Medellín: 29 de Noviembre. De 8am a 12.30pm
    Bogotá: 6 de Diciembre de 2pm a 6pm.

    CODE CAMP (Para desarrolladores WAW)

    WebMatrix
    A
    zure
    Windows Phone 7

    Fechas:

    Medellín: 29 de Noviembre. De 8am a 12.30pm
    Bogotá: 1 de Diciembre de 2pm a 6pm.

    Como observan, en Medellín, el evento se ejecutará el mismo día para ITPROS y Developers. Mientras en Bogotá, tendremos dos días separados.

    Estando en una nueva era de alta integración con las comunidades, Microsoft Colombia ha recibido una invaluable ayuda de parte de las comunidades para poder realizar un evento de esta magnitud. Es así como se ha tenido el apoyo completo de las más grandes comunidades de desarrolladores y ITPROS del país, como lo son Avanet de Medellín y BNet junto con ITPROS DC de Bogotá, quienes han proporcionado gran parte de los speakers que estarán enriqueciendo los eventos.

    De esta forma, tendremos una inigualable nómina de speakers; sin precedentes! todos ellos parte de nuestro programa de Microsoft Community Specialist (MCS) y varios de ellos ya reconocidos MVPs de nuestro país:

    Sorey Gracía (WP7), Alberto Rivera (Denali), Andrés Fontán (Azure), Christian Moreno (Denali), Daniel Vargas (Private Cloud), Freddy Angarita (Denali), Gerardo Ramos (Azure), German Ruiz (Private Cloud), Guillermo Taylor (Denali), Hernán Guzmán (WP7), John Bocachica (Denali), John Bulla (Denali), Juan Carlos Ruiz (WebMatrix) , Juan David Gómez (WebMatrix), Juan Manuel Lombana (Azure), Julio Avellaneda (WebMatrix), Miguel Mendoza (Azure), Miguel Quintero (WebMatrix), Pavel Espitia (WP7), Ricardo González (Azure), Roberto Alvarado (WP7), Sergio Calderón (Private Cloud).

    A parte de tener los eventos presenciales, tendremos webcasts de Warm Up (o preparación para el evento presencial) que nos irán mostrando lo que veremos en el evento físico. Así que tanto para inscribirse a los eventos virtuales como a los eventos presenciales, solo tienen que hacer click en la imagen correspondiente al evento de su interés: Developers, o ITPROS:

    clip_image001

    clip_image002

    No se lo pierdan, aparte de estar actualizados con lo último de nuestras tecnologías, tendrán la oportunidad de ganar fabulosos premios de Microsoft Hardware!

     

    image

  • WarNov Developer Evangelist

    Cómo aprender Silverlight?

    • 0 Comments

    A continuación un corto pero sustancioso compilado de excelentes recursos que nos dejarán listos para aprender Silverlight:

    Comienzo con una referencia a los videos en español elaborados por mi buen amigo mexicano el MVP en Silverlight Rodrigo Díaz Concha (recuerdo que algunos los hizo estando aquí en Bogotá) que ahora están en Channel9.

    Luego, para ampliar lo visto aquí, pueden acceder al Curso de Entrenamiento en Silverlight también en Channel9, pero esta vez en Inglés con contenido complementario.

    También existe un Training Kit disponible en MSDN  para los que les gusta seguir laboratorios paso a paso.

    Si somos diseñadores con otras herramientas como las de Adobe, o desarrolladores con pocos conocimientos en diseño y queremos entrar de lleno al mundo de Blend y Silverlight, les recomiendo este post, donde les ofrezco más recursos enfocados específicamente a aprendizaje de diseño con énfasis en Silverlight.

    Y si nos gusta más leer, nada mejor que Silverlight Step by Step (cualquier versión os sirve para introducirnos en la tecnología, ya que hay versión 2, 3, y 4). Este libro es escrito por Laurence Moroney, un empleado de Microsoft.



  • WarNov Developer Evangelist

    Windows Azure Storage Tools: Programa en Azure más fácil con herramientas de terceros

    • 0 Comments

    A continuación un compilado de las herramientas que uso a diario para manejar el Storage de Windows Azure, así como un diagnóstico de lo que me han parecido has ahora:

    Gladinet Cloud Desktop (Free Edition):

    Esta herramienta permite mapear a una unidad de red nuestro Blob Storage en Azure. Es bastante útil para hacer backups, o subir archivos para nuestras aplicaciones directamente desde nuestro Windows Explorer. Permite conectarse a otros servicios de storage además como FTPs, Skydrive (súper útil), Amazon y Google. Sencillamente nos pide el endpoint y el Primary Key y listo. Se crea un directorio virtual dentro de un drive llamado Gladinet. En este drive quedan todos los servicios de storage configurados.
    Una de las cosas más interesantes que hace, es abstraer el hecho de que en los blobs de Azure no tenemos un manejo de carpetas como en el sistema de archivos al cual estamos acostumbrados. (Detalles aquí). Así que automáticamente renombra los blobs de manera que imitan una estructura de carpetas y de igual manera, cuando se extraen del blob storage hacia las carpetas locales, crea una jerarquía a partir del nombre extendido.
    Por ejemplo estos blobs en una cuenta de storage de Windows Azure llamada warstorage en nuestro explorador de archivos con Gladinet se muestran así:

    clip_image002
    Las rutas rest de estos blobs serían:
    http://warstorage.blob.core.windows.net/thecloudware/Level1/Level2/Koala.jpg
    http://warstorage.blob.core.windows.net/thecloudware/Level1/Level2/Desert.jpg
    http://warstorage.blob.core.windows.net/thecloudware/Level1/Level2/Tulips.jpg

    Para finalizar, Gladinet permite copiar carpetas completas aún desde dentro del storage en la nube; cosa supremamente útil. No soporta el Developer Storage.

    Mi calificación: StarStarStarStar

    Windows Azure Blob Storage Client

    Es una de las primeras herramientas surgidas para esta tarea. Creada con WPF, se encuentra en Codeplex, así que es Open Source. Es muy básica. Útil para pequeñas tareas rutinarias o para aprender a manejar el API examinando el código. Tal como Gladinet solo permite manejar Blobs; pero a diferencia de este, solo permite manejar una cuenta a la vez. Permite subir varios archivos a la vez, pero no carpetas (no puede hacer la abstracción). Además he detectado problemas para subir archivos Silverlight (.xap). Soporta el Developer Storage. Es muy inestable. Para fines educativos está bien.

    Y viendo ya los blobs sin la abstracción de jerarquía de carpetas con una herramienta como Windows Azure Blob Storage Client, veríamos:

    clip_image004
    Como se aprecia, los blobs sencillamente han sido renombrados representando la jerarquía de carpetas.

    Mi Calificación: StarStar

    myazurestorage.com

    Es una herramienta web basada en MVC creada por Microsoft y de uso gratuito que permite explorar todos los elementos del storage de Windows Azure para una cuenta determinada. Es así como podemos interactuar con los blobs, tablas y colas. Es una gran aplicación disponible en todo lado, gracias a que es Web. Las credenciales no se guardan en el servidor y sólo se almacenan en una cookie cifrada en el equipo. Observemos como se ve nuestro ejemplo en esta herramienta:

    clip_image006


    Como se aprecia, si establecemos un delimitador de carpetas simulado (en este caso “/”) la página nos muestra correctamente la jerarquía. Si lo omitimos, lo veríamos de esta manera:

    clip_image007

    Esta herramienta solo permite subir de a un archivo; pero también permite crear tablas, nuevas entidades dentro de esas tablas, ejecutar consultas sobre las tablas y el mismo manejo con las colas. Maneja correctamente el Root Container. Obviamente al ser web, no soporta el Developer Storage.

    Mi calificación: StarStarStar

    Azure Storage Explorer

    Esta es una grandiosa herramienta también OpenSource (en Codeplex) que ha sido una donación de la compañía NEUDESIC un partner gold de Microsoft que la desea dejar abierta para la comunidad. Al día de hoy va en su versión 4 liberada el mes pasado. Así que se mantiene constantemente con innovaciones y correcciones. En esta versión por ejemplo permite manejar varias cuentas separadas por los tabs de una bella aplicación creada en WP usando el patrón MVVM. Permite CRUD con blobs, tablas y colas. Además permite reproducir los blobs de media (imagen, video, audio). Como cosa curiosa, no hace la abstracción de jerarquías en Azure (ahora mismo les estoy enviando el feedback, pues sería cool) Aquí les muestro cómo se ve nuestro ejemplo:

    clip_image009
    No permite subir carpetas completas, pero sí múltiples archivos.

    Mi calificación: StarStarStarStar

    Cerebrata Cloud Storage Studio

    Esta es la herramienta PRO para manejar el Storage de Azure. No es free (la única versión free es la Developer que solo se conecta al Development Storage). Tiene un trial e 30 días. No solo administra el storage, sino que también sirve para administrar los servicios de hosting (eliminar deployments, etc. Aunque no logré conectarme con el servicio de hosting desde este tool). Está construido nuevamente sobre WPF y abstrae correctamente la jerarquía de directorios, chequeando los nombres de los blobs. De una manera poco intuitiva, permite subir correctamente toda una carpeta con subdirectorios. En este sentido Gladinet hace un trabajo más transparente y lo mejor de todo, gratis. Tiene un muy buen manejo para CRUD de tablas y colas. Y sobretodo un muy buen query builder para las tablas. Los menús contextuales son bastantes ricos, por lo que operaciones frecuentes son muy fáciles de ejecutar. Por ejemplo creación de snapshots, modificación de propiedades, obtención de urls, etc. Para un ambiente profesional, vale pagar los cerca de US$70 que vale, aunque no es indispensable. Para finalizar un vistazo de nuestro ejemplo:

    clip_image011

    Mi calificación: StarStarStarStar

     

    Windows Azure Cmdlets:

    Son un conjunto de scripts diseñados específicamente para PowerShell. Fueron creados y publicados por Microsoft y en muchas ocasiones son base para construir otras aplicaciones más gráficas que no requieren el uso de la consola para funcionar. Aunque no manejan directamente operaciones CRUD sobre el storage, si nos permiten ejecutar operaciones administrativas como manejo de las llaves de acceso, del estado de publicación de los servicios de storage, del api de diagnósticos, etc. Es free.

    Mi calificación: StarStar

    Windows Azure MMC Snap In

    Este snap in fue creado por Microsoft usando los cmdlets mencionados anteriormente y es genial porque se integra a la consola MMC así que el uso es bastante intuitivo. Permite ejecutar tareas administrativas ( a través de los cmdlets ) y tareas operativas con el storage. Todo esto está implementado usando MEF, de manera que si lo deseamos, podemos modificar cualquier parte de este snapin, poniendo la funcionalidad que queramos. También es Free, y el ejemplo de nuestro storage se vería así:


    clip_image013

    No hay abstracción de jerarquía, pero lo interesante es que podemos subir un container completo. Entonces escogemos una carpeta en nuestro sistema de archivos y ésta se sube con todos sus contenidos como un nuevo container a Windows Azure. Si ese folder tiene subcarpetas, entonces renombra los archivos con la estructura. Desafortunadamente tiene un pequeño bug, y es que antes de comenzar con la jerarquía pone un “/” adicional:

    clip_image014

    Que obviamente no está de acuerdo con el formato convencional. Sin embargo el código fuente está disponible y se puede corregir. Tampoco nos permite subir múltiples archivos, y el refresh como siempre en MMC solo ocurre tras oprimir F5 (no es automático). Sin embargo, para administradores de IT lo veo perfecto pues está más enfocado a diagnóstico y servicios y con un soporte moderado a storage.

    Veredicto:

    En conclusión, Windows Azure tiene un gran set de tools para manejar su storage. Además como lo pueden ver, es una gran oportunidad de negocio también volverse productor de herramientas para aplicaciones de Azure. Azure nos da la bienvenida a todo un mundo de nuevos negocios.

  • WarNov Developer Evangelist

    Cómo empezar con Windows Azure

    • 2 Comments

    Ya he escrito muchos artículos sobre Azure en este blog. Desde básicos hasta avanzados. Sin embargo, con el tiempo más y más personas quieren saber de la plataforma y es útil que tengan un punto de partida sencillo para comenzar. Aunque en mis posts anteriores existe este punto de partida, la plataforma tanto operativa como administrativa de Windows Azure ha sufrido cambios y por ende me permito escribir este post que muestra de manera actualizada cómo escribir una aplicación para Windows Azure y cómo desplegarla en la nube.

    Audiencia: ITPROS y Developers con poco o ningún conocimiento de Windows Azure.

    Si ud. es ITPRO, puede que solo desee ver el Video 2, que es orientado a su rol (Cómo desplegar una aplicación en Windows Azure)

    Si ud. Es Developer, le recomiendo especialmente el Video 1 y también que vea el Video 2 que aunque está enfocado a ITPROS, también tiene contenido que le puede ser útil.

    Esta es más que una simple aplicación Hello World para Windows Azure, pero lo suficientemente sencilla para comenzar con esta tecnología. Simplemente se trata de un sitio web usando la plantilla por defecto de Visual Studio al que se le añadió la funcionalidad de identificar el servidor en Windows Azure desde el cual se responden las peticiones. Esto permite ver que Windows Azure ofrece una naturaleza que permite muy fácilmente trabajar con varios servidores.

    Para exponer esto, les presento un video (Video 1), luego del cual, veremos en otro video cómo se puede desplegar dicha aplicación en la nube de Azure, pasarla de un ambiente de pruebas a producción y hacerla más escalable cambiando un sencillo valor de configuración.

    Video 1: Creación de una aplicación básica para Windows Azure.

    Video 2: Despliegue, paso a producción y escalamiento de una aplicación Windows Azure.

    En este video vemos cómo es de fácil desplegar una aplicación en Windows Azure. Está enfocado a ITPROS y Desarrolladores que desean saber cómo opera la nube de Azure en cuanto a despliegue de aplicaciones. Vemos cómo es de fácil pasar de entornos de pruebas a entornos de producción y también cómo hacer que la aplicación escale mediante la añadidura de nuevos servidores.

  • WarNov Developer Evangelist

    Solución a problemas en el registro al App Hub de Windows Phone 7 en Colombia

    • 5 Comments

    Hace pocos días se oficializó la disponibilidad del App Hub de Windows Phone 7 para Colombia, de manera que los desarrolladores de aplicaciones móviles para esta plataforma que estén operando en Colombia pueden desbloquear sus teléfonos para desarrollo y así mismo publicar sus aplicaciones globalmente.

    Sin embargo, varias personas me comentaron de un extraño error según el cual cuando se trataban de registrar al App Hub de Windows Phone 7 les aparecía esto y no podían continuar con el proceso, produciéndose una gran frustración, pues el ansia de ver la aplicación en nuestros teléfonos es muy alta:

    clip_image001

    Invalid Value for Field Country

    Cómo es esto posible si Colombia oficialmente ya está establecido en el App Hub?

    En general en Colombia no usamos el código postal. Es por eso que siempre que nos piden escribirlo generalmente en portales internacionales, escribimos cualquier cifra y si a veces eso falla, entonces escribimos un código postal de Estados Unidos como 90211 y con eso basta.

    Después de una amplia investigación junto con el equipo de soporte encontré que el error obedece a que hay una validación sobre el campo de código postal y se chequea que éste sea válido para Colombia. Aunque ud. no lo crea Colombia tiene códigos postales y éstos son de 6 cifras. Pero lo más problemático es que el error emitido no es correcto, pues aparece: “País no válido” y eso es lo que nos deja perdidos.

    SoluciónSi coloca por ejemplo 110110 en ese campo, Voilá… podrá seguir con el proceso sin problemas!!!

    Eso sí, asegúrese de que tanto el país asociado con su el Live Id usado para registrarse en el App Hub; como el país escogido dentro del App Hub durante el registro, sean Colombia. De lo contrario, tendrá problemas en el registro. Para chequear a qué país está asociado su Live ID, ingrese a http://account.live.com. Allí lo podrá cambiar a Colombia sin problemas.

    He solicitado al equipo de Ingeniería del APP HUB, que el campo de código postal no sea obligatorio en Colombia. Así que mientras actualizan el portal, por favor regístrese usando el código postal 110110.

    Bienvenido a experimentar sus aplicaciones en sus dispositivos!!!

  • WarNov Developer Evangelist

    XBOX ONE: Verdades de la revolución digital del gaming

    Esta es la mejor época para los geeks.

    La velocidad con la que encontramos novedades en el mercado no tiene igual en la historia.

    Tristemente, muchos usuarios y lo peor, bloggers y personas con acceso a la amplificación que provee el social media, no saben acoger estos avances. Y por el contrario aprovechan la información que se produce con las novedades tecnológicas para conseguir un pequeño beneficio inmediato propio, como lo puede ser tener un poco más de hits en sus stats.

    Por ejemplo, he visto a fans de XBOX decir que la PS4 es una caja de zapatos.

    Como si la Xbox One no fuese súper cuadrada al punto de que los fans de PS4 dicen que parece un Betamax.

    xboxplay

    Sin embargo lo que noto y me alegra para mi gusto, es que estos nuevos diseños dejaron atrás ese infantilismo que representa una consola de videojuegos con apariencia de nave espacial.

    Algunos queremos tener un living room, sala de tv, estudio o como ud lo llame que se vea sobrio y donde los aparatos que acompañen al 52" no sean intrusivos... en dos palabras: no traquetos...

    Creo que son dos diseños muy elegantes y ambos me gustan.

    Y en el caso de Xbox, el diseño es absolutamente intencional. Xbox One es una plataforma para usuarios vanguardistas que desean tener una experiencia totalmente integrada con todo su centro de entretenimiento. A tal punto que actúa como receiver, para poder controlar la televisión por cable o la música desde la grandiosa interfaz ofrecida por Kinect, que se opera por voz. Es por esto que una apariencia de este estilo es mucho más conveniente, pues combina mucho mejor en el ambiente y no se ve como un aparato raro que por accidente dejó el niño por ahí botado.

    Obvio que poder acceder a todas estas ventajas implica que la plataforma haga cosas que para muchos usuarios no son propias de una consola; de hechos para algunos es hasta pecado! Por ejemplo, estar frecuentemente conectada a internet.

    Si la consola no está conectada frecuentemente, entonces no podríamos correr juegos de carreras contra los avatares de nuestros amigos. Tampoco podríamos lograr que las últimas estadísticas de Messi se vieran reflejadas en nuestro juego de FIFA para reflejar el estado real del jugador... de hecho cosas tan sencillas como ver una película en Netflix, requiere que la consola tenga acceso a Internet. Desde que tengo mi XBOX 360, siempre la he mantenido conectada a internet y no se me ha caído ningún brazo y tampoco me siento pecador.

    Ud usuario que me lee en este momento: en serio no tiene internet permanente en el lugar donde reside? No está ahora conectado desde un equipo que tiene internet permanente?

    Obviamente, existen por ejemplo los tripulantes de submarinos atómicos que cuando están en su trabajo no tienen Internet frecuentemente, ni nunca, de hecho. En estos casos y otros no tan extremos, la experiencia de XBOX One no se va a poder tener. Para eso está la Xbox 360 a la que le hemos hecho hasta un rediseño para que los que quieran o tengan que quedarse en el estilo de juegos de hoy en día, lo puedan hacer sin problemas. Pero esto no nos puede detener en el avance. No nos puede detener el ánimo de ofrecer mayor funcionalidad y servicio.

    Es como si cuando se ideó el CD como medio de distribución de música, este proyecto se hubiese detenido porque la gente tenía equipos de sonido solo con casetera.

    casette

     

    De hecho, el mismo surgimiento de los CDs desplazó la vieja tecnología de cintas y comenzaron a aparecer aparatos que se hicieron cada vez mejores y baratos.

    Si nos hubiéramos atenido a los casettes, los lapiceros allegro seguirían siendo populares por su capacidad de "rebobinar" manualmente dichos casettes, para ahorrar la batería del reproductor portable.

    Por el contrario, si llegamos al punto en el que los juegos se distribuyan de manera digital masivamente; al igual que ha pasado con servicios como Netflix, Hulu, iTunes, etc, tendremos aún más motivo para que la sociedad implemente en mayor medida el acceso permanente a internet, hasta el punto de poderlo encontrar tan fácil como un tomacorriente. Sin mencionar que al integrar nuestros juego con el mundo online, tendremos una experiencia memorable no obtenida hasta ahora.

    Cómo hemos comenzado el proceso de digitalización total de los juegos?

    Funciona de la siguiente manera:

    1. Compras un disco (veremos como poco a poco compras menos discos y en vez de esto, haces una compra online y te bajas el contenido)

    2. Llegas a tu consola y activas ese disco a través de tu Microsoft Account.

    Esta activación de da un token de propiedad digital.

    3. Juegas

    Preguntas?

    Si:

    1. Pueden jugar otros usuarios en la misma consola ese mismo juego aún con una Microsoft Account distinta?

    R. Sí. Todos los usuarios que jueguen el juego en la consola en que se activó podrán jugar el juego.

    2. Puedo prestar mi juego a un amigo para que él juegue?

    R. SI!!! Y esto es lo que los blogs sensacionalistas no cuentan y lo que los fans mal informados no conocen!

    Los juegos se pueden prestar hasta a 10 amigos que están en una lista editable.

    Si una persona en esa lista ha estado por más de 30 días, en ese caso califica como un amigo al que se le puede prestar el juego.

    Entonces ese amigo recibe el disco, lo pone en su consola la consola valida que el juego es tuyo, mira tu lista de amigos y lo valida y le permite jugar.

    Como ven, es una medida que nos permite compartir nuestra propiedad, sin incurrir en la piratería que amenaza a la industria.

    Pero más allá de esto, lo que nos permitirá este sistema a futuro, será prestar nuestros juegos sin necesidad ni siquiera de un disco, porque no hará falta verificar la propiedad con el disco, pues tu cuenta Microsoft tendrá asociados los juegos que has comprado y descargado. Entonces un amigo podrá ver tu lista y solicitar el préstamo del juego. Tú lo autorizas y entonces el amigo se baja el juego en su casa y juega. Así de sencillo.

    La elaboración un poco avanzada de este mecanismo de préstamo para los bloggers que no se informan bien antes de escribir o que sencillamente tergiversan toda la información para su propio beneficios se convierte en un simple titular amarillista como este: "Xbox One no te permite jugar juegos prestados".

    3. Puedo vender mi juego usado y comprarme otro usado?

    R. SI!!! Hemos declarado oficialmente que existirán mecanismos en los que el token de propiedad digital que obtenemos cuando se activa por primera vez el juego, se va a poder comerciar. Si bien no hemos publicado cuáles serán esos mecanismos, lo que sí está claro es que Microsoft en ningún momento cobrará fees cuando se hagan esas transacciones.

    Y también quedó claro que los publishers tienen la potestad de decidir si permiten este tipo de transacciones o no. OJO, que esto mismo pasa con el PS4 que a pesar de promulgar en la rueda de prensa del E3 que no iban a impedir la reventa de títulos, luego en un espacio más reducido declararon que igual el Publisher era quien al final tenía la decisión.

    Nuevamente, el sistema de token, es el que permitirá transferir propiedad digital. Como el camino es hacia eliminar los caros, poco ecológicos e inseguros discos, cómo vas a hacer para vender uno si no tienes algo que represente tu propiedad? Pues bien, para eso van a estar los tokens.

    Este sistema parece que nubló también la mente de todos esos amarillistas que sencillamente escribieron: "Xbox One no permitirá la reventa de títulos

    Kinect 2 y Precio

    He recibido quejas de otros personajes disgustados porque la Kinect 2 siempre debe estar encendida y escuchando. Esto es falso. El usuario la puede configurar para que siempre esté totalmente apagada. De nuevo el asunto es que para poder disfrutar de todo su poder, lo mejor es tener el sistema de escucha siempre encendido. Francamente no veo como más lograr que podamos encender todo el sistema con la voz, si la Kinect que es la que escucha, está totalmente apagada.

    Pero esto no quiere decir que no se pueda jugar sin Kinect. Si el juego no está basado en Kinect en su core, por ejemplo un Forza, no es obligatorio usarla, no problem!

    Hoy en día tengo la Kinect con la Xbox 360 y siempre que llego al living siento que disruptivo el que tenga que encender la Xbox con las manos o con un control, para después todo operarlo con la voz. I mean, si llevo una bandeja con palomitas y una bebida, el tema de encender la consola ya me obliga a incomodarme, viendo que luego de esto ya podría hacer todo sin usar las manos. Entonces, obviamente, necesitamos que el sistema de escucha esté encendido permanentemente.

    Dice la queja: Pero es que Microsoft va a escuchar todas las barbaridades que digo e invadirá mi privacidad enviándome spam en los correos de acuerdo a las palabras que nos oiga... y entonces yo digo... Reeeeeeeeally? Are you serious?

    Si hay una compañía que se preocupa por proteger la privacidad de los usuarios, esa es Microsoft y lo digo por experiencia propia:

    O sea, de quererlo hacer, pondríamos una política de uso para que pudiéramos husmear los correos de los cientos de millones de usuarios de Outlook que tenemos hoy en día de manera que pudiéramos hacer ese asunto del spam. No way!

    Además en los términos de uso, se hace claro que Microsoft no grabará ni subirá a Internet las conversaciones que capte la Kinect.

    La gente se deja enceguecer tanto, que prefiere pensar: Microsoft me va a hacer espionaje de todo lo que diga... son malos, sigamos con lo de siempre.

    En vez de quitarse la venda y visualizar un escenario como este:

    Llegas, te sientas en el sofá y comenzar a hablar:

    Xbox On

    Netflix

    Fringe

    y ver la serie...

    Luego:

    Xbox

    MTV

    Y luego al ver que son puros realities,

    XBOX

    Forza

    Y observar el resultado de las carreras que tu Avatar de Inteligencia Artificial que aprendió a jugar como tú, corrió contra tus amigos mientras tú estabas trabajando o en la U.

    Luego dices:

    Xbox

    Poker Stars

    Y juegas una partida de póker contra tus amigos y los engañas con tu póker face a través del reconocimiento de los gestos que puede hacer la Kinect, sin mencionar que además puede hasta medir tu ritmo cardíaco...

    Con todo esto, no entiendo cómo se quejan porque vale 100 dólares más que una PS4, viendo que la Kinect 2 viene incluida out of the box.

    USD$500 es un precio menor al de algunos smart phone libres... así que: c'mon... estás obteniendo mucho más por el precio que estás pagando!!!

    Para mí definitivamente este es el futuro de los video juegos y estoy orgulloso de que Microsoft haya sido el primero en tomar este bold step, aún arriesgándose a generar todo el buzz negativo que se ha generado por la misma naturaleza de la web y el social media de hoy en día, que permite que cualquiera que diga algo ligeramente sensacionalista sea amplificado, aun cuando sus mensajes no hayan sido documentados debidamente.

    Es por esto que fui de los primeros en hacer la pre orden de esta revolucionaria consola, que de seguro me traerá muchas más comodidad y una experiencia de usuario totalmente integrada en lo que quiero sea mi sistema de entretenimiento casero:

    preorder 

  • WarNov Developer Evangelist

    Por qué los bloques Try-Catch sí afectan el performance

    • 7 Comments

    He escrito un post en el cual hablo de las Buenas Prácticas en Manejo de Excepciones .Net. Tuve un comentario muy interesante en el cual la persona me mencionaba que contrario a lo que yo afirmé en ese post, los bloques try..catch no generaban mayor impacto en el performance de la aplicación. Y me citó algunos artículos al respecto.

    Aunque los artículos obedecen a pruebas que en ocasiones producen casi los mismos resultados usando o no excepciones, puedo decirles muy respetuosamente que son bastante ingenuos porque no tienen en cuenta la estructura y funcionamiento del framework.net y sobre todo del optimizador de compilación.

    Así pues, les comento que para hacer la afirmación que hice, no ejecuté ninguna prueba. Solo hablé de una conclusión bastante lógica que se tiene al estudiar el comportamiento del optimizador de compilación del framework:

    Tomemos como ejemplo el siguiente código escuelero:
        
       

       1:      int cuenta = 1;
       2:      AlgunMetodo();
       3:      cuenta++;
       4:      OtroMetodo();
       5:      cuenta++;
       6:      Console.WriteLine(cuenta); 

    Cuando esto es compilado, el JIT de .NET efectivamente optimiza todo a:

       1:  AlgunMetodo();
       2:  OtroMetodo();
       3:  Console.WriteLine(3);

    Que obviamente corre enormemente más rápido.

    Sin embargo, para poder mantener las reglas de ordenamiento de memoria distribuida a través de hilos durante el tiempo de ejecución y compilación el CLR deshabilita TODA OPTIMIZACION que afecte el orden de lecturas y escrituras del CIL en los bloques protegidos. Los bloques protegidos conocidos también como regiones protegidas, bloques resguardados o bloques “try”.

    Esto en castellano sencillo nos indica que el JIT no puede optimizar código metido en bloques try..catch. Es por esto que recomiendo reducir el uso de excepciones al mínimo necesario. Y usarlas solo para solucionar problemas no relativos a negocio, que se pueden solventar simplemente con un algoritmo más inteligente.

    También por esto menciono que esos artículos son ingenuos, porque para hacer una prueba fehaciente deberíamos incluir un algoritmo de uso común en el cuál la optimización sí marca la diferencia.

    Así que si usamos el try-catch tendríamos:

       1:      int cuenta= 1;
       2:      try
       3:      {
       4:          AlgunMetodo();
       5:          cuenta++;
       6:          OtroMetodo();
       7:          cuenta++;
       8:      }
       9:      finally
      10:      {
      11:          Console.WriteLine(cuenta);
      12:      } 

    En este caso, al carecer de optimizaciones, la variable inicia con el valor de 1, luego se ejecuta AlgunMetodo(), luego la variable cuenta se vuelve a ajustar, luego OtroMetodo(), luego una tercera actualización y finalmente se escribe el calor de una variable, que cuesta más en ciclos de procesador, que escribir una constante. En síntesis, estamos desperdiciando ciclos.

    Estas optimizaciones que mostré aquí son de las mas sencillas que hace el JIT; pero no son las únicas; existen muchas otras optimizaciones que se pierden dentro de los bloques try..catch. Súmenle a esto le hecho de que efectivamente estas instrucciones consumen más memoria (poca o mucha pero la consumen) y as’;i podrán concluir por qué es mejor usarlas muy prudentemente.



  • WarNov Developer Evangelist

    Crea tu Angry Birds en WP7 y sin código!

    • 0 Comments

    ABSTRACT: Para la programación de animaciones en Silverlight y Windows Phone 7 existen un conjunto de librerías Open Source que contienen funcionalidades físicas (comportamientos y efectos especiales predefinidos) que nos permiten agregar efectos muy realísticos a las animaciones usadas en este tipo de aplicaciones, basándonos en leyes físicas de gravedad, colisiones, aceleraciones y demás. Estas librerías están en el portal Open Source de .net: Codeplex. Y solo descargándolas, ya podemos crear aplicaciones muy impactantes sin una sola línea de código. En este post observaremos cómo se pueden usar, a través de Expression Blend.


    Content:
    Dentro de nuestro programa de MCS una de las actividades que he venido ejecutando es proponiéndole a nuestros entusiastas que creen publicaciones de alto valor para nuestra audiencia, suministrándoles el material requerido para que lo hagan.

    Aquí tenemos la primera muestra. Se trata de un blog post de Carlos Rojas (@carojaspaz), quien es un candidato a convertirse en uno de nuestros nuevos MCS.

    Descarga: Proyecto Angry Birds Clone
    Recursos: Physics Helper 4.2.0.0

    En este post, vamos a mostrar cómo crear un pequeño clone de Angry Birds para Windows Phone 7 en 5 minutos usando Expression Blend y ninguna línea de código (si ninguna), por supuesta el juega que crearemos está lejos del completo, pero puede servir como un inicio de un nuevo y sorprendente juego.

    Usaremos las Herramientas de desarrollo para Windows Phone (están incluidas en el Expression Blend para Windows Phone 7) las cuales se pueden descargar del sitio http://create.msdn.com y además utilizaremos las bibliotecas de clases que se encuentran en CODEPLEX, la Physics Helper que es una biblioteca muy utilizada para recrear fenómenos físicos y Farseer Physics, que básicamente adiciona algunos comportamientos dentro de Expression Blend con el fin de ser usados en nuestra máquina sin utilizar ni una sola línea de código.

    Como primer paso descarga las bibliotecas de clases, extrae las DLL y crea una aplicación Windows Phone 7 pero recuerda usar la versión 7, (Aún no se ha probado la aplicación con la versión 7.1 aunque podría funcionar perfectamente).

    Eliminamos todo el contenido dentro de la página y cambiamos el tipo del elemento LayoutRoot por un elemento Canvas, con el fin de poder trabajar con la Biblioteca Farseer.

    Definimos la propiedad SupportedOrientations en Landscape de PhoneApplicationPage, si no podemos encontrar la propiedad se puede ubicar escribiendo su nombre en la caja de búsqueda de propiedades.

    Cambiamos también orientación del dispositivo, la pestaña Device sino esta visible la puedes activar en el menú Window y cambias la orientación del dispositivo.

    Agrega como referencia al proyecto las bibliotecas descargadas con anterioridad, las DLL que debes agregar son: Farseer Physics 3.0 WinPhone.dll, Spritehand.FarseerHelper.dll, Spritehand.PhysicsBehaviors.dll y FarseerPhysics.dll.

    Reconstruye la aplicación (Ctrl + Shift + B) para que los comportamientos aparezcan en la lista de de Assets.

    Ahora agregamos el control PhysicsControllerBehavior a nuestro objeto LayoutRoot, este control identificara al objeto como el objeto donde suceden los fenómenos físicos.

    Seleccionamos el nuevo control agregado y modificamos la propiedad MousePickEnabled a activa.

    Ahora vamos a dibujar algo sobre el LayoutRoot, usaremos un camino cerrado para crear una forma para jugar, siéntete libre de dibujar lo que prefieras.

    Agregamos al objeto que acabamos de dibujar un PhysicsObjectBehavior y activamos la propiedad IsStatic esta propiedad permite referenciar este objeto como si fuera la tierra y las leyes de gravitación se aplican a él.

    Ahora dibujamos unos rectángulos que será donde los puerquitos se posaran para ser derribados por el pajarito, a cada rectángulo le agregamos un PhysicsObjectBehavior y puede ponerlos en la posición que desee.

    Ahora agregaremos a los puerquitos y los pajaritos, para ello agregaremos las imágenes, en el proyecto daremos click en agregar ítems existentes y agregaremos las imágenes de los puerquitos y el pajarito, estos objetos deben recibir también el PhysicsObjectBehavior.

    Ahora que tenemos los objetos dentro de nuestro escenario vamos a agregar un nuevo comportamiento a los puerquitos, agregamos PhysicsExplodeBehavior este comportamiento permite que el puerco explote al chocar con el pájaro furioso, para esto, agregamos el comportamiento a todos los puercos, después configuramos unas propiedades, el disparador (Trigger) escogemos uno nuevo y le asignamos PhysicalCollisionTrigger, seleccionamos los objetos que van a colisionar el BodyOne será el pajarito y el BodyTwo será el puerquito para ello usaras una mira que está en la caja de texto y la arrastras hasta el objeto seleccionado, así para los puercos que tengas en tu tablero después de esto listo podemos probar nuestra aplicación.

    Y ASI SE VERA NUESTRA APLICACIÓN

    Este post lo pueden encontrar en el blog de Carlos Rojas: http://carojaspaz.wordpress.com/

  • WarNov Developer Evangelist

    Facebook Game Hack

    • 7 Comments

    En este video apreciaremos cómo hackear un juego de Facebook usando un algoritmo de permutación hecho recursivamente en C#, más el acceso a la WinAPI para enviar mensajes entre aplicaciones distintas. Solo se necesita un archivo de palabras y cualquier versión que compile código C# sobre Windows.

  • WarNov Developer Evangelist

    Y llegó el WebCamp Colombia 2010 #WebCamp10

    • 20 Comments

    image

    El nivel técnico y de “coolness”  de este evento,  hizo que durante la primera noche se agotaron todas las boletas!
    (Si no clasificaste, tenemos sesiones en vivo con LiveMeeting)

    Si fuiste uno de los afortunados en lograr un cupo, te cuento algunas condiciones especiales para el día del evento:

    1. A pesar de ser un Campamento, no tienes que traer botas pantaneras ni ropa de cambio… es en el cool piso 15 de Microsoft Bogotá.
      • Tampoco necesitarás fiambre ni malvaviscos, pues te daremos dos breaks y un almuerzo en la mitad
      • Ni linternas ni leños son requeridos
      • Un internet portable nos ayudaría a que la red corporativa no se sobrecargue… entonces es recomendado.
    2. Instalaré un Kinect con su XBOX en los pasillos para que cuando se estresen o sientan que se están durmiendo en la charla, puedan ir a estirar el esqueleto.
    3. Habrán inscripciones para muchos de nuestros programas:
      • Podrán inscribirse en planes de emprendimiento para hacer empresa con la ayuda de Microsoft.
      • Habrán registros para el concurso de Windows Azure en MVA con el cual solo haciendo una aplicación en Azure, puedes participar en el concurso para ganar uno de 30 combos XBOX+Kinect.
      • También podrán inscribirse en planes gratuitos para probar Windows Azure. Estos planes, a pesar de ser gratuitos, requieren Tarjeta de Crédito para verificar identidad y en caso de ser necesario, ofrecer servicios adicionales a la oferta gratuita. Así que vengan preparados. Nosotros les ayudamos!

    Pero qué gracia tiene inscribirse a esos programas en el WebCamp, si es posible hacerlo también cuando y desde donde lo queramos? Para todos los inscritos en programas Microsoft, estaremos rifando Hardware Microsoft + Libros. Además, el 30 de Noviembre, día del WebCamp, es el último día para adquirir la promoción de Azure. Así que si hay suficientes inscritos, hasta de pronto me anime y rife de inmediato el Kinect con la XBOX!!!

    Qué debes traer?

    No olvides que si quieres estar en las sesiones prácticas que vienen después del almuerzo, debes traer tus máquinas portátiles con las siguientes especificaciones mínimas:

    1. Microsoft Web Platform Installer 2.0 (Web PI) es una herramienta gratuita que facilita la descarga, instalación y la actualización de los últimos componentes de Microsoft Web Platform, incluidas las herramientas que son requeridas para los laboratorios: Internet Information Server (IIS) Express, SQL Server Express, .NET Framework  y Visual Web Developer. Además tiene aplicaciones web ASP.NET y PHP muy populares que son Open Source.

    2. Si desean asistir al track de Windows Azure, además de lo anterior se requiere:

    a. Portátil con alguna de las siguientes versiones de Windows: Vista, 7, Windows Server 2008. Y con IIS 7 (no Express. Azure requiere la versión Full. XP no soporta IIS7). (Si no tienen la licencia, se puede descargar un trial de aquí.)

    b. Sql Server 2008 R2 Express Edition  y SQL Server Management Studio 2008 R2 Express Edition (Obligatorio tener una instancia llamada SQLEXPRESS y que sea R2)  Se descarga con el Web Platform Installer.

    c. Visual Studio 2010 Web Developer o superior. Si no tienen la licencia, se puede descargar un trial de aquí.

    d.  Windows Azure Tools for Microsoft Visual Studio 1.2 (June 2010) descargables aquí

    e.  Windows Azure Training Kit descargable de aquí.

    f.  Opcional: Prelectura de estos artículos

     

    Recuerden que los tracks que tenemos se estarán transmitiendo por LiveMeeting por si tienen amigos que se quedaron sin verlo:

    ASP.NET 4.0 (Novedades). LiveMeeting
    IE9+HTML5 LiveMeeting
    MVC 2.0 LiveMeeting
    Windows Azure LiveMeeting

    Cualquier duda, pregúnteme aquí o en Formspring

    Para finalizar y que puedan desplegar todo su potencial Web 2.0, el tag Oficial para este evento, será #WebCamp10. Úsenlo para identificar sus twitts. Al final la persona con más twitts con el tag, ganará un premio sorpresa!!!

     

    Open mind 4 a Different Coding Fellas! Y nos vemos en el terreno!

    image



  • WarNov Developer Evangelist

    Cuentas de prueba de Windows Azure gratuitas por una Semana

    • 8 Comments

    Para que puedan probar todo lo que deseen en Windows Azure por una semana de manera totalmente gratuita y sin tarjeta de crédito, he creado este sencillo concurso en el cual los ganadores serán las primeras 15 personas en comentar este post, poniendo su usario en twitter que debe estar siguiendo a @msdevcol y gustarle la página de Microsoft Developers Colombia en Facebook.

    Los 15 ganadores tendrán una cuenta activa en Windows Azure desde hoy hasta el día 16 de Julio.

    Por mensaje directo les enviaré su usuario y password para que entren directamente por el Windows Azure Developer Portal.

    Recuerden que aquí encuentran todos mis artículos de Azure y que si tienen dudas, pueden formularlas como comentarios en este Post.

    A comentar!

  • WarNov Developer Evangelist

    Tips para el desarrollo de aplicaciones en Windows Azure

    • 0 Comments

    En este post estaré acumulando una serie de tips apropiados para un mejor desarrollo de aplicaciones Web para Azure.

    5. Ignorar los Errores del contexto de datos de Windows Azure producidos por el 404:

    En Windows Azure podemos acceder al almacenamiento a través de REST. REST funciona a través de HTTP. Así que cuando consultamos un registro de una tabla y éste no se encuentra, el servicio nos retorna 404 (Not Found) Y entonces el contexto de datos que usamos para representar en memoria los datos de las tablas entonces genera una excepción a raíz de ese 404. Entonces para solventar esto tenemos dos opciones. La primera, manejar la excepción y la segunda sería ignorar este tipo de error, pues sabremos que se trata de un registro en una tabla no encontrado. Así que en la consulta lo que se haría sencillamente es observar la cantidad de registros retornados (count):

    context.IgnoreResourceNotFoundException=true;

    Donde context es el objeto heredado de TableServiceContext a través del cual estamos accediendo a las tablas de Azure.

    4. Escoja puntos cruciales para hacer programación alternativa

    En algunos casos ud., querrá que su aplicación corra con los mínimos cambios independientemente de si está en un hosting tradicional o si está en el Cloud. Cosas que pueden cambiar, son por ejemplo los orígenes de las variables de configuración. Como lo vimos en el punto 3, una aplicación en cloud, generalmente tiene sus variables de configuración en caliente, puestas en el archivo de configuración del servicio, mientras en un hosting tradicional, esto se hace en el Web.config. Podemos usar la propiedad

    RoleEnvironment.IsAvailable

    Para chequear si estamos corriendo en Azure (true) o no (false) de esta manera, determinar por ejemplo cuál de los archivos de configuración chequear para traer una variable.

    Por ejemplo:

       1:  string enterprise =
       2:    RoleEnvironment.IsAvailable ?
       3:    RoleEnvironment.GetConfigurationSettingValue("EnterpriseName") :
       4:    ConfigurationManager.AppSettings.Get("EnterpriseName");

    3. Web.Config o ServiceConfiguration.cscfg

    Tanto las aplicaciones Web como los servicios de Cloud (CS) tienen archivos de configuración que permiten en teoría hacer modificaciones en caliente sobre los servicios sin tener que recompilarlos.

    Pero por qué en teoría?

    En teoría, porque cuando el sitio Web está en Azure, no tenemos la posibilidad de acceder al Web.Config como es tradicional en los hosters clásicos. En general, los archivos de las instancias de cómputo (Web.Role, Worker Role) no son accesibles por ejemplo con un FTP. Así que lo que tendríamos que hacer, es una aplicación que modifique los Web.Config internamente y lo peor de todo, hacer que se ejecute en todas las instancias Web que estemos corriendo. Como ven, no es muy práctico.

    Entonces la opción sería editar el Web.Config y re empaquetar de nuevo el sitio y volverlo a subir… tedioso no?

    Afortunadamente, tenemos el archivo ServiceConfiguration.cscfg. Éste sí es accesible desde el portal del desarrollador de Windows Azure y lo podemos bien sea editar allí en vivo o subir independientemente con la nueva versión que queramos.

    Entonces lo que recomiendo es que si en su aplicación ud. tiene variables de configuración que cambian mucho durante la ejecución de la misma, éstas sean puestas en el archivo de configuración del servicio. Por otro lado si son variables que solo cambian de compilación en compilación, entonces está bien dejarlas en el Web.Config.

    Recordemos que tanto el Web.Config como el ServiceConfiguration.cscfg son fácilmente accesibles en un proyecto de Cloud. Además es posible generar rutinas de programación que decidan ir a buscar las variables de configuración a uno u otro archivo dependiendo de cómo lo haya desplegado: hosted o en cloud.

    2. Subir datos a las tablas de Azure

    Esta operación puede tener tres connotaciones:

    • Subir dos o tres registros
    • Subir batch de cientos o algunos miles de registros
    • Subir miles y miles de registros:
      • Considere escribir una rutina usando el API del Storage de Windows Azure

    Si usa Cloud Storage Studio, y está subiendo datos en español, es posible que el archivo plano que esté subiendo o el CSV que use para esto no se presente adecuadamente luego de cargarlo en la herramienta. Así que las tildes y eñes por ejemplo se le mostrarán como símbolos extraños y así subirán a la nube. Esto se soluciona fácilmente, usando archivos de texto o CSV grabados con la codificación UNICODE.

    1. Desarrolle la parte visual del sitio web sin Azure

    Suena curioso que para programar mejor para Azure, les de este consejo. Pero es muy apropiado en la medida de las posibilidades. A qué me refiero?

    Todo lo que tiene que ver con el debugging y por supuesto el deployment de una aplicación Web en Windows Azure, trae de por sí, una estrecha relación con IIS, que es el servidor que se activa con los Web Roles.

    Por eso, cada vez que ejecutamos la aplicación Web para Azure, se hace todo un deployment del sitio al IIS de manera automática.

    Si nuestra máquina es lo suficientemente rápida, esto puede que no sea ninguna molestia. De lo contrario si puede llegar a tomar más tiempo que hacer un simple debug usando el servidor Cassini incluido en Visual Studio.

    Sin embargo lo más importante durante el proceso de debug, es que las actualizaciones que hagamos a las páginas aspx o en general a cualquier recurso que haga parte del sitio mientras éste se está ejecutando en desarrollo, no se ve reflejado de inmediato en éste despliegue, debido a que como las fuentes ya están en un directorio virtual dentro del IIS, los cambios que hacemos por fuera no se ven reflejados sino hasta que se hace un nuevo despliegue, por lo que es necesario detener la aplicación y volver a ejecutar el despliegue; cosa que aunque es automática consume más tiempo que cuando usando el Cassini actualizamos las páginas en caliente para ver los cambios de inmediato. Esto es muy útil a la hora de refinar la apariencia gráfica de las páginas.

    Por esto es que recomiendo trabajar las interfaces gráficas del sitio web de manera separada a Azure. Esto nos va a dar mucha más agilidad en este proceso. Cuando ya tengamos lo suficientemente estables estas páginas, podremos ya asociarlas a un Web Role y entonces refinar la integración con Cloud, lo que puede implicar cambiar ciertos métodos o valores quemados en la forma mientras ésta se diseñó.

  • WarNov Developer Evangelist

    Precisión con tipos de Datos .NET

    • 0 Comments

    Por qué en el Framework .NET puede pasar que:
    0.2 + 0.1 = 0.3000000000000000000004 ?

    Algunas veces, escoger el tipo de datos apropiado para nuestra aplicación puede no ser trivial. Aquí muestro un caso en el que se marca la diferencia entre una aplicación errónea y una correcta, solo mediante un cambio de tipo desde double a decimal.
    También hablo de errores de precisión y cómo evitarlos con el uso de deltas de error. Finalmente muestro un tip de Visual Studio 2010 para escribir código más claro.

     

    En el video menciono las Visual Studio 2010 Pro Power Tools. Un conjunto de extensiones para Visual Studio Professional (y superiores) que mejoran la productividad del desarrollador. Estas tools, las pueden descargar de MSDN de manera gratuita.

    Este post fue originado por una pregunta de Juan David

  • WarNov Developer Evangelist

    El mayor evento para desarrolladores en Colombia 2010

    • 1 Comments

    Es un evento que se llevó a cabo el día del 26 de abril en el hotel Sheraton de Bogotá.

    Dividido en tres tracks: Developers, Architects y ITs. En cada track tuvimos tres sesiones y un keynote al iniciar. El cierre estuvo a cargo de:

    El señor Steve Ballmer. Presidente Mundial de Microsoft, de quien fui telonero junto con Ruben Sánchez (Education Lead de Microsoft Colombia) con nuestra charla de Windows Azure, que se lanza oficialmente en Colombia.

    Antes de esta charla, en nuestro track de desarrollo, estuvimos viendo lo último de Silverlight 4 con Rodrigo Díaz Concha, y antes de esto, el lanzamiento de Visual Studio 2010 a cargo del mexicano también Guillermo Serrato.

    Estos fueron los detalles de las charlas en el track de desarrollo:

    Visual Studio

    Fue una charla plenamente orientada al lanzamiento, con cinco demos que se harán en el transcurso de la misma:

    a. Stay in the zone: Mejoras del producto para que el desarrollador no tenga que salir fuera de VS para conseguir lo que necesita para trabajar. Esto incluye mejoras de la interfaz, Extension Manager y Code Snippets.

    b. Windows7 Dev: VS2010 permite crear aplicaciones para aprovechar todas las mejoras que Windows7 tiene de manera rápida. Esto incluye soporte multitouch, ribbon, animaciones…

    c. Sharepoint Dev: Las nuevas herramientas de Visual Studio para ayudar a desarrollar sobre esta plataforma tan popular

    d. Phone+Azure: Herramientas para crear aplicaciones de Windows Phone Series 7 con Silverlight y utilizar servicios en Windows Azure para que tu aplicación se conecte con otros usuarios.

    e. Team Collaboration: Mejoras para la colaboración del equipo, esto incluye, Team Foundation Client como parte de VS profesional además de Team Explorer en la web, diagramas de arquitectura para entender el código que otros desarrolladores escribieron, utilizar información recolectada automáticamente por los testers para corregir defectos en el código y nuevas gráficas creadas automáticamente para visualizar el progreso del equipo

    Prepárense para la charla

    Experiencias de Usuario Enriquecidas

    a. Vimos como con nuestras tecnologías podemos usar otras tecnologías existentes como Facebook y Twitter para generar mejores experiencias de usuario.

    b. Photobooth: Aquí observamos una aplicación enriquecida que permite manejar los periféricos de nuestros equipos para tomar fotografías, editarlas y guardarlas.

    c.  La experiencia de usuario no solo va para PCs. También funciona en teléfonos: Windows Phone 7 Series!

    Material Técnico

    Plataforma de Servicios en la Nube (Azure)

    a. Qué es y por qué Cloud Computing? Cuál es la razón por la cual deberíamos interesarnos en esta tecnología.

    b. Ventajas de la Oferta Microsoft para el Cloud Computing!

    c. Demostraciones de todo lo que podemos lograr con Windows Azure y Visual Studio!

    Material Técnico

    El cierre de Steve Ballmer

    Aquí los dejo con unos extractos del cierre de Steve Ballmer en video!

    Developers, Developers, Developers!!!


  • WarNov Developer Evangelist

    Diseñando Experiencias con Expression Blend

    • 2 Comments

    En estos últimos días, me he encontrado dictando varias conferencias en las que Expression Suite de Microsoft ha sido el protagonista. La recepción en general ha sido buena luego de mostrar las características de la herramienta. Sobretodo la integración entre los mundos del diseño y del desarrollo que ofrece Blend.

    BlendBanner

    Sin embargo en nuestro entorno, los diseñadores que la mayoría del tiempo han trabajado con herramientas Adobe no encuentran un punto clave para comenzar a aprender a manejar la Suite y adquirir los conocimientos necesarios para aprender a manejar la herramienta.

    Así que de las principales consultas que recibo es: Y cómo les enseño a mis diseñadores a manejar la herramienta?

    Una de las opciones más directas que siempre doy, es que accedan a los servicios (consultorías) de los entusiastas de Microsoft o cursos oficiales por ejemplo de CPLS.

    Pero hoy el mensaje va más allá gracias a dos excelentes recursos que tenemos mediante los cuales, los diseñadores con experiencia previa en herramientas Adobe, pueden acceder a unos cursos muy completos en los cuales aprenden fácilmente a dominar nuestra suite de Expression. El primer curso se enfoca en Windows y WPF y el segundo en Web y Silverlight.

    El primero de ellos es orientado a programación Windows con WPF:

    Designing Windows Experiences with Expression Blend (WPF)

    Entrenamiento

    Se trata del curso Designing Windows Experiences with Expression Blend. Un curso que provee el conocimiento experimental requerido para diseñar experiencias de usuario usando Expression Blend; herramienta con la cual podemos acceder a todo el poder de Windows Presentation Foundation.

    Es un curso enfocado a diseñadores gráficos especializados en Interfaces de Usuario que tengan una experiencia previa con Flash o Director. Además no se requieren conocimientos previos por ejemplo de desarrollo o del manejo de Visual Studio.

    Introducción

    El curso comienza enseñando la herramienta Expression Design con la que podemos general gráficos vectoriales de calidad profesional. Todo con procedimientos enteramente experimentales con los que llegan a construir una interfaz de un Video Player.

    Luego se enseñan otras herramientas de diseño que trabajan en conjunto con la Suite de Expression y que sirven para generar resultados más impactantes. En general son “Tips and Tricks” para preparar contenido 3D, gráficas, Video y contenido de audio para WPF, usando herramientas populares de diseño.

    Posteriormente nos enseñan cómo crear la interfaz del Video Player de una manera más avanzada usando Blend, para familiarizarnos con la herramienta.

    Colaboración

    Acto seguido nos ofrecen un proyecto pre-hecho que tiene toda la programación hecha, pero un diseño muy básico. Un capítulo de ejemplo que nos muestra la colaboración con el desarrollador. Los diseñadores toman este proyecto pobremente diseñado y lo convierten en un producto mucho  más atractivo.

    También hay otro escenario de colaboración en el que otro diseñador crea algunos recursos y assets previamente al diseño que se ejecuta. De esta manera el diseñador aprende a emplear assets generados en otra herramienta (por ejemplo Fireworks) y crea un ejemplo de una tienda de retail.

    Extras

    image

    Como si fuera poco también se ofrece un micro curso de UX para hacer énfasis a los diseñadores en los principios teóricos del manejo de la experiencia de usuario. Y muchos otros laboratorios para poder dominar la suite!

    El otro curso es:

    .toolbox (Silverlight)

    Es un curso online y más interactivo para aprender, crear y compartir experiencias con Silverlight y Expression Studio. Está creado completamente en Silverlight y ofrece una excelente experiencia de usuario genial para diseñadores y desarrolladores que quieran aprender más de la parte de diseño de aplicaciones Silverlight. Allí los participantes crean avatares para enriquecer su experiencia 2.0.

    image

    Tiene integración con Facebook y Twitter  y salones de clases. Básicamente se ofrecen dos tracks:

    • Escenarios de Diseño
    • Principios de Diseño

    Cada track ofrece How To Videos, Working Labs y características especiales que se desbloquean al mejor estilo de un videojuego en el que se van teniendo progresos a medida que nuestra reputación crece desde Rookie, hasta ser todo un All Star.

    image

    También tenemos ejemplos de aplicaciones de la vida real creadas por agencias expertas para Microsoft. Son aplicaciones avanzadas, cuyo código está completamente disponible para nuestro aprendizaje.

     

    Get Started!, Today!

    Otros Recursos:

    Silverlight 4 Training http://tinyurl.com/yebx3z7
    Curso en Videos de Silverlight http://tinyurl.com/yf32xl2


  • WarNov Developer Evangelist

    EntityFramework Interoperable

    • 0 Comments

    Sabemos que una de las tareas más costosas en el desarrollo de una solución de software, es la creación de la capa de acceso a datos. Como ya sabemos, Microsoft hoy en día nos ofrece una brillante alternativa en cuanto a ORM. El EntityFramework, que soporta originalmente en el fondo a MS Sql Server. Sin embargo, en este artículo veremos cómo nuestras tecnologías están abiertas a ser interoperables con otros motores de bases de datos como MySql y PostgreSQL.

    Para este post, me he permitido invitar a Emerson Perdomo. Ingeniero de Sistemas de la Universidad Distrital de Bogotá. Gran colaborador en nuestra subsidiaria de Microsoft Colombia quien ha estudiado bastante el tema de ORM y creación automática de formularios basados en clases. Las siguientes instrucciones fueron creadas por él, para ayudarnos a comprender el proceso de conectar el EntityFramework a otras fuentes de datos.

    PostgreSQL

    Npgsql - .Net Data Provider for Postgresql es un conjunto de DLLs que se agregan a Visual Studio .Net pero no se integran con el Wizard del Visual Studio .Net porque no hay soporte oficial de Npgsql, sin embargo, se pueden agregar en cada uno de los proyectos sin ningún problema; el inconveniente es que al intentar usarlas hay que generar el modelo desde "Visual Studio 2008 Command Prompt" e incluir los dos archivos ".cs" que genera al proyecto.
    A Continuación doy los pasos para poder usarlo en un ejemplo sencillo.

    PASO 1:

    Descargue de la página oficial de Npgsql
    http://pgfoundry.org/frs/?group_id=1000140

    El archivo:
    Npgsql2.0.8-bin-ms.net3.5sp1.zip

    Npgsql2.0.8-bin-ms.net3.5sp1.zip

    Descargue la Última versión de PostgreSQL
    http://www.enterprisedb.com/products/pgdownload.do#windows

    Obviamente hay que tener
    Visual Studio 2008 Professional Edition Trial con SP1
    http://www.microsoft.com/express/Downloads/

    .Net Framework 3.5
    http://www.microsoft.com/downloads/details.aspx?FamilyID=d0e5dea7-ac26-4ad7-b68c-fe5076bba986&displaylang=es

    PASO 2:

    Instalamos el PostgreSQL , el Visual Studio, .NET Framework 3.5 y descomprimimos el Npgsql2.0.8-bin-ms.net3.5sp1.zip recomiendo que lo descompriman en C:\ para que no estén buscando la ubicación.
    Ahora vamos a registrar nuestras DLL de Npgsql en el GAC de Visual Studio.
    Primero hay que abrir nuestro "Visual Studio 2008 Command Prompt" que se encuentra por lo general en "Inicio -> Microsoft Visual Studio 2008 -> Visual Studio Tools -> Visual Studio 2008 Command Prompt "
    Ahí ejecutamos las siguientes líneas de código:
    gacutil -i c:\ubicacion de la dll Npgsql\Npgsql.dll
    gacutil -i c:\ubicacion de la dll Mono.Security\ Mono.Security.dll
    en mi caso
    gacutil -i c:\ Npgsql2.0.8-bin-ms.net3.5sp1\bin\Npgsql.dll
    gacutil -i c:\ Npgsql2.0.8-bin-ms.net3.5sp1\bin\Mono.Security.dll

    PASO 3:

    Ahora hay que agregar una línea de código XML al archivo machine.config del Framework que por lo general se encuentra en C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\
    Abrimos el Archivo machine.config con el editor de su preferencia.
    Y agregamos en el área de <DbProviderFactories> </DbProviderFactories>
    la Siguiente línea de código

    <DbProviderFactories>
    <add name="Npgsql Data Provider" invariant="Npgsql" support="FF" description=".Net Framework Data Provider for Postgresql Server" type="Npgsql.NpgsqlFactory, Npgsql, Version=2.0.8.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" />
    </DbProviderFactories>

    PASO 4:

    Ahora abrimos el motor de base de datos PostgrsSQL y creamos una base de datos sencilla
    Base de datos Test
    http://www.megaupload.com/?d=2XS1OYGU
    Recuerda que la base de datos esta sin datos hay que alimentarla.

    PASO 5:

    Ahora ejecutamos la siguiente línea de código en el "Visual Studio 2008 Command Prompt".
    c:\> edmgen.exe /provider:Npgsql /mode:fullgeneration /c:"string de conexion" /project:NombreQueQuiera /language:CSharp
    En mi caso
    c:\> edmgen.exe /provider:Npgsql /mode:fullgeneration /c:"DATABASE=test;HOST=127.0.0.1;PORT=5432;PASSWORD=yta;USER ID=postgres" /project:TestPostgreSQL /language:CSharp
    Los Archivos van a quedar en esta Ubicación
    C:\Program Files\Microsoft Visual Studio 9.0\VC
    De ahí lo pasas al proyecto que estés trabajando y Solo agregas los archivos ".cs":

    Insertando modelo de Postgresql en solución VS

    Puedes encontrar más información sobre los Archivos de extensión.
    CSDL en :
    http://msdn.microsoft.com/es-mx/library/bb399169.aspx

    MSL en :
    http://msdn.microsoft.com/es-mx/library/bb399202.aspx

    SSDL en :
    http://msdn.microsoft.com/es-mx/library/bb399559.aspx
    No te preocupes si salen errores de referencia en el siguiente paso especificamos cuales son.

    PASO 6:

    Ahora hay que agregar unas referencias:
    System.Data.Entity
    System.Runtime.Serialization

    Después de esto Tendrás que crear el App.Config y configurar la cadena de conexión.
    Y listo ahora es posible hacer CRUD a la base de datos, para ver el ejemplo terminado dejo el SourceCode.
    http://www.megaupload.com/?d=CORN5YVQ
    __________________________________________________________________________________________________________________________________________

    MySql

    MySql Entity Framework es fácil de configurar ya que solo tienes que descargar el Mysql Connector de la página oficial http://dev.mysql.com/downloads/connector/net/
    Instalarlo y listo, lo puedes Usar exactamente igual que Entity Framework para Sql Server.

    Claro está que debes tener previamente instalado el Visual Studio 2008 con SP1

Page 3 of 13 (318 items) 12345»