9 May 2011, 13:33
[2]
Este fin de semana se ha disputado (y disfrutado también diría yo) el concurso AbreDatos, que pretende fomentar la apertura de datos por parte de las administraciones públicas para un mejor aprovechamiento de los mismos.
Junto con unos amigos (@alejandro_such, @crico_aven y @perex) hemos desarrollado para dicho concurso la aplicación Dónde aparco que informa de las plazas de aparcamiento en parkings públicos en la ciudad de Alicante.
Por el momento nos hemos centrado en la ciudad de Alicante aunque ya tenemos en el horno otras ciudades como Pamplona o Reus cuyos ayuntamientos también disponen de esas información pública.
18 January 2011, 23:10
[4]
Finalmente, ya ha salido a la luz el curso Desarrollo rápido de aplicaciones con Groovy&Grails que impartiré para el CEFIRE específico de la familia de Informática y Comunicaciones.
El curso se impartira de forma online y en él recorreremos las benevolencias tanto del lenguaje de programación Groovy como del framework para el desarrollo rápido de aplicaciones Grails.
El inicio de la inscripción es el próximo 4 de marzo y finalizará el 22 del mismo mes y está abierto a todos los profesores de secundaria y FP de la familia de Informática y Comunicaciones.
Si tienes cualquier duda con respecto al curso, no dudes en ponerte conmigo dejando un comentario en este mismo post.
1 October 2010, 11:43
Yo creo que nunca en ningún entorno de desarrollo fue tan sencillo proteger las llamadas AJAX que realizas en tus aplicaciones web. Imaginemos el caso que tenemos una aplicación con la típica navegación por pestañas y que todo se carga en la parte inferior de esas pestañas.
Esta característica de nuestra aplicación la vamos a implementar con una etiqueta en Grails que se llama remoteLink y que permite especificarle, entre otros parámetros, un controlador, una acción y un elemento del DOM del HTML para que lo actualice con la información correspondiente que le venga de la llamada a la acción del controlador invocado.
Por ejemplo, imagina la típica pestaña de usuarios que nos permite listarlos. Podríamos tener algo así.
span style="color: #ff0000;">"scriptaculous""ajax""listarusuarios""contenido""ajax""listarempresas""contenido""ajax""listarsocios""contenido""contenido"
Es importante recordar que para poder utilizar la llamada a la etiqueta remoteLink debemos importar por ejemplo la librería de scriptaculous.
De esta forma, cada vez que el usuario haga click en cualquiera de las opciones, la información se cargará automáticamente en el div con identificador contenido y no tenemos que recargar la página por completo. Pero, ¿que pasa si alguien intenta acceder a la URL que carga ese contenido AJAX, por ejemplo, http://localhost:8080/miapp/ajax/listarusuarios? Pues que se vería el contenido de la llamada pero totalmente fuera del contexto que nosotros queremos, lo que podría provocar algún que otro problema en nuestra aplicación.
¿Cómo podríamos evitar esto? Pues muy sencillo. En Grails tenemos el concepto de filtros que nos permiten ejecutar antes y después de llamar acciones en los controladores e incluso después de que la vista de nuestra aplicación sea generada. Estos filtros son clases normales en Groovy que se deben alojar en el directorio de configuración de nuestra aplicación y cuyo nombre debe terminar por la palabra Filters. Nosotros crearíamos un filtro llamado SeguridadFilters.groovy en el directorio grails-app/conf con el siguiente contenido:
span style="color: #ff0000;">'ajax''*'"X-Requested-With""XMLHttpRequest"'public''error')
}
}
}
}
Aunque el código es bastante sencillo de entender, voy a tratar de explicarlo un poco. En primer lugar, le estamos indicando al filtro que cualquier llamada a una acción del controlador AjaxController me la capture y me permite realizar una serie de llamadas de comprobaciones. Esa comprobación consiste en saber si la cabecera X-Requested-With de nuestra petición coincide con la cabecera que se añade en las llamadas Ajax que es XMLHttpRequest y en caso de que no coincida, redirijo al usuario a una página de error.
Sencillo, ¿no crees? Creo que he tardado más en explicarlo que en hacerlo en la aplicación en la que estoy trabajando actualmente, que en cuanto la termine os podré contar más cosas interesantes sobre ella y sobre su forma de trabajo. Sólo adelanto que trabajamos con metodologías ágiles y con gente muy dispersa geográficamente hablando.
13 September 2010, 21:39
El pasado 9 de Septiembre estuve en Cheste (Valencia) en unas jornadas impartidas a profesores de formación profesional de la familia de informática y comunicaciones#.
En la presentación presenté las benevolencias de la pareja formada por Groovy&Grails y como podría mejorar la productividad de las personas que se decidan a utilizarlo. La charla anterior a la mia la realizó Lorenzo Gascón y en ella estuvo hablando sobre las pruebas unitarias y la integración continua e intenté aprovechar esta presentación para indicar que Grails es el framework perfecto para poder centrarnos en este tipo de pruebas y que el programador pueda olvidarse de determinados aspectos de configuración.
Aquí os dejo la presentación que llevé a cabo.
30 July 2010, 17:40
[1]
Si te propusieran empezar tus vacaciones con un curso en Londres, ¿lo harías? Pues yo sí y la verdad es que no me arrepiento para nada. Tras un tiempo buscando un curso para hacer este verano, mi novia encontró una serie de cursos muy interesantes en Londres en el Kensington and Chelsea College englobados dentro de una especie de escuela de verano.
Los cursos eran muy baratos (el mio costó 118 libras) así que no nos lo pensamos mucho y reservamos el curso al mismo tiempo que el vuelo. El curso por el que opté se llamaba Adobe Illustrator: Introduction y con este esperaba unas nociones básicas de diseño gráfico con este programa de Adobe que hasta el momento no conocía.
La verdad es que puedo decir que la experiencia ha sido muy enriquecidora y a todo el mundo al que le contaba la experiencia la encantaba esta forma de estar de vacaciones, pero al mismo aprovechar para aprender. Y si encima, tengo tiempo para hacer una especie de logo para mi blog, pues mejor que mejor. Eso sí, ¿dónde estaría yo cuando Dios repartió el arte del diseño gráfico? Ahí va mi logo… espero no herir la sensibilidad de los que leen esto.
Así que ya sabes, si el próximo verano quieres venir a Londres pero no para hacer el típico curso de inglés, échale un vistazo a la web del Kensington and Chelsea College porque quizás te puedan ofrecer algo interesante.
2 July 2010, 11:15
Una de las cosas que más me gustan en Grails es que, a partir de un esquema de clases de dominios, con un simple comando sea capaz de generar una aplicación completa. Pero, ¿cómo hace esto Grails?
Si nos movemos un poco por el núcleo de Grails encontraremos el directorio $GRAILS_HOME/src/grails/templates/scaffolding, en el que veremos una serie de archivos que son:
- Controller.groovy
- create.gsp
- edit.gsp
- list.gsp
- renderEditor.template
- show.gsp
Si echamos un vistazo rápido a estos archivos, nos daremos cuenta de que esas son las plantillas que Grails utiliza cuando hacemos un grails generate-all. Pero, ¿qué pasa si estas plantillas no nos gustan y queremos modificarlas?
Podemos optar por dos opciones. La primera de ellas supone modificar directamente y con mucho cuidado los archivos del directorio $GRAILS_HOME/src/grails/templates/scaffolding para que queden a nuestro gusto y con las necesidad de la aplicación a desarrollar. Sin embargo, esta opción tiene dos inconvenientes. El primero de ellos es que todas las aplicaciones generadas automáticamente con el scaffolding de Grails tendrán la misma apariencia, lo cual es muy probable que no queramos. Y el segundo inconveniente es que si actualizamos la versión de Grails, esas plantillas modificadas se perderán y tendremos que copiarlas de nuevo al núcleo de Grails.
La segunda opción pasa por utilizar esas mismas plantillas del núcleo de Grails pero que pasen a formar parte de la propia aplicación desarrollada. En Grails tenemos el comando grails install-templates que lo que hace básicamente es copiar esas plantillas del núcleo de Grails a un directorio propio del proyecto, en este caso $GRAILS_PROJECT/src/templates/scaffolding. Una vez estén las plantillas en ese directorio, ya podremos modificarlas a nuestro gusto. De esta forma, cuando ejecutemos un grails generate-all y Grails detecte que en ese directorio hay unas plantillas, utilizará éstas en lugar de las existentes en el núcleo de Grails.
22 June 2010, 13:53
Cuando empecé a desarrollar ManagerT1 una de las preguntas que me hacía era, ¿dónde lo voy a alojar? La idea era muy clara. Debía ser muy económico, cuando no gratuito, así que lancé una pregunta en twitter pidiendo ayuda sobre donde alojar mi aplicación desarrollada en Grails y gracias a Rafa Alemán, que al instante me recomendó una serie de sitios para alojar la aplicación, empecé a utilizar Stax.
Stax es un claro ejemplo de lo que ahora se llama Cloud Computing y que la verdad, aunque no sea muy modesto por mi parte, llevo más de 10 años haciendo desde que empecé a trabajar.
Stax es muy sencillo y rápido de utilizar. Simplemente debes bajar y configurar su SDK propio y a partir de ahí, empezar a desplegar los archivos war de tu aplicación desde la línea de comandos. Además, desde la propia consola de Stax podemos administrar tanto la base de datos asociada a la aplicación como la propia aplicación desplegada.
En definitiva, un buen servicio disponible para todos aquellos que empiezan con Grails y no quieren gastar mucho dinero en un hosting.
16 June 2010, 21:55
La 3ª edición del curso Groovy&Grails: desarrollo rápido de aplicaciones se celebrará del 1 al 10 de Septiembre en la Escuela Politécnica Superior de la Universidad de Alicante con una duración de 30 horas lectivas convalidables por 3 créditos de libre elección o por 30 horas por el ICE.
El curso empieza el miércoles 1 de Septiembre y termina el viernes 10 de Septiembre con un horario de 16:00h a 20:30h. Cada sesión tiene una duración de 2 horas y habrá un descanso de 30 minutos entre sesiones. En esta nueva edición utilizaremos la última versión de Groovy así como la última versión estable de Grails.
En las 4 primeras sesiones hablaremos sobre Groovy para pasar a hablar de Grails que serán las 11 sesiones restantes. La última sesión del curso es eminentemente práctica y se realizará el desarrollo completo de una aplicación completa. Esta aplicación será una mini-copia de Twitter.
El coste del curso es de 120€ y si tenéis cualquier tipo de duda con respecto al mismo, no tenéis más que contactar conmigo directamente a mi email fgarciarico@gmail.com. El plazo de inscripción ya está abierto y simplemente debes enviar un email a Domingo Gallardo con tu nombre, apellidos, DNI, teléfono de contacto y e-mail de contacto. También puedes hacerlo llamando al teléfono 965903900 o bien acudiendo directamente a la secretaría del Departamento de Ciencia de la Computación e Inteligencia Artificial.
3 June 2010, 17:17
En el anterior post os comentaba que acababa de publicar una nueva aplicación desarrollada íntegramente en Grails llamada ManagerT1. La aplicación une en un mismo sitio la afición por la Fórmula 1, Twitter y las apuestas, ya que permite enviar tus predicciones sobre el resultado del próximo Gran Premio de Fórmula mediante un mensaje de Twitter.
En esta entrada os voy a comentar como está hecha la aplicación, aunque por el momento no voy a dejar el código de la misma, no sea que alguien esté pensando en comprármela y vaya yo y se la regale.
La aplicación está desarrollada utilizando la última versión de Grails, la 1.3.1 y por un lado tenemos la parte pública, que es la que todos podéis ver y por otro un backend donde puedo controlar toda la información necesaria en la misma.
El desarrollo del backend ha sido íntegramente desarrollado utilizando el scaffolding estático que me permite Grails, no sin antes modificar las plantillas de Grails para que me generará unas plantillas tal y como yo quería.
La aplicación tiene 7 clases de dominio que son:
- User: que se encarga de almacenar la información de los usuarios registrados de la aplicación. Por el momento esta clase de dominio se encarga de gestionar el único usuario administrador de la aplicación, que soy yo.
- GrandPrix: que almacena la información de los grandes premios de esta temporada
- Pilot: con la información de todos los pilotos de todas las escuderías
- PilotName: que se encarga de relacionar posibles nombres de los pilotos en los tweets enviados con los pilotos oficiales. Por ejemplo, si alguien envia alonzo en su tweet, el sistema sabrá que alonzo se refiere al piloto Fernando Alonso.
- GrandPrixResult: una clase de dominio encargada de gestionar la información del podium de cada uno de los grandes premios
- ForecastGrandPrix: cada una de las predicciones enviadas por los usuarios de twitter será gestionar mediante esta clase de dominio
- GeneralClassification: que contendrá la puntuación de todos los usuarios que han participado en el ManagerT1
En cuanto a los controladores, cada una de las clases de dominio anteriormente comentadas tiene su propio controlador, a los cuales hay que añadir uno nuevo que encarga de gestionar la aplicación en la parte pública, al cual he llamado PublicController.
Para facilitar la labor del diseñador, que por el momento he sido yo mismo cogiendo una plantilla de Template World (aunque animo a que si alguien me quiere echar una mano con el diseño me escriba un mail a fgarciarico@gmail.com), he creado también una librería de etiquetas que se utilizan en la parte pública. En esta librería aparecen etiquetas para mostrar por pantalla la clasificación general, el último gran premio disputado o bien el próximo gran premio a disputar. Todo ello para facilitar la labor del diseñador que simplemente tendrá que invocar a una etiqueta tipo HTML sin preocuparse de lo que viene detrás.
En cuanto a los plugins instalados y necesarios para la aplicación están:
- hibernate: por defecto instalado por Grails
- jquery: lo he utilizado muy poco aunque espero hacer más cosas con él
- quartz: lo necesito para realizar tareas periódicas, como son la lectura de las tweets enviados a @managert1
- rest: necesario para leer el RSS con los tweets donde aparece una mención a @managert1
- social-bookmarks: para facilitar a los usuarios el uso de los favoritos en cualquiera de los servicios conocidos
- tomcat: para desarrollar la aplicación he trabajado con tomcat en local
Por último, comentar que los servicios de la aplicación simplemente se basan la lectura de los tweets que nombran a @managert1 para analizarlos y añadir la predicción en caso de que tengan el formato adecuado y también he utilizado un servicio para cada vez que se añada un resultado de un gran premio, se calcule la clasificación general.
Esto es el resumen de como está hecha la aplicación ManagerT1. La verdad es que la aplicación es muy sencilla y no se tardaría más de 15 horas desarrollarla desde cero teniendo claro desde el primer momento la estructura de la misma. Quizás lo más complicado de la misma ha estado en la lectura del RSS que me permite saber quien ha nombrado en la Twittersfera al usuario @managert1, pero solventado esto la aplicación no tiene grandes complicaciones.
¿Me echas una mano?
28 May 2010, 11:11
[1]
Durante esta semana he publicado una aplicación desarrollada íntegramente en Grails que me ha servido para seguir disfrutando de lo sencillo, rápido y organizado que es desarrollar aplicaciones con Grails.
La aplicación en cuestión se llama ManagerT1 y trata de unir en una única web la Fórmula 1, Twitter y las apuestas. ManagerT1 es un juego que consiste en que los usuarios que tengan cuentas en Twitter puedan escribir tweets con un formato determinado indicando cual creen que será el podium en el próximo Gran Premio de Fórmula 1 a disputar.
Si por ejemplo crees que en el próximo Gran Premio, Fernando Alonso terminará ganando, seguido de Pedro de la Rosa y como tercero Jaime Alguersuari debes escribir un tweet a través de tu cuenta en Twitter con el siguiente texto:
@managert1 alonso delarosa alguersuari
Muy sencillo, ¿verdad? No tienes que hacerte seguidor de @managert1, ni escribirle un mensaje directo y ni tan siquiera registrarte en la propia web. Simplemente utiliza tu cuenta en Twitter para convertirte en el mejor manager de la Fórmula 1 en Twitter.
En el próximo post, hablaré sobre como está desarrollada la aplicación contando todos los entresijos de la misma y el tiempo que me ha llevado desarrollarla, que ya os adelanto que ha sido muy poco.
« Entradas antiguas
Entradas recientes »