Bienvenida

Como todo en la vida, la innovación es la clave del éxito por lo que nos hemos visto en la necesidad de "evolucionar" este blog para abarcar muchos otros temas que estaban quedando de lado en nuestros cursos "oficiales".

Si deseas aprender o profundizar algunos temas en particular, no dudes en contactarnos.


viernes, 28 de octubre de 2011

Entendiendo JPA en pocos pasos ...


Aquí les dejo un resumen bastante 

ilustrativo de como entender el paso de las tecnologías como JDBC e Ibatis a un modelo de Objetos con JPA.



La verdad que el plasmar el  gráfico y la explicación de esa manera no se me habían ocurrido antes, pero más vale tarde que nunca. Y aqui va:





Punto #1:
JPA = Java Persistence API, es una especificación Java basada en el JSR 220.

Al ser una especificación, tiene implementaciones, siendo las más comúnmente utilizadas: EclipseLink (cuyo core se basa en Toplink), Hibernate y OpenJPA.



Punto #2:
En nuestros cursos tradicionales de Base de Datos, aprendimos que una base de datos está compuesta por tablas, las cuales tiene filas (rows) y columnas (fields) y que el modelo actualmente utilizado es el modelo Relacional (RDBMS) que usualmente se modela e implementa utilizando las 3 primeras formas normales ( recordar que hay una 4ta y 5ta forma normal pero que no se utilizan con mucha frecuencia ).




Punto #3:
Cuando pasamos a un modelo OR-M ( object Relational - Mapping ) significa que nuestra fuente de datos está en el modelo relacional, pero la lógica de nuestra aplicación maneja Objetos ( en este caso objetos Java ) y que por tanto, utilizamos una implementación de la API JPA para ello (cualquiera de las tres mencionadas al inicio).


Dos cosas nos diferencian en este esquema:
1) El modelo Relacional usa SQL --> Tablas
2) El modelo de Objetos usa JP-QL --> Entidades


Tambien, hay dos entornos bien definidos:
1) Las tablas viven dentro de una base de datos ( y esta a su vez dentro de un manejador de base de datos RDBMS)
2) Las entidades viven dentro de un "Entity Manager" (que es similar a un SqlClientMap de Ibatis ).


Punto #4
Es así que una "Entidad" JPA equivale a dos cosas:
1)  A la definición de una clase Java que sigue las reglas de los JavaBeans: implementa Serializable, constructor por defecto y getters/setters.
2) Al momento de instanciar una Entidad (clase), dicha instancia (objeto) equivale a un registro en la Tabla relacional.


Entonces, ¿ cómo convierto un JavaBean en Entidad ? ... Fácil, le agregamos dos anotaciones :@Entity y @Id
Recordar que toda entidad JPA debe tener un ID único.

Según el gráfico, JPA interpreta que:
1) La entidad se llama igual que la clase.
2) La Tabla en la base de datos se llama igual que la clase.


Si queremos hacer cambios, podemos usar:
@Entity (name="nombre-entidad" )
@Table (name="nombre tabla")

Punto #5
Además, necesitamos registrar la Entidad en el archivo "persistence.xml".
Ahora bien, si no queremos utilizar anotaciones, tendremos que escribir el XML del archivo "orm.xml" (que me parece más tedioso ).




El archivo persistence.xml contiene la definición de la "Persistence Unit" a partir de la cual se genera un "Entity Manager". La explicación será materia de un siguiente post.

Hasta aqui, creo que es bastante sencillo. La parte más "complicada" son las relationships entre entidades que veremos en un siguiente post.

No te olvides de dejar un comentario. ¡ Gracias !

miércoles, 19 de octubre de 2011

Struts 2 y Validaciones ( Parte II )

En este post presentamos un gráfico explicativo del funcionamiento de las validaciones en el framework de Struts2.

La validación depende dos interceptores que existen en el default stack:
  • Interceptor  “validation” que ejecuta la validación en sí misma (sea manual, xml, custom o anotaciones) y crea una lista de errores para cada campo específico.
  • Interceptor “workflow” que verifica la presencia de errores de validación. Si existen, retorna el resultado “input” (por default). Si no hay resultado “input” definido, se lanza un error.
Luego el control sigue por el  Interceptor “Prepare” el cual ejecuta un método llamado "prepare()"  (si es que se ha definido dentro de nuestro Action java). El método "prepare()" se ejecuta antes de invocar al método “execute()”.




Tambien una aclaración al ejemplo de validación de fechas: Para que obligue a poner una fecha y a la vez valide que la fecha esté dentro del rango, el archivo XML debe tener lo siguiente:

    <field name="birthDate">
        <field-validator type="requiredstring">
              <message key="Debe ingresar una fecha" />
         </field-validator>
        
        <field-validator type="date">
            <param name="min">01/01/1900</param>
            <param name="max">31/12/2012</param>
            <message> La fecha debe estar entre 1900 y el 2012</message>
        </field-validator>
    </field> 

No te olvides de dejar un comentario.

domingo, 16 de octubre de 2011

Lima Hack 2011 - Con el auspicio de la UPC


LimaHack es un evento organizado por especialistas en seguridad informática, con la finalidad contribuir al crecimiento de la cultura de seguridad informática en el país y colaborar en la formación de profesionales en la materia.


A diferencia de los eventos realizados anteriormente en Lima, LimaHack es netamente técnico, muestra la seguridad desde la perspectiva del atacante, se realizará con demostraciones en vivo.


El evento es gratuito. Pueden encontrar mayor  información en el sitio web.

país y colaborar en la formación de profesionales en la materia.

A diferencia de los eventos realizados anteriormente en Lima, LimaHack es netamente técnico, muestra la seguridad desde la perspectiva del atacante, se realizará con demostraciones en vivo.

ISIT 2011


2nd International Symposium on Innovation and Technology


ISIT 2011

November 28-30, 2011, Lima - PERÚ

Costo para peruanos S/. 100 nuevos soles.
Para información y registro ir al Sitio web

viernes, 14 de octubre de 2011

NoSQL Databases



Hasta que por fin ... Oracle sale al mercado con una base de datos NoSQL: "Oracle NoSQL Database"  para hacerle competencia a las ya existentes como: MongoDB y CouchDB o Voldemort y BigData entre otras.

Lamentablemente, la versión "Community Edition" Open Source aun no está disponible. Estaremos atentos.

jQuery Plugin con Google Code


El objetivo de esta sesión fue repasar Struts2, DAO's y JDBC (Recuerda que ya dejaremos de usar JDBC para entrar de lleno a JPA), además de analizar como funciona la "grid" de éste plugin. 

Si gustas lo pruebas con Tomcat o con WAS ( igual va a funcionar ).

En esta sesión, por fin nos entregaron los manuales del curso, sin embargo éste tema no está dentro del manual porque considera el ejemplo de la "grid" muy similar a jMesa o a DisplayTag ( acuerdate de LP-II ). 

El objetivo es consultar una tabla ( "Person" ) y mostrar los datos dentro de una "grilla": 
  • Aquí está el material en formato PDF correspondiente a las páginas JSP.
  • Descarga la aplicación base aquí. En esta aplicación funciona el ejemplo 1 completamente ( no te olvides de incluir el driver de MySQL en el folder lib del proyecto o en el classptah de tu servidor Tomcat ... sino, te dará un error. 
  • Descarga el esquema de la base de datos MySQL aquí. La base de datos se llama "quickstart" y sólo tiene una tabla "person". 

Como tarea completa las otras 3 opciones del proyecto. Analiza cuidadosamente como los tags dela página JSP envían datos al Action y este a su vez los pasa al DAO.

Por favor ... deja un comentario. ¡ Gracias !


miércoles, 12 de octubre de 2011

Proyecto 2011-II


Aquí dejo el documento con los requerimientos del proyecto final del curso para que lo vayan analizando.

Como estamos en la eliminatorias del mundial para el 2014, el proyecto está relacionado a esto ( así le ponen más empeño y dedicación ).

Deberá implementarse con JPA y JSF. Ante cualquier duda o consulta, por favor coloquen un comentario.

¡ Suerte !

lunes, 10 de octubre de 2011

Nuevo ciclo 2011-II

Bienvenida


Bienvenidos a una nueva edición del curso "Desarrollo de Aplicaciones Web II".

Los aspectos introductorios del curso los pueden ver en este enlace.

A partir de esta edición, los comentarios deben tener autor ( no se aceptan anónimos ). El blog está enlazado tambien con Facebook. Se ruega participación tanto en los comentarios como en las encuestas y demás opciones del curso.

¡ Saludos !

SegurInfo 2011




XVII Congreso y Feria Interamericana de Seguridad de la Información.

Para registrarse en el evento ir al siguiente enlace  

domingo, 9 de octubre de 2011

Traducción del discurso de Steve Jobs (Parte III)


La tercera historia es sobre la muerte

Cuando tenía 17 años, leí una cita que decía algo parecido a “Si vives cada día como si fuera el último, es muy probable que algún día hagas lo correcto”. A mí me impresionó y desde entonces, durante los últimos 33 años, me miro al espejo todas las mañanas y me pregunto: “Si hoy fuera en último día de mi vida, ¿querría hacer lo que estoy a punto de hacer hoy?” Y cada vez que la respuesta ha sido “No” por varios días seguidos, sé que necesito cambiar algo.

Recordar que moriré pronto constituye la herramienta más importante que he encontrado para ayudarme a decidir las grandes elecciones de mi vida. Porque casi todo –todas las expectativas externas, todo el orgullo, todo el temor a la vergüenza o al fracaso – todo eso desaparece a las puertas de la muerte, quedando solamente aquello que es realmente importante. Recordar que van a morir es la mejor manera que conozco para evitar la trampa de pensar que tienen algo que perder. Ya están desnudos. No hay ninguna razón para no seguir a su corazón.

Casi un año atrás me diagnosticaron cáncer. Me hicieron un scanner a las 7:30 de la mañana y claramente mostraba un tumor en el páncreas. Yo ni sabía lo que era el páncreas. Los doctores me dijeron que era muy probable que fuera un tipo de cáncer incurable y que mis expectativas de vida no superarían los tres a seis meses. Mi doctor me aconsejó irme a casa y arreglar mis asuntos, que es el código médico para prepararte para la muerte. Significa intentar decirle a tus hijos todo lo que pensabas decirles en los próximos 10 años, decirlo en unos pocos meses. Significa asegurarte que todo esté finiquitado de modo que sea lo más sencillo posible para tu familia. Significa despedirte.

Viví con ese diagnóstico todo el día. Luego al atardecer me hicieron una biopsia en que introdujeron un endoscopio por mi garganta, a través del estómago y mis intestinos, pincharon con una aguja mi páncreas y extrajeron unas pocas células del tumor. Estaba sedado, pero mi esposa, que estaba allí, me contó que cuando examinaron las células en el microscopio, los doctores empezaron a llorar porque descubrieron que era una forma muy rara de cáncer pancreático, curable con cirugía. Me operaron y ahora estoy bien. Fue lo más cercano que he estado a la muerte y espero que sea lo más cercano por unas cuantas décadas más. Al haber vivido esa experiencia, puedo contarla con un poco más de certeza que cuando la muerte era un útil pero puramente intelectual concepto: Nadie quiere morir. 

Incluso la gente que quiere ir al cielo, no quiere morir para llegar allá. La muerte es el destino que todos compartimos. Nadie ha escapado de ella. Y es como debe ser porque la Muerte es muy probable que sea la mejor invención de la Vida. Es el agente de cambio de la Vida. Elimina lo viejo para dejar paso a lo nuevo. Ahora mismo, ustedes son lo nuevo, pero algún día, no muy lejano, gradualmente ustedes serán viejos y serán eliminados. Lamento ser tan trágico, pero es muy cierto. Su tiempo tiene límite, así que no lo pierdan viviendo la vida de otra persona. No se dejen atrapar por dogmas – es decir, vivir con los resultados del pensamiento de otras personas. No permitan que el ruido de las opiniones ajenas silencien su propia voz interior. Y más importante todavía, tengan el valor de seguir su corazón e intuición, que de alguna manera ya saben lo que realmente quieren llegar a ser. Todo lo demás es secundario.

Cuando era joven, había una asombrosa publicación llamada The Whole Earth Catalog, que era una de las biblias de mi generación. Fue creada por un tipo llamado Steward Brand no muy lejos de aquí en Menlo Park, y la creó con un toque poético. Fue a fines de los 60, antes de las computadoras personales y de la edición mediante microcomputadoras, por lo tanto, en su totalidad estaba editada usando máquinas de escribir, tijeras y cámaras polaroid. Era un tipo de Google en formato de edición económica, 35 años antes de que apareciera Google: era idealista y rebosante de hermosas herramientas y grandes conceptos.

Steward y su equipo publicaron varias ediciones del The Whole Earth Catalog, y luego cuando seguía su curso normal, publicaron la última edición. Fue a mediados de los 70 y yo tenía la edad de ustedes. En la tapa trasera de la última edición, había una fotografía de una carretera en el campo temprano en la mañana, similar a una en que estarían haciendo dedo si fueran así de aventureros. Debajo de la foto decía: “Manténganse hambrientos. Manténganse descabellados”. Fue su mensaje de despedida al finalizar. Manténganse hambrientos. Manténganse descabellados. Siempre he deseado eso para mí. Y ahora,cuando se gradúan para empezar de nuevo, es lo que deseo para ustedes.

Permanezcan hambrientos. Permanezcan descabellados.


sábado, 8 de octubre de 2011

Traducción del discurso de Steve Jobs (Parte II)


La segunda historia es sobre amor y pérdida

Yo fui afortunado – descubrí lo que amaba hacer temprano en la vida. Woz y yo comenzamos Apple en el garage de mis padres cuando tenía 20 años. Trabajamos duro y en 10 años Apple había crecido a partir de nosotros dos en un garage, transformándose en una compañía de US$2 mil millones con más de 4.000 empleados. Recién habíamos presentado nuestra más grandiosa creación – la Macintosh – un año antes y yo recién había cumplido los 30. Y luego me despidieron. ¿Cómo te pueden despedir de una compañía que comenzaste? Bien, debido al crecimiento de Apple contratamos a alguien que pensé que era muy talentoso para dirigir la compañía conmigo, los primeros años las cosas marcharon bien. Sin embargo, nuestras visiones del futuro empezaron a desviarse y finalmente tuvimos un tropiezo. Cuando ocurrió, la Junta del Directorio lo respaldó a él. De ese modo a los 30 años estaba afuera. Y muy publicitadamente fuera. Había desaparecido aquello que había sido el centro de toda mi vida adulta, fue devastador.

Por unos cuantos meses, realmente no supe qué hacer. Sentía que había decepcionado a la generación anterior de empresarios – que había dejado caer el testimonio cuando me lo estaban pasando. Me encontré con David Packard y Bob Noyce e intenté disculparme por haberlo echado a perder tan estrepitosamente. Fue un absoluto fracaso público e incluso pensaba en alejarme del valle. No obstante, lentamente comencé a entender algo – Yo todavía amaba lo que hacía. El revés ocurrido con Apple no había cambiado eso ni un milímetro. Había sido rechazado, pero seguía enamorado. Y así decidí comenzar de nuevo.

En ese entonces no lo entendí, pero sucedió que ser despedido de Apple fue lo mejor que podía haberme pasado. La pesadez de ser exitoso fue reemplazada por la liviandad de ser un principiante otra vez, menos seguro de todo. Me liberó para entrar en uno de las etapas más creativas de mi vida. Durante los siguientes cinco años, comencé una compañía llamada NeXT, otra compañía llamada Pixar, y me enamoré de una asombrosa mujer que se convirtió en mi esposa. Pixar continuó y creó la primera película en el mundo animada por computadora, Toy Story, y ahora es el estudio de animación más exitoso a nivel mundial. 

En un notable giro de los hechos, Apple compró NeXT, regresé a Apple y la tecnología que desarrollamos en NeXT constituye el corazón del actual renacimiento de Apple. Además, con Laurene tenemos una maravillosa familia. Estoy muy seguro de que nada de esto habría sucedido si no me hubiesen despedido de Apple. Fue una amarga medicina, pero creo que el paciente la necesitaba. En ocasiones la vida te golpea con un ladrillo en la cabeza. No pierdan la fe. Estoy convencido que lo único que me permitió seguir fue que yo amaba lo que hacía. Tienen que encontrar eso que aman. Y eso es tan válido para su trabajo como para sus amores. Su trabajo va a llenar gran parte de sus vidas y la única manera de sentirse realmente satisfecho es hacer aquello que creen es un gran trabajo. Y la única forma de hacer un gran trabajo es amando lo que hacen. Si todavía no lo han encontrado, sigan buscando. No se detengan. Al igual que con los asuntos del corazón, sabrán cuando lo encuentren. Y al igual que cualquier relación importante, mejora con el paso de los años. Así que sigan buscando hasta que lo encuentren. No se detengan.

viernes, 7 de octubre de 2011

Traducción del discurso de Steve Jobs (Parte I)


Discurso que Steve Jobs, CEO de Apple Computer y de Pixar Animation Studios, dictó el 12 de Junio de 2005 en la ceremonia de graduación de la Universidad de Stanford.

“Tienen que encontrar eso que aman”
Me siento honrado de estar con ustedes hoy en su ceremonia de graduación en una delas mejores universidades del mundo. Yo nunca me gradué de una universidad. La verdad sea dicha, esto es lo más cerca que he estado de una graduación. Hoy deseo contarles tres historias de mi vida. Eso es. No es gran cosa. Sólo tres historias.

La primera historia se trata de conectar los puntos
Me retiré del Reed College después de los primeros 6 meses y seguí yendo de modo intermitente otros 18 meses o más antes de renunciar de verdad. Entonces ¿por qué me retiré?.

Comenzó antes de que yo naciera. Mi madre biológica era joven, estudiante de universidad graduada, soltera, y decidió darme en adopción. Ella creía firmemente que debía ser adoptado por estudiantes graduados. Por lo tanto, todo estaba arreglado para que apenas naciera fuera adoptado por un abogado y su esposa; salvo que cuando nací, decidieron en el último minuto que en realidad deseaban una niña. De ese modo, mis padres que estaban en lista de espera, recibieron una llamada en medio de la noche preguntándoles: “Tenemos un niño no deseado; ¿lo quieren?”. Ellos dijeron “Por supuesto”.

Posteriormente, mi madre biológica se enteró que mi madre nunca se había graduado de una universidad y que mi padre nunca se había graduado de la enseñanza media. Se negó a firmar los papeles de adopción definitivos. Sólo cambió de parecer unos meses más tarde cuando mis padres prometieron que algún día yo iría a la universidad. 

Luego a los 17 años fui a la universidad. Sin embargo, ingenuamente elegí una universidad casi tan cara como Stanford y todos los ahorros de mis padres de clase obrera fueron gastados en mí matrícula. Después de 6 meses yo no era capaz de apreciar el valor de lo anterior. No tenía idea de lo que quería hacer con mi vida y no tenía idea de la manera en que la universidad me iba a ayudar a deducirlo. Y aquí estaba yo, gastando todo el dinero que mis padres habían ahorrado durante toda su vida. Así que decidí retirarme y confiar en que todo iba a resultar bien. Fue bastante aterrador en ese momento, pero mirando hacia atrás fue una de las mejores decisiones que tomé. Apenas me retiré, pude dejar de asistir a las clases obligatorias que no me interesaban y comencé a asistir irregularmente a las que se veían interesantes.

No todo fue romántico. No tenía dormitorio, dormía en el piso de los dormitorios de amigos, llevaba botellas de Coca Cola a los depósitos de 5 centavos para comprar comida y caminaba 11 kilómetros, cruzando la ciudad todos los domingos en la noche para conseguir una buena comida a la semana en el templo Hare Krishna. Me encantaba. La mayor parte de las cosas con que tropecé siguiendo mi curiosidad e intuición resultaron ser inestimables posteriormente. Les doy un ejemplo: en ese tiempo Reed College ofrecía quizás la mejor instrucción en caligrafía del país. Todos los afiches, todas las etiquetas de todos los cajones estaban bellamente escritos en caligrafía a mano en todo el campus. 

Debido a que me había retirado y no tenía que asistir a las clases normales, decidí tomar una clase de caligrafía para aprender. Aprendí de los tipos serif y san serif, de la variación de la cantidad de espacio entre las distintas combinaciones de letras, de lo que hace que la gran tipografía sea lo que es. Fue hermoso, histórico, artísticamente sutil de una manera en que la ciencia no logra capturar, y lo encontré fascinante.

Nada de esto tenía incluso una esperanza de aplicación práctica en mi vida. No obstante, diez años después, cuando estaba diseñando la primera computadora Macintosh, todo tuvo sentido para mí. Y todo lo diseñamos en la Mac. Fue la primera computadora con una bella tipografía. Si nunca hubiera asistido a ese único curso en la universidad, la Mac nunca habría tenido tipos múltiples o fuentes proporcionalmente espaciadas. Además, puesto que Windows sólo copió la Mac, es probable que ninguna computadora personal la tendría. Si nunca me hubiera retirado, nunca habría asistido a esa clase de caligrafía, y las computadoras personales no tendrían la maravillosa tipografía que tienen. Por supuesto era imposible conectar los puntos mirando hacia el futuro cuando estaba en la universidad. Sin embargo, fue muy, muy claro mirando hacia el pasado diez años después.

Reitero, no pueden conectar los puntos mirando hacia el futuro; solamente pueden conectarlos mirando hacia el pasado. Por lo tanto, tienen que confiar en que los puntos de alguna manera se conectarán en su futuro. Tienen que confiar en algo – su instinto, su destino, su vida, su karma, lo que sea. Esta perspectiva nunca me ha decepcionado, y ha hecho la diferencia en mi vida.