SlideShare une entreprise Scribd logo
1  sur  148
Télécharger pour lire hors ligne
More Secrets of
JavaScript Libraries
   Nate Koechley, Andrew Dupont,
      Becky Gibson, John Resig


4x 10min talks with Q&A at the end.
Getting Loaded
Easier development. Better performance.
Get & Loader
Easier development. Better performance.
The Problems
JavaScript loading
blocks page rendering.
More les increases blocking.
We know a single le is best:
But in practice...
Widgets & Plugins may
have various prerequisites.
<script   src=quot;jquery/jquery-1.2.2.pack.jsquot;/>
<script   src=quot;jquery/chili/chili.jsquot;/>
<script   src=quot;jquery.cookie.jsquot;/>
<script   src=quot;jquery.clickmenu.pack.jsquot;/>
<script   src=quot;jquery.columnmanager.jsquot;/>
<script   src=quot;yahoo-dom-event.jsquot;/>
<script   src=quot;element-min.jsquot;/>
<script   src=quot;connection-min.jsquot;/>
<script   src=quot;tabview-min.jsquot;/>
Sites often use multiple
unrelated JavaScript les.
<script   src=quot;prototype.jsquot;/>
<script   src=quot;scriptaculous.jsquot;/>
<script   src=quot;csiManager.jsquot;/>
<script   src=quot;StorageManager.jsquot;/>
<script   src=quot;main.jsquot;/>
<script   src=quot;urchin.jsquot;>
Larger projects use
   multiple les for
exibility & optimization
<script   src=quot;yui-base.jsquot;/>
<script   src=quot;oop.jsquot;/>
<script   src=quot;event.jsquot;/>
<script   src=quot;attribute.jsquot;/>
<script   src=quot;base.jsquot;/>
<script   src=quot;dom.jsquot;/>
<script   src=quot;node.jsquot;/>
<script   src=quot;widget.jsquot;/>
<script   src=quot;dd.jsquot;/>
<script   src=quot;slider/slider.js/quot;>
<script src=quot;dd.jsquot;/>

                    dd-ddm-base

                    dd-ddm

                    dd-drag


      dd            dd-proxy

                    dd-constrain

                    dd-drop

                    dd-plugin

                    dd-drop-plugin
Most les are
order-dependent.
Other les aren’t
needed right away.
And it’s nice to easily toggle
 between -raw.js, -min.js,
  and -debug.js versions.
three avors of each
fully-commented
-debug with logging
-min for deployment
So, our goals:
Features
•   Handle prerequisies without duplication
•   Manage order dependency
•   Per-module exibility
•   Fast toggling between avors
•   Continue fetching onDemand
•   Minimize HTTP requests
    and not block rendering
That’s what YUI’s Get
& Loader Utilities do.
They’re partners.
Loader   Get
Combo
Loader   Get
               Handler
Loader            Get              Combo
The “seed” le.                    Parses request.
                 Creates new
                 nodes & src’s.
  Meta data.                      Concats modules
                                      if rst.
                 Non-blocking.
Con g options.
                                   Edge-caches.
                 Cross-domain.
Helpers/Sugar.
                 GET not POST.
Loads anything:

•   Library les
•   Your own les
•   JS, CSS, JSON, ...
•   Urchin.js, badges, includes, ...
Easily de ne your resources
// one or more external modules
// that can be loaded along side of YUI

modules: {
  json_org: {
     fullpath: quot;http://www.json.org/json.jsquot;
  },
  json2_org: {
     fullpath: quot;http://www.json.org/json2.jsquot;
  }
}
And their relationships
modules: {
  dom: {
     requires: ['event'],
     submodules: {
       'dom-base': {
          requires: ['event']
       },
       'dom-style': {
          requires: ['dom-base']
       },
       'dom-screen': {
          requires: ['dom-base', 'dom-style']
       },
       selector: {
          requires: ['dom-base']
       }
     }
  },
With ne-grained control
name
  type
  path
fullpath
requires
optional
supersedes
  after
 rollup
Once the seed is on
    the page:
<script src=quot;yui-min.jsquot;/>
<script>
  YUI().use(quot;sliderquot;, function(Y) {
   // Slider available and ready for use.
  });
</script>
Other cool features
      in Get:
Choose where the nodes go.
Purge After Reading
Bene ts
•   Easy to use.
•   No typos. Less to manage.
•   Much faster performance.
•   Extensive exibility.
•   Nice support for lazy-loading.
•   Library agnostic.
nate@koechley.com
developer.yahoo.com/yui/3/yui/
developer.yahoo.com/yui/3/get/
github.com/yui
Meta-Language
 Frameworks
The code you write is
transformed before a
browser consumes it
Google Web Toolkit
  (turns Java into
    JavaScript)
Pyjamas
(turns Python into
    JavaScript)
Cappuccino
(turns “Objective-J”
  into JavaScript)
Some of them are
  lightweight...
Narrative JS
 (adds “sleep”-like
functionality to JS)
function waitForButton() {
  // do some work

    // create our notifier
    var notifier = new EventNotifier();

    // attach our notifier to the button
    document.getElementById(quot;myButtonquot;).onclick = notifier;

    // wait for the button to be clicked
    notifier.wait->();

    // do more work
}
Google Caja
(turns JavaScript into
   safer JavaScript)
var blogComment = document.createElement('div');
blogComment.innerHTML = quot;<b>user entered text quot; +
quot;which happens to contain a script quot; +
quot;tag.</b><script defer>alert('muahahaa');</scrquot; + quot;ipt>quot;;
document.getElementById(quot;resultquot;).appendChild(blogComment);
___.loadModule({
'instantiate': function (___, IMPORTS___) {
var moduleResult___ = ___.NO_RESULT;
var $v = ___.readImport(IMPORTS___, '$v', {
'getOuters': {
'()': { }
},
'ro': {
'()': { }
},
'so': {
'()': { }
},
'initOuter': {
'()': { }
},
'cm': {
'()': { }
},
's': {
'()': { }
}
});
var $dis = $v.getOuters();
$v.initOuter('onerror');
try {
{
$v.so('blogComment', $v.cm($v.ro('document'),
'createElement', [ 'div' ]));
$v.s($v.ro('blogComment'), 'innerHTML',
'<b>user entered text which happens to contain a script '
+
'tag.</b><script defer>alert('muahahaa');</scr'
+ 'ipt>');
moduleResult___ = $v.cm($v.cm($v.ro('document'),
'getElementById', [ 'result' ]),
'appendChild', [ $v.ro('blogComment') ]);
}
} catch (ex___) {
___.getNewModuleHandler().handleUncaughtException(ex___,
$v.ro('onerror'), 'testbed/', '2');
}
return moduleResult___;
},
'cajolerName': 'com.google.caja',
'cajolerVersion': '3339M',
'cajoledDate': 1237011597543
});
}
Why?
GWT gets to use the
  Java toolset
Cappuccino gets to
introduce new syntax
   and new features
Let’s say you want
     Ruby-style
“catch-all” methods
object.methodName(arg);
object.callMethod(quot;methodNamequot;, arg);
[object methodName];
Fine, but now
you’re more distant
  from the code
Harder to debug
Longer feedback loop
It’s a
thicker abstraction
John’s blog post
    http://is.gd/bKwl
Abstractions leak...
what happens when
 stu goes wrong?
Francisco’s Response
      http://is.gd/aJ36
All frameworks
are abstractions
Yeah, abstractions
leak, but we all use
  them anyway
MORAL:
Abstractions
are trade-o s
Thicker abstractions
have more hassle, but
o er greater rewards
Which way
should you go?
Think about
  up-front cost
and ongoing cost
Use what
makes sense
to your head
Consider:
 We’re “stuck”
with JavaScript
!quot;#$%&'($)%*++quot;,,-.-$-/0



1quot;+20%3-.,'4
5'6'%*++quot;,,-.-$-/0%7quot;#)
819%&quot;.%*++quot;,,-.-$-/0%*(+:-/quot;+/
<'=%>%!quot;#,'4,%?quot;'=$quot;%5'4@/%8A=$quot;Aquot;4/
                                   %
            *++quot;,,-.-$-/0




                                       ;
>B%90%,-/quot;%8C%#++quot;,,-.$quot;
    %D%-/@,%E=%;FGHI




                           >
>B%90%,-/quot;%8C%#++quot;,,-.$quot;
    %D%-/@,%E=%;FGHI




                           F
;B%?quot;'=$quot;%K-/:%5-,#.-$-/-quot;,%)'4@/%E,quot;%A0
                                       %
    ,-/quot;




                                           J
;B%?quot;'=$quot;%K-/:%5-,#.-$-/-quot;,%)'4@/%E,quot;%A0
                                       %
    ,-/quot;




                                           L
MB%*))-4N%*MM0%-,%/''%:#()%#4)%K-$$%(E-4%
    A0%)quot;,-N4




                                            H
MB%*))-4N%*MM0%-,%/''%:#()%#4)%K-$$%(E-4%
    A0%)quot;,-N4




                                            O
MB%*))-4N%*MM0%-,%/''%:#()%#4)%K-$$%(E-4%
    A0%)quot;,-N4



         -,%)'-4N%-/




                                            P
MB%*))-4N%*MM0%-,%/''%:#()%#4)%K-$$%(E-4%
    A0%)quot;,-N4



         -,%)'-4N%-/


                       -,%)'-4N%-/




                                            MQ
MB%*))-4N%*MM0%-,%/''%:#()%#4)%K-$$%(E-4%
    A0%)quot;,-N4



         -,%)'-4N%-/


                       -,%)'-4N%-/


                  R8%-,%)'-4N%-/



                                            MM
*$$%/:quot;,quot;%+'A=#4-quot;,%#(quot;%)'-4N%-/




                                   M;
*!8*%D *++quot;,,-.$quot;%!-+:%84/quot;(4quot;/%*==$-+#/-'4,
     %




                                               M>
*!8*%D%&:#/%-,%-/S
! *++quot;,,-.$quot;%!-+:%84/quot;(4quot;/%*==$-+#/-'4,
! &>T%C=quot;+-U-+#/-'4V%$-2quot;%W<97V%TCCV%X97%quot;/+B
! &-/:-4%?('/'+'$,%Y%Z'(A#/,%&'(2-4N%3('E=%K:-+:%-, %
  =#(/%'U%&*8%D%&quot;.%*++quot;,,-.-$-/0%84-/-#/-[quot;
! 84%7#,/%T#$$%C/#/E,
! 8A=$quot;Aquot;4/quot;)%-4%Z-(quot;U'GV%8O%K-/:%]=quot;(#%#4)%C#U#(-
                                                  %
  E4)quot;(%)quot;[quot;$'=Aquot;4/
! 3#-4-4N%-4+(quot;#,-4N%,E=='(/%.0%.('K,quot;(,V%&quot;.%/''$2-/,%
  #4)%#,,-,/-[quot;%/quot;+:4'$'N-quot;,


                                                          MF
*!8*%][quot;([-quot;K
! *))%('$quot;%,quot;A#4/-+,%/'%,+(-=/quot;)%R8%quot;$quot;Aquot;4/,
! R=)#/quot;%,/#/quot;%-4U'(A#/-'4%)04#A-+#$$0
! 9#2quot;%-/quot;A,%U'+E,#.$quot;%[-#%/#.-4)quot;G%#//(-.E/quot;
! *))%2quot;0.'#()%quot;[quot;4/%:#4)$-4N
  ^ 9-A-+%/:quot;%2quot;0.'#()%.quot;:#[-'(%'U%/:quot;%(-+:%+$-quot;4/%R8
  ^ 9-4-A-_quot;%/#.%2quot;0%4#[-N#/-'4
! *))%$-[quot;%(quot;N-'4%-4U'%#4)%4'/-U-+#/-'4%/'%,E=='(/%*6#G




                                                          MJ
*!8*%G#A=$quot;%D%<(quot;quot;

                      !'$quot;%`%/(quot;quot;
                      a'4%'E/quot;(%+'4/#-4quot;(b


                      !'$quot;%` %
                      /(quot;quot;-/quot;A
                      quot;G=#4)quot;)`/(Equot;
                      a'4%'=quot;4%*U(-+#%4')quot;b
                      !'$quot;%`%/(quot;quot;-/quot;A
                      ,quot;$quot;+/quot;)`/(Equot;
                      a'4%:-N:$-N:/quot;)%N0=/%+:-$)%4')quot;%K-/:%4'%+:-$)(quot;4b




                         !'$quot;%`%/(quot;quot;-/quot;A
                         quot;G=#4)quot;)`U#$,quot;
                         a'4%+$',quot;)%*E,/(#$-#%4')quot;b




                                                               ML
*!8*%!'$quot;,
! $-42                ! #==$-+#/-'4
! +'A.'.'GV%'=/-'4    ! =(quot;,quot;4/#/-'4
! +:quot;+2.'G            ! N('E=
! (#)-'V%(#)-'N('E=   ! N(-)V%N(-)+quot;$$
! .E//'4              ! /#.V%/#.+'4/#-4quot;(V%
                        /#.$-,/V%/#.=#4quot;$
! =('N(quot;,,.#(
                      ! $-,/V%$-,/-/quot;A
! ,$-)quot;(
                      ! Aquot;4E.#(V%Aquot;4E
! ,=-4.E//'4
                      ! /''$.#(
! /(quot;quot;V%/(quot;quot;-/quot;A
                      ! A'(quot;cc
! #$quot;(/

                                              MH
*!8*D%%C/#/quot;,

 C/#/quot;                     e#$Equot;,
 +:quot;+2quot;)                   /(Equot;%d%U#$,quot;%d%A-Gquot;)
 )-,#.$quot;)                  /(Equot;%d%U#$,quot;
 (quot;#)'4$0                  /(Equot;%d%U#$,quot;
 quot;G=#4)quot;)                  /(Equot;%d%U#$,quot;
 [#$Equot;A-4V%[#$Equot;A#GV
                   %       T5*<*
 [#$Equot;4'K
 'K4,V%:#,='=E=            85!Z
 )quot;,+(-.quot;).0B%$#.quot;$$quot;).0   85!Z
 9#40%A'(quot;%ccB
                                                  MO
*!8*%7#4)A#(2%!'$quot;,
! 9#2quot;,%U-4)-4N%#4)%4#[-N#/-4N%/'%,quot;+/-'4,%'U%/:quot;%=#Nquot;
                                                     %
  quot;#,-quot;(
       !quot;quot;#$%&'$()
   ^
       *&))+,
   ^
       -(.quot;#+.+)'&,/
   ^
       -()'+)'$)0(
   ^
       1&$)
   ^
       2&3$4&'$()
   ^
       5+&,%6
   ^




                                                         MP
7#4)A#(2,%G#A=$quot;




                    ;Q
7#4)A#(2,%G#A=$quot;

                    .#44quot;(




                             ;M
7#4)A#(2,%G#A=$quot;

                    .#44quot;(



     f#[-N#/-'4




                             ;;
7#4)A#(2,%G#A=$quot;

                     .#44quot;(



     f#[-N#/-'4

                    9#-4




                              ;>
7#4)A#(2,%G#A=$quot;

                                  .#44quot;(



     f#[-N#/-'4

                             9#-4




                    +'4/quot;4/-4U'


                                           ;F
7#4)A#(2%G#A=$quot;
g)-[%)'6'<0=quot;`h)-6-/B$#0'E/BT'4/quot;4/?#4quot;h%(quot;N-'4`h/'=h      %
         +$#,,`h.#44quot;(h%('$quot;`h.#44quot;(hi
                  g,=#4%+$#,,`h$'N'hi&quot;.*MM0gj,=#4i      %
%% gj)-[igIDD%quot;4)%'U%/'=%DDi
 %
%% g)-[%-)`h$quot;U/h%)'6'<0=quot;`h)-6-/B$#0'E/BT'4/quot;4/?#4quot;h%(quot;N-'4`h$quot;U/h
 %                                                                  %
                  ('$quot;`h4#[-N#/-'4hi
                  gIDD%<(quot;quot;%N'quot;,%:quot;(quot;%DDi
%% gj)-[igIDD%quot;4)%'U%$quot;U/%DDi
 %
%% g)-[%-)`h+'4/quot;4/h%)'6'<0=quot;`h)-6-/B$#0'E/BT'4/quot;4/?#4quot;h%/-/$quot;`hT'4/quot;4/h
 %                                                                       %
                  ('$quot;`hA#-4h%#(-#D$-[quot;`h#,,quot;(/-[quot;h%#(-#D#/'A-+`h/(Equot;h%i
%%%%%%%%          84U'%U('A%,quot;$quot;+/quot;)%/(quot;quot;%-/quot;A%-,%$'#)quot;)%:quot;(quot;
%% gj)-[igIDD%quot;4)%'U%+quot;4/quot;(%DDi
 %
%% g)-[%)'6'<0=quot;`h)-6-/B$#0'E/BT'4/quot;4/?#4quot;h%(quot;N-'4`h.'//'Ah
 %                                                             %
                  ('$quot;`h+'4/quot;4/-4U'h i
                                    %
                  gIDD%U''/quot;(%N'quot;,%:quot;(quot;%DDi
%% gj)-[igIDD%quot;4)%'U%.'//'A%DDi
 %
                                                                       ;J
*!8*%7-[quot;%!quot;N-'4,
! ?quot;(+quot;-[#.$quot;%,quot;+/-'4,%#(quot;%-)quot;4/-U-quot;)%K-/:%(quot;N-'4%('$quot;
! 7-[quot;%-4)-+#/quot;,%(quot;N-'4%-,%E=)#/quot;)
   ^ e#$Equot;,%'Uk%]UUV%?'$-/quot;V%*,,quot;(/-[quot;V%!E)quot;
! */'A-+%-)quot;4/-U-quot;,%/:quot;%quot;G/quot;4/%'U%E=)#/quot;,
   ^ <(Equot;%^%quot;4/-(quot;%(quot;N-'4%-,%E=)#/quot;)%#4)%(quot;$quot;[#4/
   ^ Z#$,quot;%^%'4$0%+:#4Nquot;)%quot;$quot;Aquot;4/%4quot;quot;),%/'%.quot;%=(quot;,quot;4/quot;)%/'%E,quot;(




                                                                  ;L
7-[quot;%!quot;N-'4%G#A=$quot;




                      ;H
7-[quot;%!quot;N-'4%G#A=$quot;
gIDD%Aquot;,,#Nquot;%=(quot;[-quot;K%=#4quot;%DDi

g)-[%-)`hAquot;,,#Nquot;h%)'6'<0=quot;`h)-6-/B$#0'E/BT'4/quot;4/?#4quot;h    %
       (quot;N-'4`h+quot;4/quot;(h%A-4C-_quot;`h;Qh
       ('$quot;`h(quot;N-'4h%#(-#D$-[quot;`h#,,quot;(/-[quot;h%#(-#D#/'A-+`h/(Equot;h%i

              9quot;,,#Nquot;%T'4/quot;4/,%$'#)quot;)%:quot;(quot;

gj)-[i%

gIDD%quot;4)%'U%hAquot;,,#Nquot;h%DDi


                                                              ;O
CEAA#(0
! lC%<''$2-/,%#(quot;%-A=$quot;Aquot;4/-4N%*!8*%D%E,quot;%/:quot;AI
   ^ 5'6'%)-6-/,%#(quot;%#$$%UE$$0%#++quot;,,-.$quot;
! *!8*%A#2quot;,%*6#G%#++quot;,,-.$quot;
! 9#2quot;%0'E(%Kquot;.,-/quot;,%)04#A-+%*f5%#++quot;,,-.$quot;I



                 8A='(/#4+quot;%'U%mquot;0.'#()




                                                  ;P
Performance and
     Testing
     John Resig
Performance
Analyzing Performance
    Optimizing performance is a huge
!
    concern: Faster code = happy users!
    Measure execution time
!

    Loop the code a few times
!

    Measure the di!erence:
!
    ! quot;new Date#.getTimequot;#;
Stack Pro$ling
    jQuery Stack Pro$ler
!

    Look for problematic methods and plugins
!

    http://ejohn.org/blog/deep%pro$ling%
!
    jquery%apps/
Accuracy of
  JavaScript Time
We’re measuring the performance of
 JavaScript from within JavaScript!


  http://ejohn.org/blog/accuracy-of-javascript-time/
15ms intervals ONLY!

     Error Rate of 50-750%!
Performance Tools
    How can we get good numbers?
!

    We have to go straight to the source: Use
!
    the tools the browsers provide.
    Tools:
!
    ! Firebug Pro$ler
    ! Safari Pro$ler
      ! quot;Part of Safari 4#
    ! IE 8 Pro$ler
Firebug Pro$ler
Safari 4 Pro$ler
IE 8 Pro$ler
FireUnit
    A simple JavaScript test suite embedded in
!
    Firebug.
    http://$reunit.org/
!
FireUnit Pro$le Data

                                            {
 fireunit.getProfile();                              quot;timequot;: 8.443,
                                                   quot;callsquot;: 611,
                                                   quot;dataquot;:[
                                                   {
                                                      quot;namequot;:quot;makeArray()quot;,
                                                      quot;callsquot;:1,
                                                      quot;percentquot;:23.58,
                                                      quot;ownTimequot;:1.991,
                                                      quot;timequot;:1.991,
                                                      quot;avgTimequot;:1.991,
                                                      quot;minTimequot;:1.991,
                                                      quot;maxTimequot;:1.991,
                                                      quot;fileNamequot;:quot;jquery.js (line 2059)quot;
                                                   },
                                                   // etc.
http://ejohn.org/blog/function-call-profiling/ ]}
Complexity Analysis
             Analyze complexity rather than raw time
         !

             jQuery Call Count Pro$ler quot;uses FireUnit#
         !

             Method                        Calls           Big-O
.addClass(quot;testquot;);                 542             6n
.addClass(quot;testquot;);                 592             6n
.removeClass(quot;testquot;);              754             8n
.removeClass(quot;testquot;);              610             6n
.css(quot;colorquot;, quot;redquot;);              495             5n
.css({color: quot;redquot;, border: quot;1px   887             9n
solid redquot;});
.remove();                         23772           2n+n2
.append(quot;<p>test</p>quot;);            307             3n
Complexity Analysis
               Reducing call count helps to reduce
           !
               complexity
               Results for 1.3.3:
           !

                        Method                        Calls        Big-O

              .remove();                        298           3n

              .html(quot;<p>test</p>quot;); 507                       5n

              .empty();                         200           2n



http://ejohn.org/blog/function-call-profiling/
Testing
Test Suites
    Automated testing
!

    jQuery, Prototype, Dojo, YUI all have
!
    their own test suites
QUnit
    jQuery&s Test Suite
!
    ! Nice and simple
    ! Works well for asynchronous tests, too.
qUnit Usage
    test(quot;a basic test examplequot;, function() {
!

      ok( true, quot;this test is finequot; );
      var value = quot;helloquot;;
      equals( quot;helloquot;, value, quot;We expect value to be helloquot; );
    });

    module(quot;Module Aquot;);
    test(quot;first test within modulequot;, function() {
      ok( true, quot;all passquot; );
    });
    test(quot;second test within modulequot;, function() {
      ok( true, quot;all passquot; );
    });

    module(quot;Module Bquot;);
    test(quot;some other testquot;, function() {
      expect(1);
      ok( true, quot;wellquot; );
    });
qUnit Output
Choose Your Browsers
Cost / Bene$t




  IE 7     IE 6          FF 3    Safari 3   Opera 9.5
                  Cost          Benefit


         Draw a line in the sand.
Graded Support




   Yahoo Browser Compatibility
Browser Support Grid
           IE      Firefox   Safari   Opera Chrome


Previous   6.0       2.0      3.0      9.5


Current    7.0       3.0      3.2      9.6    1.0


 Next      8.0       3.1      4.0     10.0    2.0

                 jQuery Browser Support
Browser Support Grid
           IE       Firefox   Safari   Opera Chrome


Previous                       3.0      9.5
           6.0        2.0


Current    7.0        3.0      3.2      9.6    1.0


 Next      8.0        3.1      4.0             2.0
                                       10.0

                jQuery 1.3 Browser Support
The Scaling Problem
    The Problem:
!
    ! jQuery has 6 test suites
    ! Run in 11 browsers
    ! quot;Not even including multiple platforms!#

    All need to be run for every commit,
!
    patch, and plugin.
    JavaScript testing doesn&t scale well.
!
Distributed Testing
    Hub server
!

    Clients connect and help run tests
!

    A simple JavaScript client that can be run
!
    in all browsers
    ! Including mobile browsers!


! TestSwarm
FF 3.5 FF 3.5 FF 3.5
                                                  IE 6
                                                         IE 6
       FF 3                                                      IE 6
                                           Op 9
FF 3

                                                                 IE 7

                               TestSwarm
                                                                  IE 7




              Test Suite        Test Suite          Test Suite
Manual Testing
    Push tests to users who follow pre%de$ned
!
    steps
    Answer 'Yes&/&No& questions which are
!
    pushed back to the server.
    An e!ective way to distribute manual test
!
    load to dozens of clients.
TestSwarm.com
    Incentives for top testers quot;t%shirts, books#
!

    Will be opening for testing at the end of
!
    the month
    Help your favorite JavaScript library
!
    become better tested!
    http://testswarm.com
!
Q&A
Please come up to the microphones!

Contenu connexe

Tendances

HTML5: where flash isn't needed anymore
HTML5: where flash isn't needed anymoreHTML5: where flash isn't needed anymore
HTML5: where flash isn't needed anymoreRemy Sharp
 
Building an HTML5 Video Player
Building an HTML5 Video PlayerBuilding an HTML5 Video Player
Building an HTML5 Video PlayerJim Jeffers
 
Maintainable JavaScript 2012
Maintainable JavaScript 2012Maintainable JavaScript 2012
Maintainable JavaScript 2012Nicholas Zakas
 
jQuery Anti-Patterns for Performance & Compression
jQuery Anti-Patterns for Performance & CompressionjQuery Anti-Patterns for Performance & Compression
jQuery Anti-Patterns for Performance & CompressionPaul Irish
 
What's new in Rails 2?
What's new in Rails 2?What's new in Rails 2?
What's new in Rails 2?brynary
 
Building Realtime Apps with Ember.js and WebSockets
Building Realtime Apps with Ember.js and WebSocketsBuilding Realtime Apps with Ember.js and WebSockets
Building Realtime Apps with Ember.js and WebSocketsBen Limmer
 
Keypoints html5
Keypoints html5Keypoints html5
Keypoints html5dynamis
 
Rails 3: Dashing to the Finish
Rails 3: Dashing to the FinishRails 3: Dashing to the Finish
Rails 3: Dashing to the FinishYehuda Katz
 
Opening up the Social Web - Standards that are bridging the Islands
Opening up the Social Web - Standards that are bridging the IslandsOpening up the Social Web - Standards that are bridging the Islands
Opening up the Social Web - Standards that are bridging the IslandsBastian Hofmann
 
OSDC 2009 Rails Turtorial
OSDC 2009 Rails TurtorialOSDC 2009 Rails Turtorial
OSDC 2009 Rails TurtorialYi-Ting Cheng
 
Game Development Using HTML 5
Game Development Using HTML 5Game Development Using HTML 5
Game Development Using HTML 5osa_ora
 
Building a Single Page Application using Ember.js ... for fun and profit
Building a Single Page Application using Ember.js ... for fun and profitBuilding a Single Page Application using Ember.js ... for fun and profit
Building a Single Page Application using Ember.js ... for fun and profitBen Limmer
 
How to actually use promises - Jakob Mattsson, FishBrain
How to actually use promises - Jakob Mattsson, FishBrainHow to actually use promises - Jakob Mattsson, FishBrain
How to actually use promises - Jakob Mattsson, FishBrainCodemotion Tel Aviv
 
Single Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and JasmineSingle Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and JasminePaulo Ragonha
 
#NewMeetup Performance
#NewMeetup Performance#NewMeetup Performance
#NewMeetup PerformanceJustin Cataldo
 

Tendances (20)

HTML5: where flash isn't needed anymore
HTML5: where flash isn't needed anymoreHTML5: where flash isn't needed anymore
HTML5: where flash isn't needed anymore
 
Building an HTML5 Video Player
Building an HTML5 Video PlayerBuilding an HTML5 Video Player
Building an HTML5 Video Player
 
WordPress and Ajax
WordPress and AjaxWordPress and Ajax
WordPress and Ajax
 
HTML 5 & CSS 3
HTML 5 & CSS 3HTML 5 & CSS 3
HTML 5 & CSS 3
 
WordPress APIs
WordPress APIsWordPress APIs
WordPress APIs
 
Maintainable JavaScript 2012
Maintainable JavaScript 2012Maintainable JavaScript 2012
Maintainable JavaScript 2012
 
jQuery Anti-Patterns for Performance & Compression
jQuery Anti-Patterns for Performance & CompressionjQuery Anti-Patterns for Performance & Compression
jQuery Anti-Patterns for Performance & Compression
 
What's new in Rails 2?
What's new in Rails 2?What's new in Rails 2?
What's new in Rails 2?
 
Building Realtime Apps with Ember.js and WebSockets
Building Realtime Apps with Ember.js and WebSocketsBuilding Realtime Apps with Ember.js and WebSockets
Building Realtime Apps with Ember.js and WebSockets
 
Keypoints html5
Keypoints html5Keypoints html5
Keypoints html5
 
Rails 3: Dashing to the Finish
Rails 3: Dashing to the FinishRails 3: Dashing to the Finish
Rails 3: Dashing to the Finish
 
Opening up the Social Web - Standards that are bridging the Islands
Opening up the Social Web - Standards that are bridging the IslandsOpening up the Social Web - Standards that are bridging the Islands
Opening up the Social Web - Standards that are bridging the Islands
 
OSDC 2009 Rails Turtorial
OSDC 2009 Rails TurtorialOSDC 2009 Rails Turtorial
OSDC 2009 Rails Turtorial
 
Game Development Using HTML 5
Game Development Using HTML 5Game Development Using HTML 5
Game Development Using HTML 5
 
Building a Single Page Application using Ember.js ... for fun and profit
Building a Single Page Application using Ember.js ... for fun and profitBuilding a Single Page Application using Ember.js ... for fun and profit
Building a Single Page Application using Ember.js ... for fun and profit
 
前端概述
前端概述前端概述
前端概述
 
Ruby gems
Ruby gemsRuby gems
Ruby gems
 
How to actually use promises - Jakob Mattsson, FishBrain
How to actually use promises - Jakob Mattsson, FishBrainHow to actually use promises - Jakob Mattsson, FishBrain
How to actually use promises - Jakob Mattsson, FishBrain
 
Single Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and JasmineSingle Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and Jasmine
 
#NewMeetup Performance
#NewMeetup Performance#NewMeetup Performance
#NewMeetup Performance
 

Similaire à More Secrets of JavaScript Libraries

Service Oriented Integration With ServiceMix
Service Oriented Integration With ServiceMixService Oriented Integration With ServiceMix
Service Oriented Integration With ServiceMixBruce Snyder
 
Zero to Sixty: AWS Elastic Beanstalk (DMG204) | AWS re:Invent 2013
Zero to Sixty: AWS Elastic Beanstalk (DMG204) | AWS re:Invent 2013Zero to Sixty: AWS Elastic Beanstalk (DMG204) | AWS re:Invent 2013
Zero to Sixty: AWS Elastic Beanstalk (DMG204) | AWS re:Invent 2013Amazon Web Services
 
Plone Interactivity
Plone InteractivityPlone Interactivity
Plone InteractivityEric Steele
 
Rails 3 And The Real Secret To High Productivity Presentation
Rails 3 And The Real Secret To High Productivity PresentationRails 3 And The Real Secret To High Productivity Presentation
Rails 3 And The Real Secret To High Productivity Presentationrailsconf
 
[DSBW Spring 2009] Unit 07: WebApp Design Patterns & Frameworks (3/3)
[DSBW Spring 2009] Unit 07: WebApp Design Patterns & Frameworks (3/3)[DSBW Spring 2009] Unit 07: WebApp Design Patterns & Frameworks (3/3)
[DSBW Spring 2009] Unit 07: WebApp Design Patterns & Frameworks (3/3)Carles Farré
 
JSUG - Spring by Christoph Pickl
JSUG - Spring by Christoph PicklJSUG - Spring by Christoph Pickl
JSUG - Spring by Christoph PicklChristoph Pickl
 
jQuery Internals + Cool Stuff
jQuery Internals + Cool StuffjQuery Internals + Cool Stuff
jQuery Internals + Cool Stuffjeresig
 
Adventurous Merb
Adventurous MerbAdventurous Merb
Adventurous MerbMatt Todd
 
Using Geeklog as a Web Application Framework
Using Geeklog as a Web Application FrameworkUsing Geeklog as a Web Application Framework
Using Geeklog as a Web Application FrameworkDirk Haun
 
Orbitz and Spring Webflow Case Study
Orbitz and Spring Webflow Case StudyOrbitz and Spring Webflow Case Study
Orbitz and Spring Webflow Case StudyMark Meeker
 
Curso Symfony - Clase 4
Curso Symfony - Clase 4Curso Symfony - Clase 4
Curso Symfony - Clase 4Javier Eguiluz
 
The Dojo Build System
The Dojo Build SystemThe Dojo Build System
The Dojo Build Systemklipstein
 
Developing and testing ajax components
Developing and testing ajax componentsDeveloping and testing ajax components
Developing and testing ajax componentsIgnacio Coloma
 
jQuery Performance Rules
jQuery Performance RulesjQuery Performance Rules
jQuery Performance Rulesnagarajhubli
 
Even Faster Web Sites at jQuery Conference '09
Even Faster Web Sites at jQuery Conference '09Even Faster Web Sites at jQuery Conference '09
Even Faster Web Sites at jQuery Conference '09Steve Souders
 

Similaire à More Secrets of JavaScript Libraries (20)

Service Oriented Integration With ServiceMix
Service Oriented Integration With ServiceMixService Oriented Integration With ServiceMix
Service Oriented Integration With ServiceMix
 
Zero to Sixty: AWS Elastic Beanstalk (DMG204) | AWS re:Invent 2013
Zero to Sixty: AWS Elastic Beanstalk (DMG204) | AWS re:Invent 2013Zero to Sixty: AWS Elastic Beanstalk (DMG204) | AWS re:Invent 2013
Zero to Sixty: AWS Elastic Beanstalk (DMG204) | AWS re:Invent 2013
 
Plone Interactivity
Plone InteractivityPlone Interactivity
Plone Interactivity
 
Rails 3 And The Real Secret To High Productivity Presentation
Rails 3 And The Real Secret To High Productivity PresentationRails 3 And The Real Secret To High Productivity Presentation
Rails 3 And The Real Secret To High Productivity Presentation
 
[DSBW Spring 2009] Unit 07: WebApp Design Patterns & Frameworks (3/3)
[DSBW Spring 2009] Unit 07: WebApp Design Patterns & Frameworks (3/3)[DSBW Spring 2009] Unit 07: WebApp Design Patterns & Frameworks (3/3)
[DSBW Spring 2009] Unit 07: WebApp Design Patterns & Frameworks (3/3)
 
JSUG - Spring by Christoph Pickl
JSUG - Spring by Christoph PicklJSUG - Spring by Christoph Pickl
JSUG - Spring by Christoph Pickl
 
jQuery Internals + Cool Stuff
jQuery Internals + Cool StuffjQuery Internals + Cool Stuff
jQuery Internals + Cool Stuff
 
Adventurous Merb
Adventurous MerbAdventurous Merb
Adventurous Merb
 
SearchMonkey
SearchMonkeySearchMonkey
SearchMonkey
 
Using Geeklog as a Web Application Framework
Using Geeklog as a Web Application FrameworkUsing Geeklog as a Web Application Framework
Using Geeklog as a Web Application Framework
 
Satchmo
SatchmoSatchmo
Satchmo
 
Capistrano2
Capistrano2Capistrano2
Capistrano2
 
Orbitz and Spring Webflow Case Study
Orbitz and Spring Webflow Case StudyOrbitz and Spring Webflow Case Study
Orbitz and Spring Webflow Case Study
 
T5 Oli Aro
T5 Oli AroT5 Oli Aro
T5 Oli Aro
 
Php
PhpPhp
Php
 
Curso Symfony - Clase 4
Curso Symfony - Clase 4Curso Symfony - Clase 4
Curso Symfony - Clase 4
 
The Dojo Build System
The Dojo Build SystemThe Dojo Build System
The Dojo Build System
 
Developing and testing ajax components
Developing and testing ajax componentsDeveloping and testing ajax components
Developing and testing ajax components
 
jQuery Performance Rules
jQuery Performance RulesjQuery Performance Rules
jQuery Performance Rules
 
Even Faster Web Sites at jQuery Conference '09
Even Faster Web Sites at jQuery Conference '09Even Faster Web Sites at jQuery Conference '09
Even Faster Web Sites at jQuery Conference '09
 

Plus de jeresig

Does Coding Every Day Matter?
Does Coding Every Day Matter?Does Coding Every Day Matter?
Does Coding Every Day Matter?jeresig
 
Accidentally Becoming a Digital Librarian
Accidentally Becoming a Digital LibrarianAccidentally Becoming a Digital Librarian
Accidentally Becoming a Digital Librarianjeresig
 
2014: John's Favorite Thing (Neo4j)
2014: John's Favorite Thing (Neo4j)2014: John's Favorite Thing (Neo4j)
2014: John's Favorite Thing (Neo4j)jeresig
 
Computer Vision as Art Historical Investigation
Computer Vision as Art Historical InvestigationComputer Vision as Art Historical Investigation
Computer Vision as Art Historical Investigationjeresig
 
Hacking Art History
Hacking Art HistoryHacking Art History
Hacking Art Historyjeresig
 
Using JS to teach JS at Khan Academy
Using JS to teach JS at Khan AcademyUsing JS to teach JS at Khan Academy
Using JS to teach JS at Khan Academyjeresig
 
Applying Computer Vision to Art History
Applying Computer Vision to Art HistoryApplying Computer Vision to Art History
Applying Computer Vision to Art Historyjeresig
 
NYARC 2014: Frick/Zeri Results
NYARC 2014: Frick/Zeri ResultsNYARC 2014: Frick/Zeri Results
NYARC 2014: Frick/Zeri Resultsjeresig
 
EmpireJS: Hacking Art with Node js and Image Analysis
EmpireJS: Hacking Art with Node js and Image AnalysisEmpireJS: Hacking Art with Node js and Image Analysis
EmpireJS: Hacking Art with Node js and Image Analysisjeresig
 
Applying Computer Vision to Art History
Applying Computer Vision to Art HistoryApplying Computer Vision to Art History
Applying Computer Vision to Art Historyjeresig
 
JavaScript Libraries (Ajax Exp 2006)
JavaScript Libraries (Ajax Exp 2006)JavaScript Libraries (Ajax Exp 2006)
JavaScript Libraries (Ajax Exp 2006)jeresig
 
Introduction to jQuery (Ajax Exp 2006)
Introduction to jQuery (Ajax Exp 2006)Introduction to jQuery (Ajax Exp 2006)
Introduction to jQuery (Ajax Exp 2006)jeresig
 
jQuery Recommendations to the W3C (2011)
jQuery Recommendations to the W3C (2011)jQuery Recommendations to the W3C (2011)
jQuery Recommendations to the W3C (2011)jeresig
 
jQuery Open Source Process (RIT 2011)
jQuery Open Source Process (RIT 2011)jQuery Open Source Process (RIT 2011)
jQuery Open Source Process (RIT 2011)jeresig
 
jQuery Open Source Process (Knight Foundation 2011)
jQuery Open Source Process (Knight Foundation 2011)jQuery Open Source Process (Knight Foundation 2011)
jQuery Open Source Process (Knight Foundation 2011)jeresig
 
jQuery Mobile
jQuery MobilejQuery Mobile
jQuery Mobilejeresig
 
jQuery Open Source (Fronteer 2011)
jQuery Open Source (Fronteer 2011)jQuery Open Source (Fronteer 2011)
jQuery Open Source (Fronteer 2011)jeresig
 
Holistic JavaScript Performance
Holistic JavaScript PerformanceHolistic JavaScript Performance
Holistic JavaScript Performancejeresig
 
New Features Coming in Browsers (RIT '09)
New Features Coming in Browsers (RIT '09)New Features Coming in Browsers (RIT '09)
New Features Coming in Browsers (RIT '09)jeresig
 
Introduction to jQuery (Ajax Exp 2007)
Introduction to jQuery (Ajax Exp 2007)Introduction to jQuery (Ajax Exp 2007)
Introduction to jQuery (Ajax Exp 2007)jeresig
 

Plus de jeresig (20)

Does Coding Every Day Matter?
Does Coding Every Day Matter?Does Coding Every Day Matter?
Does Coding Every Day Matter?
 
Accidentally Becoming a Digital Librarian
Accidentally Becoming a Digital LibrarianAccidentally Becoming a Digital Librarian
Accidentally Becoming a Digital Librarian
 
2014: John's Favorite Thing (Neo4j)
2014: John's Favorite Thing (Neo4j)2014: John's Favorite Thing (Neo4j)
2014: John's Favorite Thing (Neo4j)
 
Computer Vision as Art Historical Investigation
Computer Vision as Art Historical InvestigationComputer Vision as Art Historical Investigation
Computer Vision as Art Historical Investigation
 
Hacking Art History
Hacking Art HistoryHacking Art History
Hacking Art History
 
Using JS to teach JS at Khan Academy
Using JS to teach JS at Khan AcademyUsing JS to teach JS at Khan Academy
Using JS to teach JS at Khan Academy
 
Applying Computer Vision to Art History
Applying Computer Vision to Art HistoryApplying Computer Vision to Art History
Applying Computer Vision to Art History
 
NYARC 2014: Frick/Zeri Results
NYARC 2014: Frick/Zeri ResultsNYARC 2014: Frick/Zeri Results
NYARC 2014: Frick/Zeri Results
 
EmpireJS: Hacking Art with Node js and Image Analysis
EmpireJS: Hacking Art with Node js and Image AnalysisEmpireJS: Hacking Art with Node js and Image Analysis
EmpireJS: Hacking Art with Node js and Image Analysis
 
Applying Computer Vision to Art History
Applying Computer Vision to Art HistoryApplying Computer Vision to Art History
Applying Computer Vision to Art History
 
JavaScript Libraries (Ajax Exp 2006)
JavaScript Libraries (Ajax Exp 2006)JavaScript Libraries (Ajax Exp 2006)
JavaScript Libraries (Ajax Exp 2006)
 
Introduction to jQuery (Ajax Exp 2006)
Introduction to jQuery (Ajax Exp 2006)Introduction to jQuery (Ajax Exp 2006)
Introduction to jQuery (Ajax Exp 2006)
 
jQuery Recommendations to the W3C (2011)
jQuery Recommendations to the W3C (2011)jQuery Recommendations to the W3C (2011)
jQuery Recommendations to the W3C (2011)
 
jQuery Open Source Process (RIT 2011)
jQuery Open Source Process (RIT 2011)jQuery Open Source Process (RIT 2011)
jQuery Open Source Process (RIT 2011)
 
jQuery Open Source Process (Knight Foundation 2011)
jQuery Open Source Process (Knight Foundation 2011)jQuery Open Source Process (Knight Foundation 2011)
jQuery Open Source Process (Knight Foundation 2011)
 
jQuery Mobile
jQuery MobilejQuery Mobile
jQuery Mobile
 
jQuery Open Source (Fronteer 2011)
jQuery Open Source (Fronteer 2011)jQuery Open Source (Fronteer 2011)
jQuery Open Source (Fronteer 2011)
 
Holistic JavaScript Performance
Holistic JavaScript PerformanceHolistic JavaScript Performance
Holistic JavaScript Performance
 
New Features Coming in Browsers (RIT '09)
New Features Coming in Browsers (RIT '09)New Features Coming in Browsers (RIT '09)
New Features Coming in Browsers (RIT '09)
 
Introduction to jQuery (Ajax Exp 2007)
Introduction to jQuery (Ajax Exp 2007)Introduction to jQuery (Ajax Exp 2007)
Introduction to jQuery (Ajax Exp 2007)
 

Dernier

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
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
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
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
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
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
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
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
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
 
"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
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 

Dernier (20)

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.
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
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
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
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
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
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
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
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
 
"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
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 

More Secrets of JavaScript Libraries