Formatear Pen Drive USB en GNU/Linux

sábado, septiembre 27, 2008

Para formatear un pen drive USB desde un terminal GNU/Linux solo necesitamos seguir estos sencillos pasos:

Primero conectamos el dispositivo a la PC y hacemos un tail para ver en que parte ha quedado:
$ tail /var/log/messages
Sep 27 03:12:30 desktop kernel: [27939.999977] usb 1-7: configuration #1 chosen from 1 choice
Sep 27 03:12:30 desktop kernel: [27940.002680] scsi8 : SCSI emulation for USB Mass Storage devices
Sep 27 03:12:35 desktop kernel: [27944.996927] scsi 8:0:0:0: Direct-Access Kingston DataTraveler 2.0 1.00 PQ: 0 ANSI: 2
Sep 27 03:12:35 desktop kernel: [27945.007031] sd 8:0:0:0: [sdc] 15769600 512-byte hardware sectors (8074 MB)
Sep 27 03:12:35 desktop kernel: [27945.007768] sd 8:0:0:0: [sdc] Write Protect is off
Sep 27 03:12:35 desktop kernel: [27945.010384] sd 8:0:0:0: [sdc] 15769600 512-byte hardware sectors (8074 MB)
Sep 27 03:12:35 desktop kernel: [27945.011009] sd 8:0:0:0: [sdc] Write Protect is off
Sep 27 03:12:35 desktop kernel: [27945.011019] sdc: sdc1
Sep 27 03:12:35 desktop kernel: [27945.127126] sd 8:0:0:0: [sdc] Attached SCSI removable disk
Sep 27 03:12:35 desktop kernel: [27945.127165] sd 8:0:0:0: Attached scsi generic sg3 type 0

La salida nos proporciona bastante información sobre el pen drive (marca, modelo, tamaño, etc) pero lo que nos interesa en este momento es el dispositivo al que ha sido asociado; en este caso es sdc, más especificamente sdc1.

Procedemos entonces (como root de ahora en adelante) a desmontar el volúmen:
# umount /dev/sdc1
Con fdisk vamos a eliminar las particiones (no es necesario pero es recomendable si el pen drive tiene algunas fallas lógicas)
# fdisk /dev/sdc1
Esto nos abrirá una consola, y al escribir m y presionar Enter nos debe salir un menú de ayuda similar al siguiente:
Orden (m para obtener ayuda): m
Orden Acción
a Conmuta el indicador de iniciable
b Modifica la etiqueta de disco bsd
c Conmuta el indicador de compatibilidad con DOS
d Suprime una partición
l Lista los tipos de particiones conocidos
m Imprime este menú
n Añade una nueva partición
o Crea una nueva tabla de particiones DOS vacía
p Imprime la tabla de particiones
q Sale sin guardar los cambios
s Crea una nueva etiqueta de disco Sun
t Cambia el identificador de sistema de una partición
u Cambia las unidades de visualización/entrada
v Verifica la tabla de particiones
w Escribe la tabla en el disco y sale
x Funciones adicionales (sólo para usuarios avanzados)

Para eliminar la partición escribimos d y presionamos Enter. Si hay una sola partición se borrará automáticamente, sino preguntará el número de la partición y debemos ir borrando una a una hasta que no quede ninguna.

Con la orden n se creará una nueva partición, escribimos p para que sea primaria y 1 para que sea la primera partición.

Esto nos crea una partición de tipo Linux, pero el pen drive debe tener formato FAT para que pueda ser reconocido tanto en máquinas Windows como Linux así que ingresamos la orden t para cambiar el tipo de la partición y escribimos posteriormente 6 para que tome el tipo FAT16.

Cuando todo esto se haya completado entonces damos la orden w para que se escriban los cambios al disco.

Por último, usamos la herramienta mkfs.vfat para darle el formato FAT16 y colocarle la etiqueta "USB" al pen drive:
# mkfs.vfat -F 16 -n USB /dev/sdb1
Eso es todo, siguiendo estos sencillos pasos tendremos un pen drive como nuevo, completamente funcional.

Respaldar y restaurar una base de datos MySQL

lunes, septiembre 22, 2008

Supongamos que tenemos un servidor de bases de datos MySQL con las siguientes características:

Host: 127.0.0.1
Usuario: admin
Password: 123456
Base de datos: Database

Si queremos hacer un respaldo instantáneo de la base de datos, basta con usar el comando mysqldump como se muestra a continuación:

$ mysqldump --quick -h127.0.0.1 -uadmin -p123456 Database > respaldo.sql

--quick: permite que el volcado de la información se haga fila por fila para evitar problemas de desempeño con bases de datos muy grandes.
-h: especifíca la dirección IP del servidor MySQL (se puede omitir este parametro si el equipo donde se hará el respaldo es el mismo donde se encuentra la base de datos).
-u: permite indicar el nombre del usuario con el que se desea conectar a la base de datos
-p: si se coloca sin ningún argumento pedirá la contraseña del usuario al ejecutar el comando. Si especificamos la contraseña seguidamente del -p entonces entrará directamente a la base de datos a realizar la operación solicitada.

El comando mysqldump volcará el contenido de la base datos Database en el archivo respaldo.sql (usando los parametros de conexión indicados en los argumentos)

Para restaurar la base de datos debemos primero debemos entrar en la consola del mysql y posteriormente ejecutamos el archivo respaldo.sql:

$ mysql -h127.0.0.1 -uadmin -p123456 Database
mysql> source respaldo.sql

Más adelante explicaré cómo realizar respaldos automáticos (usando bash y cron) de una base de datos.

¿Qué se puede hacer con un set de 6 CD's de Visual Studio .NET?

lunes, septiembre 08, 2008

Así como lo leen. Tenía en mis manos un set nuevecito con 6 CD's de instalación del Visual Studio .NET y me dijé... ¡Hey! Debería poder hacer algo con esto... Aquí está el resultado, disfrútenlo









Toda una obra maestra xD

Instalar Flash Player para Iceweasel en Debian Etch

jueves, septiembre 04, 2008

En Debian Etch debemos seguir algunos pasos _extras_ para configurar y poner a punto el plugin de flash para Iceweasel.

Primero descargamos el plugin desde la página de Adobe:
http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash.

Podemos hacerlo también desde una consola usando:
$ wget http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player_9_linux.tar.gz

Actualizo:
La ruta anterior era para la versión 9 del plugin, pero al parecer la gente de adobe ya ha descontinuado esa versión. Para descargar el nuevo plugin usamos la siguiente ruta:

$ wget http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player_10_linux.tar.gz

Nos ubicamos en la carpeta donde fue descargado el paquete y lo descomprimimos usando:
$ tar -xvzf install_flash_player_10_linux.tar.gz

Esto nos crea un directorio install_flash_player_10_linux donde se encuentran los archivos flashplayer-installer y libflashplayer.so

El flashplayer-installer es un script que instala "automaticamente" el plugin pero no funciona en Debian Etch (porque algunas rutas son diferentes). Procedemos entonces a instalar manualmente el plugin en una consola con privilegios de root:

Para Iceweasel:
# cp install_flash_player_10_linux/libflashplayer.so /usr/lib/iceweasel/plugins/

Para Firefox:
# cp install_flash_player_10_linux/libflashplayer.so /usr/lib/mozilla-firefox/plugins/

Para Konqueror:
# cp install_flash_player_10_linux/libflashplayer.so /usr/lib/netscape/plugins-libc6/

Si ninguna de las opciones anteriores funciona podemos instalarlo en nuestro directorio personal; solo estará disponible para nosotros y si agregamos un usuario nuevo debemos repetir el procedimiento con ese usuario pero es una solución viable:
# cp install_flash_player_10_linux/libflashplayer.so /home/mi_usuario/.mozilla/plugins/

Ahora solo queda cerrar todas las ventanas del navegador y abrir nuevamente para que los cambios surtan efecto. Si deseas verificar que el plugin está instalado abre cualquier página que contenga un script en flash como por ejemplo:
http://www.adobe.com/es/support/flashplayer/ts/documents/tn_15507.htm

¿Te ha funcionado? Deja tu comentario

Timidity y Guitar Pro 5 en Debian Lenny

viernes, agosto 01, 2008

Guitar Pro es un editor de tablaturas multipistas para guitarra, bajo, percusión y otros instrumentos musicales. Por los momentos es uno de los mejores (si no el mejor) editor de tablaturas pero es propietario y de paso solo disponible solo para Windows y Mac. A pesar del creciente auge del software libre es difícil encontrar un reemplazo con las mismas funcionalidades. Existen algunas alternativas libres, como kguitar o dguitar pero aún les falta madurar un poco para hacer frente a guitar pro como verdaderos contendientes.

He visto que algunas amigos no se pasan por completo a GNU/Linux porque no pueden usar Guitar Pro, así que decidí instalarlo y configurar todas las herramientas necesarias para obtener un rendimiento similar al que puede obtenerse en Windows y es lo que pretendo enseñarles a continuación. Sin embargo, hago la aclaración de que el RSE (Real Sound Engine) no funcionará muy bien (aún no he logrado corregirlo), pero el soporte MIDI funcionará al 100%. Para aquellos que no tengan Guitar Pro y deseen probarlo pueden descargar una versión de prueba de 15 días aquí

Los pasos siguientes son válidos para Debian y Ubuntu, pero la base debería ser la misma para otras distribuciones. También se supone que el sistema tiene instalado y configurado ALSA como manejador de sonidos.

Primero instalaremos Wine y Timidity.

$ sudo apt-get install wine timidity
Para explicarlo con pocas palabras, Wine es una reimplementación de la API de Windows para sistemas operativos basados en Unix (o sea, nos permitirá instalar el Guitar Pro para Windows) y Timidity es un software sintetizador que permite reproducir archivos MIDI.

Necesitamos descargar la librería de sonidos Fluid y la aplicación sfarkxtc para descomprimirla. Adicionalmente debemos instalar otra librería para que el sfarkxtc funcione correctamente:

$ sudo apt-get install libstdc++5
Mientras se descarga el Fluid instalaremos Guitar Pro en nuestro flamante sistema GNU/Linux (el método descrito también funciona para la versión completa de Guitar Pro). Para ello debemos abrir un terminal y ubicarnos en el directorio donde se encuentra el instalador y escribir:

$ wine GP5DEMO.exe
o simplemente haciendo clic derecho sobre el instalador y seleccionando la opción "Abrir con <<wine>>".


Si ésta opción no aparece entonces seleccionamos "Abrir con otra aplicación..." y en comando personalizado escribimos wine.

Lo siguiente es ejecutar en un terminal:

$ winecfg



En la versión del sistema operativo escogemos Windows XP y en la pestaña Audio seleccionamos la casilla ALSA Driver.



Vamos ahora con la configuración del Timidity. Lo primero es editar el archivo /etc/default/timidity y ubicamos la línea:
#TIM_ALSASEQ=true
y la descomentamos. Quedaría así:
TIM_ALSASEQ=true

También buscamos la línea:
TIM_ALSASEQPARAMS="-Os"
y la reemplazamos por:
TIM_ALSASEQPARAMS="-iAr -B2,8 -Os1l -s 44100 -EFreverb=0"

Posteriormente creamos la carpeta .timidity en nuestro directorio home (si es que no existe):
mkdir ~/.timidity

Cuando tengamos la librería Fluid descargada la descomprimimos junto con el sfarkxtc, en la misma ubicación (archivos FluidR3122501.zip y sfarkxtc_lx86.tar.gz respectivamente). Desde el terminal, nos colocamos en la carpeta donde fueron descomprimidos los archivos y ejecutamos:

$ ./sfarkxtc FluidR3\ GM.sfArk
$ ./sfarkxtc FluidR3\ GS.sfArk
$ mv FluidR3\ GM.SF2 ~/.timidity/FluidR3GM.SF2
$ mv FluidR3\ GS.SF2 ~/.timidity/FluidR3GS.SF2

Y con eso tendremos sendos archivos .SF2 listos para usarse. A continuación editamos el archivo /etc/timidity/timidity.cfg (también con privilegios de root) y buscamos la línea:

source /etc/timidity/freepats.cfg
y la reemplazamos por:

soundfont "~/.timidity/FluidR3GM.SF2"
soundfont "~/.timidity/FluidR3GS.SF2"

Por último, reiniciamos Timidity:

$ sudo /etc/init.d/timidity restart
En este punto ya disponemos de un Timidity con esteroides, correctamente configurado y listo para trabajar con Guitar Pro.

Si te aparece un error similar a este:
Starting TiMidity++ ALSA midi emulation...ALSA lib seq_hw.c:457:(snd_seq_hw_open) open /dev/snd/seq failed: No such file or directory
error in snd_seq_open


Entonces necesitas cargar el módulo snd_seq, para ello ejecutas:
# modprobe snd_seq

Y para que se cargue cada vez que iniciamos el equipo editas el archivo /etc/modules y agregas una nueva línea con la palabra snd_seq

Nos queda configurar el Guitar Pro para que use Timidity como dispositivo de salida MIDI. Ejecutamos Guitar Pro bien sea desde el menú Aplicaciones->Wine->Programas->Guitar Pro 5 o tecleando en el terminal:

$ cd ~/.wine/drive_c/Archivos\ de\ programa/Guitar\ Pro\ 5
$ wine GP5.exe

Allí vamos al menú Opciones->Ajuste de Audio (MIDI/RSE)... seleccionamos Timidity como dispositivo de salida MIDI y General MIDI como juego de instrumentos. Podemos jugar también con la Capacidad de los Buffers poniéndolos en un valor más alto (yo lo tengo en 2048) si notamos un sonido cortado o un poco laggeado. Para más información puedes visitar la página de soporte de Wine para Guitar Pro. Solo queda empezar a usarlo y disfrutar de secuencias MIDI con una excelente calidad xD

¿Y a tí, te sirvió esta receta?

Algoritmo para desordenar un arreglo en C/C++

jueves, julio 31, 2008

Imagina que deseas implementar un algoritmo en C++ donde necesites desordenar aleatoriamente un arreglo; por ejemplo: en un juego donde utilices un mazo de cartas y debas barajarlo. El siguiente código puede ayudarte en esa tarea:

int mazo_ordenado[44];
int mazo_barajado[44];
bool usado[44];

for (int i=0; i < 44; i++)
usado[i]=false;

int index=0;
for (int i=0; i < 44; i++){
do{
index = (rand() % 44);
while (usado[index]);
mazo[i] = mazo_ordenado[index];
usado[index]=true;
}

Ahora, explicaré el código paso a paso. La intención es desordenar un arreglo de 44 elementos (puede ser de cualquier tamaño, solo basta reemplazar el 44 por el número de su elección). El arreglo ordenado lo tenemos en la variable mazo_ordenado. Luego creamos otros dos arreglo con la misma cantidad de elementos, uno llamado mazo_barajado donde almacenaremos el arreglo desordenado y otro llamado usado en donde guardaremos el estado de cada elemento del mazo original.

int mazo_ordenado[44];
int mazo_barajado[44];
bool usado[44];

La idea es recorrer en orden creciente el arreglo desordenado y depositar en cada uno de sus elementos un elemento aleatorio del arreglo ordenado. Con el arreglo de booleanos usado llevaremos la cuenta de cuáles elementos del arreglo original se han usado y cuáles no (con la finalidad de no duplicar elementos), por eso debemos inicializar todos sus elementos en false

for (int i=0; i < 44; i++)
usado[i]=false;

Usando la función rand() generamos índices aleatorios para obtener los elementos del arreglo original; pero debemos comprobar el valor de usado[indice] para saber si el elemento ha sido usado o no. Si el elemento ya está usado, el valor de usado[indice] será true y tendremos que generar otro índice hasta que consigamos uno no usado.

do{
index = (rand() % 44);
while (usado[index]);

Si no hemos usado el elemento apuntado por indice, el valor de usado[indice] será false y entonces procedemos a almacenar el elemento en el arreglo desordenado y cambiamos el valor de usado[indice] a true.

mazo[i] = mazo_ordenado[index];
usado[index]=true;

Esto debemos hacerlo para los 44 elementos del arreglo desordenado así que debe ir dentro de un for y con la respectiva inicialización de la variables:

int index=0;
for (int i=0; i < 44; i++){
do{
index = (rand() % 44);
while (usado[index]);
mazo[i] = mazo_ordenado[index];
usado[index]=true;
}

A la salida del for tendremos un arreglo desordenado listo para usar :D.

Prueben el código, agreguen unos cuantos printf para imprimir los valores de los mazos antes y después del for y comenten sus resultados. Si tienen alguna sugerencia o corrección posteenla también que será bien recibida. Espero que les haya sido de utilidad.

Instalar plugin Atlantis para Compiz en Hardy Heron

miércoles, julio 30, 2008


Este nuevo plugin de compiz permite poner tu escritorio como una pecera y es muy fácil de instalar.

  1. Descarga el plugin desde aquí

  2. Instala las depencias:
    $ sudo apt-get install compiz-dev compiz-bcop libtool

  3. Compila e instala el plugin
    $ make clean
    $ make
    $ make install

Ahora puedes ir al menú Sistema->Preferencias->Configuración avanzada de los efectos de escritorio para activar y configurar tu nuevo y flamante plugin Cube Atlantis