Your SlideShare is downloading. ×
Jobsket.com, Grails en un proyecto real
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Jobsket.com, Grails en un proyecto real

3,192

Published on

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,192
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
31
Comments
0
Likes
4
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Jobsket.com Grails en un proyecto real
  • 2.
    • Co-fundador de Jobsket
    • 3. Desarrollador Java, Grails, PHP, Rails...
    • 4. Google Summer of Code 2008 en Grails para The Codehaus
    • 5. Más en: www.jobsket.es/cv/dani :)
    ¿Y quién es este tío?
  • 6. Índice
    • ¿Qué es Jobsket?
    • 7. ¿Y Grails?
    • 8. La “magia” de Groovy
    • 9. Grails en Jobsket
  • 10. ¿Qué es Jobsket?
  • 11. Demo http://www.youtube.com/watch?v=ipw1f54AaDQ
  • 12. Algunos miembros del sector de empleo
  • 19. Team!!
  • 20. Equipo!
    • Los 3 fundadores somos técnicos
    • 21. 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.
    • 22. Jordi Monné(Barcelona – Lleida): Hacha con Spring y profundo conocedor de Lucene. Ex-JavaConGanas
  • 23. Grails
  • 24.
    • Framework web “full stack” para la plataforma Java
    • 25. Escrito en Java y Groovy
    • 26. Basado en conocidos proyectos Java: Spring, Hibernate, Tomcat, Sitemesh, Log4j, HSQLDB...
    • 27. Inspirado en Ruby on Rails
    • 28. Open Source: Licencia Apache 2
    • 29. Mantenido principalmente por SpringSource(división de VMWare)
    ¿Qué es Grails?
  • 30. Don't repeat yourself
      “ El mejor código es el que no existe” - Autor: ¿?
  • 31. Convention over Configuration http://geekandpoke.typepad.com/geekandpoke/2008/06/simply-explaine.html
  • 32. Artefactos de una app Grails
  • 37. Más caractarísticas interesantes
    • Scaffolding estático y dinámico
    • 38. I18n
    • 39. Framework de testing
    • 40. Soporte REST
    • 41. Cientos de plugins
  • 42. Más proyectos Grails en España
    • ringio.com
    • 43. bkool.com
    • 44. sellomovistar.es
    • 45. Ayuntamiento Vitoria( blogs.vitoria-gasteiz.org/ti )
    • 46. cuestamenos.com
    • 47. eljuegodelmundial.com( 1 mill páginas, hasta 40.000 visitas en media hora )
    • 48. SAYC ( Sistema de acceso y control de usuarios para Yell Publicidad)
    • 49. ticketbis.com
  • 50. Comunidad hispana
    • groovy.org.es
    • 51. grails.org.mx
    • 52. observatoriodegrails.com
    • 53. groups.google.es/group/grailsencastellano
    • 54. ¿grhispano.com? :P
  • 55. Groovy
  • 56. Características de Groovy
    • Lenguaje dinámico para la JVM
    • 57. Basado en las fortalezas de Java y en características de Ruby, Python y Smalltalk
    • 58. Menos ceremonosio y más expresivo que Java
    • 59. Curva de aprendizaje suave para programadores Java
    • 60. No existen tipos primitivos
    • 61. Compilado o script
  • 62. La “magia” de Groovy
    • Imports por defecto(java.util.*, java.io.*, java.net.*, groovy.util.*, BigDecimal, BigInteger)
    • 63. Compilación cruzada(joint compiling)
    • 64. El GDK extiende el JDK
    • 65. Unit testing y mocking “out-of-the-box”
    • 66. Expandos y MOP para añadir o modificar métodos y atributos en tiempo de ejecución
  • 67. Groovy es más que Grails
    • Griffon: “el grails” para el escritorio
    • 68. Easyb: framework de testing BDD
    • 69. Gaelyk: framework web para AppEngine
    • 70. Gant: DSL de Ant
    • 71. Spock: (otro)framework de testing BDD
    • 72. Gmock: framework de mocking
    • 73. Play!: sólo en su sistema de templates
    • 74. ...
  • 75. Grails en Jobsket
  • 76. Arquitectura
  • 77. Cifras
    • Grails 1.2.2
    • 78. 3 instancias de Tomcat
    • 79. 3 bases de datos MySQL
    • 80. 70000 líneas de código
    • 81. Aproximadamente el 70% es Java
    • 82. 20 crawling threads
  • 83. ¿Y cómo es ese 70-30?
    • Utilizamos Groovy en:
    • Objetivo: Maximizar la productividad con nuestro conocimiento en Java + Plataforma Grails
  • 87. http://geekandpoke.typepad.com/geekandpoke/2008/04/clash-of-cultur.html
  • 88. Herramientas Java que usamos
    • Spring Framework
    • 89. Hibernate
    • 90. Compass
    • 91. Hudson
    • 92. Más librerías: Lucene, Commons, POI, JasperReports/iReport, FOP...
  • 93. Spring Framework
    • Base de la infraestructura de Grails y es natural utilizarlo
    • 94. Los servicios de Grails están disponibles en el contexto por convención
    • 95. resources.xml: Configuración típica con XML
    • 96. Annotations de Spring
    • 97. resources.groovy: DSL en groovy
  • 98. Hibernate
    • Por estar debajo de GORM ya está integrado
    • 99. Miedo a que Grails no nos sirviera
    • 100. Múltiples DataSources
          • GORM en una db
          • 101. HibernateDaoSupport para la otra
  • 102. Compass
    • Framework que facilita la integración de búsquedas full-test con Lucene
    • 103. No nos servía el plugin Searchable
    • 104. Integración como en cualquier proyecto Java:
          • Configuración XML
          • 105. Anotación @Searchable
  • 106. Hudson
    • Servidor de Integración Continua
    • 107. Existe un plugin para Grails
  • 108. Sacamos partido a lo “clásico”
    • Modificamos controllers, taglibs, filtros y gsp's sin necesidad de reiniciar el servidor local
    • 109. Plugins de terceros
    • 110. Los taglibs para reutilizar lógica de presentación
    • 111. Tests de integración muy sencillos de implementar
    • 112. Hemos dividido Jobsket en plugins
  • 113. Plugins que utilizamos
  • 118. Reutilizando elementos de presentación con Taglibs
    • Mucho más simple que con JSP(closure en una clase groovy)
    • 119. Repetimos menos código en los controllers y es más potente que templates GSP
    • 120. Los taglibs son testeables
    • 121. Reutilizables en controllers y otros tags
  • 122. 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 } }
  • 123. 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
  • 124.
      ¡¡GRACIAS!! ;) ¿Preguntas? http://www.slideshare.net/jobsket Email: [email_address] Blog: www.danilat.com/weblog Twitter: @dani_latorre
    Se acabó

×