Etiquetas
9/05/2007
Libros de programación gratis para descargar
Ahora a ver si acabo con los exámenes y le saco provecho a alguno de esos...
9/03/2007
8/02/2007
Llamadas al sistema en el núcleo 2.6 de linux (escrito en octubre del 2005)
Aunque el guión estaba preparado para un núcleo 2.4, hemos logrado adaptarlo para el 2.6.13.4 con unos cambios mínimos.
En primer lugar, hay que introducir la entrada de la llamada al sistema en la lista. Anteriormente se introducía en este archivo:
/usr/src/linux/arch/i386/kernel/entry.S
Pero ahora se han separado las entradas de llamadas al sistema en un archivo distinto, que es incluído en el anterior. El nuevo archivo es éste:
/usr/src/linux/arch/i386/kernel/syscall_table.S
La nueva llamada al sistema se introduce al final de la lista, con una entrada así:
.long sys_nueva_llamada /* 375 */
El comentario es el número de la llamada al sistema. Es opcional, pero se recomienda incluirlo cada 5 llamadas por legibilidad del código.
Una vez introducida en la tabla de llamadas, debemos introducir su prototipo en la cabecera unistd.h . En mi caso, lo añadí únicamente al unistd.h de la arquitectura i386, localizado en /usr/src/linux/include/asm-i386/unistd.h. El prototipo se incluye con esta entrada, nuevamente al final de la lista y siempre con cuidado de asignarle un número nuevo, no usado:
#define __NR_nueva_llamada 375
Justo debajo debería aparecer una línea que indica el número de llamadas al sistema en la lista. Debemos incrementar ese número tantas veces como llamadas nuevas hayamos introducido, o podrían darse problemas una vez compilado el núcleo:
#define NR_syscalls 376
Ahora que la nueva llamada consta en el sistema, podemos introducir el cuerpo de la llamada. Esto podemos hacerlo al final del archivo /usr/src/linux/kernel/sys.c . Por ejemplo:
asmlinkage long sys_nueva_llamada(void){
printk("Esta llamada es nueva\n");
return 0;
}Ya sólo queda recompilar e instalar el núcleo con los cambios y hacer un programa que pruebe que nuestra llamada funciona.
Antes de ese paso, nos encontramos con problemas ya que el código estaba preparado para el núcleo 2.4, mientras que no era compatible con el 2.6.13. Por ejemplo, el puntero p_pptr (que apunta al padre de un proceso en la estructura task_struct) ahora es llamado parent.
También fue necesario cambiar la función verify_area (deprecada en el 2.6) por access_ok . Los parámetros son los mismos, pero el resultado es justo el contrario (mientras que verify_area devuelve 0 cuando se puede acceder al area de memoria indicada, access_ok devuelve 0 cuando no se puede acceder.
8/01/2007
Escribiendo código portable
La guía de portabilidad en C++ del proyecto Mozilla es una buena lectura para evitarse quebraderos de cabeza después. Aunque está orientada a C++, tiene aspectos aplicables a C. Por ejemplo no hay que olvidar que el inlining de funciones es una lotería, especialmente en compiladores como el de HP-UX, donde directamente se sugiere aniquilar todo uso de inline.
7/07/2007
Cuando el diablo no tiene nada que hacer...
Pues aprender guitarra por mi cuenta, aprovechando la que mi hermano mayor ya no usa. A los 25 años empiezo un poco tarde, pero aun así me gustaría llegar a tocar como este hombre, aunque tenga 40 cuando lo logre:
No tengo ganas de meterme a cursos sin saber si de verdad sirvo, así que mejor aprender un poco por mi cuenta antes de decidir. De momento recursos en internet no faltan para ir empezando. De lo más decente que he visto ahora mismo es la web de justinguitar.com. Lo mejor es que tiene videotutoriales en youtube que ayudan bastante para saber si la estás fastidiando al tocar un acorde o no. Y gratis, al menos la parte para empezar.
Lo peor ha sido afinar la guitarra, pero gracias a Dios hay programas para afinar bastante buenos.
Veremos si llego a algún sitio con esto, o si la guitarra se queda criando polvo junto al kimono de karate.
6/21/2007
John Lasseter, enderezando Disney
Más buenas noticias en cuanto a cine.
Tras la compra de Pixar por parte de Disney, muchos especularon que en realidad lo que se quería era poner a los directivos de Pixar al frente del gigante de la animación occidental. Pues desde luego parece que han acertado.John Lasseter, fundador de Pixar y director de películas de animación tan exitosas como Toy Story, acaba de prohibir los churros directos a video y DVD. Cuando digo churros hablo de secuelas en plan El Rey León 24 o La Sirenita 51. Y es que según afirma Lasseter, semejantes despropósitos hacen que el público pierda el respeto a las grandes producciones que elaboran para la gran pantalla. Personalmente estoy de acuerdo.
¿La gota que colmó el vaso? Una película con animación hecha por ordenador llamada Campanilla. Sí, la de Peter Pan. Y pensada como la primera parte de una serie dedicada a las hadas de Disney, como también se quería hacer con las princesas. Lasseter decidió tras visionar una parte del trabajo cancelar el proyecto así como muchos otros en desarrollo, y despedir a la presidenta de DisneyToon Studios, responsable de la dirección actual.
En unos cuantos años veremos si Disney vuelve a resurgir como un coloso de la animación con la innovación por bandera o se pega un batacazo por no ir en una línea totalmente comercial. Naturalmente deseo lo primero.
Blade Runner: The Final Cut
Warner Bros ya tiene los derechos de distribución. En otoño de este año (coincidiendo con el 25 aniversario) saldrá la edición especial multidisco, incluyendo la versión original estadounidense (1982), la versión internacional (con mínimos cambios respecto a la anterior), el montaje del director (1992) y el montaje final, remasterizado y con escenas nuevas, bajo la supervisión de Ridley Scott.
Y ya ha salido un trailer en la televisión estadounidense:
Ahora podré volver a ver una nueva versión de mi película favorita, y esta vez con la calidad propia de un DVD. No como el que poseo del montaje del director que fue pasado tal cual, sin mejoras en la calidad de imagen ni de sonido.
5/30/2007
Mapas de Google, ahora con visita virtual
Un ejemplo.
5/29/2007
LOLCODE
HAI
CAN HAS STDIO?
PLZ OPEN FILE "LOLCATS.TXT"?
AWSUM THX
VISIBLE FILE
O NOES
INVISIBLE "ERROR!"
KTHXBYE