Punteros vs Arrays (parte 2 de 2)
En el post anterior describí las diferencias principales entre array y punteros en C. A continuación intentaré explicar por qué las cosas son como son y que consecuencias conllevan.
(más…)
En el post anterior describí las diferencias principales entre array y punteros en C. A continuación intentaré explicar por qué las cosas son como son y que consecuencias conllevan.
(más…)
En C y, por herencia, en C++ los punteros y los arrays tienen una curiosa relación: son parecidos, en muchos casos intercambiables, pero no son iguales. Y muchos programadores los confunden, aun después de considerable experiencia. En este artículo me propongo aclarar de una vez por todas las diferencias entre estos dos conceptos.
(más…)
Todos sabemos que en el entorno gráfico de Linux se puede capturar la imagen de pantalla simplemente pulsando la tecla ImprPant. Pero, ¿cómo se puede capturar la imagen de un terminal virtual? Por si andas despistado, un terminal virtual (o VT de Virtual Terminal) es la pantalla de texto con la que arranca el sistema, y a la que puedes volver con Ctrl+Alt+F
(más…)
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…)
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…)
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…)
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…)
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…)
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í.