linux

Cargar diccionarios de Babylon en Stardict

Stardict

Introducción

Stardict es un programa que te permite acceder a diccionarios que cargas en él. Lo que me gusta de él es que puedes tenerlo ejecutándose en segundo plano y al seleccionar un texto en cualquier aplicación, te aparecerá un pop-up con el contenido de esa palabra en los diccionarios. Por lo que si tienes un diccionario de Inglés a Español puedes usarlo de traductor.

El problema que tiene es que los diccionarios no vienen con el programa y tienes que buscar algo por internet que pueda usarlo el programa. Esta guía se concentra en facilitar esta tarea.

Instalación

Primero vamos a instalar el programa. Este se encuentra en los repositorios de ubuntu. Por lo tanto solo tendremos que instalar el paquete de nombre stardict-gnome desde nuestro gestor de paquetes preferido o sino ejecutar el siguiente comando desde la consola:

>> sudo apt-get install stardict-gnome

Una vez tenemos instalado el programa, vamos a cargar varios diccionarios en él. Los diccionarios nos los bajaremos de internet y para convertirlos en un formato que pueda usar stardict tendremos que instalar además otro programa. Así que desde nuestro gestor de paquetes preferido instalamos el paquete de nombre stardict-tools o ejecutamos el siguiente comando:

>> sudo apt-get install stardict-tools

Lo siguiente es conseguir por internet los diccionarios que queramos usar. Una de las páginas que proporciona diccionarios gratuitos que nos van a servir es Babylon. Entonces buscamos y descargamos los diccionarios que queramos de la web de Babylon (http://www.babylon.com/free-dictionaries/) (en mi caso me voy a poner uno de Español a Inglés y otro de Inglés a español)

Cuando terminen de descargarse los diccionarios que queremos usar, empezamos el proceso haciendo los siguientes pasos:

  • Abrimos el programa de conversión de formatos  de diccionarios ejecutando el siguiente comando desde una consola:

>> stardict-editor

  • Comprobamos que estamos en la ventana Compile.
  • Le damos al botón Browse...
  • Seleccionamos uno de los archivos de extensión bgl.
  • Cambiamos la selección a BGL file.
  • Le damos al botón Build.
  • Si todo ha ido bien, nos pondrá: Done.
  • Este proceso nos habrá generado un fichero del mismo nombre pero con extensión babylon.
  • Entonces le volvemos a dar al botón Browse...
  • Seleccionamos el fichero de extensión babylon.
  • Cambiamos la selección a Babylon file.
  • Le volvemos a dar al botón Build.
  • Si todo ha ido bien, al final nos pondrá: Done!.
  • Y veremos que nos ha generado unos ficheros de extensión idx, ifo, syn y dz.
  • Por último cerramos el programa.

Repetimos estos pasos con cada diccionario que queramos cargar.

Una vez que tengamos todos los archivos generados (idx, ifo, syn y dz), los copiamos a la carpeta /usr/share/stardict/dic/. Por último abrimos el programa y ya veremos los diccionarios en las preferencias.

Renombrar las fotos añadiendole la fecha exif al principio en linux

Fotos ordenadas por fecha

Introducción

Muchas veces tenemos fotografías del mismo día pero tomadas con diferentes cámaras de fotos. Cada una le da a las imágenes usa nombres diferentes, por lo que para ordenarlas cronológicamente no es nada fácil. Por suerte, la mayoría  de las cámaras almacena en las fotos datos como la fecha y hora que tenía la cámara cuando fue tomada (se llaman datos exif). Gracias a esto, podemos extraer estos datos y usarlos para renombrar las fotografías. Así podremos ordenarlas cronológicamente.

Para ello necesitamos tener primero instalado el programa exif (con algunas fotos no me funcionaba y lo tube que hacer con libimage-exiftool-perl). Si no lo tenemos, solo hay que instalar el paquete llamado exif (o libimage-exiftool-perl) a través de nuestro gestor de paquetes preferido o con el siguiente comando:

>> sudo apt-get install exif

 

>> sudo apt-get install libimage-exiftool-perl

Añadir la fecha al nombre de las fotos

Para añadir la fecha al comienzo del nombre del fichero tendremos que ejecutar uno de los dos siguientes comandos:

>> for i in *.jpg; do dst=$(exif -t 0x9003 -m "$i" ) && dst_esc=$(echo $dst | sed 's/ /_/g' | sed 's/:/-/g' ) && mv "$i" "$dst_esc $i" ; done

 

>> for i in *.jpg; do dst=$(exiftool -T -createdate "$i" ) && dst_esc=$(echo $dst | sed 's/ /_/g' | sed 's/:/-/g' ) && mv "$i" "$dst_esc $i" ; done

Explicación de cada parte del comando:

  • Para hacer solo esto con las fotos que tienen de extensión .jpg pondremos lo siguiente (si nuestras fotos tienen otra extensión cambiaremos esta) :  
  • Extraemos de la imagen la fecha en la que se tomó:
>> exif -t 0x9003 -m  DSC00024.JPG
2006:10:13 03:17:3

 

>> exiftool -T -createdate DSC00024.JPG
2006:10:13 03:17:3
  • Como no me gustan los espacios en los nombres de los archivos, lo cambio por _ con el siguiente comando:   
  • Como no me gustan los : en los nombres de los archivos los cambio por - con el siguiente comando:   

Quitar la fecha del nombre de las fotos

Para quitar la fecha que hemos añadido en el anterior paso solo tenemos que eliminar los primeros 19 caracteres del nombre que corresponden con la fecha (YYYY:MM:DD-HH:MM:SS). Esto lo haremos con el siguiente comando:

>> for i in ????-??-??_??-??-??*; do oldname=$(echo "$i" | sed 's/...................\(.*\)/\1/' ) && mv "$i" "$oldname" ; done

Explicación de cada parte del comando:

  • Solo queremos renombrar los archivos que tienen la fecha. Estos los conseguimos con lo siguiente: for i in ????-??-??_??-??-??*; do

Editar los datos Exif de las fotos

Puede ser que cuando hicieramos las fotos, la fecha de la cámara estuviera mal puesta. Para modificar la fecha y hora de los datos exif de las fotos, podemos utilizar el comando exiv2. Si no lo tenemos instalado, solo tenemos que instalar el paquete exiv2 desde nuestro gestor de paquetes preferidos o ejecutando el siguiente comando:

>> sudo apt-get install exiv2

Una vez ya lo tenemos instalado podemos empezar a modificar los datos exif. A continuación tenéis unos ejemplos de uso:

  • Sumar 3 años:
>> exiv2 -Y 3 *.JPG
  • Sumar 2 meses:
>> exiv2 -O 2 *.JPG
  • Sumar 5 días:
>> exiv2 -D 5 *.JPG
  • Sumar 3 horas:
>> exiv2 -a 03:00:00 *.JPG
  • Sumar 10 minutos:
>> exiv2 -a 00:10:00 *.JPG
  • Sumar 27 segundos:
>> exiv2 -a 00:00:27 *.JPG

(si queremos restar en vez de sumar, solo tendremos que poner números negativos)

Migración de una instalación de mldonkey

Migración de una instalación de mldonkey

En este artículo os voy a explicar como podéis migrar la configuración de una instalación del servidor de mldonkey de una máquina a otra diferente (ya sea por un cambio de máquina, por formatear, etc) y así no perder la configuración para que los demás usuarios nos sigan identificando como el mismo con los puntos conseguidos.

Lo primero de todo es parar el servicio por si se esta ejecutando:

>> sudo /etc/init.d/mldonkey-server stop

Una vez parado, vamos ha hacer una copia de seguridad de los archivos que vamos a sustituir:

>> sudo tar -zcvf mldonkey.tar.gz /var/lib/mldonkey

Ahora podemos reemplazar los ficheros actuales por los de la otra instalación que estamos migrando. Como ejemplo considero que tengo la carpeta de la antigua instalación del servidor mldonkey en /mnt/var/lib/mldonkey. Lo que hay que hacer es: borrar la configuración nueva, copiar la antigua configuración y poner al usuario mldonkey de propietario de estos archivos:

>> cd /var/lib/mldonkey
>> sudo rm -R .
>> sudo cp -R /mnt/var/lib/mldonkey/* .
>> sudo chown mldonkey:mldonkey -R .

Una vez que tenemos la antigua configuración, tenemos que actualizar un parámetro de ella (el uid del usuario mldonkey). Para saber el uid del usuario mldonkey en la máquina en la que esta instalado el servidor, debemos ejecutar el siguiente comando (como podéis ver el uid del usuario mldonkey es 115):

>> more /etc/passwd | grep mldonkey
...
mldonkey:x:115:123::/var/lib/mldonkey:/bin/false
...

Una vez tenemos el uid del usuario mldonkey, tendremos que ir al archivo /var/lib/mldonkey/downloads.ini y buscar la línea en la que se indica este parámetro y le ponemos el actual:

run_as_useruid = 132

Ya tenemos el servidor mldonkey listo y lo podemos volver a arrancar:

>> sudo /etc/init.d/mldonkey-server start

Wifi usb 300 Mbps con antena externa de 5dBi

Wifi usb 300

Introducción

Como algunos ya sabréis, me he comprado un nuevo wifi usb compatible con el protocolo 802.11n (300 Mbps) y con posibilidad de ponerle una antena externa para coger una mejor señal (ya que con el conceptronic que tenía antes, últimamente se me desconectaba cada dos por tres). También mire que fuera compatible con Linux. Y después de probarlo, la verdad es que estoy muy satisfecho con él. Además como se le puede cambiar la antena, si un día necesito coger señales wifi más débiles, siempre me puedo comprar una antena mejor que esta.

Me lo compre en ebay por unos 9 €. No tiene marca, pero si lo queréis aquí tenéis una lista con el mismo artículo.

Las principales características de este usb wifi son las siguientes:

  • Soporta los estándares IEEE 802.11n, 802.11g y IEEE 802.11b
  • USB 2.0
  • 1x2 MIMO technology
  • Antena externa de alta potencia de 5dBi
  • Chipset : RTL8191SU
  • Brand New
  • No soporta la banda de frecuencia de 5GHz
  • Métodos de modulación: BPSK/ QPSK/ 16-QAM/ 64-QAM/ DBPSK/ DQPSK/ CCK
  • Poder de transmisión:
    • IEEE 802.11n: 16 dBm (Max)
    • IEEE 802.11g: 19 dBm (Max)
    • IEEE 802.11b: 22 dBm (Max)
  • Modos de seguridad: 64/128-bit WEP, TKIP, AES, WPA and WPA2
  • Banda de frecuencia: 2.4GHz ISM Band*
  • Ratios de transferencia:
    • IEEE 802.11n 300Mbps (Max)
    • IEEE 802.11g 54Mbps (Max)
    • IEEE 802.11b 11Mbps (Max)
  • Ancho de banda:
    • 40MHz for 300Mbps
    • 20MHz for 150Mbps

Instalación

Conectándolo directamente a mi Ubuntu Lucid 10.04 no me ha funcionado. Entonces he intentado instalar el driver del chipset RTL8191SU de Realtek. Para bajar el driver, solo hay que ir a la web de Realtek y en la sección de descargas bajar el correspondiente al chipset de nuestro usb. Una vez lo hemos bajado tenemos que hacer lo siguiente:

>> unzip RTL8191SU_usb_linux_v2.6.0006.20100625.zip
>> cd rtl8712_8188_8191_8192SU_usb_linux_v2.6.0006.20100625/driver
>> tar -zxvf rtl8712_8188_8191_8192SU_usb_linux_v2.6.6.0.20100625.tar.gz
>> cd rtl8712_8188_8191_8192SU_usb_linux_v2.6.0006.20100625
>> make

Aunque no daba ningún error al compilarlo, me aparecían muchos warning como este:

warning: cast from pointer to integer of different size

Este error según he mirado por internet, suele ser provocado porque el código fuente no es compatible con la arquitectura de tu sistema operativo (el código fuente del driver era para 32 bits y yo tengo un Ubuntu de 64). Luego vi que en los requisitos del driver (que estaban en un power point que venía en el zip del driver) ponía eso.

Entonces mire que errores ponía al enchufar el usb sin instalar nada y si que se cargaba un módulo y este daba un error:

>> dmesg
[  195.680081] usb 1-4: new high speed USB device using ehci_hcd and address 9
[  195.833672] usb 1-4: configuration #1 chosen from 1 choice
[  195.834915] ==>ep_num:4, in_ep_num:1, out_ep_num:3
[  195.834922] ==>RtInPipes:3 
[  195.834927] ==>RtOutPipes:4  6  13 
[  195.834935] ==>txqueue_to_outpipemap for BK, BE, VI, VO, HCCA, TXCMD, MGNT, HIGH, BEACON:
[  195.834939] 1  1  0  0  2  2  2  2  2 
[  196.139432] Dot11d_Init()
[  196.155693] udev: renamed network interface wlan0 to wlan2
[  196.174397] rtl819xU: --->FirmwareDownload92S()
[  196.174402]
[  196.174413] usb 1-4: firmware: requesting RTL8192SU/rtl8192sfw.bin
[  196.178980] rtl819xU:request firmware fail!
[  196.178984]
[  196.179288] rtl819xU:Firmware Download Fail!!a
[  196.179290]
[  196.195633] rtl819xU: --->FirmwareDownload92S()
[  196.195637]
[  196.195652] usb 1-4: firmware: requesting RTL8192SU/rtl8192sfw.bin
[  196.203679] rtl819xU:request firmware fail!
[  196.203683]
[  196.204052] rtl819xU:Firmware Download Fail!!a
[  196.204055]
[  196.204060] rtl819xU:ERR!!! _rtl8192_up(): initialization is failed!
[  196.204063]
[  196.225748] rtl819xU: --->FirmwareDownload92S()
[  196.225756]
[  196.225768] usb 1-4: firmware: requesting RTL8192SU/rtl8192sfw.bin
[  196.243640] rtl819xU:request firmware fail!
[  196.243647]
[  196.245835] rtl819xU:Firmware Download Fail!!a
[  196.245840]
[  196.259225] rtl819xU: --->FirmwareDownload92S()
[  196.259232]
[  196.259246] usb 1-4: firmware: requesting RTL8192SU/rtl8192sfw.bin
[  196.286315] rtl819xU:request firmware fail!
[  196.286319]
[  196.287270] rtl819xU:Firmware Download Fail!!a
[  196.287273]
[  196.287281] rtl819xU:ERR!!! _rtl8192_up(): initialization is failed!

Como podemos ver, el módulo rtl819xU esta buscando el archivo /lib/firmware/RTL8192SU/rtl8192sfw.bin y no lo encuentra. Así que tendremos que ponerlo a mano. Para ello, en la carpeta /lib/firmware tenemos que crear una carpeta de nombre RTL8192SU y poner el archivo rtl8192sfw.bin que lo podemos bajar de aquí.

>> cd /lib/firmware
>> sudo mkdir RTL8192SU
>> cd RTL8192SU
>> sudo wget http://svn.debian.org/wsvn/kernel/dists/trunk/firmware-nonfree/realtek/RTL8192SU/rtl8192sfw.bin

Una vez hemos hecho lo anterior, volvemos a conectar el usb y ya nos funcionará correctamente.

>> dmesg
[  233.370036] usb 1-4: new high speed USB device using ehci_hcd and address 10
[  233.523575] usb 1-4: configuration #1 chosen from 1 choice
[  233.524816] ==>ep_num:4, in_ep_num:1, out_ep_num:3
[  233.524821] ==>RtInPipes:3 
[  233.524826] ==>RtOutPipes:4  6  13 
[  233.524833] ==>txqueue_to_outpipemap for BK, BE, VI, VO, HCCA, TXCMD, MGNT, HIGH, BEACON:
[  233.524837] 1  1  0  0  2  2  2  2  2 
[  233.834091] Dot11d_Init()
[  233.850132] udev: renamed network interface wlan0 to wlan2
[  233.869694] rtl819xU: --->FirmwareDownload92S()
[  233.869703]
[  233.869718] usb 1-4: firmware: requesting RTL8192SU/rtl8192sfw.bin
[  233.875771] rtl819xU:signature:8192, version:902b, size:30, imemsize:7408, sram size:9688
[  233.875775]
[  233.875887] rtl819xU:--->FirmwareDownloadCode()
[  233.875889]
[  233.875982] rtl819xU:--->FirmwareCheckReady(): LoadStaus(1),
[  233.877709] rtl819xU:<---FirmwareCheckReady(): LoadFWStatus(1), rtStatus(0)
[  233.877714]
[  233.877722] rtl819xU:--->FirmwareDownloadCode()
[  233.877724]
[  233.877864] rtl819xU:--->FirmwareCheckReady(): LoadStaus(2),
[  233.880317] rtl819xU:-->FirmwareEnableCPU()
[  233.880326]
[  233.882682] rtl819xU:IMEM Ready after CPU has refilled.
[  233.882689]
[  233.882695] rtl819xU:<--FirmwareEnableCPU(): rtStatus(0x0)
[  233.882698]
[  233.882703] rtl819xU:<---FirmwareCheckReady(): LoadFWStatus(2), rtStatus(0)
[  233.882705]
[  233.882711] rtl819xU:--->FirmwareDownloadCode()
[  233.882713]
[  233.882726] rtl819xU:--->FirmwareCheckReady(): LoadStaus(3),
[  233.883052] rtl819xU:DMEM code download success, CPUStatus(0x3f)
[  233.883054]
[  233.884426] rtl819xU:Polling Load Firmware ready, CPUStatus(ff)
[  233.884428]
[  233.885674] rtl819xU:FirmwareCheckReady(): Current RCR settings(0x157e20e)
[  233.885676]
[  233.885929] rtl819xU:<---FirmwareCheckReady(): LoadFWStatus(3), rtStatus(0)
[  233.885932]
[  233.885935] rtl819xU:Firmware Download Success!!
[  233.885937]
[  236.714949] ADDRCONF(NETDEV_UP): wlan2: link is not ready
[  257.057024] Linking with INTROWIFI2,channel:10, qos:0, myHT:1, networkHT:0, mode:6
[  257.057048] Linking with INTROWIFI2,channel:10, qos:0, myHT:1, networkHT:0, mode:6
[  257.057203] =====>rtl8192SU_link_change 1
[  257.059179] <=====rtl8192SU_link_change 2
[  257.059190] ===>ieee80211_associate_procedure_wq(), chan:10
[  257.110653] rtl819xU:==>SetBWModeCallback8192SUsbWorkItem()  Switch to 20MHz bandwidth
[  257.110660]
[  257.128254] rtl819xU:<==SetBWModeCallback8192SUsbWorkItem()
[  257.128276] =================>ieee80211_authentication_req():auth->algorithm is 0
[  257.133893] rtl819xU:rtl8192_qos_association_resp: network->flags = 2,0
[  257.133896]
[  257.133920] rtl819xU:qos active process with associate response received
[  257.133922]
[  257.133933] Associated successfully
[  257.133938] Using G rates:108
[  257.133942] Successfully associated, ht not enabled(0, 0)
[  257.133946] =====>rtl8192SU_link_change 1
[  257.137239] =============>ARFR0+rate_index*4:0xfff
[  257.146983] <=====rtl8192SU_link_change 2
[  257.146989] ============>normal associate
[  257.147744] ADDRCONF(NETDEV_CHANGE): wlan2: link becomes ready
[  262.092467] alg name:CCMP
[  262.092498] rtl819xU:EnableHWSecurityConfig8192:, hwsec:1, pairwise_key:4, SECR_value:c
[  262.092501]
[  262.092782] rtl819xU:====>to setKey(), dev:ffff8800544c0000, EntryNo:4, KeyIndex:0, KeyType:4, MacAddr00:1a:2b:19:61:c3
[  262.092786]
[  262.096875] alg name:CCMP
[  262.096888] rtl819xU:====>to setKey(), dev:ffff8800544c0000, EntryNo:1, KeyIndex:1, KeyType:4, MacAddrff:ff:ff:ff:ff:ff

Por si os interesan los datos de este usb:

>> lsusb
...
Bus 001 Device 004: ID 0bda:8172 Realtek Semiconductor Corp.
...