22 may 2009

Convertir archivos .bin/.cue a .iso en Unix

Bueno, pues para convertir esos dichosos .CUE y .BIN a un .ISO como mandan los cánones podemos usar la herramienta GPL binchunker.
Bajamos el código fuente de la página, ejecutamos make y ya tendremos la aplicación bchunk. El uso es el sisguiente:

bchunk archivo.bin archivo.cue archivo.iso

Y ya tendríamos nuestro .ISO

18 may 2009

Usar número variable de columnas en Lyx

Al escribir un artículo en Latex con Lyx, me encontré el problema de que podía poner el mismo en dos columnas, pero eso me afectaba a todo el documento, y no podía por ejemplo poner el abstract en una única columna junto con el título, el autor y la fecha.
Entonces, google vino en mi ayuda y encontré la forma de manejar las columnas sin tener que modificar directamente el código .tex, y poder hacerlo directamente en Lyx.
Para hacerlo, introducimos en el preámbulo de Lyx (Documento-Configuración-Preámbulo Latex) lo siguiente:

\usepackage{multicol}

Y después, encerramos cada bloque que deseemos poner con un número distinto de columnas al del documento con un ERT:

\begin{multicols}{2}   \end{multicols}  
Y ya tendríamos lo que andábamos buscando

20 abr 2009

Trasteando con imagemagick

Imagemagick es un conjunto de herramientas para tratamiento de imágenes en modo consola, y que nos puede ser muy útil para cuando queremos hacer conversiones a conjuntos de archivos, o transformaciones rápidas (también cosas avanzadas pero de momento no se tanto).

Yo lo he usado para generar un pdf de unas páginas escaneadas de un documento.

En primer lugar tuve que rotar todas las paginas porque las habia colocado en el escáner al revés, así que utilicé la herramienta mogrify de imagemagick de la siguiente manera:

mogrify -rotate 180 nombre_archivos

En segundo lugar, usé la herramienta convert para pasar las imágenes de PNG a PDF y unirlas en un solo documento:

convert nombre archivos_PNG -adjoin nombre_archivo_PDF

et voila, ya tenemos nuestro PDF con los apuntes escaneados.

mas información en man imagemagick.

7 abr 2009

Descargar una pagina web completa con wget

Si queremos guardar una pagina web completa con todos sus enlaces
podemos hacerlo de forma sencilla con la herramienta wget.

En primer lugar es aconsejable crear un directorio donde guardaremos
todo (así no descargaremos los infinitos archivos en el directorio en el
que estemos, algo habitual para los novatillos con la consola)

Abrimos una consola, nos vamos a dicho directorio y hacemos:

wget -krc http://www.pagina_lo_que_sea.html

2 abr 2009

Detección de Lagunas de memoria en C y C++

Para comprobar las lagunas de memoria existen varias posibilidades, pero me centrare en dos, Valgrind y dmalloc.

La primera de ellas basta instalarla, y también podemos instalar un frontend llamado alleyoop.
Valgrind tiene varias opciones y permite hacer mas cosas además de comprobar la memoria, pero para nuestro fin la usaremos con:

valgrind --tool=memcheck --leak-check=yes nombre_programa

Es posible indicar que nos genere un archivo de log.
Para usar el alleyoop, debemos usarlo con:

alleyoop /ruta/al/nombre_programa

Evidentemente la ejecución del programa será mas lenta usando valgrind que normalmente.


La otra utilidad es dmalloc, que necesita incluir el archivo de cabecera dmalloc.h en el programa, y además compilarlo con la biblioteca dmalloc añadiendo -ldmalloc a la orden de compilación.
Después hay que configurar una variable de entorno y exportarla. Un ejemplo sería:

DMALLOC_OPTIONS=debug=0x44a40503,inter=1,log=logfile
export DMALLOC_OPTIONS
El valor hexadecimal de debug marca que tipo de comprobaciones se llevan a cabo. Para simplificar esta configuración existe un programa llamado dmalloc que podemos ejecutar en la consola, y que nos permite obtener el valor que debemos poner en la variable de entorno, según una serie de tokens correspondientes a las diferentes comprobaciones.

30 mar 2009

Analizando y aplicando diferencias con vimdiff

Pues resulta que se puede usar una extensión de Vim para analizar diferencias y aplicarlas entre varios archivos, usando una el comando:

vimdiff archivo1 archivo2

Para movernos por las diferencias, usaremos ]c y [c para ir a la siguiente y anterior diferencia.
Para aplicar las diferencias en uno u otro sentido usaremos

do obtiene la diferencia desde el otro archivo
dp aplica la diferencia sobre el otro archivo

También es posible realizar operaciones sobre un rango de líneas. Para mayor detalle, consultar
http://www.vim.org/htmldoc/diff.html

3 mar 2009

Instalación de Xenomai

Los ingredientes para este maravilloso cocktail de frutas son:

  • Fuentes del kernel a utilizar (Linux kernel)
  • Parche ADEOS para la arquitectura y versión del kernel que vamos a usar (adeos patches).
  • Fuentes de xenomai (xenomai sources).
  • Herramientas de desarrollo habituales para la compilación del kernel (gcc, make, etc...) o toolchain para la arquitectura a utilizar, en caso de que vayamos a hacer una compilación cruzada.
Con las manos en la masa
En primer lugar hay que aplicar el parche ADEOS sobre el kernel a utilizar (si es necesario aplicar otros parches al kernel, el de ADEOS es preferible que sea el último), para lo cual haremos

patch -p1 < ruta_al_parche/parche_adeos.patch

Desde el directorio principal del kernel.

Una vez hecho esto, entramos en la configuración del kernel (según prefiramos con menuconfig, xconfig, ...) y configuramos el mismo a nuestro gusto. Podemos ver como aparecen nuevas opciones en Real-Time sub-system así como en otros lugares y que son los puntos de configuración de ADEOS/Xenomai. Para una descripción detallada de la instalación y configuración visitar www.xenomai.org.

Hay que decir que en los fuentes de Xenomai existe un directorio ksrc donde podemos encontrar los parches mas comunes de ADEOS.

En segundo lugar descomprimimos los fuentes de Xenomai, y ejecutamos

scripts/prepare-kernel.sh --linux=path_to_linux_kernel_directory --adeos=parche_a_usar --arch=arquitectura

Si ya hemos aplicado el parche a mano, no es necesario poner la opción --adeos, y si lo hacemos tampoco pasa nada porque el script se dará cuenta de que ya está parcheado.

Una vez hecho esto, pasamos a configurar las fuentes de Xenomai para su compilación. Existen diversas opciones para ello, en función de la arquitectura que usemos, y de donde queramos instalar el resultado. Consultar el README que acompaña a las fuentes para determinar las opciones necesarias. Como ejemplo la compilación para un sistema integratorCP ARM.

./configure --host=arm-926ejs-linux --enable-arm-mach=integrator --enable-arm-arch=4
make DESTDIR=directorio_destino_instalacion install


Con esto y la imagen del kernel, ya tendríamos Xenomai listo para instalarlo, en función de si se trata de un PC o de un sistema empotrado, los siguientes pasos variaran para hacer que el sistema arranque nuestro nuevo kernel.