July 2008 - Artículos - Jorge Serrano - MVP Visual Developer - Visual Basic

July 2008 - Artículos

Tengo la costumbre de que cuando navego por Internet y veo algo que me interesa, lo grabo en formato XPS imprimiendo la información por la impresora virtual XPS. Antes lo guardaba en formato html o mht, pero últimamente me he acostumbrado a hacerlo en formato XPS.

El siguiente propósito futuro será guardar esa información en un CD o similar, y mediante una búsqueda de indexación mantener esos contenidos. Pero eso lo dejo para otro momento.

El caso es que una vez que he guardado el documento XPS, si quiero imprimir ese documento XPS en cuestión, lo abro en Windows y lo mando a la impresora. ¿Fácil verdad?. El problema no obstante lo tengo cuando por ejemplo quiero montar un documento Word con más de un archivo XPS, algo que me ocurre en más de una ocasión.

Estoy seguro de que hay muchas formas de hacerlo, por ejemplo la de abrir el archivo XPS, seleccionar todo, copiarlo y pegarlo a Word, pero con esta técnica, pierdo el formato del documento XPS (tablas, colores, etc), algo que en según que circunstancias no quiero que suceda.

Rascándome un poco la cabeza he pensado que quizás, una forma de no perder el formato del documento XPS sea exportando el XPS a imágenes y pegar las imágenes en el documento Word... ¿pero como hacerlo?.

Me he puesto a mirar en Internet y a la segunda intentona voilá. He encontrado una utilidad de nombre TreasureUP XPS to Image Converter 1.0 que hace justamente lo que quiero, permite exportar un documento XPS en imágenes JPEG, PNG o GIF.

He instalado la utilidad, la he probado, y debo admitir que funciona muy bien. El documento Word resultante tiene un formato de calidad suficiente para lo que yo quiero. El arrastrar y soltar en estos casos es de lo mejor que se ha inventado porque en apenas medio minuto, tengo mi documento Word totalmente preparado.

Lo mejor de todo, es que TreasureUP XPS to Image Converter 1.0 es una utilidad gratuita para particulares. Las empresas deben pagar si lo utilizan durante más de 30 días. Para mi uso privado particular es lo ideal.

No sé si alguien se encontrará con el mismo problema que yo me he encontrado con los documentos XPS. Seguramente haya más formas de hacer esto que comento, pero esta utilidad la he marcado hoy en mi carpeta de imprescindibles por lo sencilla y cómoda que es.

Encontraréis esta utilidad en la web de TreasureUP.

Otra particularidad es que en la misma web, encontraremos otra utilidad para exportar documentos Pdf a imágenes también, aunque esta última utilidad no la he probado ni tampoco se si es o no gratuita para usos particulares.

Espero que todo esto le sirva a más de uno.

Publicado por Jorge Serrano | 8 comment(s)
Archivado en: ,

 

Microsoft ha publicado la versión 3.0 del SDK Beta 2 de Microsoft .NET Micro Framework, el marco de trabajo para pequeños dispositivos que funcionará con Visual Studio 2008.

Recordemos que la última versión que apareció fue Microsoft .NET Mini Framework 2.5 SDK.

Desde la página principal de proyectos en curso de Microsoft, más conocida como Microsoft Connect, podemos registrarnos con una cuenta Live y solicitar la descarga de esta versión.

Pero para que la gente se anime a descargar, instalar y usar esta nueva versión de Microsoft .NET Mini Framework, Microsoft sorteará un RicaVision VAVE100 Universal Remote Control entre todas las entradas de registro recibidas.

Encontrareis más información en la web del equipo de trabajo de Microsoft .NET Micro Framework acerca de esto que os comento.

El enlace a Microsoft Connect lo encontrareis aquí.

 

Como amante de Visual Basic como lenguaje de desarrollo, a veces viene bien por la curioidad más que nada, saber o conocer qué personas hay detrás del lenguaje, es decir, qué personas desarrollan e implementan las utilidades, novedades y características del lenguaje.

Por esa razón me parece muy curioso lo que Beth Massi (que fue MVP y que desde hace poco más de 1 año trabaja en ese mismo equipo) ha publicado recientemente.

En este enlace, podremos acceder a la entrada que Beth Massi ha escrito sobre esta información que os indico.

Allí encontrareis también el video que han publicado en Channel 9 de una entrevista con gente del equipo de Visual Basic. En esa entrevista, se les pregunta acerca de sus procesos de diseño, sus características favoritas, lo que piensan acerca de otros lenguajes de desarrollo, así como la estrategia a seguir por Visual Basic.

Encontraréis el video en este enlace además de en la entrada de Beth.

Publicado por Jorge Serrano | con no comments

 

Live Search se ha renovado,... pero por dentro.

De todos es asumido que el buscador Web por excelencia hoy día es Google, no vamos a descubrir nada excepcional.

También es (o mejor dicho era) asumido por todos, que Live Search era un buen buscador pero no tan bueno como Google.

Ahora bien, Live Search ha madurado y ha crecido, y buena prueba de ello es que ha mejorado y mucho como buscador Web. Tanto es así, que podríamos decir que Live Search es casi igual de potente que Google desde principios de esta semana.

Como la mejor forma de convencerse de que Live Search ha madurado como buscador Web es practicar con ello, os dejo el enlace de Live Search para que vosotros mismos hagáis vuestras cuentas y pruebas.

Publicado por Jorge Serrano | 4 comment(s)
Archivado en:

 

Microsoft ha publicado la versión Beta de Microsoft Office Outlook Connector, el complemento para Microsoft Office Outlook 2003 y Microsoft Office Outlook 2007 que nos permitirá acceder y administrar nuestras cuentas de Microsoft Live, mensajes de correo electrónico, contactos y calendarios, de forma gratuita.

El conector ocupa unos 4.5 Mb y está disponible tanto en inglés como en español, así como en otros idiomas.

Recuerda que es una versión Beta.

Podrás encontrar esta herramienta en el siguiente enlace.

Publicado por Jorge Serrano | 4 comment(s)
Archivado en:

 

Encuentro en el blog de Hilary Pike, Academic Developer Evangelist, una entrada muy interesante que trata sobre una utilidad muy curiosa y muy friki, hablo de la posibilidad de controlar tus presentaciones PowerPoint desde tu teléfono.

Para ello, utilizaremos nuestro Windows Mobile como un dispositivo Bluetooh.

Las instrucciones son muy sencillas. Por un lado descargar la herramienta Windows SlideShow for Windows Mobile Developer Preview de fecha 03/07/2008 y por otro descargar el gadget Office PowerPoint Remote que encontraremos en este otro enlace.

El resto es coser y cantar.

Publicado por Jorge Serrano | 2 comment(s)
Archivado en:

 

Justo ahora que estoy llevando a cabo un pequeño proyecto de carácter abierto y del cual no quiero desvelar aún nada hasta que el tema esté algo más avanzado, me encuentro con una serie de interesantísimos artículos de Avi Pilosof en los que nos da unas interesantes pistas de como desarrollar aplicaciones son Silverlight utilizando funciones físicas como por ejemplo la utilizada para trazar la trayectoria de un proyectil.

Los artículos escritos en inglés, 5 en concreto, son los siguientes:

Espero que los artículos os gusten tanto como a mí.

 

0) Introducción

Mi amigo Luis Fraile, ha escrito recientemente una entrada muy interesante que recomiendo leer acerca del valor de las personas en los proyectos Software.

No puedo estar más de acuerdo con sus afirmaciones, de hecho ha tocado temas muy sensibles para mucha gente de estos blogs y fuera de ellos. Seguro que más de uno se ha sentido identificado o al menos ha pensado y reflexionado acerca de si él o ella también estará metido en el saco de la problemática que comenta Luis tanto como espectador o como actor.

No obstante y dado que me encanta todo lo relacionado con los recursos humanos (emplear la frase recursos humanos nunca me ha terminado de gustar, me gusta más gestor de personal), me gustaría agregar unas pinceladas personales a lo expuesto por Luis, porque debo reconocer que tenía ganas de hablar de esto desde hace muchísimo tiempo, pero entre unas cosas y otras lo vas dejando y ahora con la entrada de Luis me he visto más animado que nunca para hacerlo, así que ahora o nunca.

Lo que comenta Luis en su entrada no solo es aplicable, como casi todo el mundo sabrá, al desarrollo del Software. De hecho, podemos exponer los pensamientos de Luis que ha hecho en voz alta en cualquier trabajo que se nos ocurra.

Ahora bien, todo lo comentado en la entrada de Luis se resume en mi opinión y experiencia personal en una única palabra: motivación. Alrededor de esa palabra hay muchas connotaciones como por ejemplo lo que comentaba Luis de sentirse valorado. Muchas de estas connotaciones son capaces de hacernos reflexionar con una bebida en la mano durante largas horas. Aún y así, trataré de explicar a continuación con explicaciones y gráficos mis experiencias, impresiones, pensamientos y reflexiones personales sobre estos y otros aspectos relacionados con la vida personal y profesional, con el valor de la persona, con el valor humano, con el valor del personal de un departamento, con la motivación de los individuos.

1) La carrera profesional del individuo

Marcando una línea virtual de la carrera profesional de una persona, en un extremo podemos poner la desidia de la persona y en el otro extremo de esa línea la motivación. Ambos puntos son antagónicos y reflejan dos estados de ánimo en el individuo completamente contrapuestos.

La persona es un ser humano, NO es una máquina, de hecho se mueve en esa línea de forma constante y frecuente. Permitidme que repita esto... la persona NO es una máquina, es un ser humano.

En la siguiente imagen, podemos ver de forma esquemática esto que comento. Por lo general he conocido tres grupos principales de personas en lo que a mi experiencia profesional se refiere. En un grupo están aquellas personas que por diferentes motivos (no están realizados profesionalmente, no están motivados suficientemente, no se encuentran en un ambiente que satisfaga sus necesidades profesionales, etc) se encuentran en un estado anímico de desidia... de ellas diríamos... paso de todo. En el otro extremo se encuentran aquellas personas a las que les pasa justamente lo contrario, son personas que poseen una gran motivación,... de ellas diríamos literalmente que están dispuestas a comerse el mundo. En el punto medio, se encuentran aquellas personas que sobreviven sin problemas al día a día, no tienen ninguna gana de superación personal ni profesional, y de momento no les va mal de ellas diríamos literalmente como porque tengo que vivir, pero sin mayores esfuerzos.

En la mayoría de las ocasiones, cada persona es dueña de su carrera profesional, y cada individuo puede marcar el rumbo que desee a su carrera profesional. Nunca es tarde, el problema residiría entonces en la resignación.

2) La persona como individuo, como ser humano

Una cosa es hablar de la carrera profesional del individuo en la empresa y otra distina de la persona. Los aspectos que motivan a un individuo pueden no motivar a otro. El entorno de un individuo puede afectar positiva o negativamente a su rendimiento. Siempre digo lo mismo, no somos máquinas,... aunque muchas empresas y personas piensen otra cosa (hacer dinero generalmente a costa del prójimo).

Por otro lado, tal y como he comentado de forma muy breve anteriormente, la relación directa entre ambos puntos antagónicos está estrechamente vinculada con el estado anímico de la persona, su entorno, su grupo de relación, etc. Además, cada persona es diferente a otra. Quien piense que la persona no se mueve en esa línea, o que se comporta de forma previsible, o bien que se tiene que comportar de la misma manera que quien la tiene que valorar (que las cosas que motiva a un sujeto motiva de igual forma a cualquier sujeto), tiende en mi modesta opinión al fracaso como gestor de personal, más que nada porque cada persona es "ÚNICA" y diferente.

La motivación tiene muchas implicaciones positivas como la responsabilidad, la participación, la implicación, etc. La desidia es un estado anímico que provoca una inercia de desencanto y apatía hacia el día a día que por lo general entra en barrena, de la cual es muy complicado salir. Pero cuidado, aunque una persona con motivación no se suele mover hacia la desidia, sí lo hará con más rapidez que una persona de la desidia a la motivación.

En la siguiente imagen, muestro lo que en mi opinión tiene relación directa con la persona. Las influencias anímicas y personales de cada individuo, tienen una estrecha vinculación con lo profesional y puede afectar al grupo. Aquí vemos a una persona por separado, pero en un proyecto con interelación entre personas, los estados anímicos de una persona puede afectar al grupo entero.

En la imagen se reflejan aquellos aspectos no profesionales, y sí los personales. Las influencias del entorno personal son muy importantes, así como el grupo de relación con el que se relacione la persona. Todos estos vínculos, conforman igualmente el estado anímico de la persona. Es decir, el estado anímico tiene una importante parte estrechamente ligada al entorno profesional, y otra al entorno más íntimo de cada persona.

De ahí que en muchas ocasiones digamos que a veces tenemos un "día perro", uno de esos días en los que la cabeza no funciona como en otros días, falta de reflejos, de actividad y de concentración. Quizás estemos preocupados por algo, hemos pasado mala noche, o simplemente no tenemos el día. ¿Quién no ha tenido nunca un "día perro" en su vida?... yo por lo menos sí.

Cuando la motivación empieza a fallar, el paso de la motivación a la desidia es mucho más ágil y rápido que de la desidia a la motivación. Algo parecido pasa en Marketing con los clientes perdidos y los antiguos clientes recuperados. Si lo pensamos fríamente, al igual que una empresa que vende productos debe renovarlos y mostrarlos siempre con ventajas, las empresas deben actuar de igual forma con los empleados.

3) El responsable de un grupo de personas

El responsable del equipo puede ser técnicamente un fuera de serie, el mejor del mundo, pero en mi opinión se requieren muchas más cosas para ser realmente un buen jefe o un buen responsable de un equipo de trabajo.

Una de las palabras clave es en mi opinión la empatía. Pero no es la única. De hecho requiere muchas más cosas, como son la psicología, la comunicación, la comprensión, conocer al equipo, aportar compañerismo y crear clima de equipo, y así con todo esto, retroalimentar nuevamente al grupo aportando la motivación necesaria.

En la siguiente imagen indico lo que en mi opinión son los puntos fuertes del responsable y los errores más comúnes. Evidentemente un punto fuerte no conseguido se convertirá en error común, por lo que en errores comúnes solo pongo uno, muy importante por cierto, pero la ausencia de un punto fuerte creará un error en la dirección de un grupo de personas.

Hay en todo esto una máxima que siempre he tenido en cuenta y de la cual no me gusta hablar mucho, ya que lo considero algo muy personal... y es que nunca prometas lo que no estés seguro de cumplir y mucho menos lo que no puedas cumplir.

Lo que nunca debe crear un responsable es tensión, sino eliminarla. Parar o frenar los golpes, no transmitir la tensión hacia abajo o al menos la menos posible, y dosificar el trabajo de acuerdo a los factores de motivación o del momento personal de cada persona. El responsable debe evitar el efecto de bola de nieve y jamás debe generar miedo. Un responsable que genera miedo y tensión es mi opinión un jefe nefasto para el grupo.

4) El trabajo en equipo

Y todo esto ¿porqué?.

Simplemente por el trabajo en equipo.

En muchas empresas nos podemos encontrar con un pequeño organigrama como este (yo lo he vivido):

 

En este dibujo, lo que quiero resaltar es que en muchas empresas tenemos la imagen del responsable como persona que gestiona un equipo pero fuera de él. Al equipo se le lanza las tareas para que las ejecute y ya nos indicarán sus avances.

Lo siento mucho, pero no me identifico para nada con esa imagen. Me identifico muchísimo más con esta otra:

El equipo lo gestiona una (o más) personas, pero el equipo está formado por todos los integrantes del proyecto, y el responsable (Jefe de Proyecto si lo prefieres) es una persona dentro de la estructura del equipo. Existe una implicación y una relación mucho más estrecha que permite crecer al grupo y motivarlo, no encontrarse solo, aislado y sin apoyo.

La única salvedad en esta última imagen, es que los integrantes del equipo deben ser conscientes de que existe un responsable del equipo que tiene unas misiones concretas para con el grupo.

5) Los objetivos

Los objetivos son muy claros. El grupo de trabajo se debe motivar a sí mismo creando un clima de trabajo y de equipo que permita llevar un ritmo de trabajo mucho más ilusionante.

La labor de motivar al grupo no reside o no debe residir únicamente en el responsable.

Existe una retroalimentación de todos los integrantes del equipo que beneficia al grupo por completo. La complicidad es un arma psicológica muy valiosa para el trabajo en equipo.

La motivación, el rendimiento y los resultados, están estrechamente ligados entre sí.

6) Mis conclusiones

No es mi objetivo dar lecciones a nadie de lo que tiene o debe hacer, primero porque no me considero la persona indicada, segundo porque cada uno se debe basar en su propia experiencia algo que yo he hecho en esta entrada.

Existen muchas más cosas de las que no he hablado aquí, pero que tienen por misión enfatizar los aspectos más destacables que sí he tratado en esta amplia entrada.

La experiencia personal es la que nos ayudará a aprender y crecer en todos los ámbitos de la vida. No obstante, lo que sí espero es que estas reflexiones sirvan para ayudar a abrir los ojos a más de una persona o por lo menos para cuestionarse algunas cosas del día a día.

Publicado por Jorge Serrano | 14 comment(s)
Archivado en: ,

 

Acceso a la página oficial de MAD.NUG.

Nuevamente el grupo de usuarios de .NET de Madrid a la carga... y en esta ocasión con el evento titulado "Integrando WCF y WF en Microsoft .NET Framework 3.5".

En este evento que tendrá lugar el próximo jueves 24 de Julio de 2008 en las oficinas de Microsoft a partir de las 19:00 horas, Roberto González, MVP de Biztalk nos hablará de como integrar WCF y WF.

El evento responde a las novedades incluidas con respecto a Microsoft .NET Framework 3.5, WCF y WF cubriendo las necesidades expuestas por la Comunidad de desarrolladores de todo el mundo. En este evento se tratará las bondades de exponer los flujos de trabajo como servicios, y como desde un flujo de trabajo, se puede llamar a un servicio desarrollado en WCF.

Si quereis más detalles de lo que se hablará en el evento, os recomiendo acceder a esta entrada del blog oficial de MAD.NUG.

El registro gratuito al evento lo encontrarás en este enlace.

Y como siempre... ¡OS ESPERAMOS A TOD@S!.

Publicado por Jorge Serrano | con no comments
Archivado en:

 

No suelo acostumbrar a hacer este tipo de entradas, pero es que la he visto tan interesante que he pensado que podría ser muy útil para mucha gente.

No se si conoceis el sitio giveawayoftheday.com, pero en este sitio se pone una aplicación casi por día para ser descargada gratuitamente.

La aplicación de hoy a la que la queda unas horas, se llama iSpring Pro 3.5, y es una aplicación o mejor dicho, un complemento de PowerPoint, que nos permitirá crear películas Flash con buena calidad para nuestras presentaciones. Así, podremos publicar el flash correspondiente en nuestros blogs, sitios web, etc, algo altamente interesante para formación gratuita, los grupos de usuario, y otras tantas aplicaciones que se me están ocurriendo ahora.

Las condiciones de descarga, nos obliga a utilizar esta aplicación para uso no comercial, y el complemento, funciona perfectamente en Office 2007.

Espero que sea del interés de más de uno.

Podrás acceder a esta aplicación en este enlace.

Publicado por Jorge Serrano | 3 comment(s)
Archivado en:

 

Hoy me he encontrado con uno de esos problemas muy viejos en ASP.NET y que no es menos importante por ser tan antiguo, sino por lo extraño del funcionamiento y su solución, sobre todo para el que empieza con ASP.NET, así como lo rápido que olvidamos a veces como resolver estas pequeñas piedras que aparecen en el camino con la consiguiente pérdida de tiempo.

Se trata de usar el control Menu (System.Web.UI.WebControls.Menu) dentro de una página maestra o no, y de detectar cuando el usuario hace clic en uno de los elementos del menú, es decir, utilizando el evento (Menu1_MenuItemClick).

Hasta aquí lo normal.

Para preparar nuestro menú, podemos crear una colección de elementos (propiedad Items del control Menu) o bien, haciéndolo dinámicamente utilizando para ello un elemento del menú [objeto MenuItem :: Dim menuElement As New MenuItem()] y agregando este elemento al control Menu [Me.Menu1.Items.Add(menuElement)].

Por supuesto, no solo debemos crear un MenuItem, sino que a este objeto le debemos dotar de propiedades y características que satisfagan nuestras necesidades para luego agregarlo al control Menu como hemos indicado anteriormente.

Una de esas propiedades que podríamos utilizar podría ser la propiedad NavigateUrl. Una propiedad que asocia al elemento del menú con una dirección Web determinada que es justamente lo que el sentido común pide. Otra propiedad de este control es la propiedad Text y Value. Text es la propiedad que contendrá el texto de la dirección Web, y Value un valor del elemento del menú. Al crear un elemento nuevo y cambiar la propiedad Text a través de la ventana de propiedades, la propiedad Value toma por defecto el mismo valor que Text.

Bien, y ahora el problema...

Al trabajar con páginas Web, a veces cometemos un error bastante grande, y es olvidar que el uso de NavigateUrl para controlar sobre qué elemento se ha hecho clic es inviable, es decir, el uso de NavigateUrl no lanzará el evento Menu1_MenuItemClick que es el evento que nos permite controlar sobre qué opción del menú hemos hecho clic y que es en esta entrada el objetivo a resolver.

La solución residiría en eliminar el valor de NavigateUrl, por lo que la pregunta directa que surge es...
Pregunta: ¿Y como controlo entonces a que dirección Web quiero enviar al usuario al hacer clic sobre una determinada opción del menú?.
Respuesta: Utilizando la propiedad Value.

Es decir, el menú tendría esta forma:

MenuItem      0
Text              Página principal
Value            Index.aspx

Ojo: NavigateUrl no tiene valor porque no le hemos asignado ninguno.

Pero claro, al hacer clic sobre la opción del menú, no nos redireccionará por arte de magia a Index.aspx, más que nada porque NavigateUrl vale "".

La solución de todo esto está en el evento Menu1_MenuItemClick que nos permitirá saber sobre qué opción ha hecho clic el usuario.

Para controlar esta situación podríamos escribir el siguiente código:

Protected Sub Menu1_MenuItemClick(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.MenuEventArgs) Handles Menu1.MenuItemClick
    Response.Redirect(e.Item.Value)
End Sub

Ahora bien, la pregunta que podría surgir es si la propiedad NavigateUrl se utiliza o no, etc.

Pues sí, claro que se utiliza, el tema está en que a veces, nuestra aplicación debe controlar sobre qué opción hace clic el usuario, algo que es más frecuente de lo que parece, y es ahí donde el uso de NavigateUrl no nos satisface porque no lanza el evento Menu1_MenuItemClick.

El motivo por el cual el control Menu no lanza el evento Menu1_MenuItemClick al utilizar NavigateUrl es debido a que al haber especificado un valor a NavigateUrl, el control ejecuta un proceso de navegación en lugar de un proceso de postback. Aquí está el quiz de todo. Al no hacer postback, no podemos rescatar el evento y por lo tanto no somos capaces de gestionar Menu1_MenuItemClick.

Por lo tanto, cuidado al utilizar el control Menu y poner contenido a la propiedad NavigateUrl o no, porque si queremos gestionar cuando un usuario hace clic sobre una opción del menú, podríamos encontrarnos con algún que otro problema.

Publicado por Jorge Serrano | 7 comment(s)
Archivado en:

 

Microsoft ha publicado unos documentos en formato pdf sobre las especificaciones de Xaml (Extensible Application Markup Language).

Esta documentación la podrás encontrar, eso sí en inglés, en el siguiente enlace.

Publicado por Jorge Serrano | 1 comment(s)