MSDN Blogs
  • WarNov Developer Evangelist

    Reproduciendo Sonidos Secuencialmente en Silverlight

    • 1 Comments

    Ya hace poco les mencioné un proyecto OpenSource en el que trabajo; pronto postearé al respecto.

    Bien; en ese proyecto Silverlight es protagonista. De hecho el proyecto se llama SilverTeacher.

    Dado que es un proyecto altamente cargado de multimedia, obviamente se necesita reproducir sonido.

    Cómo se reproducen sonidos en Siverlight?

    Rocket Science!!! Observen:

     
       1:  private void ReproduceSound(string name)
       2:  {
       3:      melSounds.Source = new Uri(
       4:          String.Concat("/sounds/", name, ".wma", UriKind.Relative));
       5:      melSounds.Stop();
       6:      melSounds.Play();
       7:  }

    Bueno… aquí el único sujeto desconocido es el tal melSounds

    Se los presento:

    internal System.Windows.Controls.MediaElement melSounds;

    Es un sujeto de tipo MediaElement. MediaElement es un control que uno arrastra del toolbox. No tiene representación visual en el editor. Queda a un ladito invisible, casi como los DialogBox de la programación Windows tradicional.

    Observen entonces que lo único que hay que hacerle, es proporcionarle la Uri del elemento a reproducir y luego darle “Play”.

    Observen también que primero doy la instrucción “Stop”. Por qué?

    Esto lo hago, porque cuando por primera vez se reproduce un sonido, el “cursor” de la reproducción queda al final del mismo. Así que si luego de reproducirse le damos “Play” no se ejecutará nada, porque el cursor está al final.

    La forma de reposicionar el cursor, es mediante la instrucción “Stop”. Súper fácil no?

    Hasta ahí todo bien. Pero que tal si quisiéramos reproducir dos o más sonidos consecutivamente?

    Usando el método anterior, uno pensaría: “Muy fácil, ejecuto este código:”

       1:  ReproduceSound(nombrePrimerArchivo);
       2:  ReproduceSound(nombreSegundoArchivo);

    Desafortunadamente la cosa no funciona bien así

    Dado el carácter asincrónico de la reproducción de los sonidos, lo que pasaría es que sólo el último sonido se reproduciría.

    La solución no es muy directa. Es más bien “tricky”.

    Luego de probar y probar, descubrí que el MediaElement tiene un evento llamado MediaEnded. Entonces lo único que habría que hacer, es controlar ese evento, para que se comience a reproducir el siguiente archivo.

    De hecho, ya una aplicación real de esta teoría, se aprecia en el siguiente método:

       1:  private void melSounds_MediaEnded(object sender, System.Windows.RoutedEventArgs e)
       2:  {
       3:      switch (melSounds.Source.OriginalString)
       4:      {
       5:          case "/sounds/success.wma":
       6:              if (goals == GOALS_TO_WIN)
       7:              {
       8:                  //ShowStars();
       9:                  ReproduceSound("cheer");
      10:              }
      11:              break;
      12:          case "/sounds/error.wma":
      13:              SayColor();
      14:              break;
      15:          default:
      16:              break;
      17:      }
      18:  }

    Observen allí cómo de acuerdo al sonido que haya acabado de reproducirse (lo sé a través de su “source” o fuente) escojo cuál debería ser el siguiente archivo y lo reproduzco.

    Tal cual, es la solución!!!

  • WarNov Developer Evangelist

    Antivirus Gratuito: Microsoft Security Essentials

    • 0 Comments

    Cansado de buscar un antivirus gratuito en el que en verdad pueda confiar?

    Ya no es necesario buscar más! Microsoft ofrece uno completamente gratis y no solo es un antivirus, sino toda una suite de seguridad que respeta la libre elección de sus usuarios, su privacidad y no exige registro ni identificación alguna:

    Se trata de Microsoft Security Essentials que brinda seguridad en la que usted puede confiar;  es fácil de obtener y utilizar y brinda una protección silenciosa que no interfiere con el performance de su máquina. Brinda protección en tiempo real para atender las necesidades de seguridad continua de un PC con Windows, lo que ayuda a protegerlo contra virus, spyware y otras amenazas maliciosas. 

    Cualquier usuario del HOGAR con Windows versiones Windows XP, Windows Vista o Windows 7 que tenga una versión ORIGINAL de Windows lo puede descargar GRATUITAMENTE de la RED y usarlo indefinidamente. Es Gratuito y exclusivo para los usuarios con una versión Original de Windows. (Para entornos empresariales está disponible el producto Microsoft Forefront). 

    Los únicos requisitos para correr este software son: Cualquiera de las versiones de 32 o 64 bits de Windows XP SP2 y superior, Windows Vista y Windows 7 incluyendo el modo XP.

    La idea de ofrecer disponibilidad gratuita de este producto únicamente con copias originales de Windows, obedece a que la protección en tiempo real como aquella que se encuentra en Microsoft Security Essentials es una gran herramienta en la lucha contra software malicioso conocido; sin embargo para mejorar el estado general del ecosistema también se requiere tratar el malware en la fuente de distribución. Las fuentes de software falsificado y soluciones temporales de activación maduran con el malware. Una vez infectados, los PC con software no original están más propensos a convertirse en hosts de malware, que propagan software malicioso a otras máquinas en el ecosistema. Conducir más sistemas al software original tiene el potencial de atender mejor las necesidades comerciales y de seguridad del ecosistema en general. Si el PC no aprueba la validación de originalidad, la instalación de Microsoft Security Essentials termina y al usuario se le envía a información sobre cómo resolver los problemas relacionados con software original.

    Uno de los detalles especiales de este producto, es que los usuarios de Microsoft Security Essentials contarán con acceso al soporte de la comunidad y de correo electrónico sin costo alguno.

    Microsoft Security Essentials no estará disponible como una descarga crítica de Windows. El instalador estará disponible como una descarga individual sin costo pero utilizará el servicio Microsoft Update tanto para las descargas de firmas como para las actualizaciones de producto.

    Se puede descargar de http://www.microsoft.com/security_essentials y no se requiere que los consumidores ingresen una ID de Windows Live ni registro para descargar la solución.

    Microsoft ya ha liberado productos para proteger el software de programas malintencionados como Windows Defender que detecta y elimina sólo spyware conocido (tecnología que ayuda a recopilar información acerca de una persona u organización sin su conocimiento o consentimiento). Sin embargo, no está diseñado para brindar protección contra la gama completa de software malicioso, y en específico no evita que virus, gusanos, troyanos, y otro software malicioso infecten su máquina. La nueva solución sin costo será una solución antimalware completa que se encarga de estas amenazas. Esto no significa que Microsoft Security Essentials esté diseñado para reemplazar a Windows Defender. Pero si usted ejecuta Microsoft Security Essentials, no necesita ejecutar Windows Defender. Microsoft Security Essentials deshabilita Windows Defender para administrar la protección en tiempo real del PC, incluyendo antivirus, rootkits, troyanos y spyware.

    Aparte de ser gratuito y ofrecer tantas ventajas, Microsoft cree en la elección del cliente. Al ofrecer Microsoft Security Essentials como una descarga individual e independiente, Microsoft ofrece a los usuarios de Windows la opción de elegir, gratis o de otro tipo, la solución de seguridad de PC que se ajusta mejor a sus necesidades individuales. Además también protege la privacidad de sus usuarios, Microsoft Security Essentials no desencadena un cambio en el estado del PC con Windows sino que lee el valor de originalidad almacenado en la máquina donde está disponible, o de otra manera invoca una API para que valide dónde no exista un estado local. No se ve ni recopila información personal como parte de la validación de originalidad.

    Conózcanlo, instálenlo y recomiéndenlo a sus conocidos para evitarles tediosas búsquedas de antivirus gratuitos!

  • WarNov Developer Evangelist

    23 y 24 de Agosto. Windows Phone 7 Jump Start

    • 0 Comments

    Un curso Jump Start está diseñado específicamente para desarrolladores experimentados que requieren saber cómo usar de la mejor manera las nuevas tecnologías de Microsoft.

    Estos cursos avanzados asumen un cierto nivel de experiencia y conocimiento del dominio, de manera que se cubren rápidamente los temas a través de situaciones y ejemplos del mundo real.

    Es un curso de dos días. En Inglés. Dirigido a desarrolladores que buscan construir aplicaciones cool y juegos para la nueva plataforma Windows Phone Mango.

    Fecha: Agosto 23 y 24.
    Hora: 10am – 6pm (Hora Colombia)
    Duración: 8 horas diarias incluyendo una hora de descanso.
    Registro: http://bit.ly/Mango-Jump

    Aquí un vistazo a los temas que se estarán viendo:

    Plantilla para hacer bosquejos de aplicaciones Windows Phone

    Día 1:

    • Building Windows Phone Apps with Visual Studio 2010
    • Silverlight on Windows Phone – Introduction
    • Silverlight on Windows Phone – Advanced
    • Using Expression to Build Windows Phone Interfaces
    • Windows Phone Fast Application Switching
    • Windows Phone Multi-tasking & Background Tasks
    • Using Windows Phone Resources (Bing Maps, Camera, etc.)

     


    Plantilla para hacer bosquejos de aplicaciones Windows Phone

    Día 2:

    • Application Data Storage on Windows Phone
    • Using Networks with Windows Phone
    • Windows Azure and Windows Phone
    • Notifications on Windows Phone
    • XNA for Windows Phone
    • Selling a Windows Phone Application

    Si el inglés no es un problema para ustedes, les recomiendo enormemente este gran curso

  • WarNov Developer Evangelist

    Windows Azure en el negocio

    • 2 Comments

    Abstract: Windows Azure es la joya de la corona en el desarrollo Microsoft. En general, aquí se agrupa el conocimiento de muchas tecnologías .NET para lograr desarrollos brillantes. Sin embargo, los roles de negocio en las organizaciones deben tener cierta comprensión de nuestra plataforma de cloud computing, para poderla implementar en sus empresas. Este artículo da un vistazo breve y de muy alto nivel, enfocado en el negocio para que puedan tomar decisiones más informadas.

    GoingToAzure

    Las ventajas de negocio de Windows Azure incluyen aspectos como el ahorro en costos, tiempo (time to market), administración, costo de implementación reducido (upfront), un retorno de la inversión más rápido y gran escalabilidad y disponibilidad.

    En cuanto al ahorro en costos y upfront reducido, estos se obtienen debido a que la plataforma de cloud de Microsoft se encarga absolutamente de todo el manejo de hardware y sistemas operativos en la nube, librando a sus clientes de tener que comprar máquinas que luego se depreciarán y también del manejo de licencias de los servidores. Por si fuera poco, la administración automatizada de Windows Azure permite a los desarrolladores enfocarse en hacer su aplicación cada vez mejor, sin tener que preocuparse de tareas alternas que no hacen parte del core del negocio, tales como estar pendientes de actualizaciones, patchs, antivirus y demás.

    El hecho de que en Windows Azure solo se paga lo consumido brinda una gran ventaja a los desarrolladores ya que minimiza el costo de upfront en sus soluciones. No tienen que hacer gigantescas inversiones en infraestructura. Por el contrario, van solicitando los recursos necesarios de Windows Azure transfiriendo los costos a sus clientes, a medida que estos van consumiéndolos servicios expuestos. Esto permite que así como el negocio va escalando, la inversión retorna inmediatamente.

    Para los clientes de los desarrolladores esto también es una ventaja, porque no tienen que preocuparse por la infraestructura de las soluciones que les están ofreciendo. Además en cuanto a costos, tampoco tienen que preocuparse por esquemas de licenciamiento ni por pagar altos costos. En general los servicios expuestos por Windows Azure se pueden cobrar a una tasa muy baja cada mes a los clientes que los estén usando. Y además también se les puede ofrecer la posibilidad de que paguen solo lo consumido.

    Esto sumado a todas las ventajas que representa el modelo de (Software as a Service) SaaS que está perfectamente mapeado dentro del modelo de (Platform as a Service) PaaS, le brinda a los clientes y desarrolladores muchas ventajas, pues las aplicaciones se encontrarán permanentemente online con unos SLA de altísima calidad y unas capacidades de distribución que son solo posibles bajo esta metodología. Es así como a través de nuestra plataforma de cloud computing el mensaje de Power of Choice se ve totalmente llevado a la realidad dado que los despliegues en Windows Azure nos permiten tener clientes tanto en el escritorio, como en la web y también en teléfonos móviles de una manera bastante sencilla. Windows Azure es una plataforma bastante abierta que permite el despliegue de aplicaciones creadas en los lenguajes y tecnologías más populares tales como lo son Java, PHP, Ruby y por supuesto, .NET. Por si fuera poco, se ofrece una amplia gama de opciones de almacenamiento para que las aplicaciones puedan persistir sus datos de acuerdo a la forma que más se adapte a las necesidades y al presupuesto. De esta manera se encuentra el Windows Azure Storage y SQL Azure. Esto nos permite también ofrecer la alternativa de que en Windows Azure podamos ubicar únicamente nuestras aplicaciones sin Storage, o solo el Storage sin aplicación o las dos cosas. La decisión es nuestra de acuerdo a lo que se requiera.

    Mi invitación es a que analicen un nuevo modelo no solo tecnológico sino de negocio, que le abrirá muchas puertas a su empresa.

  • WarNov Developer Evangelist

    Teoría de CMSs con Orchard

    • 0 Comments

    Esta es la primera entrega en una serie de posts acerca de este moderno sistema de manejo de contenidos basado en ASP.NET MVC. Aquí explicaré conceptos básicos de los CMS y de la plataforma como tal. Orchard es un CMS de última generación creado por la comunidad con alto apoyo de Microsoft. Es gratuito y Open Source.

    Nivel: Básico.
    Advertencia: Uso sustantivos técnicos en inglés y en español indistintamente.

    Posts de esta serie:

    Conceptos de CMS

    Un CMS esencialmente apunta a ayudarnos a construir sitios web usando piezas pre construidas que vienen en diferentes formas y tamaños para nuestros fines.

    C

    La C de CMS significa contenido y hace referencia a todo aquello en el sitio que tiene información. Por ejemplo un post de un blog, un comentario, un producto y hasta un menú de navegación o un logo.

    M

    Management o administración. Es el conjunto de herramientas que nos permite administrar el sistema. Se conoce como Admin Panel, Dashboard o back-end. Como se indica el acceso es restringido a administradores.

    clip_image001

    S

    De sistema que indica que todo lo anterior está completamente integrado para brindar una experiencia consistente durante la administración de nuestro sitio.

    Front End

    Es la parte visible de nuestro sitio.

    clip_image002

    Setup

    En general, todo CMS requiere de un Setup y es el proceso requerido para tener el sitio corriendo. Después de esto habrá que trabajar mucho en el contenido.

    clip_image003

     

     

    Conceptos de Orchard

    Content Item: Pieza de contenido que a menudo tiene una url asociada. Por ejemplo, páginas, posts o productos.

    Content Type

    Determinan la clase de contenido relativa a un Item. Por ejemplo un blog post es un ítem de tipo blog post.

    Content Part

    En Orchard los tipos de contenido están formados de pequeñas partes llamadas content parts. Son unidades atómicas de contenido que definen un comportamiento específico y que son reusables en muchos tipos de contenido.

    clip_image004

    Por ejemplo los comentarios, los tags o los ratings son Content Parts porque definen un comportamiento que puede ser reusado. Como regla se tiene que solo puede haber una parte de cada tipo en cada tipo de contenido. Por ejemplo, no encontraremos en un blog post dos secciones de comentarios distintas.

    Content Field

    Campos de contenido que pueden ser agregados a un tipo de contenido. Tienen un nombre y un tipo y pertenecen a un Content Type específico. Por ejemplo un producto puede tener un campo de texto representando su nombre, un campo numérico representando su precio y otro representando su peso. Como vemos, estos campos probablemente sólo tienen sentido hablando de un producto.

    Module

    Los módulos son las extensiones que se construyen para enriquecer la funcionalidad de Orchard. Estos módulos se organizan dentro de un sub directorio que puede ser encontrado en la carpeta Modules dentro del sitio web de Orchard. Estos módulos se pueden encontrar en la galería de Orchard.

    clip_image005

    Feature

    Un módulo puede contener una o más características que son un agrupamiento lógico de funcionalidades que pueden ser habilitadas o deshabilitadas individualmente. Por ejemplo, un módulo de autenticación personalizada puede tener diversas características (features) para OpenId, Facebook, LiveID, Twitter, etc. que pueden ser activadas o desactivadas.

    Hay que tener en cuenta sin embargo que una característica puede depender de otra que puede existir en el mismo o en otro módulo.

    clip_image006

    Manifest

    El manifiesto es un pequeño archivo de texto que describe un módulo o un tema en el sistema:

    clip_image008

    Interfaz Gráfica (UI Composition)

    Dado que Orchard maneja contenido com´puesto de partes, se necesita un mecanismo que orqueste la parte visual de la aplicación teniendo en cuenta la naturaleza del contenido que hace la composición. Por esto es importante hablar de la UI:

    Theme

    Al diseñar un sitio web es muy importante que seamos capaces de modificar su apariencia visual en cada sencillo aspecto. Orchard provee una clara y limpia separación entre la administración del contenido y del despliegue visual de dichos contenidos.

    Un tema es un paquete que contiene todo el look and feel de un sitio Orchard. Puede consistir de una combinación de hojas de estilo, imágenes, distribuciones, plantillas y hasta código personalizado. Los temas se pueden crear heredando de otros; cosa muy útil si se trata de hacer solo pequeñas modificaciones sobre un tema existente.

    clip_image009

    Layout

    Es un archivo dentro de un tema que define la organización generar de las páginas que lo usan. Un layout típicamente define un conjunto de zonas donde los contenidos o widget pueden ser insertados.

    clip_image010

    Template

    Cada parte de contenido, cada campo y cada widget necesita ser gráficamente representado en el front-end transformando los datos que representa en un elemento que pueda ser leído por los usuarios del sitio. Un template o plantilla es la “receta” que formatea esos datos y los transforma en HTML para que el browser los despliegue. Se puede pensar en un template como en HTML plano con “campos” bien definidos en los que los datos se insertan.

    Shape

    Antes de que algo pueda ser mostrado usando una plantilla, ese algo debe ser transformado en una forma o shape, que no es más que un objeto bastante versátil que contiene toda la información requerida para poder mostrarlo. Antes de que pueda ser renderizado por las plantillas, todo debe ser mapeado en un árbol de formas que es una especie de representación abstracta de los contenidos de la página final. La ventaja de estos árboles de formas, es que cualquier módulo puede modificarlas o crear unas nuevas.

    Los layout, zinas, widgets y content parts todos se representan como shapes en el proceso de renderizado.

    Placement

    Cuando se renderizan los elementos de la página, Orchard requiere saber en qué orden hacerlo. Para esto existen los archivos Placement.info que son XML que describen reglas usadas para determinar qué shapes van en qué zonas y en qué orden. Esto posibilita no solo que pueda ser personalizado el renderizado de cada shape, sino que también se pueda personalizar el orden en que se ejecuta este renderizado.

    clip_image013

    Zone

    Las zonas son partes específicas de un layout que pueden ser personalizadas insertando en ellas Widgets. En algunos temas, las zonas son colapsibles lo que significa que pueden desaparecer si no tienen widgets activos.

    clip_image014

    Widget

    Un Widget es un pequeño fragmento de interfaz de usuario que puede ser añadido a algunas o a todas las páginas del sitio. Por ejemplo tag clouds, mapas, formulario de búsqueda, etc.

    Layer (Capa)

    Una capa es un grupo de widgets (con su posicionamiento y orden) que es activada por una regla específica.

    Por ejemplo podríamos armar una capa llamada HomePage que se activara solo al llegar a esta página. También podríamos tener por ejemplo una capa por defecto que siempre estuviese activa y otra capa solo para usuarios autenticados.

    Cuando más de una capa está activa en una página, todos los widgets de esas capas se muestran al mismo tiempo. Orchard los ordena basándose en sus posiciones.

     

    Seguridad

    Usuarios y Roles

    En Orchard los usuarios pueden tener roles que pueden ser vistos como estereotipos de usuarios que tienen un conjunto común de permisos que definen quién puede hacer qué en el sitio. Cualquier usuario puede tener varios roles.

    Los dueños de los sitios pueden crear sus propios roles, pero Orchard viene con un conjunto de roles predefinidos que deberían cumplir la mayoría de los requerimientos de los sitios.

    · Administrador: Todos los permisos

    · Editor: No crea contenido pero edita y publica contenido creado por autores

    · Moderador: Valida contenido creado por usuarios como los comentarios

    · Autor: Escribe y publica su propio contenido

    · Contribuidor: Escribe contenido pero no necesariamente tiene derecho a publicarlo

    · Anónimo: usuario desconocido. Alguien que no se ha logueado.

    · Autenticado: Cualquier usuario logueado

    Los roles autenticados o anónimo no se pueden asignar manualmente sino que han de ser determinados dinámicamente en tiempo de ejecución.

    Privilegios y Permisos

    En Orchard los permisos son asignados a los roles, pero no son explícitamente denegados. En otras palabras si un usuario pertenece a cualquier role con algún permiso, éste tiene ese permiso. Para revocar este permiso es necesario bien sea retirar al usuario del role que tiene este permiso o revocar el permiso de dicho rol.

    Algunos permisos son garantizados efectivamente. Esto significa que no han sido explícitamente permitidos, pero que se adquieren de manera implícita a través de otro permiso. Por ejemplo, si se otorga el permiso de “Site Owner”, implícitamente se garantizan el resto de permisos.

    clip_image015

    Tanto los permisos como sus ajustes aplican por módulo. Esto significa que si usted construye su propio módulo, a éste habrá de especificársele los permisos que lo acompañan.

    Site Owner

    También conocido como el súper usuario, es un usuario especial definido en tiempo de instalación que tiene todos los derechos sobre el sitio. Puede ser modificado desde la pantalla de administración del sitio si se tiene permiso para hacerlo.

    De esta forma hay un tipo de permiso llamado “Site Owners Permission” que garantiza todos los derechos sobre el sitio y que por defecto se asigna al rol de Administrador. Es altamente recomendado que este grupo de permisos no se asigne a ningún otro rol.

     

     

    Desarrollo

    Cuando se van a crear nuevos módulos para Orchard (Esto no es requerido para operar el sitio), se requiere:

    ASP.NET MVC

    El framework web sobre el que se construyó Orchard.

    Handler

    Es similar a un filtro en MVC dado que contiene código que ejecuta eventos específicos en el ciclo de vida del request. Son usados para ajustar repositorios de datos o para ejecutar operaciones adicionales cuando algún contenido se carga.

    Driver

    Similares a los controladores de MVC pero actuando a nivel de contenido en vez de a un nivel de el request completo. Típicamente preparan las shapes para ser renderizadas y manejan postbacks desde los editores de administración.

    Record

    Es una clase que modela la representación de una content part en la base de datos. Son clases POCO donde cada propiedad es virtual.

    Migration

    Una migración es una descripción de las operaciones que se deben ejecutar cuando se instala por primera vez una característica en un módulo o cuando se actualiza de una versión a la siguiente. Esto permitirá actualizaciones sencillas sin pérdida de datos. Orchard incluye un framework de migración de datos.

    Injection

    La IoC, Inversion of Control o sencillamente inyección se usa ampliamente en Orchard. Cuando una pieza de código requiere una dependencia, esto típicamente requerirá la inyección de una o más instancias de una interface específica. El framework se encargará de seleccionar, instanciar e inyectar las implementaciones adecuadas en tiempo de ejecución.

    Llamado a la Acción!

    Si desea ir trabajando con este CMS, puede descargarlo gratuitamente de http://www.orchardproject.net/  Y espere en mi próxima entrega un video de los diversos tipos de instalación que podemos hacer de este CMS.

  • WarNov Developer Evangelist

    Windows Phone Developer Tools 7.1 Beta Release

    • 0 Comments

    Hoy en Nueva York fue anunciada al mundo la siguiente versión de Windows Phone con nombre código “Mango” . En el evento se revelaron las principales características de esta versión, así como las mejoras al Marketplace que no habían sido mostradas en eventos previos. Para ver el video de este evento poder ir aquí.

    Tras este evento, las herramientas para que los desarrolladores puedan crear aplicaciones que explotan todas estas nuevas características están disponibles públicamente y sin costo.

    Características Liberadas

    · Profiler: Una herramienta que permite identificar y resolver problemas de performance de una manera rápida y sencilla.

    · Emulador Mejorado: El nuevo emulador permite simular entradas para los sensores. Incluyendo información de GPS y datos para el acelerómetro. Así que ya no tendrás que ir hasta la India a ver si su aplicación GPS funciona allá como debería.

    · Visual Basic: En este reléase se provee soporte para este lenguaje tanto para crear proyectos XNA como Silverlight con Visual Studio y Expression Blend.

    · Multi Targeting: Que nos permite escoger para qué versión del OS queremos que corra nuestra aplicación (para la 7.0 o la 7.1)

    · Contactos que se pueden organizar por grupos y además se pueden ejecutar comunicaciones con dichos grupos

    · Filtros de información (por ejemplo; no quiero tener updates de Facebook para determinadas personas)

    · Comunicaciones integradas a través de threads: De esta manera por ejemplo se puede seguir un chat a través de SMS, Windows Live Messenger o Facebook, dependiendo de dónde se encuentren activos nuestros interlocutores.

    · Conversaciones en Email así cono “Information Right Management” para proteger la información corporativa.

    · Resolución de conflictos de Agenda.

    · Eventos de Facebook en la agenda

    · Si está oyendo música o con el teléfono fuera del alcance de sus manos (tal vez conduciendo) Ahora podrá ejecutar muchas acciones solo con la voz. Por ejemplo si llega un nuevo mensaje, el teléfono le informará a través de voz de quien es y su contenido. Además usted podrá replicar a dicho mensaje también solo diciendo lo que quiere que vaya en el SMS.

    · Detección de Rostros en las fotografías tomadas con el teléfono que permite etiquetar contactos y actualizar redes sociales

    · Mejor integración de los documentos de Office ahora con Office 365 y con Skydrive

    · IE9 FULL (exacto al de la versión de escritorio)

    · Búsquedas en Bing que incluyen comandos por ubicación, imágenes, y voz

    · Otras nuevas características:

    o Acceso a sensores adicionales: Cámara, compas, gyro

    o Background Agents

    o Cambio entre aplicaciones aún más rápido

    o Control de Web Browser basado en IE9 para incluir en nuestras aplicaciones

    o Live Agents que nos muestran información dinámica en el home del sistema

    o Silverlight 4

    o Silverlight interoperando con XNA

    o Sockets

    o SQL CE

    Recursos:

    · WPDT 7.1 Beta

    · Windows Phone Developer Blog

    · Sesiones de Windows Phone @ MIX11

    · App Hub

  • WarNov Developer Evangelist

    Open Data Protocol (OData)

    • 2 Comments

    Si como desarrolladores alguna vez hemos tenido la necesidad de exponer los datos de nuestra aplicación a otras aplicaciones; o lo que es peor, usar datos de otras aplicaciones, deberíamos saber que éstas actividades de compartimiento de información son de las más complicadas en el proceso de desarrollo.

    Es cierto que hoy en día existen los gloriosos Web Services: montados sobre los más aceptados protocolos y estándares: TCP/IP, HTTP, SOAP, XML, XSD, WSDL…

    Pero a pesar de ello, la comunicación sigue siendo complicada. Sobre todo para aquellos que tienen que crear proxies manualmente (Afortunadamente el SDK del Framework.NET ayuda a alivianar estas tareas con herramientas como wsdl.exe y xsd.exe que se integran transparentemente con Visual Studio). Casos por ejemplo en que un cliente java requiere acceder a un Web Service creado con .NET. y viceversa, requieren de mucha mano de obra y configuración por parte del cliente. Y ni se hable cuando de WCF se trata! Es bien sabido que WCF da toda la flexibilidad que requerimos para acceder a cualquier fuente de datos, montados sobre cualquier protocolo de transmisión y con cualquier tipo de mensaje; pero configurar un WCF sin mucha experiencia, puede resultar ciertamente más dispendioso que crear las operaciones en sí.

    Dado que la mayoría de aplicaciones necesitan acceder a los datos a través de HTTP, es justo entonces que se defina un protocolo simplificado que aproveche todas las ventajas de HTTP y que permita a múltiples clientes (esto es: clientes creados con distintas tecnologías) acceder a múltiples fuentes de datos, todo usando el mismo mecanismo.

    El camino ya había estado bastante trabajado con arquitecturas como REST, protocolos como ATOM y lenguajes como JSON.

    Teniendo todas estas bases y las necesidades que ya he descrito, Microsoft decidió crear OData; un protocolo para la consulta y actualización de una variedad de fuentes de datos que incluye pero no se limita a bases de datos relacionales, sistemas de archivos, CMS y sitios web tradicionales.

    OData fue liberado bajo la promesa Open Specification Promise (OSP) para permitir a cualquier persona interoperar libremente con cualquier implementación OData. A futuro, se espera que OData empiece a ser parte de AtomPub.

    Como lo mencioné OData ha sido creado específicamente para trabajar sobre web y es un protocolo centrado en HTTP. Usa las URIs para identificar los recursos con los que se desea trabajar. Los resultados, aunque se pueden trabajar con el formato AtomPub basado en XML, también se pueden trabajan con JSON, para simplificar la integración con clientes HTML y JavaScript.

    Para trabajar con OData hoy en día se ofrecen toolkits gratuitos para .NET (WCF Data Services), JAVA, AJAX y PHP y se aplica no solo en sitios web personalizados, sino en productos como SharePoint, Excel (PowerPivot), SQL Server, Windows Azure Storage, WebSphere eXtreme Scale, etc.

    Más información, en la página oficial del protocolo: http://www.odata.org. Allí encontraremos links de la especificación FORMAL del protocolo. Pero como toda especificación FORMAL, para nosotros desarrolladores que necesitamos agilidad, es poco práctica. De hecho la practicidad que tiene este protocolo para nosotros, es en el uso de WCF Data Services y es por eso, que he dedicado mi próximo post a ese tema. Pero para entenderlo mejor, es necesario comprender que existe OData y que está basado en REST.

  • WarNov Developer Evangelist

    Ventajas Rápidas en Expression Web

    • 0 Comments

    En el video rápido de esta semana, muestro ventajas que he encontrado usando Expression Web en la creación de un proyecto Open Source en el que necesitaba algo muy rápido y sencillo, pero con estilo.

    Veamos cómo para lograr esto, Expression Web nos ayuda bastante. Principalmente abordo temas como edición de texto, formateo y aplicación de estilos: Cómo se crean automáticamente dentro de la página a través de cuadros de diálogo visuales. Y cómo se pueden administrar para reunirlos automáticamente en un archivo de estilos.

    También algunos tips HTML como. Centrar un div dentro del body y crear un template con varias columnas en divs.

    Algo rápido, sencillo y útil. Enjoy!

     

    Credits:

    Thnx to @andresruiz for teaching me some really cool http tips. His blog.

    .



  • WarNov Developer Evangelist

    Portal S2B. Un sitio de Microsoft en la Web, donde conectamos empresas con profesionales de tecnología.

    • 0 Comments
    del.icio.us Tags: ,
    S2B, una iniciativa de comunidad que conecta a Microsoft, sus socios de negocio y clientes, con profesionales y estudiantes de tecnología, calificados para pasantías y trabajos desde primer nivel, hasta proyectos de gran envergadura.

    [ www.s2bprogram.com/colombia ]

    ¿Está interesado en la selección de lo mejor de lo mejor para su empresa?

    Con S2B puede encontrar profesionales y estudiantes, capacitados en tecnologías de Microsoft como .NET, Windows, SharePoint y SQL Server entre otras, y que han participado activamente en diversos programas de Microsoft de capacitación y certificaciones profesionales y en programas académicos como Imagine cup, Microsoft Student Partners y Microsoft Student Tech Clubs.

     

    Empiece ya, es muy sencillo

    1. Registre su Empresa en el portal del programa S2B
    2. Publique sus Ofertas Laborales
    3. Consulte los candidatos que aplican a sus ofertas

    Si usted es estudiante profesional de tecnología buscando oportunidades laborales, también lo invitamos al portal para que registre su hoja de vida.

    Cada oferta publicada a través del Portal S2B, será replicada a través de diversos medios de comunicación de Microsoft Colombia hacia profesionales y estudiantes, y además será compartida con las comunidades profesionales y académicas con las que tenemos relación en el país.

    Instrucciones detalladas aquí

    Si desean incluir un widget en sus sitios web para que sus visitantes tengan la oportunidad de buscar empleos a través de nuestro portal, pueden obtener instrucciones ingresando aquí.


  • WarNov Developer Evangelist

    NodeJS Crash Course: El curso rápido y sencillo para aprender Node.JS

    image

    Queremos sitios web realmente veloces. Sitios web que puedan atender a miles de usuarios concurrentes sin presentar fallas de escalabilidad en sus servicios.

    Necesitamos un nuevo acercamiento que nos permita a nosotros como developers poder desarrollar este tipo de sitios Web y, efectivamente, NodeJS cumple esta tarea a cabalidad.

    Este es el primer episodio del curso Noding With WarNov, en el que aprenderás a manejar Node.js para crear sitios web de última generación que funcionan a grandes velocidades y soportando grandes cargas. Node.js básicamente es una compilación de paquetes. Por un lado incluye el engine V8 JavaScript de Google. Por el otro la capa de abstracción provista por libUV y finalmente una librería core de Node.js escrita principalmente en JavaScript.

    Creado en 2009 por Ryan Dahl, hoy es altamente usado en aplicaciones web que requieren alta velocidad y manejo de tráfico optimizado. Es mantenido por Joyent, aunque sigue siendo open source. La principal característica que lo distingue de otros acercamientos similares, es que no necesita de un browser para correr, pues se ejecuta del lado del server. Además implementa un API de I/O creada específicamente para no generar bloqueos, lo que es bastión en la velocidad de respuesta del server.

    Adicionalmente Node.js incluye también un ambiente REPL (Read, Evaluate, Print, Loop) que permite el testing interactivo de instrucciones Node.js.

    En este video, veremos cómo todos los elementos mostrados anteriormente se integran para producir sitios web, de una manera básica.

    En siguientes capítulos iremos avanzando sobre el estudio de esta tecnología.

     

    Bien. A manera de documentación, aquí les dejo el código que usé para hacer nuestro primer servidor Web basado en Node.js:

    var http = require('http');
    var serv = http.createServer(
        function (req, res) {
            res.writeHead(200, { 'Content-Type': 'text/html' });
            res.end('<marquee>Noding with @WarNov</marquee>');
    
            var d = new Date();
            var hours = d.getHours();
            var minutes = d.getMinutes();
            var seconds = d.getSeconds();
    
            var time = hours + ":" + minutes + ":" + seconds;
            console.log('Somedoby just node with @WarNov at ' +
                time);
        });
    serv.listen(3000);
  • 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

    Simulando carpetas en los blobs de Windows Azure

    • 2 Comments

    En los blobs de Azure no tenemos un manejo de carpetas como en el sistema de archivos al cual estamos acostumbrados. Solo tenemos contenedores y dentro de estos contenedores tenemos múltiples blobs; no más contenedores. Así que para imitar una estructura de carpetas, podemos nombrar los blobs imitando una estructura de carpetas.

    Por ejemplo; si tenemos:

    clip_image002

    Donde cada carpeta contiene un grupo de imágenes que nos servirán como fuente para un sitio web, entonces tendríamos que simular dentro del contenedor llamado “temp”, que tenemos tres carpetas llamadas pics, pics1 y pics2.

    Esto se logra sencillamente renombrando cada uno de los archivos dentro de las carpetas con la ruta relativa desde temp (que sería el nombre del contenedor). Esto hará que se puedan referenciar luego como si estuviesen en una jerarquía de carpetas.

    Por ejemplo si dentro de cada folder tenemos los archivos 1.jpg, 2.jpg, n.jpg, entonces luego del renombramiento tendríamos:

    Representando a la carpeta pics:

    pics/1.jpg, pics/2.jpg, pics/3.jpg

    Para la carpeta pics1:

    pics1/1.jpg, pics1/2.jpg, pics1/3.jpg

    y así sucesivamente.

    De la misma manera operaríamos en jerarquías más complejas.

    Por ejemplo un blob bien podría llamarse:

    carpeta/subcarpeta/subsubcarpeta/archivo.extensión

    Más detalles en inglés aquí

  • WarNov Developer Evangelist

    Extension Methods enriquecidos con Generic Methods

    • 0 Comments

    Un par de cosas que hoy en día me hacen feliz de estar en este momento de la historia de la tecnología de desarrollo.

    Recuerdo mis comienzos de programación con C++; aprendía a programar estructuras y bases de datos… hacía mi propio motor. Trasnocho incesante; la entrega del proyecto estaba encima… mucha repetición de código solo para cambiar tipos; cantidad de métodos estáticos y archivos de Utilidades para “reusar”. Lo pongo entre comillas, porque cada vez que necesitaba trabajar con nuevos tipos, tenía que copiar y pegar la funcionalidad… sí… traté de trabajar con templates, pero no eran del todo estándar; además el manejo de memoria… todo un pain. Además cuando quería utilidades sobre un tipo de datos dado, tenía que crear una biblioteca de métodos estáticos que recibían como parámetro a instancias de eso tipos, en vez de poder “extender” las funcionalidades de esos tipos de una manera sencilla que no me implecara tener que heredar (si es que se podía). Precisamente de la solución a esas incomodidades, les hablaré en esta ocasión.

    .NET no es dos clicks y la aplicación está lista. Mejor dicho; no es solo eso.

    La velocidad y productividad de desarrollo no solo es a nivel de Wizards o Asistentes, es algo más de fondo; la misma filosofía del framework nos permite tener características tan poderosas como las que les mostraré en el siguiente video: Métodos Genéricos y Métodos de Extensión.

    Observaremos cómo los métodos de extensión nos permiten precisamente extender la funcionalidad de tipos ya definidos sean nativos o creados por algún desarrollador, sin necesidad de crear jerarquías de herencia o tipos anidados. Alguna vez quiso un método para convertir la inicial de una palabra a mayúscula, bien, con los métodos extendidos podrá lograr algo como:

    var nombre="pedro";
    var nombreInicialMayuscula=nombre.CapitalizeFirstLetter();
    
    // nombreInicialMayuscula="Pedro";

    Por si fuera poco, observaremos como mezclar estas capacidades con métodos genéricos para lograr una flexibilidad total.

    Separe media hora de su tiempo y observe además algunos otros tips mientras desarrollamos el ejemplo que nos ayudará un poco a mejorar la fineza del código que escribimos:

     

     

  • WarNov Developer Evangelist

    Aprende Windows Phone con los Student Partners de Colombia!!

    • 2 Comments

    Una semana de sesiones dirigidas por Marylin Alarcón y Juan Giraldo sobre las principales características y funcionalidades de la plataforma.

    Al finalizar estarás en la capacidad de crear tus aplicaciones, publicarlas y distribuirlas a través de Marketplace y te enteraras de como participar por la oportunidad de ganar un teléfono Windows Phone 7 completamente nuevo para tus desarrollos o para uso personal.

    Sesion 1 - Preparando el terreno:

    Windows Phone 7 como plataforma para desplegar tus soluciones para tus clientes

    URL de Registro: http://bit.ly/WP7S1

    Sesion 2 - Controles, Launchers y Choosers:

    Utilizando el máximo potencial de los controles Silverlight y las características que nos provee WP7 para nuestras aplicaciones.

    URL de Regitro: http://bit.ly/WP7S2

    Sesion 3 - Databinding y servicios web:

    Cómo WP7 nos permite manipular y comunicar datos desde y hacia el dispositivo.

    URL de Registro: http://bit.ly/WP7S3

    Sesion 4 - Haz tu aplicación:

    Tips adicionales para el desarrollo de tus aplicaciones.

    URL de Registro: http://bit.ly/WP7S4

    Puede revisas la lista completa de requerimientos para trabajar con Windows Phone 7 siguiendo este vínculo: http://bit.ly/WP7HyS

    ¡¡No dejes pasar esta oportunidad de capacitación gratuita!!

  • 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

    Estrategias para prevenir rechazos de tu app en el Marketplace de Windows Phone 7

    • 0 Comments

    Abstract:

    Con el pasar del tiempo y las consultas que me han hecho, he recopilado los motivos más frecuentes por los cuales una app de WP7 es rechazada para acceder al Markeplace (mp) después de subirla a través del AppHub. Este post recopila estos motivos y su solución.

    1. Marcas y logos registrados:

    Cuando se usan dentro de la aplicación marcas y logos reconocidos, nos pueden devolver la app para que indiquemos si tenemos permiso para usarlos. Esto se puede indicar en el último paso del proceso de subida de la app, en el espacio que dice Test Notes:

    image

    Estas notas deben ir en inglés y tal como lo recomiendo en el ejemplo, se debe indicar que la empresa dio los permisos adecuados, así como los datos de la persona de contacto que se podría requerir para certificar este permiso.

    2. Uso de GPS

    El uso de GPS como es bien sabido, interviene con la privacidad del usuario, pues se podría comenzar a reportar la ubicación de un usuario sin que este lo haya permitido. Es por esto que si empleamos el api de localización en nuestras apps, debemos proveer claramente un mecanismo para desactivar estas funcionalidades. Además cuando lo hagamos, la aplicación debe seguir funcionando correctamente. Además de esto, se debe proveer una política de empleo de la información de la localización que explique perfectamente al usuario para qué serán usados los datos, de manera que él pueda comprender las implicaciones de autorizar el empleo del GPS en la app. Esta política puede estar incluida en la app, o ser un link a algún recurso externo. Acá les escribo un ejemplo de política:

    La aplicación xxxxx ofrece servicios avanzados de búsqueda, basados en la ubicación del usuario. Los datos de ubicación del usuario son usados exclusivamente para este fin y nunca son compartidos. Sin embargo, si el interés del usuario es que esta aplicación no haga uso de los servicios de localización del teléfono, éstos se pueden deshabilitar en el menú de ajustes de la aplicación; en este caso la utilidad de búsqueda por cercanía quedará deshabilitada y la aplicación continuará funcionando correctamente.

    En este caso deberá de existir un menú de ajustes, donde se puedan deshabilitar estas características:

    image

    3. Screenshots

    Los Screenshots preferiblemente (obligación por ser la mejor opción) se han de capturar desde el emulador que tiene una utilidad para tomar estos screenshots.

    Pero con el emulador sucede que a veces puede estar mostrando el framerate de las imágenes que está mostrando. Si capturamos con esta opción habilitada, nuestra app será rechazada, porque estos elementos no pueden aparecer en los screenshots:

    image

    Esta opción por defecto viene habilitada, así que a la hora de hacer la captura la deshabilitamos desde el archivo: App.xaml.cs:

    image

    Basta solo con poner EnableFrameRateCounter en false.

    4. Lenguaje por defecto de la app

    Cuando creamos una app de WP7, el lenguaje por defecto de la misma está establecido en Inglés. Es por esto que cuando la subimos, el App Hub, allí esperan que pongamos una descripción de la App en inglés:

    image

    Es un error frecuente, porque si efectivamente nuestra app está en español, querremos ponerle descripción en español; pero el App Hub solo nos da la opción de inglés. Así que si ponemos la descripción en un idioma distinto al solicitado, nos rechazarán la app. Como lo mencioné es porque no hemos cambiado la opción de idioma neutral. Para lograrlo, vamos a las propiedades del proyecto y escogemos Assembly Information y allí podremos seleccionar el lenguaje neutral personalizado:

    image

    De esta manera cuando subamos la app al AppHub, nos aparecerá en este caso el idioma español, para poner la descripción.

    En situaciones más avanzadas queremos ofrecer nuestra app en varios idiomas. En otro post estaré mostrando cómo se logra tener localización de múltiples lenguajes. Por ahora veamos que si hacemos esto bien, cuando carguemos el xap al AppHub, observaremos que habrá una versión de toda la información que tenemos que suministrar, por cada lenguaje que hayamos incluido:

    image

    Como observamos en este caso, está seleccionado el idioma inglés y en este ponemos la información requerida. Luego seleccionamos español y procedemos escribiendo la información en el lenguaje adecuado. Recordemos que esto solo aplica cuando intencionalmente escogemos tener dos o más lenguajes para nuestras apps.

    Sabiendo que pueden surgir nuevos motivos de rechazo frecuentes, stay tunned, que aquí estaré citándolos y ofreciendo las posibles soluciones.

  • 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

    Windows Phone 7 Applications: Tipos de Distribución.

    • 0 Comments

    Abstract:

    Las aplicaciones de Windows Phone 7 siguen un modelo de distribución a través de un Marketplace centralizado en Internet. Este modelo que es bastante popular para las aplicaciones móviles de la mayoría de fabricantes sin embargo ofrece algunos inconvenientes para distribuir aplicaciones a grupos especiales; por ejemplo Beta Testers, o empleados de una compañía. La última actualización del APP Hub de Windows Phone 7 permite dar solución a este problema a través de sus dos nuevos tipos de distribución de aplicaciones: “Targeted” y “Beta”.

    Contenido:

    Hasta hace un tiempo, la única forma de publicar en el App Hub de WP7 era a través del mecanismo de distribución pública según el cual, al estar una aplicación en el Marketplace, esta se hace visible para todo el público sin que podamos por ejemplo elegir quienes sí la pueden comprar/descargar y sin que se puedan poner restricciones de tiempo para su uso. Aunque esto es adecuado para la gran mayoría de aplicaciones, qué pasa si como publicadores queremos poner nuestra app en Beta para que solo unos cuantos la prueben? O tal vez creamos una aplicación para una empresa que obviamente requiere que solo esté disponible para ciertos empleados?

    Para resolver estas situaciones, nuestra nueva versión del App Hub incluye dos nuevos tipos de publicación aparte del tipo “public”. Ahora tenemos “Targeted” y “Beta”.

    Targeted:

    Es el tipo de publicación ideal para empresas. En este, la aplicación se sube como se haría tradicionalmente al App Hub (incluyendo todos los procesos de validación tradicionales), pero manteniéndola oculta en el Marketplace, de manera que sólo los usuarios con el link de dicha aplicación la pueden descargar e instalar. Al finalizar el procedimiento de envío de aplicación al App Hub, habrá la posibilidad de escoger cómo y cuándo hacer pública la aplicación después de que esta pase el proceso de certificación, entonces escogeremos “As son as it’s certified, but make it hidden”. De tal manera que apenas la app pasa la certificación queda lista para ser descargada, pero invisible para quienes no tengan el link. Sin embargo, cuando uno lo desea, puede hacerla visible, convirtiéndola en una aplicación pública tradicional.

    clip_image002

    Luego de ser publicada se recibirá un correo con el link a la aplicación. Este es el que se deberá remitir a la audiencia objetivo. Cualquier persona con el link puede descargar la aplicación, hay que tenerlo en cuenta. No hay límite de personas para descargar la aplicación. Contrario a las publicaciones estándar, no se puede hacer actualización de la aplicación aún. Así que hay que hacer un re-envío en caso de una actualización. No se puede establecer un límite en el tiempo en que la aplicación está disponible para la audiencia (en el tipo “beta” sí). Este tipo de publicación también consume créditos de los que se tienen disponibles de acuerdo al plan de publicación adquirido.

    Beta:

    Una versión beta permite exponer al público una aplicación para su evaluación sin que necesariamente esto signifique ponerla en producción. Una de las ventajas obtenidas en este tipo de publicación, es que el proceso de certificación es automático, de manera que la aplicación queda disponible mucho más rápido. Además es un proceso gratuito que no consume créditos del plan. La aplicación solo es accesible a través de un link (oculta del marketplace) y se posee un completo control sobre quiénes pueden probar la beta, dado que se especifica el Windows Live Id del beta tester, quien descarga e instala la aplicación a través de los mecanismos tradicionales en dispositivos comerciales sin necesidad de estar registrados como developers. Eso sí, las aplicaciones en Beta expiran automáticamente a los 90 días después de su publicación. Lo que quiere decir que el link no funcionará más y que la aplicación no se podrá ejecutar, de tal forma que solo aparecerán dos opciones: desinstalar o dar feedback. Se pueden subir tantas aplicaciones en beta, como queramos, pero siempre las versiones Beta van gratuitas.

    Cuando estemos publicando nuestra app, podremos escoger si queremos que suba en beta privada:

    clip_image004

    De la misma manera, se pueden escribir los Windows Live ID de los testers:

    clip_image006

    Como se aprecia, tenemos hasta un máximo de 100 testers por aplicación en la lista. Esta lista se puede modificar cuando se desee durante los 90 días posteriores (para ningún efecto este tiempo es modificable) a la publicación exitosa de la aplicación. Luego de ejecutar este proceso, y de ser publicada la aplicación, se recibe un correo con la dirección de la misma, para distribuir entre los beta testers. Si el Live Id de la persona que intenta descargar la aplicación no está en el listado consignado anteriormente, dicha persona no podrá acceder a la aplicación.

    A diferencia del modelo “targeted”. Las aplicaciones en Beta no se pueden hacer públicas. Se necesita re-enviarlas.

    Conclusión:

    Vimos que el App Hub de Windows Phone 7 ha evolucionado permitir nuevos modelos de despliegue de aplicaciones orientado a empresas y a “Beta Testers” que facilitan enormemente el ciclo de vida de la aplicación y el alcanzar públicos especiales. Cosa que no se podía con el método de publicación tradicional.

  • 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

    Could not load file or assembly 'Microsoft.WindowsAzure.StorageClient, Version=1.0.0.0

    • 0 Comments

    Si recientemente ha migrado a una nueva versión de Azure, este es un claro síntoma de error de migración desde la versión 1.2 de las herramientas y SDK de Windows Azure a la versión 1.3.

    Indica obviamente que la referencia a StorageClient.dll v1.0.0.0 no se encuentra y el proyecto no compile. Esto pasa porque la versión 1.3 viene con una versión más avanzada del API de acceso al storage. Así que solo basta con eliminarla y buscar la nueva que es la v1.1.0.0. Hágalo sin temor; no va a dejar de funcionar nada. Lo único que trae la nueva versión son mejoras y soluciones a bugs de antes. No se eliminaron funcionalidades ni cosas por el estilo.

    clip_image002

    Puede ver los cambios específicos entre ambas versiones en este post.

  • WarNov Developer Evangelist

    Imágenes Link sin Borde Alrededor

    • 0 Comments

    Añadiendo un widget de twitter a mi blog, observé lo siguiente:

    image

    Como observan, se le pinta el borde azul típico de los hyperlinks. Cosa bastante molesta, más aún cuando la gente ya sabe que eso es un link.

    Lo que yo quería era algo así:

    image

    Después de investigar solo un poco, encontré una sencilla solución:

    Solo hay que agregar

    BORDER=0

    al tag

    <IMG ..>

    Así pues un ejemplo completo sería:

    <A HREF="http://warnov.com/dblog/"><IMG SRC="blog.gif"
    BORDER=0 HEIGHT=33 WIDTH=82 ALT="Visita mi Blog"></A>


  • WarNov Developer Evangelist

    SQL Azure: Index was outside the bounds of the array

    • 1 Comments

    Dice el corresponsal, que trabajando con SQL Server Management Studio conectándose a SQL Azure, luego de estar conectado y ejecutar algunas consultas sin problemas, empieza a experimentar comportamientos erráticos, que no le permiten borrar objetos de SQL Azure ni tampoco obtener el script de creación de los mismos, obteniendo siempre el mensaje de error: Index was outside the bounds of the array

    He de decirles, que esto sucede dado que desde el último cambio grande en la estructura de SQL Azure en Julio del año pasado, es necesario acceder a SQL Azure usando la versión SQL Server 2008 R2 SP1 . Que ya está preparada para los cambios que hubo en SQL Azure.

    El número de versión de SSMS con el que deben quedar, es 10.50.2500 a hoy, febrero 11 de 2012, para poder acceder correctamente a SQL Azure. Esto debería ser suficiente para evitar esos comportamientos “erráticos”.

  • WarNov Developer Evangelist

    Codificando N Veces más rápido con Visual Studio

    • 9 Comments

    Video ultra rápido mostrándonos un tip súper cool de Visual Studio 2010. Say no more.

  • WarNov Developer Evangelist

    Programando para Office 2010 usando WPF y Visual Studio 2010

    • 2 Comments

    En este video, observaremos la manera de crear un panel para usar dentro de Word, que contendrá fragmentos de texto a los que luego de hacerles doble click podremos insertar dentro del documento a través de Visual Studio Tools for Office (VSTO)

    El panel fue diseñado usando Blend 3 y aprovechando las características de DataBound de WPF. Se aprovecha la DLL WindowsFormsIntegration para obtener un objeto de tipo ElementHost que permite agregar dentro de Windows Forms tradicional, elementos de WPF. Luego este contenedor se agrega a un UserControl y este UserControl se agrega a Office a través de un Custom Panel.

    El video explica todo el proceso y de aquí se puede descargar la solución finalizada:

     

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

Page 5 of 13 (324 items) «34567»