SlideShare ist ein Scribd-Unternehmen logo
1 von 74
A Data-Driven Application
for the Embedded World
Jean-Philippe EHRET
Las Vegas, November 6th 2016
A History of User Interfaces...
Embedded Systems’ Humble Beginnings
A simple message, and only this one : “It’s WORKING! Or is it?!”
3
The blinking LED
Embedded Systems’ Evolved
BETTER! But user-friendly?
4
Switches and lights
Expectations Nowadays
5
Interactive data-driven dashboards
Expectations Nowadays
6
Interactive data-driven dashboards
 Real Time
Expectations Nowadays
7
Interactive data-driven dashboards
 Real Time
 Interactive
Expectations Nowadays
8
Interactive data-driven dashboards
 Real Time
 Interactive
 Data Driven
Expectations Nowadays
9
Interactive data-driven dashboards
 Real Time
 Interactive
 Data Driven
 Reliable
Expectations Nowadays
10
Interactive data-driven dashboards
 Real Time
 Interactive
 Data Driven
 Reliable
 And nice looking!
Expectations Nowadays
11
Interactive data-driven dashboards
 Real Time
 Interactive
 Data Driven
 Reliable
 And nice looking!
NOT ONLY
on powerful
machines!
Expectations Nowadays
12
Interactive data-driven dashboards
 Real Time
 Interactive
 Data Driven
 Reliable
 And nice looking!
Everywhere
Hardware Constraints
Embedded Generally Means
You don’t have that…
14
Non-extensible computing power…
Embedded Generally Means
But more something like that!
15
Already limited to start with…
Embedded Generally Means
16
For a slight difference!
Enterprise
Server
Embedded
Equipment
RAM 32 GB+ 1 MB to 1 GB
CPU Core i7, Octo Xeon, etc. ARM
Hard Drive RAID hard drives Nope
Local Storage Several dozens GB Up to a few GB
Embedded Generally Means
17
You don’t have this
Embedded Generally Means
18
You have that
Consequences for
Developers
You Have to Be Really Smart!
• Because people want real-time, rich and reactive interfaces
- And of course adaptive and working on many kind of devices : tablets, laptops, desktops...
20
You Have to Be Really Smart!
BUT!
21
You Have to Be Really Smart!
• But YOU HAVE GOT very limited resources
22
You Have to Be Really Smart!
• But YOU HAVE GOT very limited resources
- The only resources you have are in a few components
23
You Have to Be Really Smart!
AND
24
You Have to Be Really Smart!
• You cannot develop on your computer
leaving the question of performance for
later:
25
You Have to Be Really Smart!
• You cannot develop on your computer
leaving the question of performance for
later:
26
Patching an embedded device remotely may just NOT BE POSSIBLE!
Real Life Application
HAGER in a Few Words
Basic stats
12,000 people
€1.6bn ($1.77bn) turnover
HQ in Germany, present in 23 countries
Clients in over 80 countries
Building Efficiency
A large step towards intelligent buildings
Agardio system contributes to the management of low
voltage (LV) electrical system:
• Optimizing the building’s energy consumption:
- Saving money and preserving the environment
• Maintaining service continuity:
- Preventing operational losses
- Providing stable conditions for occupants
Building Efficiency
Hager’s Agardio™ system
Building Efficiency
Hager’s Agardio™ system
Technical details
Building Efficiency
Hager’s Agardio™ system
Target Architecture
How to Include Ext JS in an Embedded Project?
How to Include Ext JS in an Embedded Project?
Modularity
• Multilingual and
modular across
Python backend
and Ext JS
frontend
How to Include Ext JS in an Embedded Project?
No configuration
• Must be available
through tablets
without any
configuration
• Directly served
by the
equipment
What does it mean in Ext JS?
What does it mean in Ext JS?
Sencha CMD
Small Memory Footprint
You definitely want to use Sencha CMD
• Tablets will download the application from the equipment
• Heavy app is not such a problem in terms of memory, but the power of the CPU used
to deliver the app is a different story
What does it mean in Ext JS?
Dynamic Loading
Dynamic Loading
Load a resource only when needed
Hager’s product is fully modular:
• Depending on the physical modules installed (light sensor, temperature sensor…),
backend and frontend will have different features.
Additionally:
• The new modules can be plugged without any reboot
• Configuration files can be uploaded on-the-fly
• A new piece of UI can serve many purposes across multiple modules
-
Dynamic Loading
Load a resource only when needed
The magic is that all of this is loaded
dynamically like a sort of “plugin” :
• The Ext JS app CANNOT be deployed as
a single JS as we are used to.
Dynamic Loading
Load a resource only when needed
The magic is that all of this is loaded
dynamically like a sort of “plugin” :
• The Ext JS app CANNOT be deployed as
a single JS as we are used to.
• Each physical module brings its piece of
extra Ext JS and resources within a
dedicated Ext JS package
Dynamic Loading
Load a resource only when needed
The magic is that all of this is loaded
dynamically like a sort of “plugin” :
• The Ext JS app CANNOT be deployed as
a single JS as we are used to.
• Each physical module brings its piece of
extra Ext JS and resources within a
dedicated Ext JS package
• Sencha CMD is to produce MULTIPLE
JavaScript files, one per package / module
What does it mean in Ext JS?
Data Driven Dynamic Charts
Data Representation
Massive usage of d3.js visualizations
Why d3.js?
• Hager needed custom visualizations and behaviors
• D3.js was the best pick due to that (SVG low-level building)
Data Representation
Massive usage of d3.js visualizations
Why not Sencha’s implementation?
• The project started before Sencha’s announcement of d3.js native support
Data Representation
Massive usage of d3.js visualizations
What’s next?
• Many issues with browser support due to very different behaviors of the SVG
manipulation
• Long-term approach : switch to Sencha’s official implementation
Data Representation
Ext.define('Hes.common.d3.Chart', {
extend: 'Ext.Component',
xtype: 'd3-chart',
fieldMappings: {},
autoEl: {
tag: 'svg'
},
…
onBoxReady: function(…) {…},
createChart:function(w, he) {
…
this.setChart(this.getChartGenerator(w, he));
…
this.getChart().updateChart(
Hes.util.Format.storeToD3Data(chartDataStore, this.fieldMappings));
}
},
…});
Data Representation
Ext.define('Hes.common.d3.Chart', {
extend: 'Ext.Component',
xtype: 'd3-chart',
fieldMappings: {},
autoEl: {
tag: 'svg'
},
…
onBoxReady: function(…) {…},
…
Data Driven
Must deal with
various software-
modules-specific
data
this.setChart(
this.getChartGenerator(w, he));
…
this.getChart().updateChart(
Hes.util.Format.storeToD3Data(
chartDataStore,
this.fieldMappings
));
Transform Data to D3 Data
storeToD3Data: function(chartData, fieldMappings) {
var data = [];
fieldMappings = fieldMappings || {};
if (chartData && Ext.isFunction(chartData.each)) {
chartData.each(function(datum) {
var dataObj = datum.data;
var seriesData = {};
var dataKeys = Ext.Object.getKeys(dataObj);
dataKeys.forEach(function(key) {
seriesData[fieldMappings[key] || key] = datum.get(key);
});
data.push(seriesData);
});}
return data;
}
Transform Data to D3 Data
storeToD3Data: function(chartData, fieldMappings) {
var data = [];
fieldMappings = fieldMappings || {};
if (chartData && Ext.isFunction(chartData.each)) {
chartData.each(function(datum) {
var dataObj = datum.data;
var seriesData = {};
var dataKeys = Ext.Object.getKeys(dataObj);
dataKeys.forEach(function(key) {
pieData[fieldMappings[key] || key] = datum.get(key);
});
data.push(pieData);
});}
return data;
}
To find axis and all
important D3 data types
var dataKeys = Ext.Object.getKeys(dataObj);
dataKeys.forEach(function(key) {
seriesData[fieldMappings[key] || key] =
datum.get(key);
});
A Generator
Ext.define('Hes.common.d3.line.LineGenerator', {
extend: 'Ext.Base',
mixins: ['Ext.mixin.Observable'],
…
updateChart: function(data) {
var seriesFields = this.chartOwner.getSeriesFields() || ['value'];
this.data = data;
this.seriesData = seriesFields.map(function(fieldName) {
return {
id: fieldName,
values: data.map(function(d) {
return {
date: d.date,
value: d[fieldName]
};})};});
…
this.svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + this.height + ")")
.call(this.xAxis)
.append("text")
.style("font-size", "1.6em")
.attr("y", -this.height)
.attr("x", 15)
.attr("fill", "#000")
.text(this.chartOwner.getXTitle());
this.svg.append("g")
.attr("class", "y axis")
…
A Generator
Ext.define('Hes.common.d3.line.LineGenerator', {
extend: 'Ext.Base',
mixins: ['Ext.mixin.Observable'],
…
updateChart: function(data) {
var seriesFields = this.chartOwner.getSeriesFields() || ['value'];
this.data = data;
this.seriesData = seriesFields.map(function(fieldName) {
return {
id: fieldName,
values: data.map(function(d) {
return {
date: d.date,
value: d[fieldName]
};})};});
…
this.svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + this.height + ")")
.call(this.xAxis)
.append("text")
.style("font-size", "1.6em")
.attr("y", -this.height)
.attr("x", 15)
.attr("fill", "#000")
.text(this.chartOwner.getXTitle());
this.svg.append("g")
.attr("class", "y axis")
…
updateChart
Override for specific
drawing
updateChart:function(data) {
…
Data-driven
Generic whatever is the
property
return {
date: d.date,
value: d[fieldName]
}
What does it involve in ExtJS?
Dynamic Internationalization
Internationalization
One app to rule them all
We use an approach with elements on top of Sencha’s official guidelines:
• One multilingual build instead of one build per language
• Dynamic loading to switch language as required
• Easily extendable for multiple language support
• Contents can be translated by non developers through specific products
• No redeployment needed
For more information about internationalization,
please read our blogpost on sencha.com
Internationalization
Json result is language specific
{"button": "Mon Bouton",
"title": "Mon titre"}
Ext.define('Jnesis.Labels', {
singleton: true,
button: 'My english button',
title: 'My english title'
});
…
Ext.define ('Jnesis.Application', {
launch: function () {
Ext.Ajax.request({
url: 'get-localization',
params:{locale:'fr'},
callback: function (options, success, response) {
var data = Ext.decode(response.responseText, true);
Ext.override(Jnesis.Labels, data);
Ext.create('Jnesis.view.main.Main');
}
});
}
});
Internationalization
Ext.define('Jnesis.Labels', {
singleton: true,
button: 'My english button',
title: 'My english title'
});
…
Ext.define ('Jnesis.Application', {
launch: function () {
Ext.Ajax.request({
url: 'get-localization',
params:{locale:'fr'},
callback: function (options, success, response) {
var data = Ext.decode(response.responseText, true);
Ext.override(Jnesis.Labels, data);
Ext.create('Jnesis.view.main.Main');
}
});
}
});
Override with selected
language
The singleton gets new
values
url: 'get-localization',
params:{locale:'fr'},
…
Ext.override(Jnesis.Labels, data);
Internationalization
Ext.define('overrides.localized.Component', {
override: 'Ext.Component',
initComponent: function() {
var me = this,
localized = me.localized,
value;
if (Ext.isObject(localized)) {
for (var prop in localized) {
value = localized[prop];
if (value) {
me[prop] = eval(value);
}}}
me.callParent(arguments);});
Ext.define('Jnesis.view.main.Main', {
extend: 'Ext.panel.Panel',
localized: {
title: 'Jnesis.Labels.title'
},
buttons: [{
localized: {
text: 'Jnesis.Labels.button'
},
handler: 'onClickButton'
}]});
Ext.define('overrides.localized.Component', {
override: 'Ext.Component',
initComponent: function() {
var me = this,
localized = me.localized,
value;
if (Ext.isObject(localized)) {
for (var prop in localized) {
value = localized[prop];
if (value) {
me[prop] = eval(value);
}}}
me.callParent(arguments);});
Ext.define('Jnesis.view.main.Main', {
extend: 'Ext.panel.Panel',
localized: {
title: 'Jnesis.Labels.title'
},
buttons: [{
localized: {
text: 'Jnesis.Labels.button'
},
handler: 'onClickButton'
}]});
Localized property
“Bind like” property
localized: {
title: 'Jnesis.Labels.title'
},
Override Ext Components Ext.define('overrides.localized.Component', {
override: 'Ext.Component',
What does it involves in ExtJS?
Various Performance
Optimizations
Application Optimization
Some best practices for embedding
• Don’t blame the backend guy! Every REST call can harm the resources!
• Store locally every time it is possible (inside the end-user device):
Application Optimization
Some best practices for embedding
• Don’t blame the backend guy! Every REST call can harm the resources!
• Store locally every time it is possible (inside the end-user device):
duplicate data = need for optimization
Application Optimization
Some best practices for embedding
• You have to be reasonable in the use of websocket / SSE data exchanges
Application Optimization
Some best practices for embedding
• Don’t forget to ask for compression in the backend!
Application Optimization
Some best practices for embedding
• What can be performed on the frontend must be done on the frontend (e.g. CSV
export, data sorting, …)
Is ExtJS Fit for Embedded?
YES!
But developers MUST understand
what‘s happening behind the
scene, although Sencha did a good
job sparing this to developers in
most other cases.
To Summarize
• Keep in mind that resources are scarce
To Summarize
• Keep in mind that resources are scarce
• Be smart not just comprehensive:
To Summarize
• Keep in mind that resources are scarce
• Be smart not just comprehensive:
- Design modular!
To Summarize
• Keep in mind that resources are scarce
• Be smart not just comprehensive
- Design modular!
• Test, re-test, re-re-test before releasing, you work in an embedded
system
To Conclude
Making Ext JS work with « Things » is nothing
much than legitimate expectation.
To Conclude
Making Ext JS work with « Things » is nothing
much than legitimate expectation.
Jnesis is always looking for
solutions to use Ext JS wherever it
can be in a beneficial way for its
clients, check us out at the sponsor
zone!

Weitere ähnliche Inhalte

Was ist angesagt?

Migrating Customers to Microsoft Azure: Lessons Learned From the Field
Migrating Customers to Microsoft Azure: Lessons Learned From the FieldMigrating Customers to Microsoft Azure: Lessons Learned From the Field
Migrating Customers to Microsoft Azure: Lessons Learned From the FieldIdo Flatow
 
Migrating Data and Databases to Azure
Migrating Data and Databases to AzureMigrating Data and Databases to Azure
Migrating Data and Databases to AzureKaren Lopez
 
Geek Sync | SQL Security Principals and Permissions 101
Geek Sync | SQL Security Principals and Permissions 101Geek Sync | SQL Security Principals and Permissions 101
Geek Sync | SQL Security Principals and Permissions 101IDERA Software
 
Microsoft and PHP at CakeFest 2010
Microsoft and PHP at CakeFest 2010Microsoft and PHP at CakeFest 2010
Microsoft and PHP at CakeFest 2010Josh Holmes
 
A lap around microsofts business intelligence platform
A lap around microsofts business intelligence platformA lap around microsofts business intelligence platform
A lap around microsofts business intelligence platformIke Ellis
 
From SQL to MongoDB
From SQL to MongoDBFrom SQL to MongoDB
From SQL to MongoDBNuxeo
 
Test Automation for NoSQL Databases
Test Automation for NoSQL DatabasesTest Automation for NoSQL Databases
Test Automation for NoSQL DatabasesTobias Trelle
 
Azure database services for PostgreSQL and MySQL
Azure database services for PostgreSQL and MySQLAzure database services for PostgreSQL and MySQL
Azure database services for PostgreSQL and MySQLAmit Banerjee
 
Agile Data Warehousing
Agile Data WarehousingAgile Data Warehousing
Agile Data WarehousingDavide Mauri
 
BrazilJS Perf Doctor Talk
BrazilJS Perf Doctor TalkBrazilJS Perf Doctor Talk
BrazilJS Perf Doctor TalkJosh Holmes
 
SenchaCon 2016 - How to Auto Generate a Back-end in Minutes
SenchaCon 2016 - How to Auto Generate a Back-end in MinutesSenchaCon 2016 - How to Auto Generate a Back-end in Minutes
SenchaCon 2016 - How to Auto Generate a Back-end in MinutesMalin Weiss
 
Be Proactive: A Good DBA Goes Looking for Signs of Trouble | IDERA
Be Proactive: A Good DBA Goes Looking for Signs of Trouble | IDERABe Proactive: A Good DBA Goes Looking for Signs of Trouble | IDERA
Be Proactive: A Good DBA Goes Looking for Signs of Trouble | IDERAIDERA Software
 
What I Learned About SQL Server at Ignite 2015
What I Learned About SQL Server at Ignite 2015What I Learned About SQL Server at Ignite 2015
What I Learned About SQL Server at Ignite 2015Brent Ozar
 
Being RDBMS Free -- Alternate Approaches to Data Persistence
Being RDBMS Free -- Alternate Approaches to Data PersistenceBeing RDBMS Free -- Alternate Approaches to Data Persistence
Being RDBMS Free -- Alternate Approaches to Data PersistenceDavid Hoerster
 
Scott Guthrie's Windows Azure Overview
Scott Guthrie's Windows Azure Overview Scott Guthrie's Windows Azure Overview
Scott Guthrie's Windows Azure Overview Michael Meagher
 
RavenDB Presentation
RavenDB PresentationRavenDB Presentation
RavenDB PresentationMark Rodseth
 
Using extended events for troubleshooting sql server
Using extended events for troubleshooting sql serverUsing extended events for troubleshooting sql server
Using extended events for troubleshooting sql serverAntonios Chatzipavlis
 
Start Counting: How We Unlocked Platform Efficiency and Reliability While Sav...
Start Counting: How We Unlocked Platform Efficiency and Reliability While Sav...Start Counting: How We Unlocked Platform Efficiency and Reliability While Sav...
Start Counting: How We Unlocked Platform Efficiency and Reliability While Sav...VMware Tanzu
 
Advanced SQL Server Performance Tuning | IDERA
Advanced SQL Server Performance Tuning | IDERAAdvanced SQL Server Performance Tuning | IDERA
Advanced SQL Server Performance Tuning | IDERAIDERA Software
 
Using Elasticsearch for Analytics
Using Elasticsearch for AnalyticsUsing Elasticsearch for Analytics
Using Elasticsearch for AnalyticsVaidik Kapoor
 

Was ist angesagt? (20)

Migrating Customers to Microsoft Azure: Lessons Learned From the Field
Migrating Customers to Microsoft Azure: Lessons Learned From the FieldMigrating Customers to Microsoft Azure: Lessons Learned From the Field
Migrating Customers to Microsoft Azure: Lessons Learned From the Field
 
Migrating Data and Databases to Azure
Migrating Data and Databases to AzureMigrating Data and Databases to Azure
Migrating Data and Databases to Azure
 
Geek Sync | SQL Security Principals and Permissions 101
Geek Sync | SQL Security Principals and Permissions 101Geek Sync | SQL Security Principals and Permissions 101
Geek Sync | SQL Security Principals and Permissions 101
 
Microsoft and PHP at CakeFest 2010
Microsoft and PHP at CakeFest 2010Microsoft and PHP at CakeFest 2010
Microsoft and PHP at CakeFest 2010
 
A lap around microsofts business intelligence platform
A lap around microsofts business intelligence platformA lap around microsofts business intelligence platform
A lap around microsofts business intelligence platform
 
From SQL to MongoDB
From SQL to MongoDBFrom SQL to MongoDB
From SQL to MongoDB
 
Test Automation for NoSQL Databases
Test Automation for NoSQL DatabasesTest Automation for NoSQL Databases
Test Automation for NoSQL Databases
 
Azure database services for PostgreSQL and MySQL
Azure database services for PostgreSQL and MySQLAzure database services for PostgreSQL and MySQL
Azure database services for PostgreSQL and MySQL
 
Agile Data Warehousing
Agile Data WarehousingAgile Data Warehousing
Agile Data Warehousing
 
BrazilJS Perf Doctor Talk
BrazilJS Perf Doctor TalkBrazilJS Perf Doctor Talk
BrazilJS Perf Doctor Talk
 
SenchaCon 2016 - How to Auto Generate a Back-end in Minutes
SenchaCon 2016 - How to Auto Generate a Back-end in MinutesSenchaCon 2016 - How to Auto Generate a Back-end in Minutes
SenchaCon 2016 - How to Auto Generate a Back-end in Minutes
 
Be Proactive: A Good DBA Goes Looking for Signs of Trouble | IDERA
Be Proactive: A Good DBA Goes Looking for Signs of Trouble | IDERABe Proactive: A Good DBA Goes Looking for Signs of Trouble | IDERA
Be Proactive: A Good DBA Goes Looking for Signs of Trouble | IDERA
 
What I Learned About SQL Server at Ignite 2015
What I Learned About SQL Server at Ignite 2015What I Learned About SQL Server at Ignite 2015
What I Learned About SQL Server at Ignite 2015
 
Being RDBMS Free -- Alternate Approaches to Data Persistence
Being RDBMS Free -- Alternate Approaches to Data PersistenceBeing RDBMS Free -- Alternate Approaches to Data Persistence
Being RDBMS Free -- Alternate Approaches to Data Persistence
 
Scott Guthrie's Windows Azure Overview
Scott Guthrie's Windows Azure Overview Scott Guthrie's Windows Azure Overview
Scott Guthrie's Windows Azure Overview
 
RavenDB Presentation
RavenDB PresentationRavenDB Presentation
RavenDB Presentation
 
Using extended events for troubleshooting sql server
Using extended events for troubleshooting sql serverUsing extended events for troubleshooting sql server
Using extended events for troubleshooting sql server
 
Start Counting: How We Unlocked Platform Efficiency and Reliability While Sav...
Start Counting: How We Unlocked Platform Efficiency and Reliability While Sav...Start Counting: How We Unlocked Platform Efficiency and Reliability While Sav...
Start Counting: How We Unlocked Platform Efficiency and Reliability While Sav...
 
Advanced SQL Server Performance Tuning | IDERA
Advanced SQL Server Performance Tuning | IDERAAdvanced SQL Server Performance Tuning | IDERA
Advanced SQL Server Performance Tuning | IDERA
 
Using Elasticsearch for Analytics
Using Elasticsearch for AnalyticsUsing Elasticsearch for Analytics
Using Elasticsearch for Analytics
 

Andere mochten auch

SenchaCon 2016: Upgrading an Ext JS 4.x Application to Ext JS 6.x - Mark Linc...
SenchaCon 2016: Upgrading an Ext JS 4.x Application to Ext JS 6.x - Mark Linc...SenchaCon 2016: Upgrading an Ext JS 4.x Application to Ext JS 6.x - Mark Linc...
SenchaCon 2016: Upgrading an Ext JS 4.x Application to Ext JS 6.x - Mark Linc...Sencha
 
SenchaCon 2016: Advanced Techniques for Buidling Ext JS Apps with Electron - ...
SenchaCon 2016: Advanced Techniques for Buidling Ext JS Apps with Electron - ...SenchaCon 2016: Advanced Techniques for Buidling Ext JS Apps with Electron - ...
SenchaCon 2016: Advanced Techniques for Buidling Ext JS Apps with Electron - ...Sencha
 
SenchaCon 2016: Theming the Modern Toolkit - Phil Guerrant
SenchaCon 2016: Theming the Modern Toolkit - Phil Guerrant   SenchaCon 2016: Theming the Modern Toolkit - Phil Guerrant
SenchaCon 2016: Theming the Modern Toolkit - Phil Guerrant Sencha
 
SenchaCon 2016: The Modern Toolchain - Ross Gerbasi
SenchaCon 2016: The Modern Toolchain - Ross Gerbasi   SenchaCon 2016: The Modern Toolchain - Ross Gerbasi
SenchaCon 2016: The Modern Toolchain - Ross Gerbasi Sencha
 
SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil Manvar
SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil ManvarSenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil Manvar
SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil ManvarSencha
 
SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...
SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...
SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...Sencha
 
SenchaCon 2016: Refine Enterprise Applications by Focusing on U0ser Experienc...
SenchaCon 2016: Refine Enterprise Applications by Focusing on U0ser Experienc...SenchaCon 2016: Refine Enterprise Applications by Focusing on U0ser Experienc...
SenchaCon 2016: Refine Enterprise Applications by Focusing on U0ser Experienc...Sencha
 
SenchaCon 2016: Modernizing the Ext JS Class System - Don Griffin
SenchaCon 2016: Modernizing the Ext JS Class System - Don GriffinSenchaCon 2016: Modernizing the Ext JS Class System - Don Griffin
SenchaCon 2016: Modernizing the Ext JS Class System - Don GriffinSencha
 
SenchaCon 2016: How Sencha Test Helps Automate Functional Testing of Ext JS M...
SenchaCon 2016: How Sencha Test Helps Automate Functional Testing of Ext JS M...SenchaCon 2016: How Sencha Test Helps Automate Functional Testing of Ext JS M...
SenchaCon 2016: How Sencha Test Helps Automate Functional Testing of Ext JS M...Sencha
 
SenchaCon 2016: JavaScript is Great but Stop Writing It - Rory Hardy
SenchaCon 2016: JavaScript is Great but Stop Writing It - Rory HardySenchaCon 2016: JavaScript is Great but Stop Writing It - Rory Hardy
SenchaCon 2016: JavaScript is Great but Stop Writing It - Rory HardySencha
 
SenchaCon 2016: Handle Real-World Data with Confidence - Fredric Berling
SenchaCon 2016: Handle Real-World Data with Confidence - Fredric Berling SenchaCon 2016: Handle Real-World Data with Confidence - Fredric Berling
SenchaCon 2016: Handle Real-World Data with Confidence - Fredric Berling Sencha
 
SenchaCon 2016: Building Enterprise Ext JS Apps with Mavenized Sencha Cmd - F...
SenchaCon 2016: Building Enterprise Ext JS Apps with Mavenized Sencha Cmd - F...SenchaCon 2016: Building Enterprise Ext JS Apps with Mavenized Sencha Cmd - F...
SenchaCon 2016: Building Enterprise Ext JS Apps with Mavenized Sencha Cmd - F...Sencha
 
SenchaCon 2016: Using Ext JS to Turn Big Data into Intelligence - Olga Petrov...
SenchaCon 2016: Using Ext JS to Turn Big Data into Intelligence - Olga Petrov...SenchaCon 2016: Using Ext JS to Turn Big Data into Intelligence - Olga Petrov...
SenchaCon 2016: Using Ext JS to Turn Big Data into Intelligence - Olga Petrov...Sencha
 
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...Sencha
 
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...Sencha
 
SenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark Brocato
SenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark BrocatoSenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark Brocato
SenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark BrocatoSencha
 
SenchaCon 2016: Design Methods for Better Product Development - Andrew Hemans
SenchaCon 2016: Design Methods for Better Product Development - Andrew Hemans   SenchaCon 2016: Design Methods for Better Product Development - Andrew Hemans
SenchaCon 2016: Design Methods for Better Product Development - Andrew Hemans Sencha
 
SenchaCon 2016: The Once and Future Grid - Nige White
SenchaCon 2016: The Once and Future Grid - Nige WhiteSenchaCon 2016: The Once and Future Grid - Nige White
SenchaCon 2016: The Once and Future Grid - Nige WhiteSencha
 
SenchaCon 2016: Learn the Top 10 Best ES2015 Features - Lee Boonstra
SenchaCon 2016: Learn the Top 10 Best ES2015 Features - Lee Boonstra  SenchaCon 2016: Learn the Top 10 Best ES2015 Features - Lee Boonstra
SenchaCon 2016: Learn the Top 10 Best ES2015 Features - Lee Boonstra Sencha
 
SenchaCon 2016: How to Auto Generate a Back-end in Minutes - Per Minborg, Emi...
SenchaCon 2016: How to Auto Generate a Back-end in Minutes - Per Minborg, Emi...SenchaCon 2016: How to Auto Generate a Back-end in Minutes - Per Minborg, Emi...
SenchaCon 2016: How to Auto Generate a Back-end in Minutes - Per Minborg, Emi...Sencha
 

Andere mochten auch (20)

SenchaCon 2016: Upgrading an Ext JS 4.x Application to Ext JS 6.x - Mark Linc...
SenchaCon 2016: Upgrading an Ext JS 4.x Application to Ext JS 6.x - Mark Linc...SenchaCon 2016: Upgrading an Ext JS 4.x Application to Ext JS 6.x - Mark Linc...
SenchaCon 2016: Upgrading an Ext JS 4.x Application to Ext JS 6.x - Mark Linc...
 
SenchaCon 2016: Advanced Techniques for Buidling Ext JS Apps with Electron - ...
SenchaCon 2016: Advanced Techniques for Buidling Ext JS Apps with Electron - ...SenchaCon 2016: Advanced Techniques for Buidling Ext JS Apps with Electron - ...
SenchaCon 2016: Advanced Techniques for Buidling Ext JS Apps with Electron - ...
 
SenchaCon 2016: Theming the Modern Toolkit - Phil Guerrant
SenchaCon 2016: Theming the Modern Toolkit - Phil Guerrant   SenchaCon 2016: Theming the Modern Toolkit - Phil Guerrant
SenchaCon 2016: Theming the Modern Toolkit - Phil Guerrant
 
SenchaCon 2016: The Modern Toolchain - Ross Gerbasi
SenchaCon 2016: The Modern Toolchain - Ross Gerbasi   SenchaCon 2016: The Modern Toolchain - Ross Gerbasi
SenchaCon 2016: The Modern Toolchain - Ross Gerbasi
 
SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil Manvar
SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil ManvarSenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil Manvar
SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil Manvar
 
SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...
SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...
SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...
 
SenchaCon 2016: Refine Enterprise Applications by Focusing on U0ser Experienc...
SenchaCon 2016: Refine Enterprise Applications by Focusing on U0ser Experienc...SenchaCon 2016: Refine Enterprise Applications by Focusing on U0ser Experienc...
SenchaCon 2016: Refine Enterprise Applications by Focusing on U0ser Experienc...
 
SenchaCon 2016: Modernizing the Ext JS Class System - Don Griffin
SenchaCon 2016: Modernizing the Ext JS Class System - Don GriffinSenchaCon 2016: Modernizing the Ext JS Class System - Don Griffin
SenchaCon 2016: Modernizing the Ext JS Class System - Don Griffin
 
SenchaCon 2016: How Sencha Test Helps Automate Functional Testing of Ext JS M...
SenchaCon 2016: How Sencha Test Helps Automate Functional Testing of Ext JS M...SenchaCon 2016: How Sencha Test Helps Automate Functional Testing of Ext JS M...
SenchaCon 2016: How Sencha Test Helps Automate Functional Testing of Ext JS M...
 
SenchaCon 2016: JavaScript is Great but Stop Writing It - Rory Hardy
SenchaCon 2016: JavaScript is Great but Stop Writing It - Rory HardySenchaCon 2016: JavaScript is Great but Stop Writing It - Rory Hardy
SenchaCon 2016: JavaScript is Great but Stop Writing It - Rory Hardy
 
SenchaCon 2016: Handle Real-World Data with Confidence - Fredric Berling
SenchaCon 2016: Handle Real-World Data with Confidence - Fredric Berling SenchaCon 2016: Handle Real-World Data with Confidence - Fredric Berling
SenchaCon 2016: Handle Real-World Data with Confidence - Fredric Berling
 
SenchaCon 2016: Building Enterprise Ext JS Apps with Mavenized Sencha Cmd - F...
SenchaCon 2016: Building Enterprise Ext JS Apps with Mavenized Sencha Cmd - F...SenchaCon 2016: Building Enterprise Ext JS Apps with Mavenized Sencha Cmd - F...
SenchaCon 2016: Building Enterprise Ext JS Apps with Mavenized Sencha Cmd - F...
 
SenchaCon 2016: Using Ext JS to Turn Big Data into Intelligence - Olga Petrov...
SenchaCon 2016: Using Ext JS to Turn Big Data into Intelligence - Olga Petrov...SenchaCon 2016: Using Ext JS to Turn Big Data into Intelligence - Olga Petrov...
SenchaCon 2016: Using Ext JS to Turn Big Data into Intelligence - Olga Petrov...
 
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
 
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
 
SenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark Brocato
SenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark BrocatoSenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark Brocato
SenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark Brocato
 
SenchaCon 2016: Design Methods for Better Product Development - Andrew Hemans
SenchaCon 2016: Design Methods for Better Product Development - Andrew Hemans   SenchaCon 2016: Design Methods for Better Product Development - Andrew Hemans
SenchaCon 2016: Design Methods for Better Product Development - Andrew Hemans
 
SenchaCon 2016: The Once and Future Grid - Nige White
SenchaCon 2016: The Once and Future Grid - Nige WhiteSenchaCon 2016: The Once and Future Grid - Nige White
SenchaCon 2016: The Once and Future Grid - Nige White
 
SenchaCon 2016: Learn the Top 10 Best ES2015 Features - Lee Boonstra
SenchaCon 2016: Learn the Top 10 Best ES2015 Features - Lee Boonstra  SenchaCon 2016: Learn the Top 10 Best ES2015 Features - Lee Boonstra
SenchaCon 2016: Learn the Top 10 Best ES2015 Features - Lee Boonstra
 
SenchaCon 2016: How to Auto Generate a Back-end in Minutes - Per Minborg, Emi...
SenchaCon 2016: How to Auto Generate a Back-end in Minutes - Per Minborg, Emi...SenchaCon 2016: How to Auto Generate a Back-end in Minutes - Per Minborg, Emi...
SenchaCon 2016: How to Auto Generate a Back-end in Minutes - Per Minborg, Emi...
 

Ähnlich wie SenchaCon 2016: A Data-Driven Application for the Embedded World - Jean-Philippe Ehret

Making Hadoop Realtime by Dr. William Bain of Scaleout Software
Making Hadoop Realtime by Dr. William Bain of Scaleout SoftwareMaking Hadoop Realtime by Dr. William Bain of Scaleout Software
Making Hadoop Realtime by Dr. William Bain of Scaleout SoftwareData Con LA
 
Data Architecture at Vente-Exclusive.com - TOTM Exellys
Data Architecture at Vente-Exclusive.com - TOTM ExellysData Architecture at Vente-Exclusive.com - TOTM Exellys
Data Architecture at Vente-Exclusive.com - TOTM ExellysWout Scheepers
 
Hadoop vs Java Batch Processing JSR 352
Hadoop vs Java Batch Processing JSR 352Hadoop vs Java Batch Processing JSR 352
Hadoop vs Java Batch Processing JSR 352Armel Nene
 
SPS Vancouver 2018 - What is CDM and CDS
SPS Vancouver 2018 - What is CDM and CDSSPS Vancouver 2018 - What is CDM and CDS
SPS Vancouver 2018 - What is CDM and CDSNicolas Georgeault
 
Business Intelligence Best Practice Summit: BI Quo Vadis
Business Intelligence Best Practice Summit:  BI Quo VadisBusiness Intelligence Best Practice Summit:  BI Quo Vadis
Business Intelligence Best Practice Summit: BI Quo VadisManagility
 
Discussing strategies for building the next gen data centre
Discussing strategies for building the next gen data centreDiscussing strategies for building the next gen data centre
Discussing strategies for building the next gen data centreICT-Partners
 
hari_duche_updated
hari_duche_updatedhari_duche_updated
hari_duche_updatedHari Duche
 
AWS Summit 2013 | India - Petabyte Scale Data Warehousing at Low Cost, Abhish...
AWS Summit 2013 | India - Petabyte Scale Data Warehousing at Low Cost, Abhish...AWS Summit 2013 | India - Petabyte Scale Data Warehousing at Low Cost, Abhish...
AWS Summit 2013 | India - Petabyte Scale Data Warehousing at Low Cost, Abhish...Amazon Web Services
 
How does Microsoft solve Big Data?
How does Microsoft solve Big Data?How does Microsoft solve Big Data?
How does Microsoft solve Big Data?James Serra
 
Presentation big dataappliance-overview_oow_v3
Presentation   big dataappliance-overview_oow_v3Presentation   big dataappliance-overview_oow_v3
Presentation big dataappliance-overview_oow_v3xKinAnx
 
Microsoft Big Data @ SQLUG 2013
Microsoft Big Data @ SQLUG 2013Microsoft Big Data @ SQLUG 2013
Microsoft Big Data @ SQLUG 2013Nathan Bijnens
 
the Data World Distilled
the Data World Distilledthe Data World Distilled
the Data World DistilledRTTS
 
클라우드에서의 데이터 웨어하우징 & 비즈니스 인텔리전스
클라우드에서의 데이터 웨어하우징 & 비즈니스 인텔리전스클라우드에서의 데이터 웨어하우징 & 비즈니스 인텔리전스
클라우드에서의 데이터 웨어하우징 & 비즈니스 인텔리전스Amazon Web Services Korea
 
Giga Spaces Data Grid / Data Caching Overview
Giga Spaces Data Grid / Data Caching OverviewGiga Spaces Data Grid / Data Caching Overview
Giga Spaces Data Grid / Data Caching Overviewjimliddle
 
QuerySurge Slide Deck for Big Data Testing Webinar
QuerySurge Slide Deck for Big Data Testing WebinarQuerySurge Slide Deck for Big Data Testing Webinar
QuerySurge Slide Deck for Big Data Testing WebinarRTTS
 
HyperconvergedFantasyAnalytics
HyperconvergedFantasyAnalyticsHyperconvergedFantasyAnalytics
HyperconvergedFantasyAnalyticsJerry Jermann
 
Building enterprise applications using open source
Building enterprise applications using open sourceBuilding enterprise applications using open source
Building enterprise applications using open sourcePeter Batty
 

Ähnlich wie SenchaCon 2016: A Data-Driven Application for the Embedded World - Jean-Philippe Ehret (20)

Making Hadoop Realtime by Dr. William Bain of Scaleout Software
Making Hadoop Realtime by Dr. William Bain of Scaleout SoftwareMaking Hadoop Realtime by Dr. William Bain of Scaleout Software
Making Hadoop Realtime by Dr. William Bain of Scaleout Software
 
Data Architecture at Vente-Exclusive.com - TOTM Exellys
Data Architecture at Vente-Exclusive.com - TOTM ExellysData Architecture at Vente-Exclusive.com - TOTM Exellys
Data Architecture at Vente-Exclusive.com - TOTM Exellys
 
Big Data in Azure
Big Data in AzureBig Data in Azure
Big Data in Azure
 
Hadoop vs Java Batch Processing JSR 352
Hadoop vs Java Batch Processing JSR 352Hadoop vs Java Batch Processing JSR 352
Hadoop vs Java Batch Processing JSR 352
 
SPS Vancouver 2018 - What is CDM and CDS
SPS Vancouver 2018 - What is CDM and CDSSPS Vancouver 2018 - What is CDM and CDS
SPS Vancouver 2018 - What is CDM and CDS
 
Business Intelligence Best Practice Summit: BI Quo Vadis
Business Intelligence Best Practice Summit:  BI Quo VadisBusiness Intelligence Best Practice Summit:  BI Quo Vadis
Business Intelligence Best Practice Summit: BI Quo Vadis
 
Discussing strategies for building the next gen data centre
Discussing strategies for building the next gen data centreDiscussing strategies for building the next gen data centre
Discussing strategies for building the next gen data centre
 
hari_duche_updated
hari_duche_updatedhari_duche_updated
hari_duche_updated
 
AWS Summit 2013 | India - Petabyte Scale Data Warehousing at Low Cost, Abhish...
AWS Summit 2013 | India - Petabyte Scale Data Warehousing at Low Cost, Abhish...AWS Summit 2013 | India - Petabyte Scale Data Warehousing at Low Cost, Abhish...
AWS Summit 2013 | India - Petabyte Scale Data Warehousing at Low Cost, Abhish...
 
EDB Guide
EDB GuideEDB Guide
EDB Guide
 
How does Microsoft solve Big Data?
How does Microsoft solve Big Data?How does Microsoft solve Big Data?
How does Microsoft solve Big Data?
 
Presentation big dataappliance-overview_oow_v3
Presentation   big dataappliance-overview_oow_v3Presentation   big dataappliance-overview_oow_v3
Presentation big dataappliance-overview_oow_v3
 
Microsoft Big Data @ SQLUG 2013
Microsoft Big Data @ SQLUG 2013Microsoft Big Data @ SQLUG 2013
Microsoft Big Data @ SQLUG 2013
 
the Data World Distilled
the Data World Distilledthe Data World Distilled
the Data World Distilled
 
클라우드에서의 데이터 웨어하우징 & 비즈니스 인텔리전스
클라우드에서의 데이터 웨어하우징 & 비즈니스 인텔리전스클라우드에서의 데이터 웨어하우징 & 비즈니스 인텔리전스
클라우드에서의 데이터 웨어하우징 & 비즈니스 인텔리전스
 
Giga Spaces Data Grid / Data Caching Overview
Giga Spaces Data Grid / Data Caching OverviewGiga Spaces Data Grid / Data Caching Overview
Giga Spaces Data Grid / Data Caching Overview
 
QuerySurge Slide Deck for Big Data Testing Webinar
QuerySurge Slide Deck for Big Data Testing WebinarQuerySurge Slide Deck for Big Data Testing Webinar
QuerySurge Slide Deck for Big Data Testing Webinar
 
Adam azure presentation
Adam   azure presentationAdam   azure presentation
Adam azure presentation
 
HyperconvergedFantasyAnalytics
HyperconvergedFantasyAnalyticsHyperconvergedFantasyAnalytics
HyperconvergedFantasyAnalytics
 
Building enterprise applications using open source
Building enterprise applications using open sourceBuilding enterprise applications using open source
Building enterprise applications using open source
 

Mehr von Sencha

Breathe New Life into Your Existing JavaScript Applications with Web Components
Breathe New Life into Your Existing JavaScript Applications with Web ComponentsBreathe New Life into Your Existing JavaScript Applications with Web Components
Breathe New Life into Your Existing JavaScript Applications with Web ComponentsSencha
 
Ext JS 6.6 Highlights
Ext JS 6.6 HighlightsExt JS 6.6 Highlights
Ext JS 6.6 HighlightsSencha
 
Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...
Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...
Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...Sencha
 
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd Sencha
 
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App TestingSencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App TestingSencha
 
Sencha Roadshow 2017: What's New in Sencha Test
Sencha Roadshow 2017: What's New in Sencha TestSencha Roadshow 2017: What's New in Sencha Test
Sencha Roadshow 2017: What's New in Sencha TestSencha
 
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...Sencha
 
Sencha Roadshow 2017: Modernizing the Ext JS Class System and Tooling
Sencha Roadshow 2017: Modernizing the Ext JS Class System and ToolingSencha Roadshow 2017: Modernizing the Ext JS Class System and Tooling
Sencha Roadshow 2017: Modernizing the Ext JS Class System and ToolingSencha
 
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App Sencha
 
Sencha Roadshow 2017: Mobile First or Desktop First
Sencha Roadshow 2017: Mobile First or Desktop FirstSencha Roadshow 2017: Mobile First or Desktop First
Sencha Roadshow 2017: Mobile First or Desktop FirstSencha
 
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and BeyondSencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and BeyondSencha
 
Leveraging React and GraphQL to Create a Performant, Scalable Data Grid
Leveraging React and GraphQL to Create a Performant, Scalable Data GridLeveraging React and GraphQL to Create a Performant, Scalable Data Grid
Leveraging React and GraphQL to Create a Performant, Scalable Data GridSencha
 
Learn Key Insights from The State of Web Application Testing Research Report
Learn Key Insights from The State of Web Application Testing Research ReportLearn Key Insights from The State of Web Application Testing Research Report
Learn Key Insights from The State of Web Application Testing Research ReportSencha
 
Introducing ExtReact: Adding Powerful Sencha Components to React Apps
Introducing ExtReact: Adding Powerful Sencha Components to React AppsIntroducing ExtReact: Adding Powerful Sencha Components to React Apps
Introducing ExtReact: Adding Powerful Sencha Components to React AppsSencha
 
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web AppsSenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web AppsSencha
 
Ext JS Architecture Best Practices - Mitchell Simeons
Ext JS Architecture Best Practices - Mitchell SimeonsExt JS Architecture Best Practices - Mitchell Simeons
Ext JS Architecture Best Practices - Mitchell SimeonsSencha
 
Building Ext JS Using HATEOAS - Jeff Stano
Building Ext JS Using HATEOAS - Jeff StanoBuilding Ext JS Using HATEOAS - Jeff Stano
Building Ext JS Using HATEOAS - Jeff StanoSencha
 
SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...
SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...
SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...Sencha
 
SenchaCon 2016: Accessibility, Teamwork & Ext JS: A Customer Success Story - ...
SenchaCon 2016: Accessibility, Teamwork & Ext JS: A Customer Success Story - ...SenchaCon 2016: Accessibility, Teamwork & Ext JS: A Customer Success Story - ...
SenchaCon 2016: Accessibility, Teamwork & Ext JS: A Customer Success Story - ...Sencha
 
SenchaCon 2016: Using Ext JS 6 for Cross-Platform Development on Mobile - And...
SenchaCon 2016: Using Ext JS 6 for Cross-Platform Development on Mobile - And...SenchaCon 2016: Using Ext JS 6 for Cross-Platform Development on Mobile - And...
SenchaCon 2016: Using Ext JS 6 for Cross-Platform Development on Mobile - And...Sencha
 

Mehr von Sencha (20)

Breathe New Life into Your Existing JavaScript Applications with Web Components
Breathe New Life into Your Existing JavaScript Applications with Web ComponentsBreathe New Life into Your Existing JavaScript Applications with Web Components
Breathe New Life into Your Existing JavaScript Applications with Web Components
 
Ext JS 6.6 Highlights
Ext JS 6.6 HighlightsExt JS 6.6 Highlights
Ext JS 6.6 Highlights
 
Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...
Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...
Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...
 
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
 
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App TestingSencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
 
Sencha Roadshow 2017: What's New in Sencha Test
Sencha Roadshow 2017: What's New in Sencha TestSencha Roadshow 2017: What's New in Sencha Test
Sencha Roadshow 2017: What's New in Sencha Test
 
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
 
Sencha Roadshow 2017: Modernizing the Ext JS Class System and Tooling
Sencha Roadshow 2017: Modernizing the Ext JS Class System and ToolingSencha Roadshow 2017: Modernizing the Ext JS Class System and Tooling
Sencha Roadshow 2017: Modernizing the Ext JS Class System and Tooling
 
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
 
Sencha Roadshow 2017: Mobile First or Desktop First
Sencha Roadshow 2017: Mobile First or Desktop FirstSencha Roadshow 2017: Mobile First or Desktop First
Sencha Roadshow 2017: Mobile First or Desktop First
 
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and BeyondSencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
 
Leveraging React and GraphQL to Create a Performant, Scalable Data Grid
Leveraging React and GraphQL to Create a Performant, Scalable Data GridLeveraging React and GraphQL to Create a Performant, Scalable Data Grid
Leveraging React and GraphQL to Create a Performant, Scalable Data Grid
 
Learn Key Insights from The State of Web Application Testing Research Report
Learn Key Insights from The State of Web Application Testing Research ReportLearn Key Insights from The State of Web Application Testing Research Report
Learn Key Insights from The State of Web Application Testing Research Report
 
Introducing ExtReact: Adding Powerful Sencha Components to React Apps
Introducing ExtReact: Adding Powerful Sencha Components to React AppsIntroducing ExtReact: Adding Powerful Sencha Components to React Apps
Introducing ExtReact: Adding Powerful Sencha Components to React Apps
 
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web AppsSenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
 
Ext JS Architecture Best Practices - Mitchell Simeons
Ext JS Architecture Best Practices - Mitchell SimeonsExt JS Architecture Best Practices - Mitchell Simeons
Ext JS Architecture Best Practices - Mitchell Simeons
 
Building Ext JS Using HATEOAS - Jeff Stano
Building Ext JS Using HATEOAS - Jeff StanoBuilding Ext JS Using HATEOAS - Jeff Stano
Building Ext JS Using HATEOAS - Jeff Stano
 
SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...
SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...
SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...
 
SenchaCon 2016: Accessibility, Teamwork & Ext JS: A Customer Success Story - ...
SenchaCon 2016: Accessibility, Teamwork & Ext JS: A Customer Success Story - ...SenchaCon 2016: Accessibility, Teamwork & Ext JS: A Customer Success Story - ...
SenchaCon 2016: Accessibility, Teamwork & Ext JS: A Customer Success Story - ...
 
SenchaCon 2016: Using Ext JS 6 for Cross-Platform Development on Mobile - And...
SenchaCon 2016: Using Ext JS 6 for Cross-Platform Development on Mobile - And...SenchaCon 2016: Using Ext JS 6 for Cross-Platform Development on Mobile - And...
SenchaCon 2016: Using Ext JS 6 for Cross-Platform Development on Mobile - And...
 

Kürzlich hochgeladen

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 

Kürzlich hochgeladen (20)

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 

SenchaCon 2016: A Data-Driven Application for the Embedded World - Jean-Philippe Ehret

  • 1. A Data-Driven Application for the Embedded World Jean-Philippe EHRET Las Vegas, November 6th 2016
  • 2. A History of User Interfaces...
  • 3. Embedded Systems’ Humble Beginnings A simple message, and only this one : “It’s WORKING! Or is it?!” 3 The blinking LED
  • 4. Embedded Systems’ Evolved BETTER! But user-friendly? 4 Switches and lights
  • 7. Expectations Nowadays 7 Interactive data-driven dashboards  Real Time  Interactive
  • 8. Expectations Nowadays 8 Interactive data-driven dashboards  Real Time  Interactive  Data Driven
  • 9. Expectations Nowadays 9 Interactive data-driven dashboards  Real Time  Interactive  Data Driven  Reliable
  • 10. Expectations Nowadays 10 Interactive data-driven dashboards  Real Time  Interactive  Data Driven  Reliable  And nice looking!
  • 11. Expectations Nowadays 11 Interactive data-driven dashboards  Real Time  Interactive  Data Driven  Reliable  And nice looking! NOT ONLY on powerful machines!
  • 12. Expectations Nowadays 12 Interactive data-driven dashboards  Real Time  Interactive  Data Driven  Reliable  And nice looking! Everywhere
  • 14. Embedded Generally Means You don’t have that… 14 Non-extensible computing power…
  • 15. Embedded Generally Means But more something like that! 15 Already limited to start with…
  • 16. Embedded Generally Means 16 For a slight difference! Enterprise Server Embedded Equipment RAM 32 GB+ 1 MB to 1 GB CPU Core i7, Octo Xeon, etc. ARM Hard Drive RAID hard drives Nope Local Storage Several dozens GB Up to a few GB
  • 17. Embedded Generally Means 17 You don’t have this
  • 20. You Have to Be Really Smart! • Because people want real-time, rich and reactive interfaces - And of course adaptive and working on many kind of devices : tablets, laptops, desktops... 20
  • 21. You Have to Be Really Smart! BUT! 21
  • 22. You Have to Be Really Smart! • But YOU HAVE GOT very limited resources 22
  • 23. You Have to Be Really Smart! • But YOU HAVE GOT very limited resources - The only resources you have are in a few components 23
  • 24. You Have to Be Really Smart! AND 24
  • 25. You Have to Be Really Smart! • You cannot develop on your computer leaving the question of performance for later: 25
  • 26. You Have to Be Really Smart! • You cannot develop on your computer leaving the question of performance for later: 26 Patching an embedded device remotely may just NOT BE POSSIBLE!
  • 28. HAGER in a Few Words Basic stats 12,000 people €1.6bn ($1.77bn) turnover HQ in Germany, present in 23 countries Clients in over 80 countries
  • 29. Building Efficiency A large step towards intelligent buildings Agardio system contributes to the management of low voltage (LV) electrical system: • Optimizing the building’s energy consumption: - Saving money and preserving the environment • Maintaining service continuity: - Preventing operational losses - Providing stable conditions for occupants
  • 31. Building Efficiency Hager’s Agardio™ system Technical details
  • 34. How to Include Ext JS in an Embedded Project?
  • 35. How to Include Ext JS in an Embedded Project? Modularity • Multilingual and modular across Python backend and Ext JS frontend
  • 36. How to Include Ext JS in an Embedded Project? No configuration • Must be available through tablets without any configuration • Directly served by the equipment
  • 37. What does it mean in Ext JS?
  • 38. What does it mean in Ext JS? Sencha CMD
  • 39. Small Memory Footprint You definitely want to use Sencha CMD • Tablets will download the application from the equipment • Heavy app is not such a problem in terms of memory, but the power of the CPU used to deliver the app is a different story
  • 40. What does it mean in Ext JS? Dynamic Loading
  • 41. Dynamic Loading Load a resource only when needed Hager’s product is fully modular: • Depending on the physical modules installed (light sensor, temperature sensor…), backend and frontend will have different features. Additionally: • The new modules can be plugged without any reboot • Configuration files can be uploaded on-the-fly • A new piece of UI can serve many purposes across multiple modules -
  • 42. Dynamic Loading Load a resource only when needed The magic is that all of this is loaded dynamically like a sort of “plugin” : • The Ext JS app CANNOT be deployed as a single JS as we are used to.
  • 43. Dynamic Loading Load a resource only when needed The magic is that all of this is loaded dynamically like a sort of “plugin” : • The Ext JS app CANNOT be deployed as a single JS as we are used to. • Each physical module brings its piece of extra Ext JS and resources within a dedicated Ext JS package
  • 44. Dynamic Loading Load a resource only when needed The magic is that all of this is loaded dynamically like a sort of “plugin” : • The Ext JS app CANNOT be deployed as a single JS as we are used to. • Each physical module brings its piece of extra Ext JS and resources within a dedicated Ext JS package • Sencha CMD is to produce MULTIPLE JavaScript files, one per package / module
  • 45. What does it mean in Ext JS? Data Driven Dynamic Charts
  • 46. Data Representation Massive usage of d3.js visualizations Why d3.js? • Hager needed custom visualizations and behaviors • D3.js was the best pick due to that (SVG low-level building)
  • 47. Data Representation Massive usage of d3.js visualizations Why not Sencha’s implementation? • The project started before Sencha’s announcement of d3.js native support
  • 48. Data Representation Massive usage of d3.js visualizations What’s next? • Many issues with browser support due to very different behaviors of the SVG manipulation • Long-term approach : switch to Sencha’s official implementation
  • 49. Data Representation Ext.define('Hes.common.d3.Chart', { extend: 'Ext.Component', xtype: 'd3-chart', fieldMappings: {}, autoEl: { tag: 'svg' }, … onBoxReady: function(…) {…}, createChart:function(w, he) { … this.setChart(this.getChartGenerator(w, he)); … this.getChart().updateChart( Hes.util.Format.storeToD3Data(chartDataStore, this.fieldMappings)); } }, …});
  • 50. Data Representation Ext.define('Hes.common.d3.Chart', { extend: 'Ext.Component', xtype: 'd3-chart', fieldMappings: {}, autoEl: { tag: 'svg' }, … onBoxReady: function(…) {…}, … Data Driven Must deal with various software- modules-specific data this.setChart( this.getChartGenerator(w, he)); … this.getChart().updateChart( Hes.util.Format.storeToD3Data( chartDataStore, this.fieldMappings ));
  • 51. Transform Data to D3 Data storeToD3Data: function(chartData, fieldMappings) { var data = []; fieldMappings = fieldMappings || {}; if (chartData && Ext.isFunction(chartData.each)) { chartData.each(function(datum) { var dataObj = datum.data; var seriesData = {}; var dataKeys = Ext.Object.getKeys(dataObj); dataKeys.forEach(function(key) { seriesData[fieldMappings[key] || key] = datum.get(key); }); data.push(seriesData); });} return data; }
  • 52. Transform Data to D3 Data storeToD3Data: function(chartData, fieldMappings) { var data = []; fieldMappings = fieldMappings || {}; if (chartData && Ext.isFunction(chartData.each)) { chartData.each(function(datum) { var dataObj = datum.data; var seriesData = {}; var dataKeys = Ext.Object.getKeys(dataObj); dataKeys.forEach(function(key) { pieData[fieldMappings[key] || key] = datum.get(key); }); data.push(pieData); });} return data; } To find axis and all important D3 data types var dataKeys = Ext.Object.getKeys(dataObj); dataKeys.forEach(function(key) { seriesData[fieldMappings[key] || key] = datum.get(key); });
  • 53. A Generator Ext.define('Hes.common.d3.line.LineGenerator', { extend: 'Ext.Base', mixins: ['Ext.mixin.Observable'], … updateChart: function(data) { var seriesFields = this.chartOwner.getSeriesFields() || ['value']; this.data = data; this.seriesData = seriesFields.map(function(fieldName) { return { id: fieldName, values: data.map(function(d) { return { date: d.date, value: d[fieldName] };})};}); … this.svg.append("g") .attr("class", "x axis") .attr("transform", "translate(0," + this.height + ")") .call(this.xAxis) .append("text") .style("font-size", "1.6em") .attr("y", -this.height) .attr("x", 15) .attr("fill", "#000") .text(this.chartOwner.getXTitle()); this.svg.append("g") .attr("class", "y axis") …
  • 54. A Generator Ext.define('Hes.common.d3.line.LineGenerator', { extend: 'Ext.Base', mixins: ['Ext.mixin.Observable'], … updateChart: function(data) { var seriesFields = this.chartOwner.getSeriesFields() || ['value']; this.data = data; this.seriesData = seriesFields.map(function(fieldName) { return { id: fieldName, values: data.map(function(d) { return { date: d.date, value: d[fieldName] };})};}); … this.svg.append("g") .attr("class", "x axis") .attr("transform", "translate(0," + this.height + ")") .call(this.xAxis) .append("text") .style("font-size", "1.6em") .attr("y", -this.height) .attr("x", 15) .attr("fill", "#000") .text(this.chartOwner.getXTitle()); this.svg.append("g") .attr("class", "y axis") … updateChart Override for specific drawing updateChart:function(data) { … Data-driven Generic whatever is the property return { date: d.date, value: d[fieldName] }
  • 55. What does it involve in ExtJS? Dynamic Internationalization
  • 56. Internationalization One app to rule them all We use an approach with elements on top of Sencha’s official guidelines: • One multilingual build instead of one build per language • Dynamic loading to switch language as required • Easily extendable for multiple language support • Contents can be translated by non developers through specific products • No redeployment needed For more information about internationalization, please read our blogpost on sencha.com
  • 57. Internationalization Json result is language specific {"button": "Mon Bouton", "title": "Mon titre"} Ext.define('Jnesis.Labels', { singleton: true, button: 'My english button', title: 'My english title' }); … Ext.define ('Jnesis.Application', { launch: function () { Ext.Ajax.request({ url: 'get-localization', params:{locale:'fr'}, callback: function (options, success, response) { var data = Ext.decode(response.responseText, true); Ext.override(Jnesis.Labels, data); Ext.create('Jnesis.view.main.Main'); } }); } });
  • 58. Internationalization Ext.define('Jnesis.Labels', { singleton: true, button: 'My english button', title: 'My english title' }); … Ext.define ('Jnesis.Application', { launch: function () { Ext.Ajax.request({ url: 'get-localization', params:{locale:'fr'}, callback: function (options, success, response) { var data = Ext.decode(response.responseText, true); Ext.override(Jnesis.Labels, data); Ext.create('Jnesis.view.main.Main'); } }); } }); Override with selected language The singleton gets new values url: 'get-localization', params:{locale:'fr'}, … Ext.override(Jnesis.Labels, data);
  • 59. Internationalization Ext.define('overrides.localized.Component', { override: 'Ext.Component', initComponent: function() { var me = this, localized = me.localized, value; if (Ext.isObject(localized)) { for (var prop in localized) { value = localized[prop]; if (value) { me[prop] = eval(value); }}} me.callParent(arguments);}); Ext.define('Jnesis.view.main.Main', { extend: 'Ext.panel.Panel', localized: { title: 'Jnesis.Labels.title' }, buttons: [{ localized: { text: 'Jnesis.Labels.button' }, handler: 'onClickButton' }]});
  • 60. Ext.define('overrides.localized.Component', { override: 'Ext.Component', initComponent: function() { var me = this, localized = me.localized, value; if (Ext.isObject(localized)) { for (var prop in localized) { value = localized[prop]; if (value) { me[prop] = eval(value); }}} me.callParent(arguments);}); Ext.define('Jnesis.view.main.Main', { extend: 'Ext.panel.Panel', localized: { title: 'Jnesis.Labels.title' }, buttons: [{ localized: { text: 'Jnesis.Labels.button' }, handler: 'onClickButton' }]}); Localized property “Bind like” property localized: { title: 'Jnesis.Labels.title' }, Override Ext Components Ext.define('overrides.localized.Component', { override: 'Ext.Component',
  • 61. What does it involves in ExtJS? Various Performance Optimizations
  • 62. Application Optimization Some best practices for embedding • Don’t blame the backend guy! Every REST call can harm the resources! • Store locally every time it is possible (inside the end-user device):
  • 63. Application Optimization Some best practices for embedding • Don’t blame the backend guy! Every REST call can harm the resources! • Store locally every time it is possible (inside the end-user device): duplicate data = need for optimization
  • 64. Application Optimization Some best practices for embedding • You have to be reasonable in the use of websocket / SSE data exchanges
  • 65. Application Optimization Some best practices for embedding • Don’t forget to ask for compression in the backend!
  • 66. Application Optimization Some best practices for embedding • What can be performed on the frontend must be done on the frontend (e.g. CSV export, data sorting, …)
  • 67. Is ExtJS Fit for Embedded?
  • 68. YES! But developers MUST understand what‘s happening behind the scene, although Sencha did a good job sparing this to developers in most other cases.
  • 69. To Summarize • Keep in mind that resources are scarce
  • 70. To Summarize • Keep in mind that resources are scarce • Be smart not just comprehensive:
  • 71. To Summarize • Keep in mind that resources are scarce • Be smart not just comprehensive: - Design modular!
  • 72. To Summarize • Keep in mind that resources are scarce • Be smart not just comprehensive - Design modular! • Test, re-test, re-re-test before releasing, you work in an embedded system
  • 73. To Conclude Making Ext JS work with « Things » is nothing much than legitimate expectation.
  • 74. To Conclude Making Ext JS work with « Things » is nothing much than legitimate expectation. Jnesis is always looking for solutions to use Ext JS wherever it can be in a beneficial way for its clients, check us out at the sponsor zone!

Hinweis der Redaktion

  1. Thank Hager Unfortunately they couldn’t speak with us today but we thank us for having authorized us introducing their system
  2. This is Hager’s Agardio System -> Show real object HAGER’s AGARDIO™ is an Intelligent Low-Voltage Switchgear competitors Siemens, Schneider, ABB and specialists market positioning easiest to install and to configure increase the energy efficiency of the electrical installation segment commercial buildings target specifiers
  3. Inside we have
  4. Inside we have
  5. Harder today with Ext 6 but common in Ext 4
  6. Hager needed some tailor-made visualizations, with very custom behaviors The project started before Sencha’s announce of d3.js native support D3.js was the best pick due to all this custom needs (nvd3 and other libraries don’t offer the same liberty) We had large issues with browser support due to very different behaviors of the SVG manipulation Long-term approach would be to switch to Sencha’s official implementation (waiting for 6.2 to be considered as Production Grade)
  7. Hager needed some tailor-made visualizations, with very custom behaviors The project started before Sencha’s announce of d3.js native support D3.js was the best pick due to all this custom needs (nvd3 and other libraries don’t offer the same liberty) We had large issues with browser support due to very different behaviors of the SVG manipulation Long-term approach would be to switch to Sencha’s official implementation (waiting for 6.2 to be considered as Production Grade)
  8. Hager needed some tailor-made visualizations, with very custom behaviors The project started before Sencha’s announce of d3.js native support D3.js was the best pick due to all this custom needs (nvd3 and other libraries don’t offer the same liberty) We had large issues with browser support due to very different behaviors of the SVG manipulation Long-term approach would be to switch to Sencha’s official implementation (waiting for 6.2 to be considered as Production Grade)