• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Jobsket.com, Grails en un proyecto real
 

Jobsket.com, Grails en un proyecto real

on

  • 3,663 views

 

Statistics

Views

Total Views
3,663
Views on SlideShare
3,142
Embed Views
521

Actions

Likes
4
Downloads
28
Comments
0

7 Embeds 521

http://www.danilat.com 432
http://www.planetacodigo.com 83
http://www.linkedin.com 2
http://feeds.feedburner.com 1
http://webcache.googleusercontent.com 1
http://translate.googleusercontent.com 1
https://www.linkedin.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Jobsket.com, Grails en un proyecto real Jobsket.com, Grails en un proyecto real Presentation Transcript

    • Jobsket.com Grails en un proyecto real
      • Co-fundador de Jobsket
      • Desarrollador Java, Grails, PHP, Rails...
      • Google Summer of Code 2008 en Grails para The Codehaus
      • Más en: www.jobsket.es/cv/dani :)
      ¿Y quién es este tío?
    • Índice
      • ¿Qué es Jobsket?
      • ¿Y Grails?
      • La “magia” de Groovy
      • Grails en Jobsket
    • ¿Qué es Jobsket?
    • Demo http://www.youtube.com/watch?v=ipw1f54AaDQ
    • Algunos miembros del sector de empleo
      • Infojobs
      • Trovit
      • Monster
      • Infoempleo
      • Xing
      • Redtrabaj@
      • ...
    • Team!!
    • Equipo!
      • Los 3 fundadores somos técnicos
      • Martín Pérez(Dublín – A Coruña): Superprofesional del software con +10 años trabajando con Java. Terminó como senior architect/contractor en Irlanda.
      • Jordi Monné(Barcelona – Lleida): Hacha con Spring y profundo conocedor de Lucene. Ex-JavaConGanas
    • Grails
      • Framework web “full stack” para la plataforma Java
      • Escrito en Java y Groovy
      • Basado en conocidos proyectos Java: Spring, Hibernate, Tomcat, Sitemesh, Log4j, HSQLDB...
      • Inspirado en Ruby on Rails
      • Open Source: Licencia Apache 2
      • Mantenido principalmente por SpringSource(división de VMWare)
      ¿Qué es Grails?
    • Don't repeat yourself
        “ El mejor código es el que no existe” - Autor: ¿?
    • Convention over Configuration http://geekandpoke.typepad.com/geekandpoke/2008/06/simply-explaine.html
    • Artefactos de una app Grails
      • Clases de dominio(GORM)
      • Servicios
      • Controladores
      • Vistas
      • Librerías de tags
    • Más caractarísticas interesantes
      • Scaffolding estático y dinámico
      • I18n
      • Framework de testing
      • Soporte REST
      • Cientos de plugins
    • Más proyectos Grails en España
      • ringio.com
      • bkool.com
      • sellomovistar.es
      • Ayuntamiento Vitoria( blogs.vitoria-gasteiz.org/ti )
      • cuestamenos.com
      • eljuegodelmundial.com( 1 mill páginas, hasta 40.000 visitas en media hora )
      • SAYC ( Sistema de acceso y control de usuarios para Yell Publicidad)
      • ticketbis.com
    • Comunidad hispana
      • groovy.org.es
      • grails.org.mx
      • observatoriodegrails.com
      • groups.google.es/group/grailsencastellano
      • ¿grhispano.com? :P
    • Groovy
    • Características de Groovy
      • Lenguaje dinámico para la JVM
      • Basado en las fortalezas de Java y en características de Ruby, Python y Smalltalk
      • Menos ceremonosio y más expresivo que Java
      • Curva de aprendizaje suave para programadores Java
      • No existen tipos primitivos
      • Compilado o script
    • La “magia” de Groovy
      • Imports por defecto(java.util.*, java.io.*, java.net.*, groovy.util.*, BigDecimal, BigInteger)
      • Compilación cruzada(joint compiling)
      • El GDK extiende el JDK
      • Unit testing y mocking “out-of-the-box”
      • Expandos y MOP para añadir o modificar métodos y atributos en tiempo de ejecución
    • Groovy es más que Grails
      • Griffon: “el grails” para el escritorio
      • Easyb: framework de testing BDD
      • Gaelyk: framework web para AppEngine
      • Gant: DSL de Ant
      • Spock: (otro)framework de testing BDD
      • Gmock: framework de mocking
      • Play!: sólo en su sistema de templates
      • ...
    • Grails en Jobsket
    • Arquitectura
    • Cifras
      • Grails 1.2.2
      • 3 instancias de Tomcat
      • 3 bases de datos MySQL
      • 70000 líneas de código
      • Aproximadamente el 70% es Java
      • 20 crawling threads
    • ¿Y cómo es ese 70-30?
      • Utilizamos Groovy en:
            • Controllers
            • TagLibs
            • Tests
            • Filters
      • Objetivo: Maximizar la productividad con nuestro conocimiento en Java + Plataforma Grails
    • http://geekandpoke.typepad.com/geekandpoke/2008/04/clash-of-cultur.html
    • Herramientas Java que usamos
      • Spring Framework
      • Hibernate
      • Compass
      • Hudson
      • Más librerías: Lucene, Commons, POI, JasperReports/iReport, FOP...
    • Spring Framework
      • Base de la infraestructura de Grails y es natural utilizarlo
      • Los servicios de Grails están disponibles en el contexto por convención
      • resources.xml: Configuración típica con XML
      • Annotations de Spring
      • resources.groovy: DSL en groovy
    • Hibernate
      • Por estar debajo de GORM ya está integrado
      • Miedo a que Grails no nos sirviera
      • Múltiples DataSources
            • GORM en una db
            • HibernateDaoSupport para la otra
    • Compass
      • Framework que facilita la integración de búsquedas full-test con Lucene
      • No nos servía el plugin Searchable
      • Integración como en cualquier proyecto Java:
            • Configuración XML
            • Anotación @Searchable
    • Hudson
      • Servidor de Integración Continua
      • Existe un plugin para Grails
    • Sacamos partido a lo “clásico”
      • Modificamos controllers, taglibs, filtros y gsp's sin necesidad de reiniciar el servidor local
      • Plugins de terceros
      • Los taglibs para reutilizar lógica de presentación
      • Tests de integración muy sencillos de implementar
      • Hemos dividido Jobsket en plugins
    • Plugins que utilizamos
      • Image Tools
      • Avatar
      • Webtest
      • Grails UI(componentes de Yahoo UI)
      • Spring WebFlow
    • Reutilizando elementos de presentación con Taglibs
      • Mucho más simple que con JSP(closure en una clase groovy)
      • Repetimos menos código en los controllers y es más potente que templates GSP
      • Los taglibs son testeables
      • Reutilizables en controllers y otros tags
    • Probando un controller
        class JobOfferControllerTests extends GroovyTestCase {
      def jobOffersService void testCreateJobOffer () { def controller = new JobOffersController() controller.jobOffersService = jobOffersService controller.params.title = "Groovy Ninja" controller.params.city = "Santa Cruz" controller.save() assertEquals "/joboffer/index" , controller.response.redirectedUrl def jobOffers = jobOffersService.findAllJobOffers() assertEquals 1 , jobOffers.size() assertEquals "Santa Cruz" , jobOffers[0].city assertEquals "Groovy Ninja" , jobOffers[0].title } }
    • Aprovechando el dinamismo de Groovy
      • Añadir métodos a clases que no son nuestras
            • “ hello”.appendIfNotNull(null)
      • Hacer stubbing de nuestras clases en los tests
            • mailService.metaClass.sendMail = { u, m-> .... }
      • Modificar taglibs estándar de Grails
      • ¡¡GRACIAS!! ;) ¿Preguntas? http://www.slideshare.net/jobsket Email: [email_address] Blog: www.danilat.com/weblog Twitter: @dani_latorre
      Se acabó