martes, julio 18, 2006

Memoria Histórica

Un colaborador de este blog ha publicado una noticia en Kaosenlared, se la han publicado en la portada en el día de hoy. Por lo que veo bien poner aquí un enlace por si alguien quiere verlo:

http://www.kaosenlared.net/noticia.php?id_noticia=21101

Enhorabuena "Libertarios por la memoria revolucionaria" que así se hace llamar.
;)

lunes, julio 17, 2006

Guardar un objeto Java en MySQL

Programación:
A continuación voy a proponer un tema de programación interesante: guardar un objeto en base de datos (concretamente en MySQL). Para empezar, la tabla usará un tipo de dato LONGBLOB para guardar el objeto en cuestión. Lo que vamos a hacer es guardar un objeto de Java creado por nosotros tal cual en una tabla MySQL.
La teoría
Bueno, partimos de una tabla con una columna LONGBLOB sin un tipo de tamaño definido. Aquí podríamos meter casi cualquier cosa. Para insertar el objeto tendríamos que hacer:
  1. Crear un PrepareStatment
  2. usar "setObject(1,objeto)" por ejemplo para pasar el objeto
  3. realizar el executeUpdate para la inserción

Vale, hasta aquí no hay ningún problema. "Supuestamente", para obtener el susodicho objeto de la base de datos bastaría con hacer el select convencional y hacer un casting desde el ResultSet. Algo así:
"MiClase obj = (MiClase) rs.getObject(1);" por ejemplo.
Si esto os funciona, no sigáis leyendo, porque a mí no me funcionó. Me dio el típico y fastidioso (por lo poco que dice) ClassCastException. Vale, no se puede recuperar el objeto haciendo un casting directo.
El problema
El casting, lo que devuelve el resultSet.getObject es un array de bytes, al menos eso me deuvelve a mí, y según he visto por otros foros le ocurre a más gente. Bueno, quizás esto es lo que tiene que devolver. Pues entonces un casting directo no vale.
La solución.
No es un gran descubrimiento, pero quizás ya intuyáis cómo sacar el objeto atrapado en el array de bytes: usando ByteArrayInputStream junto con un ObjectInputStream. Este sería el código:

ByteArrayInputStream bai = new ByteArrayInputStream(array);
System.out.println("Creado el ByteArrayInputStream... OK "+bai.getClass());
ObjectInputStream ois = new ObjectInputStream(bai);
System.out.println("Creado el ObjectInputStream... OK "+ois.getClass());

bObjeto = (MiClase) ois.readObject();
(omitidas capturas de excepciones pertinentes).
Ahora, si hacemos un System.out.println(bObjeto.getClass()); nos dará la clase de verdad de nuestro objeto.

Espero que a alguien le haya servido de ayuda.

Individualismo y las Series de Éxito.

Antes de nada, me gustaría afirmar que mis series favoritas actualmente son: "Perdidos", "House" y "24". Es por eso que me atrevo a criticarlas aun sabiendo que me gustan bastante. Realmente, lo que voy decir se puede aplicar a casi cualquier serie america actual. Dependiendo de la temática de la serie, los productores americanos nos venden siempre un estereotipo muy manido ya de la supesta perfección de la sociedad americana. Quitemos por un momento el patriotismo de 24, en el que el fin justifica sobradamente los medios (algo que detesto profundamente) y en el que la sobreprotección ante amenazas terroristas acaba por machacar los derechos humanos y la dignidad de los que supuestamente son "los malos". Lo que me quiero destacar es algo subyacente a la mayoría de series, y es el rol triunfador del protagonista. Toda "buena" serie americana que se precie debe mostrar el rol del "leader", del que soluciona los problemas. Bueno, siempre el protagonista es el/la más guapo/guapa, listo/lista, etc... y generalmetne siempre se sale con la suya. No obstante, aunque las series se van haciendo cada vez con mayor presupuesto, los papeles de los protagonistas van creciendo en soberbia y a veces desmesurada influencia respecto al resto de personajes. Es decir, empecemos por 24.
Sinceramente, si pienso en la temática de la serie, con la repulsa que siento contra las acciones militares de EE UU, no acabo de entender cómo me puede enganchar la serie. Quizás sea puramente la acción, y lo bien hecha que está la serie, cómo va planteando las historias paralelas y las va relacionando dinámicamente en un frenético ritmo de manera que al final del capítulo siempre te quedas con ganas de saber cual es el desenlace de la pequeña "sub-historia" que se cuenta. Aunque la mayoría de las veces es siempre previsible, el bueno sale ganando. Así de simple. Pero realmente es algo más. La sociedad americana está construida en base al puro individualismo. La competitividad en todos los aspectos de la vida. En 24, Jack Bauer no sólo es el mejor "profesional" y experto agente contra el terrorismo, sino que además, acaba saliéndose con la suya sí o sí. Y no es que al ser el protagonista... vale, eso es lo normal, pero lo que realmente me llama "más" la atención es la manera en la que sus compañeros hacen lo que él dice aun sabiendo que lo que hace viola algún supuesto protocolo interno de actuación. Pero da igual, el fin ha justificado los medios, y por mucho alboroto que forme, por muy violento que se ponga, acaba por conseguir lo que quiere, y además, con unas palabritas de patritotismo se puede solucionar cualquier cosa.
En otro contexto muy distinto se mueve House. El doctor Gregory House que más que un doctor es una puerta a la infinita sabiduría. Es realmente sorprendente como ese individuo es capaz de aglomerar sobre sí mismo prácticamente toda la información sobre enfermedades, tratamientos y medicina general conocida por el hombre. Lo que a mí me gusta de la serie es el personaje, la bordería chulesca con la que abruma a sus enfermos y a sus colegas. En una crítica leí (porque como no soy médico, no me doy cuenta de esas cosas) que se salta todos los protocolos de pruebas médicas en los diagnósticos. En realidad esto es algo que salta a la vista sin ser médico, porque las pruebas "estrella": el TAC y la punción lumbar suelen hacerse de una manera u otra en función de si resuelven o no el diagnóstico. Por lo menos, a mí, lo que me engancha es la forma de ser de House: honesto, sincero, pero sarcástico hasta la médula. Son esos cortes que dejan "planchada" a la gente los que te hacen reir. Y lo que me sorprende es ver cómo utiliza cualquier medio para demostrar que está en lo cierto. Aunque tenga que inyectarle algo a la paciente para falsear el diagnóstico de algún colega suyo. Desde mi punto de vista, ahí la serie se pasa de largo. Desde luego, eso no solo es ficción, sino que es siempre igual, se sabe que al final el paciente se salva, sea lo que sea lo que tiene, y sean los que sean los medios que usa House para obtener la curación. Por el camino, suele humillar con más o menos egocentrismo a todo el que se le pone por delante.
Y por último: Perdidos. Donde hay un médico que también es el protagonista, aunque sólo sea porque salva las vidas de los demás supervivientes. En este caso, la individualidad está plausible también, aunque en menor medida, siendo la lucha de poder lo que caracteriza a los personajes principales. Esta serie contiene también los típicos estereotipos americanos, aunque están mezclados de una manera más sutil y como el contexto en el que se desarrolla la historia (la misteriosa isla) representa una "micro-sociedad" no se ve tan claro que el mejor pase por encima del resto. En este caso, el personaje de Locke carga con los conocimientos de supervivencia, rastreo, caza... por otro lado, Said es el experto en tecnología y Jack es el médico. En prinicipio el rol del médico salvador era lo suficientemente fuerte como para guiar a los demás. Aunque la intención de la serie (a mi entender) no es mostrar cómo se formaría una sociedad paralela, las luchas internas de poder entre los protagonistas cobran especial protagonismo cuando "los misterios" se agotan, lo cual se puede ver como un reflejo de la sociedad. Y es curioso, como entre toda la gente que habita en la isla, al final tienden a seguir los "consejos" de un solo hombre.