Archivos del autor Antonio Santos
MiniTip - Trabajar con archivos odt de OpenOffice en modo texto
Hace unos días se planteaba en uno de los equipos de trabajo una duda muy concreta: cómo buscar una cadena de texto en cientos de archivos de OpenOffice de manera eficiente.Un fichero odt no es más que un conjunto de ficheros xml comprimidos en formato zip por lo que, afortunadamente, se pueden utilizar herramientas diseñadas para trabajar con texto plano una vez que se descomprime el fichero binario. Sin embargo, los ficheros xml contenidos no están pensados para ser interpretados por personas, sino por ordenadores, por lo que es necesario un proceso previo del contenido. La utilidad odt2txt (disponible en los repositorios de las principales distribuciones) se encarga de ello y, a partir de un fichero que se pasa como parámetro, escribe por la salida estándar sus contenidos, dándoles un formato más amigable. En Ubuntu se puede instalar mediante un simple
sudo apt-get install odt2txt
Una vez que está instalada, ya se puede integrar en distintos scripts que hagan lo que necesitemos. Por ejemplo, para localizar los ficheros odt que contienen una cadena de texto dentro de una carpeta y sus subdirectorios podemos utilizar el siguiente:
#!/bin/sh
for i in `find . -name *.odt`; do
if [ `odt2txt "$i" | grep -iE "$@" | wc -l` -gt 0 ]; then
echo "Texto encontrado en $i"
fi
done
que se utilizaría de la siguiente manera:
$ ./find_in_odt.sh "cadena de texto a buscar"
El script anterior cuenta con la limitación de que no está preparado para funcionar con carpetas cuyo nombre contiene espacios. Otra opción podría ser la búsqueda de diferencias entre dos ficheros:
#!/bin/sh
odt2txt $1 > tempfile1
odt2txt $2 > tempfile2
diff -u tempfile1 tempfile2
rm tempfile1 tempfile2
ejecutable como (recomiendo instalar colordiff para ser usado en lugar del diff tradicional):
$ ./odtdiff.sh fichero1a.odt fichero1b.odt
Más aún: podemos integrar odt2txt con sistemas de control de versiones como Git (usado por el kernel de Linux, Gnome, Android o Ruby on Rails entre otros) para conseguir integración con ficheros de OpenOffice (útil para ver los cambios entre las diferentes versiones en el repositorio). Para ello, basta con añadir al archivo de configuración .gitconfig (presente en el directorio de usuario en Linux y OSX)
[diff "odf"]y luego, dentro del repositorio del proyecto, crear o modificar el archivo .git/info/attributes para que contenga
textconv=odt2txt
*.ods diff=odf
*.odt diff=odf
*.odp diff=odf
Espero que alguno de estos consejillos os sirva de utilidad, ¡un saludo!
Metadatos
Siguiendo con el tutorial que queremos realizar acerca de la web semántica, nos parece que uno de los puntos principales va a ser la definición de los conceptos alrededor de los cuales gira la Web Semántica, conceptos que si bien no son nuevos (los hay incluso heredados de la Filosofía), han visto su significado adaptado en esta nueva tecnología. A lo largo de estas entradas voy a intentar simplificar todo lo que pueda y a hacer la asunción de que el lector desconoce por completo el tema, así que disculpadme si pensáis que estoy tratando algo básico. Para eso están los comentarios, para que opinéis :)
El concepto más importante, y a la vez probablemente el más conocido, es el de metadato (metadata en inglés). Los metadatos se definen como “datos acerca de otros datos”, lo cual por sí mismo puede resultar una definición pobre. Sin embargo, un ejemplo lo dejará mucho más claro: imaginemos una canción en el ordenador (una canción en formato ogg vorbis y descargada desde Jamendo, por supuesto :D). Esta canción es analizada por nuestro reproductor de música preferido que (normalmente) es capaz de mostrar diversa información acerca de ella. Como mínimo, los nombres de la canción, cantante y álbum. Estos tres campos son información (datos) acerca de la canción (otros datos) .
Si os dais cuenta, el mundo está plagado de metadatos: la mayoría de las cámaras digitales “firma” las fotografías con, entre otras cosas, la fecha de toma de la instantánea; los ficheros de un sistema operativo derivado de UNIX (como Linux y OS X) tienen metadatos que definen qué usuarios tienen (o no) acceso a ellos; y en aplicaciones web como Flickr las fotografías tienen etiquetas asociadas para facilitar su clasificación.
¿Y cuál es la relación de los metadatos con la web semántica? Son el elemento básico para formarla, pues recordemos que la web semántica pretende hacer posible que los ordenadores entiendan los contenidos de la web. El método exacto para lograrlo lo veremos en posteriores entregas, pero de momento creedme cuando escribo que los metadatos van a ser vitales en el proceso :)
La web semántica
Ayer comenzamos con lo que pretendemos sea una colección de artículos acerca de la web semántica, que iremos desarrollando a lo largo de las siguientes semanas. En la entrega de hoy, daremos una pequeña introducción acerca del tema. Ya que nosotros también estamos aprendiendo en este momento, espero que nos perdonéis y corrijáis posibles errores :)
En la actualidad, la web es una colección de datos inmensa, que permite a una persona acceder a una gran cantidad de información y operar sobre ella. Sin embargo, lo que es una virtud se puede entender también como uno de sus grandes defectos, debido a que existe tanta información que cada día resulta más complicado procesarla y hacer consultas sobre ella. Además, la heterogeneidad en las fuentes de información dificulta en gran medida la interoperabilidad entre sistemas.
La web semántica es una evolución de la actual tecnología, pensada para proveer de contenido semántico a la web actual. Gracias a este contenido semántico se posibilita que no sólo una persona pueda entender la información que presenta una página web, sino que se habilita a las máquinas a tal efecto. De esta manera, un buscador puede realizar una consulta de una forma más inteligente, procesando los resultados y descartando o seleccionando los que mejor se adaptan a los parámetros de la búsqueda.
En el fondo, la web semántica trata de proveer un cierto grado de inteligencia a la web actual. Tim Berners-Lee, el inventor del World Wide Web y uno de los principales valedores de la web semántica, se expresaba así en 1999:
I have a dream for the Web [in which computers] become capable of analyzing all the data on the Web – the content, links, and transactions between people and computers. A ‘Semantic Web’, which should make this possible, has yet to emerge, but when it does, the day-to-day mechanisms of trade, bureaucracy and our daily lives will be handled by machines talking to machines. The ‘intelligent agents’ people have touted for ages will finally materialize.
Una traducción un poco libre :)
He tenido una visión para la Web [en la cual los ordenadores] serán capaces de analizar todos los datos de la Web - los contenidos, enlaces y operaciones entre las personas y las máquinas. Una ‘Web Semántica’, que debería hacer esto posible, todavía tiene que aparecer, pero cuando lo haga, las operaciones diarias de comercio, burocracia, y nuestras vidas serán manejadas por máquinas hablando con otras máquinas. Los ‘agentes inteligentes’ que la gente ha esperado por años finalmente se harán realidad.
Categorías
Encuentra artículos a través de sus "tags"
Archivos mensuales
Encuentra artículos según el mes en el que fueron escritos.
- March 2010
- February 2010
- January 2010
- December 2009
- November 2009
- October 2009
- September 2009
- August 2009
- July 2009
- June 2009
- May 2009
- April 2009
- March 2009
- February 2009
- January 2009
- December 2008
- November 2008
- October 2008
- September 2008
- August 2008
- July 2008
- June 2008
- May 2008
- April 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
- August 2007
- July 2007
- June 2007
- May 2007
- April 2007
- March 2007
- February 2007
- January 2007