La llegada de “async / await” a nuestras vidas como desarrolladores ha sido un gran avance, no porque haga cosas excepcionales, sino porque nos permite mantener una limpieza y coherencia en el código que antes no teníamos.
Pero, a veces, las cosas nuevas nos dan algunos dolores de cabeza y, en concreto, en un proyecto de Silverlight 5 me he encontrado con este error “Cannot find all types required by the ‘async’ modifier”.
¿A qué se refiere esto? ¿Por qué si el compilador me reconoce las palabras claves “async” y “await” me devuelve este error? ¿Estaremos usando una versión incorrecta del Framework o tendremos algún conflicto?
Bueno, esto se debe a que no tenemos todo lo necesario instalado en nuestro proyecto que no viene preparado por defecto para hacer uso de “async / await” y deberemos instalar esta librería Microsoft.CompilerServices.AsyncTargetingPack que nos permitirá poder beneficiarnos de las ventajas que nos ofrece “async / await”.
La librería en cuestión podremos buscarla desde el gestor de paquetes de NuGet que viene en Visual Studio o bien podemos serguir estas instrucciones.
Un año más se celebra la Tenerife Lan Party que acoge a jugones, profesionales, frikys y todo tipo de “grupos y subgrupos” relacionados con el mundo tecnológico y, como no podía ser menos, TenerifeDev vuelve a participar en el área empresarial del evento TLP Innova con diversas acciones que este año llegan en forma de ponencias y la co-organización del Primer TLP HackFest.
Hoy pongo fin al parón comunicativo que he tenido en las últimas semanas y lo hago para informaros de que mañana participaré en el Webcast de MSDN “¡Creando sitios poderosos con SharePoint 2013: Así se hicieron iberiansharepointconference.com y compartimoss.com!” con una compañía inmejorable, Alberto Díaz, Adrían Díaz y Teresa Cebrián.
En este Webcast hablaremos sobre sitios de publicación con SharePoint 2013 y, para ello, usaremos como ejemplo la creación del sitio web Iberian SharePoint Conference y de la revista digital en castellano sobre SharePoint CompartiMOSS.
Fecha de inicio: 27/06/2013
Hora de inicio: 15:00 (GMT+01:00) Madrid, París
Fecha de finalización: 27/06/2013
Hora de finalización: 16:30 (GMT+01:00) Madrid, París
Para asistir a la retransmisión, podéis acceder a través de este enlace . Espero que os guste
P.D.: Tenemos un reto/apuesta que es conseguir ser Trending Topic, nos ayudas? Estad atentos mañana al Hashtag en Twitter
AdejeTec consta de varias jornadas de formación relacionada con las TIC y, sobre todo para developers. Su objetivo es que todos los asistentes puedan estar al día en las nuevas tendencias y tecnologías sean del tipo que sean y que consigan sacar el mayor rendimiento y provecho de sus conocimientos. Además, siempre surge la gran verdad oculta de todo evento, el NetWorking ya que permite a desarrolladores de todas las tecnologías relacionarse entre ellos además de con empresarios, instituciones públicas, etc. De esta forma, todos podrán sacar mayor beneficio que el mero aumento de conocimientos.
Este será mi primer evento como Nokia Developer Champion y espero estar a la altura esperada, cosa fácil contando con maestros como Alberto Díaz. Espero veros a todos allí para poder compartir algo de conocimiento y, sobre todo, espero que el taller os anime a desarrollar aplicaciones para Windows Phone y Windows 8.
Hoy ha sido uno de esos días para enmarcar tanto personal como profesionalmente ya que, horas después de conocer que voy a ser el feliz padre de una princesita que viene en camino, me ha llegado un correo de Nokia con la grata noticia de que me han nombrado Nokia Developer Champion. Siendo sincero, estoy que no quepo en mi con tanta buena noticia junta.
Since 2006, Nokia has been selecting individuals from the Nokia developer community to join the Nokia Developer Champions Program – a recognition and reward program that honors a select group of mobile developers from around the world.
We are pleased to inform you that, as one of the outstanding talents in our developer community, you have been nominated as one of a few elite members of the Nokia Developer Champions Program. Congratulations!
¿Qué es el programa Nokia Developer Champions?
Una explicación resumen podría ser la siguiente: Es un programa que Nokia puso en marcha en 2006 para reconocer el trabajo en el desarrollo de aplicaciones móviles y servicio a la comunidad de desarrolladores de Nokia. De esta forma, anualmente se nombran los Nokia Developer Champions que los reconoce como líderes mundiales y tener acceso a servicios exclusivos que les permitan seguir colaborando con la comunidad y mejorar sus aportaciones.
Puedes encontrar toda la información relacionada con el programa en la página oficial
Agradecimientos
Pufff son muchos los que podría y debería nombrar aquí porque todos, absolutamente todos aquellos con los que he trabajado o hablado y discutido sobre tecnología y más concretamente sobre Apps móviles, habéis aportado granitos de arena para que reciba este galardón. Con esto creo que os he nombrado a todos pero, quiero hacer unas cuántas menciones especiales:
Alberto Díaz porque ha estado día tras día incentivándome, guiándome, ayudándome, enseñándome y animándome a dar lo mejor de mi y ser cada día un poco mejor en mi trabajo. Él es mi gran maestro Jedi o el maestro Po de Kung Fu y me ha dejado jugar con todas las nuevas tecnologías en cuanto estuvieran posibles. WIndows 8, Windows Phone, MVC, SharePoint, Azure,… me ha enseñado de todo.
Josue Yeray porque es un tío grande y de él he aprendido a trabajar intentando ser realmente bueno, siguiendo los patrones, haciendo código bueno. Y porque siempre tiene un hueco para ayudar con una frase de ánimo y una gran sonrisa que te hacen disfrutar de haber contactado con él.
Jose Fortes y David Rodríguez que junto a Alberto y yo formamos TenerifeDev porque me han dado la oportunidad de participar ayudando a la comunidad de desarrolladores en todo lo que podamos y porque cada vez que montamos un evento, una conferencia o charla, unos talleres o simplemente nos reunimos, pasamos una momentos magníficos en los que compartimos impresiones, nos ponemos al día en tecnología y compartimos unas cervezas entre risas y arreglando el mundo.
Óscar Gutiérrez que me ha dado la posibilidad de entrar en este grupo y porque cada día se preocupa por ayudar con lo que pueda a los desarrolladores de Apps de Windows Phone en España a llevar sus aplicaciones más allá.
A General de Software porque hemos sido una familia estos años y me han permitido crecer como profesional.
A mi mujer que me aguanta cada día, me deja trabajar hasta las tantas sin rechistar y que cuida de nuestra pequeña princesa en su vientre mientras yo paso las horas pegado al teclado. A ti un gran beso por ser la mejor.
Como ya comenté en mi anterior artículo sobre cómo establecer la SplashScreen en una App de Windows Phone, ésta no deja de ser una imagen que debemos personalizar que indica al usuario que la aplicación se está abriendo pero, ¿qué ocurre si nuestra aplicación carga demasiados datos al inicio y necesitamos establecer una SplashScreen personalizada para poder indicar al usuario que la carga está en proceso?
Solución
Lo que vamos a hacer es aprovechar el control Popup de Silverlight para mostrarlo sobre la vista principal de la aplicación mientras se realiza la carga de los datos necesarios. Este Popup contendrá como “background” la imagen de la SplashScreen y, además, un texto de carga y la barra de progreso (ProgressBar) que serán los que indiquen al usuario que se está realizando la carga de datos.
Paso 1
Crear un Control de Usuario que llamaremos ExtendedSplashScreenControl al que le quitaremos las dimensiones predefinidas de diseño
Quitar:
1: d:DesignHeight="480" d:DesignWidth="480"
Al Grid principal del Control de Usuario le pondremos como Imagen de fondo la SplashScreen de la aplicación y, dentro del Grid, añadimos un TextBlock y la Barra de progreso de forma que quede así:
En el constructor de la vista principal MainPage.xaml.cs vamos a añadir la apertura del Control de usuario que acabamos de crear. Esto lo podemos hacer instanciando el Popup en una propiedad de la vista principal, asociándole el Control de usuario e indicando que se encuentra abierto.
1:this.popup = new Popup();
2:this.popup.Child = new ExtendedSplashScreenControl();
3:this.popup.IsOpen = true;
4:
5://Start Loading Data here
6: ...
Paso 3
El proceso de carga de datos debería ser una tarea asíncrona por medio del uso de async/await en Windows Phone 8 o mediante BackgroundWorker o Manejadores de eventos en Windows Phone 7. En este caso, el ejemplo lo realizaré con async/await, por lo que creo un método asíncrono que tenga un tiempo de retardo de 5000 ms para que podamos apreciar el efecto y, tras este tiempo, simplemente se modifica la propiedad IsOpen del Popup a false para que se cierre.
1:private async void LoadAsyncData()
2: {
3: await Task.Delay(5000);
4:this.popup.IsOpen = false;
5: }
Resultado
A tener en cuenta
Es necesario que tengáis en cuenta que el ejemplo lo he hecho para la resolución de 480×800, con lo que habrá que hacer modificaciones para que funcione con todas las resoluciones, pero para eso habrá otro artículo ;o)
Descarga de código
Si quieres descargar el código de ejemplo, puedes hacerlo desde este enlace
Ha llegado el momento que muchos desarrolladores y diseñadores web estábamos esperando, WebMatrix 3 ha visto la luz por fin y ya está disponible para su descarga desde la página oficial de WebMatrix o desde Web Platform Installer
El IDE de Microsoft para desarrollo web más popular, que ya nos permitía desplegar sitios de las plataformas más populares DotNetNuke, WordPress, Joomla, Orchard, etc. viene ahora cargado de novedades entre las que cabe destacar la conexión directa con Microsoft Azure y que nos permitirá desplegar hasta 10 sitios gratuitamente en esta plataforma que va creciendo a pasos agigantados y que hace pocos días se convirtió en un nuevo miembro del club de los productos que han generado más de 1 billón de dólares para Microsoft.
Características de WebMatrix 3
Las características más imporyantes de las que hace gala WebMatrix son las siguientes:
Diseñado para los lenguajes más usados: ASP.NET, PHP, Node.js, HTML5, JavaScript, CSS3, etc.
Optimizado para Open Source: Permite instalar aplicaciones web basadas en proyectos Open Source con sólo unos pocos clicks
Ayudante para la Nube: Con WebMatrix 3, publicar las aplicaciones en la nube es tan sencillo como darle al botón de publicar
Diseño para dispositivos móviles: WebMatrix 3 dispone de plantillas para dispositivos móviles
Control de código fuente con Git: Conéctate con GitHub, CodePlex y Team Foundation rápido y fácil para compartir el código con el mundo
Control de código fuente con Team Foundation Service: Conéctate con el mejor servicio de control de código fuente
Edición remota: Edita tus sitios remotamente con sólo conectarte a él
Extensiones de la Comunidad: Encuentra las extensiones que necesites como simulador de iPhone, Power Tools para Node.js, etc.
Empezando con WebMatrix 3
Nada más arrancar WebMatrix 3, nos aparecerá la pantalla de Login de Windows Azure para establecer la conexión y así poder realizar los despliegues de nuestros sitios directamente a la nube
Si nos logueamos, aunque la pantalla de inicio a la que estábamos acostumbrados en WebMatrix 2.0 no cambia mucho, sí que apreciaremos ese cambio cuando accedamos a las opciones que nos aporta.
Mis sitios
En Mis sitios, si nos hemos logueado, podemos ver que WebMatrix nos muestra todos los sitios, locales, remotos y en la nube a los que tenemos acceso e, incluso si tenemos varias cuentas de Windows Azure como es mi caso, podemos filtrar los sitios desplegados en cada una de ellas.
Nuevo sitio
Al crear un nuevo sitio, tenemos dos opciones, crear un sitio en blanco o partir de una plantilla de proyecto – instaladas o buscarlas en la galería web – de las más de 100 disponibles entre las que se encuentran algunas tan populares como DotNetNuke, WordPress, Joomla, Umbraco, Orchard, etc.
Abrir
La opción “Abrir” nos permitirá acceder a la sección que queramos, conectarnos al TFS, a un sitio remoto, acceder a las carpetas locales, etc.
¡A diseñar y desarrollar sitios!
En cuanto al IDE en sí a la hora de desarrollar se pueden apreciar pocos cambios a simple vista, aunque puedo asegurar que el rendimiento de WebMatrix ha mejorado muchísimo a la hora de cargar los sitios y mientras se desarrolla.
Ahora ya sólo te queda empezar a programar y desplegar tus sitios gratuitamente en Windows Azure
Cuando diseñamos una página maestra personalizada en SharePoint 2010, generalmente no reparamos en los cuadros de diálogo “dialogs” que se utilizan de forma muy común en prácticamente todos los elementos de SharePoint. Esto provoca que a la hora de mostrarse uno de estos cuadros de diálogo, aparezcan elementos como la cabecera o el menú vertical del panel lateral.
Solución
La solución es muy sencilla. Todos aquellos elementos HTML que no queramos que salgan en los cuadros de diálogo debemos marcarlos con la clase “s4-notdlg”. Siguendo el ejemplo del problema y suponiendo que ese cabecera está declarada con un div, podemos hacer lo siguiente:
1:<divid="divHeader"class="s4-notdlg">
2: ....
3:</div>
Hecho esto, habremos conseguido que, automáticamente, estos elementos no sean mostrados en los cuadros de diálogo.
Al contrario de lo que ocurría en Windows Phone 7.X donde sólo se disponía de una resolución de pantalla – WVGA (480 x 800) – y, por lo tanto, sólo había que crear una única SplashScreen para nuestras Apps, en Windows Phone 8, Microsoft ha introducido dos nuevas resoluciones de pantalla por lo que se hace necesario crear una SplashScreen para cada una de las diferentes resoluciones, 720p (720 x 1280) y WXGA (768 x 1280).
Windows Phone 7
En Windows Phone 7 basta con sustituir el fichero «SplashScreenImage.jpg«, que viene por defecto por la nueva SplashScreen con las dimensiones WVGA (480 x 800) y que se encuentra en el nodo raíz del proyecto de Windows Phone 7. Hay que prestar especial atención a que el fichero esté incluido como Content en la propiedad «Build Action«.
Windows Phone 8
En Windows Phone 8 se hace necesario que creemos una SplashScreen diferente para cada una de las resoluciones disponibles como se muestra en la tabla siguiente.
Resolución
Dimensiones en px
Nombre del fichero
WVGA
480 x 800
SplashScreenImage.screen-WVGA.jpg
720p
720 x 1280
SplashScreenImage.screen-720p.jpg
WXGA
768 x 1280
SplashScreenImage.screen-WXGA.jpg
Una vez se hayan creado los ficheros, tan sólo hay que desplegarlos en el nodo raíz del proyecto de Windows Phone 8 y, al igual que ocurre en Windows Phone 7, hay que tener especial cuidado con establecer la propiedad «Build Action» con el valor «Content»
XNA Framework
Para poner una SplashScreen a un proyecto XNA no es necesario hacer uso del fichero SplashScreenImage.jpg sino que se debe mostrar una textura al inicio mientras se carga el contenido de la aplicación. Una posible forma óptima de hacerlo es la que nos indican en este artículo de la MSDN.
En el método Initialize():
Llamar a base.Initialize() para crear la propiedad GraphicsDevice
Cargar la textura
Dimensionarla a la resolución y orientación del juego
Establecer que la textura se auto-redimensione con un valor de 2
Usar el formato comprimido DXT
Crear una clase de tipo SpriteBatch
Renderizar la textura
Llamar al método GraphicsDevice.Present()
En el método Update(), cargar el contenido incrementalmente.
En el método Draw(), continuar dibujando la textura de inicio y entonces cambiar a una animación de loading tan pronto como estén cargados los datos.
Ayer tuve la gran oportunidad de ser el speaker del Webcast sobre Windows 8 Store Apps “Creando aplicaciones para Windows Store con XAML:. ¿Qué necesitan saber los Desarrolladores de .Net?”. Este Webcast que tenía que haberse emitido la semana pasada fue aplazado y gracias a eso pude ser designado como el speaker del mismo.
Durante sesión vimos cosas bastante interesantes como el patrón MVVM siguiendo las buenas maneras que Josué Yeray intenta inculcar a los desarrolladores españoles, también hablamos de cómo consumir y guardar datos, localización de las aplicaciones para tener alcance mundial con ellas, el uso de los nuevos controles XAML que nos permiten crear aplicaciones ricas, etc. Todo ello supuso un repaso completo pero superficial a todo lo que implica el desarrollo de Apps para Windows 8 y sólo ahondamos en cómo crear el patrón MVVM para nuestras aplicaciones e incidí que esto es particularmente importante si queremos compartir código entre Apps de Windows 8, Windows Phone 8 y otras plataformas, ya que tenemos la posibilidad de implementar el patrón en una Portable Class Library que podremos referenciar desde nuestros proyectos.
Como todo evento que se precie en el que se muestran ejemplos y código… no podía faltar el “efecto demo” que me absorbió durante unos minutos, aunque en este caso, se debía a que Live Meeting en Windows 8 tiene un pequeño problema a la hora de compartir el escritorio, por lo que hay que instalar un pequeño parche que no tenía en ese momento. Así que al final, acabé en “modo pulpo” como lo bautizó Alberto Díaz que me cedió su portátil para poder realizar las demos.
Para todos aquellos que deseen acceder a los materiales –grabación, presentación HF y ejemplos– os dejo este enlace desde donde os lo podréis descargar y empezar a programar vuestras Apps para Windows Store.
También podéis acceder a los materiales (excepto los ejemplos) desde la dirección del webcast