Archivo del autor

Estoy en geeks.ms

19 enero 2010

Hola a todos !!

Llego algo tarde, así que es posible que muchos de vosotros ya os hayáis enterado por otra vía, pero por si queda algún rezagado, tengo la suerte de anunciaros que formo parte de la comunidad geeks.ms:

http://geeks.ms/blogs/lmanez

En este nuevo blog escribiré los artículos más “frikis”, “teckies”, “geeks”, o como lo queráis llamar. Si no sabéis a que me refiero, es que no necesitáis leerlo 🙂

Pero no me voy del todo, así que por aquí seguiré escribiendo sobre dirección de proyectos.

Espero encontraros por aquí, y por geeks!

Saludos!!

Acceso TFS 2010 desde VS2008

9 noviembre 2009

Hola a todos!!

No digo nada nuevo si os hablo del nuevo Team Foundation Server 2010 Beta en su versión Basic (excelente para los que todavía vemos el TFS como un “monstruo”). El gran Luis Fraile habla de ella aquí

Sobre la instalación detallada, hay un post muy bueno aqui. Además, tenemos un tutorial excelente, con mucha pantallita y describiendo la funcionalidad que más vamos a utilizar, aquí

De lo que ya no hay tanto, es a la hora de conectar desde VS2008 Team a TFS2010.

Antes de empezar, quiero dar las gracias a Bruno, por su inestimable ayuda.

Bueno, la primera mala noticia (o buena), es que os hará falta instalar el VS2010 Team, al menos en una máquina que tenga conexión al TFS, ya que lo primero que necesitamos es crear un Project Team, y esto sólo se puede hacer desde Visual Studio 2010. OJO!! esto no lo sé al 100%, pero por lo que he probado, no lo he podido crear desde VS2008, y Bruno me dice que en la primera beta seguro que No se podía.
Sobre como crear un project Team, lo tenéis perfectamente explicado en el tutorial de Jason.

Una vez creado el Project team, veremos que podemos acceder desde el mismo IE, con una URL del estilo: http://ServidorTeam/tfs/web.

Si como yo, tenéis el servidor TFS en un grupo de trabajo (no creo que sea recomendable, pero estoy en pruebas), o en un dominio distinto a la máquina cliente, os pedirá unas credenciales válidas para el servidor TFS. Si no queréis estar poniendo esas credenciales cada vez que accedáis, os recomiendo que agreguéis unas credenciales de red para el servidor TFS. Para esto, nos vamos a “Panel de Control -> Cuentas de usuario -> Administrador de credenciales”

panel_control
Os recomiendo que agreguéis 2 credenciales, 1 para el servidor, y otra para servidor:puerto (tal como tengo en la imagen)

Agregar credenciales

OK, vía web tengo acceso, y ya no tengo que meter el usuario cada 2×3, vamos a por VS2008!!. Si vamos a “Herramientas -> Conectar con TFS” y rellenamos el dialogo:

addTFS
boom!! error:

error_tfs

Para solucionar esto, a mi me ha funcionado lo siguiente:

  1. Asegúrate de que tienes instalado el SP1 de VS2008
  2. Edita la clave del registro: HKEY_CURRENT_USER/Software/Microsoft/VisualStudio/9.0/TeamFoundat ion/Servers y añade un valor de tipo cadena de texto, cuyo valor sea la URL del TFS, incluyendo la colección de proyectos a la que queremos conectar. Será algo como: http://srv_team/tfs/DefaultCollection, donde “tfs” es el directorio virtual donde se haya instalado el TFS y “DefaultCollection” es el nombre de la colección de proyectos. Si no has hecho nada “raro” tendrás un DefaultCollection.

Con esto, si volvéis a VS2008 e intentáis conectar al TFS, veréis que ya os aparece registrado el servidor anterio, y deberíais poder conectar. Si no os funciona, probar a editar la URL del registro, añadiendo una “/” al final de la misma.

Ya está! ahora deberíamos poder conectar al TFS y utilizar el control de código fuente.

Para acabar, tened en cuenta que con VS2008 contra TFS 2010, no váis a poder hacer todas las tareas que permite el VS2010. Si intentáis crear un work item, por ejemplo, os dará un error. No sé si eso se puede solucionar de alguna manera, o que más limitaciones tenemos en ese sentido. Lo bueno es que desde team web access sí que funciona todo.

Nota: Mientras escribía el post, he leído un nuevo post de El Bruno, donde nos cuenta que MS ha sacado una herramienta para poder hacer “de todo” desde VS2008. Mirad esto

Espero que le pueda ahorrar algo de tiempo a los 2 ó 3 locos que estamos probando TFS 2010 desde VS 2008 🙂

Saludos!!

Problemas con Yammer desktop y Windows 7?

4 noviembre 2009

Hola a todos,

No sé si os ha pasado, pero el desktop de Yammer ha dejado de funcionarme tras la última actualización del mismo. Puntualizo, en realidad parecía que funcionaba, pero no lo veía por ningún sitio. Vamos, que me salía el icono en la barra de windows, pero hiciera lo que hiciera, la aplicación no se maximizaba.

Os dejo el enlace donde en uno de los comentarios está la solución que me ha funcionado:

http://help.yammer.com/forums/58332/entries/48611

En concreto, lo que he hecho:

  1. Desinstalar Yammer
  2. Desinstalar AIR
  3. Eliminar a mano, las carpetas de Yammer y AIR que hay en: C:\Users\tu_usuario\AppData\Roaming (la de AIR, está en /Adobe)
  4. Obtener últimas versiones de Yammer y AIR
  5. Instalar AIR, instalar Yammer.

Si tenéis otras aplicaciones haciendo uso de AIR, al intentar desinstalarlo, os dirá que esas aplicaciones lo necesitan. Yo en mi caso lo he hecho teniendo Tweet Deck, y una vez reinstalado AIR, ha seguido funcionando sin problema.

Espero que os sirva.

Saludos!!

Yo estuve allí!! – Train the trainers + Codecamp

2 noviembre 2009

No, no lo dejé grabado en la puerta de ningún baño, más que nada porque los mismos eran tan bonitos que daba gusto mirarlos… creo que me estoy desviando del tema.

Llego un poco tarde, no he podido sentarme a escribir hasta ahora, pero no puedo pasar la oportunidad de escribir alguna reflexión sobre el tema. ah!, el tema, vale:

Hace un par de viernes, tuve el gusto, de ser invitado por MS aun evento a nivel nacional, llamado “Train the trainers” (que marketing tienen estos tíos, jajaja). Allí estaba yo, junto a los MVPs a nivel nacional, los “jefes” de los grupos de usuarios .net de España, y los estudiantes “de MS” (las jóvenes promesas, vamos, ah! y vienen pisando fuerte).

En resumen, aquello fue extraordinario! las ponencias, una pasada!, lo mejor, el ambiente que se respiraba entre tanto crack (crack=gurú, no penséis mal :)) que me hizó sentir algo pequeño, pero con una ilusión, una fuerza y unas ganas de llegar a su altura, que no puedo expresarlo 🙂

Pese a que no puedo destacar a nadie puesto que todos eran geniales, si quiero y debo dar las gracias a David Salgado, Luis Fraile y Miguel Lopez, que me arroparon en todo momento y me hicieron sentir uno más. Gracias chicos!!

Y tras el TTT, llegó el codecamp y seguimos compartiendo salas, charlas, cafés, problemas, inquietudes… Aquí también quiero agradecer a la organización la currada que se han pegado para organizar este macroevento. Llenamos el hotel!! y desbordamos las previsiones (concurso de guitar hero incluido, en el que no participe porque lo mío es más la guitarra clásica… jeje).

Y para acabar, os recomiendo que estéis muy atentos a la web del codecamp, ya que se han empezado a colgar los materiales de las ponencias, y son de mucha calidad. Tb se espera que suban los vidéos de las mismas.

Nada más, os dejo un par de fotillos, para los que no os lo creéis 🙂

TTT_cracks

ttt_equipo

(estoy algo escondido, pero es q estaba impresionado jeje)

Saludos!!

Excepciones en .NET, ¿seguro que quieres manejar un System.Exception?

25 septiembre 2009

Hola, aquí Luis (presentación copiada de los blogs de los equipos de productos de MS) 🙂

Retomando un post anterior relacionado con el manejo de excepciones y la diferencia entre Throw y Throw ex, he leído algunas cosas interesantes sobre el manejo general de excepciones.

El título de uno de los post que he leído, dice algo como: “Porque un empty catch o un catch(exception) es una mala idea“, pero visto el profundo debate de comentarios que ha provocado el post, yo no me atrevería de decir tanto 🙂

El artículo en cuestión, recomienda no hacer catch del tipo System.Exception, y utilizar Excepciones hija (ArgumentException, etc). Es decir, fíjate en la operación que estás haciendo, y en las excepciones que se pueden lanzar. Ejemplo, si intentas abrir un fichero, una de las posibles excepciones será FileNotFoundException.

La razón que da el artículo, es que una excepción del tipo System.Exception, significa un fallo de sistema (recomiendo que leáis estos 2 artículos que se enlazan desde el primer post y que son del gran Krzysztof Cwalina:

y los fallos de sistema, “no tienen nada que manejar”. Vamos, que si tienes un fallo de puntero en memoria, busca el puntero y llévalo al taller!…

Pero entonces, ¿nos tenemos que olvidar del típico bloque?

try

catch ex as Exception

Pues hombre, aquellos de vosotros que estéis acostumbrados a desarrollar servicios 24×7 y a integrar varios sistemas, cada uno de su padre y de su madre, seguramente os parecerá duro renunciar a dicho bloque. Sinceramente, a mi también me lo parece. En esas ocasiones, creo que conviene manejar fallos de sistema y hacer un buen log del mismo, además de tomar la decisión de si queremos matar el servicio o seguimos funcionando. En los comentarios del post inicial, veréis que también se discute este tema, y el autor del post, defiende que en estos casos es mejor no manejar dicha excepcion y dejar que la aplicación “explote” con el típico mensaje de windows y la posibilidad de enviar el registro a MS… En mi opinión, decidirlo vosotros según el sistema que estéis desarrollando y sus necesidades.

En resumen, creo que es buena práctica manejar las excepciones propias de las operaciones que estamos realizando, y dejar abierto a las necesidades del sistema, si queréis manejar fallos del sistema, o no. Como veréis, de nuevo en informática tiramos del principio del gallego… depende!! 🙂

Más info de interés al respecto:

Espero que os sirva!!

Saludos.

Instalar oracle express 10g en windows 7

3 septiembre 2009

Hola a todos,

Imagino que alguno de vosotros ya habréis empezado a trastear con las primeras versiones de windows 7 beta. Además actualmente ya hay una versión “no beta” (RTM creo que la llaman) para aquellos que son partners de MS.

Yo me he instalado la versión para partners, y a priori, las primeras sensaciones son buenas, si bien la compatibilidad con algunas aplicaciones está siendo algo complicada, y las marcas todavía no ofercen soporte para 7, porque no está disponible al público en general. Por ejemplo, no he conseguido que funcione el Orange internet everywhere con el modem Huawei E160.

Otro de los problemas con los que me he encontado, ha sido con la instalación del Oracle Express 10g. Este lo he conseguido resolver de forma bastante sencilla, así que la comparto con vosotros, por si os ayuda y ahorra tiempo (por google no he encontrado gran cosa).

Si intentáis la instalación, probablemente os encontraréis un error del propio installer de windows. En mi caso era un error 1604 (si no recuerdo mal). Este error tiene que ver con problemas de permisos de escritura. Por cierto, tenéis una tabla que detalla los error code del windows installer:
http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx

Problemas de permisos??? que raro, si soy administrador total de la máquina…
Tras esta profunda reflexión, probé la opción de ejecutar el instalable como administrador (botón derecho -> “Ejecutar como administrador”). Nada, seguía fallando con el mismo error. caca de vaca:

Lo siguiente que he probado es una opción del windows 7 que me ha sorprendido gratamente :). Otra vez botón derecho -> Solucionar problemas de compatibilidad. De esta forma, Windows 7 calcula la mejor manera de instalar la aplicación, en función de “y esto antes de mi, en que otro windows te iba??”.

 compatibilidad1

Es decir, te permite instalarlo como si tuvieras un windows anterior (al menos en teoría). Pero no sólo eso, si no que te da otras opciones para calular la mejor forma de instarlo.

compatibilidad2

Como véis, la cosa pinta bien, y es una buena idea, sin embargo, tampoco me funciono, seguía con el mismo error.

Finalmente, tratándose de problemas de permisos, se me ocurrió lo siguiente:

  1. Antes de arrancar el proceso de instalación, creé a mano la carpeta donde se iba a instalar: c:\oraclexe
  2. Edité la seguridad, y agregué el usuario “Todos” con control total sobre esa carpeta
  3. Lancé de nuevo la instalación

“Sorprendentemente”, funcionó!! y ya tengo un oraclexe en mi windows 7 🙂

Supongo que al ser problema del windows installer, está solución os puede servir si os ocurre con otras instalaciones.

Espero que os ahorre algo de tiempo.

Hasta la próxima !!!

Throw o Throw Ex, esa es la cuestión

15 agosto 2009

Estaba revisando un artículo de code project (que no os enlazo porque es algo viejo y no creo que algunas de las cosas sean válidas hoy en día), cuando en un punto de dicho artículo menciona la diferencia de usar throw ex y/o sólo throw. Esto me ha hecho recordar que hace unos días, mi compi Jose Antonio (un crack!), me contó algo al respecto y me he decidido a indagar algo más.

De lo que he leído, os paso 2 enlaces muy buenos sobre el tema y en los que me he basado para este resumen.

http://geekswithblogs.net/sdorman/archive/2007/08/20/Difference-between-quotthrowquot-and-quotthrow-exquot-in-.NET.aspx

http://aspadvice.com/blogs/joteke/archive/2004/04/15/2277.aspx

Básicamente, lo que viene a decir es, que al usar throw ex, se hace un limpiado del Stack Trace, lo que hace que al llegar la excepción a la capa de arriba, ésta sólo contenga información en el stack trace, de la última excepción producida, y no “acarree” posible información de excepciones que se haya podido producir en otros métodos anteriores. Esto, que es algo complejo de explicar por escrito, lo podéis ver muy fácilmente en el ejemplo del segundo artículo, donde hay varias excepciones anidadas y se ve claramente que con throw Ex se pierde información, de los errores acumulados.

Algo similar ocurre cuando capturamos una excepción, pero lanzamos una nueva excepción personalizada. Ejm (copiado del primer artículo):
code1

Para evitar eso, a la hora de lanzar la excepción personalizada, se aconseja pasar como parámetro la excepción capturada:

throw new ApplicationException("operation failed!", ex);

Así que, como regla general (que no fija), mejor lanzar la excepción con Throw para tener la máxima información del Stack Trace 🙂

Para acabar, por si alguien dudaba de la importancia de manejar adecuadamente los errores de nuestra aplicación, aquí os dejo un par de imágenes curiosas:

Pantallazo azul a lo grande!!
error_azul

system_error
(Esta última, por increíble que parezca, tb es una historia real, podéis verlo aquí … flipo!…)

Saludos!!

HolaMundo IoC, Inyección de dependencias con Spring .net

9 agosto 2009

DI con Spring
Si has oído hablar del patrón de Inversion Of Control (IoC), o Dependency Injection, pero no terminas de entenderlo. Si eres conocedor de Spring .net y sus numerosas ventajas, pero lo ves enorme y no sabes como hacer un sencillo ejemplo de Inyección. Y si además (y esto ya es la leche!) eres uno de esos de la secta del Guille y te gusta programar en Visual Basic, espero que este post te pueda ayudar 🙂

Indice

Qué es eso de dependencia?
Usando interfaces
El patrón factory
Inyectando con Spring .net
Y esto para que nos sirve en el mundo real?

(more…)