October 2nd, 2011 — 11:53pm
Como mencionaba en la anterior entrada, si te gusta la fotografía seguro que te gusta Bing Dynamic Theme. Sin embargo, existe una limitación, solo está disponible para equipos con Windows. Por lo tanto, si usas otro sistema operativo te tienes que aguantar o inventarte algo para usarlo.
Eso es lo último que hice yo. En el fondo, el tema de Bing es un fichero de texto con la extensión theme en el que dentro aparece una URL a la que el ordenador se suscribe y va descargándose las imágenes cuando van siendo publicadas por parte de Microsoft. Por lo tanto, únicamente había que escribir un programa que parseara el feed Rss y se descargara las imágenes.
El Bing Dynamic Theme for Mac (ejecutable) hace precisamente para eso, una utilidad de consola escrita en Mono que te permite desde Mac descargarte todas las imágenes disponibles en el tema y usarlas de fondo de pantalla en tu escritorio.
Si te descargas el ejecutable y lo lanzas desde consola empezará a descargarse una a una las imágenes a la carpeta de imágenes dentro de tu carpeta de usuario del sistema operativo. Las imágenes tienen un cierto tamaño por lo que tardarán en descargarse un rato las más de 70 imágenes que hay ahora publicadas en el feed.

Luego solo tendrás que seleccionar la carpeta en el gestor de fondos de escritorio de Mac para que use esos fondos de pantalla y los vaya rotando según el tiempo establecido.

Si no quieres perderte las nuevas imágenes que van añadiendo puedes consultar el blog de Rob Margel y ejecutar la aplicación cuando anuncie nuevos temas. La aplicación únicamente se descargará los nuevos temas publicados. Otra opción es añadir una tarea a cron para que ejecute la aplicación cada quince días y así te olvidas de ello.
Ahora solo queda disfrutar de vuestros nuevos fondos de pantalla.
Comment » | C#, Microsoft, Programación
July 27th, 2011 — 12:23am
Es posible que en alguna de las aplicaciones que desarrolles para Windows Phone 7 tengas que modificar la navegación inicial dependiendo de algún parámetro; por ejemplo, algo común es que si el usuario no ha iniciado sesión se le envíe a la página de login y si ya lo ha hecho, se envíe directamente a la página principal de la aplicación.
Buscando la mejor forma de hacerlo, o mejor dicho, la que funcionara ya que la aproximación que estaba realizando no era válida, encontré el post de Peter Torr que propone dos soluciones para controlar esta situación.
Cualquiera de los dos métodos funciona para lograr lo que se desea; sin embargo, es importante tener en cuanta algunos detalles:
-
Si posteriormente quieres emplear el NavigationService para moverte entre páginas tienes que tener en cuenta que ese código se ejecutará provocándote errores. Si solo deseas que eso se evalúe la primera vez, lo mejor es que te desuscribas del evento para evitar que vuelva a ser llamado cada vez que hagas uso de los servicios de navegación.
-
Si estás con Windows Phone 7, la vista de login se quedará en el stack de navegación. Si el usuario pulsa el botón atrás le volverá a aparecer dicha vista. Por lo tanto, es recomendable utilizar la aproximación de un elemento que se coloque por encima de la vista principal y controlar su visibilidad.
- Si por el contrario, estás con Windows Phone 7.1, parece que Microsoft ha oído las quejas de la gente por los foros añadiendo la posibilidad de eliminar una entrada del stack de navegación con el método NavigationService.RemoveBackEntry
Así que tened en cuenta estas situaciones para evitar modificar el código que ya estaba escrito y funcionando.
Comment » | Microsoft, Programación, Silverlight, Windows Phone 7
January 25th, 2011 — 1:45am
Imagina que estás desarrollando un proyecto basado en pruebas y necesitas acceder a elementos internos de otro ensamblado, ¿cómo lo haces?
Una posibilidad es declarar todo aquello a lo que necesitas acceder de caracter público y así ya tienes acceso desde tu ensamblado de pruebas; sin embargo, hay un problema ya que no solo puedes acceder tú sino que estás dejándolo visible a cualquier otro ensamblado.
La otra es emplear el atributo InternalsVisibleTo definido en el namespace System.Runtime.CompilerServices. Cuando compilamos uno de nuestros ensamblados es posiblie definir qué otros ensamblados son considerados amigos dándole permiso para acceder a todos los miembros internos que se encuentren definidos de la misma forma que si se encontrara dentro del mismo namespace.
Su funcionamiento es sencillo, únicamente tendremos que añadir en la cabecera de nuestra clase el siguiente código:
[assembly: InternalsVisibleTo("Otro.Ensamblado.Tests")]
y podremos trabajar desde el ensamblado “Otro.Ensamblado.Tests” con los métodos y propiedades declaradas como internas sin tener que cambiarles su visibilidad a públicas.
Comment » | C#, Programación