miércoles, 23 de abril de 2008

Listar archivos de un directorio con C/C++

En la aplicación que estoy trabajando actualmente me ha surgido la necesidad de listar los archivos existentes en un directorio dado y listarlos en un "combo box". Dado que estoy desarrollándola para Windows, era obvio buscar una solución para este sistema.

Lo que encontré fue lo siguiente:

HANDLE hFind;
WIN32_FIND_DATA w32fd;
hFind = FindFirstFile( "fonts/*.*", &w32fd );
vector archivos;
if( hFind!=INVALID_HANDLE_VALUE )
{
do
{
TCHAR* Tfilename = w32fd.cFileName;
if( filename.size()>3 )
{
archivos.push_back( filename );
}
}while( FindNextFile( hFind, &w32fd ) );
FindClose(hFind);
}

Esta solución funciona, aunque para mi gusto depende demasiado de las definiciones (chungas) de Microsoft.
Sin embargo, otro acercamiento mucho mas independiente del sistema sería la siguiente, que hace uso de la librería Glib, la cual forma parte de GTK+ y compone multitud de estructuras de datos y funciones preparadas para ser compatibles tanto en windows como en linux.

La solución al listado de los archivos contenidos en un directorio usando las funciones de Glib es la siguiente:


GDir* dir = g_dir_open( folder, 0, NULL );
const gchar* file;
if( !g_file_test( folder, G_FILE_TEST_IS_DIR ) )
{
g_error( "Error: Directory not found FFFFFFFFFFFFF" );
}
else
{
while( file=g_dir_read_name( dir ) )
{
cout << "Fichero encontrado: " << file << endl;
}
g_dir_close( dir );
}

En esta ocasión no dependemos de otra librería más que de glib, disponible tanto para Linux como para Windows. Además de una ganancia en la claridad del código, pues no se usa ninguna estructura extraña (de esas que tanto le gustan a Microsoft). Lo único raro que podemos ver es ese tipo de datos gchar (es simple y llanamente un char) y GDir la cual es una estructura de la que no nos tenemos que preocupar ya que de su manejo se ocupa completamente Glib.

Para más información sobre estas funciones: página de referencia.

miércoles, 16 de abril de 2008

Firefox 3 y los Favicons

Firefox 3 está a la vuelta de la esquina (aunque ya corre la beta hace tiempo) y con él parece que al fin se acabó con uno de los fallos más tontos que tenía este navegador (y creo recordar que también sufria IExplorer): la visualización de los favicons al lado de cada url de nuestros marcadores.

Los favicons son los pequeños iconos gráficos que tienen (pueden tener) las páginas web y que normalmente los navegadores muestran justo al lado de la dirección en la barra de urls.

Firefox 1/2 mostraba este icono también en nuestros "marcadores" ("favoritos" para los profanos), pero a menudo ocurría que el favicon mostrado no era el correcto, ocurriendo incluso que varias direcciones intercambiasen sus iconos.
Pues bien, parece ser que con Firefox 3 esto se acabó! Eso sí, si hemos importado los marcadores de una versión anterior y tenemos algún icono traspapelado deberemos visitar esa página para que el gráfico se arregle.

Lo sé, era de lo mas tonto y podía esperar, pero a la tercera va la vencida.

viernes, 11 de abril de 2008

El mundo sin humanos

Soy leyenda [I'm a Hero] rescató la idea de un mundo sin humanos.
Life after people y Population Zero son dos documentales producidos por History Channel y National Geographic respectivamente que profundizan en este interesantísimo tema.

En ambos se parte de una repentina desaparición de la especia humana; no queda ni un solo humano en pie. A partir de ahí se analizan por un lado el constante deterioro de todo aquello que hemos creado y por otro, el avance imparable de la naturaleza con el objetivo de recuperar lo perdido.

Uno de los temas más curiosos es la cantidad de seres vivos que dependen directamente de nuestra existencia: mascotas, ratas, cucarachas (sí, cucarachas). Aunque siguen habiendo muchos otros que su supervivencia depende de justo lo contrario, nuestra no-existencia. Las diferentes razas de perros sufren la ley del más fuerte, en la que los individuos mas de ir por casa sucumben ante los más fuertes. Los insectos que invaden nuestros hogares dejan de tener un invierno cálido donde refugiarse y poco a poco se ven forzados a volver a sus hábitats naturales.

Los dos documentales son muy similares, ya que casualmente tratan los mismos aspectos en muchas ocasiones.
Quizás Population Zero se centre mas en el comportamiento de la naturaleza, pero también da muchos detalles sobre el deterioro de nuestro patrimonio que Life after people deja por alto y viceversa. En resumen, ambos se complementan perfectamente.

miércoles, 9 de abril de 2008

Instalar GTK+

GTK+ es una librería escrita en C para la construcción de interficies gráficas con la peculiaridad que es multiplataforma, esto es, que con cambios mínimos es posible portar un programa de Windows a Linux (y viceversa). Al menos en lo que respecta a la interficie de usuario.

domingo, 6 de abril de 2008

CHIP-8

A mediados de los años 70 se creó un lenguaje de programación interpretado para su uso en los micro-ordenadores de 8-bits COSMAC VIP y Telmac 1800.
Como en Java, los programas escritos en CHIP-8 eran ejecutados usando una máquina virtual que interpretaba las instrucciones al vuelo. Este lenguaje fue utilizado (y creado) para escribir de una manera sencilla video-juegos compatibles para los sistemas mencionados.

20 años después, algunas calculadoras gráficas incluyeron interpretes de dicho lenguaje permitiendo usar los juegos existentes en estas calculadoras.

CHIP-8 tuvo una "ampliación", denominada SCHIP (Super Chip) que permitía una resolución un poco más alta que la de su antecesor: 128 x 64 píxels. Como curiosidad, en 2007 se introdujo una nueva extensión al lenguaje (MCHIP) permitiendo una resolución mayor (256x192) así como usar colores y sonido.

En la actualidad existen multitud de emuladores (o interpretes) de este sistema. Una larga lista la encontramos en Let's emu CHIP-8.
De los últimos en aparecer se encuentra el de Etk que hace poco escribió un emulador para la consola Nintendo DS en pocos días.
Téneis un enlace a su página web en Mis enlaces, o aquí: http://etk.scener.org/


La pequeña cantidad y relativa sencillez de las instrucciones de CHIP-8 lo convierten en un "sistema" sencillo de emular, siendo uno de los más recomendados por los que empezar para los que se inician en este mundo.

The Big Bang Theory

The Big Bang Theory es una comedia americana aparecida el pasado año 2007 de la cual no se habla demasiado pero que apunta maneras.


Leonard y Sheldon son dos jóvenes con mentes prodigiosas destinadas a realizar grandes avances en sus respectivos campos científicos. Por otro lado son unos ineptos para las relaciones sociales y junto a sus colegas Howard y Rajesh pasan los días echando partidas a juegos de rol por internet, ir a cenar a restaurantes temáticos y escribir largas formulas en pizarras vileda.

Todo cambia cuando llega Penny (la rubia guapa que cada serie debe que tener) al edificio:
los chicos quedan prendados de ella y empieza la aventura por cortejarla.

The Big Bang Theory tiene muchos toques frikies y eso puede hacer que a no todo el mundo le hagan gracia sus escenas, pero si os gusta la ciencia, navegáis a menudo por internet u os gustan las rubias, no dudéis en buscar esta serie en los habituales lugares de subministros.
La serie sufrió el parón de los guionistas sufriendo una pausa en su capítulo número 10, pero hace pocas semanas ha vuelto en antena y actualmente se emite cada lunes.

Podéis encontrar subtítulos en wikisubtitles.

viernes, 4 de abril de 2008

La loca del futuro

Año 2006.
Un viajero del tiempo llega a nuestros días anunciando a bombo y platillo que nos trae la salvación venida del futuro. ¿Una vacuna que lo cura todo? ¿Energía limpia? ¿Un sistema económico más justo?
No señores, la chica nos trae: ¡¡La lejía del futuro!!!!

La chica está loca, se ha escapado de un manicomio (un loquero del futuro claro), ha robado una maquina del tiempo y ha viajado al pasado a mostrar su obsesión más profunda; Las cualidades maravillosas de la lejía: No salpica, no amarillea, no diluye colores, anti-roturas... es la lejía perfecta.

A ver señores, a quien le entra en la cabeza que alguien venga del futuro a traernos lejía en vez de darnos la combinación ganadora de la primitiva del próximo jueves?

Este mi blog

Otro blog más.

Este en concreto va a servir para verter todas las reflexiones que me vengan a la cabeza sobre lo que se ve cada día.

Aunque también publicaré otras cosas relacionadas con la programación (mi actual ocupación), internet y todo ese tecnológico.

Y ya está, solo era eso.