SlideShare una empresa de Scribd logo
1 de 105
Descargar para leer sin conexión
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

Más contenido relacionado

Similar 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
 

Similar 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
 

Más 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
 

Más 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

Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 

Último (20)

Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 

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