Problemas de estilo TFS 2012 Web Access

Recientemente me instalé el Team Foundation Server en mi máquina de casa donde puedo tenerlo para realizar mis pruebas y experimentos.

Todo va perfectamente salvo un pequeño detalle: al tratar de acceder a la interfaz web me encuentro con algo completamente carente de estilos.

image

Como podéis ver, abriendo la herramienta de desarrollo web que viene con IE se puede ver un error a la hora de cargar las hojas de estilo.

Un poco de búsqueda por la web me llevó a este hilo donde se menciona una solución que, en mi caso funcionó perfectamente.

El problema viene, aparentemente, al intentar cargar contenido estático. Así que, de cabeza al panel de control, activar o desactivar características de windows, internet information services habilitamos la característica correspondiente.

image

Y… ¡Ya está! Mi Team Foundation Server 2010 web access completamente operativo.

image

Windows 8: Terminando Apps.

Un detalle interesante sobre el ciclo de vida de las aplicaciones Windows 8 (del que ya hablé brevemente aquí) es que al estado “Terminado” puede llegarse por varias razones.

Un paseo por la vida de…

Ya hemos visto en otras ocasiones el ciclo de vida de una aplicación del App. Store.

image_thumb[1]

La aplicación del App. Store que se encuentra en pantalla es aquella que se está llevando el tiempo de procesador (no es cierto del todo, pero a efectos de esta entrada, nos sirve la simplificación). Si el usuario cambia de aplicación, la que estaba en ejecución pasa a estado “Suspendida” y la que el usuario acaba de arrancar pasa a estado “En Ejecución”.

Sin embargo, no es lo mismo que una aplicación pase al estado “Terminada” porque el S.O. reclame los recursos que esta ocupa mientras está suspendida (e.d. reclame la memoria ocupada) que una aplicación pase al estado “Terminada” porque el usuario decida finalizarala (ya sea utilizando Ctrl Alt+F4 o arrastrándola a la parte inferior de la pantalla). En el segundo caso no queda rastro de la aplicación en la interfaz de usuario, en el primer caso todavía aparece la aplicación en la zona izquierda de la pantalla, tal y como estaría si la aplicación siguiera suspendida y no terminada (y si lo piensas es normal, el usuario no tienen por qué saber que el S.O. ha terminado la aplicación y, si esta desaparece sin motivo aparente de la parte izquierda de la pantalla, la sensación del usuario sería que algo no marcha del todo bien en su dispositivo).

I’ll be back.

Pues sí, tal y como dijo Terminator: “volveré”, pero no de cualquier manera. Cuando una aplicación pasa del estado “suspendida” al estado “running” debería de ser capaz de restaurar el estado en que se encontraba previamente (supongo que aquí no tendremos discusión). Cuando una aplicación es terminada por el usuario, no existe motivo aparente para querer volver al mismo estado donde la aplicación se encontraba antes de ser finalizada (bueno, salvo que tu aplicación ofrezca esta característica al usuario, claro está). Pero. ¿Qué pasa cuando una aplicación suspendida es finalizada por el SO y posteriormente vuelta a poner en marcha por el usuario?

Pues bien, seamos coherentes con el comportamiento del SO. Si Windows 8 pretende que todo siga como si la aplicación nunca hubiera sido terminada (al fin y al cabo, su tile sigue disponible en la zona izquierda de la pantalla), nuestra aplicación debería de ser capaz de restaurar el estado como si volviera de “suspendida” en vez de “terminada”.

¿Pero, es posible determinar durante el arranque si una aplicación fue terminada por el SO o por el usuario?

Pues sí, y es bastante fácil.

   1: if (args.PreviousExecutionState == ApplicationExecutionState.ClosedByUser)

   2: {

   3:     // Comprobar aquí si el usuario quiere que se recuerde su estado anterior de navegación    

   4:     // Y si así es, entonces cargar dicho estado.

   5: }

En definitiva. Parte de la filosofía que se esconde tras las aplicaciones disponibles en la nueva Tienda de Windows 8 es proporcionar coherencia en la experiencia de usuario en su nuevo dispositivo. Es interesante estar pendiente de estos pequeños detalles para proporcionar dicho grado de coherencia.

Depurando una aplicación Windows 8

Llevaba ya mucho tiempo sin escribir ninguna entrada, así que este es un buen momento para retomar el hábito.

Recientemente he estado revisando el desarrollo de aplicaciones Windows 8 (utilizando WinRT).

Existen algunas semejanzas con las experiencias previas en Windows Phone 7.5, pero no nos engañemos, son semejanzas superficiales. Sin embargo, sí es cierto que el ciclo de vida de las Aplicaciones de Tienda de Windows 8 (madre mía, menudo nombre) es prácticamente idéntico al ciclo de vida de aplicaciones Windows Phone.

El Ciclo de Vida

Nos encontramos con el siguiente conjunto de estados.

image

Como podéis ver, prácticamente idéntico al ciclo de vida de aplicaciones Windows Phone 7.5

De nuevo cabe destacar que, una vez una aplicación ha sido suspendida, no hay garantía de que vuelva a pasar a “en ejecución” ya que el S.O. puede decidir descargarla de memoria en cualquier momento.

Depurando los cambios de estado

Una de las las facilidades que se encuentra con Visual Studio 2012 a la hora de depurar aplicaciones Windows 8 es la posibilidad de mandar mensajes a la aplicación que nos servirán para depurarla cuando lleguen los cambios de estado. ¿De qué forma? Pues nada más sencillo.

image

A un simple click de ratón tenemos la posibilidad de enviar nuestra aplicación de el estado “en ejecución” a “suspendida”, de “suspendida” de vuelta a “en ejecución” y, por último ya sea desde el estado “en ejecución” o “suspendida” a “terminada”.

Actualización: ¿Y dónde puedo encontrar esta ayuda para la depuración? Pues simplemente hay que activar la barra de herramientas “Ubicación de Depuración” o “Debug Location”.

Magnífica ayuda para comprobar que nuestra aplicación es capaz de guardar el estado y recuperarlo correctamente.