SlideShare uma empresa Scribd logo
1 de 151
Baixar para ler offline
Wednesday, November 2, 2011
EXT JS 4.1
                               What’s New




                                Don Griffin


Wednesday, November 2, 2011
Forum


                              dongryphon




Wednesday, November 2, 2011
Twitter


                              @dongryphon




Wednesday, November 2, 2011
email


                              don@sencha.com




Wednesday, November 2, 2011
Focus Areas




Wednesday, November 2, 2011
Performance

                                    Grid

                              API Enhancements




Wednesday, November 2, 2011
Performance


Wednesday, November 2, 2011
Many Aspects




Wednesday, November 2, 2011
load
                                           layout
                    DOM



                                 Many Aspects
          DOM
                                                initialization
                              rendering

                                          DOM


Wednesday, November 2, 2011
DOM
                               load
                                                     layout
                    DOM
                                  security
                                                              database

                                 Many Aspects
          DOM                                ajax
                                                          initialization
                              rendering

  validation                                        DOM


Wednesday, November 2, 2011
Measurement Required




Wednesday, November 2, 2011
Measurement Required
                              Chrome: Profiler, Speed Tracer
                              Firefox: dynaTrace, Firebug
                              IE: dynaTrace, IE8+ Profiler
                              Safari: Developer Tools Profiler




Wednesday, November 2, 2011
Themes Example - 4.0.7 (IE8)




Wednesday, November 2, 2011
Themes Example - 4.0.7 (IE8)




         4.0.7

Wednesday, November 2, 2011
Themes Example - 4.0.7 (IE8)
                                   Load   300
                              6%




         4.0.7

Wednesday, November 2, 2011
Themes Example - 4.0.7 (IE8)
                                   Load   300
                              6%
                              7%     Initialize
                                          320




         4.0.7

Wednesday, November 2, 2011
Themes Example - 4.0.7 (IE8)
                                            Load    300
                                    6%
                                    7%          Initialize
                                                   320

                              36%




                                    Rendering
                                         1680
         4.0.7

Wednesday, November 2, 2011
Themes Example - 4.0.7 (IE8)
                              Layout                       Load    300
                               2400    51%
                                                   6%
                                                   7%          Initialize
                                                                  320
       4700

                                             36%




                                                   Rendering
                                                        1680
         4.0.7

Wednesday, November 2, 2011
Analysis




Wednesday, November 2, 2011
Cost is spread across

                               the Page Life Cycle




Wednesday, November 2, 2011
Cost is spread across

                               the Page Life Cycle




Wednesday, November 2, 2011
Cost is spread across

                               the Page Life Cycle




              Load               Initialize   Render   Layout

Wednesday, November 2, 2011
Load




Wednesday, November 2, 2011
<script src=”ext.js”>




Wednesday, November 2, 2011
Class System




Wednesday, November 2, 2011
DOM Ready




Wednesday, November 2, 2011
Load




                              Initialize




Wednesday, November 2, 2011
onReady




Wednesday, November 2, 2011
initComponent




Wednesday, November 2, 2011
prepareItems




Wednesday, November 2, 2011
Themes - Ext JS 3.4




Wednesday, November 2, 2011
Themes - Ext JS 3.4

                                   148 components
                                         in
                                    50 containers




Wednesday, November 2, 2011
Themes - Ext JS 4.x




Wednesday, November 2, 2011
Themes - Ext JS 4.x

                                  148 271 components
                                           in
                                    50 97 containers




Wednesday, November 2, 2011
More flexibility




Wednesday, November 2, 2011
Components
                              & Containers
                              have a cost



Wednesday, November 2, 2011
Observables
                                listeners
                               fireEvents



Wednesday, November 2, 2011
Load                          Initialize




                                           Rendering




Wednesday, November 2, 2011
Wednesday, November 2, 2011
Components   HTML




Wednesday, November 2, 2011
panel




                              comp




                          container




Wednesday, November 2, 2011
el
             panel                    render   panel




                              comp                      comp




                          container                    container




Wednesday, November 2, 2011
Rendering in 4.0




Wednesday, November 2, 2011
Wednesday, November 2, 2011
panel
                                      render

                              comp   onRender




                        container




Wednesday, November 2, 2011
el
           panel
                                             render

                              comp          onRender

                                          createElement


                        container




Wednesday, November 2, 2011
el
           panel
                                             render

                              comp          onRender

                                          createElement

                                            renderTpl
                        container




Wednesday, November 2, 2011
el
           panel
                                              render

                              comp          onRender

                                          createElement

                                            renderTpl
                        container
                                          renderSelectors




Wednesday, November 2, 2011
el
           panel
                                              render

                              comp          onRender

                                          createElement

                                            renderTpl
                        container
                                          renderSelectors

                                           afterRender




Wednesday, November 2, 2011
el
           panel
                                              render

                              comp          onRender

                                          createElement

                                            renderTpl
                        container
                                          renderSelectors

                                           afterRender




Wednesday, November 2, 2011
Rendering in 4.1




Wednesday, November 2, 2011
Wednesday, November 2, 2011
panel
                                        render

                              comp   beforeRender

                                      renderTpl


                        container




Wednesday, November 2, 2011
panel
                                        render

                              comp   beforeRender

                                      renderTpl


                        container




Wednesday, November 2, 2011
el
           panel
                                             render

                              comp        beforeRender

                                           renderTpl

                                           innerHTML
                        container




Wednesday, November 2, 2011
el
           panel
                                             render

                              comp        beforeRender

                                           renderTpl

                                           innerHTML
                        container
                                           onRender




Wednesday, November 2, 2011
el
           panel
                                              render

                              comp        beforeRender

                                            renderTpl

                                            innerHTML
                        container
                                            onRender

                                          renderSelectors

                                           afterRender




Wednesday, November 2, 2011
el
           panel
                                              render

                              comp        beforeRender

                                            renderTpl

                                            innerHTML
                        container
                                            onRender

                                          renderSelectors

                                           afterRender




Wednesday, November 2, 2011
Load                        Initialize   Render




                                           Layout




Wednesday, November 2, 2011
A Place For Everything

                                       and

                              Everything In Its Place




Wednesday, November 2, 2011
Layout Example




Wednesday, November 2, 2011
Ext.widget({
           xtype: ‘panel’,
           layout: ‘fit’,
           title: ‘Text’,
           items: [{
              xtype: ‘component’,
              html: ‘foo’,
              width: 100,
              height: 100
           }]
       });




Wednesday, November 2, 2011
Ext.widget({                 Ext.widget({
           xtype: ‘panel’,              xtype: ‘panel’,
           layout: ‘fit’,               layout: ‘fit’,
           title: ‘Text’,               dockedItems: [{
           items: [{                        xtype: ‘header’,
              xtype: ‘component’,           text: ‘Text’,
              html: ‘foo’,                  dock: ‘top’
              width: 100,               }],
              height: 100               items: [{
           }]                               xtype: ‘component’,
       });                                  html: ‘foo’,
                                            width: 100,
                                            height: 100
                                        }]
                                    });




Wednesday, November 2, 2011
Text




                                     foo




Wednesday, November 2, 2011
Text




                                     foo




Wednesday, November 2, 2011
Text




                                     foo




Wednesday, November 2, 2011
Text




                                           ha
                                     foo




                                     wa


Wednesday, November 2, 2011
Text




                                           ha
                                     foo




                                     wa


Wednesday, November 2, 2011
wb = wa

                              Text




                                               ha
                                       foo




                                       wa


Wednesday, November 2, 2011
wb = wa

                              Text             hb



                                               ha
                                       foo




                                       wa


Wednesday, November 2, 2011
wb = wa

                              Text             hb



                                               ha
                                       foo




                                       wa


Wednesday, November 2, 2011
wb = wa

                              Text                  hb


                hc
           = ha+hb                                  ha
                                          foo
               +fc




                                         wa
                                     wc = wa + fc

Wednesday, November 2, 2011
First Rule of Speed




Wednesday, November 2, 2011
Wednesday, November 2, 2011
C$$
                              Calculations
                                  Are
                               Expensive



Wednesday, November 2, 2011
Wednesday, November 2, 2011
... therefore ...




Wednesday, November 2, 2011
Wednesday, November 2, 2011
Browsers Cache Results   *




Wednesday, November 2, 2011
Browsers Cache Results                            *




                       * - DOM Writes Invalidate The Cache   !
Wednesday, November 2, 2011
Write + Read = Reflow




Wednesday, November 2, 2011
Second Rule of Speed




Wednesday, November 2, 2011
Apps Have More
                                   Than
                                One Panel!



Wednesday, November 2, 2011
el
                              panel




                                       comp




                                      container




Wednesday, November 2, 2011
component (3.x)


                                                  el
                              panel




                                       comp




                                      container




Wednesday, November 2, 2011
container (4.0)
                                    component (3.x)


                                                  el
                              panel




                                       comp




                                      container




Wednesday, November 2, 2011
container (4.0)
                              global (4.1)   component (3.x)


                                                            el
                               layout
                                        panel
                              context



                                                 comp




                                                container




Wednesday, November 2, 2011
Minimizing Reflows
    var maxHt = 0,
        n = elements.length,
        i;

    for (i=0; i < n; ++i) {
       elements[i].setWidth(w);
       maxHt = Math.max(maxHt,
          elements[i].getHeight());
    }

    for (i=0; i < n; ++i) {
       elements[i].setHeight(maxHt);
    }




Wednesday, November 2, 2011
Minimizing Reflows
    var maxHt = 0,
        n = elements.length,
        i;

    for (i=0; i < n; ++i) {
       elements[i].setWidth(w);
       maxHt = Math.max(maxHt,
          elements[i].getHeight());
    }

    for (i=0; i < n; ++i) {
       elements[i].setHeight(maxHt);
    }




                       n+1 reflows

Wednesday, November 2, 2011
Minimizing Reflows
    var maxHt = 0,                     var maxHt = 0,
        n = elements.length,               n = elements.length,
        i;                                 i;

    for (i=0; i < n; ++i) {            for (i=0; i < n; ++i) {
       elements[i].setWidth(w);           elements[i].setWidth(w);
       maxHt = Math.max(maxHt,         }
          elements[i].getHeight());
    }                                  for (i=0; i < n; ++i) {
                                          maxHt = Math.max(maxHt,
    for (i=0; i < n; ++i) {                  elements[i].getHeight());
       elements[i].setHeight(maxHt);   }
    }
                                       for (i=0; i < n; ++i) {
                                          elements[i].setHeight(maxHt);
                                       }

                       n+1 reflows

Wednesday, November 2, 2011
Minimizing Reflows
    var maxHt = 0,                     var maxHt = 0,
        n = elements.length,               n = elements.length,
        i;                                 i;

    for (i=0; i < n; ++i) {            for (i=0; i < n; ++i) {
       elements[i].setWidth(w);           elements[i].setWidth(w);
       maxHt = Math.max(maxHt,         }
          elements[i].getHeight());
    }                                  for (i=0; i < n; ++i) {
                                          maxHt = Math.max(maxHt,
    for (i=0; i < n; ++i) {                  elements[i].getHeight());
       elements[i].setHeight(maxHt);   }
    }
                                       for (i=0; i < n; ++i) {
                                          elements[i].setHeight(maxHt);
                                       }

                       n+1 reflows               2 reflows

Wednesday, November 2, 2011
More Opportunities




Wednesday, November 2, 2011
Leverage Layout Dependency Data




Wednesday, November 2, 2011
Cache Layout Results




Wednesday, November 2, 2011
Themes Example - 4.1 (IE8)




Wednesday, November 2, 2011
Themes Example - 4.1 (IE8)




         4.0.7         4.1

Wednesday, November 2, 2011
Themes Example - 4.1 (IE8)
                                            300
                                     Load   200
                                8%




         4.0.7         4.1

Wednesday, November 2, 2011
Themes Example - 4.1 (IE8)
                                              300
                                      Load    200
                                8%

                                10%
                                      Initialization
                                             320
                                             240




         4.0.7         4.1

Wednesday, November 2, 2011
Themes Example - 4.1 (IE8)
                                                       300
                                             Load      200
                                       8%

                                       10%
                                                Initialization
                                                     320
                              43%
                                                     240



                                    Rendering
         4.0.7
                                      1680
                       4.1
                                      1035
Wednesday, November 2, 2011
Themes Example - 4.1 (IE8)
                              Layout                                  300
                               2400          39%            Load      200
                                945                   8%

                                                      10%
       4700                                                    Initialization
                                                                    320
                                       43%
                                                                    240
                     2420

                                                   Rendering
         4.0.7
                                                     1680
                       4.1
                                                     1035
Wednesday, November 2, 2011
Significantly faster than 4.0 !




Wednesday, November 2, 2011
But not faster than 3.4...




Wednesday, November 2, 2011
But not faster than 3.4...

                                         Yet




Wednesday, November 2, 2011
Further Investigation




Wednesday, November 2, 2011
Further Investigation

                        Convert Layouts into CSS... where possible

                                  Optimize Class Creation

                                Optimize DOM Event Binding




Wednesday, November 2, 2011
Grid


Wednesday, November 2, 2011
Native
                              Scrolling!




Wednesday, November 2, 2011
momentum

                                                   friction

                                       Native
                                      Scrolling!

                               acceleration


Wednesday, November 2, 2011
What Could
                              Be Better?!?




Wednesday, November 2, 2011
Native
                              Scrolling
                                with
                              Buffering!



Wednesday, November 2, 2011
Is There More?




Wednesday, November 2, 2011
Native
                               Infinite
                              Scrolling!



Wednesday, November 2, 2011
But Wait...




Wednesday, November 2, 2011
Optimized
                               Column
                              Reordering



Wednesday, November 2, 2011
Store metadata




Wednesday, November 2, 2011
API Enhancements




Wednesday, November 2, 2011
Border Layout




Wednesday, November 2, 2011
Multiple regions




Wednesday, November 2, 2011
North




        W
                              Multiple regions   E
        e                                        a
        s                                        s
        t                                        t




                                    South


Wednesday, November 2, 2011
North




        W              W
                              Multiple regions   E   E
        e
        s
                       e
                       s             of          a
                                                 s
                                                     a
                                                     s
        t              t                         t   t
                              the same type


                                    South


Wednesday, November 2, 2011
Control

                              Space Priority



Wednesday, November 2, 2011
W
                                 Control       E
        e                                      a
        s                                      s
        t                                      t

                              Space Priority



Wednesday, November 2, 2011
North




        W
                                 Control       E   E
        e              W                       a   a
        s              e                       s   s
        t              s                       t   t
                       t
                              Space Priority


                                      South


Wednesday, November 2, 2011
Regions can be

                              added and removed

                                 dynamically


Wednesday, November 2, 2011
XTemplate




Wednesday, November 2, 2011
Foundational to

                                  Ext JS



Wednesday, November 2, 2011
XTemplate




Wednesday, November 2, 2011
XTemplate


                              compiles faster...
                                runs faster...
                              is debuggable...


Wednesday, November 2, 2011
XTemplate


                               compiles faster...
                                 runs faster...
                               is debuggable...
                              and more powerful!

Wednesday, November 2, 2011
Compiles To A Function




Wednesday, November 2, 2011
<tpl>
        <ul>
            <tpl for=”x”>
               <li>{fname}
                   <tpl if=”lname”>
                      {lname}
                   <tpl else>
                      (None)
                   </tpl>
               </li>
            </tpl>
        </ul>
     </tpl>




Wednesday, November 2, 2011
<tpl>                            function tplFn (out, values..) {
        <ul>                              out.push(’<ul>’);
            <tpl for=”x”>                 for (var n in values.x) {
               <li>{fname}                   var v2 = values.x[n];
                   <tpl if=”lname”>          out.push(’<li>’);
                      {lname}                out.push(v2.fname);
                   <tpl else>                if (v2.lname) {
                      (None)                    out.push(v2.lname);
                   </tpl>                    } else {
               </li>                            out.push(‘(None)’);
            </tpl>                           }
        </ul>                              }
     </tpl>                                out.push(‘</li>’);
                                        }
                                        out.push(‘</ul>’);
                                      }




Wednesday, November 2, 2011
Control Structures




Wednesday, November 2, 2011
<tpl if="age == 3">
                                 {x}
                              <tpl elseif=”age == 2”>
                                 {y}
                              <tpl else>
                                 {z}
                              </tpl>




Wednesday, November 2, 2011
<tpl switch="age">
                                 <tpl case="3" case="4">
                                     <p>{name} is 3 or 4</p>
                                 <tpl case="2">
                                     <p>{name} is two</p>
                                 <tpl default>
                                     <p>{name} is {age}!</p>
                              </tpl>




Wednesday, November 2, 2011
Code Injection




Wednesday, November 2, 2011
<tpl>
        {% var i=0; %}
        <tpl for=”x”>
            {name}
            {% if (++i==9) break; %}
        </tpl>
     </tpl>




Wednesday, November 2, 2011
<tpl>                           function tplFn (out, values..) {
        {% var i=0; %}                  var i=0;
        <tpl for=”x”>                   for (var n in values.x) {
            {name}                         out.push(v2.name);
            {% if (++i==9) break; %}       if (++i == 9) break;
        </tpl>                          }
     </tpl>                          }




Wednesday, November 2, 2011
applyOut




Wednesday, November 2, 2011
var tpl = new Ext.XTemplate(...);

                              // This:

                              var s = tpl.apply(data);

                              // is equivalent to:

                              var a = [];
                              tpl.applyOut(a, data);
                              s = a.join(‘’);




Wednesday, November 2, 2011
Class System




Wednesday, November 2, 2011
Overrides
     Ext.define(‘My.patches.GridOverride’, {

              override: ‘Ext.grid.Panel’,

              initComponent: function () {
                  this.callParent();
              }
     });

     -------------------

     Ext.define(‘My.app.App’, {
         requires: [ ‘My.patches.*’ ],
         ...
     });




Wednesday, November 2, 2011
Overrides
     Ext.define(‘My.patches.GridOverride’, {
                                               Named and used
              override: ‘Ext.grid.Panel’,
                                               like a normal class
              initComponent: function () {
                  this.callParent();
              }
     });

     -------------------

     Ext.define(‘My.app.App’, {
         requires: [ ‘My.patches.*’ ],
         ...
     });




Wednesday, November 2, 2011
Overrides
     Ext.define(‘My.patches.GridOverride’, {
                                               Named and used
              override: ‘Ext.grid.Panel’,
                                               like a normal class
              initComponent: function () {
                  this.callParent();
              }
     });
                                               Only added to the
     -------------------
                                               build if the target
     Ext.define(‘My.app.App’, {                class is required
         requires: [ ‘My.patches.*’ ],
         ...
     });




Wednesday, November 2, 2011
Ext.create/widget
     4.0
     Ext.create(‘Ext.grid.Panel’, {

              ... config ...

     });

     // or

     Ext.widget(‘grid’, {

              ... config ...

     });




Wednesday, November 2, 2011
Ext.create/widget
     4.0                                4.1
     Ext.create(‘Ext.grid.Panel’, {     Ext.create({
                                            xclass: ‘Ext.grid.Panel’,
              ... config ...
                                              ... config ...
     });                                });

     // or                              // or

     Ext.widget(‘grid’, {               Ext.widget({
                                            xtype: ‘grid’.,
              ... config ...
                                              ... config ...
     });                                });




Wednesday, November 2, 2011
Methods in configs - 4.0

            items: [ {
               xtype: ‘foo’,

                   method: function (a) {
                      return Ext.foo.Bar.prototype.method.call(this, a*2);
                             a*2;
                   }
            }]




Wednesday, November 2, 2011
Methods in configs - 4.0

            items: [ {
               xtype: ‘foo’,

                   method: function (a) {
                      return Ext.foo.Bar.prototype.method.call(this, a*2);
                             a*2;
                   }
            }]




                  Messy if you need to call original method!

Wednesday, November 2, 2011
xhooks

            items: [ {
               xtype: ‘foo’,

                   xhooks: {
                      method: function (a) {
                         return this.callParent([a * 2]);
                      }
                   }
            }]




Wednesday, November 2, 2011
Q&A


                              Don Griffin
                              don@sencha.com
                              @dongryphon
                              dongryphon (forum)

Wednesday, November 2, 2011

Mais conteúdo relacionado

Semelhante a Ext JS 4.1: Layouts, Performance, and API updates

Introducing Sencha Touch 2
Introducing Sencha Touch 2Introducing Sencha Touch 2
Introducing Sencha Touch 2Sencha
 
A Look at the Future of HTML5
A Look at the Future of HTML5A Look at the Future of HTML5
A Look at the Future of HTML5Tim Wright
 
Conquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JSConquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JSCaridy Patino
 
Dollars and Dates are Killing Agile
Dollars and Dates are Killing AgileDollars and Dates are Killing Agile
Dollars and Dates are Killing AgileChris Sterling
 
Clouds against the Floods (RubyConfBR2011)
Clouds against the Floods (RubyConfBR2011) Clouds against the Floods (RubyConfBR2011)
Clouds against the Floods (RubyConfBR2011) Leonardo Borges
 
Documenting with JSDuck
Documenting with JSDuckDocumenting with JSDuck
Documenting with JSDuckSencha
 
WebGL Fundamentals
WebGL FundamentalsWebGL Fundamentals
WebGL FundamentalsSencha
 
3D in the Browser via WebGL: It's Go Time
3D in the Browser via WebGL: It's Go Time 3D in the Browser via WebGL: It's Go Time
3D in the Browser via WebGL: It's Go Time Pascal Rettig
 
Greach 2011 - Engrandeciendo Grails con MongoDB
Greach 2011 - Engrandeciendo Grails con MongoDBGreach 2011 - Engrandeciendo Grails con MongoDB
Greach 2011 - Engrandeciendo Grails con MongoDBgreach_es
 
The Fast, The Slow and the Lazy
The Fast, The Slow and the LazyThe Fast, The Slow and the Lazy
The Fast, The Slow and the LazyMaurício Linhares
 
Ruby hollywood
Ruby hollywoodRuby hollywood
Ruby hollywoodehuard
 
Monitoring is easy, why are we so bad at it presentation
Monitoring is easy, why are we so bad at it  presentationMonitoring is easy, why are we so bad at it  presentation
Monitoring is easy, why are we so bad at it presentationTheo Schlossnagle
 
Migrating from Ext GWT 2.x to 3.0
Migrating from Ext GWT 2.x to 3.0Migrating from Ext GWT 2.x to 3.0
Migrating from Ext GWT 2.x to 3.0Sencha
 
Cassandra 1.0 and the future of big data (Cassandra Tokyo 2011)
Cassandra 1.0 and the future of big data (Cassandra Tokyo 2011)Cassandra 1.0 and the future of big data (Cassandra Tokyo 2011)
Cassandra 1.0 and the future of big data (Cassandra Tokyo 2011)jbellis
 
Building the cloud
Building the cloudBuilding the cloud
Building the cloudBoris Quiroz
 

Semelhante a Ext JS 4.1: Layouts, Performance, and API updates (20)

Introducing Sencha Touch 2
Introducing Sencha Touch 2Introducing Sencha Touch 2
Introducing Sencha Touch 2
 
A Look at the Future of HTML5
A Look at the Future of HTML5A Look at the Future of HTML5
A Look at the Future of HTML5
 
Caridy patino - node-js
Caridy patino - node-jsCaridy patino - node-js
Caridy patino - node-js
 
Conquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JSConquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JS
 
Dollars and Dates are Killing Agile
Dollars and Dates are Killing AgileDollars and Dates are Killing Agile
Dollars and Dates are Killing Agile
 
Clouds against the Floods (RubyConfBR2011)
Clouds against the Floods (RubyConfBR2011) Clouds against the Floods (RubyConfBR2011)
Clouds against the Floods (RubyConfBR2011)
 
Documenting with JSDuck
Documenting with JSDuckDocumenting with JSDuck
Documenting with JSDuck
 
What's Cooking in Xtext 2.0
What's Cooking in Xtext 2.0What's Cooking in Xtext 2.0
What's Cooking in Xtext 2.0
 
WebGL Fundamentals
WebGL FundamentalsWebGL Fundamentals
WebGL Fundamentals
 
ThingDOC
ThingDOCThingDOC
ThingDOC
 
3D in the Browser via WebGL: It's Go Time
3D in the Browser via WebGL: It's Go Time 3D in the Browser via WebGL: It's Go Time
3D in the Browser via WebGL: It's Go Time
 
Greach 2011 - Engrandeciendo Grails con MongoDB
Greach 2011 - Engrandeciendo Grails con MongoDBGreach 2011 - Engrandeciendo Grails con MongoDB
Greach 2011 - Engrandeciendo Grails con MongoDB
 
The Fast, The Slow and the Lazy
The Fast, The Slow and the LazyThe Fast, The Slow and the Lazy
The Fast, The Slow and the Lazy
 
Ruby hollywood
Ruby hollywoodRuby hollywood
Ruby hollywood
 
Monitoring is easy, why are we so bad at it presentation
Monitoring is easy, why are we so bad at it  presentationMonitoring is easy, why are we so bad at it  presentation
Monitoring is easy, why are we so bad at it presentation
 
Namesmatter
NamesmatterNamesmatter
Namesmatter
 
Migrating from Ext GWT 2.x to 3.0
Migrating from Ext GWT 2.x to 3.0Migrating from Ext GWT 2.x to 3.0
Migrating from Ext GWT 2.x to 3.0
 
Cassandra 1.0 and the future of big data (Cassandra Tokyo 2011)
Cassandra 1.0 and the future of big data (Cassandra Tokyo 2011)Cassandra 1.0 and the future of big data (Cassandra Tokyo 2011)
Cassandra 1.0 and the future of big data (Cassandra Tokyo 2011)
 
Flash for Dingser
Flash for DingserFlash for Dingser
Flash for Dingser
 
Building the cloud
Building the cloudBuilding the cloud
Building the cloud
 

Mais de 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: 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: 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: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...Sencha
 
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
 
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
 

Mais de 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: 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: 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: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
 
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
 
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...
 

Último

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
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 

Último (20)

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
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 

Ext JS 4.1: Layouts, Performance, and API updates

  • 2. EXT JS 4.1 What’s New Don Griffin Wednesday, November 2, 2011
  • 3. Forum dongryphon Wednesday, November 2, 2011
  • 4. Twitter @dongryphon Wednesday, November 2, 2011
  • 5. email don@sencha.com Wednesday, November 2, 2011
  • 7. Performance Grid API Enhancements Wednesday, November 2, 2011
  • 10. load layout DOM Many Aspects DOM initialization rendering DOM Wednesday, November 2, 2011
  • 11. DOM load layout DOM security database Many Aspects DOM ajax initialization rendering validation DOM Wednesday, November 2, 2011
  • 13. Measurement Required Chrome: Profiler, Speed Tracer Firefox: dynaTrace, Firebug IE: dynaTrace, IE8+ Profiler Safari: Developer Tools Profiler Wednesday, November 2, 2011
  • 14. Themes Example - 4.0.7 (IE8) Wednesday, November 2, 2011
  • 15. Themes Example - 4.0.7 (IE8) 4.0.7 Wednesday, November 2, 2011
  • 16. Themes Example - 4.0.7 (IE8) Load 300 6% 4.0.7 Wednesday, November 2, 2011
  • 17. Themes Example - 4.0.7 (IE8) Load 300 6% 7% Initialize 320 4.0.7 Wednesday, November 2, 2011
  • 18. Themes Example - 4.0.7 (IE8) Load 300 6% 7% Initialize 320 36% Rendering 1680 4.0.7 Wednesday, November 2, 2011
  • 19. Themes Example - 4.0.7 (IE8) Layout Load 300 2400 51% 6% 7% Initialize 320 4700 36% Rendering 1680 4.0.7 Wednesday, November 2, 2011
  • 21. Cost is spread across the Page Life Cycle Wednesday, November 2, 2011
  • 22. Cost is spread across the Page Life Cycle Wednesday, November 2, 2011
  • 23. Cost is spread across the Page Life Cycle Load Initialize Render Layout Wednesday, November 2, 2011
  • 28. Load Initialize Wednesday, November 2, 2011
  • 32. Themes - Ext JS 3.4 Wednesday, November 2, 2011
  • 33. Themes - Ext JS 3.4 148 components in 50 containers Wednesday, November 2, 2011
  • 34. Themes - Ext JS 4.x Wednesday, November 2, 2011
  • 35. Themes - Ext JS 4.x 148 271 components in 50 97 containers Wednesday, November 2, 2011
  • 37. Components & Containers have a cost Wednesday, November 2, 2011
  • 38. Observables listeners fireEvents Wednesday, November 2, 2011
  • 39. Load Initialize Rendering Wednesday, November 2, 2011
  • 41. Components HTML Wednesday, November 2, 2011
  • 42. panel comp container Wednesday, November 2, 2011
  • 43. el panel render panel comp comp container container Wednesday, November 2, 2011
  • 44. Rendering in 4.0 Wednesday, November 2, 2011
  • 46. panel render comp onRender container Wednesday, November 2, 2011
  • 47. el panel render comp onRender createElement container Wednesday, November 2, 2011
  • 48. el panel render comp onRender createElement renderTpl container Wednesday, November 2, 2011
  • 49. el panel render comp onRender createElement renderTpl container renderSelectors Wednesday, November 2, 2011
  • 50. el panel render comp onRender createElement renderTpl container renderSelectors afterRender Wednesday, November 2, 2011
  • 51. el panel render comp onRender createElement renderTpl container renderSelectors afterRender Wednesday, November 2, 2011
  • 52. Rendering in 4.1 Wednesday, November 2, 2011
  • 54. panel render comp beforeRender renderTpl container Wednesday, November 2, 2011
  • 55. panel render comp beforeRender renderTpl container Wednesday, November 2, 2011
  • 56. el panel render comp beforeRender renderTpl innerHTML container Wednesday, November 2, 2011
  • 57. el panel render comp beforeRender renderTpl innerHTML container onRender Wednesday, November 2, 2011
  • 58. el panel render comp beforeRender renderTpl innerHTML container onRender renderSelectors afterRender Wednesday, November 2, 2011
  • 59. el panel render comp beforeRender renderTpl innerHTML container onRender renderSelectors afterRender Wednesday, November 2, 2011
  • 60. Load Initialize Render Layout Wednesday, November 2, 2011
  • 61. A Place For Everything and Everything In Its Place Wednesday, November 2, 2011
  • 63. Ext.widget({ xtype: ‘panel’, layout: ‘fit’, title: ‘Text’, items: [{ xtype: ‘component’, html: ‘foo’, width: 100, height: 100 }] }); Wednesday, November 2, 2011
  • 64. Ext.widget({ Ext.widget({ xtype: ‘panel’, xtype: ‘panel’, layout: ‘fit’, layout: ‘fit’, title: ‘Text’, dockedItems: [{ items: [{ xtype: ‘header’, xtype: ‘component’, text: ‘Text’, html: ‘foo’, dock: ‘top’ width: 100, }], height: 100 items: [{ }] xtype: ‘component’, }); html: ‘foo’, width: 100, height: 100 }] }); Wednesday, November 2, 2011
  • 65. Text foo Wednesday, November 2, 2011
  • 66. Text foo Wednesday, November 2, 2011
  • 67. Text foo Wednesday, November 2, 2011
  • 68. Text ha foo wa Wednesday, November 2, 2011
  • 69. Text ha foo wa Wednesday, November 2, 2011
  • 70. wb = wa Text ha foo wa Wednesday, November 2, 2011
  • 71. wb = wa Text hb ha foo wa Wednesday, November 2, 2011
  • 72. wb = wa Text hb ha foo wa Wednesday, November 2, 2011
  • 73. wb = wa Text hb hc = ha+hb ha foo +fc wa wc = wa + fc Wednesday, November 2, 2011
  • 74. First Rule of Speed Wednesday, November 2, 2011
  • 76. C$$ Calculations Are Expensive Wednesday, November 2, 2011
  • 78. ... therefore ... Wednesday, November 2, 2011
  • 80. Browsers Cache Results * Wednesday, November 2, 2011
  • 81. Browsers Cache Results * * - DOM Writes Invalidate The Cache ! Wednesday, November 2, 2011
  • 82. Write + Read = Reflow Wednesday, November 2, 2011
  • 83. Second Rule of Speed Wednesday, November 2, 2011
  • 84. Apps Have More Than One Panel! Wednesday, November 2, 2011
  • 85. el panel comp container Wednesday, November 2, 2011
  • 86. component (3.x) el panel comp container Wednesday, November 2, 2011
  • 87. container (4.0) component (3.x) el panel comp container Wednesday, November 2, 2011
  • 88. container (4.0) global (4.1) component (3.x) el layout panel context comp container Wednesday, November 2, 2011
  • 89. Minimizing Reflows var maxHt = 0, n = elements.length, i; for (i=0; i < n; ++i) { elements[i].setWidth(w); maxHt = Math.max(maxHt, elements[i].getHeight()); } for (i=0; i < n; ++i) { elements[i].setHeight(maxHt); } Wednesday, November 2, 2011
  • 90. Minimizing Reflows var maxHt = 0, n = elements.length, i; for (i=0; i < n; ++i) { elements[i].setWidth(w); maxHt = Math.max(maxHt, elements[i].getHeight()); } for (i=0; i < n; ++i) { elements[i].setHeight(maxHt); } n+1 reflows Wednesday, November 2, 2011
  • 91. Minimizing Reflows var maxHt = 0, var maxHt = 0, n = elements.length, n = elements.length, i; i; for (i=0; i < n; ++i) { for (i=0; i < n; ++i) { elements[i].setWidth(w); elements[i].setWidth(w); maxHt = Math.max(maxHt, } elements[i].getHeight()); } for (i=0; i < n; ++i) { maxHt = Math.max(maxHt, for (i=0; i < n; ++i) { elements[i].getHeight()); elements[i].setHeight(maxHt); } } for (i=0; i < n; ++i) { elements[i].setHeight(maxHt); } n+1 reflows Wednesday, November 2, 2011
  • 92. Minimizing Reflows var maxHt = 0, var maxHt = 0, n = elements.length, n = elements.length, i; i; for (i=0; i < n; ++i) { for (i=0; i < n; ++i) { elements[i].setWidth(w); elements[i].setWidth(w); maxHt = Math.max(maxHt, } elements[i].getHeight()); } for (i=0; i < n; ++i) { maxHt = Math.max(maxHt, for (i=0; i < n; ++i) { elements[i].getHeight()); elements[i].setHeight(maxHt); } } for (i=0; i < n; ++i) { elements[i].setHeight(maxHt); } n+1 reflows 2 reflows Wednesday, November 2, 2011
  • 94. Leverage Layout Dependency Data Wednesday, November 2, 2011
  • 96. Themes Example - 4.1 (IE8) Wednesday, November 2, 2011
  • 97. Themes Example - 4.1 (IE8) 4.0.7 4.1 Wednesday, November 2, 2011
  • 98. Themes Example - 4.1 (IE8) 300 Load 200 8% 4.0.7 4.1 Wednesday, November 2, 2011
  • 99. Themes Example - 4.1 (IE8) 300 Load 200 8% 10% Initialization 320 240 4.0.7 4.1 Wednesday, November 2, 2011
  • 100. Themes Example - 4.1 (IE8) 300 Load 200 8% 10% Initialization 320 43% 240 Rendering 4.0.7 1680 4.1 1035 Wednesday, November 2, 2011
  • 101. Themes Example - 4.1 (IE8) Layout 300 2400 39% Load 200 945 8% 10% 4700 Initialization 320 43% 240 2420 Rendering 4.0.7 1680 4.1 1035 Wednesday, November 2, 2011
  • 102. Significantly faster than 4.0 ! Wednesday, November 2, 2011
  • 103. But not faster than 3.4... Wednesday, November 2, 2011
  • 104. But not faster than 3.4... Yet Wednesday, November 2, 2011
  • 106. Further Investigation Convert Layouts into CSS... where possible Optimize Class Creation Optimize DOM Event Binding Wednesday, November 2, 2011
  • 108. Native Scrolling! Wednesday, November 2, 2011
  • 109. momentum friction Native Scrolling! acceleration Wednesday, November 2, 2011
  • 110. What Could Be Better?!? Wednesday, November 2, 2011
  • 111. Native Scrolling with Buffering! Wednesday, November 2, 2011
  • 112. Is There More? Wednesday, November 2, 2011
  • 113. Native Infinite Scrolling! Wednesday, November 2, 2011
  • 115. Optimized Column Reordering Wednesday, November 2, 2011
  • 120. North W Multiple regions E e a s s t t South Wednesday, November 2, 2011
  • 121. North W W Multiple regions E E e s e s of a s a s t t t t the same type South Wednesday, November 2, 2011
  • 122. Control Space Priority Wednesday, November 2, 2011
  • 123. W Control E e a s s t t Space Priority Wednesday, November 2, 2011
  • 124. North W Control E E e W a a s e s s t s t t t Space Priority South Wednesday, November 2, 2011
  • 125. Regions can be added and removed dynamically Wednesday, November 2, 2011
  • 127. Foundational to Ext JS Wednesday, November 2, 2011
  • 129. XTemplate compiles faster... runs faster... is debuggable... Wednesday, November 2, 2011
  • 130. XTemplate compiles faster... runs faster... is debuggable... and more powerful! Wednesday, November 2, 2011
  • 131. Compiles To A Function Wednesday, November 2, 2011
  • 132. <tpl> <ul> <tpl for=”x”> <li>{fname} <tpl if=”lname”> {lname} <tpl else> (None) </tpl> </li> </tpl> </ul> </tpl> Wednesday, November 2, 2011
  • 133. <tpl> function tplFn (out, values..) { <ul> out.push(’<ul>’); <tpl for=”x”> for (var n in values.x) { <li>{fname} var v2 = values.x[n]; <tpl if=”lname”> out.push(’<li>’); {lname} out.push(v2.fname); <tpl else> if (v2.lname) { (None) out.push(v2.lname); </tpl> } else { </li> out.push(‘(None)’); </tpl> } </ul> } </tpl> out.push(‘</li>’); } out.push(‘</ul>’); } Wednesday, November 2, 2011
  • 135. <tpl if="age == 3"> {x} <tpl elseif=”age == 2”> {y} <tpl else> {z} </tpl> Wednesday, November 2, 2011
  • 136. <tpl switch="age"> <tpl case="3" case="4"> <p>{name} is 3 or 4</p> <tpl case="2"> <p>{name} is two</p> <tpl default> <p>{name} is {age}!</p> </tpl> Wednesday, November 2, 2011
  • 138. <tpl> {% var i=0; %} <tpl for=”x”> {name} {% if (++i==9) break; %} </tpl> </tpl> Wednesday, November 2, 2011
  • 139. <tpl> function tplFn (out, values..) { {% var i=0; %} var i=0; <tpl for=”x”> for (var n in values.x) { {name} out.push(v2.name); {% if (++i==9) break; %} if (++i == 9) break; </tpl> } </tpl> } Wednesday, November 2, 2011
  • 141. var tpl = new Ext.XTemplate(...); // This: var s = tpl.apply(data); // is equivalent to: var a = []; tpl.applyOut(a, data); s = a.join(‘’); Wednesday, November 2, 2011
  • 143. Overrides Ext.define(‘My.patches.GridOverride’, { override: ‘Ext.grid.Panel’, initComponent: function () { this.callParent(); } }); ------------------- Ext.define(‘My.app.App’, { requires: [ ‘My.patches.*’ ], ... }); Wednesday, November 2, 2011
  • 144. Overrides Ext.define(‘My.patches.GridOverride’, { Named and used override: ‘Ext.grid.Panel’, like a normal class initComponent: function () { this.callParent(); } }); ------------------- Ext.define(‘My.app.App’, { requires: [ ‘My.patches.*’ ], ... }); Wednesday, November 2, 2011
  • 145. Overrides Ext.define(‘My.patches.GridOverride’, { Named and used override: ‘Ext.grid.Panel’, like a normal class initComponent: function () { this.callParent(); } }); Only added to the ------------------- build if the target Ext.define(‘My.app.App’, { class is required requires: [ ‘My.patches.*’ ], ... }); Wednesday, November 2, 2011
  • 146. Ext.create/widget 4.0 Ext.create(‘Ext.grid.Panel’, { ... config ... }); // or Ext.widget(‘grid’, { ... config ... }); Wednesday, November 2, 2011
  • 147. Ext.create/widget 4.0 4.1 Ext.create(‘Ext.grid.Panel’, { Ext.create({ xclass: ‘Ext.grid.Panel’, ... config ... ... config ... }); }); // or // or Ext.widget(‘grid’, { Ext.widget({ xtype: ‘grid’., ... config ... ... config ... }); }); Wednesday, November 2, 2011
  • 148. Methods in configs - 4.0 items: [ { xtype: ‘foo’, method: function (a) { return Ext.foo.Bar.prototype.method.call(this, a*2); a*2; } }] Wednesday, November 2, 2011
  • 149. Methods in configs - 4.0 items: [ { xtype: ‘foo’, method: function (a) { return Ext.foo.Bar.prototype.method.call(this, a*2); a*2; } }] Messy if you need to call original method! Wednesday, November 2, 2011
  • 150. xhooks items: [ { xtype: ‘foo’, xhooks: { method: function (a) { return this.callParent([a * 2]); } } }] Wednesday, November 2, 2011
  • 151. Q&A Don Griffin don@sencha.com @dongryphon dongryphon (forum) Wednesday, November 2, 2011