jueves, 2 de mayo de 2013

Copia de seguridad de DVD en Debian GNU/Linux



Este es el método que uso para hacer copias de seguridad de mis DVD.

Para instalar las herramientas ejecutamos lo siguiente:

aptitude install dvdbackup genisoimage

Y para pasar cada DVD a un fichero ISO ejecuto lo siguiente:

dvdbackup -M -o output_directory
genisoimage -dvd-video -o copia.iso output_directory

--

jueves, 24 de enero de 2013

Usar la fecha y hora de los datos EXIF para renombrar fotografías



Para organizar las fotos me gusta renombrarlas con la fecha y hora en la que fueron tomadas.
Para ello podemos usar la utilidad ExifTool de línea de comandos.

Para instalar la utilidad ejecutamos lo siguiente:

aptitude install libimage-exiftool-perl

Ejecutaremos el siguiente comando sobre la carpeta que contiene las fotografías:

exiftool '-FileName<CreateDate' -d %Y%m%d_%H%M%S%%-c.%%e .

Bibliografia:

http://www.sno.phy.queensu.ca/~phil/exiftool/
--

miércoles, 2 de enero de 2013

Joystick de PS3 (Dualshock 3 / Sixaxis) por bluetooth en Debian GNU/Linux



Este artículo explica los pasos para configurar un mando de PS3 en Linux, permitiendo que funcione como ratón y mapeando ciertos botones del mando a eventos del teclado.

Conectado con el cable, el mando de la PS3 funciona directamente en Linux, sin hacer nada, pero para que funcione por bluetooth es necesario seguir unos pasos, ya que no sigue el estándar de dispositivos de entrada de Bluetooth.

Para que funcione correctamente vamos a usar el proyecto QtSixA.

No existen paquete para Debian, por lo que debemos compilar el fuente del proyecto con los siguientes comandos:

aptitude -r install bluetooth libusb-dev libbluetooth-dev pyqt4-dev-tools libjack-jackd2-dev pkg-config checkinstall build-essential
wget http://sourceforge.net/projects/qtsixa/files/QtSixA%201.5.1/QtSixA-1.5.1-src.tar.gz
tar xfvz QtSixA-1.5.1-src.tar.gz
cd QtSixA-1.5.1
make
mkdir -p /var/lib/sixad/profiles
checkinstall
update-rc.d sixad defaults
/etc/init.d/sixad start

Conectamos el mando con el cable USB y ejecutamos el siguiente comando:

sixpair

Si obtenemos un mensaje como el siguiente todo ha ido correctamente:

Current Bluetooth master: DE:AD:BE:EF:00:00
Setting master bd_addr to: 00:1F:81:00:06:20

Ahora podemos desconectar el cable USB y pulsar el botón "PS" del joystick.

Si se ha detectado correctamente, en el log del sistema (var/log/messages) aparecerán un par de líneas como las siguientes:

Jan 2 00:36:40 mipc kernel: [ 5598.272211] usb 2-1: USB disconnect, address 3
Jan 2 00:36:48 mipc kernel: [ 5605.974295] input: PLAYSTATION(R)3 Controller (00:23:45:0A:04:37) as /devices/virtual/input/input17

Para desconectar y apagar el mando, pulsar el botón "PS" del mando durante más de 12 segundos.

Para poder usar el joystick como ratón y mapear los botones con eventos del teclado hay varias opciones.
Podemos usar la misma aplicación QtSixA, que permite definir varios perfiles para distintos juegos o aplicaciones.
Otra opción en la misma línea es usar el proyecto QJoyPad.
Y otra opción es usar las opciones que nos ofrece el propio servidor X, que es la que se describe a continuación.

El primer paso será ejecutar lo siguiente:

aptitude -r install xserver-xorg-input-joystick

Y editamos el fichero "/usr/share/X11/xorg.conf.d/50-joystick.conf" añadiendo el siguiente contenido:

Option "MapButton1" "none" # Select
Option "MapButton2" "none" # Analog left button
Option "MapButton3" "none" # Analog right button
Option "MapButton4" "key=67" # Start (F1)

Option "MapButton5" "key=111" # Up (Up)
Option "MapButton6" "key=114" # Right (Right)
Option "MapButton7" "key=116" # Down (Down)
Option "MapButton8" "key=113" # Left (Left)

Option "MapButton9" "none" # R1
Option "MapButton10" "none" # R2
Option "MapButton11" "none" # L1
Option "MapButton12" "none" # L2

Option "MapButton13" "button=1" # Triangle (Mouse left click)
Option "MapButton14" "button=3" # Circle (Mouse right click)
Option "MapButton15" "key=36" # X (Return)
Option "MapButton16" "key=9" # Square (Escape)

Option "MapButton17" "none" # PS

Option "MapAxis1" "mode=relative axis=+1x deadzone=5000" # Analog left
Option "MapAxis2" "mode=relative axis=+1y deadzone=5000" # Analog left
Option "MapAxis3" "mode=relative axis=+1zx deadzone=5000" # Analog right
Option "MapAxis4" "mode=relative axis=+1zy deadzone=5000" # Analog right
Option "MapAxis5" "mode=none" # Motion sensor
Option "MapAxis6" "mode=none" # Motion sensor
Option "MapAxis7" "mode=none" # Motion sensor

Para ver los códigos que aplican a cada tecla ejecutamos el siguiente comando:

xmodmap -pk

Ahora debemos reiniciar el servidor X y ya tenemos configurado el mando.

Bibliografia:

http://qtsixa.sourceforge.net/
http://www.pabr.org/sixlinux/sixlinux.en.html
http://www.raspians.com/Knowledgebase/ps3-dualshock-controller-install-on-the-raspberry-pi/
http://www.x.org/archive/X11R7.5/doc/man/man4/joystick.4.html
http://qjoypad.sourceforge.net/

--

martes, 10 de julio de 2012

Instalando CyanogenMod en Samsung Galaxy Ace (GT-S5830)

Las versiones de Android que traen los móviles vienen muy personalizadas por las marcas, hasta tal punto que pueden traer muchas aplicaciones y funcionalidades que no se usan y que ocupan mucho espacio. Incluso traen personalizaciones que merman el rendimiento del terminal y limitan sus funcionalidades. Además, las marcas no actualizan las versiones del sistemas operativo tan frecuentemente como sería deseable, e incluso, en algunos casos se quedan congeladas en versiones muy obsoletas.

Gracias a que Android es un desarrollo abierto, la gente de CyanogenMod ha creado un firmware Android que puede funcionar en multitud de dispositivos, y con el que podemos evitar los problemas comentados en su mayoría, y obtener ventajas como las de tener acceso al usuario root.

Por ello me he embarcado en instalar en mi móvil Samsung Galaxy Ace (GT-S5830) el firmware de CyanogenMod y disfrutar de estas ventajas.

Lo primero será asegurarse de que el móvil se encuentra actualizado a su última versión. En teoría se puede actualizar directamente desde el teléfono o usando Kies (aunque nunca me ha funcionado desde aquí).

Una vez hecho esto, ya se puede actualizar la partición de recovery, y actualizar la partición de arranque y de sistema, que son las que tienen la nueva versión del sistema operativo CyanogenMod. Estas particiones se encuentran en la memoria interna del móvil.

La partición de recovery contiene un sistema operativo completo pensado únicamente para recuperar el móvil ante fallos del sistema operativo principal, o para realizar labores de mantenimiento que requieran que no esté arrancado el sistema operativo principal.
La partición de arranque es la que contiene el kernel de Linux que arranca el sistema operativo Android, que está contenido en la partición de sistema.

La descripción de como llevar a cabo estas actualizaciones se encuentran en esta página:

http://wiki.cyanogenmod.com/wiki/Samsung_Galaxy_Ace:_Full_Update_Guide

Conviene realizar un backup del sistema operativo previo a la actualización, desde el recovery, tal y como se describe en la guía.

Existe un modo alternativo, un poco más complejo que se detalla en esta página:

http://forum.xda-developers.com/showthread.php?t=1034145

Para conectarse al móvil por línea de comando se deberá instalar Samsung Kies y el SDK de Android en el ordenador y comprobar que el comando adb detecta bien el teléfono tal y como se indica en la guía de instalación del SDK de Android.

--

jueves, 26 de abril de 2012

Videos AVI MJPEG y Picasa

Parece ser que ciertas cámaras Canon antiguas graban en formato de fichero AVI con un formato de codificación MJPEG. Este formato de video no está soportado por Picasa, por lo que no serán detectados y no se podrán subir a la Web de Picasa ni ser visualizados.

Para solucionar este problema podemos recodificarlos con la herramienta ffmpeg usando la siguiente línea de comandos:

ffmpeg -i video_origen.avi -vcodec mpeg4 -b 5000k -r 30 -acodec libfaac video_recodificado.3gp

miércoles, 1 de febrero de 2012

Oracle sqlplus

De vez en cuando necesito usar la línea de comandos de Oracle y siempre se me olvidan los trucos y la forma de trabajar con el SQLPlus. Aquí pongo una serie de cosas básicas para trabajar con esta herramienta:

Histórico de comandos

Para volver a ejecutar el último comando basta con poner una barra:

/

Autocommit

Para activar el modo autocommit:

set autocommit on;

y para desactivarlo:

set autocommit off;

Tamaño de la pantalla

Al realizar consultas de tablas cuyo resultado no cabe en la pantalla, el sqlplus se empeña en ajustarlo al ancho de la pantalla y no hay quien vea nada. Para solucionar este problema podemos definir un ancho de pantalla mayor con estos comandos:

set linesize 300;
set pagesize 300;

domingo, 27 de noviembre de 2011

Escanear fotos en Linux

El siguiente artículo describe los pasos para escanear fotografías de la manera más óptima posible utilizando las herramientas que proporciona Linux.
Para el escaneo de imágenes vamos a utilizar XSane y para el retoque y las mejoras de la imagen obtenida utilizaremos GIMP.

En la pantalla principal de XSane seleccionaremos los parámetros para el escanéo.



Debemos seleccionar una resolución de al menos 600 dpi. La mejor resolución suele ser la máxima resolución óptica que permita el escáner. En mi caso, tras realizar varias pruebas, opté por usar una resolución de 900 dpi.
Hay que tener en cuenta que el tamaño de las imágenes obtenidas es exponencial a la resolución. Por lo que hay que hacer un balance del uso que se va a realizar de las fotos escaneadas para decidir si se opta por obtener la máxima calidad a costa del tiempo de proceso que nos va a llevar.

El formato de imagen seleccionado debe ser uno que utilice un tipo de compresión sin pérdida de información, como por ejemplo PNG. En ningún caso se debe usar el formato JPEG ya que se perderá mucha calidad en la compresión y en procesado posterior con GIMP.

Para obtener un ajuste de color adecuado durante el escanéo conviene abrir la ventana de vista previa, en el menú "Ventana" -> "Mostrar vista previa". En ella podemos obtener una vista previa de la imagen a escanear y seleccionar el área de escaneo de la imagen a obtener.
Realizar una vista previa nos permitirá además seleccionar la opción "Ajustar automáticamente gamma, brillo y contraste", en la pantalla principal, para que dichos parámetros se ajusten automáticamente usando la vista previa de la imagen obtenida.

Una vez hecho esto podemos proceder a realizar el escaneo de la imagen, visualizar el resultado obtenido y guardarla en el formato de fichero seleccionado.

El siguiente paso consistirá en abrir la imagen obtenida en GIMP para su retoque.

El primer paso consistirá en rotar la imagen adecuadamente, en el caso que sea necesario. Para ello seleccionaremos la opción de rotación adecuada dentro del menú "Imagen" -> "Transformar".

El siguiente paso será ajustar el área de la imagen de forma precisa, para que la fotografía ocupe todo el área de la imagen y no queden márgenes blancos. Para ello pinchamos en la "Herramienta de selección de rectángulos" y seleccionamos el área de la fotografía que nos interesa. Una vez hecho esto seleccionamos la opción del menú "Imagen" -> "Recortar a la selección".


En este momento conviene guardar una copia de seguridad de la imagen para poder revertir de forma segura los cambios a realizar en los siguientes pasos. O simplemente para tener una copia de la fotografía tal y como se obtuvo del proceso de escaneo. El formato en el que se guardará la imagen será el formato original en el que fue obtenida, por ejemplo PNG.

En el caso de que la imagen contenga un defecto de ojos rojos lo podremos corregir con la opción del menú "Filtros" -> "Realzar [Enhance]" -> "Quitar ojos rojos ...".
Si la imagen escaneada tiene ruido, como puede ser polvo, rayas o el efecto moiré, se podrá corregir usando la opción "Filtros" -> "Realzar [Enhance]" -> "Desparasitar ...". Si se va a aplicar el filtro a toda la imagen conviene no seleccionar la opción "Adaptativo", ya que quita efectividad al filtro. La siguiente imagen muestra los valores que he utilizado con éxito en alguna imagen.



Visualizar las imágenes obtenidas (en formato PNG y con una resolución muy alta) es algo engorroso ya que debido a su gran tamaño tardan bastante en mostrarse. Por ello, es interesante tener una copia de la imagen con una resolución menor y en formato JPEG, intentando mantener en la medida de lo posible toda su calidad. Conviene guardar previamente una copia de la imagen original en formato PNG, como se comentó anteriormente.

A la hora de reducir la resolución de la imagen conviene tenerla en dos instancias de GIMP simultaneas para comparar los detalles de la imagen antes y después de redimensionarla. De esta forma, podremos reducir la resolución todo lo posible comprobando que no se pierden detalles significativos.
Para reducir la resolución de la imagen usaremos la opción "Imagen" -> "Escalar la imagen". En esta pantalla podremos seleccionar la nueva resolución de la imagen y los pixeles por pulgada. Para facilitarnos el trabajo conviene seleccionar como medida "Porcentaje", lo que nos permitirá memorizar más fácilmente el valor que aplicamos en cada prueba que realicemos.
El valor de pixeles por pulgada no modifica realmente la resolución de la imagen, sino que indica el tamaño real de la imagen. Un imagen con la misma resolución se mostrará en un visualizador de imágenes con un tamaño mayor cuando menor valor de pixeles por pulgada tenga, ya que los puntos de la imagen estarán menos condensados. Las fotografías suelen tener configurado un valor de 72 pixeles por pugada.

El último paso consistirá en guardar la imagen en formato JPEG conservando la calidad de la imagen al máximo posible. Para ello, en las opciones de guardado seleccionar como calidad una valor de al menos 90.

Por último, visualizar la imagen JPEG obtenida y comprobar que tiene la calidad que se esperaba.