El Bruno

Blog dedicado a las experiencias del desarrollo con tecnologías Microsoft.

octubre 2007 - Posts

[VS2005] Sandcastle - October 2007 Community Technology Preview (CTP)

 

Buenas

SandCastle sigue evolucionando, y este mes tenemos un nuevo CTP que no arregla todos los bugs que posee presenta las siguientes novedades:

  • Reflection data files
    The reflection files (generated from .net framework 3.5, vs2005 style) are included in the installer. After installation, they can be found under “%DxRoot%\Data\reflection”. In build_sandcastle.bat and build.proj, we have commented out the call to fxReflection.proj.
  • Conceptual example
    A conceptual example is located at “DxRoot\Examples\conceptual”. To build it, please run the following command line commands.
    Cd c:\program files\sandcastle\examples\conceptual
    Build_conceptual.bat
  • Conceptual configs
    conceptual.config is added for conceptual build in each presentation style. The path is “Vs2005(/hana/prototype)\configuration\conceptual.config”.
  • VS 2005 style sheet
    The old Whidbey style sheet is now available at “DxRoot\presentation\vs2005\style\whidby\presentation.css”. To use it, please copy it to “DxRoot\presentation\vs2005\style” and overwrite the existing css. Before doing this, you may want to backup that css file first.
  • Conceptual Authoring schemas
    The schema files under “DxRoot\schemas\Authoring” are schemas for conceptual authoring. The root schema is developer.xsd. The conceptual sample xml can be found at “DxRoot\Examples\conceptual\dduexml”.
  • Reflection schema
    The MrefBuilder reflection schema file is available under “DxRoot\schemas\Reflection” folder.
  • Firefox support
    we fixed many bugs to make the produced html files compatible with  the latest firefox browser.

 

Descarga: http://www.microsoft.com/downloads/details.aspx?FamilyId=E82EA71D-DA89-42EE-A715-696E3A4873B2&displaylang=en

Update: si quieres una interfaz gráfica para la generación y configuracion de SandCastle, puedes echarle un vistazo a http://www.codeproject.com/dotnet/SandcastleBuilder.asp

 

Saludos @ La Finca

El Bruno

Posted martes, 30 de octubre de 2007 8:46 by elbruno | 1 comment(s)

Filed under: ,

[TFS] Team System Web Access y el error TF10128

Buenas

si trabajas mucho con Team Foundation Server seguramente el error TF10128 será familiar.

TF10128: The path {0} contains more than the allowed 260 characters. Type or select a shorter path.

La primera vez que me encontré con este error, fué en la configuración de unos builds automáticos que tenían un path extremadamente complejo. Después de esto aprendí la lección y comencé a guiarme por la regla del <= 260.

Nota: en Microsoft Visual Studio 2008 y el nuevo Build Server las cosas han mejorado mucho, con los diferentes Workspaces que podemos configurar para cada proyecto de Build. Mas información aquí.

 

Hace unos días me volví a encontrar con el mismo error pero esta vez utilizando Team System Web Access cuando trataba de acceder a un documento almacenado en un Team Project.

 

Team System Web Access utiliza un path temporal para almacenar en un caché el contenido de los documentos. La ubicación de este path se puede modificar desde el archivo de configuración de Team System Web Access, usualmente ubicado en:

..\Program Files\Microsoft Visual Studio 2005 Team System Web Access\Web\web.config

Dentro del mismo la configuración por defecto para el directorio de cache suele ser dentro del mismo path de instalacion de Team System Web Access:

<webAccessSettings> <!-- Directory path where cache is stored. --> <localCache path="C:\Program Files\Microsoft Visual Studio 2005 Team System Web Access\Cache" /> ... </webAccessSettings>

Por lo que si queremos "ganar" un poco de espacio lo podemos cambiar por un path más corto:

<webAccessSettings> <!-- Directory path where cache is stored. --> <localCache path="D:\TSWACache" /> ... </webAccessSettings>

asignamos los permisos necesarios sobre la nueva ubicación, reiniciamos el IIS y listo !!!

 

 

Saludos

El Bruno

Posted lunes, 29 de octubre de 2007 10:02 by elbruno | with no comments

[VS2008] Workaround para las VPCs de VS2008 con expiracion

Microsoft Visual Studio 2008 Beta 2

 

Buenas

hace un par de días comenté que las máquinas virtuales de Microsoft Visual Studio 2008 disponibles para descargar desde MSDN expiran el 1ro de Noviembre y para los que estamos probando con las mismas esto puede suponer un problema.

Nuevamente Jeff en su blog, nos comenta la solución para este "problema" (http://blogs.msdn.com/jeffbe/archive/2007/10/27/update-on-expiring-vs2008-beta2-vpcs.aspx)

Básicamente consiste en actualizar la licencia de Windows 2003 Server que posee la máquina virtual con una licencia válida. Si tienes una suscripción MSDN, y dispones de licencias disponibles puedes solucionar este problema rápidamente :D

Otra opción es esperar durante la semana, ya que nuestros amigos de MSDN tienen pensado liberar nuevas versiones de las VPCs con Microsoft Visual Studio 2008.

Fuente: http://blogs.msdn.com/jeffbe/archive/2007/10/27/update-on-expiring-vs2008-beta2-vpcs.aspx

 

Saludos

El Bruno

Posted domingo, 28 de octubre de 2007 11:42 by elbruno | 1 comment(s)

El Bruno vs Status Reports

Buenas

¿cuantas veces has tenido que invertir tiempo, en generar informes para justificar el tiempo que has invertido en un proyecto?; en mi caso, esta situación se repite constantemente; y yo estoy en contra de la generación de status reports (aka: informes de estado)

Más de uno se preguntará ¿porqué?; pues porque creo que si para gestionar un proyecto utilizamos las herramientas adecuadas, no es necesario invertir tiempo en crear informes de estado, éstos se deben crear "automáticamente".

 

Si utilizas Visual Studio Team System y Team Foundation Server, puedes aprovechar las diferentes herramientas que posee internamente para agilizar la gestión del proyecto:

Además si instalas Team System Web Access Power Tool, le explicas a los usuarios como utilizarlo; todos los usuarios (que posean los permisos necesarios) podrán conocer en todo momento el estado de cada una de las tareas del proyecto y además podrán tener una visión general del mismo.

 

Asi que, si tu jefe te obliga a invertir eternas horas en cerrar estados de situación para un proyecto; tomate una hora y explícale que existen herramientas que además de permitir generar automáticamente los Status Reports, le ayudarán a poder controlar el ciclo de vida de un proyecto.

Nota: explícale además que como a los informes los puede exportar a Microsoft Excel, luego los puede modificar y pintar como mejor le parezca. Ya sé que esto no es lo mas aconsejable, ya que miente un poco con respecto a la realidad; pero parece que es un requisito INDISPENSABLE para que los jefes de proyecto se animen con Team System ... cosas de la relacion cliente - consultor que no apoyo para nada.

 

 

Saludos cerrando el finde @ Madrid

El Bruno

Posted viernes, 26 de octubre de 2007 14:58 by elbruno | 3 comment(s)

[VS2008] Demo VPC rest in peace (a partir del 01/11)

Microsoft Visual Studio 2008 Beta 2

 

Buenas

si como yo, utilizas las VPC con Microsoft Visual Studio 2008 Beta 2 que están disponibles para su descarga en el MSDN, debes tener cuidado. Las mismas quedarán INHABILITADAS A PARTIR DEL 1 DE NOVIEMBRE.

Esto nos comenta Jeff en su blog y obviamente la recomendación es comenzar a sacar de las mismas toda la información que necesitemos resguardar.

Una vez más: fecha de desactivación 1ro Noviembre.

Fuente: http://blogs.msdn.com/jeffbe/archive/2007/10/25/vs2008-beta2-vpcs-expiring-prematurely.aspx

 

Saludos @ Madrid

El Bruno

Posted viernes, 26 de octubre de 2007 8:42 by elbruno | 4 comment(s)

[TFS] WareHouseControllerRun Console Application (refresca el DataWareHouse de TFS desde una aplicacion de Consola)

Buenas

hace un tiempo comenté como forzar la actualización de los datos de la base de datos de DataWareHouse de Team Foundation Server a través de uno de los WebServices que expone TFS. Si bien el proceso de actualización puede ser configurado para que sea manejado por uno de los servicios de Team Foundation Server, existen ocasiones donde es necesario forzar la actualización de estos datos.

Si like me estás cansado de invocar manualmente este WebService, puedes crear una pequeña aplicación de Consola que se encargue de este trabajo. He aquí el código de la misma:

Module1.vb

1 Module Module1 2 3 Sub Main() 4 5 Try 6 7 ' define TFS webservice url 8 DefineTfsWebServiceUrl() 9 10 Dim svc As New TFS01.ControllerService 11 12 ' use current credential for webservice calls 13 svc.UseDefaultCredentials = True 14 15 ' start update process 16 Console.WriteLine(String.Empty) : Console.WriteLine(String.Empty) 17 Console.WriteLine("{0} Start Datawarehouse update Process", Now.ToString()) 18 If svc.Run() Then 19 ' get tfs warehouse status until datawarehouse is processed 20 GetWareHouseStatus(svc) 21 Console.WriteLine(String.Empty) : Console.WriteLine(String.Empty) 22 Console.WriteLine("{0} Datawarehouse updated !!!", Now.ToString()) 23 End If 24 25 Catch ex As Exception 26 Console.WriteLine(ex.ToString) 27 End Try 28 29 ' close program 30 Console.WriteLine("Press RETURN to close this program") 31 Console.ReadLine() 32 33 End Sub 34 35 36 ''' <summary> 37 ''' Defines the TFS web service URL. 38 ''' </summary> 39 Private Sub DefineTfsWebServiceUrl() 40 Dim url As String = My.MySettings.Default.TFS01_WareHouseControllerRun_tfs01_ControllerService 41 42 ' define TFS Url 43 Dim msg As String = String.Format("Use the following Url: {0} [Y/N]?", url) 44 Console.WriteLine(msg) 45 46 Dim k As ConsoleKeyInfo = Console.ReadKey() 47 If k.Key = ConsoleKey.N Then 48 Console.WriteLine("Enter TFS App Webservices Url:") 49 url = Console.ReadLine() 50 My.Settings.TFS01_WareHouseControllerRun_tfs01_ControllerService = url 51 My.Settings.Save() 52 End If 53 End Sub 54 55 ''' <summary> 56 ''' Gets the ware house status. 57 ''' </summary> 58 ''' <param name="svc">The SVC.</param> 59 Private Sub GetWareHouseStatus(ByVal svc As TFS01.ControllerService) ' DO NOT DO THIS !!! 60 System.Threading.Thread.Sleep(1000) 61 62 Dim res As TFS01.WarehouseStatus 63 res = svc.GetWarehouseStatus() 64 Do Until res = TFS01.WarehouseStatus.Idle 65 Console.WriteLine("{0} status: {1}", Now.ToString(), res) 66 ' DO NOT DO THIS !!!! 67 System.Threading.Thread.Sleep(1000) 68 res = svc.GetWarehouseStatus() 69 Loop 70 End Sub 71 72 End Module 73

Esta app posee una pequeña función para configurar la url del servidor (línea 39) y otra función para refrescar el estado del proceso de actualización (línea 59) y de esta manera conocer cuando se ha terminado de actualizar los datos en el servidor de Team Foundation Server. Un ejemplo de la salida de la consola es el siguiente:

 

y entre refresco y refresco, podremos ver la evolución de nuestros productos como en la siguiente imagen:

 

 

 

Proyecto de ejemplo: http://geeks.ms/files/folders/elbruno/entry45030.aspx

 

Saludos @ La Finca

El Bruno

Posted miércoles, 24 de octubre de 2007 17:55 by elbruno | with no comments

[DSL] IsolatedStorageException: "Unable to determine the identity of domain."

 

Buenas

un post un post un poco espeso sobre un error más espeso aún con el que tuve que lidiar durante un par de semanas.

Introducción

Resulta que cuando realizas operaciones dentro del IDE de Visual Studio 2005 que necesiten trabajar con un IsolatedStorage te encuentras con una excepción del tipo IsolatedStorageException:

System.IO.IsolatedStorage.IsolatedStorageException occurred Message="Unable to determine the identity of domain." Source="mscorlib" StackTrace: at System.IO.IsolatedStorage.IsolatedStorage._GetAccountingInfo(Evidence evidence, Type evidenceType, IsolatedStorageScope fAssmDomApp, Object& oNormalized) at System.IO.IsolatedStorage.IsolatedStorage.GetAccountingInfo(Evidence evidence, Type evidenceType, IsolatedStorageScope fAssmDomApp, String& typeName, String& instanceName) at System.IO.IsolatedStorage.IsolatedStorage._InitStore(IsolatedStorageScope scope, Evidence domainEv, Type domainEvidenceType, Evidence assemEv, Type assemblyEvidenceType, Evidence appEv, Type appEvidenceType) at System.IO.IsolatedStorage.IsolatedStorage.InitStore(IsolatedStorageScope scope, Type domainEvidenceType, Type assemblyEvidenceType) at System.IO.IsolatedStorage.IsolatedStorageFile.GetStore(IsolatedStorageScope scope, Type domainEvidenceType, Type assemblyEvidenceType) at System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForDomain() at ElBruno.Dsl20.IsolatedStorageHelper.GetIsolatedStorageMaxiumSixe()

Y seguramente, más de uno se preguntará ¿para que quiero trabajar con un IsolatedStorage?; pues un ejemplo puede ser el tratamiento de strings con un StreamWriter, porque cuando el tamaño del mismo en memoria sobrepasa cierto tamaño comienza a "bajar a disco" para realizar algunas operaciones. Es en este momento, cuando internamente el Framework solicita permisos para la creación de un IsolatedStorageFile y las operaciones se realizan en el ámbito del mismo.

 

Problema

Pero desde el IDE de Visual Studio, el escenario se complica un poco. Porque, por ejemplo, cuando ejecutas tu aplicacion en el Visual Studio Experimental Hive, el System.AppDomain principal del IDE no tiene identidad. Ya se que esto parece imposible, pero la siguiente imagen vale mas que mil cervezas lo muestra clarito:

 

Es por esto que frente a cualquier tipo de acción utilizando un IsolatedStorage, la exception "Unable to determine the identity of domain." es lanzada.

 

Solución

Hace un tiempo, posteé este problema en los foros de Extensibilidad ed Visual Studio, pero después de verlo con la gente de Microsoft, no tuve respuesta. Así que me puse a estudiar un poco y encontré un workaround más que obvio para solucionar este problema:

¡¡¡ Ejecuta tus acciones en otro AppDomain con los permisos y evidencias necesarios !!!

He aquí un ejemplo para demostrar como solucionarlo. El siguiente DSL posee una validación en la clase ExampleModel.partial.cs; que cuando es invocada, muestra el tamaño por defecto para un IsolatedStorage para el usuario actual. Para esto se vale de una clase IsolatedStorageHelper con el siguiente código dentro de la misma.

Nota: sobre las validaciones y las Domain Specific Language Tools pueden leer mi anterior post aquí

IsolatedStorageHelper.cs

1 using System; 2 using System.Collections.Generic; 3 using System.Text; 4 using System.IO.IsolatedStorage; 5 using System.IO; 6 7 namespace ElBruno.Dsl20 8 { 9 public class IsolatedStorageHelper : MarshalByRefObject 10 { 11 /// <summary> 12 /// Gets the isolated storage maxium sixe. 13 /// </summary> 14 /// <returns></returns> 15 public double GetIsolatedStorageMaxiumSixe() 16 { 17 IsolatedStorageFile isoFile; 18 isoFile = IsolatedStorageFile.GetUserStoreForDomain(); 19 20 // Open or create a writable file. 21 IsolatedStorageFileStream isoStream = 22 new IsolatedStorageFileStream(GetTemporalFileName(), 23 FileMode.OpenOrCreate, 24 FileAccess.Write, 25 isoFile); 26 27 StreamWriter writer = new StreamWriter(isoStream); 28 writer.WriteLine(Guid.NewGuid().ToString()); 29 30 // Calculate the amount of space used to record the user's preferences. 31 double d = isoFile.CurrentSize / isoFile.MaximumSize; 32 Console.WriteLine("CurrentSize = " + isoFile.CurrentSize.ToString()); 33 Console.WriteLine("MaximumSize = " + isoFile.MaximumSize.ToString()); 34 35 // StreamWriter.Close implicitly closes isoStream. 36 writer.Close(); 37 isoFile.Dispose(); 38 isoFile.Close(); 39 return d; 40 } 41 42 /// <summary> 43 /// Gets the name of the temporal file. 44 /// </summary> 45 /// <returns></returns> 46 private static string GetTemporalFileName() 47 { 48 string tempFile = string.Format("temp{0}.xml", Guid.NewGuid().ToString()); 49 RemoveFileIfExists(tempFile); 50 return tempFile; 51 } 52 53 /// <summary> 54 /// Removes the file if exists. 55 /// </summary> 56 /// <param name="outputFile">The output file.</param> 57 private static void RemoveFileIfExists(string outputFile) 58 { 59 if (System.IO.File.Exists(outputFile)) 60 { 61 System.IO.File.Delete(outputFile); 62 } 63 } 64 } 65 } 66

Dentro de una clase personalizada que he agregado a mi proyecto DSL, ejecuto la función GetIsolatedStorageMaxiumSixe() y muestro el resultado al usuario. Sin embargo si creo la clase IsolatedStorageHelper  de manera convencional, obtengo la excepcion mencionada.

helper = new IsolatedStorageHelper(); isolatedStorageMaxiumSixe = helper.GetIsolatedStorageMaxiumSixe();

Es por esto que he implementado la creación de la clase en un nuevo System.AppDomain como muestran las líneas 43 a 74 en el código de la clase que implementa la validación para el diagrama creado con las Domain Specific Language Tools:

ExampleModel.partial.cs

1 using Microsoft.VisualStudio.Modeling.Validation; 2 using System.IO.IsolatedStorage; 3 using System.IO; 4 using System; 5 using System.Threading; 6 using System.Security.Principal; 7 using System.Security.Permissions; 8 using System.Runtime.InteropServices; 9 using System.Reflection; 10 using System.Security.Policy; 11 using System.Security; 12 using System.Windows.Forms; 13 14 namespace ElBruno.Dsl20 15 { 16 17 [ValidationState(ValidationState.Enabled)] 18 public partial class ExampleModel 19 { 20 21 /// <summary> 22 /// Validates the duplicated users E mail. 23 /// </summary> 24 /// <param name="context">The context.</param> 25 [ValidationMethod(ValidationCategories.Menu | ValidationCategories.Save)] 26 [System.Security.SecurityTreatAsSafe()] 27 [System.Security.SuppressUnmanagedCodeSecurity()] 28 private void ValidateDuplicatedUsersEMail(ValidationContext context) 29 { 30 try 31 { 32 // defines the name and type for the assembly creation 33 string assemblyName = Assembly.GetExecutingAssembly().FullName; 34 string typeName = "ElBruno.Dsl20.IsolatedStorageHelper"; 35 36 // validate user preferences 37 DialogResult res = System.Windows.Forms.MessageBox.Show("Execute IsolatedStorage in new AppDomain ??", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question); 38 IsolatedStorageHelper helper = null; 39 double isolatedStorageMaxiumSixe = 0; 40 41 if (res == DialogResult.Yes) 42 { 43 // --------------------------------------------------------------- 44 // Create and execute assembly in new AppDomain 45 // --------------------------------------------------------------- 46 47 // Set up the AppDomainSetup 48 AppDomainSetup setup = new AppDomainSetup(); 49 setup.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory.ToString(); 50 SecurityZone zone = SecurityZone.MyComputer; 51 52 // Set up the Evidence 53 Evidence baseEvidence = AppDomain.CurrentDomain.Evidence; 54 Evidence evidence = new Evidence(baseEvidence); 55 evidence.AddAssembly(assemblyName); 56 evidence.AddHost(new Zone(zone)); 57 58 AppDomain app = AppDomain.CreateDomain("Processor AppDomain", evidence, setup); 59 60 try 61 { 62 63 helper = (IsolatedStorageHelper)app.CreateInstanceAndUnwrap(assemblyName, typeName); 64 isolatedStorageMaxiumSixe = helper.GetIsolatedStorageMaxiumSixe(); 65 66 } 67 catch 68 { 69 throw; 70 } 71 finally 72 { 73 AppDomain.Unload(app); 74 } 75 } 76 else 77 { 78 // --------------------------------------------------------------- 79 // Create and execute assembly in Visual Studio IDE AppDomain 80 // --------------------------------------------------------------- 81 helper = new IsolatedStorageHelper(); 82 isolatedStorageMaxiumSixe = helper.GetIsolatedStorageMaxiumSixe(); 83 } 84 85 // display result 86 MessageBox.Show(string.Format("Isolated Storage Maxium Sixe: {0}", isolatedStorageMaxiumSixe.ToString())); 87 88 } 89 catch (Exception ex) 90 { 91 System.Windows.Forms.MessageBox.Show(ex.ToString()); 92 } 93 } 94 } 95 }

Cuando ejecutamos el DSL y presionamos la opción Validate sobre el menú contextual en nuestro diagrama, veremos el siguiente diálogo de confirmación:

 

Si seleccionamos NO y nuestra clase se instancia dentro del mismo System.AppDomain que el que esta utilizando Visual Studio, veremos que se dispara la excepción IsolatedStorageException:

 

Si en cambio, instanciamos nuestra clase dentro de un nuevo System.AppDomain con los privilegios necesarios, la ejecución irá de maravillas y podremos festejar con unas cañas:

 

Si alguien está interesado en adentrarse un poco más en el tema, puede bajar el proyecto de ejemplo desde aquí (gracias Geeks.ms) y si encuentra algun otro workaround o más información al respecto y quiere compartirla, me avisa :D

Descarga: http://geeks.ms/files/folders/elbruno/entry44654.aspx

 

Saludos @ La Finca

El Bruno

Posted martes, 23 de octubre de 2007 11:58 by elbruno | 1 comment(s)

[TFS] MsBuild Profiler (para buils fast and furious ...)

Buenas,

MsBuild Profiler es una herramienta que permite medir el rendimiento para las secuencias de comandos de un proyecto MSBuild. El analizador de MSBuild muestra un resultado en forma gráfica de rendimiento para todas las secuencias de comandos de MSBuild, esto permite optimizar y ajustar los tiempos de las secuencias internas para un proyecto de Build.

Página Principal: http://www.codeplex.com/msbuildprofiler

Descarga: http://www.codeplex.com/msbuildprofiler/Release/ProjectReleases.aspx?ReleaseId=7848

 

Saludos @ Home

El Bruno

Posted domingo, 21 de octubre de 2007 21:00 by elbruno | with no comments

[Off-Topic] Gracias PUMAS !!!

Buenas,

mi país es un territorio donde la principal pasión es el futbol. Sin embargo cada tanto, surge un grupo de personas que se destacan en otro deporte, y nos brindan una alegría que es muy díficil de explicar.

La selección Argentina de Rugby (Los Pumas) es un claro ejemplo de trabajo como un equipo ha trabajado y madurado durante casi 8 años, y ha cerrado este ciclo con un resultado impresionante; un 3er puesto en el mundial de Rugby; algo que hace sólo un par de años hubiese sido un insulto para las grandes potencias mundiales de Rugby.

No muchos pueden decir, que han quedado en un escalafon superior a los All Blacks, o a los Wallabys, o que han ganado 2 veces a la selección "de casa". Pero lo que más valoro (como rescató el amigo Martín) es que este equipo siempre fue fiel a sus principios, siempre se mantuvo unido y destacó por la garra y por el corazon con el que jugaron cada partido.

Para muchos argentinos, ayer terminó el mundial de Rugby (aunque hoy se juegue la final Sudáfrica-Inglaterra); pero al igual que paso hace unos años con la selección de basquet, fue el comienzo de una nueva generación y una nueva pasión para disfrutar.

Gracias Pumas por un mes INOLVIDABLE :D

 

Saludos @ Paris

El Bruno

Posted sábado, 20 de octubre de 2007 16:47 by elbruno | with no comments

Filed under:

[TFS] Como consultar la cantidad de lineas de codigo por developer ??? (sirve para competencias internas)

Buenas

siguiendo con la linea de posts para analizar datos almacenados en Team Foundation Server, hoy como es viernes crearé un Excel con el que puedes competir con tus compañeros para verificar quien:

  • es el que más líneas de código ha agregado
  • es el que más líneas de código ha modificado
  • es el que más líneas de código ha eliminado

Este informe es muy simple, y tomando de base los pasos iniciales para conectarse desde Excel 2007 a nuestro servidor de datos Team Foundation Server DataWarehouse (como comenté aquí), agregaremos los siguientes fields:

  • Seccion Values
    • Code Churn // Lines Added
    • Code Churn // Lines Deleted
    • Code Churn // Lines Modified
  • Row Labels
    • Checked In By // Person
  • Column Labels
    • Team Project // Team Project

como muestra la siguiente imagen

 

A partir de este momento podremos ver, la cantidad de líneas de código agregadas, eliminadas y modificadas por developer y por Team Project; además de los totales generales (que son los que valen para el concurso por un par de cañas).

 

Si además deseas agregar un filtro por fecha, simplemente debemos agregar el field Date // Date a la seccion Column Labels y ya tendremos un gráfico por día o por período para controlar estos valores.

 

 

Saludos @ La Finca

El Bruno

 

PD: la diferencia de cantidad de líneas de código a "mi nombre" se debe a que este servidor de Team Foundation Server ha sido alimentado a partir de una base de datos de Visual Source Safe y todos los items e históricos se han agregado a mi nombre.

Posted viernes, 19 de octubre de 2007 11:55 by elbruno | 7 comment(s)

[VISIO] Stencils para MOSS 2007

Buenas

Maxime ha creado y publicado un stencil para Microsoft Visio 2007 con todos los componentes necesarios para diagramas soluciones de Sharepoint 2007. El mismo se publica aquí y se puede descargar desde aquí.

 

Saludos @ La Finca

El Bruno

 

PD: se nota que estoy con modelos y diagramas .... muchos diagramas ... :D

Posted jueves, 18 de octubre de 2007 16:53 by elbruno | with no comments

Filed under:

[Live] Impresionante coleccion de controles para Windows Live

Buenas

simplemente había probado con un par de lineas el login con mi passport utilizando VB.Net, pero gracias a este post me encuentro con una cantidad impresionante de controles para diferentes plataformas soportados por Live. Si has leido o te interesan conceptos como SaaS, seguramente verás como Live puede cambiar el concepto de "proyectos de desarrollo" que manejamos actualmente. (nuestros amigos de infraestructura ya lo estan viviendo ...)

 

Windows Live Contacts Control

image001

  1. The Contacts Control allows a web site to benefit from Windows Live contacts, but leaves control of the contact data with the user:
    • It allows the user of a web site to select and approve their contact lists data for transfer to that web site
    • It allows me to contact others
  2. This is a control that appears on a web page with no end-user install needed, but the user does need to login.
  3. It displays your contact lists with IM presence embedded into web sites
  4. It provides the ability to launch an IM conversation (web visitor to IM or e-mail his contacts)
  5. See http://dev.live.com/contacts/

Windows Live Contacts API

image001

  1. Similar to the Contacts Control, but there is no UI. The web site developer can create their own UI without needing to display the Contacts Control on their web site.
  2. It allows third party servers to access user’s WL data without mandatory UI or user confirmation on each use. 
  3. The user must initially approve the third party to have ongoing access to their data, which issues an authorization token to the third party site that the third party site must include in future requests for the user’s data.
  4. See http://dev.live.com/contacts/

Windows Live Spaces Photo Control

image003

  1. The Spaces Control allows a web site to benefit from millions of photos hosted on Windows Live Spaces, but leaves the control of the photo with the user:
    • It allows the user of a web site to send selected photos from the private or public Spaces photo albums to the hosting web site.
    • It allows access to the photo for a limited time. It makes private photos temporarily available to a third party using a time-limited encrypted URL.  
  2. See http://dev.live.com/spacescontrol/

RSS Feeds from Windows Live Spaces

image004

  1. Each Spaces site provides an RSS feed, which can be programmatically filtered and pulled into your web site, thus acting as a content management solution. Get feeds based on:
    • Blogs (by tag or entire list)
    • Lists (custom, Movie, Book, etc.)
    • Photo albums
  2. RSS feeds can be consumed by a mashup and applications, but:
    • It takes some effort to get around domain restrictions in the browser, so it is best to do the work on the server side. 
    • Your web server needs to fetch the RSS data and relay it down to the browser.
  3. See http://dev.live.com/spaces/

Windows Live Agents(for Messenger)

image005

  1. There are two main types of Agents:
    • Natural language (interactive) agents to create an automated online personality. Build a personality for consumers to interact with and possibly tie it to a branded Custom Domains URL
    • Menu driven agents for quick access to data
  2. Agents can have a dynamic display picture in Messenger, launch Messenger Activities, use RSS feeds, have a Windows Live Space for blogs and photos, and be regularly updated to expand its vocabulary.
  3. See http://dev.live.com/agents/

Windows Live Messenger Activities

image006

  1. Activities run within Messenger and they are:
    • Engaging peer-to-peer activities, such as Games, MusicMix and PhotoSwap
    • Additions that improve Messenger for a single user, such as Mimic and Search)
  2. Silverlight applications can run within the Activity window
  3. You can think of an Activity window as a small web browser
  4. Messenger’s Options dialog box can be opened (think of educating the user, helping reset the Today page, etc.)
  5. See http://dev.live.com/messenger/

Windows Live Messenger Add-In

image007

  1. Users can designate an add-in as their “local agent." The agent add-in acts on behalf of the local user, responding to messages from other users without intervention from the local user.
  2. The add-in may also change the local user's status, user tile (photo), personal status message, and friendly name.
  3. See http://msdn2.microsoft.com/en-us/library/aa905655.aspx

Windows Live Spaces Gadgets

image008

  1. A gadget is a mini web-based application that runs on a personal Spaces site
  2. A Gadget Can:
    • Pull data from a web service
    • Pull data from an RSS feed
    • Save user preferences, such as a city name or stock symbol
    • Display different text based on the browser’s language
  3. See http://dev.live.com/gadgets/

Windows Live Writer
Plug-Ins

image009

There are two topics for Writer:

  1. Application API: For launching Writer from other applications, such as a browser Toolbar’s "Blog This" feature so Links, Snippets, Images, or Feed Items can be posted (blogged) on your Spaces site
    • Content Source Plug-ins: For extending the capabilities of Writer to insert, edit, and publish new types of content from within Writer, for example:
    • Images from online photo publishing sites
    • Embedded video or audio players
    • Product thumbnails and/or links from e-commerce sites
    • Tags from tagging services
  2. See http://dev.live.com/writer/

Windows Live Alerts SDK

image010

  1. You can enable Alerts from any RSS feed with  zero development by following the instructions at http://signup.alerts.live.com
  2. With the Alerts SDK, you get more control versus the above signup.alerts site, such as:
    • Alert specific groups of subscribers
    • Redirect URL when user clicks alert
  3. Control the entire subscription process
  4. See http://dev.live.com/alerts/

Windows Live Toolbar

image011

  1. You can create buttons for users to add to the Windows Live Toolbar that:
    • Link to a web site
    • Run a specific search
    • Display a list of links
    • Display information in the button’s menu
    • Display information in an HTML window that drops down from the button.
  2. See http://msdn2.microsoft.com/en-us/library/aa336231.aspx

Windows Live Custom Domains

image012

  1. With Custom Domains, you can build an entire experience and community around a branded URL and co-branded web page header. The co-branded products include:
  2. The Custom Domains SDK can help you automate the management of your Custom Domain user IDs and other aspects related to your Custom Domain. It provides methods to programmatically manage your Custom Domain via a web service.
  3. See http://dev.live.com/customdomains/

Windows Live ID

image013

  1. This allows you to integrate with the Live ID authentication system so the user doesn’t need yet another username and password. Existing 3rd party member username/password can be synced with Live ID. There are two options:
    • Windows Live ID Web Authentication: provides single sign on to Microsoft's online properties and also allows third party developers to leverage the Windows Live ID authentication system for their own website.
    • Windows Live ID Client SDK: allows rich client (desktop) applications authenticate users using their Windows Live ID credentials.
  2. See http://dev.live.com/liveid/

Live Search Web Service API

image014

  1. With the Live Search API you can:
    • Create a custom search engine with our search query language, allowing your web site to have its own search feature
    • Enhance your existing site search with spelling suggestions, images, news articles, feeds.
    • Add images to your mashup from a Live image search
  2. See http://dev.live.com/livesearch/

Live Search Macros

image014

  1. Search Macros help narrow a search to any topic area you prefer. Building one also creates a unique home page for your macro, which makes it easy to use, bookmark and share.
  2. You can integrate these macros into your site, to offer a search box that only searches your site or only searches specific sites on the Internet, just as two examples.
  3. See http://search.live.com/macros/

Live Search Box
for Site Owners

image014

  1. Add a search box to your site that can appear in two ways:
    • Basic Live Search box: Displays results on the Live Search website. Searches a single site that you specify, or the entire Web.
    • Advanced Live Search box: Displays results on your site. Searches multiple sites you specify, the entire Web, or applies a Live Search Macro.
  2. The Live Search box provides a fast, customisable search solution for your website or blog and visitors to your site can search entire web, just your site, or any sites that you choose based on Live Search Macros.
  3. See http://search.live.com/siteowner/

Virtual Earth

image015

  1. The Virtual Earth platform is an integrated set of services that combines unique bird’s eye, aerial, and 3-D imagery with best-of-breed mapping, location and search functionality.
  2. The Virtual Earth map control API provides developers with an API need to develop new 3D applications or update their existing 2D projects to the 3D platform.
  3. See http://dev.live.com/virtualearth/

Microsoft® Silverlight™ Streaming by Windows Live™

image016

  1. Silverlight Streaming is a companion service for Silverlight (a small, on-demand, easy-to-install plug-in that works with all leading browsers) that makes it easier for developers and designers to deliver and scale rich media as part of their Silverlight-based applications.
  2. It is a convenient solution for hosting and streaming cross-platform, cross-browser media experiences and rich interactive applications.
  3. Silverlight Streaming is designed to host two types of content:
    • Rich interactive applications for the Web that can incorporate video, animation, interactivity, and stunning user interfaces.
    • Media such as video (including High-Definition video), audio and images
  4. See http://dev.live.com/silverlight/

 

Fuente: http://blogs.msdn.com/modonovan/archive/2007/10/18/development-features-for-the-windows-live-platform.aspx

 

Saludos @ La Finca

El Bruno

Posted jueves, 18 de octubre de 2007 12:48 by elbruno</