Un cuatrimestre más!

Ayer a las 23:59 finalizaba el plazo para la tercera entrega de la práctica de la asignatura Modelos Multidimensionales y Almacenes de Datos y terminaba el segundo cuatrimestre del curso 2008/2009. Ahora queda esperar las notas finales de las tres asignaturas en las que estaba matriculado: Minería de Datos y Inteligencia Artificial 2 (y la mencionada anteriormente). El resultado se presenta muy positivo, y de momento se que Inteligencia Artificial 2 está aprobada. El términos académicos el curso ha sido muy bueno con 7 asignatura cursadas (4 y 3) y una sola suspendida y repetida (IA2).

Ahora queda esperar al último curso en la UOC (2009/2010), el cual se presenta bastante tranquilo y con un nivel de carga muy aceptable: 3 asignaturas para el primer cuatrimestre y el PFC para el segundo.

Más adelante si me acuerdo intentaré colgar la práctica de IA2, implementada en Python.

Copa, Lliga i Champions!

FELICITATS CAMPIONS!

copalligachampions09.png

‘El País’ traduce algorithm como logaritmo.

Acabo de leer en el blog La Caja Debajo de la Cama que según parece el diario El País publicó el siguiente titular: “Google crea un logaritmo para identificar a sus empleados decontentos“, más tarde lo modificó por el siguiente: “Google identificará a sus empleados descontentos con un logaritmo“. Por otro lado, la fuente de la noticia, el diario The Wall Street Journal publicó la noticia donde se puede leer que Google tiene un algoritmo para tal fin, en lugar de un logaritmo. Parece mentira que un diario de prestigio como el El País tenga entre sus filas a gente que confunda un algortimo con un logaritmo (aunque sea gente de Letras). Qué será lo próximo que confundirán… la política con la ética!

La chica de mañana…

…te estará esperando en el rincón de ayer y ya no tendrás que perseguirla. Buen viaje y gracias por todas las letras que has escrito. Desde ROTB queremos ofrecerte un pequeño homenaje con el vídeo de tú primera canción, que un día compusiste y que tantas veces hemos escuchado.

Gracias Antonio!

Gorillapod promotional code!

For everyone that wants a Gorillapod, if you buy it directly from the Joby store, you could be use this promotional code GorillapodLOVE and get a 15% off.

No tan Piratas!

Durante esta última semana en algunos medios de comunicación se podía leer la noticia que la Eurocámara ha rechazado la vigilancia de Internet por parte de los Gobiernos (Europeos), que sin tener una orden judicial querian ser los Jueces, el Jurado y los Ejecutores, de Internet en sus donimios administrativos. Los Gobiernos, encabezados por la Francía de Sarkoz, han visto como en el último momento se les venia abajo la reforma que planeaban (407 votos a favor, 57 en contra y 171 abstenciones). Con esta medida a nuestro país se le ponen más dificil llevar a cabo la ley sobre las descargas en Internet. Ahora toca estar atentos a ver que truco se sacan de la chistera Sindescargas y sus amiguitos!

Pirata

Últimamente estamos leyendo como diferentes países, incluido el nuestro, empiezan a legislar para restringuir el tráfico P2P y las descargas “ilegales”.  No hace mucho (un año aprox.) Telefónica ya empezó a hacer pruebas con el protocolo P4P, diseñado para descongestionar las interconexiones entre operadoras de tráfico P2P y no perder dinero en estas interconexiones. En ese punto las operadoras ya querían “dominar” el P2P y modificar las aplicaciones P2P para utilizar un protocolo que aparte de controlar el tráfico también tiene la capacidad de controlar el contenido que circula por la red para comprobar si es legal o no. Un año después empezamos a vislumbrar como el gobierno empieza a mover ficha al estilo Sarkozy y para guinda nos colocan a la Sra. Sin-descargas. Pero el tema del P2P es la punta del iceberg, por debajo de la línea de flotación existe la gran idea del control. Todo en nuestra sociedad está controlado, y debido al crecimiento exponencial de Internet (no olvidemos que nació dentro del DARPA) ésta se ha vuelto una pequeña república bananera que para algunos es como un grano en el mismísimo codo (¿o era culo? :-P ). De momento en la república bananera de Internet ya se nos ha aparecido un Díos que con su generosidad y bondad nos muestra el camino a seguir en Internet, a través de su buscador (o de sus mapas). Más tarde nos ofreció el maná del correo, las aplicaciones ofimáticas y un largo etc.  ¿Quienes son los ministros terrenales de éste Díos omnipotente y omnipresente? No hay que olvidar que el tuerto es el rey en el país de los ciegos, y que la inmensa mayoría de la gente va a “ciegas” por Internet y que solo cuenta con la ayuda de un tuerto, que no siempre tiene que ser de fiar y menos con tanta información (información = dinero). De momento parte del sector audiovisual ha “convencido” a nuestros gobiernos para filtrar el tráfico P2P, analizarlo (nuestra privacidad al carajo!)  y determinar si estas haciendo algo ilegal; recordemos que hace unos años ya nos metieron el canon digital por el orto y ahora se les ha quedado anticuado.

¿Qué nos queda? Pués la libertad de elegir. Al igual que en la relación sadomasoquista, el amo/a tiene el control mientras el esclavo/a le deje.  Pués por qué vamos a luchar nosotros, dejemos que sean las operadoras las que luchen contra el gobierno en esta batalla por el control de La Red. Si nos damos de baja de nuestra connexion casera a Internet y las operadores empiezan a perder mercado; empezaran a luchar. No es tan difícil vivir sin Internet, podemos ir a bibliotecas, lugares públicos donde los ayuntamientos tiene accesos libres a Wifi, etc. Si es una batalla deberemos luchar (no solo manisfestarnos) y el camino no será fácil, pero entre todos podemos conseguirlo.

Oracle y Sun Microsystems la pareja de moda

Podemos leer en casi cualquier sitio como al final Oracle ha comprado, finalmente,  Sun Microsystems, dando un giro inesperado a la historia que empezó con IBM al acecho de Sun. Según se puede leer en la pagina web oficial de Sun el valor de la compra asciende a unos 7.400 millones de dólares (precio por acción : 9,50 $).

Ahora queda esperar como afectara este nuevo escenario a la tecnología Java y sobretodo a los RDBMS de Oracle y Sun. Recordemos que no hace mucho Sun Microsystems compro a MySql, por lo que ahora Oracle y MySql son hermanastros.

Microsoft IE8 (Test)

Después de pasar por un instalador demasiado microsofitado (desea instalar el paquete tal, el software pascual, etc) llegamos a la parte de reiniciar el sistema (por prescripción informática) y tachan!!! Ya podemos jugar con el nuevo IE 8. De buenas a primera el interfaz (sobre XP) es muy parecido a su predecesor en el cargo. Se puede apreciar algún ligero cambio en la barra de direcciones (las direcciones URL se resaltan en negrita a excepción del protcolo (http://), las w y algo más). En cuanto a la navegación, lo primero que hice fué visitar esta gran tierra en Internet (Riders Of The Bit) y directamente fuí a pasar el test Acid 3. Y que sorpresa la mia… un 20 sobre 100 juas, juas me parto. En estos mometos el Firefox con el que estoy trabajando obtiene un 70 sobre 100. En este punto decidí parar la fase de test y esperar a que los chicos de Redmond acaben su trabajo y no entregen una RC cuando todavía deberia estar en fase Beta.

Una imagen…

IE8 Acid Test

Microsoft IE8 final code

Según se puede leer en ComputerWorld, durante el día de hoy (9:00 pm hora local en Redmond) Microsoft lanzará la primera versión, no beta, de su nuevo explorador IE8.  Desde ROTB estaremos atentos para probar esta nueva versión del popular navegador Internet Explorer y ver que beneficios aporta y a que “precio”.

Interfaces Comparator y Comparable (y III)

Ya hace más de dos meses que debería haber publicado este post pero como sabeis el tiempo es un bien escaso y entre unas cosas y otras no he podido preparar el código hasta ahora.

Bueno al código! En esta última parte utilizaremos el interfaz Comparator para crear clases específicas para ordenar. Siguiendo el hilo de los anteriores posts he creado una clase para ordenar Personas por edad y otra para ordenar por altura. Por si solas no tendrían mucho sentido pero al implementar Comparator podremos utilizarlas para fijar la ordenación en diferentes estructuras de datos como vectores, listas, etc.

La primera clase es OrdenarPersonaPorEdad y al implementar Comparator hay que implementar (o sobrecargar :-P ) los métodos compare(…) y equals(…). Sobre este último comentar que según la documentación de Sun habría que comprobar que realmente los criterios de comparación son los mismos. Pero en la práctica únicamente se comprueba que se está utilizando el mismo objeto; this y obj hacen referencia al mismo objeto.

Como en la clase Persona se utilizó Integer para la edad y la altura, ahora únicamente deberemos utilizar el métode compareTo(..) de Integer, lo que simplifica el diseño y el ejemplo.

import java.util.Comparator;
 
public class OrdenarPersonaPorEdad implements Comparator {
    /**
      * Return a negative integer,
      * zero, or a positive integer as
      * this object is less than, equal to,
      * or greater than the specified object.
      */
    public int compare(Persona p1, Persona p2) {
        return p1.getEdad().compareTo(p2.getEdad());
    }
 
    public boolean equals(Object obj) {
        return this == obj;
    }
}

Aquí podemos ver el código para la clase que comparará por altura. Como apunte, si recordamos la segunda parte del artículo, dónde se multiplicaba por -1 el resultado de compareTo(..) para devolver el orden inverso, aquí podríamos utilizarlo de la misma forma.

import java.util.Comparator;
 
public class OrdenarPersonaPorAltura implements Comparator {
    /**
      * Return a negative integer,
      * zero, or a positive integer as
      * this object is less than, equal to,
      * or greater than the specified object.
      */
    public int compare(Persona p1, Persona p2) {
        return p1.getAltura().compareTo(p2.getAltura());
    } 
 
    public boolean equals(Object obj) {
        return this == obj;
    }
}

Y como el código de la clase para probar los dos comparadores con un Vector.

import java.util.Vector;
import java.util.Iterator;
import java.util.Collections;
 
public class Test {
    /**
      * Main para probar la clase.
      */
    public static void main(String[] args) {
        // Franc
	Persona franc = new Persona("Franc", 38, 1.77);
	// Rosa
	Persona rosa = new Persona("Rosa", 29, 1.98);
	// Maite
	Persona maite = new Persona("Maite", 37, 1.78);
 
	// Creo una comunidad de personas.
	Vector miComunidad = new Vector();
	miComunidad.add(franc);
	miComunidad.add(rosa);
	miComunidad.add(maite);
 
	// Ordeno por edad la comunidad de personas.
	Collections.sort(miComunidad, new OrdenarPersonaPorEdad());
 
	// Ya se puede listar la comunidad ordenada por edad.
	Iterator personaIter = miComunidad.iterator();
	System.out.println("Comunidad ordenada por edad.");
	while (personaIter.hasNext())
	    System.out.println(personaIter.next());
 
        // Ordeno por altura la comunidad de personas.
	Collections.sort(miComunidad, new OrdenarPersonaPorAltura());
 
	// Ya se puede listar la comunidad ordenada por altura.
        personaIter = miComunidad.iterator();
	System.out.println("Comunidad ordenada por altura.");
	while (personaIter.hasNext())
	    System.out.println(personaIter.next());
    }
}

Resultado de la ejecución:

Comunidad ordenada por edad.
Me llamo Rosa, tengo 29 y mi altura es 1.98
Me llamo Maite, tengo 37 y mi altura es 1.78
Me llamo Franc, tengo 38 y mi altura es 1.77

Comunidad ordenada por altura.
Me llamo Franc, tengo 38 y mi altura es 1.77
Me llamo Maite, tengo 37 y mi altura es 1.78
Me llamo Rosa, tengo 29 y mi altura es 1.98

Como podéis ver el uso de Comparator simplifica en muchas ocasiones la tarea de ordenar un Vector (por ejemplo). Tener presente este interfaz, así como el interfaz Comparable, a la hora de diseñar una aplicación puede ahorrar mucho código y simplificar futuras modificaciones, mejoras, etc.

Espero que esta serie de artículos sobre los interfaces de comparación que ofrece Java os halla gustado y os ayude en el futuro.

200 años del nacimiento de Charles Darwin

Hoy día 12 de Febrero de 2.009,  se cumple el segundo centenario del nacimiento de Charles Darwin. Desde ROTB solo podemos agradecir a Sir Charles toda su aportación a la ciencia y desearle que su travesia, a borde del H.M.S. Beagle, más allá de los confines del universo le sea placentera :-) .

Felicidadades!