Tag Archive for 'Software'

StarDict: El diccionario que buscaba

Leyendo el ejemplar #14 de la revista Tux Magazine me encuentro con un interesante artículo, Learning Foreign Languages with jVLT and StarDict, la segunda aplicación descrita en dicho artículo, StartDict, llamó mi atención, así que a continuación se dará una breve revisión de la aplicación en cuestión.

¿Qué es StarDict?

StarDict es un diccionario internacional multiplataforma escrito en Gtk2, puede ser utilizado sin conexión a la web.

Características

Búsqueda de patrones

Usted puede buscar patrones de cadenas o caracteres usando comodines, por ejemplo, podrá usar el comodín * para buscar una cadena arbitraria, el resultado puede ser vacío, mientras que con el uso del comodín ? buscará una coincidencia con un carácter arbitrario. e.g. Suponiendo que tiene instalado el diccionario InglésEspañol, al buscar el patrón hell? encontrará como resultado la traducción de hello, mientras que con el uso del patrón hell* encontrará todas aquellas posibles coincidencias que comiencen con la cadena hell, hell (infierno en inglés), hell (suerte en noruego), los resultados encontrados dependerá de los diccionarios que haya instalado.

Búsqueda difusa

Si usted por casualidad no recuerda exactamente como deletrear una palabra, podrá intentar realizar dicha búsqueda desde StarDict, éste utilizará el algoritmo de la Distancia de Levenshtein 1. Para utilizar esta característica simplemente comience la búsqueda con el carácter /, e.g., suponga que tiene instalado el diccionario EspañolInglés, usted cree que la palabra acero realmente se escribe así: asero, simplemente introduzca en el formulario la cadena /asero, obtendrá el resultado deseado.

Búsqueda por palabras seleccionadas

Scan SelectionSi usted desea activar esta característica, deberá marcar la casilla de verificación que se encuentra en la parte inferior izquierda de la ventana principal de la aplicación. StarDict automáticamente buscará palabras o frases que usted haya seleccionado en cualquier aplicación, esto incluye navegadores, OpenOffice.org, etc., usted obtendrá un cuadro de dialogo que le mostrará la definición acerca de la palabra seleccionada.

Manejo de diccionarios

Manejo de diccionariosStarDict le permite activar (desactivar) aquellos diccionarios que necesite (no necesite), también puede establecer el orden de búsqueda en los distintos diccionarios instalados. Todo lo anterior podrá realizarlo desde la sección Manage Dictionaries (Recurso: Imagen).

¿No encuentra lo que necesita?

StarDict le permite realizar búsquedas en la web, solo deberá seleccionar el botón de búsqueda en Internet y escoger cualquiera de las 10 opciones actuales de búsqueda.

Ahora bien, seguramente esta aplicación resultará útil para muchas personas, si usted es uno de ellos y está interesado en instalarlo, es muy sencillo.

¿Cómo instalar StarDict?

Si usted es tan afortunado como yo, debe estar usando Debian, así que simplemente tendrá que hacer:

# aptitude install stardict

Ahora bien, si usted utiliza por ejemplo, Ubuntu, también puede instalarlo fácilmente, ¿cómo?, en primer lugar debe activar el repositorio universe (recuerde actualizar la lista de paquetes disponibles), posteriormente debe hacer:

$ sudo aptitude install stardict

Si usted utiliza otra distribución de GNU+Linux o es usuario de Windows, lea la documentación de la página oficial del proyecto, lamento informarle que este artículo es una revisión breve de la aplicación StarDict.

¿Cómo instalar diccionarios?

Primero que nada, debe descargar los diccionarios que necesite, para ello le recomiendo ir a la página de Descarga de Diccionarios del proyecto.

Una vez que haya descargado los diccionarios, debe proceder como sigue:

tar -C /usr/share/stardict/dic -x -v -j -f  \\
diccionario.tar.bz2

Personalizando la aplicación

Preferencias Ya para finalizar, usted puede personalizar la aplicación desde la sección de preferencias, desde ella podrá modificar el comportamiento del programa.

Una característica de StarDict que puede resultar realmente molesta es cuando se encuentra activo el modo Scan, es decir, toda palabra o frase resaltada con el ratón generará un cuadro de dialogo con la definición de dicha palabra o frase, si usted desea controlar este comportamiento, le recomiendo activar las siguientes casillas de verificación:

  • Only do scanning while modifier key being pressed.
  • Hide floating window when modifier key pressed.

Las casillas de verificación previamente mencionadas podrá encontrarlas bajo la sección DictionaryScan Selection.

Si usted esta inconforme con las opciones de búsqueda en Internet, puede agregar las que usted desea desde la sección Main WindowSearch Website.

  1. El algoritmo de la Distancia de Levenshtein o la distancia de edición entre dos cadenas, se refiere al número mínimo de operaciones necesarias para transformar una cadena en otra, bajo éste algoritmo se considera una operación a la inserción, eliminación o substitución de un carácter. Para mayor información le recomiendo leer el artículo Levenshtein Distance, in Three Flavors.[regresar]

FeedJack: Ya está disponible

Ya había comentado acerca de ésta aplicación en la entrada FeedJack: Un Planet con esteroides, resulta que hace pocos días Gustavo Picón anunció la salida de la versión 0.9.6 bajo licencia BSD. Algunas de las características más resaltantes de esta aplicación son:

Soporte de virtual hosts
Esto quiere decir que desde la misma instalación y la misma Base de Datos e interfaz de administración, se manejan múltiples planetas. Si hay feeds en común estos se bajan una sola vez para optimizar recursos.
Temas (Themes)
Cada sitio (virtual host) puede tener temas distintos.
Soporte de folcsonomías (etiquetas o tags)
Muy popular en las aplicaciones de la Web 2.0, se ha optimizado el algoritmo.
Generación de páginas o feeds por folcsonomías
Ejemplo: http://www.chichaplanet.org/tag/django/
Generación de páginas o feeds por miembros
Ejemplo: http://www.chichaplanet.org/user/1/
Generación de páginas o feeds de una categoría en especial de un miembro particular
Ejemplo: http://www.chichaplanet.org/user/1/tag/django/
Generar un feed general.
Ejemplo: http://www.chichaplanet.org/feed/
Histórico de entradas
Entre muchas otras cosas. La principal ventaja frente a Planet es el soporte de un histórico de entradas o posts, por el uso de una Base de Datos.

Para conocer los detalles acerca de los requerimientos, el proceso de instalación, configuración y la modificación de los temas lea con detenimiento la entrada Feedjack - A Django+Python Powered Feed Aggregator (Planet).

Ya que le he quedado un poco mal a Gustavo con la ayuda que me pidio en cuanto al desarrollo de un tema (theme) para FeedJack, invito a mis dos ó tres lectores a colaborar con el proyecto.

Por mi parte solo me queda felicitar a Gustavo Picón por el estupendo trabajo que ha realizado. Además, amigo, aprovecho el momento para decirte que cuentas con mi ayuda para el desarrollo de un theme, solo dame tiempo mientras me desocupo de las actividades en la Universidad, estas últimas semanas han estado muy ocupadas. Entre las asignaturas: Redes de Computadoras, Programación Paralela y Distribuida, Compiladores (menos mal al profesor de Inteligencia Artificial no le ha dado por colocarnos un parcial), si a eso le sumas, el estudio de Haskell y Alex, están contribuyendo sistemáticamente en mi demencia.

Creando listas de reproducción para XMMS y MPlayer

Normalmente acostumbro a respaldar toda la información que pueda en medios de almacenamiento ópticos, sobretodo audio digital, ya sea en ficheros Ogg Vorbis o en MPEG 1 Layer 3. Desde hace poco más de un año hasta la actualidad me he acostumbrado a mantener una estructura lógica, la cual es más o menos como sigue:

/music/<nombre_artista>/<título_album>/<título_pista

Pero hace mucho tiempo no era tan organizado en cuanto a la estructura de los respaldos, entonces, la pregunta en cuestión es, ¿cómo lograr detectar la presencia de ficheros de audio digital almacenados de manera persistente en un dispositivo óptico de manera automática?

Al igual que lo expresado en la entrada Eliminando ficheros inútiles de manera recursiva, haremos uso del comando find.

Antes de entrar en detalle debo aclarar que voy a realizar una búsqueda recursiva de ficheros en el path correspondiente a mi unidad lectora de CDs. Usted debe ajustar el path por uno apropiado en su caso particular.

Si solo desea buscar ficheros MPEG 1 Layer 3:

find /media/cdrom1/ -name \*.mp3 -fprint playlist

Pero si usted acostumbra a almacenar ficheros Ogg Vorbis en conjunto con ficheros MPEG 1 Layer 3, debería proceder así:

find /media/cdrom1/ \( -name \*.mp3 -or -name \*.ogg \) -fprint playlist

El comando anterior también es aplicable para generar listas de reproducción de video digital, en cuyo caso lo único que debe cambiar es la extensión de los ficheros que desea buscar. El fichero que contendrá la lista de reproducción generada en los casos expuestos previamente será playlist.

Reproduciendo la lista generada

Para hacerlo desde XMMS es realmente sencillo, acá una muestra:

xmms --play playlist --toggle-shuffle=on

Si usted no desea que las pistas en la lista de reproducción se reproduzcan de manera aleatoria, cambie el argumento on de la opción --toggle-shuffle por off, quedando como --toggle-shuffle=off.

Si desea hacerlo desde MPlayer es aún más sencillo:

mplayer --playlist playlist -shuffle

De nuevo, si no desea reproducir de manera aleatoria las pistas que se encuentran en la lista de reproducción, elimine la opción del reproductor MPlayer -shuffle del comando anterior.

Si usted desea suprimir la cantidad de información que le ofrece MPlayer al reproducir una pista le recomiendo utilizar alguna de las opciones -quiet o -really-quiet.

Vim al rescate

Al examinar el día de hoy el último fichero de respaldo de la base de datos de este blog, me percate que existe una cantidad inmensa de registros que en realidad no me hacen falta, sobretodo respecto a las estadísticas, es increible que los registros de una simple base de datos llegara a ocupar unos 24MB, dicha información no tiene mayor relevancia para los lectores puesto que dichos datos suelen ser visualizados en la interfaz administrativa del blog, pero al ocupar mayor espacio en la base de datos, pueden retardar las consultas de los usuarios. Por lo tanto, era necesario realizar una limpieza y eliminar unos cuantos plugins que generaban los registros de las estadísticas.

Ahora bien, imagínese abrir un documento de 266.257 líneas, 24.601.803 carácteres desde algun editor de textos gráfico, eso sería un crimen. ¿Qué podemos hacer?, la única respuesta razonable es utilizar Vim.

Vim es un avanzado editor de textos que intenta proporcionar todas las funcionalidades del editor de facto en los sistemas *nix, Vi. De manera adicional, proporciona muchas otras características interesantes. Mientras que Vi funciona solo bajo ambientes *nix, Vim es compatible con sistemas Macintosh, Amiga, OS/2, MS-Windows, VMS, QNX y otros sistemas, en donde por supuesto se encuentran los sistemas *nix.

A continuación detallo más o menos lo que hice:

En primer lugar respalde la base de datos del blog, enseguida procedí a descomprimir el fichero y revisarlo desde Vim.

$ vim wordpress.sql

Comence a buscar todos los CREATE TABLE que me interesaban. Para realizar esto, simplemente desde el modo normal de Vim escribí lo siguiente:

/CREATE TABLE <Enter>

Por supuesto, el <Enter> anterior se refiere a presionar la tecla, no lo escriba. Para volver a realizar la búsqueda hacia adelante (hacia atrás) solamente presionaba la tecla n (Shift + n), a la final me di cuenta que todas las tablas que me interesaban estaban de manera secuencial y separadas de aquellas tablas que no me interesaban, entonces recorde que desde el mismo Vim es posible guardar en otro fichero partes del fichero actual, antes de continuar debía conocer el principio y el final de la líneas a copiar, simplemente me posicione al principio de la línea en cuestión y en modo normal teclee Ctrl + g, el cual me permite conocer el número de línea actual y da información acerca del número de líneas del fichero, como mi copia debía llegar hasta el final del fichero ya tenía toda la información que necesitaba.

Con todo la información necesaria, lo único que restaba por hacer era copiar la sección que me interesaba en otro fichero, para ello debemos proceder como sigue desde el modo normal de Vim:

:264843,266257 w milmazz.sql

El comando anterior es muy sencillo de interpretar: Copia todo el contenido encontrado desde la línea 264.843 hasta la línea 266.257 y guardalo en el fichero milmazz.sql.

Inmediatamente restaure el contenido de mi base de datos y listo.

Algunos datos interesantes.

Fichero original

Tamaño:
24MB
Número total de líneas:
266.257

Fichero resultado

Tamaño:
1.2MB
Número total de líneas:
1.415

Tiempo aproximado de trabajo: 4 minutos.

¿Crees que tu editor favorito puede hacer todo esto y más en menos tiempo?. Te invito a que hagas la prueba ;)

That’s All Folks!

mp3wrap: Concatenando ficheros mp3

mp3wrap es una utilidad en línea de comando que nos permite fusionar o concatenar dos o más ficheros mp3, todo esto sin perder los nombres de ficheros y la información de los ID3, estándar que permite la inclusión de metadatos en contenedores multimedia. También es posible añadir otros ficheros que no sean mp3, como por ejemplo, listas de reproducción, ficheros de información, imágenes de portada. Claro, este proceso es posible revertirlo gracias a mp3splt, el cual describiré en un próximo artículo.

Con mp3wrap, usted puede fácilmente fusionar hasta un máximo de 255 ficheros en uno solo, lo cual pareciese ser suficiente para la mayoría. De igual manera, como se mencionó previamente, usted puede añadir ficheros que no sean mp3, pero hay algunas consideraciones al respecto.

  • Si el fichero es de texto, como pueden ser las listas de reproducción, los ficheros de información, entre otros, se recomienda que estos se ubiquen al principio del fichero a generar, puesto que el reproductor los descartará rápidamente.
  • Si el fichero es binario, como las imágenes por ejemplo, usted debe colocarlas al final del fichero a generar, de esta manera el reproductor se los encontrará después de reproducir y no los confundirá con ficheros mp3.

Instalación del programa

Para poder instalar esta aplicación en Ubuntu, en primer lugar debemos tener activo en nuestro fichero /etc/apt/sources.list el repositorio universe, después de haber verificado esto procedemos a instalarlo.

$ sudo aptitude install mp3wrap

A continuación explicaré el uso de mp3wrap a través de un ejemplo.

En primer lugar, mostraré la lista de ficheros a fusionar.

$ ls
01.mp3  02.mp3  03.mp3  04.mp3

Ahora fusionaré las 2 primeras canciones.

$ mp3wrap album.mp3 01.mp3 02.mp3

He obviado el mensaje que nos muestra mp3wrap para evitar extender más de lo necesario este artículo. También es importante acotar que el fichero generado no se llamará album.mp3 (lo que pareciese lógico), sino album_MP3WRAP.mp3, es recomendable no borrar la cadena MP3WRAP, ésta le indicará al programa mp3splt, el cual nos permite separar de nuevo los ficheros fusionados, que dicho fichero fué fusionado utilizando mp3wrap, lo anterior nos facilitará su extracción con mp3splt, en caso de darse.

Ahora bien, voy a añadir las otras dos canciones, que conste que este paso lo hago solamente para demostrar como añadir otros ficheros a una compilación previamente hecha con mp3wrap.

$ mp3wrap -a album_MP3WRAP.mp3 03.mp3 04.mp3

Si deseamos conocer cuales son los archivos que contiene el fichero generado por mp3wrap, simplemente debemos hacer lo siguiente.

mp3wrap -l album_MP3WRAP.mp3
List of wrapped files in album_MP3WRAP.mp3:

01.mp3
02.mp3
03.mp3
04.mp3

Si en la instrucción anterior hubiesemos hecho uso de la opción -v (verbose), mp3wrap nos mostraría información adicional acerca de los ficheros. Por ejemplo:

mp3wrap -lv album_MP3WRAP.mp3
List of wrapped files in album_MP3WRAP.mp3:
  #    Size       Name
 --- --------   --------
  1) 6724962    01.mp3
  2) 9225205    02.mp3
 --- --------   --------
     15950240   2 files

Pueden observar en el ejemplo anterior que se nos muestra el tamaño en bytes de cada uno de los ficheros, así como el número total de ficheros que han sido fusionados y su tamaño correspondiente en bytes.

Como se ha podido ver a través del articulo el uso de mp3wrap es bastante sencillo, si tiene alguna duda acerca de su uso consulte el manual de mp3wrap, man mp3wrap, o la sección de preguntas mas frecuentes acerca de mp3wrap.

Cowbell: Organiza tu música

Cowbell, es una aplicación que te permite organizar tus compilaciones musicales de una manera fácil y divertida, ya no tienes que aburrirte por horas al intentar organizar tus colección musical manualmente.

Una de las cosas que me han agradado de este programa es que aparte de poder editar las etiquetas manualmentede en una interfaz bastante agradable y sencilla, también puedes obtener toda la información necesaria a través de Amazon Web Services, lo anterior incluye: Número, Título, Año, Estilo, Portada y demás información relacionada con las canciones. Al utilizar este servicio cuentas con una amplia bases de datos, lo anterior en realidad permite ahorrar mucho tiempo.

Dentro de las preferencias de este programa nos encontraremos con opciones que nos permitirán renombrar ficheros de acuerdo a un patrón, el cual lo podemos generar al combinar cualquiera de las siguientes palabras claves.

  • Artist
  • Album
  • Title
  • Track
  • Genre
  • Year

Las palabras claves anteriores se explican por sí solas. Simplemente escoge el patrón que más se ajuste a tus necesidades. Entre otras de las características de este programa, cabe mencionar la posibilidad de generar un fichero de lista de reproducción del álbum.

¿Tienes una larga colección de música cuyas etiquetas debes arreglar?, no te preocupes, Cowbell también puedes usar desde la línea de comandos, la manera de invocar el comando es la siguiente:

$ cowbell --batch /ruta/a/tu/musica

Donde evidentemente debes modificar el directorio /ruta/a/tu/musica de acuerdo a tus necesidades.

Para instalar esta aplicación en ubuntu debes tener activo el repositorio universe en tu fichero /etc/apt/sources.list. Una vez actualizada la lista de repositorios, puedes instalar Cowbell de la siguiente manera:

$ sudo aptitude cowbell