SlideShare une entreprise Scribd logo
1  sur  87
Building

URL-Driven
Web Apps
with Ember.js

Wednesday, November 13, 13
Watch the video with slide
synchronization on InfoQ.com!
http://www.infoq.com/presentations
/emberjs-url

InfoQ.com: News & Community Site
• 750,000 unique visitors/month
• Published in 4 languages (English, Chinese, Japanese and Brazilian
Portuguese)
• Post content from our QCon conferences
• News 15-20 / week
• Articles 3-4 / week
• Presentations (videos) 12-15 / week
• Interviews 2-3 / week
• Books 1 / month
Presented at QCon San Francisco
www.qconsf.com
Purpose of QCon
- to empower software development by facilitating the spread of
knowledge and innovation
Strategy
- practitioner-driven conference designed for YOU: influencers of
change and innovation in your teams
- speakers and topics driving the evolution and innovation
- connecting and catalyzing the influencers and innovators
Highlights
- attended by more than 12,000 delegates since 2007
- held in 9 cities worldwide
Tom Dale

@tomdale
tomdale.net
plus.google.com/+TomDale

Wednesday, November 13, 13
QueueCon
Wednesday, November 13, 13
Wednesday, November 13, 13
Wednesday, November 13, 13
Wednesday, November 13, 13
Wednesday, November 13, 13
Building

URL-Driven
Web Apps
with Ember.js

Wednesday, November 13, 13
URL
Wednesday, November 13, 13
Wednesday, November 13, 13
Wednesday, November 13, 13
Wednesday, November 13, 13
Wednesday, November 13, 13
The

URL
Wednesday, November 13, 13
http://example.com

Browser

Wednesday, November 13, 13
Browser

HTML

Wednesday, November 13, 13

HTML

HTML
What is a

WEB APP?

Wednesday, November 13, 13
What is a

NATIVE APP?

Wednesday, November 13, 13
• Sockets
• Manual memory management
• 3D-accelerated drawing
• Access to the local filesystem
• Concurrency (via threads, green

threads, etc.)
• Number representations other than
IEEE 754 floats

Wednesday, November 13, 13
• Web Sockets
• Typed Arrays (manual memory
management / custom math
implementations)
• WebGL
• IndexedDB / FileReader
• Web Workers

Wednesday, November 13, 13
HTML
CSS
JavaScript
Does using
these make you
a web developer?
Wednesday, November 13, 13
No.
Wednesday, November 13, 13
You are a

WEB
DEVELOPER
if you build apps with

URLs

Wednesday, November 13, 13
MVC
Wednesday, November 13, 13
view

model

controller

/photos/
/photos/3
/photos/?sort=rating
/photos/3/comments/42

Wednesday, November 13, 13
What is

MVC?
Wednesday, November 13, 13
draws

View

notifies

UI

Model
raw input

Wednesday, November 13, 13

Controller

updates
App.TodoView = Backbone.View.extend({
 template: _.template($('#todo').html()),
 initialize: function() {
   this.listenTo(this.model, 'change', this.render);
   this.listenTo(this.model, 'destroy', this.remove);
 },
 render: function() {
   this.$el.html(this.template(this.model.toJSON()));
   return this;
 }
});

Wednesday, November 13, 13
Data Binding
<p>{{input type="text" value=name}}</p>
<h1>{{name}}</h1>

Wednesday, November 13, 13
<p>{{input type="text" value=name}}</p>

<h1>{{name}}</h1>

Wednesday, November 13, 13
<p>{{input type="text" value=name}}</p>
ehuda
Y
me: "
{ na }
Katz"

<h1>{{name}}</h1>

Wednesday, November 13, 13
{{#if editing}}
<form {{action 'save' on='submit'}}>
{{textarea value=body}}
<button type="submit">Save</button>
</form>
{{else}}
<button {{action 'edit'}}>Edit</button>
{{/if}}

Wednesday, November 13, 13
<div ng-if="editing">
<form ng-submit="save()">
<textarea ng-model="$parent.body"></textarea>
<button type="submit">Save</button>
</form>
</div>
<div ng-if="!editing">
<button ng-click="edit()">Edit</button>
</div>

Wednesday, November 13, 13
Data Source
<template>

Wednesday, November 13, 13

Model and/or
Controller
Ember
Advantages

Wednesday, November 13, 13
Looping: simple syntax that works
everywhere with {{#each}}
Obvious bound expressions
Not a restricted subset of JavaScript
No Flash of Unbound Content
Precompiled templates are fast, easy
and idiomatic

Wednesday, November 13, 13
But these are
minor details
(in the greater scheme of things)

Wednesday, November 13, 13
There’s a

bigger
issue

Wednesday, November 13, 13
Wednesday, November 13, 13
Model
View
Controller
Wednesday, November 13, 13
Which?
Which?
Which?

Wednesday, November 13, 13

Model
View
Controller
Nested UI

Which
<template>

Which
Model
Which
Controller

Which
<template>

Wednesday, November 13, 13

Which
Controller

Which
Model
Wednesday, November 13, 13
Wednesday, November 13, 13
Wednesday, November 13, 13
Wednesday, November 13, 13
URLs
We think the answer is

Wednesday, November 13, 13
UI
Model
+

Controller
+

<template>

Wednesday, November 13, 13
http://www.example.com/posts/1

UI
Model
++

Controller
++

<template>

Wednesday, November 13, 13
http://www.example.com/posts/1

this.resource('post', { path: '/posts/:post_id' })

UI
Model
++

Controller
++

<template>

Wednesday, November 13, 13
http://www.example.com/posts/1

this.resource('post', { path: '/posts/:post_id' })

UI
Model
++

params = { post_id: "1" }

Controller
++

<template>

Wednesday, November 13, 13
http://www.example.com/posts/1

this.resource('post', { path: '/posts/:post_id' })

UI
Model
++

params = { post_id: "1" }

Controller
++

App.PostRoute = Ember.Route.extend({
model: function(params) {
return this.store.find('post', params.post_id);
}
}

Wednesday, November 13, 13

<template>
http://www.example.com/posts/1

this.resource('post', { path: '/posts/:post_id' })

UI
store.find('post', 1)
++

params = { post_id: "1" }

PostController
++

App.PostRoute = Ember.Route.extend({
model: function(params) {
return this.store.find('post', params.post_id);
}
}

Wednesday, November 13, 13

post.handlebars
individual
post

posts

Wednesday, November 13, 13
http://www.example.com/posts/1

App.Router.map(function() {
this.resource('posts', function() {
this.resource('post', { path: ':post_id' });
});
});

Model

Model

+

+

+
Controller

Controller

+

+

<template>

<template>

+

Wednesday, November 13, 13
http://www.example.com/posts/1

App.Router.map(function() {
this.resource('posts', function() {
this.resource('post', { path: ':post_id' });
});
});

Model
App.PostsRoute = Ember.Route.extend({
model: function() {
return this.store.find('post');
}
}

Model

+

+

+
Controller

Controller

+

+

<template>

<template>

+

Wednesday, November 13, 13
http://www.example.com/posts/1

App.Router.map(function() {
this.resource('posts', function() {
this.resource('post', { path: ':post_id' });
});
});

store.find('post')
App.PostsRoute = Ember.Route.extend({
model: function() {
return this.store.find('post');
}
}

Model

+

+

+
PostsController

Controller

+

+

posts.handlebars

<template>

+

Wednesday, November 13, 13
http://www.example.com/posts/1

App.Router.map(function() {
this.resource('posts', function() {
this.resource('post', { path: ':post_id' });
});
});

store.find('post')

Model

+

+

+
PostsController

Controller

+

+

posts.handlebars

<template>

+

Wednesday, November 13, 13
http://www.example.com/posts/1

App.Router.map(function() {
this.resource('posts', function() {
this.resource('post', { path: ':post_id' });
});
});

store.find('post')
params = { post_id: "1" }

Model

+

+

+
PostsController

Controller

+

+

posts.handlebars

<template>

+

Wednesday, November 13, 13
http://www.example.com/posts/1

App.Router.map(function() {
this.resource('posts', function() {
this.resource('post', { path: ':post_id' });
});
});

store.find('post')
params = { post_id: "1" }

Model

+

+

+
PostsController
+
App.PostRoute = Ember.Route.extend({
model: function(params) {
return this.store.find('post', params.post_id);
}
}

Wednesday, November 13, 13

Controller

+

posts.handlebars

<template>

+
http://www.example.com/posts/1

App.Router.map(function() {
this.resource('posts', function() {
this.resource('post', { path: ':post_id' });
});
});

store.find('post')
params = { post_id: "1" }

store.find('post', 1)

+

+

+

PostsController

+
App.PostRoute = Ember.Route.extend({
model: function(params) {
return this.store.find('post', params.post_id);
}
}

Wednesday, November 13, 13

PostController

+

posts.handlebars

post.handlebars

+
People think

MVC
is an

application
pattern
(but it’s not)

Wednesday, November 13, 13
MVC
is a

component
pattern
Wednesday, November 13, 13
Hardest part about building an application?

Knowing which
components to
show when

Wednesday, November 13, 13
You might call this

navigation
Wednesday, November 13, 13
Demo
Wednesday, November 13, 13
Why Ember.js?

Wednesday, November 13, 13
MVC + Data Binding
is not enough

Wednesday, November 13, 13
If you’re building larger apps, you need

app structure
& navigation
Wednesday, November 13, 13
Model
View
Controller
Wednesday, November 13, 13
Which?
Which?
Which?

Wednesday, November 13, 13

Model
View
Controller
Wednesday, November 13, 13
Flexible Data Model

Wednesday, November 13, 13
MIT-licensed
and

truly
community-driven
Wednesday, November 13, 13
Wednesday, November 13, 13
Wednesday, November 13, 13
1.0
Wednesday, November 13, 13
Wednesday, November 13, 13
emberjs.com

Wednesday, November 13, 13
Wednesday, November 13, 13
Wednesday, November 13, 13
Wednesday, November 13, 13
THANK YOU!
@tomdale
tomdale.net
plus.google.com/+TomDale

Wednesday, November 13, 13
Questions?

@tomdale
tomdale.net
plus.google.com/+TomDale

Wednesday, November 13, 13
Watch the video with slide synchronization on
InfoQ.com!
http://www.infoq.com/presentations/emberjsurl

Contenu connexe

Plus de C4Media

Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsC4Media
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No KeeperC4Media
 
High Performing Teams Act Like Owners
High Performing Teams Act Like OwnersHigh Performing Teams Act Like Owners
High Performing Teams Act Like OwnersC4Media
 
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaDoes Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaC4Media
 
Service Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideService Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideC4Media
 
Shifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDShifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDC4Media
 
CI/CD for Machine Learning
CI/CD for Machine LearningCI/CD for Machine Learning
CI/CD for Machine LearningC4Media
 
Fault Tolerance at Speed
Fault Tolerance at SpeedFault Tolerance at Speed
Fault Tolerance at SpeedC4Media
 
Architectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsArchitectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsC4Media
 
ML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsC4Media
 
Build Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerBuild Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerC4Media
 
User & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleUser & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleC4Media
 
Scaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeScaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeC4Media
 
Make Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereMake Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereC4Media
 
The Talk You've Been Await-ing For
The Talk You've Been Await-ing ForThe Talk You've Been Await-ing For
The Talk You've Been Await-ing ForC4Media
 
Future of Data Engineering
Future of Data EngineeringFuture of Data Engineering
Future of Data EngineeringC4Media
 
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreAutomated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreC4Media
 
Navigating Complexity: High-performance Delivery and Discovery Teams
Navigating Complexity: High-performance Delivery and Discovery TeamsNavigating Complexity: High-performance Delivery and Discovery Teams
Navigating Complexity: High-performance Delivery and Discovery TeamsC4Media
 
High Performance Cooperative Distributed Systems in Adtech
High Performance Cooperative Distributed Systems in AdtechHigh Performance Cooperative Distributed Systems in Adtech
High Performance Cooperative Distributed Systems in AdtechC4Media
 
Rust's Journey to Async/await
Rust's Journey to Async/awaitRust's Journey to Async/await
Rust's Journey to Async/awaitC4Media
 

Plus de C4Media (20)

Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java Applications
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No Keeper
 
High Performing Teams Act Like Owners
High Performing Teams Act Like OwnersHigh Performing Teams Act Like Owners
High Performing Teams Act Like Owners
 
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaDoes Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
 
Service Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideService Meshes- The Ultimate Guide
Service Meshes- The Ultimate Guide
 
Shifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDShifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CD
 
CI/CD for Machine Learning
CI/CD for Machine LearningCI/CD for Machine Learning
CI/CD for Machine Learning
 
Fault Tolerance at Speed
Fault Tolerance at SpeedFault Tolerance at Speed
Fault Tolerance at Speed
 
Architectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsArchitectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep Systems
 
ML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.js
 
Build Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerBuild Your Own WebAssembly Compiler
Build Your Own WebAssembly Compiler
 
User & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleUser & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix Scale
 
Scaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeScaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's Edge
 
Make Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereMake Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home Everywhere
 
The Talk You've Been Await-ing For
The Talk You've Been Await-ing ForThe Talk You've Been Await-ing For
The Talk You've Been Await-ing For
 
Future of Data Engineering
Future of Data EngineeringFuture of Data Engineering
Future of Data Engineering
 
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreAutomated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
 
Navigating Complexity: High-performance Delivery and Discovery Teams
Navigating Complexity: High-performance Delivery and Discovery TeamsNavigating Complexity: High-performance Delivery and Discovery Teams
Navigating Complexity: High-performance Delivery and Discovery Teams
 
High Performance Cooperative Distributed Systems in Adtech
High Performance Cooperative Distributed Systems in AdtechHigh Performance Cooperative Distributed Systems in Adtech
High Performance Cooperative Distributed Systems in Adtech
 
Rust's Journey to Async/await
Rust's Journey to Async/awaitRust's Journey to Async/await
Rust's Journey to Async/await
 

Dernier

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
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
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
 
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
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
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
 
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
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 

Dernier (20)

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
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
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
 
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
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
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
 
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
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 

Building URL-Driven Web Apps with Ember.js