160
Ruby A apresentação já vai começar ...

Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Embed Size (px)

DESCRIPTION

Esta é a palestra que dei no Consegi 2010 em Brasília. Sobre dicas gerais sobre web, em particular implementando com Ruby on Rails. YSlow, Full Text Search e Tarefas Assíncronas.

Citation preview

Page 1: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

RubyA apresentação já vai começar ...

Page 2: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 3: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

AkitaOnRails.com@AkitaOnRails

Page 4: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

AkitaOnRails.com@AkitaOnRails

Page 5: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 7: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Entendendo a WebDicas sobre Desenvolvimento Web com Ruby

Fabio Akita

Page 8: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 9: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Recapitulando ...

Page 10: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Rails não Escala

Page 11: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Rails não Escala(TM)

Page 12: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 13: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 14: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 15: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 17: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Para colocar as coisas em perspectiva, o Friendster foi

escrito em Java e eles mudaram para PHP. MySpace foi escrito

em ColdFusion e eles mudaram para ASP.NET.

Blaine Cook

http://www.akitaonrails.com/2008/6/17/chatting-with-blaine-cook-twitter

Page 18: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Para colocar as coisas em perspectiva, o Friendster foi

escrito em Java e eles mudaram para PHP. MySpace foi escrito

em ColdFusion e eles mudaram para ASP.NET.

Blaine Cook

http://www.akitaonrails.com/2008/6/17/chatting-with-blaine-cook-twitter

Quando as pessoas caem em problemas de escalabilidade, normalmente acham que a

linguagem é o problema, mas eu acho que isso raramente é a

realidade.

Page 19: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

http://www.computerworld.com.au/article/268003/ruby_rails_rolls_into_enterprise?fp=16&fpid=1

“O The New York Times usou Ruby on Rails para agregar, analizar e mostrar os resultados das

eleições em quase tempo real em um de seus sites mais acessados de todos os tempos.”

Page 20: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

http://www.computerworld.com.au/article/268003/ruby_rails_rolls_into_enterprise?fp=16&fpid=1

“O The New York Times usou Ruby on Rails para agregar, analizar e mostrar os resultados das

eleições em quase tempo real em um de seus sites mais acessados de todos os tempos.”

Page 21: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Web Server

MySQL

Browser

Page 22: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Web Server

MySQL

Browser

Varnish/HAProxy

Page 23: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Web Server

MySQL

Browser

Varnish/HAProxy

Memcached

Page 24: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Web Server

MySQL

Browser

Varnish/HAProxy

Memcached

CouchDB/MongoDB

Page 25: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Ruby é Lento

Page 26: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Ruby é Lento(TM)

Page 27: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Existem mentiras, mentiras malditas e

estatísticas.

Page 28: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Existem mentiras, mentiras malditas e

estatísticas.

Page 29: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Existem mentiras, mentiras malditas e

estatísticas.

Page 30: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 31: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

x mais lento que C++

Page 32: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

0 32.565

97.5130

Python 2

Ruby 1.9

JRuby

Perl

Python 3

PHP

Ruby 1.8

x mais lento que C++

Page 33: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

0 32.565

97.5130

Python 2

Ruby 1.9

JRuby

Perl

Python 3

PHP

Ruby 1.8

x mais lento que C++

Page 34: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Homepage: 331 ms

Page 35: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Homepage: 331 ms

Total: 5.45 s

Page 36: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Performance!=

Escalabilidade

Page 37: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Sempre se Lembre

Poderíamos contratar um Macaco Treinadopara fazer seu Trabalho!

Page 38: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Na Prática

Page 39: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 40: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 41: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 42: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 43: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 44: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 45: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 46: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 47: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 48: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

6Técnicas

Page 49: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Menos Requisições

Page 50: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Mini!que CSS e Javascript

Page 51: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Juicerhttp://github.com/cjohansen/juicer/

Page 52: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

gem install juicer

script/plugin install git://github.com/ktheory/juicer-rails.git

Page 53: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

gem install juicer

script/plugin install git://github.com/ktheory/juicer-rails.git

Page 54: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

juicer install yuicompressor

juicer install jslint

juicer install closure_compiler

Page 55: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

juicer install yuicompressor

juicer install jslint

juicer install closure_compiler

Page 56: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

juicer install yuicompressor

juicer install jslint

juicer install closure_compiler

Page 57: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

<%= juiced_tag '/stylesheets/application.css' %>

<%= yield(:head) %>

</head>

<body>

...

<%= juiced_tag '/javascripts/application.js' %>

</body>

/app/views/layouts/application.html.erb

Page 58: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

<%= juiced_tag '/stylesheets/application.css' %>

<%= yield(:head) %>

</head>

<body>

...

<%= juiced_tag '/javascripts/application.js' %>

</body>

/app/views/layouts/application.html.erb

Page 59: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

@import url("reset.css");@import url("base.css");@import url("fonts.css");

...

/* @depends jquery-1.4.min.js @depends jquery.edit_in_place.js @depends jqueryamail.js*/

...

/public/stylesheets/application.css

/public/javascripts/application.js

Page 60: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

@import url("reset.css");@import url("base.css");@import url("fonts.css");

...

/* @depends jquery-1.4.min.js @depends jquery.edit_in_place.js @depends jqueryamail.js*/

...

/public/stylesheets/application.css

/public/javascripts/application.js

Page 61: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

juicer merge public/stylesheets/application.css

public/stylesheets/application.min.css

juicer merge -i public/javascripts/application.js

public/javascripts/application.min.js

Page 62: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

juicer merge public/stylesheets/application.css

public/stylesheets/application.min.css

juicer merge -i public/javascripts/application.js

public/javascripts/application.min.js

Page 63: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

juicer merge public/stylesheets/application.css

public/stylesheets/application.min.css

juicer merge -i public/javascripts/application.js

public/javascripts/application.min.js

Page 64: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

juicer merge public/stylesheets/application.css

public/stylesheets/application.min.css

juicer merge -i public/javascripts/application.js

public/javascripts/application.min.js

Page 65: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

DEVELOPMENT

Page 66: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

DEVELOPMENT

Page 67: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

PRODUCTION

Page 68: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

PRODUCTION

Page 69: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Asset HostsNavegadores abrem poucas conexões

simultâneas por domínio

Page 70: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 71: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 72: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

/app/views/hello/gallery.html.erb

<% title "Gallery" %>

<% @images.each do |image| -%>

<%= image_tag "gallery/#{image}" %>

<% end -%>

Page 73: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

/app/views/hello/gallery.html.erb

<% title "Gallery" %>

<% @images.each do |image| -%>

<%= image_tag "gallery/#{image}" %>

<% end -%>

Page 74: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

DEVELOPMENT

Page 75: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

DEVELOPMENT

Page 76: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

/con!g/environments/production.rb

"#{protocol}://asset#{rand(6) + 1}.akitaonrails.local:3000"

Page 77: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

/con!g/environments/production.rb

"#{protocol}://asset#{rand(6) + 1}.akitaonrails.local:3000"

Page 78: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

### Host Database## localhost is used to configure the loopback interface# when the system is booting. Do not change this entry.##127.0.0.1 localhost255.255.255.255 broadcasthost::1 localhost fe80::1%lo0 localhost127.0.0.1 asset1.akitaonrails.local asset2.akitaonrails.local asset3.akitaonrails.local asset4.akitaonrails.local asset5.akitaonrails.local asset6.akitaonrails.local www.akitaonrails.local

/etc/hosts

Page 79: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

PRODUCTION

Page 80: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

PRODUCTION

Page 81: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

PRODUCTION

Page 82: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

PRODUCTION

Page 83: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Javascript embaixo!

Page 84: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

<head> <title><%= h(yield(:title) || "Untitled") %></title> <%= stylesheet_link_tag 'application' %> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js" type="text/javascript"></script> <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js" type="text/javascript"></script> <script src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js" type="text/javascript"></script> <script src="http://ajax.googleapis.com/ajax/libs/chrome-frame/1.0.2/CFInstall.min.js" type="text/javascript"></script> <%= yield(:head) %></head><body>...

/app/views/layouts/application.html.erb

Page 85: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

<head> <title><%= h(yield(:title) || "Untitled") %></title> <%= stylesheet_link_tag 'application' %> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js" type="text/javascript"></script> <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js" type="text/javascript"></script> <script src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js" type="text/javascript"></script> <script src="http://ajax.googleapis.com/ajax/libs/chrome-frame/1.0.2/CFInstall.min.js" type="text/javascript"></script> <%= yield(:head) %></head><body>...

/app/views/layouts/application.html.erb

Page 86: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

... <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js" type="text/javascript"></script> <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js" type="text/javascript"></script> <script src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js" type="text/javascript"></script> <script src="http://ajax.googleapis.com/ajax/libs/chrome-frame/1.0.2/CFInstall.min.js" type="text/javascript"></script> <script type="text/javascript"> // meu javascript customizado ... </script> </body></html>

/app/views/layouts/application.html.erb

Page 87: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

... <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js" type="text/javascript"></script> <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js" type="text/javascript"></script> <script src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js" type="text/javascript"></script> <script src="http://ajax.googleapis.com/ajax/libs/chrome-frame/1.0.2/CFInstall.min.js" type="text/javascript"></script> <script type="text/javascript"> // meu javascript customizado ... </script> </body></html>

/app/views/layouts/application.html.erb

Page 88: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Gzip

Page 89: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

a2enmod de"ate

editar/etc/apache2/mods-available/de"ate.conf

Page 90: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

a2enmod de"ate

editar/etc/apache2/mods-available/de"ate.conf

Page 91: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

<IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE image/svg+xml AddOutputFilterByType DEFLATE image/x-icon AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript

AddOutputFilterByType DEFLATE application/x-httpd-php AddOutputFilterByType DEFLATE application/x-httpd-fastphp AddOutputFilterByType DEFLATE application/x-httpd-eruby

DeflateCompressionLevel 9

/etc/apache2/mods-available/de"ate.conf

Page 92: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Cabeçalhos de Expiração

Page 93: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

a2enmod expires

editar/etc/apache2/mods-available/expires.conf

Page 94: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

a2enmod expires

editar/etc/apache2/mods-available/expires.conf

Page 95: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

<IfModule mod_expires.c> ExpiresByType image/x-icon "access plus 1 year" ExpiresByType image/png "access plus 1 year" ExpiresByType image/jpg "access plus 1 year" ExpiresByType image/gif "access plus 1 year" ExpiresByType image/jpeg "access plus 1 year" ExpiresByType application/pdf "access plus 1 year" ExpiresByType audio/x-wav "access plus 1 year" ExpiresByType audio/mpeg "access plus 1 year" ExpiresByType video/mpeg "access plus 1 year" ExpiresByType video/mp4 "access plus 1 year" ExpiresByType video/quicktime "access plus 1 year" ExpiresByType video/x-ms-wmv "access plus 1 year" ExpiresByType application/x-shockwave-flash "access 1 month" ExpiresByType text/css "access plus 1 year" ExpiresByType text/javascript "access plus 1 year"</IfModule>

/etc/apache2/mods-available/expires.conf

Page 96: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

<IfModule mod_expires.c> ExpiresByType image/x-icon "access plus 1 year" ExpiresByType image/png "access plus 1 year" ExpiresByType image/jpg "access plus 1 year" ExpiresByType image/gif "access plus 1 year" ExpiresByType image/jpeg "access plus 1 year" ExpiresByType application/pdf "access plus 1 year" ExpiresByType audio/x-wav "access plus 1 year" ExpiresByType audio/mpeg "access plus 1 year" ExpiresByType video/mpeg "access plus 1 year" ExpiresByType video/mp4 "access plus 1 year" ExpiresByType video/quicktime "access plus 1 year" ExpiresByType video/x-ms-wmv "access plus 1 year" ExpiresByType application/x-shockwave-flash "access 1 month" ExpiresByType text/css "access plus 1 year" ExpiresByType text/javascript "access plus 1 year"</IfModule>

/etc/apache2/mods-available/expires.conf

"access plus 1 year"

Page 97: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Cache Busters

Page 98: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

<%= stylesheet_link_tag 'application' %>

<%= javascript_include_tag 'application' %>

<%= image_tag "logo.png" %>

/app/views/layouts/application.html.erb

Page 99: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

<link href="/stylesheets/application.css?1264345891"

media="screen" rel="stylesheet" type="text/css" />

<script src="/javascripts/application.js?1264345058"

type="text/javascript"></script>

<img alt="Logo" src="/images/logo.png?1268943058" />

/app/views/layouts/application.html.erb

Page 100: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

<link href="/stylesheets/application.css?1264345891"

media="screen" rel="stylesheet" type="text/css" />

<script src="/javascripts/application.js?1264345058"

type="text/javascript"></script>

<img alt="Logo" src="/images/logo.png?1268943058" />

/app/views/layouts/application.html.erb

Page 101: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Use CDNs

Page 102: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

<script src="/javascripts/jquery-1.4.min.js"

type="text/javascript"></script>

<script src="/javascripts/jquery-ui-1.7.2.min.js"

type="text/javascript"></script>

<script src="/javascripts/swfobject-2.2.js"

type="text/javascript"></script>

<script src="/javascripts/CFInstall-1.0.2.min.js"

type="text/javascript"></script>

/app/views/layouts/application.html.erb

Page 103: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/

jquery.min.js" type="text/javascript"></script>

<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/

jquery-ui.min.js" type="text/javascript"></script>

<script src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/

swfobject.js" type="text/javascript"></script>

<script src="http://ajax.googleapis.com/ajax/libs/chrome-frame/

1.0.2/CFInstall.min.js" type="text/javascript"></script>

/app/views/layouts/application.html.erb

Page 104: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/

jquery.min.js" type="text/javascript"></script>

<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/

jquery-ui.min.js" type="text/javascript"></script>

<script src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/

swfobject.js" type="text/javascript"></script>

<script src="http://ajax.googleapis.com/ajax/libs/chrome-frame/

1.0.2/CFInstall.min.js" type="text/javascript"></script>

/app/views/layouts/application.html.erb

Page 105: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 106: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Search

Page 107: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

select * from ... where ... like “%...%”

Page 108: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

select * from ... where ... like “%...%”

or ... like “%...%”or ... like “%...%”or ... like “%...%”or ... like “%...%”

Page 109: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 110: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Open Source Enterprise Search Platform

Baseado no famoso Lucene

Full Text Search, com relevância

Indexa documentos (Word, PDF, etc)

Interface REST

Roda em containers de Servlet (Tomcat)

Page 111: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Open Source Enterprise Search Platform

Baseado no famoso Lucene

Full Text Search, com relevância

Indexa documentos (Word, PDF, etc)

Interface REST

Roda em containers de Servlet (Tomcat)

Page 112: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Open Source Enterprise Search Platform

Baseado no famoso Lucene

Full Text Search, com relevância

Indexa documentos (Word, PDF, etc)

Interface REST

Roda em containers de Servlet (Tomcat)

Page 113: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Open Source Enterprise Search Platform

Baseado no famoso Lucene

Full Text Search, com relevância

Indexa documentos (Word, PDF, etc)

Interface REST

Roda em containers de Servlet (Tomcat)

Page 114: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Open Source Enterprise Search Platform

Baseado no famoso Lucene

Full Text Search, com relevância

Indexa documentos (Word, PDF, etc)

Interface REST

Roda em containers de Servlet (Tomcat)

Page 115: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Open Source Enterprise Search Platform

Baseado no famoso Lucene

Full Text Search, com relevância

Indexa documentos (Word, PDF, etc)

Interface REST

Roda em containers de Servlet (Tomcat)

Page 116: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 117: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 118: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 119: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

SOLR

Sphinx

Xapian

Page 120: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

SOLR

Sphinx

Xapian

Page 121: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

SOLR

Sphinx

Xapian

Page 122: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

select * from ... where ... like “%...%”

or ... like “%...%”or ... like “%...%”or ... like “%...%”or ... like “%...%”

Page 123: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 124: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Tarefas Assíncronas

Page 125: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 126: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Requisição

Page 127: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

ProcessamentoRequisição

Page 128: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Resposta

ProcessamentoRequisição

Page 129: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Crontab

Page 130: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 131: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

RMagick

Page 132: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 133: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 134: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

RedisWorkers

Resque-Web

Page 135: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 136: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 137: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

ProcessamentoRequisição

280 ms

Page 138: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Resposta

Processamento

Requisição

51 ms

Worker

Page 139: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 140: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Resque Redis

Delayed Job SQL

Warren RabbitMQ

Whenever Cron Jobs

Page 141: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Resque Redis

Delayed Job SQL

Warren RabbitMQ

Whenever Cron Jobs

Page 142: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Resque Redis

Delayed Job SQL

Warren RabbitMQ

Whenever Cron Jobs

Page 143: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Resque Redis

Delayed Job SQL

Warren RabbitMQ

Whenever Cron Jobs

Page 144: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 145: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Imagens

Relatórios

Web Services

Transações

Page 146: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Imagens

Relatórios

Web Services

Transações

Page 147: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Imagens

Relatórios

Web Services

Transações

Page 148: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Imagens

Relatórios

Web Services

Transações

Page 149: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Aprendendo Mais

Page 150: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

RAILS LABS

Page 151: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

RAILSCASTS.com

Page 152: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

caelum.com.br

Page 153: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

egenial.com.br

Page 154: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Page 155: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Entenda os browsers

Entenda HTTP

Arquiteturas

Mundo Assíncrono

Mundo não Relacional

Page 156: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Entenda os browsers

Entenda HTTP

Arquiteturas

Mundo Assíncrono

Mundo não Relacional

Page 157: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Entenda os browsers

Entenda HTTP

Arquiteturas

Mundo Assíncrono

Mundo não Relacional

Page 158: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Entenda os browsers

Entenda HTTP

Arquiteturas

Mundo Assíncrono

Mundo não Relacional

Page 159: Consegi 2010 - Dicas de Desenvolvimento Web com Ruby

Entenda os browsers

Entenda HTTP

Arquiteturas

Mundo Assíncrono

Mundo não Relacional