C++, GDB y Python

Marzo 29, 2010

Descarga el fichero aquí.

Hace unos días, construyendo una versión de prueba del compilador GCC (4.5.0), me encuentro con que instala un misterioso fichero llamado libstdc++.so.6.0.14-gdb.py. GDB, ¡C++ y Python en el mismo fichero! Pero, ¿qué es esto y para qué sirve?
(más…)

3

Cómo montar dispositivos USB más rápidamente en Linux

Marzo 23, 2010

¿Has notado que cuando conectas un dispositivo USB a Linux tarda un buen rato en montarlo? ¿Qué está haciendo exactamente y por qué tarda tanto?
La cruda realidad es que, en mi sistema, una memoria USB tarda 5,4 segundos, de los cuales 5 segundos los pasa ¡sin hacer nada!
(más…)

0

Ver imágenes con LESS

Marzo 17, 2010

El comando less de GNU es mucho más que un sustituto de more (es decir, un “paginador”). Lo cierto es que es sorprendentemente configurable, tanto que puede utilizarse para visualizar todo tipo de documentos, eso sí, convertidos a texto. A continuación, como ejemplo, describiré cómo configurarlo para ver imágenes en una consola.
(más…)

0

APOD como fondo de escritorio GNOME

Marzo 11, 2010

Descarga el programa: apod.zip.

APOD (de Astronomic Picture of the Day: Foto Astronómica del Día) es una popular web de la NASA que publica y comenta una fotografía diferente cada día de temática astronómica o científica. El programa Python que incluyo a continuación descarga automáticamente la foto de APOD y la instala como fondo de escritorio (si usas GNOME, claro).
(más…)

1

Templates con número variable de argumentos en C++0x

Marzo 9, 2010

Allá por el año 1999 se publicaba el nuevo y flamante estándar de C, C99. Una de las muchas de novedades que incluye es la de macros variadic, es decir, con un número variable de argumentos. Sin embargo, siendo programador de C++ me resisto a utilizar macros para cualquier cosas que pueda resolverse con funciones inline y con templates. Esto me deja en una situación de desventaja, pues la única manera que que una función en C++ reciba un número variable de argumentos es con (…) y (como la función printf(const char *, …)), pero es una técnica incómoda y totalmente insegura, no es el estilo de C++.
¡Hasta ahora! Porque C++0x ha conseguido lo que parecía imposible: templates variadic, es decir templates con número variable de argumentos.
(más…)

0

Jugando con device-mapper y loop

Marzo 4, 2010

Hace unos días tuve que mover un archivo grande de un sistema Linux a otro. Y cuando digo grande, me refiero a alrededor de 10 GB, por lo que transmitirlo por la red no es una opción muy atractiva, sobre todo cuando tengo un disco USB externo con espacio libre de sobra. Pero, ah, este disco está formateado con FAT32 por cuestiones de interoperatibilidad con otros sistemas operativos, y en este sistema el tamaño máximo de archivo es de solamente 4 GB. ¿Qué hice? Lo resolví con la misma técnica que hace 15 años usando disquetes y MS-DOS: un archivo RAR multivolumen con nivel de compresión cero, se crean 5 archivos de 2 GB cada uno y se copian sin problemas. Pero estamos en el siglo XXI y tenemos Linux, tiene que haber una forma más elegante de hacer esto.
Y la hay, por supuesto. Mi propuesta es crear unos cuantos archivos en el sistema FAT32 que juntos sumen el espacio necesario, y luego construir sobre ellos un dispositivo de bloques lo bastante granda para contener el archivo en cuestión. Para esto utilizaré dos drivers de Linux: loop y device-mapper.
(más…)

0

Deducción de tipos en C++0x con decltype

Marzo 2, 2010

El otro día veíamos la deducción automática de tipos usando auto, con la que el tipo de una variable se deduce de la expresión con la que se inicializa. Para todos los demás casos, desde hace ya varios años, muchos compiladores proporcionan alguna forma de deducción de tipos, normalmente algo parecido a __typeof. El comité de C++ consideró seriamente incluirlo en estándar, pero finalmente lo descartaron en favor de una idea nueva: decltype.
(más…)

0