22 febrero 2007

Subversion mola

Tengo que hacer varios trabajillos de clase, así que me creado un repositorio svn (Subversion) para organizar las cosas. Subversion es un programa que se encarga de llevar un historial de las modificaciones que se han realizado en los ficheros de un proyecto. Es capaz de responder a las preguntas: ¿tengo la última versión del proyecto? ¿cómo era este fichero en día 1 de enero de 2005? ¿cuáles son los cambios desde la última versión? Un lujo si tienes ficheros desperdigados por distintos ordenadores, tenerlos controlados con Subversion.

Hoy voy a explicar básicamente el funcionamiento de svn para usar personal (sin tener servidor ni nada, todo en la máquina local). No sirve para controlar proyectos que están en varios sitios pero te puede servir para trabajar más tranquilo, si modificas muchas cosas de un programa pero luego te das cuenta de que no te gusta como queda simplemente has de volver a la versión del día anterior.

Lo primero que hay que hacer es crear un repositorio. Es la base de datos que usa svn para almacenar las versiones de los ficheros y toda su información. NO hay que tocar este directorio manualmente, como se puede ver tiene ficheros de uso interno de Subversion.
$ svnadmin create ~/tmp/repositorio
$ ls ~/tmp/repositorio
conf dav db format hooks locks README.txt
El comando svnadmin create nos crea un repositorio vacío (en la revisión 0).

Ahora debemos crear un directorio para el proyecto. Para ello hay que solicitar la última versión del repositorio.
$ svn checkout file:///home/x/tmp/repositorio proyecto
Revisión obtenida: 0
$ ls -la proyecto/
total 12
drwxr-xr-x 3 x x 4096 2007-02-22 21:38 .
drwxr-xr-x 4 x x 4096 2007-02-22 21:38 ..
drwxr-xr-x 7 x x 4096 2007-02-22 21:38 .svn

Hemos obtenido la última versión del repositorio, que inicialmente está vacío. Ahora podemos empezar a trabajar. Como muestra el comando ls -la, los directorios que están bajo el control de svn tienen un directorio oculto llamado .svn donde se guarda información interna. NO hay que tocar ese directorio, es necesario.

Creamos un proyecto "complejo":
$echo hola > fichero.txt
$ mkdir directorio
$ svn add *
A directorio
A fichero.txt

El comando svn add añade los ficheros indicados al svn para que sean guardados en el repositorio. En algunos casos no tendremos que usar *, por ejemplo si estamos trabajando con programas en C, si ponemos svn add * se guardarán también los ficheros a.out compilados y eso no tiene ninguna utilidad. Sólo hay que hacer svn add sobre un fichero determinada una vez, a partir de ese momento ya estará bajo el control de svn.

Mandamos la última versión al repositorio. Hay que hacer este paso a menudo para que el servidor siempre tenga la última versión.
$ svn ci -m "primera versión"
Añadiendo directorio
Añadiendo fichero.txt
Transmitiendo contenido de archivos .
Commit de la revisión 1.

Para obtener la última versión del proyecto:
$ svn update
En la revisión 1.

Para que este comando funcione hemos de haber hecho svn checkout anteriomente. Este comando lee la información de .svn para saber donde está el repositorio y a qué versión ha de actualizar.

Esta es una miniguía para utilizar svn a nivel usuario, con un repositorio ya creado online o con un repositorio en la máquina local. Subversion tiene muchísimas más cosas mágicas que nos hacen la vida más sencilla, pero esto es lo básico.

14 febrero 2007

Segundo cuatrimestre

Empieza el segundo cuatrimestre...

Los profesores de las asignaturas nos cuentan lo bonitas que son:
- Haremos un reconocedor de caras en APrendizaje y Percección
- Programaremos compresores de ficheros muy buenos en CODificación de la información
- Analizaremos secuencias de ADN en BIOinformática
- Desarrollaremos software de calidad en Ingeniería De la Programación
- Diseñaremos máquinas mejores gracias a Arquitectura e Ingeniería de Computadores
- Nos volveremos locos en Teoría De Lenguajes
- Aprenderemos Python en Estructuras de Datos y ALgoritmos
- No he ido a clase, así que no sé que haremos en Informática de Sistemas y Automática

Veremos en qué queda todo esto... ¡Ánimo a todos!

¿Qué vais a hacer este cuatrimestre?

10 febrero 2007

Consolas en China

Hace años nos llegaban a España las consolas NASA que eran copias baratas de la Nintendo Entertainment System (la mítica NES). Estas consolas de imitación venían de China o Korea y tenían cientos de juegos incorporados.

Pues bien, a los chinos no les gusta pagar a empresas extranjeras y prefieren hacerselo ellos mismos. Hace tiempo sacaron una imitación de la Dreamcast: la Treamcast.

Nintendo quiso evitar otra imitación como la de la NASA, se asoció con una empresa china y creó una consola barata especial para China: iQue Player. Esta consola está basada en la Nintendo 64 y es símplemente un mando que se conecta a la televisión. Los juegos se ponen en tarjetas de memoria y cuestan unos 5 euros. La mayoría de grandes juegos de la N64 han sido convertidos para esta consola con nuevos extras.

Esta consola en principio sólo se vende en China, y se estaba meditando si sacarla también en otros países pobres. Pero la gente de Europa y Estados Unidos también la quiere y se compran muchas por internet.

SAT

Hace unos días escribí un comentario en el blog de XAngel sobre el problema de P=NP.

Hablé de SAT, el primer problema que se demostró que era NP-Completo. Este problema es muy sencillo: tienes una expresión lógica, por ejemplo

(A and B) or (not C and not B) or (not C and not A)

La pregunta a resolver es: ¿hay alguna combinación de valores True, False para A, B y C que hagan que esa expresión sea cierta? ¿cuál?

Una persona, pensando un poco podría encontrar la combinación pero para una máquina el cálculo tiene coste exponencial. Si en vez de 3 variables hubiera 100, un ser humano seguramente ni se atrevería a buscar la solución y un ordenador tardaría milenios en encontrar la solución.

Este es el problema SAT (Satisfiability).

No se conoce un algoritmo rápido para calcular la solución, sólo hay algoritmos exponenciales. Si se consiguiera encontrar uno, cambiaría radicalmente la informática que conocemos:


Is there an efficient solution to SAT? Is there some ingenious procedure that quickly determines whether any given proposition is satifiable or not? No one knows. And an awful lot hangs on the answer. An efficient solution to SAT would immediately imply efficient solutions to many, many other important problems involving packing, scheduling, routing, and circuit verification. This sounds fantastic, but there would also be worldwide chaos. Decrypting coded messages would also become an easy task (for most codes). Online financial transactions would be insecure and secret communications could be read by everyone. (MIT)



Se cree que no existe semejante algoritmo y que, de momento, la criptografía es hasta ciento punto, segura.

MIT OpenCourseWare

¡¡¡¡Se acabaron los exámenes hasta junio!!!! Para los que sientan un irrefrenable deseo de adquirir conocimientos recomiendo que le echen un vistazo a el MIT OpenCourseWare.

El MIT es una de la Universidades más importantes de Estados Unidos y del mundo. Muchos grandes avances científicos han ocurrido en sus laboratorios. Pues un día se les ocurrió crear este portal y colgar allí todo el contenido de sus cursos (transparencias, resúmenes, ejercicios, exámenes). Vendría a ser como las microwebs de la UPV, pero todo accesible y con licencia Creative Commons. Además cada curso tiene su foro, aunque yo me he metido en un par para probar y no había mensajes, quizá te respondan profesores si preguntas algo ahí...

Sólo he mirado un poco por encima el OpenCourseWare, si alguien se atreve a intentar estudiar algo de ahí que lo comente. Yo veo que los cursos esos tienen mucho nivel. Por ejemplo dos cursos de informática que he mirado:

6.046J Introduction to Algorithms (SMA 5503), Fall 2005. Este tiene también videos con las clases grabadas.

6.045J Automata, Computability, and Complexity, Spring 2005.

Estos dos cursos, que según pone ahí son de un semestre, yo creo que en España sería 2 asignaturas anuales como mínimo... una bestiada. Pero claro es el MIT, supongo que ahí no entra a estudiar cualquiera.

No sólo hay cursos de informática, se pueden encontrar cursos de historia, biología, literatura, y de varias cosas que no sé ni que son.