XmlNotepad 2007 !!! y lo que se viene para Navidad …

Buenas,

cuando quedan poco mas de 30 dias para que llegue el nuevo año; la verdad es que estoy asustado. Les enumero los motivos

 

 

Las novedades que trae el XmlNotepad 2007 son mas bien escasas; asi que destaco que funciona el F3 como shortcut para las busquedas y … nada mas !!! ahh si , que es multidioma. Al mismo lo podemos descargar desde http://www.microsoft.com/downloads/details.aspx?familyid=72D6AA49-787D-4118-BA5F-4F30FE913628&displaylang=en.

Lo sigo viendo como una opción interesante cuando no hay Visual Studio, pero sigue muy lejos del mejor editor de Xml que existe XmlSpy ojala algun dia se pasen al lado oscuro.

XmlNotepad2007.gif

 

Saludos

El Bruno

Configurando cuentas de mails con Outlook 2007

Buenas,

desde la Beta 1; una de las características que mas me sorprendió y me gustó de Microsoft Outlook 2007; es la capacidad para configurar automáticamente una cuenta de mail a partir de los datos de la misma.

Por ejemplo para mi cuenta de Bruno  en Avanade, los parametros que pide son los siguientes:

capture_29112006_103025.jpg

Como podemos ver es tan simple como poner la direccion de mail y despues solo el servicio se encarga de resolver los parametros necesarios (servidor de mail, parametros de autenticación, etc)

capture_29112006_103055.jpg

Sin embargo, yo pensé que esta configuración solo funcionaba en entornos Windows; es decir con Exchange; pero me llevé una muy grata sorpresa cuando comencé a probar con mis cuentas de GMail (el lado oscurro de las Betas !!!!)

capture_29112006_103338.jpg

Una vez ingresado todos los datos; Nombre; Mail y contraseñas; Outlook solo se encarga de configurar los servidores POP y SMTP asociados a estas cuentas.

capture_29112006_103354.jpg

Pero aqui no termina todo; mi fabulosa cuenta de MSN; también esta soportada por este mecanismo,

capture_29112006_103434.jpg

Asi que hasta ahora; todas las cuentas de Microsoft mas las cuentas de GMal … perdón Gmail tambien se soportan. Y en una tarea que antes nos consumia mas de 10 minutos; ahora la hacemos en poco menos de uno … impresionante ¿no?.

 

 

 

Saludos

El Bruno

PD: Gracias Microsoft Office Development Team !!! esto lo voté como una sugerencia hace unos meses en los posts de los Beta Testers y … 😀

Migrando de VB6 a WPF … the easy way !!!

Buenas,

pues sí, otro traductor mas para migrar formularios a WPF. En este caso se trata de una aplicación mafiosa de origen italiano; que se presenta de la siguiente forma:

Questo convertitore consente di convertire una Form di Visual Basic 6.0 in una Windows di Windows Presentation Foundation, utilizzando XAML come linguaggio di descrizione.

Que traducido quedaría en algo parecido a: pasame un form de VB6 y te lo dejo en WPF. Básicamente genera el Xaml a partir de un archivo .frm.

Se puede descargar desde aqui; http://www.codesapiens.net/English/Products/VB62XAML/tabid/74/Default.aspx 

La primera prueba no fue muy exitosa; pero ya me instalaré VB6 para ver como se comporta frente a situaciones mas “faciles”.

ConvertVB6ToXaml.gif

Saludos

El Bruno

TFS Permission Manager 1.0 (administremos TFS)

News Room

Buenas,

he aqui otra excelente opción para administrar los persmisos de los ususarios de Team Foundation Server y complementar al ya popular TFSAdmin.

En este caso es el TFS Permission Manager 1.0; que entre las cosas interesantes con las que cuenta es la capacidad de crear templates para gestionar plantillas con los permisos con los que queremos trabajar.

El que esté interesado, lo puede descargar desde http://blogs.microsoft.co.il/files/folders/leon/entry5018.aspx

 

Saludos

El Bruno

Como definir un StrongName comun para todos los proyectos de una Solucion

Buenas,

como bien decían en un comentario sobre mi anterior artículo Cómo setear las propiedades comunes de los assemblies para varios proyectos; una opción interesante en estos casos es aplicar tambien la firma de los proyectos utilizando un strong name.

Para esto podemos agregar la siguiente linea en el GlobalAssemblyInfo.cs

<Assembly: AssemblyKeyFile(“C:TempMyKey.snk”)>

 

otro pequeño truquito que nos ayuda un poco más.

 

Saludos

El Bruno

Validation Application Block

Proven practices for predictable results

Buenas,

algo nos habia contado Tom Hollander en el TechEd, pero por fin … tenemos otro un AppBlock para las validaciones.

 

Validation Application Block: Revealed!(11/27/2006 12:33:01 PM)

Some early details of the upcoming Validation Application Block have been posted to Tom’s blog. Please take a look and let us know if you have any questions or suggestions!

Posted By tomhollander

Tengo que compararlo con el que poseemos en Avanade y ver las virtudes y desventajas del mismo … ya les contaré.

 

 

Saludos

El Bruno

Accediendo a TFS desde Delphi

News Room

Buenas,

después de ver una interfaz cliente para acceder a Team Foundation Server 100% desarrollada en Java por la gente de Teamprise, e implementada en Eclipse en el TechEd; ahora me encuentro con SourceConneXion.

SourceConneXion provee una interfaz para acceder a las funcionalidades de Team Foundation Server desde el IDE de Borland; Borland Developer Studio para Delphi y C++. En realidad provee una interfaz para acceder a la API SCC, por lo que es TFS compatible, y tambien permite conectarse con SourceOffSite, StarTeam, PVCS, Serena VM 8, Perforce, Surround SCM, CVS (With PushOk CVS Proxy), Subversion (with PushOk SVN Proxy), ClearCase, MKS Source Integrity, QVCS, CS-RCS, etc.

Impresionante , no ??? a ver si consigo quer algun amigote del lado oscuro de C o Delphi lo pruebe y me cuente algo al respecto.

 

Saludos

El Bruno

Desarrollando con Office, .Net y algun (anti)virus molesto

Buenas,

después de pasar una semana mas que interesante en Barcelona, donde los días de 15 hrs de trabajo no me dejaron postear todo lo que hibiese querido; voy a recapitular y a comenzar a contar las cosas interesantes con las que me encontré.

Por ejemplo, parte de la aplicación que desarrollamos se integra con Microsoft Office 2007 y aprovecha el modelo de objetos de Outlook para realizar algunas tareas. Sin embargo, en algunas PCs nos encontrábamos con el siguiente error:

System.IO.FileNotFoundException: Retrieving the COM class factory for component with CLSID {0006F03A-0000-0000-C000-000000000046} failed due to the following error: 8007007e. at ConsoleOutContactsLabs.Program.GetOutlookContacts() in C:Documents and SettingsAdministratorMy DocumentsVisual Studio 2005ProjectsOutContactsConsoleOutContactsLabsProgram.cs:line 36

Además este error no podía ser reproducido, y se ocasionaba de forma errática. Así que manos a la obra y a ver que tenía en particular en algunos momentos particulares alguna PCs en particular que lanzaba este error. Después de buscar y preguntar bastante (muchas gracias a todos los compañeros de Microsoft, a Pedro y a Jaume); terminamos dándonos cuenta que el error estaba dado por un bloqueo en el acceso a la interfaz COM de algunos componentes de Office.

En particular la interfaz de acceso de Outlook se encuentra en el registro de Windows en la clave HKEY_CLASSES_ROOTCLSID{0006F03A-0000-0000-C000-000000000046}InprocServer32; dentro de la misma hay que modificar el valor de la entrada por defecto y dejarla en blanco. En el caso del error, la misma apuntaba a C:Archivos de programaArchivos comunesSymantec SharedScript BlockingScrBlock.dll; y era este otro componente de un antivirus muy conocido el que se encargaba de bloquear el acceso.

Pues bien, aqui les dejo esta pequeña experiencia y espero que nadie tenga que sufrirla mucho :D.

 

Saludos

El Bruno

Download de archivos (the easy way)

Buenas,

después de unos días mas que movidos en Barcelona, donde tuve un par de jornadas intensivas de produccion A FUEGGOOO !!! he sacado en claro lo siguiente:

  1. Parece que existe una harina que no hace grumos, yo ni siquiera sabia que la harina con grumos es un problema; pero se ve que este invento es mejor que el WWF.
  2. Para la próxima semana en Sabadell (Barcelona); me tengo que traer un poco mas de ropa porque parece que 2 dias son igual a 5 y un parapente para pasear; con el viento que hay es la mejor forma de viajar.
  3. Hay muchas formas de bajar un archivo utilizando .Net; antes podíamos utilizar el objeto xmlHttpRequest, que estaba dentro del paquete MSXML2. Ahora con .Net 2.0 y la nueva librería System.Net, las cosas son mucho mas fáciles.

Dentro de esta librería tenemos la clase WebClient, que es realmente fantástica. La misma posee los siguientes métodos y lo interesante de los mismos, es que para bajar un archivo, por ejemplo; ya traen una interfaz para realizar este trabajo en Background.

OpenWrite

Retrieves a Stream used to send data to the resource.

OpenWriteAsync

Retrieves a Stream used to send data to the resource, without blocking the calling thread.

UploadData

Sends a byte array to the resource and returns a Byte array containing any response.

UploadDataAsync

Sends a Byte array to the resource, without blocking the calling thread.

UploadFile

Sends a local file to the resource and returns a Byte array containing any response.

UploadFileAsync

Sends a local file to the resource, without blocking the calling thread.

UploadValues

Sends a NameValueCollection to the resource and returns a Byte array containing any response.

UploadValuesAsync

Sends a NameValueCollection to the resource and returns a Byte array containing any response, without blocking the calling thread.

UploadString

Sends a String to the resource, without blocking the calling thread.

UploadStringAsync

Sends a String to the resource, without blocking the calling thread.

OpenRead

Returns the data from a resource as a Stream.

OpenReadAsync

Returns the data from a resource, without blocking the calling thread.

DownloadData

Downloads data from a resource and returns a Byte array.

DownloadDataAsync

Downloads data from a resource and returns a Byte array, without blocking the calling thread.

DownloadFile

Downloads data from a resource to a local file.

DownloadFileAsync

Downloads data from a resource to a local file, without blocking the calling thread.

DownloadString

Downloads a String from a resource and returns a String.

DownloadStringAsync

Downloads a String from a resource, without blocking the calling thread.

 

Los nombres son muy claros, pero como siempre 2 lineas de código valen mas que mil comentarios.

 

   1:  Public Class Form1
   2:   
   3:    Private WithEvents client As New System.Net.WebClient
   4:   
   5:    ''' <summary>
   6:    ''' Handles the Load event of the Form1 control.
   7:    ''' </summary>
   8:    ''' <param name="sender">The source of the event.</param>
   9:    ''' <param name="e">The <see cref="System.EventArgs" /> instance containing the event data.</param>
  10:    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  11:   
  12:      Dim file As String = "www.google.com/images/el_logo_de_google.gif"
  13:      Dim fileDownload As String = "ellogodegoogle.gif"
  14:   
  15:      ' inicia la descarga
  16:      client.DownloadFileAsync(New System.Uri(file), fileDownload)
  17:   
  18:    End Sub
  19:   
  20:    ''' <summary>
  21:    ''' Handles the DownloadFileCompleted event of the client control.
  22:    ''' </summary>
  23:    ''' <param name="sender">The source of the event.</param>
  24:    ''' <param name="e">The <see cref="System.ComponentModel.AsyncCompletedEventArgs" /> instance containing the event data.</param>
  25:    Private Sub client_DownloadFileCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs) Handles client.DownloadFileCompleted
  26:   
  27:      ' validacion de errores
  28:      If e.Cancelled Or Not (e.Error Is Nothing) Then
  29:        MsgBox("ha ocurrido un error durante la descarga")
  30:        Exit Sub
  31:      End If
  32:      MsgBox("Descarga finalizada")
  33:   
  34:    End Sub
  35:   
  36:  End Class

como podemos ver el objeto client es el encargado de realizar todo el trabajo. En la linea 16 se llama a la funcion DownloadFileAsync(), donde se especifica el archivo que deseamos bajar y el nombre del archivo local que queremos crear. Por otra parte en la linea 25, se captura el evento DownloadFileCompleted() y validamos un argumento para ver si el download fue success.

Espero que les sea útil, a mi me ha servido muchisimo. 

 

Saludos

El Bruno

Vista Rtm is here !!!

Buenas,

después de confirmar que nuestros amigos de KFC quieren conquistar al mundo, sin utilizar un Lego estuve comiendo pollo y casi me muero de la indigestión, decidí tomar venganza contra el Office 2007 e instalarlo.

Me vino bien darme cuenta que el esquema de instalación de productos sigue siendo el mismo en Vista, es por eso que cuando desinstalamos por lo general queda basura en la registry SI SI SI la Registry y tenemos que limpiarla a mano.

Esta imagen le traera recuerdos a mas de uno;

Office2007Setup01.gif

pero despues de limpiar los datos erróneos de la misma podemos ver muy felices el siguiente splash screen

Office2007Setup02.gif

Sin embargo lo mejor esta por venir, porque desde ayer a la noche ya TENEMOS VISTA DISPONIBLE EN MSDN

VistaonMsdn.jpg

ya ha quedado en descarga, muy lenta seguramente ya que medio mundo Microsoft debe estar descargandose la misma

 

Saludos

El Bruno