SlideShare a Scribd company logo
1 of 95
Download to read offline
Aplicações
dinâmicas em
    Rails
Rafael Felix


         @rs_felix


http://blog.rollingwithcode.com




  http://www.crafters.com.br
Backbone é uma estrutura para
aplicações que fazem uso pesado de JavaScript, e
  conecta-se a sua aplicação por uma interface
                    RESTful.
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
layout
layout
         application
layout
                   application
         ProductView
layout
                   application
         ProductView


                                 CartView
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>
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");
  }
});
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;
  },
  ...
});
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();
      }
    });
  }
});
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

More Related Content

What's hot

Hacking Your Way To Better Security - Dutch PHP Conference 2016
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
 
jQuery from the very beginning
jQuery from the very beginningjQuery from the very beginning
jQuery from the very beginningAnis Ahmad
 
Min-Maxing Software Costs - Laracon EU 2015
Min-Maxing Software Costs - Laracon EU 2015Min-Maxing Software Costs - Laracon EU 2015
Min-Maxing Software Costs - Laracon EU 2015Konstantin Kudryashov
 
Angular.js Fundamentals
Angular.js FundamentalsAngular.js Fundamentals
Angular.js FundamentalsMark
 
Design Patterns avec PHP 5.3, Symfony et Pimple
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
 
The History of PHPersistence
The History of PHPersistenceThe History of PHPersistence
The History of PHPersistenceHugo Hamon
 
Database Design Patterns
Database Design PatternsDatabase Design Patterns
Database Design PatternsHugo Hamon
 
Building Single Page Apps with Backbone.js, Coffeescript and Rails 3.1
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.1Vagmi Mudumbai
 
AngularJS Services
AngularJS ServicesAngularJS Services
AngularJS ServicesEyal Vardi
 
Avinash Kundaliya: Javascript and WordPress
Avinash Kundaliya: Javascript and WordPressAvinash Kundaliya: Javascript and WordPress
Avinash Kundaliya: Javascript and WordPresswpnepal
 
Introduction to Zend Framework web services
Introduction to Zend Framework web servicesIntroduction to Zend Framework web services
Introduction to Zend Framework web servicesMichelangelo van Dam
 
06 jQuery #burningkeyboards
06 jQuery  #burningkeyboards06 jQuery  #burningkeyboards
06 jQuery #burningkeyboardsDenis Ristic
 
Introduction to ReasonML
Introduction to ReasonMLIntroduction to ReasonML
Introduction to ReasonMLRiza Fahmi
 
Perkenalan ReasonML
Perkenalan ReasonMLPerkenalan ReasonML
Perkenalan ReasonMLRiza Fahmi
 
Decoupling with Design Patterns and Symfony2 DIC
Decoupling with Design Patterns and Symfony2 DICDecoupling with Design Patterns and Symfony2 DIC
Decoupling with Design Patterns and Symfony2 DICKonstantin Kudryashov
 
Template syntax in Angular 2.0
Template syntax in Angular 2.0Template syntax in Angular 2.0
Template syntax in Angular 2.0Eyal Vardi
 
jQuery and Rails, Sitting in a Tree
jQuery and Rails, Sitting in a TreejQuery and Rails, Sitting in a Tree
jQuery and Rails, Sitting in a Treeadamlogic
 
05 JavaScript #burningkeyboards
05 JavaScript #burningkeyboards05 JavaScript #burningkeyboards
05 JavaScript #burningkeyboardsDenis Ristic
 

What's hot (20)

Hacking Your Way To Better Security - Dutch PHP Conference 2016
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
 
jQuery from the very beginning
jQuery from the very beginningjQuery from the very beginning
jQuery from the very beginning
 
Min-Maxing Software Costs - Laracon EU 2015
Min-Maxing Software Costs - Laracon EU 2015Min-Maxing Software Costs - Laracon EU 2015
Min-Maxing Software Costs - Laracon EU 2015
 
jQuery PPT
jQuery PPTjQuery PPT
jQuery PPT
 
Angular.js Fundamentals
Angular.js FundamentalsAngular.js Fundamentals
Angular.js Fundamentals
 
Design Patterns avec PHP 5.3, Symfony et Pimple
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
 
The History of PHPersistence
The History of PHPersistenceThe History of PHPersistence
The History of PHPersistence
 
Database Design Patterns
Database Design PatternsDatabase Design Patterns
Database Design Patterns
 
Building Single Page Apps with Backbone.js, Coffeescript and Rails 3.1
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
 
Min-Maxing Software Costs
Min-Maxing Software CostsMin-Maxing Software Costs
Min-Maxing Software Costs
 
AngularJS Services
AngularJS ServicesAngularJS Services
AngularJS Services
 
Avinash Kundaliya: Javascript and WordPress
Avinash Kundaliya: Javascript and WordPressAvinash Kundaliya: Javascript and WordPress
Avinash Kundaliya: Javascript and WordPress
 
Introduction to Zend Framework web services
Introduction to Zend Framework web servicesIntroduction to Zend Framework web services
Introduction to Zend Framework web services
 
06 jQuery #burningkeyboards
06 jQuery  #burningkeyboards06 jQuery  #burningkeyboards
06 jQuery #burningkeyboards
 
Introduction to ReasonML
Introduction to ReasonMLIntroduction to ReasonML
Introduction to ReasonML
 
Perkenalan ReasonML
Perkenalan ReasonMLPerkenalan ReasonML
Perkenalan ReasonML
 
Decoupling with Design Patterns and Symfony2 DIC
Decoupling with Design Patterns and Symfony2 DICDecoupling with Design Patterns and Symfony2 DIC
Decoupling with Design Patterns and Symfony2 DIC
 
Template syntax in Angular 2.0
Template syntax in Angular 2.0Template syntax in Angular 2.0
Template syntax in Angular 2.0
 
jQuery and Rails, Sitting in a Tree
jQuery and Rails, Sitting in a TreejQuery and Rails, Sitting in a Tree
jQuery and Rails, Sitting in a Tree
 
05 JavaScript #burningkeyboards
05 JavaScript #burningkeyboards05 JavaScript #burningkeyboards
05 JavaScript #burningkeyboards
 

Similar to Aplicacoes dinamicas Rails com Backbone

Understanding backbonejs
Understanding backbonejsUnderstanding backbonejs
Understanding backbonejsNick Lee
 
Backbone.js — Introduction to client-side JavaScript MVC
Backbone.js — Introduction to client-side JavaScript MVCBackbone.js — Introduction to client-side JavaScript MVC
Backbone.js — Introduction to client-side JavaScript MVCpootsbook
 
Backbone.js Simple Tutorial
Backbone.js Simple TutorialBackbone.js Simple Tutorial
Backbone.js Simple Tutorial추근 문
 
Taming that client side mess with Backbone.js
Taming that client side mess with Backbone.jsTaming that client side mess with Backbone.js
Taming that client side mess with Backbone.jsJarod Ferguson
 
Javascript MVC & Backbone Tips & Tricks
Javascript MVC & Backbone Tips & TricksJavascript MVC & Backbone Tips & Tricks
Javascript MVC & Backbone Tips & TricksHjörtur Hilmarsson
 
Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Chris Alfano
 
Big Data for each one of us
Big Data for each one of usBig Data for each one of us
Big Data for each one of usOSCON Byrum
 
前端MVC 豆瓣说
前端MVC 豆瓣说前端MVC 豆瓣说
前端MVC 豆瓣说Ting Lv
 
Experience Manager 6 Developer Features - Highlights
Experience Manager 6 Developer Features - HighlightsExperience Manager 6 Developer Features - Highlights
Experience Manager 6 Developer Features - HighlightsCédric Hüsler
 
Introduction to backbone presentation
Introduction to backbone presentationIntroduction to backbone presentation
Introduction to backbone presentationBrian Hogg
 
Django Class-based views (Slovenian)
Django Class-based views (Slovenian)Django Class-based views (Slovenian)
Django Class-based views (Slovenian)Luka Zakrajšek
 
Drupal & javascript
Drupal & javascriptDrupal & javascript
Drupal & javascriptAlmog Baku
 
Writing Maintainable JavaScript
Writing Maintainable JavaScriptWriting Maintainable JavaScript
Writing Maintainable JavaScriptAndrew Dupont
 
Rails 3 overview
Rails 3 overviewRails 3 overview
Rails 3 overviewYehuda Katz
 

Similar to Aplicacoes dinamicas Rails com Backbone (20)

Understanding backbonejs
Understanding backbonejsUnderstanding backbonejs
Understanding backbonejs
 
Backbone.js — Introduction to client-side JavaScript MVC
Backbone.js — Introduction to client-side JavaScript MVCBackbone.js — Introduction to client-side JavaScript MVC
Backbone.js — Introduction to client-side JavaScript MVC
 
Backbone.js Simple Tutorial
Backbone.js Simple TutorialBackbone.js Simple Tutorial
Backbone.js Simple Tutorial
 
Taming that client side mess with Backbone.js
Taming that client side mess with Backbone.jsTaming that client side mess with Backbone.js
Taming that client side mess with Backbone.js
 
Backbone.js
Backbone.jsBackbone.js
Backbone.js
 
Javascript MVC & Backbone Tips & Tricks
Javascript MVC & Backbone Tips & TricksJavascript MVC & Backbone Tips & Tricks
Javascript MVC & Backbone Tips & Tricks
 
Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011
 
Big Data for each one of us
Big Data for each one of usBig Data for each one of us
Big Data for each one of us
 
前端MVC 豆瓣说
前端MVC 豆瓣说前端MVC 豆瓣说
前端MVC 豆瓣说
 
Experience Manager 6 Developer Features - Highlights
Experience Manager 6 Developer Features - HighlightsExperience Manager 6 Developer Features - Highlights
Experience Manager 6 Developer Features - Highlights
 
JQuery Flot
JQuery FlotJQuery Flot
JQuery Flot
 
Introduction to backbone presentation
Introduction to backbone presentationIntroduction to backbone presentation
Introduction to backbone presentation
 
Django Class-based views (Slovenian)
Django Class-based views (Slovenian)Django Class-based views (Slovenian)
Django Class-based views (Slovenian)
 
Backbone js
Backbone jsBackbone js
Backbone js
 
Drupal & javascript
Drupal & javascriptDrupal & javascript
Drupal & javascript
 
Rails is not just Ruby
Rails is not just RubyRails is not just Ruby
Rails is not just Ruby
 
Writing Maintainable JavaScript
Writing Maintainable JavaScriptWriting Maintainable JavaScript
Writing Maintainable JavaScript
 
Rails 3 overview
Rails 3 overviewRails 3 overview
Rails 3 overview
 
Django at the Disco
Django at the DiscoDjango at the Disco
Django at the Disco
 
Django at the Disco
Django at the DiscoDjango at the Disco
Django at the Disco
 

Recently uploaded

Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfOverkill Security
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
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
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
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
 
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
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
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
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKJago de Vreede
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 

Recently uploaded (20)

Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
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
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
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
 
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
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
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
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 

Aplicacoes dinamicas Rails com Backbone