Bucle foreach en C++0x

Julio 28, 2010

A menudo se dice que C++ es un lenguaje complicado, y como ejemplo se cita la iteración sobre los elementos de un contenedor (una lista, por ejemplo): otros lenguajes tienen una sintaxis de tipo for-each, pero en C++ hay que hacer un bucle manual, con iteradores e incremento. Pero ¡ya no más! C++0x incluirá una nueva sintaxis de la sentencia for que será la envidia de los usuarios de otros lenguajes.
(más…)

0

Programando con Unicode

Junio 30, 2010

En una ocasión una conocida empresa de transportes me envió un paquete, según el cual yo vivo en una ciudad llamada CORUÐA, lo cual es absurdo, porque según los anuncios dirigidos de Internet ¡yo vivo en Coruña! (o en Coru�a, según versiones).

Por supuesto, esto también está mal. Estos son errores de codificación, y se deben a que el programador no tuvo en cuenta unas cuantas reglas básicas. En un tema previo ya escribí sobre codificaciones, ahora intentaré dar unos cuantos consejos básicos, para evitar al menos los errores más sangrantes.
(más…)

1

Páginas de código y codificaciones: ASCII, Unicode y otros

Junio 9, 2010

Todo programador que se enfrente habitualmente a cadenas de texto (es decir, todos excepto quizás los que se dedican al cálculo numérico) deberían conocer al menos los conceptos generales relativos a la codificación de caracteres. Desafortunadamente, esto no siempre es así, y en los cursos de formación, incluso avanzados, estos temas se ignoran sistemáticamente. En este artículo me propongo desentrañar los conceptos básicos. En otro posterior me centraré con más detalle en los problemas prácticos que estos plantean.
(más…)

2

Control de acceso en el servidor de ventanas X

Mayo 26, 2010

La seguridad en las conexiones a un servidor de ventanas X nunca ha sido muy bien explicada ni entendida, y como en los sistemas GNU/Linux modernos las cosas simplemente funcionan no hay demasiada motivación para entender este tema. Hasta que las cosas dejan de funcionar; entonces este tema pasa a ser de vital importancia. Y también es importante que los administradores de sistemas conozcan cómo funciona para no dejar abiertos agujeros de seguridad, que podrían ser fatales.
(más…)

1

Funciones lambda en C++0x

Mayo 12, 2010

Una de las funcionalidades menos esperadas, pero en mi opinión más bienvenidas, del nuevo estándar de C++ son las funciones Lambda. Originalmente creadas para los lenguajes funcionales, cada vez encuentran más uso en los lenguajes habituales (reconozcámoslo, los lenguajes funcionales no se usan mucho), véanse los delegates en Java y C#, por ejemplo. La inclusión de este concepto en C++, aunque algo limitada en comparación con otros lenguajes de más alto nivel, ofrece muchas posibilidades interesantes.
(más…)

0

Utilidad para leer particiones Ext2/3/4

Mayo 1, 2010

En los dos últimos posts describí el formato del sistema de archivos Ext2/3/4 y las extensiones más frecuentes. Hoy, puesto que una línea de código vale más que mil palabras, presento una pequeña librería que proporciona acceso a los archivos de uno de estos sistemas (en modo solo lectura, no quiero problemas), y una herramienta sencilla de ejemplo: e2cat. Esta copia un archivo del dispositivo indicado sin necesidad de copiar el volumen.

Descarga el código fuente aquí (licencia zlib/libpng).

Y descarga el binario para MS-Windows aquí.

(más…)

2

Extensiones de Ext2, Ext3 y Ext4

Abril 21, 2010

En el post anterior describía con más o menos detalle el sistema de archivos Ext2, y comentaba que la únicas diferencias entre Ext2, Ext3 y Ext4 residen en las extensiones, o features, disponibles. Puedes ver qué features utiliza un sistema de archivos con el comando dumpe2fs, y puedes activar y desactivar algunas de ellas con tune2fs; otras solamente se pueden especificar cuando se crea el sistema de archivos, con mke2fs (los comandos mkfs.ext2, mkfs.ext3 y mkfs.ext4 son alias del anterior que asumen ciertas opciones por defecto).
En este post describiré algunas de las features más utilizadas.
(más…)

0

Analizando Ext2, Ext3 y Ext4

Abril 14, 2010

Resulta paradójico que el sistema de archivos más utilizado de Linux, y por lo tanto probablemente el más utilizado del mundo del código abierto, el llamado Ext2, Ext3 o Ext4 (según su versión) sea tan desconocido, y sin embargo el sistema FAT12, FAT16 o FAT32 (también según su versión) sea tan popular. Compárense por ejemplo los artículos correspondientes del la Wikipedia (en inglés): FAT frente a Ext2.
El siguiente artículo pretende corregir esta situación describiendo con detalle el sistema Ext2. Como origen principal de información he utilizado, cómo no, el código fuente de Linux.
(más…)

0

Novedades de C++98

Abril 8, 2010

Me he pasado varios artículos discutiendo las novedades de C++0x (que se iba a publicar en algún momento de la década pasada, paciencia…) pero me he dado cuenta de que mucha gente que programa en C++ hoy en día aprendieron hace ya muchos años, o utilizaron un libro antiguo, y no conocen muchas de las características del lenguaje que se incluyeron en el año 1998. Creo que es importante ponerse al día antes de que se publique la próxima versión, así que daré un repaso un tanto resumido a las principales diferencias entre C++ pre-estándar y el C++98 (si crees que me olvido alguna deja un mensaje y lo añado).
(más…)

0

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