SlideShare ist ein Scribd-Unternehmen logo
1 von 47
Downloaden Sie, um offline zu lesen
obra publicada por javier ramirez como
‘Atribución-No Comercial-Licenciar Igual 2.5’ de Creative Commons
proyecto a realizar


 youfacetwittflickpoopr


 Yoozoombaflooh

 Moonchimpklanx
queridos reyes magos...

buscador, generación de pdfs, caché,integración
con APIs de terceros, tratamiento de feeds,
multi-idioma, Ajax, procesos de fondo, envío de
mails, autenticación con roles, backend, foros,
chat, edición de texto con formato, popups con
estilo, notificación de excepciones, captcha,
control de spam, upload de ficheros, creación de
thumbnails,creación de gráficas/informes,
notificación de excepciones, tests, análisis de
rendimiento...



           ...el típico proyecto
“voy a programarlo todo desde cero, así
aprenderé mucho más y tendré el control
total del proyecto”




                  interneeeeeeeeeeeeeeeeee
planificando el proyecto


 “yo creo que para
 cuando termine de
 pagar la hipoteca
 ya habré terminado
 la fase I”




   gracias de antemano
Se estima que la rueda fue
inventada en el quinto
milenio a.c.
en Mesopotamia
        wikipedia
no reinventes la rueda..




                                elige la tuya!!

                * fotos extraídas de flicker. con licencia CC
no eres especial.. supéralo
para (casi) cualquier funcionalidad que
no sea propia de la lógica de negocio,
existen componentes desarrollados que
hacen exactamente lo que necesitas...


.. o que podrían hacerlo con unos
cuantos cambios..


recuerda.. open source
no significa que sea gratis, significa
que puedes ver y modificar el fuente
gemas/plugins: dónde buscar
 => agilewebdevelopment.com/plugins
 desactualizado a veces, sólo plugins

 => rubyforge.org
 sin feedback de usuarios

 => github.com
 sin feedback. No especializado en ruby/rails

 => code.google.com
 sin feedback. No especializado en ruby/rails

 => workingwithrails.com toolbox
 sin feedback. desactualizado

 => google.com
 buena suerte!!
objetivos

=> identificar componentes existentes
sobre los que desarrollar un proyecto
rails no trivial a día de hoy

=> ver cuál es la alternativa escogida
mayoritariamente en cada categoría

=> escuchar experiencias de proyectos
donde se hayan usado estos componentes
en la vida realtm
mecánica
=> Presentación de la categoría y las
alternativas identificadas

=> Votación mediante papeles de colores

=> Comentarios del respetable público
acerca de los puntos fuertes/débiles de
cada alternativa

=> Si alguien quiere hablar de alguna
alternativa no contemplada, perfecto!

p.s. no seáis /.{8}/ y participad ;)
framework desarrollo web



Ruby on Rails                       J2EE +
                                    Struts +
                                    Tiles +
                                    Java Server Faces
                                    Hibernate



  H OT!                                               N OT!

          * disclaimer: comparativa humorística para probar la mecánica
file upload




paperclip           attachment_fu




  H OT!                     N OT!
framework javascript




prototype js       jquery + jrails




    H OT!                 H OT!
tratamiento imágenes




ImageMagick           image science
 rmagick
 minimagick




  H OT!                          N OT!
internacionalización (vistas)




     get_text                              gibberish




         H OT!                                         N OT!

* preguntar por globalize, i10n y otras alternativas
internacionalización (modelos)




globalize         translate_column /
                  Simplified
                  Translation




  N OT!                  H OT!
notificación excepciones




exception           hoptoad
notifier            notifier




  H OT!                        N OT!
procesos de fondo




beanstalkd         starling
                   (+ simplified_starling)




  N OT!                       H OT!
buscador (engine, no plugin)




sphinx             solr




  H OT!                     N OT!
plugin para sphinx




ultra_sphinx         thinking_sphinx




  H OT!                        N OT!
profiling / rendimiento




ruby_prof +        new_relic_rpm
query_reviewer




  N OT!                        H OT!

                    * preguntar por fireruns tuneUp
test mock objects




FlexMock             Mocha




  N OT!                        H OT!
factorías de objetos de test




FixtureReplacement   factory girl /
                     machinist




   H OT!                     N OT!
framework para testing




shoulda                rSpec




  H OT!                        H OT!
base de datos




postgreSQL           mySQL




  N OT!                      H OT!
servidor front-end




nginx                apache




  H OT!                        N OT!
servidor rails




servidor separado   passenger
 mongrel
 thin




  H OT!                               N OT!

                    * preguntar por jRuby en producción
deploy




capistrano        vlad /
                  otros




  H OT!                    N OT!
texto con formato




markdown            BBCode
 BlueCloth           bb-ruby




  H OT!                        N OT!
editores WYSIWYG (LQVELQH)




tinyMCE            FCKEditor




  H OT!                     N OT!
ventanas flotantes/modales




redbox             lightbox




  N OT!                        H OT!

                    * comentar windows/xilnius
generación pdf

basados en ruby:       basados en JAVA:

rfpdf                   apache FOP

prawn                   flying saucer

              RTeX
   OT!                      N OT!
  N
                   !
               HOT
gráficas




gruff           google charts
                 gc4r




  N OT!                H OT!
agregador web




hpricot              automatización
 mechanize            watir
 scrubyt              firewatir




  H OT!                                N OT!

                     * preguntar por engine javascript
lectura de feeds




acts_as_feeder      SimpleRSS




  N OT!                          H OT!

                   * preguntar por google AJAX Feed API
parser XML




ReXML          libxml
autenticación




   restful                        open_id
   authentication                 authentication




* acts_as_authenticated
gestionar cambios de estado




acts_as           ad-hoc,
state_machine     observers...
tags




acts_as           acts_as
taggable          taggable
_on               _on_steroids
envío masivo de e-mail




ar_mailer en       servicio externo
localhost
CAPTCHA




Simple Captcha     ReCAPTCHA
chat




flash                comet
 juggernaut           orbited




                 * preguntar por irc y xmpp
DRY RESTful controllers




resource          resources
controller        controller
Scaffolding / Backend




Active Scaffold   Streamlined /
                  Otros




                         * preguntar por Typus
sanitize de textos




simple                white_list
_text
_fields




                   * comentar white_list_formatted_content
obra publicada por javier ramirez como
‘Atribución-No Comercial-Licenciar Igual 2.5’ de Creative Commons

Weitere ähnliche Inhalte

Was ist angesagt?

Cambia la forma de desarrollar tus aplicaciones web con groovy y grails
Cambia la forma de desarrollar tus aplicaciones web con groovy y grailsCambia la forma de desarrollar tus aplicaciones web con groovy y grails
Cambia la forma de desarrollar tus aplicaciones web con groovy y grails
Fátima Casaú Pérez
 
Curso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPVCurso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPV
Irontec
 

Was ist angesagt? (20)

Masterclass PHP 5.3
Masterclass PHP 5.3Masterclass PHP 5.3
Masterclass PHP 5.3
 
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
 
¿Porqué Python? ...y Django
¿Porqué Python? ...y Django¿Porqué Python? ...y Django
¿Porqué Python? ...y Django
 
Java world
Java worldJava world
Java world
 
Cambia la forma de desarrollar tus aplicaciones web con groovy y grails
Cambia la forma de desarrollar tus aplicaciones web con groovy y grailsCambia la forma de desarrollar tus aplicaciones web con groovy y grails
Cambia la forma de desarrollar tus aplicaciones web con groovy y grails
 
Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Symfony2: Framework para PHP5
Symfony2: Framework para PHP5
 
Python 4
Python 4Python 4
Python 4
 
Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP
 
Grails
GrailsGrails
Grails
 
Desarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfonyDesarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfony
 
Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript
Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript
Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript
 
Pucela testingdays testing_en_php
Pucela testingdays testing_en_phpPucela testingdays testing_en_php
Pucela testingdays testing_en_php
 
Curso Php
Curso PhpCurso Php
Curso Php
 
Curso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPVCurso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPV
 
Zen Scaffolding - Programador PHP
Zen Scaffolding - Programador PHPZen Scaffolding - Programador PHP
Zen Scaffolding - Programador PHP
 
Iniciación PHP 5. Introducción
Iniciación PHP 5. IntroducciónIniciación PHP 5. Introducción
Iniciación PHP 5. Introducción
 
Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...
Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...
Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...
 
Symfony2: Interacción con CSS, JS y HTML5
Symfony2: Interacción con CSS, JS y HTML5Symfony2: Interacción con CSS, JS y HTML5
Symfony2: Interacción con CSS, JS y HTML5
 
TypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browser
TypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browserTypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browser
TypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browser
 
Codemotion 2013 - Quiero tiempo real y lo quiero para ayer
Codemotion 2013 - Quiero tiempo real y lo quiero para ayerCodemotion 2013 - Quiero tiempo real y lo quiero para ayer
Codemotion 2013 - Quiero tiempo real y lo quiero para ayer
 

Ähnlich wie Javier.Ramirez.Rails.Hot.Or.Not.Conferenciarails2008

Jesús Olmos - ChromeHack, a html5/chrome webhack tool [Rooted CON 2013]
Jesús Olmos - ChromeHack, a html5/chrome webhack tool [Rooted CON 2013]Jesús Olmos - ChromeHack, a html5/chrome webhack tool [Rooted CON 2013]
Jesús Olmos - ChromeHack, a html5/chrome webhack tool [Rooted CON 2013]
RootedCON
 
Alta disponibilidad-postgres
Alta disponibilidad-postgresAlta disponibilidad-postgres
Alta disponibilidad-postgres
Lenin Hernandez
 

Ähnlich wie Javier.Ramirez.Rails.Hot.Or.Not.Conferenciarails2008 (20)

PHP Con symfony
PHP Con symfonyPHP Con symfony
PHP Con symfony
 
Codemotion Madrid 2019 - ¡GraalVM y Micronaut: compañeros perfectos!
Codemotion Madrid 2019 - ¡GraalVM y Micronaut: compañeros perfectos!Codemotion Madrid 2019 - ¡GraalVM y Micronaut: compañeros perfectos!
Codemotion Madrid 2019 - ¡GraalVM y Micronaut: compañeros perfectos!
 
CommitConf 2019 - Micronaut y GraalVm: La combinación perfecta
CommitConf 2019 - Micronaut y GraalVm: La combinación perfectaCommitConf 2019 - Micronaut y GraalVm: La combinación perfecta
CommitConf 2019 - Micronaut y GraalVm: La combinación perfecta
 
Plone en La Jornada
Plone en La JornadaPlone en La Jornada
Plone en La Jornada
 
El Ferrocarril Contra Los Arboles Muertos2
El Ferrocarril Contra Los Arboles Muertos2El Ferrocarril Contra Los Arboles Muertos2
El Ferrocarril Contra Los Arboles Muertos2
 
Mi Primera Aplicacion en Google App Engine
Mi Primera Aplicacion en Google App EngineMi Primera Aplicacion en Google App Engine
Mi Primera Aplicacion en Google App Engine
 
Jesús Olmos - ChromeHack, a html5/chrome webhack tool [Rooted CON 2013]
Jesús Olmos - ChromeHack, a html5/chrome webhack tool [Rooted CON 2013]Jesús Olmos - ChromeHack, a html5/chrome webhack tool [Rooted CON 2013]
Jesús Olmos - ChromeHack, a html5/chrome webhack tool [Rooted CON 2013]
 
Django
DjangoDjango
Django
 
Rendimiento en magento
Rendimiento en magentoRendimiento en magento
Rendimiento en magento
 
Protocol Buffer Fantásticos y donde encontrarlos
Protocol Buffer Fantásticos y donde encontrarlosProtocol Buffer Fantásticos y donde encontrarlos
Protocol Buffer Fantásticos y donde encontrarlos
 
Práctica 4 IV/DAI: Presentación Cafeteros Cocorocó
Práctica 4 IV/DAI: Presentación Cafeteros Cocorocó Práctica 4 IV/DAI: Presentación Cafeteros Cocorocó
Práctica 4 IV/DAI: Presentación Cafeteros Cocorocó
 
Mi timeline programando desde el notepad a la nube
Mi timeline programando desde el notepad a la nubeMi timeline programando desde el notepad a la nube
Mi timeline programando desde el notepad a la nube
 
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceARLa Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
 
APIs REST: Django y Go
APIs REST: Django y GoAPIs REST: Django y Go
APIs REST: Django y Go
 
Alta disponibilidad-postgres
Alta disponibilidad-postgresAlta disponibilidad-postgres
Alta disponibilidad-postgres
 
Casper JS - Asegurando la calidad en front-end Drupal
Casper JS - Asegurando la calidad en front-end DrupalCasper JS - Asegurando la calidad en front-end Drupal
Casper JS - Asegurando la calidad en front-end Drupal
 
Programación basada en componentes para Programadores Python
Programación basada en componentes para Programadores PythonProgramación basada en componentes para Programadores Python
Programación basada en componentes para Programadores Python
 
Qué puede aprender Drupal de Plone
Qué puede aprender Drupal de PloneQué puede aprender Drupal de Plone
Qué puede aprender Drupal de Plone
 
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
 
Code Blast 2012 - Node.js
Code Blast 2012 - Node.jsCode Blast 2012 - Node.js
Code Blast 2012 - Node.js
 

Mehr von javier ramirez

Mehr von javier ramirez (20)

¿Se puede vivir del open source? T3chfest
¿Se puede vivir del open source? T3chfest¿Se puede vivir del open source? T3chfest
¿Se puede vivir del open source? T3chfest
 
QuestDB: The building blocks of a fast open-source time-series database
QuestDB: The building blocks of a fast open-source time-series databaseQuestDB: The building blocks of a fast open-source time-series database
QuestDB: The building blocks of a fast open-source time-series database
 
Como creamos QuestDB Cloud, un SaaS basado en Kubernetes alrededor de QuestDB...
Como creamos QuestDB Cloud, un SaaS basado en Kubernetes alrededor de QuestDB...Como creamos QuestDB Cloud, un SaaS basado en Kubernetes alrededor de QuestDB...
Como creamos QuestDB Cloud, un SaaS basado en Kubernetes alrededor de QuestDB...
 
Ingesting Over Four Million Rows Per Second With QuestDB Timeseries Database ...
Ingesting Over Four Million Rows Per Second With QuestDB Timeseries Database ...Ingesting Over Four Million Rows Per Second With QuestDB Timeseries Database ...
Ingesting Over Four Million Rows Per Second With QuestDB Timeseries Database ...
 
Deduplicating and analysing time-series data with Apache Beam and QuestDB
Deduplicating and analysing time-series data with Apache Beam and QuestDBDeduplicating and analysing time-series data with Apache Beam and QuestDB
Deduplicating and analysing time-series data with Apache Beam and QuestDB
 
Your Database Cannot Do this (well)
Your Database Cannot Do this (well)Your Database Cannot Do this (well)
Your Database Cannot Do this (well)
 
Your Timestamps Deserve Better than a Generic Database
Your Timestamps Deserve Better than a Generic DatabaseYour Timestamps Deserve Better than a Generic Database
Your Timestamps Deserve Better than a Generic Database
 
Cómo se diseña una base de datos que pueda ingerir más de cuatro millones de ...
Cómo se diseña una base de datos que pueda ingerir más de cuatro millones de ...Cómo se diseña una base de datos que pueda ingerir más de cuatro millones de ...
Cómo se diseña una base de datos que pueda ingerir más de cuatro millones de ...
 
QuestDB-Community-Call-20220728
QuestDB-Community-Call-20220728QuestDB-Community-Call-20220728
QuestDB-Community-Call-20220728
 
Processing and analysing streaming data with Python. Pycon Italy 2022
Processing and analysing streaming  data with Python. Pycon Italy 2022Processing and analysing streaming  data with Python. Pycon Italy 2022
Processing and analysing streaming data with Python. Pycon Italy 2022
 
QuestDB: ingesting a million time series per second on a single instance. Big...
QuestDB: ingesting a million time series per second on a single instance. Big...QuestDB: ingesting a million time series per second on a single instance. Big...
QuestDB: ingesting a million time series per second on a single instance. Big...
 
Servicios e infraestructura de AWS y la próxima región en Aragón
Servicios e infraestructura de AWS y la próxima región en AragónServicios e infraestructura de AWS y la próxima región en Aragón
Servicios e infraestructura de AWS y la próxima región en Aragón
 
Primeros pasos en desarrollo serverless
Primeros pasos en desarrollo serverlessPrimeros pasos en desarrollo serverless
Primeros pasos en desarrollo serverless
 
How AWS is reinventing the cloud
How AWS is reinventing the cloudHow AWS is reinventing the cloud
How AWS is reinventing the cloud
 
Analitica de datos en tiempo real con Apache Flink y Apache BEAM
Analitica de datos en tiempo real con Apache Flink y Apache BEAMAnalitica de datos en tiempo real con Apache Flink y Apache BEAM
Analitica de datos en tiempo real con Apache Flink y Apache BEAM
 
Getting started with streaming analytics
Getting started with streaming analyticsGetting started with streaming analytics
Getting started with streaming analytics
 
Getting started with streaming analytics: Setting up a pipeline
Getting started with streaming analytics: Setting up a pipelineGetting started with streaming analytics: Setting up a pipeline
Getting started with streaming analytics: Setting up a pipeline
 
Getting started with streaming analytics: Deep Dive
Getting started with streaming analytics: Deep DiveGetting started with streaming analytics: Deep Dive
Getting started with streaming analytics: Deep Dive
 
Getting started with streaming analytics: streaming basics (1 of 3)
Getting started with streaming analytics: streaming basics (1 of 3)Getting started with streaming analytics: streaming basics (1 of 3)
Getting started with streaming analytics: streaming basics (1 of 3)
 
Monitorización de seguridad y detección de amenazas con AWS
Monitorización de seguridad y detección de amenazas con AWSMonitorización de seguridad y detección de amenazas con AWS
Monitorización de seguridad y detección de amenazas con AWS
 

Kürzlich hochgeladen

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 

Kürzlich hochgeladen (15)

Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 

Javier.Ramirez.Rails.Hot.Or.Not.Conferenciarails2008