Materiales de mi charla en Málaga Dnug

Lo primero me gustaría agradecer enormemente a la gente del grupo de usuario de Málaga Dnug, por darme la oportunidad de compartir mis conocimientos con la gente y sobre todo a Pablo Núñez por llevarme, traerme y compartir una agradable tarde-noche de cervezas y raciones….

El código de ejemplo que adjunto en este post no es el que use en la charla, sino lo que tenia en un principio preparado para hacer durante la misma. El problema es que como ya sabéis todos el tiempo se va volando y al final me tuve que conformar con hacer pequeños ejemplos de cada una de las cosas que iba comentando.

Bueno, pues lo dicho, espero que la charla gustara a todo el mundo que asistió y hasta la próxima..

Malaga DNug

 

PPT y código de ejemplo:

Desde el Prototipado al Marketplace de una aplicación Windows Phone 7.5

Tengo la intención de realizar, mejor dicho ya estoy en ello una serie de post, sobre la realización desde 0 de una aplicación completa y funcional del tipo TODO List.

Quisiera incluir obviamente código fuente de ejemplo y me gustaría mucho e intentare hacerlo, realizar algún que otro Screencast sobre alguno de los temas a tratar.

Básicamente el índice de temas a tratar punto por punto es el siguiente:

  1. Sketchflow, nociones básicas de prototipado de proyectos.
  2. Mini, mini introducción a M-V-VM
  3. Acceso a Servicios externos. Azure
  4. Persistiendo la información en el Isolated Storage.
  5. Poniendo información en un control Panorama.
  6. Creación dinámica de hojas en el control Pivot.
  7. Accediendo a la información de la agenda y contactos.
  8. Notificaciones.
  9. Jugando con los sensores.
  10. Integración con Social Media.
  11. Ganando un poco de pasta con el Microsoft Advertising SDK
  12. Procesos de certificación en el MarketPlace.
  13. Y ahora que?. Seguir las estadísticas de la aplicación.

La verdad es que me reservo el derecho a cambiar tanto el orden como el contenido de este índice, tanto añadiendo, como quitando artículos.

Espero que os guste y os sirva.

Charla en Málaga Dnug sobre Windows Phone 7.5 “Mango”

dnug

 

Tengo la gran suerte de que los chicos del club Málaga Dnug me hayan invitado a realizar el próximo día 21 de Septiembre en Málaga, una charla sobre las nuevas posibilidades y las nuevas características que incorpora la versión 7.5 de Windows Phone.

En esta charla hablaremos de Cloud, bases de datos locales en SQL CE, acceso a contactos, nuevas opciones de notificaciones Push, etc…

Lo dicho, os espero el día 21 sobre las 18:30h para estar un par de horas, o lo que el cuerpo aguante compartiendo charla sobre este gran dispositivo.

Aquí tenéis el link con el registro.

https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032493810&Culture=es-ES

Nos vemos.

 

Mango

Mejoras de Rendimiento en entornos SQL CE – I

Una de las cosas que debemos de tener muy en cuenta a la hora de trabajar con dispositivos móviles, es el rendimiento. Ya sabemos que pronto saldrán, si es que no lo han echo ya móviles con doble procesador y demás, pero no dejamos de necesitar controlar mas nuestro entorno en un dispositivo móvil que en un equipo de sobremesa.

Últimamente a nadie se le escapa que cualquier desarrollador en entornos de escritorio, sencillos, ha (hemos) dejado un poco de lado esta parte de rendimiento, ordenadores con 8 Gb de Ram, 4 núcleos, etc, etc, hacen que el rendimiento este en tu lista de requisitos bastante alejado de las primeras posiciones.

Como he comentado, nos encontramos con otro tipo de entornos y si queremos hacer buenas aplicaciones empresariales para Windows Phone 7 ya no puede estar el rendimiento al fondo de la lista de requisitos, sino mas bien al contrario, si no es la primera será la segunda.

El uso de SQL CE como base de datos relacional en una de nuestras aplicaciones hace que tengamos a parte un elemento mas de saturación de rendimiento, nuestra aplicación y los propios procesos internos que debe de hacer SQL CE. Pero es bastante sencillo seguir una serie de consejos que aplicándolos nos ahorran bastante tiempo de proceso.

Inserción de Datos.

Nuestro amigo el Insert. Esto que voy a comentar es mas de sentido común que de forma de hacerlo especial para ganar rendimiento.

Pongamos por ejemplo el mapeo de esta sencilla tabla.

[Table]

public class Tabla1

{

    [Column(IsPrimaryKey=true, IsDbGenerated=true)]

    public int ID { get; set; }

 

    [Column]

    public string Nombre { get; set; }

 

    [Column]

    public string Apellidos { get; set; }

 

    [Column]

    public string Email { get; set; }

}

Como digo, una sencilla tabla con 4 campos y clave primaria entera auto incremental.

Si realizamos la inserción por ejemplo de 1000 filas, podemos hacerlo básicamente de 3 formas:

Utilizando InsertOnSubmit y seguidamente realizar un SubmitChanges

Tabla1 Dato;

using (ContextoDatos Contexto = new ContextoDatos(CadenadeConexion))

{

    for (int i = 0; i < int.Parse(NRegistros.Text); i++)

    {

        Dato = new Tabla1();

        Dato.Nombre = "Nombre " + i.ToString();

        Dato.Apellidos = "Apellidos " + i.ToString();

        Dato.Email = "Email" + i.ToString() + "@live" + i.ToString() + ".com";

 

        Contexto.Personas1.InsertOnSubmit(Dato);

        Contexto.SubmitChanges();

    }

}

Utilizando también el InsertOnSubmit pero dejar el SubmitChanges para el final

Tabla1 Dato;

using (ContextoDatos Contexto = new ContextoDatos(CadenadeConexion))

{

    for (int i = 0; i < int.Parse(NRegistros.Text); i++)

    {

        Dato = new Tabla1();

        Dato.Nombre = "Nombre " + i.ToString();

        Dato.Apellidos = "Apellidos " + i.ToString();

        Dato.Email = "Email" + i.ToString() + "@live" + i.ToString() + ".com";

 

        Contexto.Personas1.InsertOnSubmit(Dato);

    }

 

    Contexto.SubmitChanges();

}

Usar un elemento que sea IEnumerable, utilizar InsertAllOnSubmit y realizar un SubmitChanges.

List<Tabla1> Datos = new List<Tabla1>();

 

Tabla1 Dato;

using (ContextoDatos Contexto = new ContextoDatos(CadenadeConexion))

{

    for (int i = 0; i < int.Parse(NRegistros.Text); i++)

    {

        Dato = new Tabla1();

        Dato.Nombre = "Nombre " + i.ToString();

        Dato.Apellidos = "Apellidos " + i.ToString();

        Dato.Email = "Email" + i.ToString() + "@live" + i.ToString() + ".com";

 

        Datos.Add(Dato);

    }

 

    Contexto.Personas1.InsertAllOnSubmit(Datos);

    Contexto.SubmitChanges();

}

Como alguna que otra vez he oído decir a alguien, las cosas se pueden hacer mal, o muy mal y en este caso usar el SubmitChanges tras realizar un InsertOnSubmit, es sin lugar a dudas una opción malísima. Obviamente todo depende de que aplicación estemos desarrollando pero, tenemos que tener en cuenta que reflejar físicamente los datos en la base de datos y no mantenerlo en memoria hasta hacer un Submit final, salvo en casos en donde las transacciones de la información sea primordial es totalmente innecesario. Tenemos que tener en cuenta que el móvil solo lo usamos nosotros. 🙂

Insertando como decimos 1000 registros en 5 ocasiones diferentes el tiempo en realizar cada operación a sido el siguiente:

  Opción 1 Opción 2 Opción 3
1ª Inserción 28.294 ms 422 ms 529 ms
2ª Inserción 33.778 ms 399 ms 394 ms
3ª Inserción 27.331 ms 392 ms 381 ms
4ª Inserción 25.930 ms 504 ms 568 ms
5ª Inserción 26.876 ms 380 ms 390 ms

Es decir usar los métodos 2 y 3 apenas varia el rendimiento, pero estos son un 97% mas rápidos que la opción 1. Ahí queda eso.

En el siguiente post, ya veremos que realizando dos o tres toques sutiles en la definición de nuestras bases de datos, también podremos ganar mucho tiempo.

Creación de Prototipos de Proyectos para Windows Phone.

Este post lo escribi originalmente en mi blog personal el dia 08/08/2011

Cada vez que nos sentamos delante de nuestro ordenador, cada vez que hablamos con nuestro grupo de trabajo o con nuestros compañeros, o porque no cuando queremos mostrar ese proyecto tan molón a nuestro gerente, deberíamos de apoyarnos en un prototipo del mismo. Para ello estos recursos son de lo mejor que podemos usar.

 

Lápiz y Papel.

Como muy bien dice mi amigo Yeray, a nosotros los programadores esto del “Pinta y Colorea”, se nos da fatal pero no se porque razón buscamos rápidamente un lápiz y un papel para expresar nuestros esquemas o nuestras pantallas, en vez de ir al ordenador y garabatear algo con el Paint, por ejemplo. En fin para todo aquel que se sienta mas cómodo con un bolígrafo en la mano puede descargarse estas plantillas:

 Windows_Stencil-2

Los utensilios de UI Stencils aun siendo de pago, la verdad es que merece y mucho la pena disponer de estas plantillas en acero inoxidable para poder dibujar sobre sus blocs o sobre sus pantallas adhesivas, muy pero que muy recomendable para hacer cosas profesionales.

En la web de Jakub Florczyk, podemos encontrar un Pdf con la plantilla de 4 Windows Phone a tamaño natural, al menos tienen el tamaño de mi HTC 7 Trophy, para realizar nuestros prototipos. Descárgalo desde aquí

Algo parecido podemos encontrar en la web de Michael Dorian, en donde en esta ocasión disponemos de una plantilla de 3 pantallas y el espacio necesario para catalogar nuestros prototipos, como lugar donde escribir el proyecto, la pagina, etc.. Se puede descargar directamente desde aquí. Dorian

 

Fuente original para Windows.

Mas adelante hablaremos de recursos ya para aplicaciones de software, pero lo mas importante es disponer en nuestro sistema de la fuente utilizada en la UI de Windows Phone, en este caso la fuente Segoe. Se dispone de dos ramas, por un lado la fuente Segoe UI, que viene preinstalada con Windows y por otro lado la fuente Segoe WP, que es una variante de la anterior y es realmente la que el interface Metro utiliza. Viene incluida en las Tools de Windows Phone para Visual Studio, pero se puede descargar desde aquí.

 

Plantillas para aplicaciones genéricas.

Es fácil encontrar por la red innumerables plantillas para diferentes aplicaciones, pero yo estas para Visio, Powerpoint y Photoshop.

Por un lado las plantillas para Microsoft Visio de Griffin Interactive, en donde se incluyen plantillas para proyectos tanto con Pivot como con Panorama Template, las cuales se pueden descargar desde aquí.

Para PowerPoint disponemos de las plantillas de Think first code later, las cuales podemos descargar para realizar nuestras presentaciones con un fondo como si de una pantalla de Windows Phone se tratara, disponibles aquí. O el tema de Vangos Pterneas, el cual nos permite utilizar en nuestras propias presentaciones y apoyarnos en cualquiera de sus slides, esta presentación esta disponible a través de SlideShare desde aquí.

Y finalmente para Photoshop, existen múltiples recursos, pero uno de los principales y a mi modo de ver el mejor, es el compendio de PSDs del propio equipo de desarrollo de Windows Phone, el cual se puede descargar desde aquí. De nuevo, el amigo Vangos Pterneas, nos regala un par de templates tambien muy interesantes para photoshop, la primera de ellas para pantallas simples tanto en orientación portrait como landscape, descargable desde aquí y otra para pantallas Pivot y Panorama, descargable desde aquí windows-phone-7-panorama Muchas cosas como digo repartidas por la web, pero cabe destacar también estas plantillas para Adobe Illustrator de Clarity Consulting, las cuales se puede descargar desde aquí.

 

Plantillas para aplicaciones de prototipado.

A parte de poder usar aplicaciones de carácter general, para prototipar, podemos usar, obviamente aplicaciones propias para este tema, Aplicaciones de prototipado, existen como todo innumerables pero yo destaco 3, junto con sus correspondientes templates.

Microsoft SketchFlow:

Aplicación de prototipado de Microsoft que viene con la suite Expression, formando parte, como un complemente diría yo de Microsoft Expression Blend, solo disponible con la versión ultimate de Expression Studio (creo). Herramienta bastante buena, sobre todo si manejamos constantemente Expression Blend, muy integrada y bastante completa. Podemos descargarnos los templates para prototipos de aplicaciones en Windows Phone, desde este espacio en Codeplex.

skechflow1skechflow2

Axure RP:

He dicho bien, axure que no azure, es una herramienta de prototipado de todo tipo de aplicaciones, entre ellas como no Windows Phone, para ello podemos descargarnos una serie de templates para tal efecto, creadas por Andrej Skaza, las cuales podemos descargar tanto desde Axureland, aquí, como desde Studio Pesec desde aquí, el cual nos muestra también como podemos montar un ejemplo de web con nuestros prototipos exponerlo al exterior para que nuestro cliente por ejemplo lo pueda ver. Podemos verlo aquí.

Axure

Omnigraffle:

Otra aplicación de prototipado general, en este caso para MAC, muy utilizada por el mundo iOS pero que gracias a Adrian Mendoza y a su Blog Marlin Mobile, podemos descargarnos desde aquí unos templates para desarrollar prototipos de aplicaciones Windows Phone. Omni A parte de todo esto, existen como no templates directos para desarrollar aplicaciones desde Visual Studio, una de las mas completas es el proyecto “Windows Phone 7 Design Templates” alojado aquí en Codeplex. WP7DesignTempltes