Aplicacoes dinamicas Rails com Backbone

Rafael Felix da Silva
Rafael Felix da SilvaSoftware Developer em Crafters Sofware Studio
Aplicações
dinâmicas em
    Rails
Aplicacoes dinamicas Rails com Backbone
Rafael Felix


         @rs_felix


http://blog.rollingwithcode.com




  http://www.crafters.com.br
Aplicacoes dinamicas Rails com Backbone
Backbone é uma estrutura para
aplicações que fazem uso pesado de JavaScript, e
  conecta-se a sua aplicação por uma interface
                    RESTful.
Aplicacoes dinamicas Rails com Backbone
Aplicacoes dinamicas Rails com Backbone
Backbone.Model
var MyModel = Backbone.Model.extend({})
save([attributes],[options])


var MyModel = Backbone.Model.extend({})
POST           PUT


       save([attributes],[options])


var MyModel = Backbone.Model.extend({})
save([attributes],[options])


 var MyModel = Backbone.Model.extend({})


fetch([options])
save([attributes],[options])


 var MyModel = Backbone.Model.extend({})


fetch([options])     setInterval(function(){
                       model.fetch();
                     }, 10000);
save([attributes],[options])


 var MyModel = Backbone.Model.extend({})


fetch([options])            validate(attributes)
var Chapter = Backbone.Model.extend({
  validate: function(attrs) {
    if (attrs.end < attrs.start) {
      return "can't end before it starts";
    }
  }
});

 var one = new Chapter({
   title : "Chapter One: The Beginning"
 });

 one.bind("error", function(model, error) {
   alert(model.get("title") + " " + error);
 });

 one.set({
  start: 15,
  end:   10
 });
var Chapter = Backbone.Model.extend({
  validate: function(attrs) {
    if (attrs.end < attrs.start) {
      return "can't end before it starts";
    }
  }
});

 var one = new Chapter({
   title : "Chapter One: The Beginning"
 });

 one.bind("error", function(model, error) {
   alert(model.get("title") + " " + error);
 });

 one.set({
  start: 15,
  end:   10
 });
Backbone.Model
Backbone.Model




Backbone.Collection
var Library = Backbone.Collection.extend({
 model: Book
});
add(models, [options])

    var Library = Backbone.Collection.extend({
     model: Book
    });
add(models, [options])                    url()

    var Library = Backbone.Collection.extend({
     model: Book
    });
url: '/library'
add(models, [options])                     url()

    var Library = Backbone.Collection.extend({
     model: Book
    });
add(models, [options])                    url()

    var Library = Backbone.Collection.extend({
     model: Book
    });

  fetch([options])
add(models, [options])                     url()

    var Library = Backbone.Collection.extend({
     model: Book
    });

  fetch([options])       Library.fetch()

                         GET '/library'
add(models, [options])                       url()

    var Library = Backbone.Collection.extend({
     model: Book
    });

  fetch([options])       create(attributes, [options])
var alibrary = new Library;
var book = alibrary.create({
   title: "A book",
   author: "Someone"
})
Backbone.Model




Backbone.Collection
Backbone.Model




Backbone.Collection



                      Backbone.Router
var Workspace = Backbone.Router.extend({

 routes: {
  "help":                 "help",
  "search/:query":        "search",
  "search/:query/p:page": "search"
 },

 help: function() {},

 search: function(query, page) {}

});
var Workspace = Backbone.Router.extend({

 routes: {
  "help":                 "help",          #help
  "search/:query":        "search",        #search/felix
  "search/:query/p:page": "search"         #search/felix/p2
 },

 help: function() {},

 search: function(query, page) {}

});
var Workspace = Backbone.Router.extend({

 routes: {
  "help":                 "help",          #help
  "search/:query":        "search",        #search/felix
  "search/:query/p:page": "search"         #search/felix/p2
 },

 help: function() {},

 search: function(query, page) {}

});
var Workspace = Backbone.Router.extend({

 routes: {
  "help":                 "help",          #help
  "search/:query":        "search",        #search/felix
  "search/:query/p:page": "search"         #search/felix/p2
 },

 help: function() {},

 search: function(query, page) {}

});
var Workspace = Backbone.Router.extend({

 routes: {
  "help":                 "help",          #help
  "search/:query":        "search",        #search/felix
  "search/:query/p:page": "search"         #search/felix/p2
 },

 help: function() {},
                   felix  2
 search: function(query, page) {}

});
Backbone.Model




Backbone.Collection



                      Backbone.Router
Backbone.Model




          Backbone.Collection



Backbone.View                   Backbone.Router
var DocumentRow = Backbone.View.extend({

 tagName: "li",

 className: "document-row",

 events: {
  "click .icon": "open",
  "click .button.edit": "openEditDialog",
  "click .button.delete": "destroy"
 },

 render: function() {
   ...
 }

});
var DocumentRow = Backbone.View.extend({

 tagName: "li",
                                      <li class="document-row"></li>
 className: "document-row",

 events: {
  "click .icon": "open",
  "click .button.edit": "openEditDialog",
  "click .button.delete": "destroy"
 },

 render: function() {
   ...
 }

});
var DocumentRow = Backbone.View.extend({

 tagName: "li",

 className: "document-row",

 events: {
  "click .icon": "open",                    $(".icon").click(open)
  "click .button.edit": "openEditDialog",
  "click .button.delete": "destroy"
 },

 render: function() {
   ...
 }

});
Exemplo
Aplicacoes dinamicas Rails com Backbone
layout
layout
         application
layout
                   application
         ProductView
layout
                   application
         ProductView


                                 CartView
Aplicacoes dinamicas Rails com Backbone
click
click
Passo 1
layout
         application
app/views/layouts/application.html.erb


...
  <div class="container">
    <div class="content" id="application">
    </div>

    <footer>
      <p></p>
    </footer>

  </div>
...
JavaScript Templates
var obj = "bla bla bla";
someDiv = document.getElementById("someDiv");
someDiv.innerHTML = "<span>" + obj + "</span>";
template.jst

<span> ${obj} </span>
Aplicacoes dinamicas Rails com Backbone
template.jst

<span> ${obj} </span>
template.jst.ejs

<span> <%= obj %> </span>
app/assets/javascripts/templates/app.jst.ejs




      <div id="products" class="span10">
      </div>
      <div id="cart" class="span6">
      </div>
app/assets/javascripts/views/app_view.js


 window.AppView = Backbone.View.extend({
   template: JST["templates/app"],
   className: "row",

   initialize: function(){
   },

   render: function(){
     $(this.el).html(this.template());
     return this;
   }
 });
app/assets/javascripts/home.js




$(function(){
  view = new AppView().render().el;
  $(view).appendTo("#application");
});
app/assets/javascripts/home.js




             $(function(){
               view = new AppView().render().el;
               $(view).appendTo("#application");
             });



<div class="row">
  <div id="products" class="span12">
  </div>
  <div id="cart" class="span6">
  </div>
</div>
Passo 2
ProductView
app/assets/javascripts/templates/product.jst.ejs


<div class="product-image">
  <img class="thumbnail" src="http://placehold.it/90x90" alt="">
</div>
<div class="details">
  <span class="name"><%= model.get("name") %></span><br />
  <span class="price">R$ <%= model.get("price") %></span>
  <form class="add_product">
    <input type="hidden" name="id" value="<%= model.get("id") %>">
    <input type="submit" name="commit" value="Comprar" class="btn info">
  </form>
</div>
app/assets/javascripts/views/product_view.js


window.ProductView = Backbone.View.extend({
  template: JST["templates/product"],
  className: "product-detail",

  initialize: function(){
  },

  render: function(){
    $(this.el).html(this.template({model: this.model}));
    return this;
  }
});
rails g model product name:string price:decimal

           rails g controller products
         config/initializers/backbone.rb

   ActiveRecord::Base.include_root_in_json = false
rails g model product name:string price:decimal

           rails g controller products
         config/initializers/backbone.rb

   ActiveRecord::Base.include_root_in_json = false




           [
               {"product": { "name" : "" }},
               {"product": { "name": "" }},
           ]
rails g model product name:string price:decimal

           rails g controller products
         config/initializers/backbone.rb

   ActiveRecord::Base.include_root_in_json = false




           [
               {"name" : "" },
               {"name": "" },
           ]
app/controllers/products_controller.rb




class ProductsController < ApplicationController
  respond_to :json
  def index
    @products = Product.all
    respond_with @products
  end
end
app/assets/javascripts/models/product.js




window.Product = Backbone.Model.extend({

});

window.ProductsCollection = Backbone.Collections.extend({
  model: Product,
  url: '/products'
});
app/assets/javascripts/views/app_view.js

window.AppView = Backbone.View.extend({

  initialize: function(){
    _.bindAll(this, 'addOne', 'addAll');

       this.collection = new ProductsCollection;
       this.collection.bind('add', this.addOne);
       this.collection.bind('all', this.addAll);

       this.collection.fetch();
  },

  addAll: function(){
     $("#products").html("");
     this.collection.each(this.addOne);
  },

  addOne: function(product){
    view = new ProductView({model: product}).render().el;
    $(view).appendTo("#products");
  }
});
Aplicacoes dinamicas Rails com Backbone
Passo 3
CartView
app/assets/javascripts/templates/cart.jst.ejs




<div id="cart-products">
</div>
<hr/>
Total: <%= model.get("quantity") %> R$ <%= model.get("total") %>
app/assets/javascripts/views/cart_view.js

window.CartView = Backbone.View.extend({
  template: JST["templates/cart"],
  className: "cart-detail",

  initialize: function(){
     _.bindAll(this, 'render');
     this.model.bind('change', this.render);
     this.model.fetch();
  },

  render: function(){
    $(this.el).html(this.template({model: this.model}));
    return this;
  }
});
app/assets/javascripts/models/cart.js




 window.Cart = Backbone.Model.extend({
   url: function(){
     return '/cart';
   }
 });
rails g model cart quantity:integer total:decimal

             rails g controller cart
app/controllers/cart_controller.rb




class CartController < ApplicationController
  respond_to :json

  def show
    @cart ||= Cart.first || Cart.create!
    respond_with @cart
  end
end
app/controllers/cart_controller.rb




    get 'cart' => "cart#show"
class CartController < ApplicationController
  respond_to :json

  def show
    @cart ||= Cart.first || Cart.create!
    respond_with @cart
  end
end
app/assets/javascripts/views/app_view.js


window.AppView = Backbone.View.extend({
    ...
  initialize: function(){
    ...

    this.cart = new Cart;
    this.cartView = new CartView({model: this.cart}).
       render().el;
  },
  render: function(){
     $(this.el).html(this.template());
     this.$("#cart").html(this.cartView);
     return this;
  },
  ...
});
Aplicacoes dinamicas Rails com Backbone
Passo 4
click
click
rails g model cart_product cart:references product:references
rails g model cart_product cart:references product:references

                        app/models/cart.rb


 class Cart < ActiveRecord::Base
   has_many :cart_products
   has_many :products, through: :cart_products

   def add_product(product)
     self.update_attributes
        quantity: self.quantity + 1, total: total + product.price
     self.cart_products << CartProduct.new(cart: self, product: product)
   end
 end
app/assets/javascripts/models/cart_product.js




window.CartProduct = Backbone.Model.extend({
  url: function(){
     return "/cart/product/"+this.productId+"/add";
  },
  initialize: function(args){
     this.productId = args.productId;
  }
});
app/assets/javascripts/models/cart_product.js




window.CartProduct = Backbone.Model.extend({
  url: function(){
     return "/cart/product/"+this.productId+"/add";
  },
  initialize: function(args){
     this.productId = args.productId;
  }
});


    post 'cart/product/:id/add' => "cart#add_product"
app/controllers/cart_controller.rb


class CartController < ApplicationController
  respond_to :json

  def show
    ...
  end

  def add_product
    @product = Product.find params[:id]
    @cart = Cart.first
    @cart.add_product @product
    respond_with @cart
  end
end
app/assets/javascripts/views/product_view.js

 window.ProductView = Backbone.View.extend({
   ...

   events: {
      "submit form" : "addProductToCart"
   },

   initialize: function(args){
      ...
      this.cart = args.cart
   },

   ...

 });
app/assets/javascripts/views/product_view.js

              window.ProductView = Backbone.View.extend({
                ...

                 events: {
                    "submit form" : "addProductToCart"
                 },

                 initialize: function(args){
                    ...
                    this.cart = args.cart
                 },

                 ...
    app/assets/javascripts/views/app_view.js

              });
addOne: function(product){
  view = new ProductView({model: product, cart: this.cart}).render().el;
  $(view).appendTo("#products");
}
app/assets/javascripts/views/product_view.js

window.ProductView = Backbone.View.extend({
  ...

  addProductToCart: function(e){
    e.preventDefault();
    productId = this.$("form.add_product > input[name=id]").val();
    item = new CartProduct({productId: productId});
    view = this;
    item.save({}, {
      success: function(){
        view.cart.fetch();
      }
    });
  }
});
Aplicacoes dinamicas Rails com Backbone
http://backbone-todos.heroku.com/
Obrigado
                  felix.rafael@gmail.com
                http://twitter.com/rs_felix
                 http://github.com/fellix

                        Links
       http://documentcloud.github.com/backbone/
           https://github.com/creationix/haml-js
       https://github.com/codebrew/backbone-rails
http://seesparkbox.com/foundry/better_rails_apis_with_rabl
1 de 95

Recomendados

Ruby - Design patterns tdc2011 por
Ruby - Design patterns tdc2011Ruby - Design patterns tdc2011
Ruby - Design patterns tdc2011Rafael Felix da Silva
1.1K visualizações153 slides
Backbone - TDC 2011 Floripa por
Backbone - TDC 2011 FloripaBackbone - TDC 2011 Floripa
Backbone - TDC 2011 FloripaRafael Felix da Silva
759 visualizações102 slides
Desenvolvendo APIs usando Rails - Guru SC 2012 por
Desenvolvendo APIs usando Rails - Guru SC 2012Desenvolvendo APIs usando Rails - Guru SC 2012
Desenvolvendo APIs usando Rails - Guru SC 2012Rafael Felix da Silva
746 visualizações31 slides
Introduzione JQuery por
Introduzione JQueryIntroduzione JQuery
Introduzione JQueryorestJump
405 visualizações23 slides
Symfony2 Building on Alpha / Beta technology por
Symfony2 Building on Alpha / Beta technologySymfony2 Building on Alpha / Beta technology
Symfony2 Building on Alpha / Beta technologyDaniel Knell
750 visualizações59 slides
Silex meets SOAP & REST por
Silex meets SOAP & RESTSilex meets SOAP & REST
Silex meets SOAP & RESTHugo Hamon
14.8K visualizações62 slides

Mais conteúdo relacionado

Mais procurados

Hacking Your Way To Better Security - Dutch PHP Conference 2016 por
Hacking Your Way To Better Security - Dutch PHP Conference 2016Hacking Your Way To Better Security - Dutch PHP Conference 2016
Hacking Your Way To Better Security - Dutch PHP Conference 2016Colin O'Dell
863 visualizações109 slides
jQuery from the very beginning por
jQuery from the very beginningjQuery from the very beginning
jQuery from the very beginningAnis Ahmad
11.8K visualizações73 slides
Min-Maxing Software Costs - Laracon EU 2015 por
Min-Maxing Software Costs - Laracon EU 2015Min-Maxing Software Costs - Laracon EU 2015
Min-Maxing Software Costs - Laracon EU 2015Konstantin Kudryashov
14.2K visualizações95 slides
jQuery PPT por
jQuery PPTjQuery PPT
jQuery PPTDominic Arrojado
20.4K visualizações12 slides
Angular.js Fundamentals por
Angular.js FundamentalsAngular.js Fundamentals
Angular.js FundamentalsMark
2.1K visualizações167 slides
Design Patterns avec PHP 5.3, Symfony et Pimple por
Design Patterns avec PHP 5.3, Symfony et PimpleDesign Patterns avec PHP 5.3, Symfony et Pimple
Design Patterns avec PHP 5.3, Symfony et PimpleHugo Hamon
6.1K visualizações68 slides

Mais procurados(20)

Hacking Your Way To Better Security - Dutch PHP Conference 2016 por Colin O'Dell
Hacking Your Way To Better Security - Dutch PHP Conference 2016Hacking Your Way To Better Security - Dutch PHP Conference 2016
Hacking Your Way To Better Security - Dutch PHP Conference 2016
Colin O'Dell863 visualizações
jQuery from the very beginning por Anis Ahmad
jQuery from the very beginningjQuery from the very beginning
jQuery from the very beginning
Anis Ahmad11.8K visualizações
Min-Maxing Software Costs - Laracon EU 2015 por Konstantin Kudryashov
Min-Maxing Software Costs - Laracon EU 2015Min-Maxing Software Costs - Laracon EU 2015
Min-Maxing Software Costs - Laracon EU 2015
Konstantin Kudryashov14.2K visualizações
jQuery PPT por Dominic Arrojado
jQuery PPTjQuery PPT
jQuery PPT
Dominic Arrojado20.4K visualizações
Angular.js Fundamentals por Mark
Angular.js FundamentalsAngular.js Fundamentals
Angular.js Fundamentals
Mark 2.1K visualizações
Design Patterns avec PHP 5.3, Symfony et Pimple por Hugo Hamon
Design Patterns avec PHP 5.3, Symfony et PimpleDesign Patterns avec PHP 5.3, Symfony et Pimple
Design Patterns avec PHP 5.3, Symfony et Pimple
Hugo Hamon6.1K visualizações
The History of PHPersistence por Hugo Hamon
The History of PHPersistenceThe History of PHPersistence
The History of PHPersistence
Hugo Hamon2.3K visualizações
Database Design Patterns por Hugo Hamon
Database Design PatternsDatabase Design Patterns
Database Design Patterns
Hugo Hamon11.4K visualizações
Building Single Page Apps with Backbone.js, Coffeescript and Rails 3.1 por Vagmi Mudumbai
Building Single Page Apps with Backbone.js, Coffeescript and Rails 3.1Building Single Page Apps with Backbone.js, Coffeescript and Rails 3.1
Building Single Page Apps with Backbone.js, Coffeescript and Rails 3.1
Vagmi Mudumbai1.9K visualizações
AngularJS Services por Eyal Vardi
AngularJS ServicesAngularJS Services
AngularJS Services
Eyal Vardi9.8K visualizações
Avinash Kundaliya: Javascript and WordPress por wpnepal
Avinash Kundaliya: Javascript and WordPressAvinash Kundaliya: Javascript and WordPress
Avinash Kundaliya: Javascript and WordPress
wpnepal2K visualizações
Introduction to Zend Framework web services por Michelangelo van Dam
Introduction to Zend Framework web servicesIntroduction to Zend Framework web services
Introduction to Zend Framework web services
Michelangelo van Dam4.9K visualizações
06 jQuery #burningkeyboards por Denis Ristic
06 jQuery  #burningkeyboards06 jQuery  #burningkeyboards
06 jQuery #burningkeyboards
Denis Ristic81 visualizações
Introduction to ReasonML por Riza Fahmi
Introduction to ReasonMLIntroduction to ReasonML
Introduction to ReasonML
Riza Fahmi457 visualizações
Perkenalan ReasonML por Riza Fahmi
Perkenalan ReasonMLPerkenalan ReasonML
Perkenalan ReasonML
Riza Fahmi321 visualizações
Decoupling with Design Patterns and Symfony2 DIC por Konstantin Kudryashov
Decoupling with Design Patterns and Symfony2 DICDecoupling with Design Patterns and Symfony2 DIC
Decoupling with Design Patterns and Symfony2 DIC
Konstantin Kudryashov6.5K visualizações
Template syntax in Angular 2.0 por Eyal Vardi
Template syntax in Angular 2.0Template syntax in Angular 2.0
Template syntax in Angular 2.0
Eyal Vardi3.6K visualizações
jQuery and Rails, Sitting in a Tree por adamlogic
jQuery and Rails, Sitting in a TreejQuery and Rails, Sitting in a Tree
jQuery and Rails, Sitting in a Tree
adamlogic1.8K visualizações
05 JavaScript #burningkeyboards por Denis Ristic
05 JavaScript #burningkeyboards05 JavaScript #burningkeyboards
05 JavaScript #burningkeyboards
Denis Ristic114 visualizações

Similar a Aplicacoes dinamicas Rails com Backbone

Understanding backbonejs por
Understanding backbonejsUnderstanding backbonejs
Understanding backbonejsNick Lee
2.6K visualizações39 slides
Backbone.js — Introduction to client-side JavaScript MVC por
Backbone.js — Introduction to client-side JavaScript MVCBackbone.js — Introduction to client-side JavaScript MVC
Backbone.js — Introduction to client-side JavaScript MVCpootsbook
3K visualizações60 slides
Backbone.js Simple Tutorial por
Backbone.js Simple TutorialBackbone.js Simple Tutorial
Backbone.js Simple Tutorial추근 문
4.7K visualizações16 slides
Taming that client side mess with Backbone.js por
Taming that client side mess with Backbone.jsTaming that client side mess with Backbone.js
Taming that client side mess with Backbone.jsJarod Ferguson
2.7K visualizações34 slides
Backbone.js por
Backbone.jsBackbone.js
Backbone.jsKnoldus Inc.
2K visualizações22 slides
Javascript MVC & Backbone Tips & Tricks por
Javascript MVC & Backbone Tips & TricksJavascript MVC & Backbone Tips & Tricks
Javascript MVC & Backbone Tips & TricksHjörtur Hilmarsson
4.8K visualizações88 slides

Similar a Aplicacoes dinamicas Rails com Backbone(20)

Understanding backbonejs por Nick Lee
Understanding backbonejsUnderstanding backbonejs
Understanding backbonejs
Nick Lee2.6K visualizações
Backbone.js — Introduction to client-side JavaScript MVC por pootsbook
Backbone.js — Introduction to client-side JavaScript MVCBackbone.js — Introduction to client-side JavaScript MVC
Backbone.js — Introduction to client-side JavaScript MVC
pootsbook3K visualizações
Backbone.js Simple Tutorial por 추근 문
Backbone.js Simple TutorialBackbone.js Simple Tutorial
Backbone.js Simple Tutorial
추근 문4.7K visualizações
Taming that client side mess with Backbone.js por Jarod Ferguson
Taming that client side mess with Backbone.jsTaming that client side mess with Backbone.js
Taming that client side mess with Backbone.js
Jarod Ferguson2.7K visualizações
Backbone.js por Knoldus Inc.
Backbone.jsBackbone.js
Backbone.js
Knoldus Inc.2K visualizações
Javascript MVC & Backbone Tips & Tricks por Hjörtur Hilmarsson
Javascript MVC & Backbone Tips & TricksJavascript MVC & Backbone Tips & Tricks
Javascript MVC & Backbone Tips & Tricks
Hjörtur Hilmarsson4.8K visualizações
Jarv.us Showcase — SenchaCon 2011 por Chris Alfano
Jarv.us Showcase — SenchaCon 2011Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011
Chris Alfano355 visualizações
Big Data for each one of us por OSCON Byrum
Big Data for each one of usBig Data for each one of us
Big Data for each one of us
OSCON Byrum2.1K visualizações
前端MVC 豆瓣说 por Ting Lv
前端MVC 豆瓣说前端MVC 豆瓣说
前端MVC 豆瓣说
Ting Lv3.7K visualizações
Experience Manager 6 Developer Features - Highlights por Cédric Hüsler
Experience Manager 6 Developer Features - HighlightsExperience Manager 6 Developer Features - Highlights
Experience Manager 6 Developer Features - Highlights
Cédric Hüsler4K visualizações
Introduction to backbone presentation por Brian Hogg
Introduction to backbone presentationIntroduction to backbone presentation
Introduction to backbone presentation
Brian Hogg1.2K visualizações
Django Class-based views (Slovenian) por Luka Zakrajšek
Django Class-based views (Slovenian)Django Class-based views (Slovenian)
Django Class-based views (Slovenian)
Luka Zakrajšek1.1K visualizações
Backbone js por husnara mohammad
Backbone jsBackbone js
Backbone js
husnara mohammad209 visualizações
Drupal & javascript por Almog Baku
Drupal & javascriptDrupal & javascript
Drupal & javascript
Almog Baku4.8K visualizações
Rails is not just Ruby por Marco Otte-Witte
Rails is not just RubyRails is not just Ruby
Rails is not just Ruby
Marco Otte-Witte613 visualizações
Writing Maintainable JavaScript por Andrew Dupont
Writing Maintainable JavaScriptWriting Maintainable JavaScript
Writing Maintainable JavaScript
Andrew Dupont3.1K visualizações
Rails 3 overview por Yehuda Katz
Rails 3 overviewRails 3 overview
Rails 3 overview
Yehuda Katz2.1K visualizações
Django at the Disco por Richard Leland
Django at the DiscoDjango at the Disco
Django at the Disco
Richard Leland791 visualizações
Django at the Disco por Richard Leland
Django at the DiscoDjango at the Disco
Django at the Disco
Richard Leland450 visualizações

Último

2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue por
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlueShapeBlue
147 visualizações23 slides
Updates on the LINSTOR Driver for CloudStack - Rene Peinthor - LINBIT por
Updates on the LINSTOR Driver for CloudStack - Rene Peinthor - LINBITUpdates on the LINSTOR Driver for CloudStack - Rene Peinthor - LINBIT
Updates on the LINSTOR Driver for CloudStack - Rene Peinthor - LINBITShapeBlue
206 visualizações8 slides
Initiating and Advancing Your Strategic GIS Governance Strategy por
Initiating and Advancing Your Strategic GIS Governance StrategyInitiating and Advancing Your Strategic GIS Governance Strategy
Initiating and Advancing Your Strategic GIS Governance StrategySafe Software
176 visualizações68 slides
Ransomware is Knocking your Door_Final.pdf por
Ransomware is Knocking your Door_Final.pdfRansomware is Knocking your Door_Final.pdf
Ransomware is Knocking your Door_Final.pdfSecurity Bootcamp
96 visualizações46 slides
Webinar : Desperately Seeking Transformation - Part 2: Insights from leading... por
Webinar : Desperately Seeking Transformation - Part 2:  Insights from leading...Webinar : Desperately Seeking Transformation - Part 2:  Insights from leading...
Webinar : Desperately Seeking Transformation - Part 2: Insights from leading...The Digital Insurer
90 visualizações52 slides
Confidence in CloudStack - Aron Wagner, Nathan Gleason - Americ por
Confidence in CloudStack - Aron Wagner, Nathan Gleason - AmericConfidence in CloudStack - Aron Wagner, Nathan Gleason - Americ
Confidence in CloudStack - Aron Wagner, Nathan Gleason - AmericShapeBlue
130 visualizações9 slides

Último(20)

2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue por ShapeBlue
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue
ShapeBlue147 visualizações
Updates on the LINSTOR Driver for CloudStack - Rene Peinthor - LINBIT por ShapeBlue
Updates on the LINSTOR Driver for CloudStack - Rene Peinthor - LINBITUpdates on the LINSTOR Driver for CloudStack - Rene Peinthor - LINBIT
Updates on the LINSTOR Driver for CloudStack - Rene Peinthor - LINBIT
ShapeBlue206 visualizações
Initiating and Advancing Your Strategic GIS Governance Strategy por Safe Software
Initiating and Advancing Your Strategic GIS Governance StrategyInitiating and Advancing Your Strategic GIS Governance Strategy
Initiating and Advancing Your Strategic GIS Governance Strategy
Safe Software176 visualizações
Ransomware is Knocking your Door_Final.pdf por Security Bootcamp
Ransomware is Knocking your Door_Final.pdfRansomware is Knocking your Door_Final.pdf
Ransomware is Knocking your Door_Final.pdf
Security Bootcamp96 visualizações
Webinar : Desperately Seeking Transformation - Part 2: Insights from leading... por The Digital Insurer
Webinar : Desperately Seeking Transformation - Part 2:  Insights from leading...Webinar : Desperately Seeking Transformation - Part 2:  Insights from leading...
Webinar : Desperately Seeking Transformation - Part 2: Insights from leading...
The Digital Insurer90 visualizações
Confidence in CloudStack - Aron Wagner, Nathan Gleason - Americ por ShapeBlue
Confidence in CloudStack - Aron Wagner, Nathan Gleason - AmericConfidence in CloudStack - Aron Wagner, Nathan Gleason - Americ
Confidence in CloudStack - Aron Wagner, Nathan Gleason - Americ
ShapeBlue130 visualizações
Future of AR - Facebook Presentation por Rob McCarty
Future of AR - Facebook PresentationFuture of AR - Facebook Presentation
Future of AR - Facebook Presentation
Rob McCarty64 visualizações
The Role of Patterns in the Era of Large Language Models por Yunyao Li
The Role of Patterns in the Era of Large Language ModelsThe Role of Patterns in the Era of Large Language Models
The Role of Patterns in the Era of Large Language Models
Yunyao Li85 visualizações
Live Demo Showcase: Unveiling Dell PowerFlex’s IaaS Capabilities with Apache ... por ShapeBlue
Live Demo Showcase: Unveiling Dell PowerFlex’s IaaS Capabilities with Apache ...Live Demo Showcase: Unveiling Dell PowerFlex’s IaaS Capabilities with Apache ...
Live Demo Showcase: Unveiling Dell PowerFlex’s IaaS Capabilities with Apache ...
ShapeBlue126 visualizações
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or... por ShapeBlue
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...
ShapeBlue198 visualizações
Centralized Logging Feature in CloudStack using ELK and Grafana - Kiran Chava... por ShapeBlue
Centralized Logging Feature in CloudStack using ELK and Grafana - Kiran Chava...Centralized Logging Feature in CloudStack using ELK and Grafana - Kiran Chava...
Centralized Logging Feature in CloudStack using ELK and Grafana - Kiran Chava...
ShapeBlue145 visualizações
Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha... por ShapeBlue
Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha...Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha...
Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha...
ShapeBlue180 visualizações
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue por ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlueCloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
ShapeBlue135 visualizações
Declarative Kubernetes Cluster Deployment with Cloudstack and Cluster API - O... por ShapeBlue
Declarative Kubernetes Cluster Deployment with Cloudstack and Cluster API - O...Declarative Kubernetes Cluster Deployment with Cloudstack and Cluster API - O...
Declarative Kubernetes Cluster Deployment with Cloudstack and Cluster API - O...
ShapeBlue132 visualizações
Import Export Virtual Machine for KVM Hypervisor - Ayush Pandey - University ... por ShapeBlue
Import Export Virtual Machine for KVM Hypervisor - Ayush Pandey - University ...Import Export Virtual Machine for KVM Hypervisor - Ayush Pandey - University ...
Import Export Virtual Machine for KVM Hypervisor - Ayush Pandey - University ...
ShapeBlue119 visualizações
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue por ShapeBlue
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlueWhat’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue
ShapeBlue263 visualizações
Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And... por ShapeBlue
Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And...Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And...
Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And...
ShapeBlue106 visualizações
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N... por James Anderson
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
James Anderson160 visualizações
State of the Union - Rohit Yadav - Apache CloudStack por ShapeBlue
State of the Union - Rohit Yadav - Apache CloudStackState of the Union - Rohit Yadav - Apache CloudStack
State of the Union - Rohit Yadav - Apache CloudStack
ShapeBlue297 visualizações

Aplicacoes dinamicas Rails com Backbone