Posts destacados

Nuevo libro de desarrollo para Windows 8 y Windows Phone 8Nuevo libro de desarrollo para Windows 8 y Windows... Desde hace tiempo, estoy un poco alejado del mundanal ruido de blogs, twitter y demás. La razón no ha sido otra que hacer posible un deseo que tenia desde hace mucho tiempo,...

Read more

Preparándonos para el #MegathonW8 y II – Instalando las herramientas de desarrollo.Preparándonos para el #MegathonW8 y II –... Una vez que ya tenemos nuestro flamante Windows 8 instalado en nuestro disco duro virtual, según los pasos del primer capitulo de esta guía. Lo que debemos de hacer es instalarnos...

Read more

Preparándonos para el #MegathonW8 y I Instalación de Windows 8 en un VHDPreparándonos para el #MegathonW8 y I Instalación... Este es el primer post de una serie de ellos cuya intención es facilitar a los asistentes al megathon que se celebrara en breve, las instrucciones necesarias para conocer...

Read more

Beca para el Megathon Windows 8Beca para el Megathon Windows 8 Como seguramente todos ya sabréis, los próximos días 7, 8 y 9 de Septiembre se celebrara en varias ciudades españolas al mismo tiempo un hackathon sobre desarrollo para...

Read more

[OFFTOPIC] Oferta de trabajo.[OFFTOPIC] Oferta de trabajo. Madre mía, hasta ahora realmente no me había dado cuenta de lo abandonado que tengo mi blog, como pasa el tiempo de rápido por dios… Demasiadas cosas a hacer tanto dentro...

Read more

Windows Phone y .NET Rss

Mejoras de Rendimiento en entornos SQL CE – I

Posteado el : 07-09-2011 | Por : tecnologia | En : Windows Phone 7

1

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.

Share

Creación de prototipos de proyectos para Windows Phone.

Posteado el : 08-08-2011 | Por : tecnologia | En : Windows Phone 7

0

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

Share

Streaming de audio bajo HTML5

Posteado el : 04-08-2011 | Por : tecnologia | En : Windows Phone 7

1

Todos sabemos, y si no ya estoy yo aquí para contarlo, que Windows Phone 7 en su versión 7.5 “Mango” incorpora IE9 como navegador, lo que significa que puede reproducir contenido bajo la nueva revisión del lenguaje básico de la red HTML, lo que es lo mismo puede leer contenido en HTML5.

Hasta ahí casi nada nuevo, pero una de las características que incorporará en su versión definitiva y que aun no incorporaba en la primera beta de “Mango” es la posibilidad de escuchar streaming de audio en background. Es decir podemos entrar en una pagina que contenga un reproductor de medios, el cual reproduzca un archivo de audio y dejar esa pagina en background, (simplemente pulsando el botón home de nuestro teléfono), o incluso con el teléfono bloqueado, para continuar escuchando el sonido.

Pero lo mas atractivo del asunto es que disponemos de un control típico de reproducción de audio, al pulsa por ejemplo el botón del volumen, con lo que podremos parar, avanzar o continuar reproduciendo este archivo o archivos sin necesidad de volver a entrar en la web que lo está reproduciendo.

Pensando, pensando se abren muchas posibilidades con esto, ¿traerá la versión definitiva de Mango el streaming por Skydrive?, con esto se puede pensar que si no lo trae, es porque no han querido, ya que lo tienen a mano. Y si no es así el crearse un reproductor de nuestra propia biblioteca, no debería ser muy complicado. Ummmm.

Es mas, se rumorea que Pandora, con su servicio de Internet Music, en breve incorporaría toda su web bajo el estándar HTML5, con lo que la reproducción estaría servida.

Y como las imágenes valen mas que mil palabras, aquí os dejo un video con un ejemplo de lo que acabo de contar a partir del minuto 1.

Imagen de previsualización de YouTube

Share

SQL Ce en Windows Phone “Mango”– Creación visual de tablas

Posteado el : 03-08-2011 | Por : tecnologia | En : Windows Phone 7

0

¿Pero como que creación visual de tablas?, si se nos ha dicho que no, que debemos de picarnos todo el mapeo de nuestras bases de datos para trabajar con el DataContext a mano. Quizás alguna que otra herramienta podría ayudarnos pero poca cosa mas, siempre dependiendo de una base de datos ya existente. ¿No es así?

Pues no, os engañaron, bueno vale: nos engañaron.

Vamos a darles a los chicos de desarrollo de Windows Phone, el margen de la duda y pongamos que simplemente no nos lo han contado así para no liarnos y para no pensar que las cosas están un poquito a medias. Si en el fondo son chicos majos.

Share

Materiales del evento: “Windows Phone, a new hope”

Posteado el : 01-08-2011 | Por : tecnologia | En : Windows Phone 7, eventos

1

El pasado martes 26 de Julio, tuve el placer de compartir ponencia con Josué Yeray sobre Windows Phone, en el CIIN de Santander. Aquí os dejo tanto mi presentacion y el código de los ejemplos que casi no me dio tiempo a explicar, (creo que me enrolle demasiado), como el presentacion y el codigo de los ejemplos de Yeray.

P7260028

P7260037

Aprovecho para comentar que no dejeis escapar el Blog de Yeray, ya que es de lo mas interesante en español que uno se puede encontrar con respecto a Windows Phone 7.

Tambien el Blog de Juan Carlos Gonzalez, experto en Sharepoint y responsable de organizar dicho evento para el Ciin.

Nos vemos en el siguiente.

Código y presentación de Josué Yeray:

Mi presentación y los ejemplos:

Share