SlideShare uma empresa Scribd logo
1 de 105
Baixar para ler offline
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
www.slideshare.net/akitaonrails
             www.akitaonrails.com/ les/entendendo-a-web-movies.zip




                            fabioakita@gmail.com




Wednesday, April 14, 2010
Entendendo a Web
                   Dicas 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
x mais lento que C++


                        0   32.5             65           97.5   130

  Python 2


   Ruby 1.9


      JRuby


         Perl


   Python 3


         PHP


    Ruby 1.8




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
6
                            Técnicas



Wednesday, April 14, 2010
Menos Requisições



Wednesday, April 14, 2010
Mini que CSS e
                              Javascript



Wednesday, April 14, 2010
Juicer
                            http://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
/app/views/layouts/application.html.erb




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




Wednesday, April 14, 2010
/app/views/layouts/application.html.erb




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




Wednesday, April 14, 2010
/public/stylesheets/application.css




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

                                ...

       /public/javascripts/application.js




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

                                ...



Wednesday, April 14, 2010
/public/stylesheets/application.css




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

                                ...

       /public/javascripts/application.js




                                /*
                                     @depends jquery-1.4.min.js
                                     @depends jquery.edit_in_place.js
                                     @depends jqueryamail.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 Hosts
                            Navegadores abrem poucas conexões
                                 simultâneas por domínio




Wednesday, April 14, 2010
Wednesday, April 14, 2010
/app/controllers/hello_controller.rb


          def gallery
              gallery_path = File.join(Rails.root, "public/images/gallery/")
              @images = Dir.glob(gallery_path + "*").map{ |f|
                  f.gsub(gallery_path, "") }
          end




Wednesday, April 14, 2010
/app/controllers/hello_controller.rb


          def gallery
              gallery_path = File.join(Rails.root, "public/images/gallery/")
              @images = Dir.glob(gallery_path + "*").map{ |f|
                  f.gsub(gallery_path, "") }
          end

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



          <% title "Gallery" %>


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




Wednesday, April 14, 2010
/app/controllers/hello_controller.rb


          def gallery
              gallery_path = File.join(Rails.root, "public/images/gallery/")
              @images = Dir.glob(gallery_path + "*").map{ |f|
                  f.gsub(gallery_path, "") }
          end

       /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
/etc/hosts




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




Wednesday, April 14, 2010
PRODUCTION

Wednesday, April 14, 2010
PRODUCTION

Wednesday, April 14, 2010
Javascript embaixo!



Wednesday, April 14, 2010
/app/views/layouts/application.html.erb



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




Wednesday, April 14, 2010
/app/views/layouts/application.html.erb



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




Wednesday, April 14, 2010
/app/views/layouts/application.html.erb



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




Wednesday, April 14, 2010
/app/views/layouts/application.html.erb



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




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
/etc/apache2/mods-available/de ate.conf


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


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
/etc/apache2/mods-available/expires.conf




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




Wednesday, April 14, 2010
Cache Busters



Wednesday, April 14, 2010
/app/views/layouts/application.html.erb




                            <%= stylesheet_link_tag 'application' %>


                            <%= javascript_include_tag 'application' %>


                            <%= image_tag "logo.png" %>




Wednesday, April 14, 2010
/app/views/layouts/application.html.erb




                  <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" />




Wednesday, April 14, 2010
/app/views/layouts/application.html.erb




                  <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" />




Wednesday, April 14, 2010
Use CDNs



Wednesday, April 14, 2010
/app/views/layouts/application.html.erb




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




Wednesday, April 14, 2010
/app/views/layouts/application.html.erb




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




Wednesday, April 14, 2010
/app/views/layouts/application.html.erb




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




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
            http://dl.dropbox.com/u/1732133/dicas-de-desenvolvimento-web-com-rails.zip




                            fabioakita@gmail.com

Wednesday, April 14, 2010

Mais conteúdo relacionado

Semelhante a Edted 2010 Dicas de Web

Html5/CSS3 in shanghai 2010
Html5/CSS3 in shanghai 2010Html5/CSS3 in shanghai 2010
Html5/CSS3 in shanghai 2010Zi Bin Cheah
 
Campus Party 2010
Campus Party 2010Campus Party 2010
Campus Party 2010Fabio Akita
 
Measures for Growth with Firebase Remote Config & Unit Testing Using RxSwift
Measures for Growth with Firebase Remote Config & Unit Testing Using RxSwiftMeasures for Growth with Firebase Remote Config & Unit Testing Using RxSwift
Measures for Growth with Firebase Remote Config & Unit Testing Using RxSwiftFumiya Sakai
 
Document-Oriented Databases: Couchdb Primer
Document-Oriented Databases: Couchdb PrimerDocument-Oriented Databases: Couchdb Primer
Document-Oriented Databases: Couchdb Primerjsiarto
 
Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Fisl 11 - Dicas de Desenvolvimento Web com RubyFisl 11 - Dicas de Desenvolvimento Web com Ruby
Fisl 11 - Dicas de Desenvolvimento Web com RubyFabio Akita
 
Opening up the Social Web - Standards that are bridging the Islands
Opening up the Social Web - Standards that are bridging the Islands Opening up the Social Web - Standards that are bridging the Islands
Opening up the Social Web - Standards that are bridging the Islands Bastian Hofmann
 
SeaJS - 跨环境模块化开发实践
SeaJS - 跨环境模块化开发实践SeaJS - 跨环境模块化开发实践
SeaJS - 跨环境模块化开发实践lifesinger
 
Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Consegi 2010 - Dicas de Desenvolvimento Web com RubyConsegi 2010 - Dicas de Desenvolvimento Web com Ruby
Consegi 2010 - Dicas de Desenvolvimento Web com RubyFabio Akita
 
Synchronizing Core Data With Rails
Synchronizing Core Data With RailsSynchronizing Core Data With Rails
Synchronizing Core Data With RailsKen Collins
 
Introduction to HTML5
Introduction to HTML5Introduction to HTML5
Introduction to HTML5Adrian Olaru
 
JavaScript Dependencies, Modules & Browserify
JavaScript Dependencies, Modules & BrowserifyJavaScript Dependencies, Modules & Browserify
JavaScript Dependencies, Modules & BrowserifyJohan Nilsson
 
Zero-config JavaScript apps with RaveJS -- SVCC fall 2014
Zero-config JavaScript apps with RaveJS -- SVCC fall 2014Zero-config JavaScript apps with RaveJS -- SVCC fall 2014
Zero-config JavaScript apps with RaveJS -- SVCC fall 2014John Hann
 
Desenvolvimento Indolor com JQuery Mobile
Desenvolvimento Indolor com JQuery MobileDesenvolvimento Indolor com JQuery Mobile
Desenvolvimento Indolor com JQuery MobileBruno Oliveira
 
Intro to Web Apps using HTML5 and Javascript
Intro to Web Apps using HTML5 and JavascriptIntro to Web Apps using HTML5 and Javascript
Intro to Web Apps using HTML5 and JavascriptBrian Hogg
 
Tek 2013 - Building Web Apps from a New Angle with AngularJS
Tek 2013 - Building Web Apps from a New Angle with AngularJSTek 2013 - Building Web Apps from a New Angle with AngularJS
Tek 2013 - Building Web Apps from a New Angle with AngularJSPablo Godel
 
Frozen Rails Slides
Frozen Rails SlidesFrozen Rails Slides
Frozen Rails Slidescarllerche
 
Gaelyk quickie - GR8Conf Europe 2010 - Guillaume Laforge
Gaelyk quickie - GR8Conf Europe 2010 - Guillaume LaforgeGaelyk quickie - GR8Conf Europe 2010 - Guillaume Laforge
Gaelyk quickie - GR8Conf Europe 2010 - Guillaume LaforgeGuillaume Laforge
 

Semelhante a Edted 2010 Dicas de Web (20)

Html5/CSS3 in shanghai 2010
Html5/CSS3 in shanghai 2010Html5/CSS3 in shanghai 2010
Html5/CSS3 in shanghai 2010
 
Campus Party 2010
Campus Party 2010Campus Party 2010
Campus Party 2010
 
Measures for Growth with Firebase Remote Config & Unit Testing Using RxSwift
Measures for Growth with Firebase Remote Config & Unit Testing Using RxSwiftMeasures for Growth with Firebase Remote Config & Unit Testing Using RxSwift
Measures for Growth with Firebase Remote Config & Unit Testing Using RxSwift
 
Document-Oriented Databases: Couchdb Primer
Document-Oriented Databases: Couchdb PrimerDocument-Oriented Databases: Couchdb Primer
Document-Oriented Databases: Couchdb Primer
 
Node.js and Ruby
Node.js and RubyNode.js and Ruby
Node.js and Ruby
 
Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Fisl 11 - Dicas de Desenvolvimento Web com RubyFisl 11 - Dicas de Desenvolvimento Web com Ruby
Fisl 11 - Dicas de Desenvolvimento Web com Ruby
 
Opening up the Social Web - Standards that are bridging the Islands
Opening up the Social Web - Standards that are bridging the Islands Opening up the Social Web - Standards that are bridging the Islands
Opening up the Social Web - Standards that are bridging the Islands
 
SeaJS - 跨环境模块化开发实践
SeaJS - 跨环境模块化开发实践SeaJS - 跨环境模块化开发实践
SeaJS - 跨环境模块化开发实践
 
Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Consegi 2010 - Dicas de Desenvolvimento Web com RubyConsegi 2010 - Dicas de Desenvolvimento Web com Ruby
Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
 
Synchronizing Core Data With Rails
Synchronizing Core Data With RailsSynchronizing Core Data With Rails
Synchronizing Core Data With Rails
 
Introduction to HTML5
Introduction to HTML5Introduction to HTML5
Introduction to HTML5
 
JavaScript Dependencies, Modules & Browserify
JavaScript Dependencies, Modules & BrowserifyJavaScript Dependencies, Modules & Browserify
JavaScript Dependencies, Modules & Browserify
 
Zero-config JavaScript apps with RaveJS -- SVCC fall 2014
Zero-config JavaScript apps with RaveJS -- SVCC fall 2014Zero-config JavaScript apps with RaveJS -- SVCC fall 2014
Zero-config JavaScript apps with RaveJS -- SVCC fall 2014
 
HTML5 Intro
HTML5 IntroHTML5 Intro
HTML5 Intro
 
Killer page load performance
Killer page load performanceKiller page load performance
Killer page load performance
 
Desenvolvimento Indolor com JQuery Mobile
Desenvolvimento Indolor com JQuery MobileDesenvolvimento Indolor com JQuery Mobile
Desenvolvimento Indolor com JQuery Mobile
 
Intro to Web Apps using HTML5 and Javascript
Intro to Web Apps using HTML5 and JavascriptIntro to Web Apps using HTML5 and Javascript
Intro to Web Apps using HTML5 and Javascript
 
Tek 2013 - Building Web Apps from a New Angle with AngularJS
Tek 2013 - Building Web Apps from a New Angle with AngularJSTek 2013 - Building Web Apps from a New Angle with AngularJS
Tek 2013 - Building Web Apps from a New Angle with AngularJS
 
Frozen Rails Slides
Frozen Rails SlidesFrozen Rails Slides
Frozen Rails Slides
 
Gaelyk quickie - GR8Conf Europe 2010 - Guillaume Laforge
Gaelyk quickie - GR8Conf Europe 2010 - Guillaume LaforgeGaelyk quickie - GR8Conf Europe 2010 - Guillaume Laforge
Gaelyk quickie - GR8Conf Europe 2010 - Guillaume Laforge
 

Mais de Fabio Akita

Devconf 2019 - São Carlos
Devconf 2019 - São CarlosDevconf 2019 - São Carlos
Devconf 2019 - São CarlosFabio Akita
 
Meetup Nerdzão - English Talk about Languages
Meetup Nerdzão  - English Talk about LanguagesMeetup Nerdzão  - English Talk about Languages
Meetup Nerdzão - English Talk about LanguagesFabio Akita
 
Desmistificando Blockchains p/ Developers - Criciuma Dev Conf 2018
Desmistificando Blockchains p/ Developers - Criciuma Dev Conf 2018Desmistificando Blockchains p/ Developers - Criciuma Dev Conf 2018
Desmistificando Blockchains p/ Developers - Criciuma Dev Conf 2018Fabio Akita
 
Desmistificando Blockchains - 20o Encontro Locaweb SP
Desmistificando Blockchains - 20o Encontro Locaweb SPDesmistificando Blockchains - 20o Encontro Locaweb SP
Desmistificando Blockchains - 20o Encontro Locaweb SPFabio Akita
 
Desmistificando Blockchains - Insiter Goiania
Desmistificando Blockchains - Insiter GoianiaDesmistificando Blockchains - Insiter Goiania
Desmistificando Blockchains - Insiter GoianiaFabio Akita
 
Blockchain em 7 minutos - 7Masters
Blockchain em 7 minutos - 7MastersBlockchain em 7 minutos - 7Masters
Blockchain em 7 minutos - 7MastersFabio Akita
 
Elixir -Tolerância a Falhas para Adultos - GDG Campinas
Elixir  -Tolerância a Falhas para Adultos - GDG CampinasElixir  -Tolerância a Falhas para Adultos - GDG Campinas
Elixir -Tolerância a Falhas para Adultos - GDG CampinasFabio Akita
 
Desmistificando Mitos de Tech Startups - Intercon 2017
Desmistificando Mitos de Tech Startups - Intercon 2017Desmistificando Mitos de Tech Startups - Intercon 2017
Desmistificando Mitos de Tech Startups - Intercon 2017Fabio Akita
 
30 Days to Elixir and Crystal and Back to Ruby
30 Days to Elixir and Crystal and Back to Ruby30 Days to Elixir and Crystal and Back to Ruby
30 Days to Elixir and Crystal and Back to RubyFabio Akita
 
Uma Discussão sobre a Carreira de TI
Uma Discussão sobre a Carreira de TIUma Discussão sobre a Carreira de TI
Uma Discussão sobre a Carreira de TIFabio Akita
 
THE CONF - Opening Keynote
THE CONF - Opening KeynoteTHE CONF - Opening Keynote
THE CONF - Opening KeynoteFabio Akita
 
A Journey through New Languages - Rancho Dev 2017
A Journey through New Languages - Rancho Dev 2017A Journey through New Languages - Rancho Dev 2017
A Journey through New Languages - Rancho Dev 2017Fabio Akita
 
Desmistificando Mitos de Startups - Sebrae - AP
Desmistificando Mitos de Startups - Sebrae - APDesmistificando Mitos de Startups - Sebrae - AP
Desmistificando Mitos de Startups - Sebrae - APFabio Akita
 
A Journey through New Languages - Guru Sorocaba 2017
A Journey through New Languages - Guru Sorocaba 2017A Journey through New Languages - Guru Sorocaba 2017
A Journey through New Languages - Guru Sorocaba 2017Fabio Akita
 
A Journey through New Languages - Insiter 2017
A Journey through New Languages - Insiter 2017A Journey through New Languages - Insiter 2017
A Journey through New Languages - Insiter 2017Fabio Akita
 
A Journey through New Languages - Locaweb Tech Day
A Journey through New Languages - Locaweb Tech DayA Journey through New Languages - Locaweb Tech Day
A Journey through New Languages - Locaweb Tech DayFabio Akita
 
A Journey through new Languages - Intercon 2016
A Journey through new Languages - Intercon 2016A Journey through new Languages - Intercon 2016
A Journey through new Languages - Intercon 2016Fabio Akita
 
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016Fabio Akita
 
Conexão Kinghost - Otimização Prematura
Conexão Kinghost - Otimização PrematuraConexão Kinghost - Otimização Prematura
Conexão Kinghost - Otimização PrematuraFabio Akita
 
The Open Commerce Conference - Premature Optimisation: The Root of All Evil
The Open Commerce Conference - Premature Optimisation: The Root of All EvilThe Open Commerce Conference - Premature Optimisation: The Root of All Evil
The Open Commerce Conference - Premature Optimisation: The Root of All EvilFabio Akita
 

Mais de Fabio Akita (20)

Devconf 2019 - São Carlos
Devconf 2019 - São CarlosDevconf 2019 - São Carlos
Devconf 2019 - São Carlos
 
Meetup Nerdzão - English Talk about Languages
Meetup Nerdzão  - English Talk about LanguagesMeetup Nerdzão  - English Talk about Languages
Meetup Nerdzão - English Talk about Languages
 
Desmistificando Blockchains p/ Developers - Criciuma Dev Conf 2018
Desmistificando Blockchains p/ Developers - Criciuma Dev Conf 2018Desmistificando Blockchains p/ Developers - Criciuma Dev Conf 2018
Desmistificando Blockchains p/ Developers - Criciuma Dev Conf 2018
 
Desmistificando Blockchains - 20o Encontro Locaweb SP
Desmistificando Blockchains - 20o Encontro Locaweb SPDesmistificando Blockchains - 20o Encontro Locaweb SP
Desmistificando Blockchains - 20o Encontro Locaweb SP
 
Desmistificando Blockchains - Insiter Goiania
Desmistificando Blockchains - Insiter GoianiaDesmistificando Blockchains - Insiter Goiania
Desmistificando Blockchains - Insiter Goiania
 
Blockchain em 7 minutos - 7Masters
Blockchain em 7 minutos - 7MastersBlockchain em 7 minutos - 7Masters
Blockchain em 7 minutos - 7Masters
 
Elixir -Tolerância a Falhas para Adultos - GDG Campinas
Elixir  -Tolerância a Falhas para Adultos - GDG CampinasElixir  -Tolerância a Falhas para Adultos - GDG Campinas
Elixir -Tolerância a Falhas para Adultos - GDG Campinas
 
Desmistificando Mitos de Tech Startups - Intercon 2017
Desmistificando Mitos de Tech Startups - Intercon 2017Desmistificando Mitos de Tech Startups - Intercon 2017
Desmistificando Mitos de Tech Startups - Intercon 2017
 
30 Days to Elixir and Crystal and Back to Ruby
30 Days to Elixir and Crystal and Back to Ruby30 Days to Elixir and Crystal and Back to Ruby
30 Days to Elixir and Crystal and Back to Ruby
 
Uma Discussão sobre a Carreira de TI
Uma Discussão sobre a Carreira de TIUma Discussão sobre a Carreira de TI
Uma Discussão sobre a Carreira de TI
 
THE CONF - Opening Keynote
THE CONF - Opening KeynoteTHE CONF - Opening Keynote
THE CONF - Opening Keynote
 
A Journey through New Languages - Rancho Dev 2017
A Journey through New Languages - Rancho Dev 2017A Journey through New Languages - Rancho Dev 2017
A Journey through New Languages - Rancho Dev 2017
 
Desmistificando Mitos de Startups - Sebrae - AP
Desmistificando Mitos de Startups - Sebrae - APDesmistificando Mitos de Startups - Sebrae - AP
Desmistificando Mitos de Startups - Sebrae - AP
 
A Journey through New Languages - Guru Sorocaba 2017
A Journey through New Languages - Guru Sorocaba 2017A Journey through New Languages - Guru Sorocaba 2017
A Journey through New Languages - Guru Sorocaba 2017
 
A Journey through New Languages - Insiter 2017
A Journey through New Languages - Insiter 2017A Journey through New Languages - Insiter 2017
A Journey through New Languages - Insiter 2017
 
A Journey through New Languages - Locaweb Tech Day
A Journey through New Languages - Locaweb Tech DayA Journey through New Languages - Locaweb Tech Day
A Journey through New Languages - Locaweb Tech Day
 
A Journey through new Languages - Intercon 2016
A Journey through new Languages - Intercon 2016A Journey through new Languages - Intercon 2016
A Journey through new Languages - Intercon 2016
 
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
 
Conexão Kinghost - Otimização Prematura
Conexão Kinghost - Otimização PrematuraConexão Kinghost - Otimização Prematura
Conexão Kinghost - Otimização Prematura
 
The Open Commerce Conference - Premature Optimisation: The Root of All Evil
The Open Commerce Conference - Premature Optimisation: The Root of All EvilThe Open Commerce Conference - Premature Optimisation: The Root of All Evil
The Open Commerce Conference - Premature Optimisation: The Root of All Evil
 

Último

AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6DianaGray10
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...Aggregage
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdfPedro Manuel
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-pyJamie (Taka) Wang
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxUdaiappa Ramachandran
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfinfogdgmi
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAshyamraj55
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXTarek Kalaji
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 

Último (20)

AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdf
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-py
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptx
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 
201610817 - edge part1
201610817 - edge part1201610817 - edge part1
201610817 - edge part1
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBX
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 

Edted 2010 Dicas de Web

  • 1. A apresentação já vai começar ... Wednesday, April 14, 2010
  • 3. ~ 30 min ~ 70 slides Wednesday, April 14, 2010
  • 4. www.slideshare.net/akitaonrails www.akitaonrails.com/ les/entendendo-a-web-movies.zip fabioakita@gmail.com Wednesday, April 14, 2010
  • 5. Entendendo a Web Dicas sobre Desenvolvimento Web com Ruby Fabio Akita Wednesday, April 14, 2010
  • 7. Ruby é Lento (TM) Wednesday, April 14, 2010
  • 8. Existem mentiras, mentiras malditas e estatísticas. Wednesday, April 14, 2010
  • 9. Existem mentiras, mentiras malditas e estatísticas. Wednesday, April 14, 2010
  • 10. Existem mentiras, mentiras malditas e estatísticas. Wednesday, April 14, 2010
  • 12. x mais lento que C++ Wednesday, April 14, 2010
  • 13. x mais lento que C++ 0 32.5 65 97.5 130 Python 2 Ruby 1.9 JRuby Perl Python 3 PHP Ruby 1.8 Wednesday, April 14, 2010
  • 14. Homepage: 331 ms Wednesday, April 14, 2010
  • 15. Homepage: 331 ms Total: 5.45 s Wednesday, April 14, 2010
  • 26. 6 Técnicas Wednesday, April 14, 2010
  • 28. Mini que CSS e Javascript Wednesday, April 14, 2010
  • 29. Juicer http://github.com/cjohansen/juicer/ Wednesday, April 14, 2010
  • 30. gem install juicer script/plugin install git://github.com/ktheory/juicer-rails.git Wednesday, April 14, 2010
  • 31. gem install juicer script/plugin install git://github.com/ktheory/juicer-rails.git Wednesday, April 14, 2010
  • 32. juicer install yuicompressor juicer install jslint juicer install closure_compiler Wednesday, April 14, 2010
  • 33. juicer install yuicompressor juicer install jslint juicer install closure_compiler Wednesday, April 14, 2010
  • 34. juicer install yuicompressor juicer install jslint juicer install closure_compiler Wednesday, April 14, 2010
  • 35. /app/views/layouts/application.html.erb <%= juiced_tag '/stylesheets/application.css' %> <%= yield(:head) %> </head> <body> ... <%= juiced_tag '/javascripts/application.js' %> </body> Wednesday, April 14, 2010
  • 36. /app/views/layouts/application.html.erb <%= juiced_tag '/stylesheets/application.css' %> <%= yield(:head) %> </head> <body> ... <%= juiced_tag '/javascripts/application.js' %> </body> Wednesday, April 14, 2010
  • 37. /public/stylesheets/application.css @import url("reset.css"); @import url("base.css"); @import url("fonts.css"); ... /public/javascripts/application.js /* @depends jquery-1.4.min.js @depends jquery.edit_in_place.js @depends jqueryamail.js */ ... Wednesday, April 14, 2010
  • 38. /public/stylesheets/application.css @import url("reset.css"); @import url("base.css"); @import url("fonts.css"); ... /public/javascripts/application.js /* @depends jquery-1.4.min.js @depends jquery.edit_in_place.js @depends jqueryamail.js */ ... Wednesday, April 14, 2010
  • 39. 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
  • 40. 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
  • 41. 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
  • 42. 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
  • 45. Asset Hosts Navegadores abrem poucas conexões simultâneas por domínio Wednesday, April 14, 2010
  • 47. /app/controllers/hello_controller.rb def gallery gallery_path = File.join(Rails.root, "public/images/gallery/") @images = Dir.glob(gallery_path + "*").map{ |f| f.gsub(gallery_path, "") } end Wednesday, April 14, 2010
  • 48. /app/controllers/hello_controller.rb def gallery gallery_path = File.join(Rails.root, "public/images/gallery/") @images = Dir.glob(gallery_path + "*").map{ |f| f.gsub(gallery_path, "") } end /app/views/hello/gallery.html.erb <% title "Gallery" %> <% @images.each do |image| -%> <%= image_tag "gallery/#{image}" %> <% end -%> Wednesday, April 14, 2010
  • 49. /app/controllers/hello_controller.rb def gallery gallery_path = File.join(Rails.root, "public/images/gallery/") @images = Dir.glob(gallery_path + "*").map{ |f| f.gsub(gallery_path, "") } end /app/views/hello/gallery.html.erb <% title "Gallery" %> <% @images.each do |image| -%> <%= image_tag "gallery/#{image}" %> <% end -%> Wednesday, April 14, 2010
  • 52. /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
  • 53. /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
  • 54. /etc/hosts ## # Host Database # # localhost is used to configure the loopback interface # when the system is booting. Do not change this entry. ## 127.0.0.1 localhost 255.255.255.255 broadcasthost ::1 localhost fe80::1%lo0 localhost 127.0.0.1 asset1.akitaonrails.local asset2.akitaonrails.local asset3.akitaonrails.local asset4.akitaonrails.local asset5.akitaonrails.local asset6.akitaonrails.local www.akitaonrails.local Wednesday, April 14, 2010
  • 58. /app/views/layouts/application.html.erb <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> ... Wednesday, April 14, 2010
  • 59. /app/views/layouts/application.html.erb <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> ... Wednesday, April 14, 2010
  • 60. /app/views/layouts/application.html.erb ... <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> Wednesday, April 14, 2010
  • 61. /app/views/layouts/application.html.erb ... <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> Wednesday, April 14, 2010
  • 63. a2enmod de ate editar /etc/apache2/mods-available/de ate.conf Wednesday, April 14, 2010
  • 64. a2enmod de ate editar /etc/apache2/mods-available/de ate.conf Wednesday, April 14, 2010
  • 65. /etc/apache2/mods-available/de ate.conf <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> Wednesday, April 14, 2010
  • 66. Cabeçalhos de Expiração Wednesday, April 14, 2010
  • 67. a2enmod expires editar /etc/apache2/mods-available/expires.conf Wednesday, April 14, 2010
  • 68. a2enmod expires editar /etc/apache2/mods-available/expires.conf Wednesday, April 14, 2010
  • 69. /etc/apache2/mods-available/expires.conf <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> Wednesday, April 14, 2010
  • 71. /app/views/layouts/application.html.erb <%= stylesheet_link_tag 'application' %> <%= javascript_include_tag 'application' %> <%= image_tag "logo.png" %> Wednesday, April 14, 2010
  • 72. /app/views/layouts/application.html.erb <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" /> Wednesday, April 14, 2010
  • 73. /app/views/layouts/application.html.erb <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" /> Wednesday, April 14, 2010
  • 75. /app/views/layouts/application.html.erb <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> Wednesday, April 14, 2010
  • 76. /app/views/layouts/application.html.erb <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> Wednesday, April 14, 2010
  • 77. /app/views/layouts/application.html.erb <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> Wednesday, April 14, 2010
  • 79. select * from ... where ... like “%...%” Wednesday, April 14, 2010
  • 80. select * from ... where ... like “%...%” or ... like “%...%” or ... like “%...%” or ... like “%...%” or ... like “%...%” Wednesday, April 14, 2010
  • 81. select * from ... where ... like “%...%” or ... like “%...%” or ... like “%...%” or ... like “%...%” or ... like “%...%” Wednesday, April 14, 2010
  • 83. 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
  • 84. 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
  • 85. 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
  • 86. 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
  • 87. 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
  • 88. 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
  • 91. select * from ... where ... like “%...%” or ... like “%...%” or ... like “%...%” or ... like “%...%” or ... like “%...%” Wednesday, April 14, 2010
  • 92. select * from ... where ... like “%...%” or ... like “%...%” or ... like “%...%” or ... like “%...%” or ... like “%...%” Wednesday, April 14, 2010
  • 99. Entenda os browsers Entenda HTTP Arquiteturas Mundo Assíncrono Mundo não Relacional Wednesday, April 14, 2010
  • 100. Entenda os browsers Entenda HTTP Arquiteturas Mundo Assíncrono Mundo não Relacional Wednesday, April 14, 2010
  • 101. Entenda os browsers Entenda HTTP Arquiteturas Mundo Assíncrono Mundo não Relacional Wednesday, April 14, 2010
  • 102. Entenda os browsers Entenda HTTP Arquiteturas Mundo Assíncrono Mundo não Relacional Wednesday, April 14, 2010
  • 103. Entenda os browsers Entenda HTTP Arquiteturas Mundo Assíncrono Mundo não Relacional Wednesday, April 14, 2010
  • 105. Thx! www.slideshare.net/akitaonrails http://dl.dropbox.com/u/1732133/dicas-de-desenvolvimento-web-com-rails.zip fabioakita@gmail.com Wednesday, April 14, 2010