SlideShare uma empresa Scribd logo
Otimizando
aplicações rails
 Client Side & Server Side

           Vitor Pellegrino
       Petrobrás Distribuidora
             @pellegrino
          http://vp.blog.br
quem?


Vitor Pellegrino
quem?
   Engenheiro de Software




Vitor Pellegrino
quem?
                      Engenheiro de Software

Petrobrás Distribuidora

                 Vitor Pellegrino
quem?
                      Engenheiro de Software

Petrobrás Distribuidora

                   Vitor Pellegrino
 video.globo.com
quem?
                      Engenheiro de Software

Petrobrás Distribuidora

                   Vitor Pellegrino
 video.globo.com


             Metodologias Ágeis
quem?
                      Engenheiro de Software

Petrobrás Distribuidora

                   Vitor Pellegrino
 video.globo.com

                                   Railer desde 2006
             Metodologias Ágeis
quem?
                      Engenheiro de Software

Petrobrás Distribuidora           #horaextra

                   Vitor Pellegrino
 video.globo.com

                                    Railer desde 2006
             Metodologias Ágeis
Agenda


• Introdução

• Plugins e Libraries

• Cache Distribuído

• Otimizações built-in do Rails

• Links
Introdução
Responsiveness
Responsiveness


 Quantidade de tempo
  necessária para se
 carregar uma página
Workshop Performance Rails
Como seus usuários enchergam a sua aplicação
Interface




Como seus usuários enchergam a sua aplicação
Interface




Como seus usuários enchergam a sua aplicação
Interface




                  Mágica




Como seus usuários enchergam a sua aplicação
Interface




                  Mágica




Como seus usuários enchergam a sua aplicação
Otimização
prematura




     http://www.redbubble.com/people/suranyami/t-shirts/2547056-2-premature-optimization-is-the-root-of-all-evil-donald-knuth
NÃO FAÇA ISSO!
NÃO FAÇA ISSO!
Otimização prematura

• Na maioria dos casos você não vai
  precisar
• Otimize baseado em fatos
  • Analise primeiro
• Custo x benefício
http://
Safari
Google chrome
http://www.bombe.tv/blog/wp-content/uploads/2009/07/homer_the_new_fail_whale_by_edwheeler.jpg




Rails escala?
describe Rails do

 context ‘when done correctly’ do
	 	 it { Rails.should scale }
	 end	
end
https://www.ravelry.com/
• 10 million requests a
  day hit Rails (AJAX +
  RSS + API)

• 3.6 million pageviews
  per day

• 2.3 million knitting/
  crochet projects,
  50,000 new forum
  posts each day, 19
  million forum posts,
  13 million private

        http://highscalability.com/blog/2009/9/22/how-ravelry-scales-to-10-million-requests-using-rails.html
• 10 million requests a
  day hit Rails (AJAX +
  RSS + API)

• 3.6 million pageviews
  per day

• 2.3 million knitting/                                         1 desenvolvedor rails
  crochet projects,
  50,000 new forum
  posts each day, 19
  million forum posts,
  13 million private

        http://highscalability.com/blog/2009/9/22/how-ravelry-scales-to-10-million-requests-using-rails.html
rails tools that help
      you scale
Ingredients
• Git
• Rails
• Ruby 1.8.x
• Firefox
 • Firebug
 • YSlow
Ingredients


• gem sources -a http://
  gems.github.com
• sudo gem install gemcutter
• sudo gem tumble
Asset Packager



• Comprime javascript e CSS em
  aplicações rails em produção.
Hands on


• ./script/plugin install git://
  github.com/sbecker/
  asset_packager.git

• rake asset:packager:create_yml
Sprockets

• getsprockets.org
• Concatenador e Gerenciador de
  dependencias javascript

 • provide
 • request
Hands on

• sudo gem install --remote sprockets
• script/plugin install git://github.com/
  sstephenson/sprockets-rails.git

• edite o config/routes.rb
  • SprocketsApplication.routes(map)
Tools


•Bullet
 • http://github.com/flyerhzm/bullet/
 • Queries N+1
 • Queries
Hands on!
• Código do blog
  • Instalar o plugin do bullet
    • http://github.com/flyerhzm/bullet/
• Simular query N+1
  • <%= post.comments.collect(&:author) %>
• Simular counter_cache
  • <%= post.comments.size %>
Bullet


• Indica lugares possíveis de otimização
• N+1 queries
• Counter cache
Rails Indexes


• Rails Indexes
  • http://github.com/eladmeidar/
    rails_indexes

• Auxilia na criação de índices
Hands on


• script/plugin install git://github.com/
  eladmeidar/rails_indexes.git
• rake db:show_me_a_migration
• rake db:show_me_ar_find_indexes
Rails indexes


• Índices são muito importantes
 • ... e muito esquecidos
• rake db:show_me_a_migration #ftw
Scrooge

• Otimização do SQL gerado pelo rails
• Busca apenas as colunas que vão ser
  usadas.

• http://github.com/methodmissing/
  scrooge
Hands on


• sudo gem install slim_scrooge
• # config/environment.rb
 • config.gem 'slim_scrooge'
Scrooge


• Pode representar um ganho muito
  significativo dependendo das queries

• Fire and forget.
Rack-bug


• Debug toolbar
• http://github.com/brynary/rack-bug
• Inspeciona o que está acontecendo
  durante um request.
Hands on


• # config/environments/development.rb

   • config.middleware.use "Rack::Bug"

• script/plugin install git://github.com/brynary/rack-bug.git

• http://localhost:3000/__rack_bug__/bookmarklet.html
Rack-bug


• Visualização completa do que
  acontece na aplicação
• Depurar memória gasta nos seus
  processos rails.
Asset Packager e
        Sprockets


• Ganho significativo em performance
  client-side

• Use it now :)
Cache distribuído
Cache distribuído




    Arquitetura
Cache distribuído

• Redução do número
  de acessos ao banco
  de dados

• Compartilhamento de
  informações entre
  instâncias de rails

• Funciona como se
  fosse um hash em
  memória
Memcached

• Cache distribuído
  open source

• Utilizado na maioria
  dos sites de grande
  conteúdo

• Facil integração com
  rails.
Hands on

• sudo apt-get install memcached
• config/environments
  • config.action_controller.perform_caching   =
    true

  • config.cache_store = :mem_cache_store
• memcached -vv
Hands on


• Rails.cache.fetch(“helloworld”) { “Hello
  world”}

• Rails.cache.delete(“helloworld”)
• Rails.cache.fetch(@post) { @post }
Memcached

• Muito utilizado em aplicações rails
• É possível serializar objetos inteiros
  na memória

• Fácil Integração
• Escalável por ser distribuído
Otimizações rails
    built-in
Page Caching
Page Caching

• Cache de todo o conteúdo da página
  • Arquivo estático HTML
  • Apache (+1000/segundo)
• Evita o acesso desnecessário ao
  servidor
Workshop Performance Rails
Hands on

• caches_page :index

• expire_page :action => :index

• config/environment.rb

   • config.action_controller.perform_caching = true

   • config.action_controller.page_cache_directory = RAILS_ROOT +
       "/public/cache " # opcional
Page Caching

• Conteúdo dinâmico?
Page Caching

• Conteúdo dinâmico?


Javascript!
Page Caching


• def update_status
    render_inline “hello world”
  end
• <%= link_to_remote “dinamico” , :url
  => { :action =>
  “update_status”} , :update =>
  {“status” } %>
Page Caching


• Use SEMPRE que possível
• Cuidado com a expiração do cache
• Ainda é possível usar javascript :)
Action Caching
Workshop Performance Rails
Action Caching



• caches_action :edit
• expires_action :edit
Action Caching

• Quando se deseja utilizar filters
  • Controle de acesso
• Quando não se pode utilizar page
  caching
• Conditional Action Caching
• Action Caching without layouts
Fragment Caching
Fragment Caching


• Trechos de um layout
 • Tag Cloud
 • Recent posts
Fragment Caching


• cache(key) do ... end
• fragment_exists?(key)
• expire_fragment(key)
Fragment Caching


• Pedaços da tela
• Cuidado para não executar a query
  ainda que a view esteja cacheada

 • fragment_exists?
Sweepers
Sweepers


• Objeto compartilhado entre os
  controllers
• Centraliza expiração de cache
• ActiveRecord observer
Resumo
Built-in Rails


• Rails traz muitas possibilidades de
  otimização por default
• Page > Action > Fragment caching
  • Memcached
Resumo
Não otimize prematuramente
É preciso entender a arquitetura como um todo
     para se otimizar de maneira eficiente
São as arquiteturas e não as linguagens que são
                  escaláveis.
Sim, Rails escala. :)
Links
http://railslab.newrelic.com/scaling-rails/
http://railscasts.com/tags/1
http://developer.yahoo.com/performance/
http://www.newrelic.com/
Obrigado!
         Vitor Pellegrino
         http://vp.blog.br
http://www.twitter.com/pellegrino

Mais conteúdo relacionado

Mais procurados

Laravel 5
Laravel 5Laravel 5
Laravel 5
lukzgois
 
A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )
Michael Douglas
 
Torne se hip com JHipster
Torne se hip com JHipsterTorne se hip com JHipster
Torne se hip com JHipster
Thiago Teixeira
 
React Native na globo.com
React Native na globo.comReact Native na globo.com
React Native na globo.com
Guilherme Heynemann Bruzzi
 
Maven 2
Maven 2Maven 2
Deploy Automatizado usando Octopus
Deploy Automatizado usando OctopusDeploy Automatizado usando Octopus
Deploy Automatizado usando Octopus
André Minelli
 
Gitlab flow solo (minimo)
Gitlab flow solo (minimo)Gitlab flow solo (minimo)
Gitlab flow solo (minimo)
viniciusban
 

Mais procurados (7)

Laravel 5
Laravel 5Laravel 5
Laravel 5
 
A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )
 
Torne se hip com JHipster
Torne se hip com JHipsterTorne se hip com JHipster
Torne se hip com JHipster
 
React Native na globo.com
React Native na globo.comReact Native na globo.com
React Native na globo.com
 
Maven 2
Maven 2Maven 2
Maven 2
 
Deploy Automatizado usando Octopus
Deploy Automatizado usando OctopusDeploy Automatizado usando Octopus
Deploy Automatizado usando Octopus
 
Gitlab flow solo (minimo)
Gitlab flow solo (minimo)Gitlab flow solo (minimo)
Gitlab flow solo (minimo)
 

Destaque

Institution research
Institution research Institution research
Institution research
katiess07
 
Tp unidad 1 UCSE
Tp unidad 1 UCSETp unidad 1 UCSE
Tp unidad 1 UCSE
Fabricio Maminote
 
Convenio colectivo de instalaciones deportivas de titularidad pública de Gipu...
Convenio colectivo de instalaciones deportivas de titularidad pública de Gipu...Convenio colectivo de instalaciones deportivas de titularidad pública de Gipu...
Convenio colectivo de instalaciones deportivas de titularidad pública de Gipu...
kirolkudeaketa
 
Tesauro
TesauroTesauro
Tesauro
well n
 
Distanshandelsforum 2010 i Malmö - #DHforum
Distanshandelsforum 2010 i Malmö - #DHforumDistanshandelsforum 2010 i Malmö - #DHforum
Distanshandelsforum 2010 i Malmö - #DHforum
Judith Wolst
 
Java Bytecode: Passing Parameters
Java Bytecode: Passing ParametersJava Bytecode: Passing Parameters
Java Bytecode: Passing Parameters
Anton Arhipov
 
Performance evaluation of Effluent Treatment Plant of Dairy Industry
Performance evaluation of Effluent Treatment Plant of Dairy IndustryPerformance evaluation of Effluent Treatment Plant of Dairy Industry
Performance evaluation of Effluent Treatment Plant of Dairy Industry
IJERA Editor
 
Anexa 1 statutul femeii
Anexa 1 statutul femeiiAnexa 1 statutul femeii
Anexa 1 statutul femeii
Claudia Katay
 
3 action care_-plan_de_marketing_y_beneficios_para_el_franquiciado_-210410
3 action care_-plan_de_marketing_y_beneficios_para_el_franquiciado_-2104103 action care_-plan_de_marketing_y_beneficios_para_el_franquiciado_-210410
3 action care_-plan_de_marketing_y_beneficios_para_el_franquiciado_-210410
guestee6378
 
вересень жовтень 2014
вересень жовтень 2014вересень жовтень 2014
вересень жовтень 2014
Stanislav Ignatiev
 
Theroutedanube
TheroutedanubeTheroutedanube
Theroutedanube
GIA VER
 
Freud house me_corporation_marketing_20140929_1021
Freud house me_corporation_marketing_20140929_1021Freud house me_corporation_marketing_20140929_1021
Freud house me_corporation_marketing_20140929_1021
Dmytro Dzhedzhula
 
Excursión viernes guardamar
Excursión viernes guardamarExcursión viernes guardamar
Excursión viernes guardamar
Jose Indraya
 
Communication Performance Over A Gigabit Ethernet Network
Communication Performance Over A Gigabit Ethernet NetworkCommunication Performance Over A Gigabit Ethernet Network
Communication Performance Over A Gigabit Ethernet Network
IJERA Editor
 
Design and Analysis of A Suspension Coil Spring For Automotive Vehicle
Design and Analysis of A Suspension Coil Spring For Automotive VehicleDesign and Analysis of A Suspension Coil Spring For Automotive Vehicle
Design and Analysis of A Suspension Coil Spring For Automotive Vehicle
IJERA Editor
 
Implementation Of Thyristor Controlled Series Capacitor (TCSC) In Transmissio...
Implementation Of Thyristor Controlled Series Capacitor (TCSC) In Transmissio...Implementation Of Thyristor Controlled Series Capacitor (TCSC) In Transmissio...
Implementation Of Thyristor Controlled Series Capacitor (TCSC) In Transmissio...
IJERA Editor
 
Tumor Detection Based On Symmetry Information
Tumor Detection Based On Symmetry InformationTumor Detection Based On Symmetry Information
Tumor Detection Based On Symmetry Information
IJERA Editor
 
Studies on Strength Evaluation of Fiber Reinforced Plastic Composites
Studies on Strength Evaluation of Fiber Reinforced Plastic CompositesStudies on Strength Evaluation of Fiber Reinforced Plastic Composites
Studies on Strength Evaluation of Fiber Reinforced Plastic Composites
IJERA Editor
 

Destaque (20)

Institution research
Institution research Institution research
Institution research
 
Tp unidad 1 UCSE
Tp unidad 1 UCSETp unidad 1 UCSE
Tp unidad 1 UCSE
 
Convenio colectivo de instalaciones deportivas de titularidad pública de Gipu...
Convenio colectivo de instalaciones deportivas de titularidad pública de Gipu...Convenio colectivo de instalaciones deportivas de titularidad pública de Gipu...
Convenio colectivo de instalaciones deportivas de titularidad pública de Gipu...
 
Tesauro
TesauroTesauro
Tesauro
 
Distanshandelsforum 2010 i Malmö - #DHforum
Distanshandelsforum 2010 i Malmö - #DHforumDistanshandelsforum 2010 i Malmö - #DHforum
Distanshandelsforum 2010 i Malmö - #DHforum
 
Java Bytecode: Passing Parameters
Java Bytecode: Passing ParametersJava Bytecode: Passing Parameters
Java Bytecode: Passing Parameters
 
Performance evaluation of Effluent Treatment Plant of Dairy Industry
Performance evaluation of Effluent Treatment Plant of Dairy IndustryPerformance evaluation of Effluent Treatment Plant of Dairy Industry
Performance evaluation of Effluent Treatment Plant of Dairy Industry
 
2
22
2
 
Anexa 1 statutul femeii
Anexa 1 statutul femeiiAnexa 1 statutul femeii
Anexa 1 statutul femeii
 
3 action care_-plan_de_marketing_y_beneficios_para_el_franquiciado_-210410
3 action care_-plan_de_marketing_y_beneficios_para_el_franquiciado_-2104103 action care_-plan_de_marketing_y_beneficios_para_el_franquiciado_-210410
3 action care_-plan_de_marketing_y_beneficios_para_el_franquiciado_-210410
 
вересень жовтень 2014
вересень жовтень 2014вересень жовтень 2014
вересень жовтень 2014
 
Theroutedanube
TheroutedanubeTheroutedanube
Theroutedanube
 
Freud house me_corporation_marketing_20140929_1021
Freud house me_corporation_marketing_20140929_1021Freud house me_corporation_marketing_20140929_1021
Freud house me_corporation_marketing_20140929_1021
 
Excursión viernes guardamar
Excursión viernes guardamarExcursión viernes guardamar
Excursión viernes guardamar
 
Communication Performance Over A Gigabit Ethernet Network
Communication Performance Over A Gigabit Ethernet NetworkCommunication Performance Over A Gigabit Ethernet Network
Communication Performance Over A Gigabit Ethernet Network
 
Design and Analysis of A Suspension Coil Spring For Automotive Vehicle
Design and Analysis of A Suspension Coil Spring For Automotive VehicleDesign and Analysis of A Suspension Coil Spring For Automotive Vehicle
Design and Analysis of A Suspension Coil Spring For Automotive Vehicle
 
2014_FPO_Novikov
2014_FPO_Novikov2014_FPO_Novikov
2014_FPO_Novikov
 
Implementation Of Thyristor Controlled Series Capacitor (TCSC) In Transmissio...
Implementation Of Thyristor Controlled Series Capacitor (TCSC) In Transmissio...Implementation Of Thyristor Controlled Series Capacitor (TCSC) In Transmissio...
Implementation Of Thyristor Controlled Series Capacitor (TCSC) In Transmissio...
 
Tumor Detection Based On Symmetry Information
Tumor Detection Based On Symmetry InformationTumor Detection Based On Symmetry Information
Tumor Detection Based On Symmetry Information
 
Studies on Strength Evaluation of Fiber Reinforced Plastic Composites
Studies on Strength Evaluation of Fiber Reinforced Plastic CompositesStudies on Strength Evaluation of Fiber Reinforced Plastic Composites
Studies on Strength Evaluation of Fiber Reinforced Plastic Composites
 

Semelhante a Workshop Performance Rails

escalando aplicações django
escalando aplicações djangoescalando aplicações django
escalando aplicações django
Andrews Medina
 
Curso AngularJS - Parte 1
Curso AngularJS - Parte 1Curso AngularJS - Parte 1
Curso AngularJS - Parte 1
Alvaro Viebrantz
 
(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScript(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScript
Carlos Santos
 
ASP.NET Core APIs: Performance Tips
ASP.NET Core APIs: Performance TipsASP.NET Core APIs: Performance Tips
ASP.NET Core APIs: Performance Tips
Andre Baltieri
 
Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose
Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker ComposeScrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose
Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose
Stefan Teixeira
 
Azure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a ProduçãoAzure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a Produção
thomasdacosta
 
Ruby on Rails 100% na cloud com heroku e outros serviços
Ruby on Rails 100% na cloud com heroku e outros serviçosRuby on Rails 100% na cloud com heroku e outros serviços
Ruby on Rails 100% na cloud com heroku e outros serviços
Bruno Ghisi
 
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Renato Groff
 
Curso AngularJS - Parte 2
Curso AngularJS - Parte 2Curso AngularJS - Parte 2
Curso AngularJS - Parte 2
Alvaro Viebrantz
 
JHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosJHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãos
Thiago Soares
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Renato Groff
 
Atualizando rails do 2.x para 3.x
Atualizando rails do 2.x para 3.xAtualizando rails do 2.x para 3.x
Atualizando rails do 2.x para 3.x
Rodrigo Urubatan
 
EBAC Django
EBAC DjangoEBAC Django
Meteor - TechParty 2015
Meteor - TechParty 2015Meteor - TechParty 2015
Meteor - TechParty 2015
Rodrigo Krummenauer do Nascimento
 
Angular 2, TypeScript e Além
Angular 2, TypeScript e AlémAngular 2, TypeScript e Além
Angular 2, TypeScript e Além
Andre Baltieri
 
Web tools pt-br
Web tools pt-brWeb tools pt-br
Web tools pt-br
Paulo Mattos
 
Docker | Minicurso Gratuito - Azure na Prática
Docker | Minicurso Gratuito - Azure na PráticaDocker | Minicurso Gratuito - Azure na Prática
Docker | Minicurso Gratuito - Azure na Prática
Renato Groff
 
De 0 a DevOps
De 0 a DevOpsDe 0 a DevOps
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Renato Groff
 
WebAssembly além da Web - Casos de Uso em IoT
WebAssembly além da Web - Casos de Uso em IoTWebAssembly além da Web - Casos de Uso em IoT
WebAssembly além da Web - Casos de Uso em IoT
GDGFoz
 

Semelhante a Workshop Performance Rails (20)

escalando aplicações django
escalando aplicações djangoescalando aplicações django
escalando aplicações django
 
Curso AngularJS - Parte 1
Curso AngularJS - Parte 1Curso AngularJS - Parte 1
Curso AngularJS - Parte 1
 
(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScript(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScript
 
ASP.NET Core APIs: Performance Tips
ASP.NET Core APIs: Performance TipsASP.NET Core APIs: Performance Tips
ASP.NET Core APIs: Performance Tips
 
Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose
Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker ComposeScrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose
Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose
 
Azure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a ProduçãoAzure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a Produção
 
Ruby on Rails 100% na cloud com heroku e outros serviços
Ruby on Rails 100% na cloud com heroku e outros serviçosRuby on Rails 100% na cloud com heroku e outros serviços
Ruby on Rails 100% na cloud com heroku e outros serviços
 
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
 
Curso AngularJS - Parte 2
Curso AngularJS - Parte 2Curso AngularJS - Parte 2
Curso AngularJS - Parte 2
 
JHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosJHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãos
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
 
Atualizando rails do 2.x para 3.x
Atualizando rails do 2.x para 3.xAtualizando rails do 2.x para 3.x
Atualizando rails do 2.x para 3.x
 
EBAC Django
EBAC DjangoEBAC Django
EBAC Django
 
Meteor - TechParty 2015
Meteor - TechParty 2015Meteor - TechParty 2015
Meteor - TechParty 2015
 
Angular 2, TypeScript e Além
Angular 2, TypeScript e AlémAngular 2, TypeScript e Além
Angular 2, TypeScript e Além
 
Web tools pt-br
Web tools pt-brWeb tools pt-br
Web tools pt-br
 
Docker | Minicurso Gratuito - Azure na Prática
Docker | Minicurso Gratuito - Azure na PráticaDocker | Minicurso Gratuito - Azure na Prática
Docker | Minicurso Gratuito - Azure na Prática
 
De 0 a DevOps
De 0 a DevOpsDe 0 a DevOps
De 0 a DevOps
 
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
 
WebAssembly além da Web - Casos de Uso em IoT
WebAssembly além da Web - Casos de Uso em IoTWebAssembly além da Web - Casos de Uso em IoT
WebAssembly além da Web - Casos de Uso em IoT
 

Último

ExpoGestão 2024 - Inteligência Artificial – A revolução no mundo dos negócios
ExpoGestão 2024 - Inteligência Artificial – A revolução no mundo dos negóciosExpoGestão 2024 - Inteligência Artificial – A revolução no mundo dos negócios
ExpoGestão 2024 - Inteligência Artificial – A revolução no mundo dos negócios
ExpoGestão
 
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
Faga1939
 
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docxse38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
ronaldos10
 
ExpoGestão 2024 - Desvendando um mundo em ebulição
ExpoGestão 2024 - Desvendando um mundo em ebuliçãoExpoGestão 2024 - Desvendando um mundo em ebulição
ExpoGestão 2024 - Desvendando um mundo em ebulição
ExpoGestão
 
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de   DevOps/CLoudFerramentas que irão te ajudar a entrar no mundo de   DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ismael Ash
 
Subindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWSSubindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWS
Ismael Ash
 

Último (6)

ExpoGestão 2024 - Inteligência Artificial – A revolução no mundo dos negócios
ExpoGestão 2024 - Inteligência Artificial – A revolução no mundo dos negóciosExpoGestão 2024 - Inteligência Artificial – A revolução no mundo dos negócios
ExpoGestão 2024 - Inteligência Artificial – A revolução no mundo dos negócios
 
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
 
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docxse38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
 
ExpoGestão 2024 - Desvendando um mundo em ebulição
ExpoGestão 2024 - Desvendando um mundo em ebuliçãoExpoGestão 2024 - Desvendando um mundo em ebulição
ExpoGestão 2024 - Desvendando um mundo em ebulição
 
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de   DevOps/CLoudFerramentas que irão te ajudar a entrar no mundo de   DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
 
Subindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWSSubindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWS
 

Workshop Performance Rails