¿Por qué diversificar una web en múltiples servicios?

Miércoles, 26 Marzo 2008

Hace poco tiempo empecé a diversificar a distintos servicios de mi web alojada en el servidor de laboratorio durante casi ocho años. Tras meditar la decisión, el sitio web original queda simplificado proporcionando información de contacto profesional y enlaces al resto de servicios. Esta decisión se basa en dos causas fundamentales

Una de ellas es un posible cambio en la política interna de gestión del servidor que, aunque es muy necesario para su correcta gestión, dificultaría el uso de muchos de los gestores de contenidos usados. Evidentemente, este no es un motivo fundamental para tomar una decisión de esta envergadura y se podrían buscar alternativas adecuadas, pero sí el empujoncito que hacía falta para acabar de decidir.

El motivo fundamental es el mantenimiento. La web empezó siendo una simple página HTML que evolucionó rápidamente hasta convertirse en un compendio de distintos contenidos: un blog, galería de imágenes, wiki… junto con otros múltiples sistemas auxiliares. La gestión de esta torre de babel se convirtió en un infierno, acrecentado por la vorágine de actualizaciones en los gestores (especialmente, las de WordPress y sus plugins).

El intento de aglutinar todos estos contenidos bajo un único gestor (Drupal) mejoró notablemente el mantenimiento. Sin embargo, seguía existiendo un gran ritmo de actualización tanto del gestor como de sus extensiones.

Planteando la posibilidad de cancelar la web, surgió la idea del cambio de política. Tras analizar diversas opciones de migración, surgió la idea de migrar a este blog los contenidos importantes. El blog se convertía de esta forma en el componente principal en la nueva etapa, culminando algo que había sido la tendencia durante los últimos tiempos. En paralelo surge la idea de migrar otros contenidos a otros servicios de forma similar.

La guinda del pastel aparece con Mi ID, el servicio que permite resumir la actividad de todos los servicios en un único lugar y proporcionar una fuente RSS por si alguien quiere seguir toda la actividad. Además, sirve de proveedor de OpenID y es una mini-red social.

La principal ventaja de esta solución es que desaparece la necesidad de mantenimiento ya que cada servicio mantiene la aplicación actualizada y operativa. Como contrapartida, se reduce el nivel de control y/o personalización y se incluyen elementos extra (barras de promoción o enlaces al proveedor).

Falta explicar qué servicios y los motivos por los que se eligieron, pero esa es otra historia.


¿En qué escribir un proyecto o tesis?

Domingo, 23 Marzo 2008

Mi primer contacto con los procesadores de texto se produjo con el mítico Wordperfect 5 para MS-DOS. Con el salto a Windows 95, se produjo la migración a Office Word, que se convirtió en la aplicación para la creación de documentos para el instituto, la universidad (mi proyecto está escrito con Word) y para el trabajo. Sin embargo, y tras más de una década utilizándolo, surgen nuevas necesidades que hacen necesario buscar nuevas alternativas.

Pero, ¿qué necesidades son esas? ¿son tan importantes después de 10 años?

Manejar documentos grandes:
Cuando se maneja un documento de más de 50 páginas, el sistema se ralentiza para paginar. Además, si se incluyen imágenes, los tiempos de carga y presentación se disparan siendo muy difícil de gestionarlos.
Mantener la coherencia:
Es muy sencillo cambiar el formato de ciertas partes del documento pero es casi imposible mantener el formato de los títulos, encabezados y pies de página, figuras y tablas con su pie…, a pesar de los estilos y auto-textos, salvo que tengas la férrea disciplina de no usar nunca los botoncitos de formato.
Gestión de bibliografía:
Por increíble que parezca, no existe soporte para gestionar las bibliografías de los escritos. Los programas externos y las extensiones no suelen dar buenos resultados.

Bueno, ¿qué alternativas hay? ¿Merecen la pena?

El primer sistema probado es DocBook, un dialecto de SGML. Se trata de una sintaxis XML, por lo que es altamente estructurado, para la escritura de documentos técnicos como manuales. Su ventaja es su mayor inconveniente: la gran rigidez de la estructura dificulta la escritura, aunque un buen editor puede paliar este inconveniente. Además, es difícil integrar contenidos, como los listados con formato (no existe ni una sola etiqueta que pueda usarse para dar formato, como resaltar palabras clave en otro color). También carece de soporte nativo para bibliografías aunque existen extensiones más o menos acertadas.

Logotipo de LaTeX (escrito en LaTeX)

Como segunda opción estaba LaTeX, el sistema tipográfico por excelencia, que produce documentos de aspecto profesional y ampliamente utilizado en ambientes académicos y de investigación. Se encuentra en un punto medio entre Word y DocBook: Ofrece la posibilidad de cambiar el formato de forma manual, mediante las etiquetas apropiadas, pero no es necesario hacerlo prácticamente nunca, de eso se encargan los estilos. Además, cubre todas las necesidades: gestiona bien documentos grandes al usarse pequeños ficheros de texto con el contenido, el formato se mantiene intacto al estar asociado a la etiqueta y tiene un sistema muy integrado para gestionar bibliografías (BibTeX).

El principal miedo ante este sistema es que parece programar (tienes que compilar para generar la salida), y será difícil de aprender, instalar y configurar… nada más lejos de la realidad. Se trata de un lenguaje de marcado similar a HTML (si, el de las páginas Web) pero con distintas “etiquetas” de las que, realmente, se usan muy pocas mientras se escriben los documentos, por lo que se terminan memorizando con el uso. En cuanto a la compilación, existen entornos que se encargan de todas las tareas.

Pero no sólo cubre las necesidades, sino que abre un nuevo abanico de posibilidades: sencillez para añadir expresiones matemáticas a un documento, escritura de cartas, currículum, informes técnicos… existe un repositorio de paquetes para extender la funcionalidad permitiendo incluir listados con coloreado de sintaxis, incluir figuras escritas en el mismo formato, generar pósteres, diapositivas y un largo etcétera. Esto lo hace apropiado no sólo para escribir un proyecto fin de carrera o una tesis, sino para memorias de prácticas o informes.


Sistemas de control de versiones: Subversion

Viernes, 21 Marzo 2008

De los múltiples sistemas existentes, uno de los más útiles y utilizados es Subversion. Subversión surge para reemplazar al gestor usado en sistemas Unix (CVS) con el objetivo de mejorar algunos aspectos que dificultaban el uso de la aplicación. Existen versiones tanto del cliente como del servidor para cualquier plataforma.

El servidor de Subversión gestiona un repositorio centralizado con la política copiar-modificar-mezclar. Sin embargo, existen herramientas para sincronizarlo con otros repositorios y es posible configurar repositorios con la política bloquear-modificar-desbloquear. Las características fundamentales son:

  • Número de versión global al repositorio que se incrementa con cada cambio, por lo que es posible volver a una versión anterior indicando dicho número global.
  • Control de cambios en ficheros y directorios (si, almacena y controla cambios en árboles completos de carpetas y ficheros). Mantiene el histórico de versiones de un fichero aunque se mueva o renombre.
  • Detecta y trata apropiadamente los ficheros binarios, uno de los puntos débiles de CVS. A estos ficheros les añade una propiedad indicando su tipo.
  • La transmisión entre cliente y servidor incluye únicamente los cambios lo que supone un ahorro del ancho de banda. Además, los cambios se calculan a nivel de byte (en lugar de línea ampliamente usado) lo que reduce aún más el tamaño de las modificaciones.

Por su parte, es posible atacar al servidor utilizando distintos clientes independientemente de la plataforma en la que ejecute cada uno de ellos. Es posible utilizar un cliente en Windows que se conecte con un servidor en Unix o Mac y viceversa. Esta facilidad, permite la creación de clientes bastante avanzados adaptados a cada plataforma como, por ejemplo, la integración con documentos de office que dispone el cliente de Windows.

El uso de subversión es muy sencillo. El proceso si se usa una consola es:

svn co ruta_repositorio [destino]
Descarga una copia (checkout) de cualquier carpeta contenida en el repositorio (no es necesario bajar la raíz del repositorio, se puede bajar cualquier carpeta contenida en el mismo) que se denominará copia de trabajo. La copia de trabajo son ficheros locales en la máquina por lo que puede ser modificada según se desee.

Las rutas de repositorio tienen la forma protocolo://usuario:password@servidor/ruta. Existen múltiples protocolos como Webdav, svn (protocolo propio), svn+ssh (protocolo svn a través de un túnel ssh para asegurarlo…

svn update
Se encarga de descargar los últimos cambios del repositorio y mezclarlos en la copia de trabajo para que coincida con la última versión disponible.

Si en el proceso de mezcla se detectan conflictos irresolubles, se marcan en la copia de trabajo para que el usuario los resuelva. De esta forma, se evita corromper el repositorio.

svn ci [ruta]
Cuando se finalizan los cambios se envían al repositorio (commit). En este momento, se comprueba si la versión base del usuario es la última del repositorio y si es así se envían los cambios creando una nueva revisión.

Si las versiones no coinciden, el usuario deberá actualizar (update) su copia de trabajo con lo que se marcarán los conflictos en la copia de trabajo.

Además de este cliente de consola, existen aplicaciones gráficas que realizan ese trabajo de forma transparente y más agradable para el usuario.

Subversion logoSi se utiliza Windows, la opción más adecuada es TortoiseSVN. Es un cliente que se integra con el explorador de Windows y que permite realizar todas las acciones mediante entradas en el menú contextual de los ficheros y carpetas.

Para el escritorio KDE existe un plugin similar denominado kdesvn aunque no implementa toda su funcionalidad. Sin embargo, para un uso habitual es suficientemente útil.

[ Publicado originalmente el 24 de agosto de 2007 ]
 
Este artículo pertenece a la serie
Control de versiones
Referencias:

Sistemas de control de versiones

Miércoles, 19 Marzo 2008

Cuando se plantea la implantación de mecanismos de gestión de configuración, existen múltiples alternativas que deben ser estudiadas según las necesidades de cada caso.

La primera alternativa, aunque la más desaconsejable, es la gestión manual. En este caso, la línea base es la última versión del producto. Para modificar dicha versión es necesario formular una petición de cambio cumplimentando el formulario definido. Esta petición de cambio es evaluada por un comité para determinar la idoneidad de su implantación y, si es aceptada, se implementa generando una nueva versión. Evidentemente, para evitar que se pierda la versión anterior, es necesario almacenar una copia y es donde surgen los ficheros con nombres según la versión, fechas, ficheros comprimidos con versiones…

Esta alternativa tiene algunos aspectos bastante negativos: su gran sobrecarga, la facilidad con la que el sistema se rompe con lo que es invalidado y la lentitud que supone la burocracia en el proceso de cambio. Su único punto favorable es que es 100% adaptable a las necesidades.

Evidentemente, esta alternativa no es muy viable en la práctica (como sufrí durante ingeniería del software durante la carrera). Sin embargo, existen herramientas que se encargan de automatizar prácticamente todas las tareas: los sistemas de control de versiones.

Los sistemas de control de versiones son programas que se encargan de controlar y gestionar los distintos cambios que se producen en el producto. Este producto puede ser desde el código de un programa, un libro, planos…

Todos los sistemas de control de versiones se basan en el concepto repositorio. Un repositorio no es más que el conjunto de versiones del producto. Una vez creado, los distintos usuarios realizan sus cambios sobre el repositorio que se encarga de almacenarlos permitiendo la recuperación de cualquier versión. Existen dos tipos de repositorios:

Centralizado:
El repositorio es único y reside en una máquina accesible por cualquier usuario. Este es el modelo más usual.
Distribuido:
En este caso, existen múltiples repositorios accesibles por cada usuario. Cada usuario utiliza un repositorio cualquiera y existen mecanismos de sincronización entre repositorios.

En cualquiera de los dos casos, el repositorio es compartido por todos los usuarios (o al mismo usuario desde distintas máquinas) que tengan acceso al mismo. Es posible que se produzcan ediciones simultáneas de los mismos elementos que generen conflictos. Para solucionar este problema existen dos políticas básicas de resolución de conflictos:

bloqueo-modificación-desbloqueo:
En esta política se evitan las modificaciones concurrentes. Cuando un usuario desea realizar una modificación, indica el elemento a modificar que queda bloqueado en el repositorio por lo que se impide el acceso al resto de usuarios (exlusión mutua). Cuando finaliza de realizar sus cambios, los envía al repositorio liberando el bloqueo con lo que el resto de los usuarios puede obtener la copia actualizada para realizar sus propios cambios.
copiar-modificar-mezclar:
Esta política permite las modificaciones simultáneas. Cada usuario hace una copia del repositorio en su máquina y procede trabajar con ella como si no fuera un repositorio. Cuando finaliza su trabajo, envía los cambios al repositorio que se encarga de analizar los cambios realizados por el usuario y los que se han realizado en el propio repositorio y realiza la mezcla.

Evidentemente, la primera política es mucho más restrictiva lo que dificulta el trabajo diario ralentizando el acceso a los recursos y ocasionando problemas si no se liberan recursos bloqueados. La segunda, por su parte, tiene como inconveniente que no siempre es posible mezclar los cambios realizados aunque en esos casos, utiliza al usuario que envía cambios para solucionar esos conflictos irresolubles automáticamente.

Existen numerosas aplicaciones para controlar versiones: CVS, darcs, Sourcesafe, Subversion… cada una con sus características únicas. A partir de la próxima entrega se analizará una de ellas.

Este artículo pertenece a la serie
Control de versiones
[ Publicado originalmente el 23 de agosto de 2007 ]
 

Gestión de configuración

Lunes, 17 Marzo 2008

La gestión de configuración es un nombre rimbombante para denominar el conjunto de procedimientos que permiten controlar los cambios realizados sobre un producto. Definido de modo coloquial, permite controlar los cambios que generan las diferentes versiones.

Durante el desarrollo de cualquier producto, no solamente del código de un programa, éste evoluciona mientras se realizan sucesivos cambios en él. Sin ir más lejos, un libro no se escribe entero en un par de horas sino que se prolonga durante un número de sesiones indeterminadas durante las cuales se añade más y más contenido. Esta adición de contenido realmente son cambios sucesivos al documento. Evidentemente, no todos los cambios consisten en adicciones sino que muchas veces se modifican o eliminan partes ya existentes por diversos motivos.

Independientemente del tipo de cambio realizado, los cambios no son siempre definitivos ni correctos. En muchos casos, un cambio introduce un error que es corregido con cambios posteriores pero, en algunos casos, se desearía poder deshacer completamente un cambio erróneo. En estas circunstancias es cuando interviene la gestión de configuración.

Mediante los procesos definidos en la gestión de configuración, es posible trazar los cambios que se han realizado en el tiempo. Al disponer de esta información, es posible identificar y controlar todos y cada uno de los cambios realizados. Asimismo, es posible regenerar sin errores el estado del producto en cualquier momento de su desarrollo, es decir, cualquiera de sus versiones.

La implantación de la gestión de configuración puede parecer complejo en un inicio pero simplifica enormemente el trabajo a corto plazo. Una vez implantado se transforma en una herramienta indispensable de trabajo.

Existen múltiples formas de implementar la gestión de configuración. En un par de prácticas de la carrera se implementa un proceso manual basado en formularios de petición de cambio sobre la línea base (la última versión existente) que se cumplimentaban, evaluaban, implementaban y revisaban. Este procedimiento manual es completamente inútil y ocasiona una gran sobrecarga.

Para implantar la gestión de configuración, lo mejor es utilizar una herramienta que automatice el proceso. El uso de estas herramientas hace que aplicar la gestión de configuración tenga un coste cercano a cero pero proporciona todas las ventajas del proceso.

En el siguiente capítulo de esta serie, se describirán estas herramientas en profundidad antes de describir cómo implantar y utilizar una de ellas.

Este artículo pertenece a la serie
Control de versiones
[ Publicado originalmente el 22 de agosto de 2007 ]
 

Leer comics en el ordenador

Sábado, 15 Marzo 2008

Aunque estén denostados en el sistema educativo, los cómics son una buena forma de acercar la lectura a los niños. Nuestra generación ha disfrutado de grandes dibujantes y guiones que nos han entretenido y arrancado carcajadas durante largas horas.

En este mundo, cada vez más digital, los cómics han sufrido una transformación equivalente. Los cómics digitales no son más que imágenes escaneadas y comprimidas, con las extensiones cbr o cbz (Comic Book Rar y Comic Book Zip, respectivamente). Para poder disfrutar de esta versión digital es necesario un visor de cómics que facilite su presentación y lectura.

Existen varios programas que realizan esta labor con mejor o peor desempeño aunque todos ellos tienen la misma base: presentar las imágenes escaneadas en orden, ya sea de un directorio o de un fichero cbr/cbz, que se descomprime de forma automática, presentándolas a una o dos páginas, aplicando filtros para mejorar la calidad de la imagen y con gran resolución para facilitar la lectura.

La primera búsqueda suele acabar en CDisplay, el visor de cómics por antonomasia en Windows. Esta pequeña aplicación realiza su labor a la perfección y sin demasiadas florituras. Carece prácticamente de interfaz y opciones, con la excepción de un pequeño menú oculto en el botón derecho del ratón.

RayViewer

Sin embargo, existe una alternativa de gran interés y con acento hispano: RayViewer. Proporciona una interfaz similar al Acrobat (versiones previas a la 8), dispone de un buen conjunto de filtros y no es especialmente pesado. Hay que destacar su filtro lanczos que permite mejorar la imagen adaptándola al tamaño de la pantalla con una calidad increíble. Unido al prefetch (mientras se lee una página se aplican los filtros a la siguiente para reducir el tiempo de carga) proporciona la mejor experiencia de usuario.

Comical en Windows 2000

Para aquellos que no utilicen Windows como su sistema operativo hay una alternativa multiplataforma. Comical es uno de los visores más ligeros, programado en C++ y con una buena calidad de imagen gracias a sus filtros. Lo único malo de esta opción es que lleve casi dos años sin evolucionar.

Sin duda, en la actualidad, es posible disfrutar de nuestra colección de cómics digitales preservando los originales en papel del deterioro por el uso, aunque éstos siempre tengan su encanto…


Textos para pruebas tipográficas: lipsum y pangramas

Miércoles, 12 Marzo 2008

En la fase de maquetación de un documento o una página web o para probar un tipo de letra es necesario visualizar el aspecto del diseño. En este momento se necesita un contenido sobre el que aplicar el formato para obtener esta muestra. Cualquier texto puede utilizarse con este cometido, puesto que lo importante es el aspecto no el significado y será reemplazado en la versión final.

Sin embargo, existe un texto que se utiliza desde la invención de la imprenta con este fin. Este texto se conoce como lorem ipsum, o abreviado lipsum. Se trata de un texto escrito en latín compuesto de fragmentos de un manuscrito escrito por Cicero en el año 45 a.C. Evidentemente, carece de significado por lo que se centra la atención en el diseño en lugar del contenido.

Un caso un poco diferente es la prueba de un nuevo tipo de letra. Es posible utilizar un lipsum para visualizar el aspecto de una composición general. En este caso sería deseable que se mostraran todas las posibles letras pero un lipsum no dispone de muchas de ellas (en latín no existen acentos por ejemplo). Para este caso se utilizan los pangramas. Un pangrama no es más que un texto que utiliza todas y cada una de las letras del alfabeto pero con una extensión mínima (cualquier texto de gran tamaño será un pangrama), lo que implica que se repita el menor número de letras. También es posible crear pangramas que incluyan símbolos de puntuación, acentos, números…

Cada lenguaje tiene sus propios pangramas. Uno de los existentes en español es bastante conocido ya que se utiliza en el visor de fuentes de Windows («El veloz murciélago hindú comía feliz cardillo y kiwi. La cigüeña tocaba el saxofón detrás del palenque de paja») que tiene la peculiaridad de incluir todas las letras acentuadas y una diéresis aunque es bastante largo y comprende dos frases.

En internet existen diversos recursos que facilitan la labor de diseño. Si se necesita un texto de pruebas para probar el formato de algún diseño se puede utilizar el generador automático de lorem ipsum o el generador de texto simulado que pueden configurarse para que generen textos de distinta longitud para ruebas (número de palabras, párrafos…). Para el diseño de tipos de letras existen varias páginas que tratan los pangramas y múltiples ejemplos, aunque el más completo es el “veloz murciélago hindú”.