MSDN Blogs
  • WarNov Developer Evangelist

    Libros gratis de Microsoft para Kindle y otros Readers

    • 6 Comments

    Y la gente sigue creyendo que en Microsoft todo es pago…

    En esta oportunidad tenemos estos libros fundamentales para el aprendizaje en programación de teléfonos móviles con Windows Phone 7, Visual Studio, Sql Server, Windows Server y además una guía de actualización de capacidades, genial para aquellos que requieren un lineamiento para definir su carrera profesional en el mundo de la tecnología.

    Todos gratis y además en formatos que van desde el PDF, pasando por el EPUB y llegando al MOBI. De esta manera, va a ser muy cómodo y sobretodo ECOLOGICO aprender, usando readers como el Kindle, el Nook (Barnes & Noble), el Sony Reader, el Kobo eReader y como si fuera poco el iPad. No nos duele brindar el conocimiento a otras plataformas. Lo importante para nosotros, es compartir el conocimiento.

    He aquí los links:

    Programming Windows Phone de Charles Petzold PDF, EPUB y MOBI

     

     

    Adicionalmente, en este post encuentras todo lo necesario para seguir con tu conocimiento de Windows Phone 7: http://wnov.it/wp7Info

     

     

     

     

     

     

    Moving to Microsoft Visual Studio 2010 por Patrice Pelland, Pascal Paré, y Ken Haines PDF, EPUB y MOBI.

    Introducing Microsoft SQL Server 2008 R2 por Ross Mistry y Stacia Misner is PDF, EPUB y MOBI.

    image

    Introducing Windows Server 2008 R2 por Charlie Russel y Craig Zacker con el equipo de Windows Server de Microsoft PDF, EPUB y MOBI.

    image

    Own Your Future, Update Your Skills with Resouces and Career Ideas from Microsoft por Katherine Murray  PDF, EPUB y MOBI.

    image

  • WarNov Developer Evangelist

    Tutoriales de Desarrollo para Windows Phone–totalmente en español y gratuitos

    • 6 Comments

    LigaSilverlight150x150


    Está es una gran noticia que me da mi gran amigo, remarcable MVP en Silverlight, Rodrigo Díaz. Quien desde La Liga Silverlight ha traducido al idioma español el contenido original de todos los tutoriales para el desarrollo de aplicaciones en Windows Phone, disponibles en App Hub.

    ¡Son un total de 27 tutoriales!

    Este material de entrenamiento completamente gratuito y en español te servirá para iniciar en el mundo de la programación de la nueva versión del sistema operativo móvil de Microsoft: Windows Phone 7, o si ya eres desarrollador para este dispositivo estos tutoriales sin duda alguna te ayudarán a reforzar tus conocimientos.

    Cada tutorial trata un tema específico, por lo que no están vinculados directamente uno con otro pero definitivamente les recomiendo que los sigan en el orden establecido. Los tutoriales comienzan con temas básicos de XAML y Silverlight, y posteriormente se van analizando conceptos más a detalle acerca de esta plataforma de desarrollo.

    windowsphone_logo

     

     

    La lista completa de tutoriales es la siguiente:

    Iniciando y Fundamentos
    1. Creando la interfaz de usuario de Windows Phone (XAML)
    2. Usando controles
    3. Tipo de Controles
    4. Controles Panorama y Pivot
    5. Trabajando con texto en Windows Phone
    6. Distribución en la pantalla
    7. Orientaciones de la pantalla
    8. Entrada táctil
    9. Navegación
    10. Ejecutando un aplicación en segundo plano (tombstoning)
    11. Notificaciones de empuje para el desarrollo de Windows Phone
    12. Publicando tu aplicación en el Marketplace
    Visuales y Medios
    1. Imágenes
    2. Animaciones
    3. Video y Audio
    4. Gráficos
    5. Brochas
    Trabajando con Datos
    1. Obteniendo datos en tus aplicaciones de Windows Phone
    2. Enlazando a controles
    3. Almacenamiento Aislado
    4. Accediendo a un servicio web REST
    5. Consumiendo el servicio de datos de Windows Azure utilizando el cliente OData
    Sensores y otras características específicas del teléfono
    1. Lanzadores y Selectores
    2. Detección de movimiento (acelerómetro)
    3. Desarrollando con el GPS de Windows Phone (Servicios de Ubicación)
    4. Desarrollando con la cámara de Windows Phone

    También pueden ver el índice completo en esta página de La Liga Silverlight.

    ¡Esperamos que les sean de utilidad!

  • WarNov Developer Evangelist

    The All New Windows Phone 8!

    • 6 Comments

    image

    Windows Phone 7 ya ha abierto un gran camino para lo que hoy conocemos como Windows Phone 8. Ya tenemos 100.000 apps (y contando) en el Marketplace y desde Microsoft agradecemos a todos los desarrolladores en el mundo que han colaborado para lograrlo (en Colombia hemos puesto nuestro granito de arena con cerca de 400 apps hasta ahora. Por otro lado, observando los ratings de Smart Phones en Amazon, de los 9 primeros puestos, mejor calificados por los consumidores en el mundo, 7 obedecen a Windows Phone 7 y hago énfasis en que los tres primeros puestos son ocupados por teléfonos con nuestro sistema operativo.

    Este, ha sido el mes en el que yo como Developer Evangelist, he recibido más información de novedades, que en todo el tiempo que llevo disfrutando en Microsoft. Primero, las novedades sin precedentes de Windows Azure que ahora también es IaaS. Luego la formidable Surface y ahora,  Windows Phone 8 (WP8).

    Nuevo Kernel Unificado

    El cambio que determina la mayor parte de novedades en nuestra plataforma, es la unificación del kernel de WP8, dentro de la familia NT. Esa unificación permite por ejemplo que drivers creados para PCs, slates y tablets, sean compatibles también con el teléfono.

    Multicore

    También como novedad trae el soporte a IPV6 y otra gran consecuencia nos trae que podemos soportar teóricamente hasta 64 núcleos de procesamiento. De hecho, los primeros aparatos WP8, vendrán con dual core, para ofrecer una experiencia de usuario más rápida y fluida que la que se tiene hoy en día. .

    Más resolución

    Esto nos lleva automáticamente a otra gran novedad. La inclusión de otras dos resoluciones adicionales a la tradicional 800x480. Tendremos aparatos con resoluciones HD y WHD, para ofrecer imágenes de una realidad sin precedentes. Lo mejor de todo, es que los desarrolladores no tendrán que lidiar con estos cambios, pues sus apps se renderizarán correctamente en estas resoluciones sin cambios adicionales.

    Soporte Nativo

    La unificación de kernel (que es el mismo usado por ejemplo en WindowsRT) obviamente nos trae también la oportunidad de desarrollar natívamente para WP8. I mean, usando C y C++. Unan esto por ejemplo a Direct3D y entonces podrán esperar en el corto plazo, juegos como Halo y Assassins Creed para WP8. En realidad tendremos un poder de renderización y animación propio de cualquier consola de juegos de alto nivel.

    Multitasking – VoIP

    image

    Estas mejoras nos permiten tener más poder con los procesos de multitarea. Especialmente con tecnologías como VoIP y Video Chat (Skype). Por ejemplo, ahora podremos observar como cuando tenemos una llamada de este tipo activa, podemos seguir ejecutando otras tareas en nuestro aparato sin ninguna interrupción. Y por ejemplo si estamos usando manos libres, el flujo de sonido de la llamada VoIP será redireccionado a esos dispositivos.

    Games - Direct3D

    El soporte nativo además, abre las puertas a que entornos como Unity3D (game engine en el que programamos usando C# o Boo y producimos juegos para múltiples plataformas como Windows, MAC, Android, IPad, IPhone, etc) puedan evolucionar para poder ofrecer la experiencia unificada de creación de juegos también para WP8 y que por ejemplo apps nativas creadas para IOS sean fácilmente portadas también a nuestra plataforma. Obviamente la portabilidad de código entre WinRT y WP8 será total y sólo tendremos que fijarnos en cambios relativos al form factor de los dispositivos.

    Y ya que mencioné a C y C++ como una alternativa para desarrollar sobre WP8, les cuento que tenemos otras dos alternativas: el ya muy conocido XAML + (C# o VB) y HTML5 a través del WebControl o de entornos como PhoneGap.

    IE10 + HTML 5

    Hablando de HTML5, en Windows Phone 8, ya vendrá la última versión de nuestro browser: Internet Explorer 10. Con exactamente el mismo motor de renderización de la versión de PC y la capacidad de ejecutar el HTML5 de manera nativa obteniendo unos resultados inigualables en cuanto a velocidad y fluidez en la renderización, sin dejar de lado los estándares ni la seguridad: En esta versión, el Explorter de WP8 nos informará cuándo estamos accediendo a sitios sospechosos, igual a como ocurre en el desktop.

    De hecho apps creadas para la web en HTML5, se pueden correr perfectamente en el browser del WP8, dado que ya viene optimizado para el touch en browsers. Y por si fuera poco, solo haciendo ligeras modificaciones (aquellas que tienen que ver con las características del tamaño de la pantalla), podríamos tener estas apps corriendo de manera nativa como una app propia del teléfono.

    Storage

    En cuanto a hardware, se ha agregado soporte a memorias MicroSD extraíbles, para agregar más almacenamiento y versatilidad en el teléfono.

    NFC

    NFC entre otras cosas ahora nos ha permitido generar toda una nueva experiencia llamada "Wallet Experience" consistente en  convertir al WP8 en la billetera que usamos todos los días. Tarjetas débito, crédito, cupones, membresías, etc., van a estar disponibles dentro del teléfono para que las podamos usar para pagar compras, recibir ofertas, ganar puntos, entrar a sitios, consultar saldos, etc. Obviamente el Wallet de #WP8 se puede asegurar con un pin, de la misma manera que aseguramos nuestras tarjetas.

    El servicio de Wallet, dependerá de que los operadores lo implementen. Orange en Francia ya está listo para el Wallet Hub y ofrecerá sus servicios en ese país, en bien aparezca WP8.

    image

    El NFC también permite por ejemplo, que acerquemos nuestros teléfonos a carteles o avisos que tengan chips NFC y de allí capturar información de la misma manera en que usamos los tag o QR codes. De manera similar sucede con información que queramos transferir desde una tablet al teléfono por ejemplo! Esto abre la posibilidad a nuevos escenarios como apps o juegos que se activan en la tablet al acercarle el teléfono que está ejecutando esa misma app o juego, para iniciar una partida multi-jugador en multi-dispositivos.

    AMBIENTE CORPORATIVO

    Un punto muy importante también dentro de estos anuncios, es que el ambiente corporativo ahora toma más relevancia. Por ejemplo, ahora vamos a tener la posibilidad de encriptar toda la información del dispositivo a través de la tecnología de BitLocker y también hacer secure Boot.   

    Existirá también un Hub corporativo, a través del cual se podrán instalar las apps corporativas sin que tengan que aparecer en el marketplace.

    INCLUSIONES DE SOFTWARE

    Mapas Nativos! Con tecnología Nokia / Navteq y la gran app Nokia Drive que nos da guías para movilizarnos bien sea a pie o en vehículos. Todos los teléfonos WP8 la incluirán, aún en modo offline. Es decir, los mapas vienen preinstalados, de manera que no necesitamos conexión de datos para poder utilizarlos!!!

    El speech se ha mejorado significativamente, ahora con el trabajo en conjunto con Audible que ha creado una plataforma (disponible también para WP7) para que las apps no solo puedan ser lanzadas con comandos de voz, sino que una vez abiertas, también sean operadas con la voz. Si eres desarrollador, ten en cuenta esta característica para adicionarla a tus apps, en caso de que aplique.

    La pantalla de inicio también fue trabajada para ser aún mejor; ahora es más personalizable y con tiles a los que se le pueden cambiar los tamaños, de manera que podemos tener muchas más apps ancladas al inicio, sin tener que desplazarnos verticalmente. Al final, lo que se ofrece es una manera única, no igualada por ningún otro teléfono en el mercado, para personalizar y hacer nuestro el teléfono. Con el color que queremos, el tipo de apps que queremos y la organización que queremos.

    Observemos un video de cómo funciona:

    La cámara tendrá nuevas funcionalidades como un Timer, un creador de Panoramas, y Smart Groove Shots que  permite tomar fotos de un grupo y luego detectar las mejores caras que hizo cada quien y finalmente armar la foto óptima.

    CUESTIONAMIENTOS

    Para finalizar, algunas de las dudas que nos quedan serían:
    Se podrá actualizar Windows Phone 7.5  a WP8? La respuesta corta es no. Sin embargo tendremos una última actualización para esta serie, que entre otras mejoras incluirá todo lo que tiene que ver con la nueva Start Screen que ya mencionamos. Esta, será la versión 7.8. Debemos tener en cuenta que WP8 incluye un kernel totalmente diferente al de WP7 que además da soporte a varios core y a otras resoluciones, por lo que es imposible lograr que un WP7 adquiera estas características meramente a través de una actualización de software.

    Esto nos lleva a otra pregunta: Las apps de WP7 correrán en WP8? Por supuesto! Pero eso sí, como es de lógica costumbre, una app compilada para WP8 no podrá correr en WP7.

    Cuándo puedo comenzar a desarrollar par WP8? Antes de terminar este verano estará disponible el nuevo SDK para escribir apps orientadas a WP8.

    Un solo mes; 3 espectaculares lanzamientos y todavía queda mucho por venir. Estén pendientes del este blog en donde encontrarán lo último de nuestras tecnologías.

  • 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

    Entity Framework vs. LINQ como ORM

    • 6 Comments

    LINQ inició siendo una teconología que servía tanto para consultar objetos en memoria, como para mapear tablas de bases de datos SQL a objetos de memoria. Así que luego de hacer el mapeo, con nuestro mismo lenguaje de programación sin necesidad de escribir comandos SQL a través de LINQ tendríamos la posibilidad de hacer consultas y manipulaciones sobre estas entidades en memoria sin mucho problema.

    Visto esto, observamos que con LINQ tenemos dos alcances: Como lenguaje de consultas integrado y como ORM.

    LINQ fue primero que EntityFramework; al principio LINQ "quizo" ser el ORM de Microsoft, pero demostró algunas deficiencias en ciertos aspectos como la conexión a distintos repositorios. Luego vino el EntityFramework a mejorar esas cosas en las que LINQ tenía debilidades. Pero OJO! EntityFramework solo se ocupa de las operaciones de un ORM. Y el hecho de que haya aparecido, no significa la desaparición de LINQ, dado que LINQ aparte de tener esas caractarísticas de ORM, es un potente lenguaje de consultas integrado que permite consultar tanto entidades (como las arrojadas por EntityFramework, el mismo LINQ o cualquier otro ORM), como objetos personalizados, XML, ActiveDirectory y en general cualquier estructura de datos .NET en memoria que implementen IQueryable (http://msdn.microsoft.com/en-us/library/bb546158.aspx)


    En últimas, yo recomendaría usar EntityFramework para hacer ORM y luego usar LINQ para ejecutar consultas muy sencillamente sobre las entidades generadas por el ORM. (Y sobre cualquier otra colección de datos).

  • WarNov Developer Evangelist

    IE9 Beta disponible dentro de 45 minutos!

    • 6 Comments

    Es 15 de Septiembre de 2010 y son las 11:15am

    Presentamos la nueva versión de nuestro navegador web: se trata de Internet Explorer 9 (IE9), un explorador pensado para mejorar la experiencia de los usuarios, simplificar el trabajo de los desarrolladores y sacar el máximo provecho a las páginas web.

     

    clip_image001

    Este nuevo explorador se enfoca en cuatro aspectos: rapidez, confiabilidad, sencillez y compatibilidad. En palabras de José Antonio Barraquer, director de Unidad de Negocios de Windows para Microsoft Colombia, “Internet Explorer 9 se apropia de las ventajas del computador para ofrecer una navegación mucho más ágil; tiene una apariencia limpia que da más importancia a los contenidos, mantiene un robusto sistema de seguridad y ofrece un mayor soporte a los estándares modernos de desarrollo en internet”.

    La historia de Internet Explorer se remonta al 16 de agosto de 1995, cuando con la salida de Windows 95 al mercado apareció la versión 1.0 de este navegador. Desde entonces, se han realizado sustanciales mejoras en materia de rendimiento, seguridad y apariencia. Tantas, que hoy, 15 años después, se calcula que el 59 por ciento del tiempo que la gente pasa en un computador Windows es invertido en el explorador de internet.

    ¿Qué es lo nuevo de Internet Explorer 9?

    Más limpio y sencillo

    IE9 se enfoca en los contenidos y en lo que el usuario quiere ver y encontrar, por eso, el número de botones se reduce y el marco del explorador se desvanece en el fondo, trayendo a un primer plano la página que se visita. Algunas de características son:

    · Barra de direcciones inteligente más inteligente: La barra de direcciones y el cuadro de búsqueda se combinan en un solo recuadro desde donde el usuario puede navegar a un sitio, buscar y obtener sugerencias de sus proveedores de búsqueda, tener acceso a su historial y a sus sitios favoritos, etc.

    · Navegación por pestañas mejorada. Un renovado diseño para las nuevas pestañas muestra los títulos de los sitios más visitados por el usuario y permite reabrir las pestañas cerradas recientemente, así mismo permite restaurar las última sesión del navegador y carga páginas y gráficos de una manera mucho más rápida. Además podemos extraer pestañas de una instancia de IE9 y ponerlas en otra instancia!

    · Integración con Windows 7: a través de un pin o alfiler se pueden anclar los sitios web a la barra de tareas, para acceder a ellos con tan solo un clic y sin necesidad de abrir el navegador. Además, con el ajuste de ventanas de Aero Snap, ahora se pueden ver dos pestañas o ventanas al mismo tiempo, sin tener que acomodar el tamaño de cada una de ellas. Crece el botón “Atrás”, mucho más usado que el “Adelante”, para que el usuario vea únicamente lo que es indispensable para su navegación.

    clip_image002[4]

    Más confiable

    IE9 responde a las necesidades de los usuarios en materia de privacidad y confidencialidad, que, según Juan Carlos Ruiz, MVP que ha trabajado mucho con nosotros el tema de IE9, “necesitan algo confiable. Poder concentrarse lo que hacen en internet sin pensar en nada más, o hacer transacciones bancarias sin temor a que los roben”. Por eso, IE9 cuenta con sistemas integrados de seguridad, privacidad y confiabilidad que mantienen seguros a los usuarios y evitan que su experiencia se vea interrumpida.

    En materia de seguridad, Internet Explorer 9:

    · Introduce el Download Manager o Administrador de Descargas: Se trata de una función que permite administrar fácilmente los contenidos que están siendo y han sido descargados y que remplaza el cuadro de “Ejecutar, Guardar como o Cancelar” usado en las versiones anteriores de Internet Explorer. El Download Manager permite, desde una misma ventana, abrir o cancelar cualquiera de las descargas, y escanea cada uno de esos contenidos en busca de virus o archivos ejecutables potencialmente dañinos.

    clip_image004[4]

    · Mantiene la navegación en privado (InPrivate): Es una forma ‘navegar a escondidas’, que permite trabajar en la red sin dejar rastro de las páginas que se visitan o las palabras que se ingresan en los buscadores. Además protege los datos de formularios y las contraseñas, garantizando que su información personal se mantendrá en privado.

    · Mantiene la más alta protección contra el malware: Con filtros como Smartscreen y Anti-pishing que bloquean los mecanismos de suplantación de identidad y software maliciosos, Internet Explorer sigue siendo el navegador más seguro del mercado.

    clip_image006[4]

    Más rápido

    Según Walter Novoa (WarNov), bloguero y Developer Evangelist, “pensando en que a los usuarios nos gusta navegar muy rápido y no podemos esperar montones de tiempo a que las paginas descarguen, Internet Explorer 9 está diseñado para descargar las páginas mucho más rápido que otros navegadores. Además IE9 se aprovecha totalmente del hardware de la máquina, incluyendo la tarjeta de Video para sacarle el máximo provecho a HTML5 por ejemplo”. Algunas de sus novedades en materia de rapidez son:

    · Aceleración por hardware: Actualmente los navegadores usan sólo el 10% de las capacidades del computador, pero IE9 toma ventaja de todo el poder de cómputo de la máquina y del sistema operativo Windows, permitiendo al explorador correr como si fuera una aplicación nativa instalada en el computador.

    · Olvida los Plug-in adicionales: Soporta elementos de audio y video, habilita sombras, video embebido y contenido de audio sin necesidad de un Plug-in adicional.

    clip_image008[4]

    Más compatible e interoperable

    “Muchas de las aplicaciones para desarrollar para internet requieren del uso de aspectos técnicos muy elaborados. La compatibilidad, en estos casos, exige que podamos crear aplicaciones desde diferentes lenguajes que sean interoperables con los diferentes navegadores”, explica Sergio Acosta, experto diseñador, y agrega: “el soporte de HTML5, el nuevo lenguaje de HTML establecido como el nuevo estándar para creación de aplicaciones en internet, permite que todas las aplicaciones se vean exactamente igual y funcionen de la misma manera sin tener que reescribir varias veces el mismo sitio para los diferentes exploradores”.

    Las mejoras de IE9 en materia de interoperabilidad permiten a los desarrolladores enfocarse en crear grandiosas aplicaciones, en lugar de gastar tiempo de creando tres veces el mismo sitio. Dentro de las mejoras en este ámbito se destacan:

    · Soporte HTML5: Haciendo más sencillo el trabajo de los desarrolladores y logrando que su trabajo se vea igual en todos de los exploradores.

    · Compatibilidad con estándares modernos basados en CSS3, DOM L2 y L3, SVG, ECMASScript5, entre otros.

    Pasos para descargarlo

    El beta de Internet Explorer 9 puedes descargarse gratuitamente en castellano desde: www.labellezadeinternet.com Y en ingles http://www.beautyoftheweb.com dentro de 45 minutos (12pm del 15 de Septiembre de 2010)



  • WarNov Developer Evangelist

    Joomla! también corre sobre Windows.

    • 6 Comments

    image                

    No solo pequeñas organizaciones o emprendedores utilizan Joomla! como plataforma de administración de contenidos (CMS) para sus sitios web. Citibank para su intranet y la Universidad de Harvard también eligieron utilizar esta herramienta de código abierto.

    Joomla! permite crear fácilmente complementos que vuelven a la plataforma extensible, prácticamente sin limitaciones. Se administra muy fácilmente mediante módulos, por lo cual se ha convertido en una excelente opción para muchas organizaciones con necesidades complejas, ya que a la vez permite construir sistemas de control de inventario de contenidos, herramientas de reportes, conectores para aplicaciones, catálogos de productos personalizables, sistemas de comercio electrónico, directorios de negocios complejos, sistemas de reservas y de comunicaciones, entre muchas otras posibilidades.

    Más de 200.000 personas contribuyen a su desarrollo y lo utilizan. Seguramente tenías ya alguna referencia, incluyendo que está construido sobre tecnologías PHP y MySQL, pero… ¿sabías que corre sobre Windows con una excelente performance? Esto es importante porque Windows Server como plataforma web ofrece un amplio abanico de herramientas de administración, incluyendo la posibilidad de virtualizar servidores de manera muy simple, lo que permite probar sitios antes de pasarlos a producción en un entorno similar al real, sin invertir en nuevo hardware.

    Encuentra a Joomla en Microsoft Web Platform Installer 2.0 (Web PI): 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, como Joomla. En Colombia, el WebCamp 2010 se basa en WebPlatform Installer.

    En el sitio de la comunidad de Joomla! en Español podrás también encontrar recursos e información del entorno WAMP: Windows, Apache, MySQL y PHP.

  • WarNov Developer Evangelist

    Sesión Ejecutiva para Empresas de desarrollo a la medida en Azure

    • 5 Comments

     

    image

    Este mismo evento lo tendremos en Medellín:

    image



  • WarNov Developer Evangelist

    Llenar celdas vacías en Excel con 0

    • 5 Comments

    Nosotros developers en determinado momento tenemos que lidiar con hojas de calculo. Aquí un pequeño tip que nos puede ayudar mucho.
    Como llenar un conjunto disperso de celdas vacías con un valor o formula dado? Por ejemplo con ceros?
    En este video se muestra de una manera muy rápida.
    Enjoy!

     



  • WarNov Developer Evangelist

    WordPress & Windows Live: 2 Grandes se Unen

    • 5 Comments

    Siendo realistas a WordPress yo solo le veía un problemita y era que no permitía hacer zoom con el scroll del mouse. Algo mínimo que ya arreglaron. Por supuesto, esto no fue lo que propició la asociación con Microsoft y Windows Live específicamente.

    “#Microsoft NO piensa que el OSS es incompetente. De hecho lo usa, lo apoya y genera OSS y free tools para crearlo.” Ese fue uno de mis twitts respondiendo cierta apreciación que obedece sobretodo a una imagen ya antigua de la forma de operar de la corporación.

    Hoy en día la comunidad es muy importante como generadora de progreso en el mundo. Es por eso que iniciativas no Microsoft y además OpenSource como PHP y ahora WordPress reciben un espaldarazo de la corporación para apoyar su desarrollo y difusión en el mundo. Esto ha sucedido con apoyos financieros, soporte en nuestras plataformas de desarrollo y aún incluyendo productos OSS de terceros en nuestros instaladores.

    En esta ocasión estudiando las necesidades de los consumidores de Windows Live en materia de blogs, Microsoft encontró en WordPress.com una brillante alternativa. Como ya es bien sabido por todos, no se trata de reinventar la rueda.

    image

    WordPress.com tiene todo un conjunto de capacidades impresionantes. Desde una plataforma completamente escalable y una efectiva protección anti-spam hasta una gran experiencia en la personalización de los blogs. WordPress está detrás del 8.5% de la web! Es usado en 25 millones de sitios y es visto por más de mil millones de personas cada mes. Además, Automattic (los padres de WordPress.com) es una compañía en la que sus empleados están enfocados en el arte del blog y cómo mejorarlo continuamente. En definitiva, ellos saben de qué se trata el negocio.

    Así que en vez de que Windows Live invirtiera en crear un servicio de Blog nuevo, se decidió que lo mejor para los consumidores era proporcionarles el poder de WordPress.com integrado con los mejores servicios de Windows Live a los que ya están acostumbrados.

    Tres aspectos importantes de esta unión:

    · Se ofrecerá un mecanismo simplificado para la migración de los blogs actuales de los usuarios hacia WordPress.com

    · WordPress.com se podrá conectar con Messenger a voluntad, para que nuestros amigos se enteren cada vez que escribimos nuestros posts.

    · A los clientes de Windows Live se les permitirá crear fácilmente blogs en WordPress.com.

    Obviamente las urls de los blogs actuales se mantendrán y se mapearán a la nueva version de la plataforma. Así que no perderán ningún visitante durante el cambio.

    Esta es la pantalla que encontrarán en la migración:

    image

    Otras opciones aparte de la migración están disponibles como descargar todo el contenido del blog, migrar después o sencillamente eliminar el espacio actual. Además hay más información de guía aquí.



  • WarNov Developer Evangelist

    Autodocumentación .NET: XMLDoc+GhostDoc+Sandcastle

    • 5 Comments

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

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

    Ingredientes:

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

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

  • WarNov Developer Evangelist

    SQLite: DB Locales en Win8

    • 5 Comments

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

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

    _________________________________________

    Sorey says:


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

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

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

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

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

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


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


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

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


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

    Para corregir ingresamos a las propiedades del proyecto

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

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

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

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

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

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

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

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

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

     
    Aqui vemos la aplicación mostrando los nombres registrados.

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


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

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

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

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

    The Kinect Effect

    • 5 Comments

    Empezó sólo como un sueño en el que el cuerpo sería el control…

    Pero nunca nos imaginamos que llegaríamos a este punto, en que rompimos el Guinness Record, cómo el aparato electrónico de consumidor final con ventas más rápidas en la historia: 8 millones de sensores vendidos en solo dos meses! Algo que una vez fue ciencia ficción (Minority Report), se convirtió en un fenómeno mundial.

    Casi inmediatamente después del lanzamiento de Kinect, aficionados y académicos de todo el mundo adoptaron las posibilidades que Kinect ofrecía, en unas formas inimaginables! Un API no oficial rápidamente apareció y luego aparece el SDK oficial no comercial de Microsoft, lo que nos llevó a observar aún más aplicaciones en áreas como la salud, rehabilitación, educación, seguridad y muchas más!

    Es esto todo?

    Claro que no!

    Para darle más combustible a la innovación e imaginación de tantas mentes brillantes que sacan provecho del Kinect, estaremos ofreciendo el programa comercial de Kinect para Windows al comenzar el siguiente año!

    Ya estamos trabajando con varias compañías alrededor de más de 20 países a través de 25 industrias distintas, recibiendo al día de hoy más de 200 aplicaciones que usan Kinect más allá de la XBOX 360! Entre estas compañías podemos contar a Toyota y Razorfish.

    Observemos la historia extendida de Kinect durante este primer año de vida:

    clip_image001

    Rehabilitación: Pacientes de hospital británico son inducidos a “jugar” ciertos títulos de Kinect, dependiendo de la rehabilitación física que requieren.

    clip_image002

    En Cantabria España, ya hacen pilotos de cómo Kinect podría ser una valiosa herramienta en cirugías.

    clip_image003

    Estos estudiantes muestran en el Code Camp de Redmond cómo controlan un cuadracóptero a través de gestos y Kinect.

    clip_image004

    Exploración espacial a través del WorldWide Telescope y Kinect

    clip_image005

    Esta demostración hecha en Abril en el MIX11, nos muestra cómo podemos conducir una silla, a través de Kinect. Un gran invento para discapacitados.

    El Kinect Effect naturalmente nos ha llevado a concluir que son más poderosas las ideas nuestras cuando se suman al ingenio de los demás; Bill Gates nos dijo una vez: “Siempre sobreestimamos los cambios que ocurrirán en los siguientes dos años, pero subestimamos los que ocurrirán en los siguientes diez”. Hasta ahora solo ha pasado un año desde el lanzamiento de Kinect… no están ansiosos de ver lo que pase en los siguientes 9?

  • 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

    Pimp my rIDE

    • 4 Comments

    Visual Pimp-My-Ride-XE

    Recuerdan ese reality de MTV con XZibit donde tomaban un auto y le ponían cientos de mejoras para que su conducción fuera mucho más agradable?

    Pues lo mismo pasa con Visual Studio!

    Usé la alegoría de rIDE con r de rapid :P Esto obviamente, dado que nuestro IDE (Visual Studio) nos permite ir de cero a una aplicación completamente funcional, in no time!

    Para muchos, Visual Studio es nuestra segunda casa.

    No para tantos lo era hace unos años (me incluyo en los que sí), cuando a pesar de que era bueno, no era tan completo como hoy en día, de manera que de vez en cuando teníamos que salir de casa para ir a hacer ciertas tareas de desarrollo en otras tools independientes.

    -Uy! Ojalá tuviera algo que me alineara automáticamente todas las asignaciones por el igual.

    O por ejemplo: -Ufff! De lujo si pudiera implementar un tema basado en Matrix para desarrollar.

    O tal vez: -Súper si pudiera enviar por correo automáticamente un segmento de código que hice para que mi jefe vea que soy bueno programando lo que él no pudo

    Yo siempre solía soñar con eso y tenía mi propia biblioteca de macros para ejecutar tareas dentro de VS.

    Pero las macros es lo más sencillo que se puede hacer.

    Luego cuando entré al equipo de desarrollo de un lenguaje de programación sobre .NET llamado VisualAPL basado en el viejo APL (un lenguaje de programación basado en símbolos muy poderoso para cálculos financieros avanzados) conocí todo lo que se podía hacer con el modelo de extensibilidad de Visual Studio y fue glorioso, la verdad.

    Este post sin embargo, no trata de cómo crear estos addons y extensiones sino más bien de cómo usar los existentes y a mi modo de ver, cuáles son los más útiles.

    Sucede que como yo, había miles de desarrolladores con sus ideas para mejorar Visual Studio y por ende se abrió la gran Visual Studio Gallery. Allí aquellos desarrolladores hard core que lo que no encuentran lo construyen pueden exponer sus creaciones para que estén disponibles al resto de la comunidad. De manera que podemos encontrar un sinnúmero de aditamentos que nos van a permitir personalizar nuestro IDE para ser aún más productivos y realmente hacer un Pimping a nuestro rIDE.

    En el video he usado Visual Studio 2010 Ultimate, pero en general con las extensiones de VS ocurre que siempre se ponen disponibles para las nuevas versiones de Visual Studio que van saliendo. En este caso, la versión 11. De hecho, hay extensiones que han sido tan buenas y usadas, que en Visual Studio 11 ya vienen nativas y disponibles sin instalaciones adicionales, como lo veremos en el video. Entonces pasemos a la acción, donde enseño las extensiones que siempre aplico a mi Visual Studio:

    Addons Usados:

    Aquí el listado de las extensiones mostradas:

    Nombre

    URL

    Productivity Power Tools

    http://bit.ly/g4fUGG

    Background Customizer

    http://bit.ly/fXhJOF

    Color Theme Editor

    http://bit.ly/fPKKEV

    Dark Expression Blend Color Theme

    http://bit.ly/aYDWOG

    WarMatrix Theme

    http://wnov.it/WarNovTheme

    Hide Main Menu

    http://bit.ly/hQoFYI

    CSharpIntellisensePresenter

    http://bit.ly/GLp8ht

    Numbered Bookmarks

    http://bit.ly/hSbRdy

    Presentation Zoom

    http://bit.ly/hAMtDI

    MoveToRegionVSX

    http://bit.ly/GJZ5M1

    Y tú? Ya usas alguna extensión no citada aquí y quieres recomendarla? Súper si la adjuntas a este post en los comentarios!

  • WarNov Developer Evangelist

    HTML5 LABS: Te enseña y ahorra dolores de cabeza

    • 4 Comments

    Una de las dificultades más evidentes experimentadas en la implementación temprana de HTML5 ha sido el afán de los protagonistas por destacarse al desarrollar ciertas partes del estándar cuya madurez no se ha probado correctamente; eso se ve reflejado en múltiples cambios en las versiones betas, poca estabilidad y a veces hasta el “arrepentimiento” de haber hecho la implementación tan temprano que obliga a retirar dicha implementación del producto.

    Veamos en el siguiente video un claro ejemplo de esto:



    Uno diría que para eso son las betas; para probar. Pero uno espera que aunque sea el beta, tenga cierta estabilidad y no que esté cambiando todos los días hasta que al final desaparezca aquello que se trató de hacer. Es cierto que algunas cosas pueden cambiar y uno está esperando que esto ocurra; pero hay casos que sencillamente no permiten trabajar y frustran demasiado, como lo visto en el video (que no es exageración sino un hecho real).

    Microsoft, consciente de esto ha creado todo un portal donde podemos ver todas las características experimentales acerca de HTML5 y además descargar ciertos addons para agregar a los platform previews de Internet Explorer 10, de manera que podamos evaluarlos sin correr el riesgo de apostarles todo y luego ver cómo cambian drásticamente o sencillamente desaparecen.

    clip_image001

    En este portal es donde Microsoft expone implementaciones tempranas e inestables de tecnologías relativas a HTML5, avaladas por el W3C. Compartir estos prototipos nos ayuda a tener discusiones informadas con las comunidades de desarrolladores y nos permite adquirir mejor feedback acerca de los borradores implementados y todo sin perjudicar las versiones preliminares del browser.

    Aquí entre otros prototipos podemos explorar por ejemplo:

    1. IndexedDB: Para poder almacenar grandes cantidades de datos estructurados en el Browser.

    2. FileAPI: Facilitar el acceso a archivos desde el browser

    3. WebSockets: (El protagonista de nuestro video) Simplificación de la comunicación bidireccional a través de comunicaciones Full Dúplex sobre un socket TCP.

    4. Media Capture API: Para proveer acceso a los dispositivos de la máquina cliente que capturan audio, imágenes y video.

    Les recomiendo entonces que visiten <HTML 5 Labs> y comiencen a experimentar de manera segura.

  • WarNov Developer Evangelist

    Gartner: Windows Phone 7 sobrepasaría a IOS en 2015

    • 4 Comments

    image

    Gartner (empresa líder mundial en investigación y consejería tecnológica en todo el mundo) nos proporciona hoy excelentes predicciones en cuanto a la adopción de Windows Phone 7 se refiere:

    Según la gráfica, podemos ver el total acumulativo de mercado superando mil millones en 2015 y se prevé que Microsoft alcanzará una cuota de mercado de 19,5% (en comparación con el 4,2 actual) - no está mal para una plataforma que continuamente se dice que "falla". Gartner revisó sus previsiones de cuota de mercado para WP7 teniendo en cuenta la Asociación de Nokia.

    "De aquí a 2015, 67 por ciento de todos los dispositivos de OS abiertos tendrán un precio medio de venta de $300 o más adelante, demostrando que los smartphones han sido finalmente democratizados," dijo Roberta Cozza, principal analista de Gartner

    Otras predicciones similares se han publicado por otras firmas como Ovum.

    ¿Qué piensa de estas predicciones, y lo que se prevé para WP7?

  • WarNov Developer Evangelist

    Aprender Azure podría significarte una XBOX de última generación más un Kinect!

    • 4 Comments

    Microsoft Virtual AcademyDescarga el trialMicrosoft Activa

    Aquí mismo en mi blog encuentran más recursos para aprender!



  • WarNov Developer Evangelist

    Bing + IE9 en el Futuro Cercano

    • 4 Comments

    Con la aparición de IE9, le damos la bienvenida a un nuevo tipo de motor de búsqueda. Uno que ya tiene la efectividad que siempre esperamos, pero que sobrepasa la edad de piedra gracias a estándares como HTML5 aplicados a herramientas como IE9 en aplicaciones como Bing!

    Si Ud. es Silverlight'er no se preocupe, porque HTML5 para nada significa la desaparición de Silverlight. Este ejemplo nos muestra precisamente un escenario adecuado para HTML5, mientras para Silverlight tenemos escenarios con aplicaciones empresariales que requieren presencia online y una gran integración con el negocio de las compañías y sobretodo una interfaz de usuario inigualable.

    En este video les muestro cómo explotando las nuevas características de IE9 (como el soporte a HTML5 y la integración con Windows 7), podemos lograr una nueva era en motores de búsqueda.

    Disfrútenlo!

     
    Por ahora podrán descargar la beta de Internet Explorer 9 desde AQUI:

    Español: www.labellezadeinternet.com

    Ingles: www.beautyoftheweb.com

     


  • WarNov Developer Evangelist

    Requerimientos para desarrollar en Windows Azure (Software - Hardware)

    • 4 Comments

    Computadora con con IIS 7 instalado. Esto automáticamente restringe los posibles sistemas operativos a Windows 7, Windows Server 2008, Windows Vista. Preferiblemente en x64 (64-bits). Si no tienen la licencia, se puede descargar un trial de aquí.

    Requerimientos de Hardware:

    o Computer with a 1.6GHz or faster processor
    o 1024 MB RAM (1.5 GB if running in a virtual machine)
    o 3 GB of available hard-disk space
    o 5400 RPM hard drive
    o DirectX 9 capable video card running at 1024 x 768 or higher-resolution display

    Además:

    · Sql Server 2008 R2 Express Edition  y SQL Server Management Studio 2008 R2 Express Edition (Tener la instancia SQLEXPRESS para el Development Storage)

    o Se descarga de aquí

    · Visual Studio 2010 Ultimate. Si no tienen la licencia, se puede descargar un trial de aquí. También se puede usar Visual Web Developer Express, pero algunas operaciones de Azure no estarán disponibles.

    · Windows Azure Tools for Microsoft Visual Studio descargables aquí

    · Windows Azure AppFabric SDK descargable de aquí

    · Windows Azure Training Kit descargable de aquí.

    · Opcional: Prelectura de estos artículos

  • WarNov Developer Evangelist

    Nuevas Herramientas para Programar Windows Azure

    • 4 Comments

    El mes pasado en el PDC anunciamos nuevas mejoras para Windows Azure. Entre otras, estas incluyen: Máquinas Virtuales en Azure (Infrastructure as a Service), elevación de privilegios, IIS completo, escritorio remoto, Windows Azure Connect (anteriormente el proyecto "Sydney"), instancias Extra Small, un nuevo portal de administración de la plataforma de Windows Azure basado en Silverlight y más. Estas mejoras y las nuevas herramientas de Windows Azure de noviembre para Visual Studio (versión 1.3) están ahora disponibles. Algunas de estas características están generalmente disponibles hoy a todo el mundo, mientras que otras están mirando fijamente a ser emitidas como betas o CTP.

    En posteriores posts anunciaré más detalles sobre estas nuevas características. Por ahora pueden chequear este post en inglés.

    Aparte de estos anuncios me complace informarles que también ya tenemos listo

    El Kit de entrenamiento de Windows Azure – actualización de noviembre.

    Hoy hemos publicado una versión actualizada de este kit. La edición de noviembre del kit de capacitación incluye nuevos laboratorios prácticos para las nuevas características y servicios de Windows.

    Las actualizaciones de este kit de capacitación incluyen:

    • [Nuevo laboratorio] Web Role y Worker Role avanzados – Muestra cómo utilizar las tareas de inicio y modo administración.

    • [Nuevo laboratorio] Conexión de aplicaciones con Windows Azure Connect: Muestra cómo utilizar Project Sydney (opciones avanzadas de comunicación entre sistemas externos y la nube)

    • [Nuevo laboratorio] la función de la máquina virtual: muestra cómo usar máquinas virtuales mediante la creación y la implementación de un VHD

    • [Nuevo laboratorio] Windows Azure CDN – introducción sencilla para la CDN (Red de distribución de Contenidos)

    • [Nuevo laboratorio] Introducción a las nuevas características de bus de servicio de Windows Azure AppFabric – Muestra cómo utilizar las nuevas características de Service Bus en el entorno de laboratorios de AppFabric

    • [Nuevo laboratorio] Creación de aplicaciones de Azure con el servicio de almacenamiento en caché: Muestra cómo utilizar el nuevo servicio de Caching de AppFabric de Windows Azure

    • [Nuevo laboratorio] Introducción al servicio de control de acceso de AppFabric en su segunda versión: Muestra cómo crear una aplicación web simple que es compatible con múltiples proveedores de identidad

    • Introducción a Windows Azure [actualizado] - Actualizado para utilizar la nueva plataforma de Windows Azure Portal

    • Introducción a SQL Azure [actualizado] - Actualizado para utilizar la nueva plataforma de Windows Azure Portal

    Además, todos los laboratorios se han actualizado para utilizar las nuevas herramientas de Windows Azure para Visual Studio versión 1.3 (edición de noviembre). Vamos a hacer más actualizaciones a los laboratorios en las próximas semanas. En la siguiente actualización programada para principios de diciembre también incluiremos presentaciones y demos para la entrega de un taller de formación completa de 4 días.

    Pueden descargar la actualización de noviembre del kit de capacitación de la plataforma Windows Azure desde aquí: http://go.microsoft.com/fwlink/?LinkID=130354.

    Por último, ahora hemos publicado los laboratorios directamente en MSDN para facilitar a los desarrolladores su revisión y usar el contenido sin tener que descargar todo el kit.

    Ahora pueden examinar a todos los laboratorios en línea en MSDN aquí: http://go.microsoft.com/fwlink/?LinkId=207018

  • WarNov Developer Evangelist

    CTE: Common Table Expressions – SQL Server 2008

    • 4 Comments

    Este es el primero de una serie de artículos que estaré escribiendo acerca de características de SQL Server 2008 para desarrolladores.

    Un CTE es un artefacto que nos mantiene en memoria el resultado de una consulta, para que lo podamos llamar luego dentro de esa misma consulta. Es como una “variable” temporal que nos evita tener que declarar una vista no persistente, o una tabla temporal.

    La sintaxis es muy sencilla:

    WITH <nombre de su CTE> <nombre de columnas>
    AS
    (
    <query de origen>
    )
    SELECT * FROM <nombre de su CTE>

    Por ejemplo:

    image

    Para qué es útil?

    Imagínense por ejemplo que tienen una tabla de ventas donde están todas las ventas hechas y el ID de los vendedores que las hicieron.

    Piensen que necesitan un reporte donde aparezca el total de ventas y el nombre del vendedor.

    Los datos extendidos del vendedor están en otra tabla. Además como el reporte totaliza la cantidad de ventas se requiere un query con una función de agregado ( count(*) ) Dado que existe este agregado no es posible usar un simple join, sino que tendríamos que usar una subconsulta o una tabla temporal:

    select Vendedores.FirstName, VentasAgrupadas.VentasTotales from
    (
       SELECT Sales.SalesOrderHeader.SalesPersonID, COUNT(*) as VentasTotales
       FROM Sales.SalesOrderHeader
       WHERE Sales.SalesOrderHeader.SalesPersonID IS NOT NULL
       GROUP BY Sales.SalesOrderHeader.SalesPersonID
    ) as VentasAgrupadas
    inner join Sales.vSalesPerson as Vendedores on Vendedores.SalesPersonID=VentasAgrupadas.SalesPersonID
    order by VentasAgrupadas.VentasTotales

    Como se aprecia esto es engorroso y poco claro.

    Con un CTE es mucho más sencillo, ya que no existe la necesidad de la subconsulta sino que parece como si declaráramos una variable de tipo tabla o vista con los resultados que queremos:

    WITH VentasAgrupadas(IdVendedor, VentasTotales)
    as
    (
      SELECT Sales.SalesOrderHeader.SalesPersonID, COUNT(*)
      FROM Sales.SalesOrderHeader
      WHERE Sales.SalesOrderHeader.SalesPersonID IS NOT NULL
      GROUP BY Sales.SalesOrderHeader.SalesPersonID
    )
    SELECT Vendedores.FirstName, VentasAgrupadas.VentasTotales
    FROM Sales.vSalesPerson as Vendedores
    INNER JOIN VentasAgrupadas ON Vendedores.SalesPersonID=VentasAgrupadas.IdVendedor
    ORDER BY VentasAgrupadas.VentasTotales

    Un caso aún más dramático puede observarse cuando queremos detectar los duplicados de una tabla.

    Por ejemplo si tengo una tabla de productos con Ids distintos pero mismo nombre, la consulta luce así:

    SELECT * FROM Products WHERE ProductID NOT IN
    (SELECT MIN(ProductID) FROM Products as P
    WHERE Products.ProductName=P.ProductName)

    Exótico no?

    Es lo que conocemos como Self-Join en SQL.

    Eso me retorna todos los registros duplicados. Observen que se logra luego de extraer el mínimo id para los duplicados, selecciono todos los duplicados cuyo id no sea ese mínimo, lo que me da como resultado los registros redundantes:

    clip_image003

    Obviamente con un CTE la complejidad del query se reduce completamente:

    WITH MinProductRecords AS
    (
      SELECT MIN(ProductID) AS ProductID, ProductName
      FROM Products
      GROUP BY ProductName
      HAVING COUNT(*) > 1
    )
    
    SELECT Products
    FROM Products AS P
    INNER JOIN MinProductRecords AS MP
    ON P.ProductName = MP.ProductName AND P.ProductID > MP.ProductID

    Aquí aunque hay más código, es más claro y administrable, pues vemos cómo primero seleccionamos los mínimos Ids y luego hacemos un join donde los Ids sean mayores a estos mínimos. Así se obtienen los mismos resultados.

    Entonces si quisiéramos además eliminar de inmediato los duplicados bastaría con reemplazar el último SELECT por un DELETE

  • WarNov Developer Evangelist

    Gana una XBOX+KINECT programando en Azure con la ayuda de la comunidad Bogota.NET

    • 4 Comments
  • WarNov Developer Evangelist

    Mono Tools for Visual Studio

    • 4 Comments

    Cada vez que encuentro noticias como esta me siento bastante agradado pues nunca me ha gustado cuando dicen por ahí que la tecnología Microsoft es cerrada y para nada extensible a otras plataformas. Y el agrado surge básicamente de que obtengo cada vez más argumentos para demostrar lo contrario.

     

     

    En esta ocasión, la gente de Novell llega con este brillante producto. Aquél que nos permitirá a nosotros desarrolladores de software cuyo cubil de trabajo no es otro más que Visual Studio, tener nuestras creaciones en Linux, Unix y hasta MacOS, sin necesidad de aprender lenguajes ni plataformas nuevas.

    image

    Es un Add-In comercial (versión gratuita de evaluación) que se instala en Visual Studio y que permite entre otras cosas hacer escaneos de nuestras aplicaciones para ver si podrán correr bien sobre el Framework Mono (versión del Framework.Net para plataformas no Windows), hacer pruebas de nuestras aplicaciones usando Mono en Windows o en una imagen virtual de Linux, hacer debug remoto en Linux, empaquetar para Linux estándar o mediante un Appliance para SUSE Linux que proveerá un servicio de deployment muy sencillo para nuestra aplicación.

     

     

    Imaginen entonces qué cantidad de trabajo nos podremos ahorrar a la hora de programar nuevas aplicaciones .NET que queramos que corran en las plataformas no Windows, pero sobretodo la posibilidad de poder reusar todos los componentes que ya existen!

     

     

    Todo esto nos permitirá a nosotros, a los ISVs y proveedores de servicios de desarrollo expandir nuestras oportunidades de mercado de una manera muy sencilla. Sobretodo viendo que en el mercado actual, hay muchas instalaciones no Windows.

    image

    Además, para aquellos acostumbrados a desarrollar en otras plataformas, puede ser una oportunidad para explorar nuevas formas de desarrollo (Con Visual Studio) que de seguro harán que vean todas sus ventajas sobre los modelos de desarrollo que han usado siempre para llegarle a plataformas como Linux o MacOS. El sitio oficial de Mono Tools for Visual Studio se encuentra en este link.

     

     



  • WarNov Developer Evangelist

    Stairway to Azure (3): Componentes de Cómputo y Almacenamiento

    • 4 Comments
    Descarga la presentación PowerPoint de este Post.
     En mi post anterior, vimos por qué en determinado momento, es ventajoso tener alguien que se preocupe por el manejo de la infraestructura de nuestras aplicaciones en vez de nosotros. Y observamos que esto nos dejaría libres para preocuparnos únicamente por desarrollar la lógica de nuestras aplicaciones. Ya no es necesario comprar, instalar y operar sistemas de IT. Además solo pagaríamos por el cómputo y almacenamiento usado (como con los servicios públicos) y no una tasa fija que solo se requiere para ciertos picos. Finalmente, si enfocamos correctamente nuestras aplicaciones, estas pueden escalar muy fácil tomando ventaja de los enormes centros de datos que ofrece Microsoft para hospedar nuestras aplicaciones. Por ejemplo; si decidiéramos crear el siguiente “Facebook” sería muy últi Windows Azure ya que soporta trabajos de presentación (Web Role) y trabajos de proceso (Worker Role). Además si es una iniciativa con poco presupuesto inicial, es ideal ya que a medida de que se tengan más usuarios y se requiera escalar el sistema, se tendrán más recursos para adquirir dentro de Windows Azure.  

    Nuevamente, eso no implica que todo lo desplegaremos en Azure. La idea no es tener únicamente  SaaS sino también S+S. Así que por ejemplo las aplicaciones que hoy en día corren dentro de una organización (on-premises) podrían almacenar datos en la nube o usar otros servicios de la misma. Aplicaciones que corren en el escritorio o teléfonos móviles pueden usar los servicios de la nube para hacer sincronización de datos. 

    Toda esta maravilla requiere de aplicaciones que la exploten! Y para lograr dichas aplicaciones, necesitamos de una plataforma para construirlas. Esta plataforma es provista por Windows Azure y está compuesta por un grupo de tecnologías que nos proveen servicios a nosotros como desarrolladores.  

     

     

    Componentes de Azure

    En Windows Azure básicamente encontramos tres componentes principales:

    Windows Azure

    Ambiente basado en Windows (en esta edición es Server 2008), para ejecutar aplicaciones y almacenar datos en los centros de datos de Microsoft.

    SQL Azure

    Provee servicios de datos basados en SQL Server

    .NET Services

    Infraestructura distribuida para usar con aplicaciones locales y hospedadas en la nube.

    Estos componentes los podemos apreciar en la siguiente ilustración. En este post exploraremos en detalle el componente Windows Azure (Cómputo y Storage) y posteriormente observaremos Sql Azure y .NET Services.

    Windows Azure

    Comencemos entonces con Windows Azure:

    Overview

    Como podemos observar en la gráfica, este componente se subdivide en tres elementos: la estructuta principal o Fabric, el componente de cómputo y el componente de almacenamiento (storage). Empecemos viendo en detalle el componente de cómputo.

    Servicios de Cómputo

    Windows Azure corre sobre una gran cantidad de máquinas, todas ubicadas en los datacenter de Microsoft y accesibles vía internet. Todas estas máquinas conforman un todo que le da el poder y escalabilidad necesarios. Aunque al principio solo se iban a poder ejecutar aplicaciones .NET hoy en día, esta plataforma permite ejecutar aplicaciones nativas de Windows (esto lógicamente comprende todos los lenguajes de programación tradicionales que hoy en día sirvan para correr aplicaciones sobre Windows Server 2008).
    En Windows Azure, una aplicación típicamente tiene múltiples instancias y cada una corre una copia de todo o una parte de la aplicación. Cada instancia corre en su propia máquina virtual. Estas VMs están sobre Windows Server 2008 x64. Las aplicaciones se instancian en uno de dos roles, según escoja el desarrollador. Web Role, o Worker Role:

     

    Azure

     El Web Role corre sobre IIS7 y acepta los llamados HTTP o HTTPS (tecnologías: ASP.NET, WCF, todas las que trabajen con IIS). El balanceo de carga es automático, gracias al Load Balancer incluido en la plataforma.
    El Worker Role no puede aceptar peticiones directas desde el mundo exterior. Típicamente estos roles adquieren sus entradas a través de colas en el Windows Azure storage. Estos mensajes sí pueden provenir de una aplicación exterior o de un Web Role. Son procesados y la respuesta se puede poner en una cola, o enviarse directamente al mundo exterior (esto último sí es permitido).
    Independientemente del tipo de rol en una VM, siempre existe un Agente de Azure que permite la interacción del rol con el resto de la aplicación y la plataforma.
    Aunque es algo que puede cambiar en el futuro, en la actualidad Windows Azure mantiene una relación 1:1 entre VMs y cores físicos de procesador. Esto obviamente garantiza el performance de la aplicación que sea predictible (cada instancia tiene su propio core dedicado; esto también significa que no hay un límite arbitrario en el tiempo de proceso concedido a una instancia en especial). Sin embargo si se desea aumentar el performance, el dueño de la aplicación podría decidir crear más instancias de la misma, solo modificando el archivo de configuración. De esta manera, Windows Azure detecta el requerimiento y ajusta una nueva VM con su respectivo core. Si en algún momento alguna instancia falla, Azure lo detecta e inicia una nueva.

    Esto genera una notoria implicación: Para ser escalable, las instancias de Windows Azure Web role, deben ser stateless (no manejar estado en sesión o aplicación por ejemplo). Todo estado requerido ha de ser escrito en los mecanismos de storage de Windows Azure, o pasados al usuario final por medio de cookies por ejemplo. Además debido al load balancer, no hay forma de garantizar que múltiples peticiones de un mismo usuario sean enviadas a un mismo Web Role.
    Este tipo de implicaciones hace que el pasar aplicaciones a la nube o crearlas destinadas para ellas, no sea completamente transparente comparado con el modelo on-premises. Sin embargo, los cambios son muy sutiles (usar ADO.NET Data Services –compatible con Azure Storage-, tener en cuenta el modelo de colas para los Worker Role, etc.)
    Por esto, para los desarrolladores, trabajar con Windows Azure, es muy similar a crear aplicaciones tradicionales Windows. Microsoft provee templates para Visual 2008 que permiten crear Web Roles, Worker Roles y combinaciones de los dos. Los desarrolladores son libres de usar cualquier lenguaje de programación Windows. Todo esto viene en un SDK de Azure que también contiene una versión de ambiente Windows Azure que corre en la máquina del desarrollador. Este ambiente es conocido como Windows Azure Development Fabric e incluye Windows Azure Storage, un agente Windows Azure y todo el resto de tecnologías que requiere una aplicación para correr en la nube.
    Un desarrollador puede crear y depurar su aplicación usando este simulacro local y luego desplegar la aplicación a Windows Azure, cuando ésta esté lista, aunque en la nube hay cosas que son realmente diferentes. Por ejemplo, no es posible hacer el attach de un debugger a una aplicación en la nube. Así que básicamente para hacer el debugging de una aplicación en la nube, el mecanismo principal sería la escritura a los logs de Windows Azure, vía el agente de Azure.
    Otros servicios provistos incluyen por ejemplo el envío de mensajes desde los agentes a Windows Azure, quien los captura y reenvía por medio de emails, mensajería instantánea o cualquier otro mecanismo especificado. Además también se puede especificar a Windows Azure que detecte fallas automáticamente y envíe alertas. También está disponible información acerca de consumo de recursos tales como tiempo de proceso, ancho de banda entrante y saliente y almacenamiento.

    Cuando el desarrollador ha depurado completamente su aplicación de manera local, ésta ha de ser instalada en un proceso de dos etapas. Primero se sube la aplicación al área de staging en Azure. En este momento, la aplicación queda identificada con un nombre DNS que tiene la forma <GUID>.cloudapp.net, donde <GUID> representa un identificador asignado por Windows Azure. Este nombre es asociado con una dirección IP virtual (VIP) que identifica al balanceador de carga a través del cual la aplicación será accedida. En el momento en que se decide pasar ya la aplicación a producción, se usa el portal de Windows Azure para solicitar el paso a producción. En este caso, Azure automáticamente cambia la entrada en sus servidores DNS para asociar la VIP con el nombre de producción que el desarrollador ha escogido; por ejemplo: myapp.cloudapp.net. (Es posible usar un nombre de dominio personalizado, sencillamente creando un DNS alias usando un CNAME estándar). Otro punto para resaltar aquí: las IPs reales de las aplicaciones jamás son reveladas.

    Esto brinda un fuerte componente de seguridad.

    Servicios de Almacenamiento

    Esta parte de la plataforma también provee un tipo de almacenamiento: Azure Storage. Que es distinto a SQL Azure (otra parte de la plataforma). El almacenamiento Azure no es relacional. Su lenguaje de consulta tampoco es SQL. Es un almacenamiento mucho más sencillo, pero más escalable y más rápido que un almacenamiento relacional. Básicamente hay tres tipos de almacenamiento Azure:

    Storage

     

    1.       BLOBS:  (Binary Large Objects). Prácticamente, archivos. Los requerimientos de File System de nuestras aplicaciones en la nube, se suplen con los blobs. Un blob puede ser de hasta 50Gb de espacio y se encuentra dividido en bloques, de manera que cuando se hacen transferencias y ocurren fallos, la transferencia puede continuar desde el último bloque transferido correctamente.

    2.     Tablas: Los Blobs son la opción justa para algunas situaciones. Pero para otras son muy poco estructurados. Son muy sencillos de entender; pero para permitir a las aplicaciones trabajar con datos de una manera más formal se proveen las tablas. Estas tablas no son tablas relacionales y tienen su complejidad:
           
            Tables

    De hecho, a pesar de que se llaman tablas, los datos que ellas contienen realmente se encuentran almacenados en una jerarquía simple de entidades que contienen propiedades. Cada propiedad tiene un nombre, un tipo y un valor. Varios tipos son permitidos incluidos: Binary, Bool, DateTime, Double, GUID, Int, Int64 y String. Una propiedad puede tomar diferentes tipos dependiendo de los valores almacenados en ella. De hecho, no hay obligación de que todas las propiedades en una entidad tengan el mismo tipo. El tamaño para cada entidad puede ser de hasta 1MB y siempre es accesada como una unidad. Cuando se lee una entidad se retornan todas sus propiedades y al escribir una, esto se hace atómicamente de manera que se reemplazan todas sus propiedades. Y en vez de usar SQL, una aplicación accesa los datos de una tabla usando las convenciones definidas por ADO.NET Data Services (no ADO.NET convencional), o REST. La razón para este tipo de solución, es que nos permite escalar el almacenamiento de una forma tal, que podemos distribuir nuestros datos en distintas máquinas (muchas más de las que se posibilitan con bases de datos relacionales tradicionales); de hecho, una sola tabla en SQL Azure puede ser de terabytes!

    3.    QUEUES: Los blobs y las tablas están enfocados en almacenamiento y acceso de datos. La tercera opción en Windows Azure son las colas, que tienen un propósito muy distinto. Una función principal de las colas es proveer un mecanismo para que las instacias de tipo Web Role se puedan comunicar con las instancias de tipo Worker role. En la siguiente gráfica, se describe el funcionamiento de las colas. En un escenario típico, un rol acepta trabajos de los usuarios (paso 1). Para pasar esos requerimientos a los worker role, se escribe un mensaje en la cola (paso 2). Este mensaje, puede ser de hasta 8kb y es posible usarlo para que contenga URIs apuntanto a blobs o entidades en tablas en caso de que se requiera transmitir más información. El worker lee los mensajes de su cola (paso 3) y ejecuta el trabajo como tal. Una vez leído el mensaje, éste no se borra. En vez de esto, el mensaje se hace invisible a otros lectores por un período de tiempo (por defecto 30 seg). Cuando el worker ha completado su trabajo, en ese momento se borra explícitamente de la cola. (paso 5)
            QUeues


    Separar las instancias web de las worker tiene sentido porque libera al usuario de tener que esperar a que una tarea larga sea procesada y también hace la escalabilidad más simple, dado que solo sería necesario agregar más instancias. Pero por qué hacer que las instancias borren explícitamente los mensajes? Esto se hace para manejar fallos. De esta manera si  un worker que está haciendo el trabajo indicado falla, el mensaje no se borrará de la cola.  Así que cuando vuelva a estar visible, el mensaje reaparece en la cola para ser leído por otro worker. Y de esta manera se proteje el mensaje de fallos.

    Independientemente del tipo de almacenamiento, todo dato almacenado es replicado tres veces, para garantizar redundancia de datos y tolerancia a fallos.

    El storage de Windows Azure puede ser accedido por aplicaciones de Windows Azure o cualquier otra. En ambos casos, todos los tres tipos de storage pueden consultarse a través de REST. Todo es nombrado usando URIs y accesado con operaciones HTTP estándares. No obstante, un cliente .NET podría usar ADO.NET Data Services o LINQ para acceder más cómodamente a esta información. Pero un cliente java  usaría REST estándar. Por ejemplo, un blob puede ser leído con un HTTP GET contra un URI formateado así:

    http://<StorageAccount>.blob.core.windows.net/<Container>/<BlobName>

    De manera similar, una consulta sobre una tabla sería:

    .table.core.windows.net/?$filter=http://<StorageAccount>.table.core.windows.net/<TableName>?$filter=<Query>

    y una cola se accesaría:

    .queue.core.windows.net/http://<StorageAccount>.queue.core.windows.net/<QueueName>

    La Estructura (Fabric)

    Todas las aplicaciones de Windows Azure y todos sus datos en el Storage, residen en alguno de los centros de datos de Microsoft. Dentro de ese centro de datos, el conjunto de máquinas dedicadas a Windows Azure se organizan en una fábrica tal como lo muestra la siguiente gráfica:

     

    Fabric

     

    Tal como se aprecia, la Estructura Azure es un gigantesco grupo de máquinas administrado por un componente de software llamado Fabric Controller. Este controlador es replicado a través de un grupo de 5 a 7 máquinas y es dueño de todos los recursos en la estructura: computadoras, switches, balanceadores de carga y más. Dado que el controlador se comunica con un “Fabric Agent” en cada máquina, también tiene información de cada aplicación en la estructura. Como punto a resaltar, puedo mencionar que el Storage también aparece ante el controlador como una aplicación más. Así que el controlador no conoce los detalles del storage; esto último indica obviamente que el almacenamiento es autocontrolado. Es decir; el Storage, es solo una aplicación más dentro de la estructura, que se administra autónomamente.

    Este amplio conocimiento le da la capacidad al Fabric Controller de cumplir múltiples funciones como monitorear todas las aplicaciones que están corriendo y de esta manera ser capaz de dar información en vivo, de qué es lo que está pasando en la estructura. Administra los sistemas operativos teniendo en cuenta aspectos como las actualizaciones de los Windows Server 2008 que corren en las VMs de Azure. También decide dónde deben correr las aplicaciones, escogiendo los servidores físicos para optimizar la utilización del hardware. Para lograr esto, el controlador depende del archivo de configuración que es subido con cada aplicación a la nube. Este archivo provee una descripción basada en XML de las necesidades de la aplicación: cuántos roles web necesitará, cuantos roles de trabajo y otros detalles. Cuando el controlador recibe una nueva aplicación, éste usa su archivo de configuración para determinar cuántos roles de cada tipo ha de crear. Una vez creadas estas VMs, el controlador las monitorea. Si una aplicación requiere 5 instancias de Web Role y una muere, el controlador automáticamente reiniciará una nueva.

    Esta creación de instancias debe realizarse inteligentemente. Por ejemplo, suponiendo que además de las 5 instancias web el desarrollador pide cuatros instancias worker. Una asignación ingenua podría poner todas estas instancias en máquinas en el mismo rack servidos por el mismo switch. Si el rack o el switch fallara, la aplicación entera quedaría no disponible. Dadas las metas de alta disponibilidad de Windows Azure, hacer que una aplicación dependa de puntos sencillos de falla como este, no es una buena idea.

    Para evitar esto, el controlador agrupa las máquinas en conjuntos llamados “Dominios de Falla”. Cada dominio es parte de un data center que independizaría las fallas únicamente a su contenido. Eso se ilustra en la siguiente gráfica:

    Failure

    En este ejemplo sencillo, la aplicación está corriendo en dos instancias Web y el datacenter está dividido en dos Dominios de Falla. Cuando el controller despliega la aplicación, se establece una instancia de Web Role en cada uno de los dominios. Este arreglo significa que una falla en el hardware no va a provocar que toda la aplicación se caiga.

    Hasta aquí vimos todo lo relacionado al componente de Windows Azure. En mi post Stairway to Azure (4): Sql Azure y .NET Services, veremos la descripción de estos otros dos componentes.

Page 2 of 13 (324 items) 12345»