miércoles, 30 de diciembre de 2009

Avatar II

Y el día llegó: fuí a ver Avatar por segunda vez y en esta ocasión en 3D.
La pena fue que no saque yo las entradas, porque de saber que había tan pocos sitios atractivos lo hubiera dejado para otro día: me toco fila 11 en la pared izquierda.

La distancia era buena (era eso o fila 3, es decir, dolor de cuello) pero la zona izquierda de la pantalla siempre se veía muy poco nítida y en ocaciones borrosa.

Por otra parte, el resto de película se apreciaba perfectamente el 3D: las gotitas de agua, el hollin de los árboles quemados, las semillas del arbol sagrado; incluso el detalle de los subtítulos, los cuales no se mostraban entre los personajes y parecía que las letras salía de ellos mismos.

Me emocione muchísimo mas en esta ocasión, llegando a llorar lagrimas de cocodrilo en las escenas mas emotivas. Lo cierto es que la disfrute mucho mas esta vez, aunque se me hizo mas corta.

En ocasiones me quitaba las gafas y se podía seguir la película perfectamente, ignorando ciertos momentos demasiado borrosos.

Me quedare con la incógita de saber si desde el centro de la sala se podría haber apreciado mejor los efectos, de todas formas ha sido un placer volver a verla, y en un cine lleno de gente, se podía sentir las risas, los suspiros y hasta algun tímido aplauso al final.

Que gana de que salga en DVD ...

martes, 29 de diciembre de 2009

Nintendo DS Lite + cartucho M3i Zero = regalo de Reyes estrella

Pues sí, al final despues de varios años intentando regalarla para reyes o cumpleaños, estas navidades a mi madre el "he encargado" la Nintendo DS.

Y como estoy muy contenta del resultado de mi compra, voy a hacer un poco de publicidad.

La consola comprada en FNAC por unos "modestos" 139 euros. Modelo DS Lite, ya que preferia ahorrarme los 30 euros más que costaba la DSi, y practicamente todo el mundo dice que la unica diferencia es su camara de fotos -camara que no quiero. De todos los colores, la clásica blanca; aunque si hubiera habido el modelo rojo ...

Cartucho flash M3 i Zero, del equipo M3 (o M3 team). No sabía si decantarme por este o por R4 Revolution, y a pesar de que una amiga tenía esta última, elegí la primera. Quizás porque en algunos sitios se ha leido que la producción de la R4 esta parada, y las referencias para la M3 siempre han sido muy buenas.

Comprado el cartucho M3 i Zero + una tarjeta MicroSD de 8 gigas en tuconsola.com por 42,90 euros. Todos los precios por la red andaban similares, y me resulto un site muy atractivo y el tener una tienda física en Madrid me dio bastante seguridad.
Aprovechando los gastos de envío, tambien me adjudique una funda de cuero blanca por 4,50 euros.

El envío desde tuconsola.com fue a través de NATEX y muy puntual a pesar de las fiestas navideñas por el medio. Notar que mi dirección de correos no es facil encontrarla - es lo que tiene vivir en un pueblo asturiano - y NATEX estuvo muy atento por telefono para que pudiera recibir el paquete. En el registro de tuconsola.com te piden el telefono movil: yo recomiendo darlo ya que sirvió de mucho para el mensajero y sms informativos del estado de mi pedido.

Y por último la instalación de todo para poder funcionar con la consola a pleno rendimiento fue acudir a NEXUS. Tan sólo seguí el facil manual de esta dirección y todo fue como la seda.
Pero así en resumen:

  • Formatear la tarjeta microSD a traves del adaptador tipico para el PC
  • Descargarse los archivos del instalador de NEXUS
  • Ejecutar el .exe
  • Indicar la ruta de la tarjeta SD
  • Instalar
  • Tardara un par de minutos
  • Cuando termine se abrira un bloc de notas con información muy útil. QUE HAY QUE LEER

  • Cargamos los archivos que queramos de nuestro PC a la tarjeta SD (los .nds en la carpeta NDS, ahí a granel tirados entre todos los demás)
  • Extraemos la tarjeta SD (de forma segura) de nuestro PC

  • Introducimos la microSD en el cartucho M3 i Zero
  • Cogemos el adaptador USB que viene con el cartucho, lo enchufamos al PC y al mismo cartucho DE ESTA FORMA, y teniendo mucho cuidado ya que es muy fragil
  • Sin hacer nada mas esperamos a que la luz roja en el cartucho deje de parpadear - seran unos 40 segundos.

  • Retiramos del PC y retiramos el adaptador USB
  • Cogemos nuestro cartucho M3 i Zero con su mmicroSD dentro y lo introducimos en nuestra Nintendo DS
  • Encendemos la consola
  • Y nos aparecera un sencillisimo menu para funcionar con los archivos de la tarjeta

Y listo!

Cómo recorrer un HashMap en Java

De la mano de Jorge de La Coruña, recopilo la forma mas prática de recorrer un HashMap aplicado a mi caso particular, donde pretendo llevar un contador de todos los productos que hay en el carrito de la compra.
El HashMap es de la forma (código del item, cantidad):

HashMap hashMap = new HashMap();

hashMap.put("1","5");
hashMap.put("2","5");
hashMap.put("3","2");

int cantidad = 0;

Iterator it = hashMap.entrySet().iterator();
while (it.hasNext()) {
Map.Entry e = (Map.Entry)it.next();
cantidad += (Integer) e.getValue();
}

Es una buena forma de tenerlo apuntado en algun sitio, para cuando se me olvide ;)

domingo, 27 de diciembre de 2009

Estructuras de control en Struts 2: un ejemplo sencillo

Una forma sencilla de ver el funcionamiento de una estructura de control con Struts 2 es el caso del Gestor de usuarios para aquellos que tienen permisos de administrador o no.

En la mini aplicación que estoy desarrollando he dividido a los usuarios o jugadores en dos tipos, Administrador e Invitado a través de un atributo en la base de datos del tipo "admin" o "invitado".

La diferencia entre ser administrador o invitado es que el primero puede acceder al gestor de jugadores, y con ello añadir, editar o eliminar usuarios; mientras que un usuario con permiso de Invitado no podrá.

El gestor se muestra a través de un simple botón.

Dos posibles soluciones

Encontre dos formas de implementarlo.
La primera consistía en, a través de una clase action identificar el permiso del usuario actual y dependiendo de este atributo mostrar un PANELCONTROL1.jsp o un PANELCONTROL2.jsp, correspondiendo estos a cada uno de los dos tipos de perfil. El primero no mostraría el boton "Gestor de usuarios" y el segundo sí lo mostraría.

En mi opinión esta solución, a pesar de funcionar, parecía poco limpia ya que estabamos creando dos paginas jsp identicas salvo una opción. Sería código redundante.

Por lo tanto eche mano de las estructuras de control que tiene Struts 2, y las utilice en la unica panelContro.jsp de la siguiente forma:


<table>

<thead><h3>Panel de control</h3></thead>

<tr>

<td>

<s:form action="ConsultaMiis">

<s:submit value="Gestor de Miis"/>

</s:form>

</td>

</tr>

<s:if test="%{perfil.permiso=='admin'}">

<tr>

<td>

<s:form action="ConsultaJugadores">

<s:submit value="Gestor de perfiles de jugador"/>

</s:form>

</td>

</tr>

</s:if>

</table>


De esta forma solo se mostrará el boton cuando el permiso del usuario sea de administrador.

Notas finales

El guión de la entrega final indica que no deberemos introducio codigo en las jsp, y aunque esta ultima solucion así lo parezca, una estructura de control de Struts no deberia considerarse codigo del todo.
De todas formas, espero encontrar una mejor forma de implementar esta opcion ya que parece poco robusta.

La importancia de ActionSupport en Java con Struts 2

Hasta ahora siempre he utilizado una clase que heredaba de ActionSupport para tratar la action que lanzabamos desde la JSP - mas que nada porque así me habían enseñado en las clases prácticas - pero ha sido hoy cuando he entendido el verdadero significado de hacer esto, y sobretodo, lo importante que resulta.

Tenemos una pagina index.jsp con dos formularios de Struts 2 para recoger el login y el password del usuario.
Cuando hacemos click sobre el boton Acceder, se lanza la action correspondiente, es decir, aquella que le indiquemos a traves del TAG de Struts ACTION:

<html>

<body>

<h3>Acceso al perfil de jugador</h3>

<p>Introduzca su usuario y contraseña:</p>

<s:form action="Login">

<s:textfield key="login" label="Login de jugador: " />

<s:password key="password" label="Contraseña: " />

<s:submit value="Acceder"/>

</s:form>

</body>

</html>

en este caso, la ACTION se llama LOGIN.

En nuestra aplicación deberemos tener un fichero struts.xml en nuestra carpeta de codigo fuente que contendra un mapeo de las acciones. Esto quiere decir que cuando el ACTION del codigo de la JSP sea LOGIN, se ha de proceder de la manera X.

En el ejemplo que seguimos, en nuestro struts.xml deberiamos tener:

<action name="Login" class="com.dasdi.presentation.login.LoginAction">

<result name="success" >/panelControl.jsp</result>

</action>

que traducido así de forma mas "llana" viene a ser que cuando el action sea LOGIN ejecutes el codigo de la clase LOGINACTION. Si el resultado del método execute es SUCCESS, muestra la página panelControl.jsp.

¿Y qué hace la clase LoginAction?, ¿Y cual es el metodo execute? ¿Y si no devuelve SUCCESS que hara?

Pues bien, toda navegacion de una pagina a otra en nuestra aplicacion debera tener asociado una clase java que se ejecute con los action; salvo aquellos casos básicos, por ejemplo cuando damos de alta un usuario, solo necesitamos que se muestre un formulario, por lo que no hara falta una clase action relacionada con el proceso.
Pero en el ejemplo que estamos tratando, el loguearse obliga a ejecutar un codigo, es decir, buscar en la base de datos el nombre de usuario y contraseña introducidos y ver que coinciden. Estas comprobaciones se hacen a traves de las capas de negocio y persistencia, con sus respectivos facades, por lo tanto deberemos relacionar nuestras JSP con las diferentes capas de la aplicacion.

LoginAction recogera de los campos de la JSP el login y la contraseña y se los pasara a la capa de negocio a traves de su facade. Esta fachada debera devolver una confirmacion de que el logueo es correcto o no.
En codigo seria:

public class LoginAction extends ActionSupport implements SessionAware{



private String login;

private String password;

private Jugador perfil;

private Map<String, Object> session;



public String execute() throws Exception {

JugadoresService service;

try {

service = Factories.services.createJugadoresService();

this.perfil = service.verifyLogin(login, password);

this.session.put("perfil", perfil);

return SUCCESS;



} catch( Exception e ) {

e.printStackTrace();



return LOGIN;

}

/*añadir metodos get y set para cada atributo*/

}

  1. El service sera una referencia a la fachada de la capa de negocio.
  2. A traves de esta referencia pediremos la confirmacion de un logueo correcto.
  3. Si no es correcto recibira una excepcion, por lo que se devolvera ERROR
  4. Si todo fue bien, colocamos el nuevo usuario (o jugador, o perfil) en la sesion de la aplicacion.

¿Por qué todo esto es importante?

Pues bien, si intentaramos volver atras desde cualquier pagina JSP de nuestra aplicación a otra JSP sin lanzar la ejecución de un clase ACTION, no habría forma de relacionarse con el resto de capas, y por lo tanto con los datos, tanto de la sesion como de la persistencia (base de datos).

Un ejemplo es el panel de control.

Esto es lo que muestra panelControl.jsp, donde se indica el nombre del usuario de la sesion, en este caso ADMINISTRADOR.

¿Cómo se obtuvo este dato? - Pues utilizando PanelControlAction, el cual recoge de la sesión el Jugador, llamandolo "perfil" y lo asigna como uno de sus atributos. De esta forma, cuando panelControl.jsp devuelve el código HTML, la etiqueta de "Perfil:" mostrara el nombre del jugador que inicio la sesión.

Esto en código sería:

  • panelControl.jsp

<h3>Perfil: <s:label value="%{perfil.nombre}"/></h3>


  • PanelControlAction.java

public class PanelControlAction extends ActionSupport implements SessionAware{



private Map<String, Object> session;

private Jugador perfil;



public String execute()throws Exception{

try{

this.perfil = (Jugador)session.get("perfil");



return SUCCESS;

}

catch(Exception e){

e.printStackTrace();

return ERROR;

}

}

/*mas get y set de los atributos*/

}


  • struts.xml

<action name="Login" class="com.dasdi.presentation.login.LoginAction">

<result name="success" type="chain">PanelControl</result>

</action>



<action name="PanelControl" class="com.dasdi.presentation.PanelControlAction">

<result name="success">/panelControl.jsp</result>

</action>



Sin utilizar el PanelControlAction.java, es decir, redirigiendo directamente a panelControl.jsp, no podríamos mostrar siempre el nombre del perfil, ya que nunca se obtendría de la sesion.

He aquí la importancia de añadir estos detalles.

lunes, 21 de diciembre de 2009

Struts 2: añadir selector a través de jsp y actions

Seguimos con la entrega de DASDI.
Ésta vez queremos añadir un selector con Struts, lo que en java se conoce como JComboBox y en forms de windows Select.

Tenemos un formulario en JSP para recoger los datos de un nuevo Mii, y en concreto, el dato sexo queremos que sea un ComboBox. El archivo JSP se llama formularioMii.jsp y el código con los formularios de struts es el siguiente:


<s:form action="SaveMii">

<s:textfield name="nombre" label="Nombre: " value="%{mii.nombre}"/>

<s:select name="sexo" label="Sexo: " list="#{'Hombre':'Hombre','Mujer':'Mujer'}" value="%{mii.sexo}"/>

<s:textfield name="estatura" label="Estatura: " value="%{mii.estatura}"/>

<s:textfield name="peso" label="Peso: " value="%{mii.peso}"/>

<s:textfield name="pelo" label="Pelo: " value="%{mii.pelo}"/>

<s:textfield name="ojos" label="Ojos: " value="%{mii.ojos}"/>

<s:textfield name="color" label="Color favorito: " value="%{mii.color}"/>

<s:hidden name="id" value="%{mii.id}"/>

<s:submit value="Aceptar" />

</s:form>



En el texto resaltado se puede ver como agregar un selector. Es interesante detallar la declaración del atributo list:
list="#{cod_item1 : texto_item1, cod_item2 : texto_item2}"
En la mayoria de ejemplos en internet el cod_item suele ser un número entero de manera que se pueda controlar en la capa de negocio. Para el caso en particular que quiero tratar aquí, no me hace falta utilizar un código entero, sino que prefiero utilizar un código de texto o String para que se transmita de capa a capa siendo un String, hasta llegar a la capa de persistencia y se agregue tal cual a la base de datos.

Este código de formularioMii.jsp no sólo sirve para dar un alta a un Mii, sino tambien para mostrar la edición de uno de estos. Es por eso que a cada formulario se le asigna un value, de forma que cuando se trate de un alta aparecerá vacío, y cuando sea una edición se mostrará el valor del Mii en cuestión.

Existe otra forma más compleja de utilizar el selector, pero que explicaré más adelante, si la llego a utilizar. Como adelante, implicaría que el atributo sexo en la base de datos fuera de tipo entero, crearíamos una nueva clase en la capa de modelo llamada SexoMii, y el selector tendría un cod_item como valor numérico. Esto puede llegar a ser muy útil en futuras implementaciónes más complejas.

Sintaxis SQL en HSQL Database Manager

Para la asignatura de DASDI, se nos ha proporcionado una SGBD integrado en cada proyecto llamado HSQL Database Manager.

NOTA: Un buen tutorial donde se explica un poco este gestor.

Hasta ahora he trabajado con MySql, SqlDeveloper para Oracle y es la primera vez que trabajo con este, por lo que estoy notando ciertas diferencias.


Lo que más me está llamando la atención es que existen diversas sintaxis para cada gestor y, si tenemos en cuenta que soy bastante nueva en el manejo de las bases de datos, pues mi desconcierto es mayor.

He empezado a realizar la entrega final partiendo como base de un ejemplo dado en clase, el cual tiene una base de datos ya elaborada sobre una gestión de alumnos. A medida que avanzo me veo en la necesidad de modificar ciertos valores, atributos, propiedades, varias cosas en general; y, como no, voy encontrando diversos problemas con algunas sentencias que no funcionaban para HSQL.
Tras varias pruebas y busquedas por internet las he ido encontrado y como va a ser tan probable que las vuelva a necesitar como que las olvide, pues las voy a ir recogiendo en este post:

- Cambiar el nombre a una columna o propiedad de una tabla
ALTER TABLE alumno ALTER apellidos RENAME TO sexo

- Modificar una propiedad para que no pueda ser null
ALTER TABLE mii ALTER id INTEGER NOT NULL

- Modificar un dato
UPDATE alumno SET peso='gordo' WHERE id='2''

- Añadir nueva columna o propiedad a una tabla
ALTER TABLE alumno ADD pelo VARCHAR(20)

- Renombrar una tabla
ALTER TABLE alumno RENAME TO mii

- Cambiar el tipo de una columna o propiedad
ALTER TABLE mii ALTER sexo INTEGER

- Crear una tabla con atributo auto incremento
CREATE TABLE jugador (id_jugador INTEGER NOT NULL IDENTITY, login VARCHAR NOT NULL, password VARCHAR NOT NULL, nombre VARCHAR)

- Añadir atributo auto incremento a una propiedad
ALTER TABLE jugador ALTER id_jugador INTEGER NOT NULL IDENTITY

- Insertar un dato en una tabla
INSERT INTO jugador (login, password, nombre) VALUES ('admin', 'password', 'Administrador')

- Eliminar clave primaria de una tabla
ALTER TABLE jugador DROP PRIMARY KEY

- Añadir una clave unica a una tabla
ALTER TABLE jugador ADD UNIQUE(login)

- Añadir clave externa a una tabla
ALTER TABLE mii ADD FOREIGN KEY(id_jugador) REFERENCES jugador(id_jugador)

- Añadir un atributo fecha a una tabla
ALTER TABLE jugador ADD COLUMN lastvisita DATE

- Modificar el tipo de atributo fecha con hora
ALTER TABLE jugador ALTER lastvisita DATETIME

- Añadir una entrada con la fecha actual
UPDATE jugador SET lastvisita=curdate() where id_jugador='0'

- Añadir una entrada con fecha y hora actual
UPDATE jugador SET lastvisita=now() where id_jugador='0'

domingo, 20 de diciembre de 2009

JEvents - Calendario para Joomla

He descubierto un componente para Joomla super potente: JEvents.



Consiste en un sistema completo de agenda con navegación por calendario, muy parecido a Google Calendar. No solo te permite manejar los eventos, sino tambien permitir que otros usuarios editen o creen nuevos eventos a través de un sistema de permisos.

Para lo que yo buscaba un componente de estos, JEvents puede parecer muy grande y complejo, pero nada mas lejos de la realidad ya que es muy facil de modificar.
Tan solo buscaba un modulo donde se mostrara un mes con sistema de navegación de mes a mes y año a año y se visualizaran los días de dicho mes. A cambio he conseguido que cada evento programado se muestre como un tooltip al pasar el raton por la fecha; he conseguido tener una agenda donde se puede organizar a gusto del navegante, por dia, semana, mes, año; y todo ello de forma muy dinámica.

INSTALACIÓN
Para instalar JEvents se necesita:
1.- El componente JEvents, cuya versión mas reciente ahora mismo es 1.5.2. Este componente se instala a través del instalador de Joomla.

2.- El módulo JEvents, cuya versión más reciente ahora mismo es también la 1.5.2. Este módulo utiliza el componente de JEvents y crea un mini calendario para ubicarlo en la posición que se prefiera. Existen muchos más módulos para utilizar JEvents, como Latest Events, etc.


3.- Paquete de traducción español. Se instala del mismo modo, a través del instalador de Joomla, e inmediatamente el componente JEvents reconocerá el nuevo lenguaje y lo aplicará. No tendremos que modificar nada.

DETALLES MODIFICABLES
- Se puede modificar la apariencia, tanto del mini calendario como de la agenda en general a través de Componentes->JEvents->Configuración->Pestaña componente->Elegir visualización.
El código fuente de estas plantillas se encuentra en el directorio de nuestra web en components->com_jevents->views.
Cada plantilla esta dividida en las secciones que componen JEvents.

La más destacada es la sección ASSETS donde se encuentran las css para modificar tanto el mini calendario (archivo modstyles.css) como la agenda completa (events_css). El resto apenas necesita modificación, a excepción de casos especiales.


JEvents es un GRAN componente para Joomla y la utilización de una agenda muy completa, o un simple calendario con algunos eventos importantes. Apariencia fresca, fácil manejo, y un componente muy potente.
Recomendadísimo.

sábado, 19 de diciembre de 2009

Avatar


Espero que si aún no la has visto, tengas reservado un día para ir a verla.

Yo he escogido la tarde de hoy, lo cierto que sin prisa y sin terribles ansias. Simplemente sabía que la tendría que ver.

Quizás por su director, James Cameron, el mismo que me hizo llorar y llorar con Titanic hace más de 10 años - dios mío como pasa el tiempo - paralizando un pais de adolescentes y no tan adolescentes. Pues creo que volverá a paralizarlo, sino lo ha hecho ya, con Avatar.

Pues me ha encantado.
Han sido dos horas y media largas donde no he sentido la presencia del paso del tiempo, ninguno que no fuera el que indicaba la película. He deseado no irme de Pandora, quería seguir corriendo por el bosque del arbol madre, quería seguir volando entre las montañas flotantes, quería seguir sintiendo la mezcla de tensión, emoción, paz, y sobretodo libertad.

No recuerdo ningún momento en el que haya deseado tanto no ser de la raza humana sino de otra, tan distinta pero tan igual a la nuestra.

Creo que lo bueno de Avatar no son sus efectos especiales, menos impactantes que 2012; ni su guión, el cual sigue las pautas de una película tradicional; sino mas bien esa sensación que describo, esa sensación y sentimiento de revivir una y otra vez ese mundo, compartirlo y estar dentro.

Normalmente en el trascurso de un film sueles simpatizar con algun personaje, algunas veces con el protagonista, otras veces con el "malo de la peli", incluso en ocasiones desear ponerte en la piel de ese personaje. Con Avatar, lo que consigue James Cameron es que no te importe quien de todos ellos seas, si con eso puedes vivir ese mundo.

Seguramente aparezcan muchas críticas a la película estos días, buenas y malas, pero yo me quedo con una buena, y la recomiendo encarecidamente.

El señor de los anillos y Star Wars son sagas que han triunfado y siguen triunfando años despues de sus estrenos, y que entorno a ellas se forman verdaderas comunidades. Es muy pronto para decir que Avatar puede seguir su estela, pero yo lo espero con ansias. Así como me encantan esas sagas, se que harán secuelas en el mundo de Pandora, y espero que sean grandes, para volverme fanática de ellas también.

Por lo pronto, cuando pasen unos días volvere a ir al cine, y esa vez será en una sala Imax a probar como se verá en 3D.
Hasta entonces, seguiré empapandome de los trailers que no ví, de su banda sonora con la firma del increible James Horner, y de tantas cosas que empieza a haber por la red.

Espero que hoy sea un comienzo de algo grande mañana ...

martes, 15 de diciembre de 2009

El Castillo Ambulante



Ayer volví a ver El Castillo Ambulante de Hayao Miyazaki.

Me encanta.

Descubrí a este director/escritor a través de El viaje de Chihiro, y me gusto mucho la esencia y lo diferente de la película. Fue tal el buen sabor de boca que me dejo que no dude en conseguir el resto de la filmografía:

- El viaje de Chihiro
- La princesa Mononoke
- El castillo ambulante
- Ponyo, en el acantilado
- Nausicaa, en el valle del viento
- Mi vecino Totoro
- El castillo en el aire
- Nicky, la aprendiz de bruja
- Porco rosso

Alguna ha sido mejor que otra, pero todas han tenido esa 'magia' que te atrapa desde las primeras imágenes. Son películas que consiguen despertar la imaginación; te presentan un mundo distinto sin necesidad de describirlo; hacen posible lo imposible logrando que parezca algo natural; y sobretodo, te sorprenden, te pillan desprevenida y destruyen todas las suposiciones haciendo que lo que creías predecible no tenga sentido, y aquello inesperado se haga realidad pareciendo lógico y natural. Consiguen intrigar, emocionar, reir, ...

El Castillo Ambulante está basado en una historia de Diana Wynnes Jones.


Mi recomendación es que sin conocer nada absolutamente de su historia, la veas, tranquilamente en el sofa de tu casa, sin prisa y con la mente despierta.

Flash back

Hay veces que sin quererlo, me repito un comentario que oí una vez a un hombre, el cual confesaba que 'era incapaz de no tener más de un proyecto entre manos'.

Como comentaba en un post anterior, estoy desarrollando una mini aplicación web para la asignatura de DASDI (Desarrollo de aplicaciones en sistemas distribuidos e Internet).
Es una asignatura optativa de 6 créditos. La evaluación consiste en la entrega de una práctica final con una serie de caracteristicas, pero de temática libre. Aún no es definitivo el tema que elegiré, aunque más o menos ya la tengo encaminada.


Mientras me peleo con JBoss y Struts, estoy realizando el proyecto fin de carrera sobre Twitter. En realidad es un proyecto de investigación, algo muy diferente a lo que llevo viendo hasta ahora, donde todo lo desarrollado han sido aplicaciones de escritorio.
A pesar de ya llevar un par de meses investigando con el API de Twitter aún no tengo claro el objetivo final del proyecto. En los próximos días he de ir especificando los requisitos de la futura aplicación e intentando fijar esos objetivos y funcionalidades. Ahora mismo es bastante abstracto lo que tengo, y sinceramente, me preocupa, pero sobretodo me desilusiona.
Espero que mas adelante, cuando vaya cogiendo forma el PFC, quizas me anime y 'me motive'.

Para el proyecto, mi director me ha recomendado escribir en un blog de seguimiento los avances, dudas y todo lo que me vaya surgiendo. Lo uso sobretodo de diario, para recordar entre parón y parón lo que hice la última vez que lo toque.

Durante estas vacaciones de navidad, estaré alternando entre la práctica de DASDI y el proyecto, de modo que auguro muchas, muchas horas al ordenador ...

Temática para aplicación web

Esta mañana habían colgado en la web de la asignatura el guión de la práctica final de DASDI.
No hay muchas diferencias con el guión del año pasado, salvo un par de detalles. Lo importante es que sigue siendo de temática libre y en esto no estaba yo hoy muy imaginativa.

Básicamente se trata de implementar una aplicación web con Struts 2 que siga el modelo N-capas y el patrón Facade. Ha de contar con autentificación de usuarios, contador de visitas, carrito de la compra y mínimo un formulario por vista.

Pensando y pensando, me apetece hacer algo diferente al clásico carrito de la compra de cualquier tienda virtual.
He pensado implementar una especie de 'personalizacion de personajes': el usuario cargara su perfil de jugador, estilo PS3 (autentificación) y con una serie de vistas, dicho jugador o usuario podrá ir seleccionando distintos atributos, objetos, caracteristicas de un personaje y estos se vayan cargando sobre el personaje final (carrito de la compra).
En todo momento el jugador podrá examinar el aspecto de su personaje (ver carrito) y una vez acabada la configuración, tendrá la opción de guardar el estado del personaje (persistencia).

He de pensar una forma original de adaptar el contador de visitas, para no agregarlo así tal cual. Además, aún quedan un par de prácticas con nuevos conceptos, y es posible que intente añadirlos, pero de momento yo creo que la idea original basta para empezar a programar.

Con suerte, debería de tenerlo acabado para la vuelta de navidades, para una aprobación de los profesores antes de la entrega, no vaya a ser que para nada tenga que ver con lo que piden xD

Comenzando ...

Parece ser que cuando una más tiene que hacer, más tiempo pierde en insignificancias.
Por lo pronto, aquí estoy yo, creando un blog en Blogger.com cuando debería estar programando.

De todas formas, me apetece aprovechar un recurso gratuito como es este, y tener un 'otro rinconcito' donde contar cosas de vez en cuando.

¿La culpable?, pues Isa y el pequeño desastre que origina.

Siempre he tenido en mente un blog, pero reconozco que nunca acabo de encontrar el tiempo para dedicarselo. Tengo algunos proyectos por ahi perdidos, abandonados a la espera de que algun día les eche un vistazo y los reflote.

Lo mío es mas navegar en silencio.

Pero intentaré no abandonar esto, y de momento, vamos a 'charigar' por la configuración y explotar un poco el diseño y estructura del blog.

Vamos a ello ...

* Ahps! Se me olvidaba: gracias por leerme ;)