domingo, 31 de enero de 2010

Un poco de Japon

Estos últimos días han estado coloreados de cierto color oriental.

Mismamente este fin de semana descubrí una película de animación que probablemente sea la más impactante y emotiva que he visto nunca; y más probable que lo sea durante un buen tiempo: "La tumba de las luciérnagas".

La tumba de las luciérnagas


Fácil es saber cómo dí con ella al comprobar que pertenece al Studio Ghibli, y tiene por director a Isao Takahata, en realidad su primera película con el Studio.
Se estrenó en Japon en 1988 en una sesión doble junto a "Mi vecino Totoro" de Hiyao Miyazaki y mucha gente opina que fué muy desacertado por la crudeza de una frente a la ternura de la otra.

En mi opinión es una película muy dura, muy triste, muy desalentadora, que llena de impotencia, de dolor y de llanto. Y a pesar de ello, consigue sacarte risas y carcajadas en ocasiones, toca la ternura y llegas a disfrutarla olvidando a veces el comienzo.

Aprecio mucho haberla visto sin tener constancia alguna de su trama ni su temática. Eso logro impactarme aún más.
Me caló muy hondo. Tanto que no he dejado de pensar en ella desde entonces, y ya van un par de días.
Por momentos se me viene a la cabeza la voz de Setsuko comentando cualquier cosa, y otras veces, las imágenes que mas me han impactado pasan ante mis ojos dejando completamente bloqueada. Incluso escenas que creí no fijarme mientras la veía, vuelven a mí para que las analice detenidamente.

Tarde en dormirme aquella noche. Y los sueños no fueron del todo agradables.

A veces me sorprendo a mi misma quieta, con la mirada perdida y pensando en nada - o quizás pensando en cada detalle de la laguna, del paraguas roto que no los protegía de la lluvia, en el sonido de los tres últimos caramelos dentro de la lata, de la pequeña caja de madera tan mal escondida, del color de la roja sandía ...

A veces digo que no podré volver a verla. Pero se que algun día lo haré, aunque no creo que pueda ser pronto.

¿Por qué solemos perder el tiempo cuando mas falta nos hace?

Soy de esas personas que siguen un claro patrón: cuánto más importante es algo en lo que debo trabajar, más frecuentemente pierdo el tiempo.

¿Y no ha sido ese motivo por el que cree en su día este blog?

Estamos en los días previos a los exámenes de la convocatoria de Febrero, y ya hay quien ha realizado alguno. Los míos son en esta próxima semana, y se puede decir que a medida que va muriendo el domingo, menos ganas encuentro para repasar.

Quizás es la edad, que acaba haciendo mella en una y no resulta tan fácil concentrarse; o quizás sea el tiempo que llevo haciendo lo mismo, que degrada las energías por acabar, cuando debería ser todo lo contrario; o quizás es, simple y llanamente, que nací vaga, vivo siendo vaga y, probablemente, moriré siendo más vaga aún.

Pero no debería refugiarme en ello, disculpando todo lo que puedo llega a hacer mal en estos días tan importantes. Lo cierto es que con frecuencia lo utilizo contra mi misma, para acallar la conciencia que no cesa de taladrarme la moral ...

¿Por qué será que es en estos días cuando mas se echa la vista atrás, más se reflexiona, y más conclusiones se sacan de una misma y de la propia vida que he llevado? - Supongo que la respuesta es muy obvia: porque ya no hay marcha atrás.
Ya no hay remedio.
El tiempo se ha esfumado entre los dedos y yo era consciente de ello a medida que fluían los días del invierno. Las semanas caían tan rápido como las hojas de los árboles de la calle, y cada noche me sentaba a contemplar la oscuridad mientras recordaba que estaba haciendo lo mismo que la anterior, pero ya era un día más; o un día menos, según se mire.

He hecho tantas cosas desde Octubre, y a fin de cuentas se quedan en nada ahora mismo. Porque son eso: nada. Nada que deba importar más que las verdaderas obligaciones.


Se que el miercóles pensaré de otra forma.
Me volveré positiva, tenaz, sentenciosa con los días futuros. Haré planes que me hincharán de energía; y toda mi vida hasta ese día la exprimiré para convertirla en una moraleja - cómo si mi vida fuese una fábula - y me la repetiré una y otra vez durante un par de días.

Pero serán eso: un par de días. Porque sé que al cabo de un tiempo se me olvidará todo lo que siento ahora mismo, todo lo que pienso y me compadezco, y viviré los días de primavera sin acordarme apenas de todo esto. Aunque sé, que en el fondo, siempre hay una vocecilla que me habla, con un sonido apenas perceptible, y me dice las mismas palabras que estoy escribiendo aquí.

Ojala la escuchara más veces. Ojalá le prestara más atención.
Ojalá le hiciera caso ...

viernes, 15 de enero de 2010

"Vamos haver"

Desde luego, Internet va a acabar con nosotros ...

¿Quién no ha visto alguna vez escrito por Internet en foros, blogs o comentarios la expresión "Vamos haver"?

Ni que decir que esto ESTA MAL. MUY MAL escrito ortográficamente.

Ojala Google lo puseria en rojo en su encabezado, la forma correcta de escribirlo.
Entiendo que no se sepa que, como expresión popular su traducción es que "vas a mostrar algo", es decir, "otra persona verá lo que tú quieres mostrar con los ojos".

¿Cómo es el verbo VER? Pues con V de Valencia
¿Cómo es ir a un sitio? Pues con preposición A
¿Cómo se escribe? - Pues 'SEPARAO'

Vamos a ver

Es comprensible que, como expresión popular su traducción no se entienda como "ir a ver algo", sino que se puede confundir con lo verbo 'haber' de toda la vida: HABER con B de Barcelona.

Pero en fin, hay que decir que he visto todas las variantes posibles por ahí ...


Otros ejemplos de nuestra sana cultura y "lo grande" que es Internet:

- Halludar, hayudar, alludar: cómo vereis, la primera es la que mas hace sangrar los ojos

- Hai: no se sabe si lo que quieren poner es AHI o HAY o AY. (por dios que debe de haber un capitulo de Barrio Sesamo solo para estas tres formas y ya ponen otra mas enrevesada)


Lo cierto es que con los mensajes cortos y las ganas de escribir y acabar rápido, nos estamos acostumbrando a ciertas palabras como 'ola', 'ai', 'q', etc, que son mas bien simplificaciones de lo que escribimos. Pero si pones OLA dejas el margen de duda de si quitas la H porque no la quieres escribir o bien porque no sabes que la lleva; pero poner H donde no la lleva es que lo haces mal y encima lo dices a voces.

Si es que Internet mucho avance para uno y mucho retroceso para otro. Y yo que no me aguantaba sin dejarlo constatado aquí, pero es que mis ojos sufren con estas cosas ...


;)

jueves, 14 de enero de 2010

Recorrer HashMap con Struts 2 y el tag iterator

Hace unos días indicaba como recorrer un HashMap desde una clase java, pero hoy he necesitado mostrar con Struts 2 y mediante el tag iterator los elementos y valores de un Map.

En concreto se trataba del un carrito de la compra:


Map<Equipo, Integer> carrito = new HashMap<Equipo, Integer>();




siendo Equipo una clase java


public class Equipo {



private Long id;

private String nombre;

private Long precio;

[...]

[...geters() y seters()...]

}




y almacenando como Integer la cantidad de productos de ese tipo Equipo que tenemos en el carrito de la compra.

La idea era mostrar el carrito en una tabla de HTML y finalmente el código quedo de esta forma:


<table>
<thead>Estado actual del carrito</thead>
<tr><td><b>Nombre___________</b></td><td><b>Cantidad______</b></td></tr>
<s:iterator id="carrito" value="carrito">
<tr>
<td><s:property value="key.nombre"/></td>
<td><s:property value="value"/></td>
</tr>
</s:iterator>
</table>



Lo importante de éste código son las líneas


value="key.nombre"
value="value"


donde Struts captura del HashMap carrito su KEY, que en este caso es una clase EQUIPO y muestra su nombre. No accede directamente a su atributo nombre, sino que mediante Struts 2 se accede al metodo getNombre() de la clase Equipo.

Para el caso de VALUE, es el valor Integer del HashMap correspondiente.

Si al carrito le añadimos:

carrito.put(new Equipo("Jabalina", 3);
carrito.put(new Equipo("Gorra", 1);


la tabla resultante se puede ver en la siguiente imagen:

miércoles, 13 de enero de 2010

Enganchada a OST Avatar

Muchas me gustan, pero estos días cada vez que aleatoriamente sale Becoming One of The People, Becoming one with Neytiri me doy cuenta que cada vez me gusta más.

Aquí la dejo para disfrute ...


Utilizando EJB 3.0 y Java Persistence API (JPA)

Está visto que en esta vida no te lo dan todo hecho

Estoy con las ampliaciones de la práctica de DASDI, que en mi caso mas que ampliaciones son "mejoras" de mi practica.

Despues de muchas vueltas, tengo una aplicación compuesta de 72 archivos para compilar con una gran masa de paquetes y clases, por lo que va siendo hora de echarle un vistazo a todo y ver que se puede agrupar y de que podemos prescindir.

Durante el desarrollo de la tienda virtual me fui dando cuenta de que era mejor agrupar ciertas funciones en una misma clase con varios metodos en vez de utilizar clase por función. Pero la parte de Miis y Jugadores sigue siendo muy redundante.

En la practica 9 se nos explicó como dar rentabilidad transversal a nuestra aplicación con el uso de Enterprise Java Beans (EJB), utilizandolos en la fachada entre la capa de logica o negocio y la capa de presentación.

Para ello añadimos dos nuevos interfaces, uno Local y otro Remote.


package impl.uo.dasdi.business.mii;

import javax.ejb.Local;
import com.dasdi.business.MiisService;

@Local
public interface MiisServiceLocal extends MiisService {
}


La anotación o etiqueta de @Local necesita la importacion de la clase Local de la librería EJB 3; y, como decía al principio, no se nos facilitó la librería EJB, por lo que toca descargarla de Sun Developer Network, y seguir los siguientes pasos:

  1. Descargar los archivos de clases (ejb-3_0-fr-api.zip)
  2. Descomprimir el ZIP, obteniendo la librería JAR ejb-3_0-api.jar
  3. Copiamos la librería a nuestro directorio /lib del proyecto
  4. Abrimos Proyecto en Eclipse (o actualizamos F5 si ya estuviera abierto)
  5. Nos aparecera en la carpeta /lib del explorador de paquetes, pero no estará aún enlazada al proyecto
  6. Botón derecho sobre la librería -> Build Path -> Añadir
  7. Ya está enlazada, por lo que debería salir en References libraries, de nuestro proyecto

Listo! Ya podemos hacer la importación de la clase Local y Remote.


Java Persistence API (JPA)


Para la adaptación de la capa de persistencia mediante el mapeo de dominio necesitamos las librerías y ha ocurrido una cosa similar con la librería de EJB, por lo que hacemos lo mismo:

Accedemos a la pagina de Sun Developer Network correspondiente a JPA donde nos re-dirige a GlassFish para obtener los archivos binarios:

  • Descargamos el paquete v1_ur1 b14 de la web de GlassFish
  • Extraemos el contenido del paquete o bundle para obtener las classes:
  • Abrimos un interprete de comandos: Ejecutar -> cmd
  • Nos situamos en el directorio del archivo descargado glassfish-persistence-installer-v1_ur1-b14.jar
  • Ejecutamos: java -jar glassfish-persistence-installer-v1_ur1-b14.jar
  • Hemos obtenido una carpeta con los JAR de las clases
  • Copiamos la librería toplink-essentials.jar a nuestro directorio /lib del proyecto
  • Actualizamos Proyecto en Eclipse
  • Boton derecho sobre la nueva librería
  • Añadimos al Build Path

Y listo! ya podemos utilizar las clases para el mapeo, en concreto las etiquetas de @Entity, @Id, etc.

sábado, 9 de enero de 2010

Nieve en Enero


Llevamos tres días de un intenso temporal de nieve y frio en toda España, y aquí en Palaciós, a casi 400 metros sobre el nivel del mar, ha llegado a cubrirlo todo con una gran capa.

Muchas fotos estos días, muchas bolas de nieve, muchas carreras con Kalel y, sobretodo, muy cansada de limpiar nieve de la entrada de casa para que pueda pasar el coche.


Lo único malo que tienen estos temporales son si tienes que coger el coche y desplazarte al trabajo u otra cita ineludible. Sino, son días con un encanto muy especial, y hay que saber disfrutarlo.

Esta noche volveré a pasarme un buen rato sobre la nieve, disfrutando de los colores y la noche, que lo dibuja todo como una bonita postal de Navidad.



viernes, 8 de enero de 2010

Ubuntu Live CD para recuperar archivos Windows

Este día me dejaron un portátil Toshiba para arreglar, el cuál al arrancar mostraba el error
Falta archivo NTLDR
.

Si se busca por la red hay miles de enlaces comentando la posible solución a este error, y lo cierto es que funciona. Pero la técnica -que describiré al final de esta entrada - no deja de ser un tanto agresiva y siempre hay un riesgo, aunque mínimo, de perder los datos de la partición de Windows.

Por lo tanto, antes quise asegurarme de hacer una copia de todos los archivos que había en Windows, ¿y cómo lo hice?. - Pues utilizando un LIVE CD DE UBUNTU.

Este tipo de CD consiguen hacer funcionar en un ordenador un sistema operativo Linux sin necesidad de utilizar el SO Windows instalado, tan sólo utilizan parte del hardware como la memoria RAM para cargar los datos.

La primera necesidad de tener este tipo de CDs es para poder probar Ubuntu sin necesidad de instalarlo (tal y como tenemos Windows) y de esta forma comprobar si nos gusta o no. Pero acaba siendo muy necesario para este tipo de problemas, donde el acceso a nuestros datos del disco duro es muy limitado.

A pesar de tener ya versiones anteriores, en esta ocasión decidí descargarme de la web oficial de UBUNTU el Live CD de la versión 9.10 y grabarla en un cd.

Esta versión viene con unas mejoras respecto a las anteriores, en mi caso la 6.06, dónde no es necesario cambiar los permisos de administrador para acceder y copiar archivos, y desaparecen problemas con la conexión de algunos dispositivos USB, como los discos duros portatiles.

Los pasos fueron:
1.- Descargar la imagen ISO de la web
2.- Grabarla con NERO - esto no tiene mucha ciencia
3.- Introducir CD en portatil
4.- Activar en la BIOS el orden de BOOT para que arranque primero desde CD
5.- Reiniciar portatil

Aparecerán datos que indican la carga del LIVE CD y saldrá el menú de UBUNTU. A veces incluso se cargar todo solo y lo siguiente que se verá es el escritorio del Sistema Operativo.

Gracias a esta versión de UBUNTU, aparecerán las unidades lógicas conectadas al equipo, y con ellas el disco duro con los datos de la partición de WIndows que queremos. Tan solo sera cuestion de copiarlas donde queramos, es decir a un dispositivo portatil, memoria flash, disco duro portatil, etc.


COMO SOLUCIONAR EL ERROR NTLDR
Básicamente esta explicado mucho mejor por otras web pero:
1.- Obtener un disco de arranque de Windows XP (o el sistema operativo en cuestion)
2.- Arrancar desde CD e iniciar la carga de la instalación
3.- Acceder a la consola de recuperación (R)
4.- Seleccionar la unidad o partición (1)
5.- Introducir contraseña de administrador (normalmente vacia)
6.- Teclear FIXMBR y Enter
7.- Aceptar con una S y Enter
8.- Teclear copy D:\i386\ntldr C:\ y Enter
9.- Teclear copy D:\i386\ntldetect.com C:\ y Enter
10.- Salimos con EXIT y reiniciamos

Debería cargar Windows perfectamente.
Lo que hemos hecho es obtener los archivos que pedía en el ordenador del CD de instalación del Windows XP, y los hemos copiado al sitio correspondiente para que cuando arranquemos Windows, se cargue correctamente.

Este error es frecuente tras un mal uso del apagado de Windows, como apagarlo con el botón de Power, desenchufarlo, problemas de batería, etc. De modo que es recomendable, no solo tener copias de seguridad de todo, si no tener un ordenador en buen estado, sobretodo el tema de la alimentación.