Your SlideShare is downloading. ×
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
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,197

Published on

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

No Downloads
Views
Total Views
3,197
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ó

×