Nota del autor

Si la entrada que estás leyendo carece de imágenes, no se ve el vídeo que teóricamente lleva incrustado o el código fuente mostrado aparece sin formato, podéis conocer los motivos aquí. Poco a poco iré restableciendo la normalidad en el blog.
Este blog es un archivo de los artículos situados previamente en Lobosoft.es y ha dejado de ser actualizado. Las nuevas entradas pueden encontrarse en www.lobosoft.es. Un saludo,
Lobosoft.

miércoles, 9 de abril de 2008

Google Docs y Microsoft Office 2007

Google proporciona, mediante sus proyectos de código (Google Code), todo tipo de herramientas, algunas de las cuales nos permiten interactuar con sus productos, como puede ser el correo, documentos o calendario. Entre ellas, se encuentra la .NET Library for the Google Data API, dentro de .NET Client Library. Mediante el uso de esta biblioteca de clases podemos desarrollar aplicaciones .NET que puedan acceder a los recursos de Google. Sin embargo, se trata de una biblioteca programada inicialmente sobre el .NET Framework 1.1, ya obsoleto, aunque es posible obtener el código y recompilarlo para el Framework 2.0, por lo que sería posible usarlo con Visual Studio 2005 y 2008.


En cualquier caso, hoy quería mostrar cómo interactuar de una forma sencilla y unilateral con Google Docs a través del correo electrónico. Google Docs, la aplicación web para la gestión de documentos (hojas de cálculo, documentos de texto y presentaciones), permite la edición en línea de los documentos, así como la conversión entre distintos formatos (tanto exportación como importación). Así, a la hora de incluir un nuevo documento, podemos crearlo directamente on-line, o subir uno que ya tengamos creado con aplicaciones del tipo de OpenOffice Writer o Microsoft Word. Sin embargo, existe una posibilidad interesante y poco usada que consiste en enviar el documento por correo electrónico, bien como documento adjunto al mismo, bien dentro del propio cuerpo del mensaje. La dirección a la que debemos enviarlo nos la proporciona el propio Google Docs en su opción Upload, y suele ser del tipo "Nombre+Del+Usuario-listadenumeros @prod.writely.com". Aunque no es la forma más elegante ni eficiente para disfrutar de las posibilidades de Google Docs, nos va a servir para unir dos proyectos presentados en Lobosoft y conseguir un sencillo método para hacer una copia de seguridad de un documento de Microsoft Word 2007 en Google Docs. Microsoft y Google juntos, ¿da miedo, verdad?


El proceso no puede ser más sencillo. Creamos un nuevo proyecto de Visual Studio 2008 del tipo Office 2007-Word 2007 Add-in. Añadimos al proyecto un nuevo Ribbon, mediante el mismo proceso que seguimos en su día en la entrada de aproximación a Visual Studio Tools for Office (VSTO v3). A continuación, añadimos la funcionalidad de envío de correo que creamos en el post sobre el envío de correos mediante Gmail y C#. Lo ideal sería, cuando tuviésemos la funcionalidad de envío y recepción de correo completa, crear un nuevo componente que pudiésemos reutilizar en nuestros proyectos, pero por la sencillez del ejemplo, simplemente traemos la clase Lobosoft.Outgleek.Mail al proyecto, y nos disponemos a usarla.


pestania.PNG


Y lo novedoso viene ahora. Simplemente debemos añadir un botón al RibbonGroup que ejecute el envío del correo. En el ejemplo, además, he incluido un pequeño TextBox donde insertar la dirección de correo a la que deseamos enviar el documento (y que será, presumiblemente, la que nos proporcionó Google Docs). En un proyecto mayor, esto podría ser configurable desde algún punto de la aplicación, al igual que los parámetros de la cuenta de correo de Gmail, y el propio servidor de correo, que usaremos para llevar a cabo el envío.


opciones.PNG


El código asociado al botón Save to Docs será el siguiente:

[csharp]
private void SaveToDocs_Click(object sender, RibbonControlEventArgs e)
{
Mail newMail = new Mail();
newMail.SendMail(editBox1.Text, DocumentManagement.DocumentName, DocumentManagement.GetText());
}
[/csharp]

Y llevará a cabo un par de acciones: recuperar el nombre del documento, a través de la clase DocumentManagement, que habremos creado a tal efecto, y el texto del documento en un formato apropiado. La recuperación del texto del documento tiene su miga, ya que (al menos hasta donde llegan mis conocimientos actuales de la jerarquía del objeto Document de Interop.Word.Document, no es trivial recuperar todo el texto y el formato del documento. Para hacerlo hemos recurrido a un pequeño truco. Usar el método Select() de la clase Document para seleccionar todo el documento para, posteriormente, copiarlo al portapapeles mediante el método Copy() de Interop.Word.Selection. A partir de aquí, volvemos a pedir al portapapeles (Clipboard) el texto del documento, indicándome mediante el parámetro format, del tipo TextDataFormat, el formato en que deseamos que nos lo devuelva, en este caso HTML.



[csharp]
public static string GetText()
{
try
{
Word.Document myDocument = Globals.ThisAddIn.Application.ActiveDocument;
myDocument.Select();
Globals.ThisAddIn.Application.Selection.Copy();
return Clipboard.GetText(TextDataFormat.Html);
}
catch (Exception ex)
{
throw ex;
}
}
[/csharp]

El documento que vamos a almacenar en Google Docs es el siguiente:


documento.PNG


Hecho esto, procedemos a enviar el correo a Google Docs, con el nombre del documento por Asunto, ya que este campo le indicará el nombre que debe dar al documento remoto, y el HTML del documento en el cuerpo del mensaje.


Accedemos a Google Docs para ver que, en efecto, un nuevo documento ha sido creado.


engoogledocs.PNG


Sin embargo, los resultados están a la vista, y la conversión a HTML que lleva a cabo el método GetText() del Clipboard no es del todo compatible con Google Docs.


eldocumentofinal.PNG


Por tanto, aunque resulta un método extremadamente simple para realizar un backup de nuestros documentos en Google Docs, no es todo lo adecuado que debería. No nos quedará más remedio, pues, que volver a compilar y adaptar el código de la .NET Client Library a los Frameworks 2.0 ó 3.5 de .NET.

martes, 8 de abril de 2008

Richard Stallman en Málaga

En todas las épocas de la Historia han existido filósofos, personas que han sabido llegar más allá del pensamiento común, y que se han volcado en la difusión de sus ideas. En nuestros días, inmersos en la revolución tecnológica que nos impone la informática, donde impera la máxima del más rápido, más potente o, simplemente, el más moderno, el usuario con frecuencia se ve absorbido por la vorágine de las actualizaciones del software, de la compra de nuevos equipos para satisfacer los requerimientos de aquél. Uno de los filósofos de nuestros días no es científico, ni escritor, sino programador, y su nombre es Richard Stallman. Ayer pudimos disfrutar de su verbo fácil y de su humor inteligente en La Casa Invisible de Málaga, donde bajo el lema Software Libre en la ética y en la práctica, este librepensador nos explicó las bases éticas que subyacen bajo la filosofía del proyecto GNU (acrónimo recursivo que significa GNU not Unix) que lidera desde 1984.


Richard Stallman


Para Stallman, el software debe ser libre porque libres son sus usuarios, e imponerles la censura y el bloqueo de sus libertades digitales, por llamarlas de algún modo, impide la práctica de sus derechos democráticos. Durante más de dos horas y media, Stallman trató temas como la ética del software, las licencias de software libre, la violación de derechos en el software, las patentes del software o la obligación del uso del software libre por parte de los gobiernos y de las instituciones educativas. Al final, como viene siendo habitual en las charlas de este "evangelizador" del software libre, se transfiguró en su otro yo, San Ignucio (Saint Ignucius), y con su mesiánica imagen nos exhortó a liberar nuestras máquinas del yugo de los sistemas operativos y resto de software privativo. Todo un personaje, sin duda.


San Ignucio


En cualquier caso, coincido con buena parte de sus palabras, de su mensaje. Como miembro fundador de una de las asociaciones sin ánimo de lucro más activas de Andalucía, que protege y vela por la conservación del medio ambiente desde hace más de 10 años, y como informático, siempre he trasmitido a mis compañeros la necesidad de usar software libre para las gestiones propias de la organización. Los gobiernos, las asociaciones y las escuelas deberían usar software libre, por muchas razones. Es gratuito, lo que lleva al ahorro del erario público, que al fin y al cabo es la suma de las aportaciones de todos. Es más seguro, ya que es probado y actualizado continuamente por una extensa comunidad de usuarios y programadores en todo el mundo. Además, no nos vemos sometidos a los vaivenes económicos y políticos de las grandes corporaciones de software. Esto se ve claramente ahora, cuando Microsoft, por poner un ejemplo, no quiere seguir dando soporte a Windows XP porque QUIERE vender su Windows Vista. Y ante la pérdida de mercado que le supondría el amplio parque informático compuesto por los equipos que no cumplen con lo requerido por Vista, desea seguir ofreciéndolo a países en vías de desarrollo. Es decir, elige cómo y a quién vende su software, o lo que es lo mismo, ahora los sistemas operativos serán como las discotecas, que se reservan el derecho de admisión.


Ante todo esto, como usuarios y ciudadanos que somos, tenemos la última palabra. ¿Y tú, eres libre?


Para saber más:




Campañas FSF:

lunes, 7 de abril de 2008

Málaga Valley

Lo siento por la temática del blog, pero acabo de leer dos noticias que no podía dejar sin comentar. Al estar tan vinculadas a mi profesión, al mundo de la programación y la tecnología, que al fin y al cabo son el propio “alimento” del blog, no creo que sean demasiado disonantes con respecto al resto de entradas del mismo.


La primera de las noticias es el estudio que en tufunción hacen sobre el salario medio de un programador en España. Obtienen los datos de la herramienta Infojobs Trend Salarios, y los resultados no pueden ser más llamativos. En España, como media, se gana algo más de la mitad de lo que ganaría el mismo trabajador en el resto de Europa: Unión Europea 34.412€ - España 20.438€. Entre las comparativas que se realizan están las diferencias salariales entre diferentes roles (analistas, programadores senior y junior…), por rangos de edad y estudios, o por tecnologías en las que se trabaja (en los casos de Java y .NET, se ve una relación de amor-odio que les hace ir a la par, ganando terreno de una a otra tecnología en determinados periodos de tiempo).


Ante esto, resulta más chocante la segunda noticia que, en cualquier caso, no es novedosa: Málaga quiere tener su propio Silicon Valley. Se avanza que la ciudad deberá acoger en las próximas décadas a más de 100.000 trabajadores especializados, mentes pensantes les llaman, que harán de la ciudad un lugar de encuentro y trabajo tecnológico avanzado. Entre las “mejoras” a la ciudad, comentan la adaptación de la misma con viviendas del futuro al más puro estilo norteamericano, dotar de más servicios a la zona aeroportuaria, y expandir el Parque Tecnológico de Andalucía.


Y me pregunto yo, que tan sólo llevo aquí (en Málaga), viviendo y trabajando algo más de un año, si todo esto que nos quieren vender son realmente ventajas. Por un lado, hemos visto que los salarios de los trabajadores de las nuevas tecnologías en España son sensiblemente menores que los de sus equivalentes en el resto de Europa, y estamos hablando de salarios medios en España. Si comparamos los salarios de Madrid, por ejemplo, con los de Málaga, podemos hablar de unos 3,000€ de diferencia aproximadamente entre dos personas en una misma categoría profesional, por lo que el salario medio en Málaga respecto al Europeo se ve aún más duramente afectado. Respecto a los proyectos en los que se trabaja, sobre todo en empresas que operan a nivel nacional e internacional, la mayor parte de los que llegan a Málaga son los “marrones” que ya han pasado por otras oficinas y no han querido quedarse. Así, tenemos unos salarios risibles para proyectos mal planificados y difícilmente salvables. Con estas premisas, no me extraña que cada vez sea menos la gente que se matricule en las Ingenierías Informáticas que, encima, legalmente no son una ingeniería, a pesar de las demandas de aquellos que ejercemos esta profesión. Sin embargo, habrá quien venga a decirnos que de qué nos quejamos, si vivimos en un entorno agradable, en la Costa del Sol, a unos minutos de la playa. Y ahora, con casas ultramodernas e hiperamericanas. Lo que no saben, o no quieren saber, es que los trabajadores del Parque Tecnológico invierten más del doble de tiempo en llegar y volver de su trabajo que el resto de trabajadores de Málaga, por unas insuficientes y deficitarias infraestructuras viarias, que los que venimos de fuera y vivimos cerca del PTA para evitar esos atascos, sufrimos los elevados precios de alquiler impuestos por los habitantes de la zona, propietarios sin escrúpulos que han visto en la afluencia de trabajadores al PTA una gallina de los huevos de oro que explotar. Que, por si no nos ponemos suficientemente morenos en la playa, y para que no pasemos frío en invierno, van a instalar una central térmica junto al PTA, por lo que nuestros pulmones podrán lucir un bronceado envidiable gracias al hollín que respiremos. Tampoco nos preguntan si envidiamos el modelo de vida americano, que aquí nos es planteado como una ventaja. Este modelo de ciudad anglosajona nada tiene que ver con la mediterránea que conocemos, y que forma parte de nuestra cultura e idiosincrasia, además de ser tremendamente insostenible desde el punto de vista medioambiental.


Ante todo esto díganme, señores y señoras, a quién carajo (con perdón) le importa Malaga Valley si no viene de la mano de una mejor calidad de vida, un medio ambiente más sano, y mejores condiciones de trabajo.

Redcode

Este fin de semana he aprovechado un poco para descansar y, tal vez por estar en casa, me han venido a la memoria tiempos pasados en los que uno era un iluso… esto… ilusionado estudiante de informática y tenía por delante todo un mundo que descubrir. En primero de carrera existía una asignatura llamada Introducción a la Informática, donde pretendían iniciarnos en el conocimiento de la arquitectura de Eckert-Mauchly a través de la programación de ODE (Ordenador Didáctico Elemental), que fue la pesadilla de tantos estudiantes de primer año de carrera. Tanto fue así, que en su día protagonizó el corto “O.D.E., el Día del Juicio” que con tanto éxito y friquismo solíamos visionar en el Día de la Escuela (antaño, el 9 de mayo).


Esta nostálgica introducción viene al caso porque, como adelantaba, este fin de semana me acordaba de aquellos tiempos, y cómo algunos estudiantes repetidores apuntaban cómo antes de la existencia de ODE y sus emuladores, se impartía en la asignatura la programación en Redcode. Para aquellos que no lo conozcan, Redcode fue el primer Core War, un juego de programación en el que varios programas compiten por acaparar los recursos de la máquina sobre la que se están ejecutando. Esos programas guerreros en cierto modo son precursores de los virus, ya que se trata de programas autorreplicantes, que intentan acaparar los recursos del sistema infectado, y eliminar todo rastro de sus adversarios. Como puede verse, desarrollar estos programas es un ejercicio de programación mucho más estimulante que programar en ODE una aplicación que obtuviese las raíces de una ecuación de segundo grado.


Redcode en un Spectrum


He estado indagando un poco, y la verdad es que existen numerosas aplicaciones que permiten ejecutar código de Redcode en la actualidad. Lo hacen sobre un Memory Array Redcode Simulator, o MARS, y existen para todo tipo de plataformas. Este tipo de programas, a su vez, permiten simular vida artificial. Imaginemos un híbrido entre ellos y el juego de la vida de Conway, por ejemplo. Podríamos programar varias especies, con comportamientos y cualidades diferentes, que interactuasen entre ellas en un entorno (ecosistema) que influyese en determinados parámetros: facilidad para su reproducción, tasa de mortandad, necesidades energéticas, etc. Existen varios programas que se basan en estas premisas para reproducir (de forma limitada, claro está) la vida de una forma artificial. Sin duda, se trata de un fascinante campo que todo aficionado a la programación y a la biología no puede dejar de explorar.


Para saber más:

viernes, 4 de abril de 2008

Google Chart Image Generator

chart2.png


Google prosigue su imparable conquista del ciberespacio aportando herramientas BBG (Buenas, bonitas y... gratis). La penúltima es su Chart Image Generator, una API accesible a través del protocolo HTTP que permite presentar en nuestra web todo tipo de gráficas. El método para interactuar con la API es bastante simple: Una URL con una serie de parámetros entre los que se encuentran el tipo de gráfica que deseamos, los valores sobre los que debe calcularla, etiquetas, etc. Las especificaciones del interfaz de la API se pueden encontrar en la página del proyecto Chart Image Generator en Google Code.Su "Hola Mundo" particular es el siguiente:

http://chart.apis.google.com/chart?
chs=250x100
&chd=t:60,40
&cht=p3
&chl=Hello|World

donde:

  • http://chart.apis.google.com/chart? es la ubicación de la API.

  • & como en toda URL, separa los parámetros.

  • chs=250x100 el tamaño de la gráfica en píxeles.

  • chd=t:60,40 la serie de valores sobre los que se calculará la gráfica.

  • cht=p3 el tipo de gráfico, según una serie de valores que especifica Google en la web del proyecto.

  • chl=Hello|World una etiqueta para la gráfica.


El resultado será una imagen con la gráfica que deseamos obtener, por lo que puede ser fácilmente incrustada en nuestra web usando la etiqueta . Así, en apenas 10 minutos he conectado los resultados que me proporciona el plugin PopStats de Wordpress y Chart Image Generator, extrayendo los datos de las tablas en una secuencia de valores sobre las visitas de los últimos 30 días al blog de Lobosoft, ubicándolo en la página principal junto al mapa de visitas.


chart.png


En cualquier caso, y aunque se puede observar que el método es simple, habría sido más intuitivo poder alimentar la API mediante tablas, como si de una hoja de cálculo se tratase. De hecho, Google ya incorpora esta funcionalidad en su paquete ofimático en línea, Google Docs, así que resulta cuando menos curioso que no haya permitido esta posibilidad en el generador de gráficas. Sin embargo, ya han surgido alternativas a este uso. Chris Heilman presenta en su blog un Javascript que permite pasar datos desde tablas HTML a Chart Image Generator.

jueves, 3 de abril de 2008

TDD Cheat Sheet

TDD


Hace un par de días hablaba sobre cómo las Cheat Sheets constituyen una ayuda para el usuario y desarrollador al ser prácticamente unas guías de referencia rápida sobre diversas aplicaciones y lenguajes de programación. En esta ocasión traigo una guía de referencia rápida del proceso de Test-Driven Development. Precisamente por ser una metodología sencilla suelen cometerse diversos errores en la adopción de TDD por los equipos de desarrollo, y el objetivo de esta cheat sheet es evitar dichos errores. Para su redacción me he basado en la referencia que Gunjan Doshi preparase para TestDriven.com, adaptándola a las necesidades de un equipo de desarrollo y ampliándola para abarcar desde las referencias sobre qué es una prueba unitaria hasta una introducción a los frameworks de pruebas, como NUnit. Espero que os sea útil. Puede descargarse desde la zona de downloads del blog.

miércoles, 2 de abril de 2008

Tenemos nuevo estándar: OOXML

Annuntio vobis gaudium magnum;
Habemus
Standarum:
Eminentissimum ac reverendissimum Dominum,

Dominum Mendax,

Sanctæ Romanæ Ecclesiæ Cardinalem Pecunia,

Qui sibi nomen imposuit OOXML.

OOXML


Hoy se ha sabido lo que ya se presentía. Microsoft ha conseguido que su formato para documentos OOXML haya sido aceptado como estándar por la ISO. De nada han servido las protestas de la comunidad, ni las turbias votaciones a que ha sido sometido en los diversos países con voz y voto en el proceso. Tenemos un nuevo estándar, con una utilidad de similares características que las del ya existente, ODF, con el que deberá coexistir. ¿O comenzará una guerra de formatos de documento, similar a las ya existentes en otros campos, como la recientemente finalizada entre HD-DVD y el BlueRay? Como usuarios, tenemos la penúltima palabra. Lo lamentable es que la última la tengan los intereses económicos.


En Kriptópolis llevan a cabo una encuesta sobre el proceso ¿Tú qué opinas?