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.