You are currently browsing the monthly archive for septiembre 2010.

Los tooltips son estás pequeñas etiquetas emergentes que se muestran cuando el cursor del ratón queda parado durante unos instantes encima de un componente visual de una ventana. Son muy prácticos para suministrar una información adicional relacionada a este componente.

En HTML es fácil crear un tooltip con el atributo title. El atributo title es válido para todos los elementos de HTML, por lo cual se puede poner un tooltip a absolutamente todo. Con el elemento SPAN es incluso posible añadir un tooltip a un texto sin más.

Por ejemplo, el código de HTML


Soy una <SPAN title="Soy un tooltip">prueba de tooltip</SPAN>.

aparece en el navegador como en la imagen.

Ejemplo de tooltip en HTML

La etiqueta con la frase “Soy un tooltip” emergió porque, durante unos instantes, dejé el cursor parado encima del contenido del elemento SPAN, la expresión “prueba de tooltip”.

Mediante hojas de estilo puedo crear un tooltip más sofisticado que aprovecha la característica hover del elemento A. Cómo sólo este elemento tiene esta característica, debo incluir cualquier objeto con este tipo de tooltip en un elemento A.


Soy otra <A class="mi_hover">prueba de tooltip</A>.

Lógicamente debo definir la clase de estilo mi_hover de forma apropiada. Como se puede observar, el elemento A no tiene el atributo href, por lo cual no es un enlace.

Una tercera manera de crear tooltips es mediante los eventos OnMouseOver y OnMouseOut. Estos eventos pueden llamar a funciones de Javascript que pueden hacer aparecer de todo. Es la forma más compleja de hacer un tooltip pero también la más completa.

Referencias

Para relajarnos un poco me permito poner enlaces a dos juegos flash. El primero nos deja jugar a un sistema operativo popular. Aunque visualmente hace referencia a una versión veterana, la forma de usarlo no ha dejado de ser actual. Por ser un juego, esta vez no habrá datos reales a perder.

Se dice que el hardware recibe los malostratos por la culpa del software. En fin hay un software que emula el hardware. El segundo juego nos permite descargar las hormonas de estrés acumuladas durante el primer juego.

Se puede acceder a una base de datos Firebird/InterBase desde PHP de forma directa. Sin embargo, considera usar una conexión ODBC, ya que hace el programa más independiente de la base de datos usado. Si quieres conectarte directamente desde PHP, primero debes habilitar la extensión php_interbase.dll. De otra forma, PHP te devuelve un error “Call to undefined function”. Puedes establecer la conexión con

// Una base de datos en un PC con dirección IP
$host = "127.0.0.1:C:\\usr\\my database.fdb";

// El administrador de la base de datos
$username='SYSDBA';

// La contraseña pricipal
$password='masterkey';

// El rol no es requerido si ya soy un sysdba
$role = 'sysdba';

// El comando de conexión
$conn = ibase_connect($host,
                      $username,
                      $password,
                      NULL,
                      0,
                      NULL,
                      $role);

Se cierra una conexión con ibase_close.

Referencias

Las tablas de sistema de Firebird contienen todas las informaciones sobre las tablas de usuario. Como estos datos son a veces un poco críptico, conviene reunir los datos de interés en vistas propias. Muchos comandos SQL útiles para extraer información de las tablas de sistemas se encuentran en el artículo “Extracting META information from Interbase/Firebird SQL […]

Obtener información de tablas

Con esta vista puedes obtener información sobre las columnas de las tablas y sus tipos. Esta información puede ser útil a la hora de comprobar si un dato a guardar en la base de datos está en un formato correcto – por ejemplo que un campo de texto no excede la longitud máxima.

CREATE VIEW V_TABLES (TABLE_NAME, FIELD_NAME, FIELD_DESCRIPTION, FIELD_DEFAULT_VALUE, FIELD_NOT_NULL_CONSTRAINT, FIELD_LENGTH, FIELD_PRECISION, FIELD_SCALE, FIELD_TYPE, FIELD_SUBTYPE, FIELD_COLLATION, FIELD_CHARSET)AS 
SELECT  r.RDB$RELATION_NAME as table_name, 
        r.RDB$FIELD_POSITION as field_position, 
        r.RDB$FIELD_NAME AS field_name, 
        r.RDB$DESCRIPTION AS field_description, 
        r.RDB$DEFAULT_VALUE AS field_default_value, 
        r.RDB$NULL_FLAG AS field_not_null_constraint, 
        f.RDB$FIELD_LENGTH AS field_length, 
        f.RDB$FIELD_PRECISION AS field_precision, 
        f.RDB$FIELD_SCALE AS field_scale, 
        CASE f.RDB$FIELD_TYPE 
          WHEN 261 THEN 'BLOB' 
          WHEN 14 THEN 'CHAR' 
          WHEN 40 THEN 'CSTRING' 
          WHEN 11 THEN 'D_FLOAT' 
          WHEN 27 THEN 'DOUBLE' 
          WHEN 10 THEN 'FLOAT' 
          WHEN 16 THEN 'INT64' 
          WHEN 8 THEN 'INTEGER' 
          WHEN 9 THEN 'QUAD' 
          WHEN 7 THEN 'SMALLINT' 
          WHEN 12 THEN 'DATE' 
          WHEN 13 THEN 'TIME' 
          WHEN 35 THEN 'TIMESTAMP' 
          WHEN 37 THEN 'VARCHAR' 
          ELSE 'UNKNOWN' 
        END AS field_type, 
        f.RDB$FIELD_SUB_TYPE AS field_subtype, 
        coll.RDB$COLLATION_NAME AS field_collation, 
        cset.RDB$CHARACTER_SET_NAME AS field_charset 
   FROM RDB$RELATION_FIELDS r 
   LEFT JOIN RDB$FIELDS f ON r.RDB$FIELD_SOURCE = f.RDB$FIELD_NAME 
   LEFT JOIN RDB$COLLATIONS coll ON r.RDB$COLLATION_ID = coll.RDB$COLLATION_ID 
    AND f.RDB$CHARACTER_SET_ID = coll.RDB$CHARACTER_SET_ID 
   LEFT JOIN RDB$CHARACTER_SETS cset ON f.RDB$CHARACTER_SET_ID = cset.RDB$CHARACTER_SET_ID 
ORDER BY r.RDB$RELATION_NAME, r.RDB$FIELD_POSITION;

Información sobre claves externas

Con la vista siguiente puedes extraer información sobre claves externas (foreign keys).

CREATE VIEW V_FOREIGN_KEYS (TABLE_NAME, FIELD_NAME, REFERENCED_TABLE_NAME, REFERENCED_FIELD_NAME, ON_UPDATE, ON_DELETE)AS       
  SELECT DISTINCT  
--          rc.RDB$CONSTRAINT_NAME AS constraint_name,  
          rc.RDB$RELATION_NAME AS table_name,  
          d1.RDB$FIELD_NAME AS field_name,  
          d2.RDB$DEPENDED_ON_NAME AS referenced_table_name,  
          d2.RDB$FIELD_NAME AS referenced_field_name,  
          refc.RDB$UPDATE_RULE AS on_update,  
          refc.RDB$DELETE_RULE AS on_delete  
     FROM RDB$RELATION_CONSTRAINTS AS rc  
LEFT JOIN RDB$REF_CONSTRAINTS refc ON rc.RDB$CONSTRAINT_NAME = refc.RDB$CONSTRAINT_NAME  
LEFT JOIN RDB$DEPENDENCIES d1 ON d1.RDB$DEPENDED_ON_NAME = rc.RDB$RELATION_NAME  
LEFT JOIN RDB$DEPENDENCIES d2 ON d1.RDB$DEPENDENT_NAME = d2.RDB$DEPENDENT_NAME  
    WHERE rc.RDB$CONSTRAINT_TYPE = 'FOREIGN KEY'  
      AND d1.RDB$DEPENDED_ON_NAME <> d2.RDB$DEPENDED_ON_NAME  
      AND d1.RDB$FIELD_NAME <> d2.RDB$FIELD_NAME  
;
GRANT DELETE, INSERT, REFERENCES, SELECT, UPDATE
 ON V_FOREIGN_KEYS TO SYSDBA WITH GRANT OPTION;
UPDATE RDB$RELATION_FIELDS set
  RDB$DESCRIPTION = 'Table that uses the foreign key'
  where RDB$FIELD_NAME = 'TABLE_NAME' AND RDB$RELATION_NAME = 'V_FOREIGN_KEYS';
UPDATE RDB$RELATION_FIELDS set
  RDB$DESCRIPTION = 'Field whose values are restricted to the referenced field'
  where RDB$FIELD_NAME = 'FIELD_NAME' AND RDB$RELATION_NAME = 'V_FOREIGN_KEYS';
UPDATE RDB$RELATION_FIELDS set
  RDB$DESCRIPTION = 'The table which is referenced by the foreign key'
  where RDB$FIELD_NAME = 'REFERENCED_TABLE_NAME' AND RDB$RELATION_NAME = 'V_FOREIGN_KEYS';
UPDATE RDB$RELATION_FIELDS set
  RDB$DESCRIPTION = 'The field whose values are the permitted ones for the target field'
  where RDB$FIELD_NAME = 'REFERENCED_FIELD_NAME' AND RDB$RELATION_NAME = 'V_FOREIGN_KEYS';
UPDATE RDB$RELATION_FIELDS set
  RDB$DESCRIPTION = 'What to do when the referenced field value is updated'
  where RDB$FIELD_NAME = 'ON_UPDATE' AND RDB$RELATION_NAME = 'V_FOREIGN_KEYS';
UPDATE RDB$RELATION_FIELDS set
  RDB$DESCRIPTION = 'What to do when the referenced field value is deleted'
  where RDB$FIELD_NAME = 'ON_DELETE' AND RDB$RELATION_NAME = 'V_FOREIGN_KEYS';

Copiar comentarios de columnas de una tabla a una vista

Si creo una vista, entonces me gustaría tener los mismos comentarios en la vista que en las columnas correspondientes de las tablas a partir de las cuales creo la vista. Por supuesto, esto es un problema trivial para aquellos que nunca ponen comentarios en ningún sitio, pero para los demás, el siguiente comando podría ser de utilidad.

UPDATE RDB$RELATION_FIELDS set RDB$DESCRIPTION = 
       (select RDB$DESCRIPTION from RDB$RELATION_FIELDS 
         where RDB$RELATION_NAME = 'SOURCE_TABLE'
           and RDB$FIELD_NAME = 'SOURCE_COLUMN')
  where RDB$FIELD_NAME = 'TARGET_FIELD' 
    AND RDB$RELATION_NAME = 'TARGET_NAME';

El select interior lee de la tabla de la cual queremos obtener los comentarios. Podemos sustituir el paréntesis por un string si queremos asignar un comentario a medida. SOURCE_TABLE y SOURCE_COLUMN se refieren a la tabla de donde quiero copiar los comentarios y TARGET_NAME y TARGET_FIELD a la vista a donde los quiero copiar. Los nombres de las tablas, vistas y columnas deben estar en mayúsculas. De otra forma la comparación = no funcionará.

Por supuesto, antes de usar este comando SQL hay que crear la tabla y la vista a que se refieren. La herramienta de extracción de DDL (Data Definition Language) no guarda referencias a comentarios de otras tablas. Sólo presenta el comentario actualmente asignado. Por eso, conviene guardarse un fichero SQL con los comandos de copia de comentarios junto con la creación de la vista, ya que se puede ejecutar cada vez se cambia la vista.

Referencias

Firebird

Firebird, que no tiene que ver con los programas populares Firefox y Thunderbird, ha surgido de la base de datos InterBase cuyo código fue liberado por la empresa Borland ya hace tiempo. Hoy en día, Firebird es una base de datos con buenas prestaciones y que se puede usar gratis. Recomiendo echar un vistazo a la página principal de Firebird, a quienes están buscando una alternativa a otras bases de datos libres de coste como MySQL o PostgreSQL.

Como Firebird no es una de las base de datos más populares, conviene comprobar que existen los controladores necesarios para acceder a ellos. “Borland” e “InterBase” pueden ser dos palabras claves a la hora de buscar una solución.

FlameRobin

Firebird no viene con una herramenta gráfica de administración. De este rol se ocupa otro proyecto que se llama
FlameRobin. Habitualmente se instala FlameRobin junto con la base de datos Firebird.

Para registrar una base de datos existente, sigue los siguientes pasos:

  1. En el menú “Server”, selecciona “Register server”
  2. Edita la dirección y el puerto del servidor y ponle un nombre. El nombre sólo sirve como identificador en FlameRobin. Con este paso hemos registrado un ordenador, pero todavía no la base de datos.
  3. Pincha con el botón secundario en el servidor que acabamos de crear y selecciona “Register existing database”.
  4. Rellena el nombre y la base de datos (o alias) como si lo pusieras en el ordenador en que se encuentra la base de datos. Conviene rellenar también el usuario y la contraseña.

Firebird utiliza el puerto 3050 por defecto. Asegura que este está seleccionado (o el que hayas elegido).

Por cierto, al contrario de otras base de datos, hay que hacer un commit con los cambios en la data definition language (DDL = lenguaje de definición de datos).

Referencias

A la hora de crear un documento es importante saber, qué formato usamos para generarlo. Muy a menudo resolvemos esta cuestión sin pensar más: Usamos Microsoft Word para escribir una carta y creamos un documento HTML para publicar algo en Internet. Otras cosas anotamos en un simple fichero de texto o quizá tenemos una razón de usar formatos menos populares como LaTeX – por ejemplo, si trabajamos en el ámbito de las ciencias naturales. Resolvemos esta cuestión sin pensar más, porque otros ya lo han pensado, o porque simplemente no es siempre tan importante.

En este artículo queremos reflexionar sobre las posibilidades de documentación que tenemos y por qué unos formatos son más adecuados (adecuados, no mejores) para unas tareas y otros para otras. Qué formato a escoger a la hora de crear documentos es desde luego importante a la hora de crear un documento de gran tamaño, que será usada por mucha gente o se actualice durante mucho tiempo. Hay formatos tan diversas como las necesidades que tenemos y aquí no pretendemos de dar a conocer a todos. Lo que presentamos es una presentación de conceptos a tener en cuenta a la hora de eligir una tecnología u otra.

Resumen de formatos y características

Antes de proceder veremos una tabla que resume el contenido de este artículo. En la primera columna están listados unos formatos para editar documentos y en la primera fila las carácterísticas que nos interesan.

Propiedades de diferentes formatos de documentación
Gráfico ASCII Gratis Orto­grafía Gramática Multi-Idioma Guiones
Microsoft Office (Sí)
Open Office (Sí)
LaTeX (Sí) (Sí)
HTML (Sí) (Sí) (Sí) (Sí)
DocBook (Sí) (Sí) (Sí) (Sí)
Texto en­riquecido (Sí) (Sí) (Sí) (Sí)
Texto simple (Sí) (Sí)

El significado de las características es el siguiente:

Gráfico
Existe un editor WYSIWYG, acrónimo inglés para What You See Is What You Get (Lo que ves es lo que obtienes). Tener está capacidad trae la ventaja que vemos ya editando como será nuestro documento final. El contrario de esto es deber editar un fichero fuente en un editor de texto y compilarlo en un formato final. Sí entre paréntesis en esto contexto quiere decir que se puede editar documentos con editores gráficos aunque el fundamento es un texto con códigos de control (como HTML).
ASCII
El formato está basado en un fichero ASCII (de texto) que se debe compilar (transformar) de alguna forma. Por ejemplo, un fichero LaTeX es un código fuente que necesita ser procesado por un programa de nombre TeX para convertirse en un documento de aspecto gráfico. El fichero fuente en sí se parece más a un código de programación. Hay varios formatos (OpenDocument y Texto Enriquecido) que tambien están basado en ficheros ASCII. Sin embargo, no están diseñados para modificar documentos con un editor de texto.
Gratis
Indica si es software libre y usa estándares abiertos. La mayoría de los formatos gratis están basados en estándares y programas de código abierto. Sí entre paréntesis en este contexto quiere decir que puede depender del uso. Un documento en formato DocBook, por ejemplo, necesita un compilador para convertirse en un documento legible. Dependiendo del tipo de documento legible que busco (página Web, PDF etc.) puede tocar pagar o lo consigo gratis también.
Ortografía
Tiene corrector de ortografía mientras edito. Los editores gráficos suelen tenerlo. Los formatos que se basan en un fichero de fuente en formato ASCII pueden ser editado con un editor que dispone de un corrector de ortografía o no. En este contexto se puede enteneder el sí entre paréntesis.
Gramática
Comprueba la gramática del texto editado. Es una herramienta muy útil para editar texto bien redactados especialmente en un idioma extranjero.
Multi-Idioma
Ofrece la posibilidad de usarlo con facilidad con mútliples idiomas. Un sí entre paréntesis en este contexto quiere decir que tiene la posibilidad pero hay que hacer algún esfuerzo más allá de descargar un fichero para conseguirlo (como descargar librerías adicionales o pagar por ello, por ejemplo).
Guiones
Tiene separación de palabras con guiones al final de la línea. Esto es algo imprescindible para generar documentos bonitos, sobre todo si tienen el margen derecho justificado. Sí entre paréntesis quiere decir que esta opción existe teóricamente, pero no está implementado con facilidad (como en HTML) o depende del editor que se usa.

Criterios para el formato adecuado

Para elegir bien el formato para nuestro documento debemos primero fijar los criterios según los cuales eligimos. Para expresarnos mejor, definimos familias de formatos a que nos referimos a partir de ahora:

  • Editores gráficos como Microsoft Office o OpenOffice que muestran el estado visualizado con cada tecla apretada.
  • Formatos de texto como HTML, DocBook o LaTeX que se basan en ficheros de texto.
Contenido gráfico

Si mi documento contiene muchas gráficas y debo constantemente actualizar el lay-out manualmente, entonces conviene usar un editor gráfico que mete todo en un fichero. Como formatos de texto no pueden incluir algo que no sea texto directamente, deben incluirlo mediante enlaces. De esta forma se debe mantener muchos ficheros y para ver el resultado final hace falta un proceso intermedio como la compilación en caso de LaTeX o la actualización del navegador en caso de HTML.

Conveniencia

Si no quiero perder tiempo a aprender un nuevo formato para editar documentos, entonces uso uno que ya conozco. En general es más fácil usar editores gráficos ya que son más intuitivos. Los formatos de texto son más fáciles a generar por programas de documentación automática.

Otro punto importante puede ser la corrección de errores lingüisticos. Un corrector de ortografía que sulinea todas las palabras que no conoce puede ser una ayuda para dejar el documento en un mejor estado desde el principio. Microsoft Office ofrece incluso un corrector de gramática. Desgraciadamente Microsoft Office viene con un número de idiomas bastante reducido. Según lo políglota que soy me pueden interesar correctores de muchos idiomas diferentes. Y finalmente puede influir también la ayuda en línea que suministra el programa que uso para entenderlo.

Tiempo de uso

¿Qué es la probabilidad que vaya abrir, imprimir o modificar el mismo documento en diez años? Si escribo una solicitud de empleo será cercano a cero, si escribo un diario cercano a uno. A priori nunca se sabe qué formato se hará obsoleto, es decir, ya no habrá programas que lean y muestran los contenidos del fichero correctamente. En general es menos probable que un formato popular y basado en un estándar abierto se hará obsoleto que uno de una aplicación específica. Para un uso de larga duración son, por lo tanto, recomendables los formatos abiertos y de texto.

Habrá más personas con el mismo problema si un formato popular se hace obsoleto, y será al menos teóricamente posible de escribir un conversor si el formato sea abierto, o sea, que se puede obtener la documentación necesaria para intepretar correctamente los contenidos del fichero. Una empresa con el peso de Microsoft puede aprovechar su formato no abierto para hacer incompatible documentos de diferentes versiones. Como tampoco vende versiones antiguas de su producto Office es posible que una empresa se ve obligada a comprar muchas licencias nuevas sólo para que un grupo de autores puede seguir trabajando en un mismo documento. Y aunque parezca poco probable hoy en día, también una empresa como Microsoft puede quebrar o abandonar el producto Office, por lo cual ya no habrá actualizaciones y mucho menos conversores para otro software popular en el futuro. La documentación sobre un formato abierto, en cambio, siempre sigue existiendo aunque caiga en desuso.

Si soy mando de una gran empresa podrá ser rentable optar por un formato complejo de un editor gráfico como OpenOffice y arriesgar encargar la programación de un conversor si hubiera la necesidad en algún momento.
Para aquellos con menos recursos serán fuertemente recomendados los formatos de texto, aunque sean más difíciles a usar. Un editor de texto es lo más básico y siempre habrá en uno en cualquier ordenador. Al contrario de los formatos binarios, los formatos de texto pueden ser leídos por seres humanos (aunque con dificultades) si ya no dispongo de ninguna herramienta informática que les sepa tratar. Esto puede ser crucial si sólo busco un nombre o número de teléfono en un documento viejo. Y, desde luego, siempre será más fácil convertir un fichero de texto a un formato más moderno que un fichero binario.

Accesibilidad

No siempre lo mejor es lo más adaptado, sobre todo no adaptado a las necesidades de los lectores. Aunque tendré que actualizar mi currículum vitae durante la vida y sería preferible hacerlo en un formato abierto, los departamentos de recursos humanos siempre me lo piden en formato de Microsoft Word. Si el destinatario sólo quiere leer mi documento, entonces puedo crearlo a mi conveniencia y convertir al formato PDF, que practicamente todos los ordenadores pueden leer. Pero si el destinatario también quiere editarlo, entonces será mejor no obligar a descargarse y entender un software complicado aunque sea el más adecuado para el tipo de documentación que me pide.

Un punto importante puede ser la portabilidad del documento entre diferentes plataformas: Hay navegadores de Internet para Microsoft Windows, para Linux, para Unix y para Apple, pero Microsoft Office no existe en versión Linux. Los formatos de texto pueden ser editados HTML y LaTeX con cualquier ordenador.

Otra cosa que hay que tener en cuenta son las versiones de un mismo programa. Es posible que no todo el mundo tiene la última versión y, por lo tanto, no podrá ver todas las funcionalidades que podrías haber incluído. Optar por un estándar simple ayuda a que más personas puedan verlo. Y lo mismo vale teniendo en cuenta que no todo el mundo tiene una conexión de Internet rápida. Es posible que otros jamás podrán ver tu documento súper bonito pero con poco contenido, simplemente porque no consiguen descargarlo.

Integridad física

¿Ya te ha pasado que quisiste deshacer un cambio en una plantilla de formato en Microsoft Word y buscabas un botón heredar propiedad del padre? Una lista de problemas que you tuve con Microsoft Word durante mi proyecto fin de carrera:

  • No se podía guardar un fichero porque no hubo espacio en el disco duro. El fichero tenía un tamaño de unos tres megabyte y el espacio en el disco duro eran 500. Descubrí que una fórmula matemática se había convertido en un objeto desconocido.
  • Tampoco se podía abrir el fichero por falta de memoria. Conseguí seperar el fichero en múltiples (uno para cada artículo) y podría poner los número de página a mano.
  • En las listas con viñetas (como en la que estás leyendo ahora mismo) desaparecieron las viñetas y no hubo forma de convencer a la aplicaciones que los pusiese otra vez.

Es posible (y me ha pasado), que la falta de memoria hace también imposible trabajar con otros procesadores de texto como LaTeX, pero hay dos puntos diferentes muy importantes:

  1. Microsoft Word guarda un documento en un fichero binario. Si sólo añades, quitas o modificas un byte con un hexeditor puede ser que ya no se deja abrir. No hay forma de reparar un fichero .doc a mano.
  2. Si Microsoft Office te guarda algo mal en tu documento por el error que sea, te habrá sobreescrito la vieja versión que aún funcionaba. En los formatos de texto como LaTeX, sólo editas el fichero fuente. Cualquier representación de esta fuenta será guardado en otro fichero. Aunque este fichero generado será degenerado, siempre es posible que vayas con tus ficheros fuente a otro ordenador mejor (o consultas con una persona que sabe mejor) y intentas generarlo otra vez.

En fin, la integridad física de un fichero indica hasta que grado se puede usar aunque contenga un error o fue parcialmente destruido. En general no hay forma de reparar un fichero binario. Por esto ya no se hace. La versión actual de Microsoft Office y OpenOffice guardan ahora sus contenidos en varios ficheros de texto en formato XML que se comprimen en un archivo ZIP. Que la extensión de Microsoft Word no es ZIP sino DOCX facilita relacionar los documentos con la aplicación. Pero puedes probar cambiar la extensión de un fichero DOCX a ZIP, y entonces puedes abrirlo con un archivo ZIP y ver sus contenidos.

Para los más preocupados es recomendable no usar editores gráficos, porque lo que tú editas no es lo que realmente se guarda – sino sólo una traducción (mayoritariamente correcta) de lo que editas. Sólo en los formatos de texto editas tú y tólo tú.

Medio de publicación

No es lo mismo si quiero escribir un libro o imprimir un texto a crear una página Web. La mayoría de los formatos están dedicados a publicar un documento en un medio específico aunque no exclusivamente. Los procesadores de texto sirven sobre todo para imprimir algo en papel, el HTML se inventó para mostrar algo en pantalla. Hoy en día, se pueden usar muchos formatos en muchos ámbitos aunque sigue haber una preferencia para un determinado uso.

La tendencia hoy en día es publicar un mismo documento en formatos diferentes: en papel, en pantalla e incluso por voz. Todo esto a partir de un mismo documento fuente. Con este propósito se definó el estándar de DocBook, que sólo define contenidos y no la representación de un documento.

Procesado automatizado

Muchas veces interesa crear documentación de forma automatica a partir de código de un lenguaje de programación. Esta documentación se puede mezclar por otra editada por seres humanos, por ejemplo un tutorial sobre una biblioteca, donde se quiere entrelazar los nombres de clases, métodos y variables con la referencia creada por el programa de documentación automatizada. En estos casos es casi imperativo el uso de formatos de texto. Por ejemplo, phpDocumentor, un programa de documentación automatizada para el lenguaje de programación PHP pueden incluir textos editados por humanos, si están escritas en el formato DocBook.

Los formatos en detalle

Queremos dar una vista detallada sobre los distintos formatos mencionados en el resumen. Este apartado tiene en consecuencia una sección para cada formato.

Microsoft Office

Microsoft Office es la elección para quienes quieren usar y no pensar. Todo está automatizado y con dos clicks ya tienes impreso tu documento. A un click la ayuda, corrección de ortografía y el único con correción de gramática convierten Microsoft Office en algo fácil de usar. Lo bueno tiene precio, y este es bastante alto. Si uno quiere ahorrárselo, entonces será recomendable usar OpenOffice. Lo malo es que casi todas las empresas prefieren no ahorrar y al final tú también necesitas Microsoft Word sólo para tener tu currículum en formato Word.

Puesto el caso que ya tienes una licencia, Microsoft Office es una buena elección para editar algo a corto plazo. Es decir, algo que vas a terminar a editar en al menos medio año y luego ya no te duele que no se pueda usarlo con la próxima versión. También conviene para compartir documentos con personas que no saben tanto de ordenador y ya tienen suficiente con conocer a un programa. En cambio, los productos de Microsoft no suele haber en versiones para Linux o Unix.

Si piensas editar un documento de gran tamaño y complejidad como un texto con muchas fórmulas matemáticas, entonces no es recomendable usarlo. Lo mismo vale si no quieres gastarte dinero en la licencia (o hacer cosas ilegales para conseguirla). Si te importa que puedas modificar y usar tu documento durante muchos años, es preferible no usar productos propietarios (no abiertos), ya que puedan volverse incompatible sin previo aviso en la próxima versión.

OpenOffice

OpenOffice tiene la misma funcionalidad que Microsoft Office, a que se parece mucho en su uso. Sin embargo, tiene una diferencia importante en el precio: Es gratis. Es un proyecto de código abierto, donde puedes participar con tus propias rutinas; si quieres. Como no hacen dinero vendiéndote la última versión, tampoco hay necesidad de incluir más incompatibilidades entre versiones que necesario.

Es recomendable usar OpenOffice para el uso diario igual como Microsoft Office. Por ser de código abierto es probable que su formato será legible también en el futuro, aunque tampoco hay garantía de que este proyecto de software será abandonado en algún momento. Una desventaja es que casi nadie tiene OpenOffice instalado y, por eso, no se puede usar su formato nativo para compartir documentos. No obstante, OpenOffice tiene un conversor para documentos de Microsoft Office. Sin embargo, no es recomendable editar un mismo documento con los dos Office. Un conversor sirve para visualizar y transformar contenido, pero no para editar un documento con dos aplicaciones distintas, ya que no todas las características se pueden convertir. Un documento de Microsoft Word es similar a uno de OpenOffice, pero no igual.

Para mí, OpenOffice es la elección cuando quiero editar un texto para mí mismo. Puede ser el estándar interna de una empresa que quiere ahorrarse licencias costosos.

Existe una versión de OpenOffice que se llama OxygenOffice. Funciona igual pero aporta muchos ficheros adicionales como clipart, plantillas, diccionarios, imágenes y sonidos.

LaTeX

Lo primero que llama la atención en el procesador de texto LaTeX es su forma peculiar de escribirse. El sistema de base de llama TeX y fue inventado para rellenar una hoja de papel con caracteres. Como es un formato de texto, todo lo que no sea una letra para imprimir debe ser una palabra que comienza con la barra invertida. Hay un comando para añadir un línea de pie \footline, donde se puede añadir el número de la página \pageno y cambiar a una fuente negrita con \bf.

Hubo a quien todo esto pareció demasiado complicado y se aprovechó de un gran capacidad del sistema TeX: las macros. Se pueden definir nuevos comandos (con \) que luego se reemplazan por el contenido. Estas macros también permiten parámetros de forma que se podría definir un tipo de documento libro, que tiene páginas pares e impares diferentes, con tanto espacacio hacia arriba y abajo y admite como parámetro el tamaño de la fuente. Todo esto ya lo hecho alguien y llamó el resultado LaTeX.

LaTeX tiene comandos que están más cercano a lo que quiere el usuario y por eso es relativamente fácil empezar a usarlo – con énfasis a relativamente. Lo que no cambia es la abundancia de barras inversas a que cuesta acostumbrarse. Ahora la pregunta por qué alguien quisiera usar un sistema así.

Pues, el resultado es simplemente más bonito. La diferencia con los editores gráficos ya no es tan grande ahora que hace años, pero LaTeX sigue siendo la elección para quién quiera escribir textos con muchas fórmulas matemáticas. Porque salen más bonitas y LaTeX ofrece muchos símbolos matemáticos.

Otra ventaja es que las fórmulas no son objetos aparte del texto como en los editores gráficos. No hace falta abrir ningún editor especial para editarlas. Son texto como lo demás, y cambiar el tamaño de la fuente de todo el documento es tan fácil como cambiar un parámetro en la definición de la clase del documento. Con Microsoft u Open Office habría que ir una a una y cambiarlo manualmente.

LaTeX es un formato de texto que tiene, por lo tanto, ficheros fuente más pequeños que los documentos de un editor gráfico. Desventajas son que la instalación es relativamente complicada y que hay que compilar los ficheros fuente cada vez que se cambie algo. El resultado de esto es un gran número de ficheros generados que puede agobiar a quién adora tener sus directorios limpios. En cambio, la funcionalidad de macros es muy potente: se pueden crear nuevos estilos y diseños de página más allá de lo inicialmente pensado. También permite escribir ecuaciones con palabras humanas. Por ejemplo, para visualizar la ecuación U = R·I se puede escribir en el fichero fuente \tension = \resistencia·\corriente si se ha definido anteriormente

\newcommand{\tension}{U}
\newcommand{\resistencia}{R}
\newcommand{\corriente}{I}

Si siempre uso la macro \tension en lugar de U, podría cambiar la letra a V en todo el documento sólo cambiando la definicón de la macro \tension.

HTML

HTML (HyperText Markup Language) es la base de cualquier documento que vemos en un navegador de Internet. Podemos visualizar un fichero HTML también cuando no esté en Internet sino en nuestro disco duro. HTML ha sido diseñado para Internet y permite enlaces a otros documentos o contenido en otros ordenadores. No es difícil incluir en tu documento una imagen que reside en un servidor en otro continente.

Mientras los principios de HTML eran dedicados a mostrar documentos de Internet en un navegador, hay una tendencia de separar contenido de la representación de contenido. Idealmente un documento HTML sólo define qué texto contiene un título, que texto contienen los párafos que siguen, que son las contenidos de una tabla, pero no hay ninguna referencia sobre la fuente, los colores, la sangría o las viñetas en las listas que se usan. Todo esto define un invento más reciente que se llama CSS (Cascading Style Sheet – hojas de estilo en español).

Este proceso todavía no ha finalizado, pero la intención es clara: Que HTML será un formato libre de información representativa, por lo cual el mismo documento puede ser convertido en diferentes representaciones para pantalla, papel o incluso sonido con diferentes hojas de estilo. Esto trae también la ventaja que un escritor sin estilo puede dedicarse a escribir sus ideas y dejar el resto a un estilista sin ideas. Contenido y representación todavía no se dejan separar de todo, pero será el futuro.

HTML es un formato muy popular y es difícil encontrar un editor que no sepa algo de HTML. Microsoft Office y OpenOffice importan y exportan HTML, un documento HTML puede ser visualizado en cualquier navegador y HTML es probablemente el mejor formato para hacer algo para la eternidad. Hay muchos editores gráficos para quien no quiera editar un fichero de texto con códigos de comando <>. Aunque HTML es a veces demasiado simple con comparación con lo que ofrecen los procesadores de texto, se puede optar que el futuro lo resuelve.

Como ejemplo ponemos la númeración de los títulos: HTML no lo permite y habría que numerar cada encabezado manualmente. Sin embargo, la versión 2.1 de los Cascading Style Sheets permite añadir un esquema de númeración de títulos. Podemos esperar que habrá aún más utilidades en el futuro.

DocBook

La separación entre contenido y representación se ha llevado a completo con el estándar DocBook. El código de un documento DocBook tiene un aspecto similar a HTML por tener un formato XML, pero ofrece muchos más componentes: todo lo que uno podría necesitar en una tésis de doctorado o manual de usuario.

Como el formato DocBook sólo contiene el contenido del documento, le falta un herramienta que lo represente, es decir, que lo convierta en una página HTML o un documento PDF o lo que sea. Por lo tanto, DocBook no es una buena elección si sólo pienso tener una representación. La idea de DocBook es que puedo generar representaciones muy diversas a partir de una sola fuente, pero necesito crear estas representaciones anteriormente. Como DocBook es un formato de texto, es muy bueno para crear documentación automatizada que luego se quiere exportar como páginas de Internet, en formato PDF y como fichero de audio.

Texto enriquecido

Texto enriquecido (Rich Text Format en inglés) es un formato de texto. Sin embargo es tan confuso que no habrá quién lo editaría con un editor de texto. (Para comprobarlo basta guardar un documento de Microsoft Word como fichero RTF y abrirlo en el bloc de notas.)

Este formato fue pensado para editar algún texto bonito con texto en negrita y cursiva sin guardar el tipo de contenido detrás de la representación. Es decir, el formato sabe la fuente de la letra pero no sabe qué corresponde a un título y qué a un texto normal y corriente. Por lo tanto, no sirve para escribir grandes obras, pero, sí, para crear un texto visualmente agradable que se deja abrir en muchos editores.

Más que un formato para editar y guardar, es un formato para exportar. Por ejemplo, se puede convertir los contenidos de un DocBook en un fichero de texto enriquecido para luego imprimirlo. Como texto enriquecido es un formato de texto, permite cambios fáciles a base de cadenas de texto por un programa de ordenador.

Texto simple

Un texto simple es lo que muestra el bloc de notas en Microsoft Windows: una secuencia de caracteres. Aunque un texto sin más tiene un aspecto aburrido, puede ser lo mejor en determinadas circunstancias.

Un fichero de texto es lo más portable posible. Siempre habrá un programa que podrá leerlo y no es posible conseguir ficheros más pequeños con el mismo contenido. No requiere ningún programa especial para ser leído. Es eterno. Y los más rápido a la hora mostrarlo en pantalla también.

Desde hace años uso un fichero de texto como mi agenda. Desde luego no es tan fantástico que una PDA o un organizador de eventos especializado, pero cabe en un disquete, se puede leer en cualquier ordenador (en el trabajo) y cuando se acabe la vida (de la batería) de la PDA no necesito copiar manualmente todos los datos porque no son compatibles con la PDA nueva. El formato de texto simple es el más adecuado cuando necesito algo simple y rápido.

Conclusión

Hemos visto formatos muy diferentes para crear documentación. Ahora ¿cómo eligir? Para ello eliges los escenarios que más se ajustan a tu caso. En general no hay el mejor formato. Cada uno tiene sus ventajas e inconvenientes y será a veces una cuestión de gusto cual usas. Y, en fin, hay muchos conversores de un tipo de formato a otro.

Necesidad de documentación y su formato idóneo.
Mi problema Mi formato
Odio a la programación y códigos crípticos. Microsoft Office, OpenOffice o Texto Enriquecido.
Quiero íntegridad física y un formato de texto. HTML, LaTeX, DocBook, Texto simple.
Rápido y simple. Texto simple, HTML. Dependiendo del editor asociado: Texto Enriquecido.
No quiero ni pagar ni piratear (y que sea de código abierto). Todo excepto Microsoft Office.
Quiero un formato popular. HTML. Para el sistema operativo Microsoft Windows: Microsoft Office y Texto Enriquecido.
Quiero imprimir en papel. Microsoft Office, OpenOffice, LaTeX
Quiero las fórmulas matemáticas más bonitas. LaTeX. Microsoft Office y OpenOffice tienen editores de fórmulas.
Quiero verlo en pantalla y que sea interactivo. HTML. En menor medida Microsoft Office y OpenOffice.
Quiero exportar mi documento a muchas representaciones diferentes. DocBook, HTML.
Quiero documentar mi programa de ordenador. (Sólo para quienes ponen comentarios en el código.) DocBook, HTML, LaTeX.
El usuario de mi programa debe poder imprimir la página Web que le muestro o convertirla en un PDF. HTML, LaTeX, Texto Enriquecido, texto simple

Referencias

Formatos de Documentación
Herramientas de documentación automatizada
Artículos relacionados en este blog

Escribe tu dirección de correo electrónico para suscribirte a este blog, y recibir notificaciones de nuevos mensajes por correo.

Únete a otros 56 seguidores

Archivos

septiembre 2010
L M X J V S D
« Ago   Oct »
 12345
6789101112
13141516171819
20212223242526
27282930