SlideShare a Scribd company logo
JavaScript Patterns
Stoyan Stefanov, Yahoo!
@stoyanstefanov




Ajax Experience, Boston 2009
3:25 p.m. Sept 15, 2009
About me
•  Yahoo! Search
•  Yahoo! Exceptional
   Performance
•  YSlow 2.0 architect
•  http://smush.it
•  Books, articles
•  http://phpied.com
Types of patterns

•  OO Design Patterns
 (gang of four)
•  JavaScript-specific
   coding patterns
•  Anti-patterns
JavaScript Patterns
In this session…
•  Object creation patterns
•  Code reuse patterns
•  Functional patterns
•  More on object creation
•  Design patterns
Object creation patterns
#
Two ways to create objects
•  Object literal
•  Constructor functions



  {}      vs.   new
Object literal
var adam = {}; // clean 
slate 

adam.name = “Adam”; 
adam.say = function() { 
  return “I am ” + 
this.name; 
}; 
Object literal
var adam = { 
  name: “Adam”, 
  say: function() { 
    return “I am ” + this.name; 
  } 
}; 
Using a constructor


var adam = new Person(“Adam”); 
adam.say(); // “I am Adam” 
Constructor functions
var Person = function(name) { 

  this.name = name; 
  this.say = function() { 
    return “I am ” + this.name; 
  }; 

}; 
Constructor functions
var Person = function(name) { 
  // var this = {}; 
  this.name = name; 
  this.say = function() { 
    return “I am ” + this.name; 
  }; 
  // return this; 
}; 
Naming convention

MyConstructor 
myFunction 
Enforcing new 
function Person() {  
  var that = (this === window) ? {} : this; 


  that.name = name; 
  that.say = function() { 
    return “I am ” + that.name; 
  }; 

  return that;  
}  
Enforcing new 
this instanceof Person 

this instanceof arguments.callee 



                           ES5
                           FTW
Prototype
var Person = function(name) { 
  this.name = name; 
}; 
Person.prototype.say = function() { 
  return “I am ” + this.name; 
}; 
How is the prototype used?

>>> var adam = new Person('Adam'); 
>>> adam.name; 
"Adam" 
>>> adam.say(); 
"I am Adam" 
If you want to reuse it,
add it to the prototype
Code reuse patterns
Inheritance – friend or foe


“Prefer object composition
to class inheritance”
Gang of 4
JavaScript Patterns
Borrowing methods pattern

•  call() and apply() 

notmyobj.doStuff.call(myobj, param1, p2, p3) 
notmyobj.doStuff.apply(myobj, [param1, p2, p3])
                                               
Example: borrowing from Array
function f() { 
   var args = [].slice.call(arguments, 1, 3); 
   return args; 
} 

>>> f(1, 2, 3, 4, 5, 6) 
2,3 


[].slice.call  
can also be
Array.prototype.slice.call 
Inheritance by copying properties
function extend(parent, child) { 
  var i, child = child || {}; 
  for (i in parent) { 
    child[i] = parent[i]; 
  } 
  return child; 
} 
Mixins
function mixInThese() { 
  var arg, prop, child = {}; 
  for (arg = 0; arg < arguments.length; arg++) { 
    for (prop in arguments[arg]) { 
      child[prop] = arguments[arg][prop]; 
    } 
  } 
  return child; 
} 
var cake = mixInThese( 
 {eggs: 2, large: true},  
 {butter: 1, salted: true}, 
 {flour: “3 cups”}, 
 {sugar: “sure!”} 
); 
Classical inheritance
function Parent(){ 
  this.name = 'Adam'; 
} 
Parent.prototype.say = function(){ 
  return this.name; 
}; 

function Child(){} 

inherit(Child, Parent); 
Option 1

function inherit(C, P) { 
  C.prototype = new P(); 
} 

ECMA standard
Option 2 – rent-a-constructor
function C(a, c, b, d) { 
  P.call(this, arguments); 
} 
•  Advantage – passes arguments
when creating an object
•  Drawback – won’t inherit from the
prototype
Option 3 – rent + prototype
function C(a, c, b, d) { 
  P.call(this, arguments); 
} 
C.prototype = new P(); 
Option 4
function inherit(C, P) { 
  C.prototype = P.prototype; 
} 
•  Advantage: everybody shares the
same prototype
•  Drawback: everybody shares the
same prototype 
Option 5
function inherit(C, P) { 
  var F = function(){}; 
  F.prototype = P.prototype; 
  C.prototype = new F(); 
} 
•  Only inherits properties/
methods of the prototype
Option 5 + super

function inherit(C, P) { 
  var F = function(){}; 
  F.prototype = P.prototype; 
  C.prototype = new F(); 
  C.uber = P.prototype; 
} 
Option 5 + super + constructor
reset
function inherit(C, P) { 
  var F = function(){}; 
  F.prototype = P.prototype; 
  C.prototype = new F(); 
  C.uber = P.prototype; 
  C.prototype.constructor = C; 
} 
Prototypal inheritance

•  by Douglas Crockford
•  no class-like constructors
•  objects inherit from objects
•  via the prototype
Prototypal inheritance
function object(o) { 
  function F(){} 
  F.prototype = o; 
  return new F(); 
                     ES5
}                    FTW
Prototypal inheritance

>>> var parent = {a: 1}; 
>>> var child = object(parent); 
>>> child.a; 
1 
>>> child.hasOwnProperty(“a”); 
false 
Functions
Functions are objects
Self-executable functions

(function(){ 
   var a = 1; 
   var b = 2; 
   alert(a + b); 
})(); 
Self-executable functions

(function(a, b){ 
  var c = a + b; 
  alert(c); 
})(1, 2); 
Callbacks
function test(a, b, fn) { 
    fn(a, b); 
} 

test(1, 2, myFunc); 

test(1, 2, function(one, two){ 
    console.log(arguments); 
}); 
Callback pattern example

document.addEventListener( 
   'click',  
   animateAndWowUser,  
   false 
); 
Callback pattern example
var thePlotThickens = function(){ 
  console.log('500ms later...'); 
}; 
setTimeout(thePlotThickens, 500); 

// anti‐pattern 
setTimeout("thePlotThickens()", 
500); 
Returning functions
function setup() { 
    alert(1); 
    return function() { 
        alert(2); 
    }; 
} 
var my = setup(); // alerts 1
                             
my(); // alerts 2 
Returning functions
function setup() { 
    var count = 0; 
    return function() { 
        return ++count; 
    }; 
} 
var next = setup(); 
next(); // 1 
next(); // 2 
Self-overwriting functions
function next() { 
    var count = 1; 
    next = function() { 
        return ++count; 
    }; 
    return count; 
} 
next(); // 1 
next(); // 2 
Lazy function definition
function lazy() { 
    var result = 2 + 2; 
    lazy = function() { 
        return result; 
    }; 
    return lazy(); 
} 
lazy(); // 4 
lazy(); // 4 
Function properties
function myFunc(param){ 
    if (!myFunc.cache) { 
        myFunc.cache = {}; 
    } 
    if (!myFunc.cache[param]) { 
        var result = {}; // … 
        myFunc.cache[param] = result; 
    } 
    return myFunc.cache[param]; 
} 
Init-time branching
// BEFORE 
var addListener = function(el, type, fn) {  

  // w3c 
  if (typeof window.addEventListener === 'function') {  
    el.addEventListener(type, fn, false);  

  // IE 
  } else if (typeof document.attachEvent === 'function') { 
    el.attachEvent('on' + type, fn);  

  // older browsers 
  } else {   
    el['on' + type] = fn;  
  }  
};  
Init-time branching
var addListener;  

if (typeof window.addEventListener === 'function') {  
  addListener = function(el, type, fn) {  
    el.addEventListener(type, fn, false);  
  };  
} else if (typeof document.attachEvent === 'function') 
{ 
  addListener = function(el, type, fn) {  
    el.attachEvent('on' + type, fn); 
  };  
} else { 
  addListener = function(el, type, fn) {    
    el['on' + type] = fn; 
  };  
}  
More object creation patterns
Private/privileged
function MyConstr() { 
    var a = 1; 
    this.sayAh = function() { 
        return a; 
    }; 
} 

>>> new MyConstr().sayAh(); 
1 
Declaring dependencies
YAHOO.properties.foo = function() 
{ 
  var Event = YAHOO.util.Event, 
      Dom   = YAHOO.util.Dom; 

  // ... 

}(); 
Namespacing

var myApp = {}; 
myApp.someObj = {}; 
myApp.someObj.someFunc =  
              function()
{}; 
Namespacing

function namespace(){…} 

>>> namespace(‘my.name.space’)
                              
>>> typeof my.name.space 
“object” 
Chaining
var o = { 
  v: 1, 
  increment: function() { 
    this.v++; 
    return this; 
  }, 
  add: function(v) { 
    this.v += v; 
    return this; 
  }, 
  shout: function(){ 
    alert(this.v); 
  } 
}; 

>>> o.increment().add(3).shout() // 5 
Configuration objects
myPerson(last, first, dob, 
address) 

vs.

var conf = { 
    first: 'Bruce', 
    last: 'Wayne' 
}; 
myPerson(conf); 
Static members – public
function MyMath() { 
  // math here... 
} 

MyMath.PI = 3.14; 
MyMath.E  = 2.7; 
Module pattern
MYAPP.namespace('modules.foo'); 
MYAPP.modules.foo = function() { 
  var a = 1; 
  return { 
    getA: function(){ 
      return a; 
    } 
  }; 
}(); 
Design Patterns
Singleton

var mysingleton = {}; 

•  It’s as simple as that
Singleton v.2 (classical)
var my1 = new Single(); 
var my2 = new Single(); 
>>> my1 === my2 
true 

•  How to make this work?
Singleton v.2 - option 1
var Single = function() { 
  if (typeof Single.instance === “object”) { 
    return Single.instance; 
  } 
  Single.instance = this; 
}; 


•  Drawback – the instance property
is public
… option 2 (closure)
function Single() { 

  var instance = this;  

  // add more to this… 

  Single = function (){ 
    return instance; 
  }; 
} 
Factory
var Polygon = function() {}; 
var triangle = Polygon.factory(‘Triangle’); 
var circle   = Polygon.factory(‘Circle’); 

Polygon.Triangle = function(){}; 
Polygon.Circle   = function(){}; 

Polygon.factory = function(name) { 
  if (typeof Polygon[name] === “function”) { 
    return new Polygon[name]();  
  } 
}; 
And one more thing…
Run JSLint




•  http://jslint.com
•  Integrate with your editor
JSLint
•  missing semi-colons
•  missing curly brackets
•  undeclared vars
•  trailing commas
•  unreachable code
•  for-in loops
•  …
Thank you!

More…
http://jspatterns.com
http://slideshare.net/stoyan
http://jsmag.com column

More Related Content

What's hot (20)

PPT
Java Programming for Designers
R. Sosa
 
PDF
Python Functions Tutorial | Working With Functions In Python | Python Trainin...
Edureka!
 
PPTX
Avro
Eric Turcotte
 
PDF
Chrome extension development
Mārtiņš Balodis
 
PPTX
Object Oriented Programming ppt presentation
AyanaRukasar
 
PDF
Property Based Testing in PHP
vinaikopp
 
PDF
Scalable JavaScript Application Architecture
Nicholas Zakas
 
PPTX
ZIO: Powerful and Principled Functional Programming in Scala
Wiem Zine Elabidine
 
PDF
Angular js routing options
Nir Kaufman
 
PPT
Advanced JavaScript
Stoyan Stefanov
 
PPTX
Js: master prototypes
Barak Drechsler
 
ODP
Django for Beginners
Jason Davies
 
PPTX
Basic Concepts of OOPs (Object Oriented Programming in Java)
Michelle Anne Meralpis
 
PDF
Exploring ZIO Prelude: The game changer for typeclasses in Scala
Jorge Vásquez
 
PDF
What is Python Lambda Function? Python Tutorial | Edureka
Edureka!
 
PDF
TypeScript: coding JavaScript without the pain
Sander Mak (@Sander_Mak)
 
PPTX
Présentation de ECMAScript 6
Julien CROUZET
 
PDF
CUST-10 Customizing the Upload File(s) dialog in Alfresco Share
Alfresco Software
 
DOCX
Automate the boring stuff with python
DEEPAKSINGHBIST1
 
PPT
OOP in C++
ppd1961
 
Java Programming for Designers
R. Sosa
 
Python Functions Tutorial | Working With Functions In Python | Python Trainin...
Edureka!
 
Chrome extension development
Mārtiņš Balodis
 
Object Oriented Programming ppt presentation
AyanaRukasar
 
Property Based Testing in PHP
vinaikopp
 
Scalable JavaScript Application Architecture
Nicholas Zakas
 
ZIO: Powerful and Principled Functional Programming in Scala
Wiem Zine Elabidine
 
Angular js routing options
Nir Kaufman
 
Advanced JavaScript
Stoyan Stefanov
 
Js: master prototypes
Barak Drechsler
 
Django for Beginners
Jason Davies
 
Basic Concepts of OOPs (Object Oriented Programming in Java)
Michelle Anne Meralpis
 
Exploring ZIO Prelude: The game changer for typeclasses in Scala
Jorge Vásquez
 
What is Python Lambda Function? Python Tutorial | Edureka
Edureka!
 
TypeScript: coding JavaScript without the pain
Sander Mak (@Sander_Mak)
 
Présentation de ECMAScript 6
Julien CROUZET
 
CUST-10 Customizing the Upload File(s) dialog in Alfresco Share
Alfresco Software
 
Automate the boring stuff with python
DEEPAKSINGHBIST1
 
OOP in C++
ppd1961
 

Viewers also liked (19)

KEY
JavaScript Growing Up
David Padbury
 
PDF
Javascript Module Patterns
Nicholas Jansma
 
PPT
Patterns In-Javascript
Mindfire Solutions
 
PDF
Scalable JavaScript Design Patterns
Addy Osmani
 
PDF
Javascript Best Practices
Christian Heilmann
 
PPT
GUI Test Patterns
Rafael Pires
 
PPT
CS6201 Software Reuse - Design Patterns
Kwangshin Oh
 
PPT
Test Patterns - What is a Pattern?
Rafael Pires
 
PDF
Software Testing: Models, Patterns, Tools
Bob Binder
 
PDF
JavaScript Modules Done Right
Mariusz Nowak
 
PDF
The many facets of code reuse in JavaScript
Leonardo Borges
 
PDF
WebShoppers 20ª Edição
FirstCom Comunicacao
 
PPTX
Demystifying Communication in a Digital World: Social Media 101
Shonali Burke
 
PDF
Who's afraid of the iPad
Richard Sedley
 
PPTX
Mobile security services brampton
anderson_blake
 
PDF
Software Test Patterns: Successes and Challenges
Bob Binder
 
PPTX
jQuery PPT
Dominic Arrojado
 
PPTX
August 2016 HUG: Open Source Big Data Ingest with StreamSets Data Collector
Yahoo Developer Network
 
PDF
jQuery for beginners
Arulmurugan Rajaraman
 
JavaScript Growing Up
David Padbury
 
Javascript Module Patterns
Nicholas Jansma
 
Patterns In-Javascript
Mindfire Solutions
 
Scalable JavaScript Design Patterns
Addy Osmani
 
Javascript Best Practices
Christian Heilmann
 
GUI Test Patterns
Rafael Pires
 
CS6201 Software Reuse - Design Patterns
Kwangshin Oh
 
Test Patterns - What is a Pattern?
Rafael Pires
 
Software Testing: Models, Patterns, Tools
Bob Binder
 
JavaScript Modules Done Right
Mariusz Nowak
 
The many facets of code reuse in JavaScript
Leonardo Borges
 
WebShoppers 20ª Edição
FirstCom Comunicacao
 
Demystifying Communication in a Digital World: Social Media 101
Shonali Burke
 
Who's afraid of the iPad
Richard Sedley
 
Mobile security services brampton
anderson_blake
 
Software Test Patterns: Successes and Challenges
Bob Binder
 
jQuery PPT
Dominic Arrojado
 
August 2016 HUG: Open Source Big Data Ingest with StreamSets Data Collector
Yahoo Developer Network
 
jQuery for beginners
Arulmurugan Rajaraman
 
Ad

Similar to JavaScript Patterns (20)

PPTX
Ajaxworld
deannalagason
 
PPTX
ECMA5 approach to building JavaScript frameworks with Anzor Bashkhaz
FITC
 
PDF
Object Oriented JavaScript
Michael Girouard
 
PDF
JavaScript For CSharp Developer
Sarvesh Kushwaha
 
PPTX
Object Oriented JavaScript
Julie Iskander
 
PPTX
Front end fundamentals session 1: javascript core
Web Zhao
 
PPT
JavaScript - Programming Languages course
yoavrubin
 
PDF
JavaScript in 2016
Codemotion
 
PPTX
JavaScript in 2016 (Codemotion Rome)
Eduard Tomàs
 
PDF
JavaScript Inheritance
Jussi Pohjolainen
 
PDF
JavaScript Abstraction
☆ Milan Adamovsky ☆
 
PDF
Core concepts-javascript
Prajwala Manchikatla
 
PPTX
Prototype & Inheritance in JavaScript
Sunny Sharma
 
PPTX
Awesomeness of JavaScript…almost
Quinton Sheppard
 
PPT
JavaScript OOP
Doncho Minkov
 
PDF
OOPs Concepts - Android Programming
Purvik Rana
 
KEY
2012 oct-12 - java script inheritance
pedro.carvalho
 
PDF
Introduction to web programming for java and c# programmers by @drpicox
David Rodenas
 
PDF
Object Oriented Programming in JavaScript
zand3rs
 
PPTX
Design patterns in javascript
Miao Siyu
 
Ajaxworld
deannalagason
 
ECMA5 approach to building JavaScript frameworks with Anzor Bashkhaz
FITC
 
Object Oriented JavaScript
Michael Girouard
 
JavaScript For CSharp Developer
Sarvesh Kushwaha
 
Object Oriented JavaScript
Julie Iskander
 
Front end fundamentals session 1: javascript core
Web Zhao
 
JavaScript - Programming Languages course
yoavrubin
 
JavaScript in 2016
Codemotion
 
JavaScript in 2016 (Codemotion Rome)
Eduard Tomàs
 
JavaScript Inheritance
Jussi Pohjolainen
 
JavaScript Abstraction
☆ Milan Adamovsky ☆
 
Core concepts-javascript
Prajwala Manchikatla
 
Prototype & Inheritance in JavaScript
Sunny Sharma
 
Awesomeness of JavaScript…almost
Quinton Sheppard
 
JavaScript OOP
Doncho Minkov
 
OOPs Concepts - Android Programming
Purvik Rana
 
2012 oct-12 - java script inheritance
pedro.carvalho
 
Introduction to web programming for java and c# programmers by @drpicox
David Rodenas
 
Object Oriented Programming in JavaScript
zand3rs
 
Design patterns in javascript
Miao Siyu
 
Ad

More from Stoyan Stefanov (20)

PDF
Reactive JavaScript
Stoyan Stefanov
 
PPTX
YSlow hacking
Stoyan Stefanov
 
PPTX
Liking performance
Stoyan Stefanov
 
PPTX
JavaScript Performance Patterns
Stoyan Stefanov
 
PPTX
JavaScript performance patterns
Stoyan Stefanov
 
PPTX
High Performance Social Plugins
Stoyan Stefanov
 
PDF
Social Button BFFs
Stoyan Stefanov
 
PPTX
JavaScript навсякъде
Stoyan Stefanov
 
PPTX
JavaScript is everywhere
Stoyan Stefanov
 
PDF
JavaScript shell scripting
Stoyan Stefanov
 
PDF
JavaScript for PHP developers
Stoyan Stefanov
 
PDF
WPO @ PubCon 2010
Stoyan Stefanov
 
PDF
Progressive Downloads and Rendering - take #2
Stoyan Stefanov
 
PDF
Progressive Downloads and Rendering
Stoyan Stefanov
 
PDF
Performance patterns
Stoyan Stefanov
 
PDF
Voices that matter: High Performance Web Sites
Stoyan Stefanov
 
PDF
Psychology of performance
Stoyan Stefanov
 
PPT
3-in-1 YSlow
Stoyan Stefanov
 
PDF
CSS and image optimization
Stoyan Stefanov
 
PPT
High-performance DOM scripting
Stoyan Stefanov
 
Reactive JavaScript
Stoyan Stefanov
 
YSlow hacking
Stoyan Stefanov
 
Liking performance
Stoyan Stefanov
 
JavaScript Performance Patterns
Stoyan Stefanov
 
JavaScript performance patterns
Stoyan Stefanov
 
High Performance Social Plugins
Stoyan Stefanov
 
Social Button BFFs
Stoyan Stefanov
 
JavaScript навсякъде
Stoyan Stefanov
 
JavaScript is everywhere
Stoyan Stefanov
 
JavaScript shell scripting
Stoyan Stefanov
 
JavaScript for PHP developers
Stoyan Stefanov
 
WPO @ PubCon 2010
Stoyan Stefanov
 
Progressive Downloads and Rendering - take #2
Stoyan Stefanov
 
Progressive Downloads and Rendering
Stoyan Stefanov
 
Performance patterns
Stoyan Stefanov
 
Voices that matter: High Performance Web Sites
Stoyan Stefanov
 
Psychology of performance
Stoyan Stefanov
 
3-in-1 YSlow
Stoyan Stefanov
 
CSS and image optimization
Stoyan Stefanov
 
High-performance DOM scripting
Stoyan Stefanov
 

Recently uploaded (20)

PPTX
The Yotta x CloudStack Advantage: Scalable, India-First Cloud
ShapeBlue
 
PDF
TrustArc Webinar - Data Privacy Trends 2025: Mid-Year Insights & Program Stra...
TrustArc
 
PDF
"Effect, Fiber & Schema: tactical and technical characteristics of Effect.ts"...
Fwdays
 
PDF
visibel.ai Company Profile – Real-Time AI Solution for CCTV
visibelaiproject
 
PDF
Ampere Offers Energy-Efficient Future For AI And Cloud
ShapeBlue
 
PPTX
Lecture 5 - Agentic AI and model context protocol.pptx
Dr. LAM Yat-fai (林日辉)
 
PDF
2025-07-15 EMEA Volledig Inzicht Dutch Webinar
ThousandEyes
 
PDF
Women in Automation Presents: Reinventing Yourself — Bold Career Pivots That ...
DianaGray10
 
PDF
Novus-Safe Pro: Brochure-What is Novus Safe Pro?.pdf
Novus Hi-Tech
 
PDF
Bitcoin+ Escalando sin concesiones - Parte 1
Fernando Paredes García
 
PPTX
UI5Con 2025 - Get to Know Your UI5 Tooling
Wouter Lemaire
 
PDF
The Past, Present & Future of Kenya's Digital Transformation
Moses Kemibaro
 
PDF
Generative AI in Healthcare: Benefits, Use Cases & Challenges
Lily Clark
 
PDF
Building Resilience with Digital Twins : Lessons from Korea
SANGHEE SHIN
 
PDF
GITLAB-CICD_For_Professionals_KodeKloud.pdf
deepaktyagi0048
 
PDF
Shuen Mei Parth Sharma Boost Productivity, Innovation and Efficiency wit...
AWS Chicago
 
PPTX
Simplifying End-to-End Apache CloudStack Deployment with a Web-Based Automati...
ShapeBlue
 
PPTX
Building and Operating a Private Cloud with CloudStack and LINBIT CloudStack ...
ShapeBlue
 
PDF
Meetup Kickoff & Welcome - Rohit Yadav, CSIUG Chairman
ShapeBlue
 
PDF
Empowering Cloud Providers with Apache CloudStack and Stackbill
ShapeBlue
 
The Yotta x CloudStack Advantage: Scalable, India-First Cloud
ShapeBlue
 
TrustArc Webinar - Data Privacy Trends 2025: Mid-Year Insights & Program Stra...
TrustArc
 
"Effect, Fiber & Schema: tactical and technical characteristics of Effect.ts"...
Fwdays
 
visibel.ai Company Profile – Real-Time AI Solution for CCTV
visibelaiproject
 
Ampere Offers Energy-Efficient Future For AI And Cloud
ShapeBlue
 
Lecture 5 - Agentic AI and model context protocol.pptx
Dr. LAM Yat-fai (林日辉)
 
2025-07-15 EMEA Volledig Inzicht Dutch Webinar
ThousandEyes
 
Women in Automation Presents: Reinventing Yourself — Bold Career Pivots That ...
DianaGray10
 
Novus-Safe Pro: Brochure-What is Novus Safe Pro?.pdf
Novus Hi-Tech
 
Bitcoin+ Escalando sin concesiones - Parte 1
Fernando Paredes García
 
UI5Con 2025 - Get to Know Your UI5 Tooling
Wouter Lemaire
 
The Past, Present & Future of Kenya's Digital Transformation
Moses Kemibaro
 
Generative AI in Healthcare: Benefits, Use Cases & Challenges
Lily Clark
 
Building Resilience with Digital Twins : Lessons from Korea
SANGHEE SHIN
 
GITLAB-CICD_For_Professionals_KodeKloud.pdf
deepaktyagi0048
 
Shuen Mei Parth Sharma Boost Productivity, Innovation and Efficiency wit...
AWS Chicago
 
Simplifying End-to-End Apache CloudStack Deployment with a Web-Based Automati...
ShapeBlue
 
Building and Operating a Private Cloud with CloudStack and LINBIT CloudStack ...
ShapeBlue
 
Meetup Kickoff & Welcome - Rohit Yadav, CSIUG Chairman
ShapeBlue
 
Empowering Cloud Providers with Apache CloudStack and Stackbill
ShapeBlue
 

JavaScript Patterns