Spring Community Day 2009

El día de ayer se realizó por 2da vez el Spring Community Day, esta vez 2009. Recuerden que la última se dio el año pasado en Cibertec. Este año el evento fue en la UPC, en el aula magna, la asistencia fue MASIVA, al parecer los organizadores del evento, no esperaban que de los 500 que se inscribieron al evento, vayan más de 100.

Siendo las 6:40pm en la puerta de la UPC ya no dejaban pasar a las personas, decían que el auditorio estaba repleto y por lo tanto nadie más entraba. Fue una gran sorpresa para mí, pues sacrifiqué el evento de WebDays de Microsoft, estaba con cámara de fotos en mano con ganas de traerles todo lo relacionado al evento. Pero gracias a ......un amigo, pude pasar solapa e ingresar al auditorio para poder ganarme con todo lo que sucedió en el evento.

El evento comenzó muy bien con la presentación de la comunidad de Spring que fue creada desde el año pasado. Un poco de introducción a lo que es Spring, su historia desde su creación hasta la adquisición de Spring por parte de VMWare. Así también se explicó la filosofía que se tiene con Spring, el uso de POJOs, el no reinventar la rueda, las best practices, etc.

Entonces explicaron el cómo va ser esta charla, ya no será la clásica conferencia donde cada uno tiene 45 minutos para hablar del tema que investigó, mostrar cada uno su propio ejemplo y listo, YA NO. Ahora para demostrar el poder de spring y la integración que tienen sus componentes, se decidió resolver un problema completo. En sí el problema que plantearon era algo sencillo (para una charla, no se necesita un problema complejísimo), se requiere una aplicación para Gaston Acurio donde pueda registrar sus recetas y sus aprendices puedan ver éstas, pero no modificarlas (es decir, se tiene alguien que puede registrar y modificar, pero otro que solo puede ver). Se mostró el análisis realizado así como las fases que tomaría el desarrollo.

Luego de esto se pasó a mostrar las herramientas a usar para este desarrollo como: "Spring Source Tool Suite", "SpringSource TC Server", Cloud Foundry, entre otros.

Entonces, luego de toda la introducción del tema, se procedió a explicar el desarrollo y solución que se dio.

Lennon Shimokawa - Arquitectura
Se explicó la arquitectura que formaron entre la comunidad, así tb se mostró el uso de Maven para manejar las dependencias del proyecto (aunque tiene más usos). Luego dio una introducción a algunos temas de Spring como inyección de dependencia, el uso de las interfaces para reducir las dependencias, su ventaja, el papel del Application Context, entre otros. La explicación fue un buen resumen en sí para que la gente nueva no se pierda de lo demás que se iba a explicar.

Jonathan y Mayer Horna - DAO
Se puntualizó en la capa de acceso a datos, mostraron la diferencia de usar JDBC puro, a comparación de usar Hibernate integrado con Spring, la forma tan fácil que se puede hacer un "Save" o "update", entre otros. Se pudo ver los xml de los mapeos que realmente son muchas veces complejos, pero se mencionó la herramienta Hibernate Tools que ayuda en el mapeo para no complicarnos la vida, o también se dio la alternativa de poder usar anotaciones. Lo que me gustó más fue que se resaltaron las ventajas de usar un ORM como Hibernate, así como tb su integración tan limpia que tiene con Spring.

Gustavo Quiroz - Testing
Uno de los puntos más importantes de un desarrollo es su testing, algunos preguntarán "¿Por qué?" o sino "¿Testing? Yo nunca lo he hecho y me ha ido bien". Pero justo para eso era esta parte de la charla, porque pudimos ver las ventajas de hacer Test de integración y test unitarios, los primeros se hacen más que todo con Spring, mientras que el último con JUnit. Gracias a estos tipos de test, podemos probar las funcionalidades antes de usarlas, encontrar bugs, ver excepciones, entre otros. El resaltar las ventajas del testing fue lo mejor de esta parte.

Ricardo Ávila - Susan Inga - Spring MVC
Se mostró de forma separada el uso de las demás partes de las cuales ya se explicaron. Se concentró bastante en el modelo MVC, los prototipos que se tuvieron, una página 404 muy buena para controlar los errores (lol), entre otros. Lo que más puedo resaltar de esta parte de la exposición fue el explicar el flujo completo que cumple el Spring MVC, el cómo se mapea un request, la forma cómo se captura desde java, entre otros. Muy bueno para aquellos que querían entender un poco más sobre Spring MVC.

Edson Chávez - Seguridad
Tal como se dijo al inicio, se desea controlar que los chefs sean los únicos que puedan agregar y modificar recetas, mientras que los aprendices solo puedan ver éstas. Por lo tanto se tenía que restringir por medio de seguridad esto, es acá donde entra la seguridad, donde se explicó una buena parte de seguridad que te brinda Spring, su flexibilidad que tiene frente a casos (como el del problema) donde se tiene que acomodar la seguridad de cierta forma que se acomode a lo solicitado por Spring. Se hicieron las pruebas de cada uno de los roles para mostrar lo simple que puede ser esto. Fue bastante práctico el ejemplo en sí, para mostrar lo básico que se puede hacer con la seguridad de Spring =)

José Díaz - Spring CloudFoundry
Luego de haber hecho todo el proyecto necesitamos que éste se vea para todos en internet, y si tenemos un hosting en amazon, podemos usar www.cloudfoundry.com para subir el proyecto. Se mostró la facilidad que es subir un proyecto usando este servicio de CloudFoundry que por el momento es gratuito, pero quizás más adelante tenga un precio.

Esto fue todo el proyecto que se mostró en la conferencia. A opinión propia, puedo decir que estuvo bien armado y preparado el proyecto, las caídas que tuvieron fue casi nula (solo la clave del cloudfoundry) y los expositores contaron de una forma bastante real el cómo afrontaron cada uno de los problemas, sus puntos de vista sobre spring y un poco de teoría de cada uno de esos temas. Es decir, se tuvo como un equipo real de una empresa donde todos van hacia un mismo objetivo, avanzando en paralelo (no secuencial) para una solución.

Felicitaciones para los organizadores del evento por esta gran conferencia y espero que el otro año tengan un mejor local para más personas (que lamentablemente llegaron tarde y quedaron fuera), más temas para mostrarnos y que el apoyo de los auspiciadores se siga dando para impulsar este tipo de eventos que permiten compartir conocimiento.

Espero les haya gustado la info que les traje del evento. Mas bien, se me olvidó decir que hubieron sorteos de maletines de Spring, así como también, JoeDayz llevó unas anfitrionas para el evento y muchos ya ni veían el código que se mostraba xD

Les dejo acá algunas fotos del evento:



Shinji

MCPD en ASP .Net :D




PRO: Designing and Developing Web-Based Applications by Using
the Microsoft .Net Framework :D

Al fin lo logré =)!!!

Luego de tiempo me animé a dar el examen de MCPD para desarrollo
Web en .Net y logré pasarlo con puntaje perfecto =)

Les juro que estoy muuuuuuuuy feliz, porque tenía la espina de
darlo hace tiempo, pero por cuestiones económicas y de tiempo no pude darlo :(.

Es el momento de investigar nuevas cosas y si se puede certificar
en eso (lo cual ayuda a pesar de todo) lo haré =)

En este caso no pude hacer resumen debido a que tuve poco tiempo
de preparación :(.

Gracias a todos los que me animaron antes del examen y a los que
me felicitaron tb =)!!!

Saludos a todos, esperen el próximo posteo que será bien entretenido :D

shinjiDev

Feliz Día del Programador

FELIZ DÍA DEL PROGRAMADOR A TODOS!!!! =)

Bueno, este post no puede ir solo con ese título, cierto?xD

Un poco de información: desde hace unos años se celebra el 13 de setiembre como día del programador, fue impulsado por http://www.programmerday.info/, e incluso se tiene un hashtag en twitter para esto #programmerday.

Como ya muchos habrán contado los días hasta el 13 de setiembre (o no muchos), el 13 de setiembre es el día 256 del año, el cual es un número muy conocido por nosotros al tratar de elevar 2 a la 8. Al momento de conocer esto, me puse a pensar sobre este número en mi historia de programación, un claro caso es el byte, que llega a 256 - 1.

Pero vamos a algo más complejo y que apenas cuando vimos dijimos "Eso es problema por el byte!!!" (como buenos geeks XD).



Este nivel de Pacman es llamado el "split screen", lo pueden buscar en varios lados con eso. Esta fase es la número 256 de Pacman en Arcade, aquellos que hayan llegado a esa fase podrán ver este error, o si quieren llegar ahí, pueden usar el Mame para jugarlo =). Incluso, la wikipedia muestra información acerca de esta fase http://en.wikipedia.org/wiki/Pac-Man

Uds tienen algún ejemplo particular del 256? Sería chévere conocerlo al menos por este día =)!!!!!!

Y nuevamente, FELIZ DÍA DEL PROGRAMADOR a todos =). Si son Jefes de Proyecto y demás, aprovechen en saludar a sus desarrolladores =D

Nos vemos

shinjiDev

Resultados de la Conferencia de Python en Infosoft2009

Empezaré este post agradeciendo a todas las personas que asistieron a la conferencia de Python en Infosoft 2009, de paso agradecer a la gente de Infosoft que fueron muy amables conmigo y a la twittera @paolavc por haber asistido :D

La conferencia, a mi parecer, resultó mejor de lo esperado, teniendo varios asistentes, muchas preguntas al respecto de Python, comparaciones con RoR, con Java, PHP y otros lenguajes. Aparte de eso se regalaron 2 discos de Ubuntu 9.04(con sticker) y un speaker de BizTalk Server :D!!!

Me gustó muchísimo la participación del público que no se quedaron en silencio y en especial esas ganas de querer ver código Python. Con esos ánimos creo que más adelante se puede dictar algún taller en la PUCP, que en lo posible será gratuito.

Y como lo prometido es deuda, acá les entrego la presentación que se hizo en Infosoft2009

http://rapidshare.com/files/273084383/PythonInfosoft2009Last.zip

El programa con el que se hizo las diapositivas está acá:

http://rapidshare.com/files/273113373/Ovation_1.0.1472.zip

Tb publicaré algunas fotos que me tomaron en el evento, gracias a todos y no dejen de visitar el blog.

Nos vemos

ShinjiDev

Conferencia de Python en Infosoft 2009

InfoSoft
INFOSOFT es la Feria de Exposición de Proyectos de Alumnos de Ingeniería Informática producto de la organización en conjunto de la Asociación de Alumnos de Ingeniería Informática (AAII), y el Grupo de Investigación y Desarrollo de Ingeniería de Software (GIDIS).

Esta feria se da cada año en la PUCP, este año es su décima edición y nos tiene la siguiente lista de charlas que se encuentran en su sitio web: http://blog.pucp.edu.pe/infosoft

Este año me toca nuevamente ser ponente de este gran evento, donde tocaré el tema de "Python, el lenguaje de programación que debes conocer", es más que todo una charla introductoria a lo que es python y todo lo que se puede lograr con este lenguaje =).

A quienes estén interesados, la charla se dará el día viernes a las 6:30pm en el Auditorio de Ciencias e Ingeniería de la PUCP =).

Nos vemos ahí

cya :3

Shinji


P.d. La cabecera fue obtenida del blog de Infosoft =)

Python - El Inicio

Durantes este año me comenzó a agradar bastante este lenguaje cuando me dio la necesidad de aprender un nuevo lenguaje que sea multipropósito, así que debido a los buenos comentarios que recibe en varias webs, así como el hecho de que puede realizarse desarrollo web con éste, me enamoró al instante.

print "Hello, Python"

Empezemos con la pregunta clásica

¿Qué es Python?
Python es un lenguaje de programación de propósito general que muchas veces es usado para scripts, por lo cual se le llama muchas veces lenguaje de script. Es orientado a objetos, pero también permite trabajar en forma procedimental. El creador de este lenguaje es Guido van Rossum quien actualmente labora en Google, su cuenta de twitter es Gvanrossum

¿De dónde proviene el nombre Python?

El creador coloco este nombre debido a que era muy fanático de los humoristas Monty Python

¿Python es interpretado o compilado?

Python se considera un lenguaje interpretado, pero existen algunas implementaciones del lenguaje que compilan el código para volverlo más eficiente (debido a diferencias entre compilado e interpretado) como es el caso de IronPython


¿Qué implementaciones existen de Python?

Jython, CPython IronPython y PyPy. Jython es la implementación Java de Python. IronPython es la implementacion de Python para .Net (la versión 2.0.1 es la estable actualmente)

¿Qué organizaciones utilizan este lenguaje?

Las empresas que usan Python no son cualquier compañía que experimenta con lenguajes, sino que son empresas muy importantes como: Google, Intel, Cisco, HP, NASA, iRobot, BitTorrent, OLPC, entre otros. Creo que el punto es obvio, Python tiene bastante fuerza en empresas grandes, así como en pequeñas que buscan innovar.

¿Qué se puede hacer con Python?

Es una pregunta algo difícil de responder, no porque no hayan casos donde se puede usar, sino porque son demasiados:
- Sistemas Operativos
- GUIs

- Scripts de Internet

- Integración de componentes (Integración con librerías de C, componentes COM, Corba, entre otros)
- Programación con Base de Datos (Su Api permite comunicarse con cualquier BD)
- Programación científica y numérica (Con la potente librería NumPy se pueden hacer maravillas)

- Juegos

- Procesamiento de Imágenes
- Inteligencia Artificial
- Programación de Robots
- Jugar solitario (no es broma, es en serio xD)


¿Cuáles son las características principales de Python?
- Es un lenguaje orientado a objetos
- Es libre, es decir puedes usarlo libremente, modificarlo y, si se gusta, hasta venderlo junto a los productos que uno haga

- Portable, corre en casi todos los SO, en PDAs, celulares con Symbian, Ipods, entre otros - Poderoso, debido a la cantidad de librerías de terceros que ya hacen muchas cosas que uno necesita, aparte de las librerías que ya posee Python, y cabe mencionar su administración automática de memoria.
- Mixto, es decir se puede integrar de manera "fácil" con otros lenguajes de programación como C o C++ - Fácil de usar =) (Eso es lo que más me gusta)
- Legible para cualquier persona que haya desarrollado


¿Dónde puedo encontrar una guía inicial para desarrollo web con Python?

Se puede encontrar una guía muy interesante en
Python Web . Ahí podrán encontrar la lista de frameworks que llegan a recomendar para el desarrollo web.

¿Algo interesante que pueda ver que se haya hecho en Python?

-
MythPyWii
- Python + Wiimote + 15 toneladas
- Mobile Python

¿Qué libro se recomienda leer para empezar con Python?

Particularmente recomiendo Learning Python y A byte of Python.


¿Algún curso que pueda llevar para aprender Python?

Curso de Python

¿Existe en el Perú alguna comunidad dedicada a incentivar el uso de Python?

Sí, hace poco nació Python-Perú, y todos son bienvenidos a integrarse e incentivar el uso de Python


Esa es toda la información que les puedo dar por ahora, la mayor parte de la información la obtuve del libro Learning Python de O'Reilly, lo recomiendo en verdad para quien desee empezar con Python y vea que es todo un mundo este lenguaje, además que te obliga a cumplir con estándares de programación.

Proximamente lanzaré un tutorial de IronPython y espero les llegue a agradar a todos y los incentive a meterse más con este lenguaje.

Saludos a todos y espero sus comentarios al respecto.


ShinjiDev

Open Session In View - IIS7 - Spring .Net

Holas a todos

Volviendo a escribir un artículo que, a recomendación de un amigo, podría ayudar a muchos con este problema que siempre ocurre al utilizar Spring .Net + Open Session in View design pattern + IIS7.

Vamos por lo primero, el patrón Open Session in View, según Hibernate este patrón consiste en mantener la sesión de Hibernate(aunque en el caso de .Net es NHibernate) abierta hasta que se realice la renderización de la vista.

Ahora, por qué existe este patrón? La respuesta es simple, muchos que hemos usado Nhibernate podemos notar que cuando tenemos un objeto que tiene relación one-to-many (o cualquier otro tipo de relación) con otro objeto, y queremos acceder a este último al momento de estar en el code-behind, nos aparece el clásico error "LazyInitializationException".

El patrón Open Session In View, tal como se mencionó anteriormente, permite solucionar este problema al mantener la sesión abierta hasta la renderización de la vista.

Ahora, la historia, tal como mencioné en la conferencia de Spring Live Perú 2009, me encuentro en un proyecto de .Net (framework 3.5) en el cual estoy cumpliendo cierto papel de arquitecto. En este proyecto estamos utilizando Spring .Net, NHibernate y AjaxToolkit. Entonces un día nació la necesidad de usar el patrón Open Session in View, todo bien en el sitio donde desarrollábamos, pero al momento de probarlo en un IIS7 ocurría un problema muy extraño, aún seguía saliendo el error de "LazyInitializationException". Lo cual fue muy extraño, pues si estaba solucionado en nuestras laptops cuando probábamos, entonces qué razón había para que no funcione en el servidor?

Entonces, como todo problema, se intentó buscar la solución a esto pero no había mucha información del problema, hasta que pude dar con el problema en este sitio
donde nos indicaban cambiar el módulo de Open Session In View de system.web/httpModules a system.webserver/modules. Es decir, tenemos que pasar esta línea de código:

<httpModules>
<add name="OpenSessionInView" type="Spring.Data.NHibernate.Support.OpenSessionInViewModule, Spring.Data.NHibernate20"/>
</httpModules>

a la siguiente posición:

<modules>
<add name="OpenSessionInView" type="Spring.Data.NHibernate.Support.OpenSessionInViewModule, Spring.Data.NHibernate20"/>
</modules>

Pero hay que tener mucho cuidado con esto, porque el sitio menciona el mover de httpModules a modules. Pero no debemos cortar y pegarlo, porque esto ocasionaría que funcione en el servidor IIS7, pero no en nuestras máquinas de desarrollo. Por lo tanto deberían tenerlo replicado tanto en los modules como en los httpModules.

Y listo, con esto podrán usar el patrón Open Session In View para NHibernate integrado con Spring .Net, y funcionará tanto para IIS7, como para el IIS6.

Espero les pueda servir esto a muchos para solucionar problemas tan particulares que se tienen con el IIS7.

Enjoyt it

Shinji

Spring Live Perú 2009 - Reportaje

Comenzamos el reportaje del Spring Live Perú 2009 agradeciendo a todos aquellos que estuvieron presentes en la parte donde expuse =).

Primero que todo, sé que hubo quejas respecto al sitio que no tenía la capacidad que se había mencionado desde antes. Por mi parte yo también me sentí un poco mal pues siendo ponente, a pesar de no ser organizador, deseaba saber la verdad al respecto. Como asistentes merecen una explicación de esto, el problema fue que desde el inicio el aula magna estaba separada para la conferencia,pero ese día llegaron profesores de una universidad del exterior y la universidad de San Marcos decidió darles el aula magna y darnos por el momento el aula auxiliar. Felizmente esto solo se dio en la mañana, porque luego del intermedio nos dieron el aula magna para seguir con la conferencia.

Ahora sí, apreciación personal respecto a las exposiciones.

José Díaz - Spring Framework
La exposición de José Díaz tuvo diversos enfoques, pero en sí lo esencial fue hacer una introducción a lo que es Spring como framework en general, por lo que habló sobre la historia de Spring, un poco de explicación respecto a los productos (paquetes), también sobre el tema de que cada subproducto de Spring es una nueva comunidad. Aparte de eso habló un poco sobre algunos productos libres, sobre Tomcat y su comparación con Websphere, OAS, entre otros servidores de aplicaciones. Dentro de todos esos temas también dio a conocer sobre la comunidad de Spring User Group Perú que pocos conocen e invitó a los interesados a que se unan. Muy buena explicación y carisma de parte del expositor, aparte que muy ducho respecto a su experiencia en Spring.


Ricardo Ávila - Flex & Spring
Esta exposición trato bastante sobre Flex, presentación a la Plataforma de Flex 3, los componentes que posee. Respecto al SDK mencionó que es gratuito tb dio su contraparte que el IDE, lamentablemente, es de pago, además que no existe un buen IDE que sea gratuito. Luego de eso se trató el tema de cómo funciona Flex, para dar pase a un ejemplo de reporte en barras con una interfaz dinámica muy interesante. Respecto a los componentes de Flex se menciona el hecho de que uno se puede crear sus propios componentes (algo muy útil estos días) o sino uno puede comprar alguno ya hecho. La parte de Spring con Flex fue mediante CxF, lo cual nos permite crear nuestros servicios web. Al final se habló sobre la integración de BlazeDS con Spring y las ventajas de usar Spring con Flex. Soy bastante sincero al respecto, lo que se habló de Flex fue realmente largo pero tocó muy bien esos temas pues se nota que el ponente conocer mucho del tema, pero debió de tocar un poco más sobre su integración que tiene con Spring que era el tema en sí, fuera de eso, estuvo muy interesante el tema de Flex.

Juan Carlos Vergara - DDD(Domain Driven Design) con Spring Framework
El tema fue bastante importante pues trató sobre la importancia de un modelo al momento de una implementación, aparte de lo importante de dividir en contextos. Para esto, se dio un ejemplo e-commerce, donde se tenía: contexto de compras, contexto de OC, entre otros. La Arquitectura que va soportar esto que se puede dar con una capa de acceso a datos, capa de dominio, capa de servicio y capa de aplicación. Terminó su exposición hablando respecto a un rich model. El tema fue en sí interesante, pues el Spring Framework en sí tiene bastante relación con el DDD ya que nos permite enfocarnos en la lógica de negocio y el dominio, ya que lo otro está manejado por la configuración del Spring. Estuvo muy buena la explicación, a pesar de que el tema era algo teórico.


Lennon Shimokawa - Lo nuevo en Spring 3.0
Se tocaron diversos temas al respecto, como por ejemplo la reorganización y directorios de fuentes por jar y módulo, pues de esta forma ya no existe un solo spring.jar. Este último Spring fue realmente rediseñado pa usarlo con Java 5 y aprovechar lo mejor de éste. La exposición fue interesante pues empezó con lo inicial de Spring el cómo se inyectaba dependencia por medio de xmls, para luego pasar a Spring 2.5 con el reemplazo de XML por medio de anotaciones y evitarnos taaaaanto XML que muchas veces se nos llega a juntar. Luego de esto pasó a mostrar lo nuevo de Spring 3.0 que es su Spring Expression Language (parecido a JSF), el JavaConfig Support, el Rest Support como alternativa a Web Services, entre otros. Muy buena la exposición, el manejo del público asistente, así como también del sitio donde se ubicaba el expositor fue muy bueno. Siempre es un agrado escuchar las exposiciones de Lennon.



Christian Palomares - Spring .Net Essentials
Quién será este pata, no?XDDD
En este caso me tocó explicar no sobre qué es Spring .Net, qué significa cada módulo ni nada por el estilo. sino que la exposición fue respecto a que existe un Spring .Net para aquellos que, debido a un proyecto, los hacen trabajar con .Net, por lo que la gente no debe de preocuparse porque hay Spring en varios ámbitos. Y no solo eso, sino que se habló sobre los módulos que existen, no se trató de tocar profundamente estos módulos, solo lo básico que deben saber, pues lo importante era que sepan que existen así como en Spring para Java. La demo que se mostró fue una aplicación ASP.Net simple, donde se usaba NHibernate y algo de JQuery. Luego de eso se mostró cómo convertirla a una aplicación con Spring .Net, de tal forma que se mostró la integración con NHibernate, la inyección de dependencia, cómo se puede manejar transacciones y el cómo convertir un servicio a Web Service. Felizmente la aplicación salió como deseaba, respondí algunas dudas que tenían algunos que mostraron algo de interés respecto a Spring .Net. Pero soy sincero, la exposición no salió como esperaba, en primer lugar sentí que hice algo apurado las cosas, llegué a mostrar cómo configurar web services, sin embargo no mostré el Web Service ya levantado, creo que me alteró un poco el calor del proyector, así que mil disculpas si no resultó todo como esperaban. Necesitaba hacerme esa autocrítica =)


Mayer Horna - ExtJS
Muy buena exposición mostrando que ExtJS extiende de Prototype y YUI. Se mostraron ejemplos de las interfaces que se pueden llegar a hacer con ExtJS. La sintaxis a mi parecer tiene bastante parentezco con JQuery. La documentación de esta API es un punto importante pues permite ver los componentes que posee la librería. Lamentablemente no posee un IDE o plugin especial que le permita la autocompletación. La demo se realizó usando Spring + Hibernate + ExtJS. Muy interesante todo lo que se puede realizar con esta API, pero a mi parecer el hecho de trabajar un poco a la "ciega" y hacerlo como layouts (al estilo Swing de Java), a mi parecer no es tan conveniente. Pero cabe resaltar que el conocimiento de ExtJS del ponente es muy amplio.


CJava
Hubo un intermedio para presentar a unos auspiciadores, CJava, que nos dio unos datos sobre Sun y la compra de Oracle. Según lo que nos confirma este partner de Sun, es que no se puede desaparecer MySql por cuestiones legales, pero lo más probable es que puedan llegar a incrementar su precio. Respecto a los servidores de aplicaciones, Oracle seguirá vendiendo ambos servidores como son Glassfish y Bea. Aunque nos dio la noticia de que no hay novedades sobre JDeveloper y NetBeans.
Aparte de eso se dio un sorteo de 3 vouchers para examen de certificación Java, entre los ganadores estuvo un amigo, Gustavo Quiroz


José Luis Manrique - AOP Spring 2.5
Mencionó los aspectos importantes de AOP, como son su definición y su terminología. La demo inicial fue sin AOP para ver cómo y donde se puede agregar. Luego de eso explicó sobre los Advices que implementan los aspectos. Esta demo llega a mostrar los cambios y modularización que se llega a dar con AOP y Spring. Aparte de eso explicó que el AspectJ maneja mejor AOP debido a su granularidad que tiene. A comparación del evento anterior donde fue ponente, la verdad estuvo muchísimo mejor y su explicación fue bastante consisa y llegó al público debido al conocimiento que tiene respecto a AOP.


Edwin Farfán - Desarrollando Aplicaciones Web con Grails
Se dio la explicación sobre este framework que es para aplicaciones web basado en el lenguaje dinámico Groovy. Se basa en el principio DRY (Don't repeat yourself). Para los que no conocían (como yo xD), Groovy es un lengauje dinámico parecido a Ruby, Python y Scala. Está hecho para la JVM. Actualmente está en la versión 1.1.1. Se hizo una demo desde cero sobre el desarrollo de una aplicación web con Grails, muy bueno la verdad porque se pudo mostrar cómo se generaban los Cruds al instante, así como también el ver cómo añadir unos "plugins" a éste para hacer más cosas. Realmente quien expuso sobre esto conocía bastante al respecto, por lo cual la demo se dio de forma fluida. El único problema de Grails es que no tiene un IDE para hacer lo mismo que se hace por línea de comandos, pero se puede modificar lo generado desde un IDE como Eclipse con su respectivo plugin.


Luego de esto me tuve que retirar debido a que estaba algo cansado por el día anterior, pero hubieron 2 exposiciones más que fueron de:
jBPM con Spring de Leonardo Lizana
Open Source ESBs y Colas con Spring (SOA) de José Luis Gutierrez.

Me hubiese gustado ver estas 2 exposiciones, en especial la de jBPM que pude ver poco en la universidad.

En resumen, las exposiciones llegaron a ser un buen punto de introducción y comienzo para aquellos que recién conocían sobre Spring, tanto en Java, .Net, como en integración con demás cosas como Flex, Grails o jBPM, entre otros.

Espero haya cubierto sus expectativas, y, a pesar de no ser yo la persona que organizó el evento, mil disculpas si es que hubieron cositas que no les gustó, tanto en las exposiciones como en la organización, tanto los ponentes como los organizadores tratamos de dar siempre lo mejor de nosotros para los asistentes.

Gracias por todo y espero seguirlos viendo en demás conferencias que hayan en Lima u otros lugares. Y en especial también gracias a José Díaz por haberme invitado a participar en este evento como ponente.

Pronto subiré las fotos del evento, así como el código de la demo que hice y la BD que utilicé.
Y para quienes no vieron mi twitter, pueden followearme en la siguiente dirección Twitter

El código fuente, el script de base de datos, así como también la presentación que se hizo el día del evento se puede encontrar aquí

Ahora sí, las fotos del evento Spring Live Perú 2009, espero les guste



Buen día a todos

Enjoy it

Shinji


P.d. Se agradecerá bastante si alguien desea colaborar con un reportaje al respecto de los 2 últimos temas que se trataron en la conferencia, obviamente se colocará el crédito a las personas que colaboren =)

iBday ( Producto Peruano )



Hace no mucho salió un reportaje respecto a un estudiante de la PUCP que había creado una aplicación para el IPhone sobre tragos que se pueden preparar con el Pisco, y fue un gran boom debido a que llegó a los primeros lugares pues supo captar un mercado que otros no habían visto, a pesar de que no necesitó complejidad de programación.

Esto nos hace ver que hay desarrolladores de aplicaciones para IPhone/IpodTouch en nuestro país. Hace un par de días mi amigo Luis Ibarra lanzó su aplicación iBday para estos dispositivos móviles, ésta busca resolver el problema que podemos tener al olvidarnos el cumpleaños de alguien importante, e incluso nos manda aviso de que alguien está de cumpleaños el día de hoy y nos da la posibilidad de darle una llamadita para poder saludar al cumpleañero.

Entre las características que se puede mencionar están:
  • Listado de los cumpleaños de todos tus contactos
  • Facilidad de uso
  • Facilidad y rapidez de búsqueda de cumpleaños de tus contactos
  • Llamado rápido a la persona que selecciones
Producto muy recomendado para quienes tenemos problemas en recordar cumpleaños de amigos y contactos, así como también para quienes desean tenerlo ordenado de mejor forma.

Producto peruano, novedoso, para organizarte, y al precio de 99 centavos de dolar. Aprovechen y cómprense uno.

Y ya que estamos tan felices acá por el lanzamiento de este producto, el creador del iBday lanza una oferta. Quien llegue a ser la descarga #100 se llevará un polo con el logo de iBday, sea de donde sea que la persona que descargue, se le enviará su polo como premio para apoyar la descarga de este producto peruano.

Enjoy it

Link de la página principal de iBday: iBday
Link de iBday en aplicaciones IPhone: apptism
Twitter del creador Luis Ibarra: LuisIbarraConsi

Shinji

Spring Live Perú 2009

Dentro de unos cuantos días, exactamente este sabado 16 de mayo, se realizará el evento Spring Live Perú 2009.

En este caso me invitaron a exponer respecto a mi experiencia utilizando Spring para .Net, por lo cual el tema es llamado Spring .Net essentials.
Debido a que el tiempo es algo corto y lo que más se desea es ver que el cambio de Java a .Net no es tan complicado como parece, tocaré los sgtes módulos en mi exposición:
  • Spring.Core
  • Spring.Aop
  • Spring.Data.NHibernate
  • Spring.Web
  • Spring.Web.Extensions
  • Spring.Services
En sí para que se den una idea, llevaré una aplicación común y corriente que realizamos en .Net y se podrá ver cómo se puede integrar Spring a esta aplicación mediante inyección de dependencia, integración de Spring con NHibernate, transacciones y Web Services.

Espero poder colaborar de la mejor forma con este evento y a los asistentes para incrementar su conocimiento respecto a Spring.

Mucho gusto y asistan de lo más normal al evento, hay ya muchos inscritos en http://springliveperu2009.eventbrite.com/ , pero el registro se respeta hasta las 9am. Por lo que les recomiendo asistir para ver este gran evento.

Se me olvidaba mencionar, en este caso algunos amigos míos también se presentarán en este evento:
Sus temas son muy interesantes y la calidad de sus exposiciones está asegurada.

No falten =)

cya :3

Shinji

NHibernate: Generar Entities C# 3.0

Durante estos días he estado metido en un proyecto para una universidad del Perú, la solución está basada en .Net y entre tantas reuniones que tuvimos para definir la arquitectura del proyecto, nos decidimos por usar: Spring .Net, NHibernate y algunos controles de AjaxToolkit. No entraré mucho en detalle en las partes que usamos de Spring .Net, pero pronto les daré una buena noticia al respecto.

Al punto al que iremos hoy es NHibernate, todos sabemos que Hibernate es para Java y NHibernate para .Net, por lo cual muchas veces encontramos más información para la versión de Java. Otro problema que tenemos siempre es el generar las entidades y los xml para mapear nuestra BD, sabemos (y lo sabemos muy bien) que el mapear con NHibernate es realmente pesado, tenemos diversas formas de hacerlo, manejar una "herencia", llaves compuestas, entre otras cosas. Pero gracias a Dios siempre tenemos algunos generadores de entidades y xml, que no debemos tomarlos como absolutos, pues todo generador puede tener errores.

Uno bueno que encontré fue el MyGeneration(1.3), que me permite ver varios templates de NHibernate e incluso poder modificarlos a nuestras necesidades. Llegué a probar todos estos y el que más me convenció fue el "Nhibernate Sharp 1.4", todo estaba bien, pero.......encontré que para cada entidad me generaba una interfaz e implementaba algunas cosas más que de repente no eran tan necesarias para mí. Otro punto en contra fue, estamos usando el framework 3.5, aprovechémoslo al máximo, utilicemos los constructores anónimos y la nueva forma de definir propiedades (más info aquí).

Entonces, teniendo la necesidad de eliminar algunas cosas que uno de repente no usa y actualizando la definición de la clase, además de tener la posibilidad de poder modificar el template, por qué no hacerlo? Ya que no encontraba ninguno por internet, me decidí a modificarlo y logré una versión "beta" por así decirlo de un generador de mapeos NHibernate que te genera, aparte de los xml, las entidades con lo básico que uno necesita, así como también utiliza el estilo de C# 3.0 que te permite tener constructores anónimos. El archivo lo pueden bajar de este link:

NHibernate C#3.0

Como podrán notar es solo un archivo de texto, lo único que tienen que hacer es, abrir el template de "Nhibernate Sharp 1.4", backupear el template (por si las dudas), y pegar el txt que han bajado del link, luego le dan grabar y listo.
Con esto ya tendrían listo su generador de entidades NHibernate basado en C# 3.0, pero OJO, lo repito, es una versión "beta", si obtienen algún error o algo por el estilo (que sea causado por el template), pueden escribir acá al respecto y si pueden dar recomendaciones o modificaciones que se deban hacer al template.

Cualquier actualización que llegue a realizar de este template lo colocaré avisando que hay nueva versión. Espero les sirva a todos este generador tal como me está sirviendo a mí.

Gracias por las visitas y los comentarios, me animan bastante a seguir colocando las cosas que investigo o vivo como Informático.

Enjoy it


Shinji

Lima Agile Day 2009

Se puede empezar este post con una frase (para aquellos que desarrollan software in-house o outsourcing), “El uso de procesos ágiles es lo mejor para Uds y para sus clientes”

El día de hoy fue realmente muy importante para mi vida profesional y la de muchos, pues nos permitió conocer un poco más sobre el mundo Agile.

Vamos con el reporte del Lima Agile Day 2009

El evento, tal como lo mencionan en su página Agile Perú, estaba dirigido para todos aquellos interesados en conocer y entender cómo aplicar las llamadas Metodologías Ágiles de Desarrollo de Software.

Se realizó en el auditorio de Cibertec, a donde llegué a las 9:02am, me dieron la bienvenida en la entrada y me dieron mi nombre para pegármelo, así como un par de tacos de hojitas para pasar preguntas a los ponentes(para hacerlo de forma ágil).

Al entrar al auditorio pude ver la introducción al evento, así como explicación básica de lo que era Agile, luego de esto se empezó con el primer item de las exposiciones:

Scrum, una nueva forma de desarrollar Software (Deusdit Correa)

Fue realmente importante este item para aquellos que no conocían mucho sobre Scrum, como yo, como son términos, historia y demás. Se trató al inicio un poco de dónde provenía Scrum (relacionado con el rugby Scrum), para luego mencionar sobre las metodologías ágiles existentes ( Lean, Scrum, Crystal y XP). Entre las categorías de términos se mencionaron las de Roles del Scrum(Product Owner, Scrum Master, Team), Reuniones de Scrum(Spring Planning, Daily Scrum, Definición de Done, Sprint Review, Sprint Retrospective, Story Time Meeting), Artefactos(Product Backlog, Sprint Backlog). A las finales se habló un poco de Scrum en la vida real, las empresas que lo usan, entre otras cosas. Aunque fue muy teórico el tema, de repente para algunos algo agotador ver demasiado texto(un poco de imágenes despierta la atención del público), el expositor estuvo muy preparado en el tema y, al momento de responder las preguntas del público, hizo notar claramente su experiencia en el tema.

¿Qué es y qué no? Scrum Master y Product Owner (Raúl Uribe y Gustavo Véliz)

La exposición estuvo realmente entretenida para la vista del público, empezando con algunas imágenes de los años maravillosos, IT Crowd y, no podía faltar, The Big Bang Theory xD. Esta item tocó temas interesantes respecto a las funciones que tenían los roles de Scrum Master y Product Owner, lo que deben y no deben de hacer, las cualidades que deberían de tener. Así también, hablaron un poco sobre sus experiencias en esos roles y cómo se equivocaron y aprendieron de estos errores(eso es muy bueno para todos).

Fundamentos de la Agilidad: Gente y Colaboración (Gustavo Quiroz)

El punto más importante de un desarrollo de software, ¿cuál es?: La gente. Ese fue el tema sobre el cuál trató este item, que se inició con una frase importante “Ninguna herramienta o metodología ha creado jamás, por sí sola, software”. Con esto se dio pase a hablar sobre la colaboración que es un punto esencial en el desarrollo de software, así como la identificación y retención de personas, el cultivar equipos de desarrollo de alto rendimiento, entre otros. Luego se mencionó lo que se debe de evitar en lo posible: Procesos impuestos, multitasking (que tiene un costo de task-switching, además dio un ejemplo muy claro de contar números y letras), Micromanagement (cuando tienen alguien casi siempre detrás suyo viendo lo que hacen), Crunch Time (muy conocido por la gente de nuestra área), Recompensar Individuos (puede generar mala competencia interna), espacios de trabajo inadecuados (cubículos como los de Dilbert XD), presión excesiva (la clásica frase “Para hoy, o sino….”), castigar equivocaciones (no nos permite innovar), entre otras. Así como se menciona lo que se debe evitar, mencionó lo que en verdad alenta: Auto-Organización, ambientes de trabajo adecuados, procesos creados por la gente, tolerar errores (nos permite investigar, equivocarnos en alguna tecnología y demás), slack, entre otros. En eso comenzaron a apurar al ponente (a mi parece debió tener un poco más de tiempo). Se terminó explicando las fases por las que pasa un equipo al momento de desarrollar software(forming, storming, norming y performing). Así también habló sobre su experiencia como Scrum Master y cómo pudo notar q el equipo aprendió a Auto-organizarse. Entre las preguntas que hizo el público se mencionó sobre un tipo de test social (por así decirlo) sobre “el buen samaritano”(no encontré link al respecto de la historia, si alguno de los asistentes tiene un link, se lo agradeceré ), en sí con esta historia trataba de explicar que cuando uno tiene el tiempo demasiado ajustado y una presión muy fuerte para hacer algo, no lo hace bien, no hace lo correcto. El expositor, está demá decirlo, tiene una buena experiencia como Scrum Master en varios proyectos, está bien empapado en el tema, así que sirvió muchísimo este item del Lima Agile Day 2009.

¿Por dónde comenzar? - Primeros pasos aplicando técnicas ágiles (Abner Ballardo)

Terminando las exposiciones, en este item se dieron las recomendaciones para dar los primeros pasos aplicando tecnologías ágiles. Se trataron recomendaciones para la parte de desarollo: Refactoring, patrones, Xunit, controlador de versiones, entre otros; para los Jefes de proyecto: Procesos iterativos, Documentación necesaria, escuchar y motivar; y por último al Usuario(nuestro gran amigo): Comprometerse, priorizar, entre otros. La exposición sirvió como base para alguien que piensa iniciar aplicando tecnologías ágiles, aunque algunos ya aplican todas estas cosas sin haber conocido el significado de Agile.

Terminando las exposiciones se sortearon algunos libros de regalo y un polo(yo quería el polo T_T). Luego de esto se realizó una retrospectiva solicitando a los asistentes escribir, en los papelitos que nos dieron al inicio, lo que nos pareció bueno, lo malo y las recomendaciones que teníamos (yo coloqué que debía haber Broadcasting del evento), estas notas debíamos colocarlos en la parte delantera del auditorio y luego de eso cada uno colocaría una rayita sobre las ideas que nos parecían correctas. El resultado de esto pueden encontrarlo de forma resumida en Agile Perú muy pronto.

Ahora la parte crítica, a mi parecer fue un evento que hizo notar en buena parte la organización del ambiente, regalos, registrados, entre otros, pero el tiempo de exposición de cada uno de los expositores debió haber tenido unos 15 minutos extras por si se prolongaba con preguntas u otros. En lo que son expositores, no puedo negar que la experiencia fue lo esencial ahí, todos demostraron su capacidad al exponer y lo preparados que estuvieron con presentaciones que atraían bastante al público. Por último, el sorteo donde se regalaron algunas cosas al público asistente fue un gran plus pues los regalos tenían que ver con el tema “Agile”.

Muy recomendable de mi parte, para todos aquellos que leen este blog, que asistan al próximo evento que pueda realizar Agile Perú. Así también, recomiendo visitar con frecuencia la página de los organizadores Agile Perú, donde podrán suscribirse a la lista de interés y estar al tanto de cualquier noticia de este grupo.

Espero les haya agradado el reportaje, así como el primer cambio de Theme que se realiza al blog, intentaré realizar más posteos no solo de código, sino de cosas que uno descubre día a día.

Saludos a todos


Actualización: Acá las fotos del evento


Enjoy it

Shinji

Política de Privacidad

Holas a todos, siento la falta de publicaciones de mi parte, cuando se ordenen los proyectos en los que estoy y haya un poco más de tiempo este sitio web pasará su información a otro sitio web que se tendrá en un hosting pagado por quien les habla.

Mas bien, tengo el deber de publicar esta política de privacidad en el sitio web debido a unas cosas que han pedido en el Adsense de Google.

Google utiliza empresas publicitarias asociadas para publicar anuncios cuando visita nuestro sitio web. Es posible que estas empresas usen la información que obtienen de sus visitas a este y otros sitios web (sin incluir su nombre, dirección, dirección de correo electrónico o número de teléfono) para ofrecerle anuncios sobre productos y servicios que le resulten de interés. Si desea obtener más información sobre esta práctica y conocer sus opciones para impedir que estas empresas usen esta información, haga clic aquí.

Christian Palomares Peralta

Shinji