Edted 2010 Dicas de Web

Post on 08-May-2015

1.153 views 1 download

description

Algumas Dicas de Desenvolvimento Web com um pouco de Ruby. Mostrando YSlow! e Solr. EDTED, Rio de Janeiro.

Transcript of Edted 2010 Dicas de Web

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

Wednesday, April 14, 2010

AkitaOnRails.com

Wednesday, April 14, 2010

~ 30 min~ 70 slides

Wednesday, April 14, 2010

Entendendo a WebDicas sobre Desenvolvimento Web com Ruby

Fabio Akita

Wednesday, April 14, 2010

Recapitulando ...

Wednesday, April 14, 2010

Ruby é Lento(TM)

Wednesday, April 14, 2010

Existem mentiras, mentiras malditas e

estatísticas.

Wednesday, April 14, 2010

Existem mentiras, mentiras malditas e

estatísticas.

Wednesday, April 14, 2010

Existem mentiras, mentiras malditas e

estatísticas.

Wednesday, April 14, 2010

Wednesday, April 14, 2010

x mais lento que C++

Wednesday, April 14, 2010

0 32.5 65 97.5 130

Python 2

Ruby 1.9

JRuby

Perl

Python 3

PHP

Ruby 1.8

x mais lento que C++

Wednesday, April 14, 2010

Homepage: 331 ms

Wednesday, April 14, 2010

Homepage: 331 ms

Total: 5.45 s

Wednesday, April 14, 2010

Exemplo

Wednesday, April 14, 2010

Wednesday, April 14, 2010

Wednesday, April 14, 2010

Wednesday, April 14, 2010

Wednesday, April 14, 2010

Wednesday, April 14, 2010

Wednesday, April 14, 2010

Wednesday, April 14, 2010

Wednesday, April 14, 2010

Wednesday, April 14, 2010

6Técnicas

Wednesday, April 14, 2010

Menos Requisições

Wednesday, April 14, 2010

Mini!que CSS e Javascript

Wednesday, April 14, 2010

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

Wednesday, April 14, 2010

gem install juicer

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

Wednesday, April 14, 2010

gem install juicer

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

Wednesday, April 14, 2010

juicer install yuicompressor

juicer install jslint

juicer install closure_compiler

Wednesday, April 14, 2010

juicer install yuicompressor

juicer install jslint

juicer install closure_compiler

Wednesday, April 14, 2010

juicer install yuicompressor

juicer install jslint

juicer install closure_compiler

Wednesday, April 14, 2010

<%= juiced_tag '/stylesheets/application.css' %> <%= yield(:head) %>

</head><body>

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

</body>

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

Wednesday, April 14, 2010

<%= juiced_tag '/stylesheets/application.css' %> <%= yield(:head) %>

</head><body>

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

</body>

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

Wednesday, April 14, 2010

@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

Wednesday, April 14, 2010

@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

Wednesday, April 14, 2010

juicer merge public/stylesheets/application.css

public/stylesheets/application.min.css

juicer merge -i public/javascripts/application.js

public/javascripts/application.min.js

Wednesday, April 14, 2010

juicer merge public/stylesheets/application.css

public/stylesheets/application.min.css

juicer merge -i public/javascripts/application.js

public/javascripts/application.min.js

Wednesday, April 14, 2010

juicer merge public/stylesheets/application.css

public/stylesheets/application.min.css

juicer merge -i public/javascripts/application.js

public/javascripts/application.min.js

Wednesday, April 14, 2010

juicer merge public/stylesheets/application.css

public/stylesheets/application.min.css

juicer merge -i public/javascripts/application.js

public/javascripts/application.min.js

Wednesday, April 14, 2010

DEVELOPMENT

Wednesday, April 14, 2010

PRODUCTION

Wednesday, April 14, 2010

Asset HostsNavegadores abrem poucas conexões

simultâneas por domínio

Wednesday, April 14, 2010

Wednesday, April 14, 2010

def gallery gallery_path = File.join(Rails.root, "public/images/gallery/")

@images = Dir.glob(gallery_path + "*").map{ |f| f.gsub(gallery_path, "") }

end

/app/controllers/hello_controller.rb

Wednesday, April 14, 2010

def gallery gallery_path = File.join(Rails.root, "public/images/gallery/")

@images = Dir.glob(gallery_path + "*").map{ |f| f.gsub(gallery_path, "") }

end

/app/controllers/hello_controller.rb

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

<% title "Gallery" %>

<% @images.each do |image| -%> <%= image_tag "gallery/#{image}" %>

<% end -%>

Wednesday, April 14, 2010

def gallery gallery_path = File.join(Rails.root, "public/images/gallery/")

@images = Dir.glob(gallery_path + "*").map{ |f| f.gsub(gallery_path, "") }

end

/app/controllers/hello_controller.rb

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

<% title "Gallery" %>

<% @images.each do |image| -%> <%= image_tag "gallery/#{image}" %>

<% end -%>

Wednesday, April 14, 2010

DEVELOPMENT

Wednesday, April 14, 2010

DEVELOPMENT

Wednesday, April 14, 2010

/con!g/environments/production.rb

config.action_controller.asset_host = Proc.new do |source, request| protocol = if request.ssl?

request.headers["USER_AGENT"] =~ /(Safari)/ ? "http" : "https" else

"http" end

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

Wednesday, April 14, 2010

/con!g/environments/production.rb

config.action_controller.asset_host = Proc.new do |source, request| protocol = if request.ssl?

request.headers["USER_AGENT"] =~ /(Safari)/ ? "http" : "https" else

"http" end

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

Wednesday, April 14, 2010

### 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

Wednesday, April 14, 2010

PRODUCTION

Wednesday, April 14, 2010

PRODUCTION

Wednesday, April 14, 2010

Javascript embaixo!

Wednesday, April 14, 2010

<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

Wednesday, April 14, 2010

<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

Wednesday, April 14, 2010

... <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

Wednesday, April 14, 2010

... <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

Wednesday, April 14, 2010

Gzip

Wednesday, April 14, 2010

a2enmod de"ate

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

Wednesday, April 14, 2010

a2enmod de"ate

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

Wednesday, April 14, 2010

<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

# Netscape 4.X has some problems BrowserMatch ^Mozilla/4 gzip-only-text/html

# Netscape 4.06-4.08 have some more problems BrowserMatch ^Mozilla/4\.0[678] no-gzip

# MSIE masquerades as Netscape, but it is fine BrowserMatch \bMSIE !no-gzip !gzip-only-text/html</IfModule>

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

Wednesday, April 14, 2010

Cabeçalhos de Expiração

Wednesday, April 14, 2010

a2enmod expires

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

Wednesday, April 14, 2010

a2enmod expires

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

Wednesday, April 14, 2010

<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

Wednesday, April 14, 2010

Cache Busters

Wednesday, April 14, 2010

<%= stylesheet_link_tag 'application' %>

<%= javascript_include_tag 'application' %>

<%= image_tag "logo.png" %>

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

Wednesday, April 14, 2010

<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

Wednesday, April 14, 2010

<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

Wednesday, April 14, 2010

Use CDNs

Wednesday, April 14, 2010

<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

Wednesday, April 14, 2010

<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

Wednesday, April 14, 2010

<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

Wednesday, April 14, 2010

Search

Wednesday, April 14, 2010

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

Wednesday, April 14, 2010

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

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

Wednesday, April 14, 2010

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

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

Wednesday, April 14, 2010

Wednesday, April 14, 2010

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)

Wednesday, April 14, 2010

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)

Wednesday, April 14, 2010

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)

Wednesday, April 14, 2010

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)

Wednesday, April 14, 2010

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)

Wednesday, April 14, 2010

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)

Wednesday, April 14, 2010

Wednesday, April 14, 2010

Wednesday, April 14, 2010

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

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

Wednesday, April 14, 2010

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

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

Wednesday, April 14, 2010

Aprendendo Mais

Wednesday, April 14, 2010

RAILS LABS

Wednesday, April 14, 2010

RAILSCASTS.com

Wednesday, April 14, 2010

caelum.com.br

Wednesday, April 14, 2010

egenial.com.br

Wednesday, April 14, 2010

Wednesday, April 14, 2010

Entenda os browsers

Entenda HTTP

Arquiteturas

Mundo Assíncrono

Mundo não Relacional

Wednesday, April 14, 2010

Entenda os browsers

Entenda HTTP

Arquiteturas

Mundo Assíncrono

Mundo não Relacional

Wednesday, April 14, 2010

Entenda os browsers

Entenda HTTP

Arquiteturas

Mundo Assíncrono

Mundo não Relacional

Wednesday, April 14, 2010

Entenda os browsers

Entenda HTTP

Arquiteturas

Mundo Assíncrono

Mundo não Relacional

Wednesday, April 14, 2010

Entenda os browsers

Entenda HTTP

Arquiteturas

Mundo Assíncrono

Mundo não Relacional

Wednesday, April 14, 2010

Wednesday, April 14, 2010

Thx!www.slideshare.net/akitaonrails

fabioakita@gmail.com

http://dl.dropbox.com/u/1732133/dicas-de-desenvolvimento-web-com-rails.zip

Wednesday, April 14, 2010