[TFS] TFSBuild.com (practico como el nuevo Rambo)

Buenas,

si te has peleado con los builds de Team Foundation Server sabrás que esta tarea es interesante, pero que al no poseer todavía las herramientas adecuadas puede un poco tediosa. No hay mucha información al respecto, y algunas acciones que pueden parecer muy simples, se complican más de lo necesario.

Es por esto, que una iniciativa como www.tfsbuild.com me parece excelente. Este site propone abordar el mundo de los builds de Team Foundation Server con un formato Wiki (que está de moda, pero que además es muy práctico).

Pues bien será cuestión de ver como evoluciona, ya veo que han tratado algunos temas tan dispares como la compilación de soluciones para el .Net framework 1.1 y para Java !!!

 

Saludos @ Home

El Bruno

 

Share this post :


Crossposting from ElBruno.com

[Evento] Second Nug – Primeros pasos con CSLA.NET

Buenas

Después de los recientes estrenos de los grupos de usuarios .NET de Valencia y Tarragona, le toca el turno de empezar a rodar Second Nug con su evento inaugural “Primeros pasos con CSLA.NET”, con Marçal Serrate como ponente de lujo.

Second Nug te invitra a conocer de forma fácil y accesible como crear objetos de negocio profesionales y a crear infraestructuras distribuidas para que tu aplicación jamás se quede pequeña. Ya seas desarrollador de escritorio, de dispositivos móviles o de web, CSLA.NET te puede ser de gran ayuda.

El evento se retransmitirá vía Microsoft Live Meeting de forma totalmente interactiva, con lo que todos podremos participar e interactuar los unos con los otros.

Vente el próximo día 5 de Febrero de 2008, desde las 19:00h hasta las 21:00h (GMT+1), a conocer las posibilidades que te ofrece el Framework CSLA.NET, y si te quedas con ganas de más pásate después del evento por la sala de actos de Microsoft en Second Life para charlar un poco y conocernos entre todos.

Podéis descargar Microsoft Live Meeting 2007 desde el siguiente enlace.

Para el encuentro de después del evento en Second Life tan solo teneis que crearos un avatar y descargar el software gratuito en: http://secondlife.com/

El enlace del registro del evento es:

http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032367020&EventCategory=4&culture=es-ES&CountryCode=ES

 

Saludos @ La Finca

El Bruno

 

Share this post :


Crossposting from ElBruno.com

[DSL] Menus personalizados (2da Parte)

Buenas

otro pequeño post para completar el post que inicialmente mostraba cómo crear menus personalizados para nuestros diagramas creados con las Domain Specific Language Tools.

Un detalle que no comenté en su día es que, en el archivo de creación de menús (.ctc), una de las opciones que podemos especificar son una serie de FLAGS que determinarán el comportamiento del menú. Por ejemplo, en la siguiente definición, la línea 9 determina que este menú por defecto aparecerá en modo no visible y que será posible cambiar la propiedad Visible del mismo.

1 // Add additional button definitions here. 2 // Command, Parent Group, Priority, Image, Type, Visibility, Text; 3 //guidCmdSet:duplicate, guidCmdSet:grpidContextMain, 0x0100, OI_NOID, BUTTON, DIS_DEF, "&Display Selected Item Information"; 4 guidCmdSet:duplicate, // Command ID 5 guidCmdSet:grpidContextMain, // Group ID 6 0x0100, // Priority 7 IconDuplicate, // Icon ID 8 BUTTON, // Button Type 9 DEFAULTINVISIBLE | DYNAMICVISIBILITY, // Flags 10 "&Duplicate", // Command Text 11 "&Duplicate", // Menu Text 12 "Duplicate", // ToolTip Text 13 "Duplicate", // Command Well Text 14 "Duplicate", // English Command Name 15 "Duplicate"; // Localized Command Name

El listado completo de opciones con las que podemos los componentes de un menú lo podemos encontrar en http://msdn2.microsoft.com/en-us/library/bb166581(VS.80).aspx.

Luego en la implementación de la función que se encarga de evaluar si se debe mostrar o no, un elemento del menú; implemento una pequeña función que por defecto deja invisible el elemento del menú, a menos que el elemento selecccionado sea un Shape del tipo UserShape.

1 /// <summary> 2 /// Called when [duplicate menu display action]. 3 /// </summary> 4 /// <param name="sender">The sender.</param> 5 /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param> 6 internal void OnDuplicateMenuDisplayAction(object sender, EventArgs e) 7 { 8 MenuCommand command = sender as MenuCommand; 9 10 // The popmenu command is by default disabled 11 command.Visible = false; 12 command.Enabled = false; 13 14 foreach (object selectedObject in this.CurrentSelection) 15 { 16 // validate if the selected element is a User Shape 17 if (selectedObject is ElBruno.Dsl15.UserShape) 18 { 19 command.Visible = true; 20 command.Enabled = true; 21 break; 22 } 23 } 24 }

De esta forma logramos que en el menú contextual que tenemos disponible sobre nuestro diagrama; la opción Duplicate sólo este visible cuando despleguemos el menú contextual sobre un Usuario. En el siguiente video la demo:


Video: DSL Tools – Menu

 

Descarga de codigo fuente: http://geeks.ms/files/folders/elbruno/entry67773.aspx

 

Saludos @ La Finca

El Bruno

 

Share this post :


Crossposting from ElBruno.com

[Off-topic] Software para la grabación de demos

Buenas,

periódicamente alguien me pregunta qué software utilizó para grabar los videos/demos que luego incrusto en mis post. La respuesta es simple: Windows Media Encoder.

Personalmente, me gusta WME porque utilizarlo es tan simple como en este pequeño video de 50 segundos. Simplemente seguimos el asistente inicial y listo, tendremos nuestro video (wmv) disponible para subir a cualquier sitio para alojar videos.


Video: Windows Media Encoder Demo

 

Podemos seleccionar la grabación de un video sobre una ventana, sobre una selección de coordenadas o directamente en modo full screen. Además, tenemos la opción de seleccionar la calidad del video a grabar y otras cosillas más. El asistente es muy simple, pero si quieres cambiar alguna opción a un detalle más bajo, puedes modificar estos valores en la configuración de la sesión de grabación.

 

Sin embargo, si necesitas opciones, existen otras herramientas que también sirven para grabar demos. Sobre algunas de éstas herramientas han comentado en los foros de Avanade y realmente algunas me han tentado para probarlas (como al clásico y popular Camtasia)

Por ahora seguiré con Windows Media Encoder y probaré algún trial (Camtasia Studio por ej.). Y, si me decido a cambiar (porque no creo que me decida a desembolsar unos €€€) postearé sobre la nueva herramienta.

 

Saludos @ Valentino’s Home

El Bruno

 

Share this post :


Crossposting from ElBruno.com

[VSTS] Gestionando Requerimientos con Team System

Buenas

una pregunta recursiva que suelo escuchar de proyecto en proyecto, es cómo se pueden gestionar los requerimientos con Visual Studio Team System. Es cierto que este tipo de tarea depende mucho del esquema de trabajo que se quiera utilizar, y sobre esa base trato de explicar las posibilidades que brinda Visual Studio Team System y cómo podemos adaptarnos a ellas.

Hoy me he encontrado con una serie de 4 posts de Steve Lange donde explica un poco más en detalle el tema y según mi punto de vista lo aborda de una forma muy natural.

  • Part 1:  RM in TFS – Overview
  • Part 2:  RM in TFS – Out of the Box
  • Part 3:  RM in TFS – Partner Integrations
  • Part 4:  RM in TFS – Summary
  •  

    Les recomiendo echarle un vistazo y thanks Steve !!!

     

    Saludos @ Home

    El Bruno

     

    Share this post :


    Crossposting from ElBruno.com

    [Evento] Sobre guitarras, un poco de código y esa gente que nos inspira

    Volvió Led Zeppelin, y si te gusta la música, seguramente admirarás a Jimmy Page como guitarrista. Cuando era pequeño y llegaron a mis manos los primeros vinilos de Led Zeppelin, comprendí donde había nacido toda la música que escuchaba. Fue por esos días donde comencé a aprender a tocar la guitarra.

    Esta habilidad, profesión, o hobby en mi caso requiere una serie de capacidades mínimas, como son la capacidad de comprender los conceptos de básicos de una estructura musical, una cierta habilidad en ambas manos y cierta coordinación entre los componentes previos que nos permitan arrancar una melodia a una guitarra. Personalmente creo que cualquier persona con un poco de práctica es capaz de disfrutar con una guitarra en sus manos.

    Sin embargo existen algunas personas que nacen con un “don” particular que los distingue de las demás. Estas personas se diferencias de las demás cuando tocan la guitarra a través de su swing particular.

    Tengo la suerte de tener muchos amigos, que son excelentes músicos, poseen una destreza manual que les permite interpretar riffs imposibles, pero carecen de ese don que los llevaría a un nivel superior. Es por eso que, no importa dónde lo escuche, siempre identificaré el estilo especial de Carlos Santana, o las tristes melodías de Jimmy Hendrix seres superiores.

    En la informática pasa algo similar; existen personas con una gran capacidad analítica, con grandes conocimientos y que son excelentes profesionales; pero también existe un grupo reducido de personas que además de tener estas características, despiertan una pasión sana por el trabajo que realizan. Cuando trabajas, asistes a un evento o compartes una cerveza con el 2do grupo de personas, usualmente te sientes motivado a enfrentar nuevos retos, a probar nuevas tecnologías.

    He estado viendo parte de la agenda del evento para el lanzamiento de Microsoft Visual Studio 2008, SQL Server 2008 y Windows Server 2008, ahora conocido como Microsoft TechDays y estoy seguro que saldré de allí con más ganas que nunca de acercarme a un teclado. Si a esto le sumo, otro evento interno de Avanade (en una línea muy parecida al anterior) y el desembarco de Joe Satriani en Barcelona, los próximos meses serán moviditos e interesantes.

     

    Saludos @ Home (con la Gibson en la mano)

    El Bruno

     

    Share this post :


    Crossposting from ElBruno.com

    [DSL] Asignando imagenes personalizadas dependiendo de una propiedad

    Buenas,

    más sobre escenarios especiales cuando trabajamos con las Domain Specific Language Tools; en este caso cómo hacer para que en un Shape gráfico, se cambie el aspecto del mismo dependiendo del valor de una propiedad.

    Sobre el ejemplo que trabajo diariamente, en el elemento UserElement he agregado una nueva propiedad booleana llamada UserState. La idea es que dentro del diagrama visual, se cambie la apariencia del mismo, cuando el valor cambie de True -> False -> True.

     

    Para representar el estado, he modificado el Shape que representa al usuario y le he agregado un nuevo “decorator” llamado IconState que mostrará el estado de la propiedad UserState. Cuando la propiedad sea True, se visualizará una imagen y en caso contrario no se visualizará nada.

     

    Para lograr el efecto de mostrar/ocultar la imagen, podemos realizar la siguiente configuración dentro del panel DSL Details. En primer lugar debemos seleccionar la relación entre el elemento UserElement y UserShape. A continuación dentro de la pestaña Decorator Tabs, seleccionamos el decorator IconState y lo asociamos como muestra la siguiente imagen, asociamos su visibilidad a la propiedad UserState.

     

     

    Internamente la definición del DSL ha generado el siguiente código, donde asocia la visualización del decorator IconState al valor de la propiedad UserState utilizando la función ShapeField.AssociateVisibilityWith(), como podemos ver en las líneas 20 y 21.

    1 /// <summary> 2 /// Class containing decorator path traversal methods for UserShape. 3 /// </summary> 4 internal static partial class UserShapeDecoratorMap 5 { 6 /// <summary> 7 /// Event handler called when decorator initialization is complete for UserShape. Adds decorator mappings for this shape or connector. 8 /// </summary> 9 public static void OnDecoratorsInitialized(object sender, global::System.EventArgs e) 10 { 11 DslDiagrams::ShapeElement shape = (DslDiagrams::ShapeElement)sender; 12 DslDiagrams::AssociatedPropertyInfo propertyInfo; 13 14 propertyInfo = new DslDiagrams::AssociatedPropertyInfo(global::ElBruno.Dsl15.UserElement.NameDomainPropertyId); 15 DslDiagrams::ShapeElement.FindDecorator(shape.Decorators, "NameDecorator").AssociateValueWith(shape.Store, propertyInfo); 16 17 propertyInfo = new DslDiagrams::AssociatedPropertyInfo(global::ElBruno.Dsl15.UserElement.EMailDomainPropertyId); 18 DslDiagrams::ShapeElement.FindDecorator(shape.Decorators, "EMail").AssociateValueWith(shape.Store, propertyInfo); 19 20 propertyInfo = new DslDiagrams::AssociatedPropertyInfo(global::ElBruno.Dsl15.UserElement.UserStateDomainPropertyId); 21 DslDiagrams::ShapeElement.FindDecorator(shape.Decorators, "IconState").AssociateVisibilityWith(shape.Store, propertyInfo); 22 } 23 } 24

    Luego en ejecución nuestro diagrama mostrará u ocultará la imagen, para completar un poco más el ejemplo he agregado una nueva opción a través de un menú contextual que cambia el valor de UserState desde otra ubicación. Y un video vale más que mil imágenes:


    Video: DSL Tools – Custom Visibility Demo

     

    Descarga:

     

    Saludos @ Home

    El Bruno

     

    Share this post :

    n
    Crossposting from ElBruno.com

    [DSL] Creando Tooltips dinamicos

    Buenas,

    una de las grandes ventajas del modelado se basa en las capacidades gráficas del mismo; es por eso que de la personalización que le brindemos a nuestros modelos dependerá el exito de los mismos. Existen pequeños detalles que hacen que una aplicación sea de fácil utilización, uno de ellos es la correcta utilización de los Tooltips.

    Nota: Antes de mostrar como se pueden personalizar los Tooltips, me gustaría comentar que el contenido de los mismos, es algo que también tenemos que evaluar. A nadie le gustan esos Tooltips que tienen 1287 caracteres y que nunca podemos terminar de leer; cómo dijo el Negro Fontanarrosa “Una palabra puede herir. Pero un martillazo es feroz

     

    Utilizando las Domain Specific Language Tools, tenemos la capacidad de personalizar el contenido de los Tooltips de los shapes de una forma muy simple. Por ejemplo, si en un GeometryShape cambiamos la propiedad ToolTip a Variable, como muestro en la figura siguiente, nos obliga a implementar la funcion GetVariableTooltipText.

     

    A esta función la he implementado en una clase parcial y dentro de la misma, he creado una cadena que incluye el nombre y la dirección de mail del usuario seleccionado y a partir de este contenido, arma el tooltip (string) para retornar.

    1 public partial class UserShapeBase 2 { 3 /// <summary> 4 /// Gets the variable tooltip text. 5 /// Creates a tooltip with the name and the email of the user 6 /// </summary> 7 /// <param name="item">The item.</param> 8 /// <returns></returns> 9 private string GetVariableTooltipText(DiagramItem item) 10 { 11 UserShape ueS = item.Shape as UserShape; 12 UserElement ue = ueS.ModelElement as UserElement; 13 string tooltip = string.Format("The user {0} email address is {1}", ue.Name, ue.EMail); 14 return tooltip; 15 } 16 }

    En ejecución, podremos ver cómo el tooltip es una ayuda un poco más humana para nuestros queridos usuarios.

     

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

     

    Saludos @ Home

    El Bruno

     

    Share this post :


    Crossposting from ElBruno.com

    [SQL] Shrinking ALL DataBases

    Buenas

    hace unos días escribí un pequeño post donde comentaba como “limpiar un poco” las bases de datos de Team Foundation Server 2005. Hoy me encuentro con un post donde se animan a todo y en 4 líneas realizan el shrink para todas las bases de datos de un server.

    Interesante el llamado de atención que realiza Mark antes del script, donde advierte una vez más que esto al igual que las peleas de la WWF sólo debe ser realizado por profesionales altamente entrenados:

    declare @sqlstring nvarchar(1024) SET @sqlstring='use ?;DBCC SHRINKFILE (?, TRUNCATEONLY);DBCC SHRINKFILE (?_log, TRUNCATEONLY);BACKUP LOG ? WITH TRUNCATE_ONLY;DBCC SHRINKFILE (?_log, TRUNCATEONLY);'; SELECT @sqlstring; exec master.dbo.sp_MSforeachDB @command1=@sqlstring

    Thanks Mark !!!

    Fuente: http://blogs.msdn.com/mab/archive/2008/01/26/how-to-backup-and-truncate-all-log-files-in-a-database.aspx

     

    Saludos @ Home

    El Bruno

     

    Share this post :


    Crossposting from ElBruno.com

    [TFS] Team Foundation Server Administration Tool para TFS2008

    Buenas,

    he aquí una buena noticia para cerrar la semana, por fin la popular Team Foundation Server Administration Tool se ha actualizado para poder trabajar con Team Foundation Server 2008. Esta herramienta centraliza en un único entorno la administración de usuarios para Team Foundation Server 2008, Reporting Services y Sharepoint Services; de esta forma la administración de nuestros servidores TFS se torna mucho más amigable.

    La versión oficial 1.3 se puede descargar desde http://www.codeplex.com/TFSAdmin/Wiki/View.aspx?title=Home

     

    Saludos @ Home

    El Bruno

     

    Share this post :


    Crossposting from ElBruno.com