SlideShare uma empresa Scribd logo
1 de 50
Baixar para ler offline
Web 2.0 with XML
                     24 September 2009
summer school




                     Building Dynamic Web Apps with XML
                     Norman Walsh
                     Mark Logic Corporation




          Licensed under a Creative Commons Attribution-
          Noncommercial-Share Alike 3.0 Unported License   www.xmlsummerschool.com
Learning Objectives
summer school




  Understand the fundamentals of dynamic web applications.
  Learn how to apply web technologies to introduce dynamic
  behavior to your web pages.


       •    HTML
       •    CSS
       •    JavaScript
       •    XML




            Licensed under a Creative Commons Attribution-
                                                             www.xmlsummerschool.com   Slide 2
            Noncommercial-Share Alike 3.0 Unported License
Contents
summer school


  Lecture
  1.    Web 1.0 vs. Web 2.0
  2.    Web standards
  3.    Asynchronous communication
  4.    JavaScript frameworks



  Tutorial Session
  1. Incorporating simple dynamic behavior




          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com   Slide 3
          Noncommercial-Share Alike 3.0 Unported License
summer school




                                                                      Web 1.0 vs. Web 2.0




          Licensed under a Creative Commons Attribution-
          Noncommercial-Share Alike 3.0 Unported License   www.xmlsummerschool.com
Web 1.0
summer school




  •  Very limited designs
       •  No images at first
       •  No CSS
  •  Completely static pages




          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com   Slide 5
          Noncommercial-Share Alike 3.0 Unported License
Web 1.0 “applications”
summer school


  •  The introduction of forms allowed for some
     interactivity:
       •    Initial page provides a form
       •    Client data sent to server
       •    Server does some processing
       •    Results sent back to client
  •  Very heavyweight:
       •  No client-side interaction
       •  Result is always a complete refresh of the whole
          page
  •  Still very limited designs

            Licensed under a Creative Commons Attribution-
                                                             www.xmlsummerschool.com   Slide 6
            Noncommercial-Share Alike 3.0 Unported License
Web 2.0 applications (1)
summer school


  •  Rich designs
       •  Images, icons, colors, gradients, rounded
          corners, drop shadows, …
       •  They (can) look much more like desktop
          applications




          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com   Slide 7
          Noncommercial-Share Alike 3.0 Unported License
Web 2.0 applications (2)
summer school


  •  Fully interactive
       •  Client side: fade-in, fade-out, drag-an-drop, …
       •  Server side: type-ahead, spelling suggestions,
          forms processing…




          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com   Slide 8
          Noncommercial-Share Alike 3.0 Unported License
Web 2.0 applications (3)
summer school


  •  Much more lightweight
       •  Client (perhaps in concert with or server side
          processing) can update different parts of the
          page without updating the whole page




          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com   Slide 9
          Noncommercial-Share Alike 3.0 Unported License
summer school




                                                                                Web standards




          Licensed under a Creative Commons Attribution-
          Noncommercial-Share Alike 3.0 Unported License   www.xmlsummerschool.com
Web 2.0 technologies
summer school


  •  Web standards
       •    HTML
       •    CSS
       •    JavaScript
       •    XML
  •  Proprietary technologies
       •  Flash
       •  Silverlight




            Licensed under a Creative Commons Attribution-
                                                             www.xmlsummerschool.com   Slide 11
            Noncommercial-Share Alike 3.0 Unported License
Browser features
summer school


  •  Web 2.0 applications require specific client
     features
       •  JavaScript
       •  AJAX (XMLHttpRequest object)
       •  CSS




          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com   Slide 12
          Noncommercial-Share Alike 3.0 Unported License
Supported browsers
summer school


  •  Supported by all the major browsers
       •  Firefox and “Gecko”-derived browsers
       •  Safari and “Webkit”-derived browsers
       •  Internet Explorer (to varying degrees, with
          varying bugs)
       •  Opera
  •  Not universally supported
       •  Links and other “text only” browsers
       •  Screen readers
       •  Search engines



          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com   Slide 13
          Noncommercial-Share Alike 3.0 Unported License
What, how, and why?
summer school


  •  What are web pages made of?
  •  How are they made?
  •  How do they work?




          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com   Slide 14
          Noncommercial-Share Alike 3.0 Unported License
HTML
summer school


  •  “Standard” HTML
       •  Universally supported vocabulary
            •  div, span, h1, h2, table, …
       •  Supports a degree of “semantic” markup
            •  Most presentational decisions can be made elsewhere
  •  HTML vs. XHTML
  •  HTML5 vs. HTML vs. XHTML vs. …




          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com   Slide 15
          Noncommercial-Share Alike 3.0 Unported License
CSS
summer school


  •  Applies presentation to HTML
       •    borders, margins
       •    colors
       •    fonts
       •    graphics
  •  Sufficiently powerful for most web applications
  •  Continues to grow in sophistication
       •  Browsers lag by varying amounts




            Licensed under a Creative Commons Attribution-
                                                             www.xmlsummerschool.com   Slide 16
            Noncommercial-Share Alike 3.0 Unported License
JavaScript
summer school


  •  Web browser scripting language
       •  Quite modern and advanced
       •  Defined by ECMA
  •  JavaScript runs in the browser
       •    Extends the browser in application-specific ways
       •    Responds to user interaction
       •    Communicates with the server
       •    Updates underlying HTML and CSS




            Licensed under a Creative Commons Attribution-
                                                             www.xmlsummerschool.com   Slide 17
            Noncommercial-Share Alike 3.0 Unported License
XML
summer school


  •  Declarative markup language
       •  Arbitrary semantic complexity
            •  div, span, book, spreadsheet, widget-description, …
       •  Can be parsed without knowing the tag set
  •  Nearly ubiquitous support
   <book>
     <title>Acme Widget Reference</title>
     <price>13.95</price>
     <cover>http://example.com/cover.jpg</cover>
     <abstract>A reference to the Acme Widgets, what else?
       </abstract>
   </book>



          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com   Slide 18
          Noncommercial-Share Alike 3.0 Unported License
JSON: JavaScript Object Notation
summer school


  •  Native JavaScript notation
       •  Nested name/value pairs
  •  Ubiquitous support in JavaScript clients

  {
      "title" : "Acme Widget Reference",
      "price" : "13.95",
      "cover" : "http://example.com/cover.jpg",
      "abstract": "A reference to the Acme Widgets, what else?"
  }




          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com   Slide 19
          Noncommercial-Share Alike 3.0 Unported License
What is a web page?
summer school




          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com   Slide 20
          Noncommercial-Share Alike 3.0 Unported License
What is a web page?
summer school

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Page Title</title>




</head>
<body>
  <div class="navbar">
    <ul>
      <li>Page 1</li><li>Page 2</li><li>Page 3</li>
    </ul>
  </div>
  <div class="body">
    <h1>Page Title</h1>
    <p>This is a test, this is only a test.</p>
  </div>
</body>
</html>
          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com   Slide 21
          Noncommercial-Share Alike 3.0 Unported License
What is a web page?
summer school

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Page Title</title>




</head>
<body>
  <div class="navbar">
    <ul>
      <li>Page 1</li><li>Page 2</li><li>Page 3</li>
    </ul>
  </div>
  <div class="body">
    <h1>Page Title</h1>
    <p>This is a test, this is only a test.</p>
  </div>
</body>
</html>
                                          An initial                                 model
          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com           Slide 22
          Noncommercial-Share Alike 3.0 Unported License
What is a web page?
summer school

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Page Title</title>


  <script type="text/javascript" src="/js/library.js"></script>
  <script type="text/javascript" src="/js/page.js"></script>
  <script type="text/javascript" src="/js/extra.js"></script>
</head>
<body>                                            Scripts
  <div class="navbar">
    <ul>
      <li>Page 1</li><li>Page 2</li><li>Page 3</li>
    </ul>
  </div>
  <div class="body">
    <h1>Page Title</h1>
    <p>This is a test, this is only a test.</p>
  </div>
</body>
</html>
          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com   Slide 23
          Noncommercial-Share Alike 3.0 Unported License
What is a web page?
summer school

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Page Title</title>                         Stylesheets
  <link rel="stylesheet" type="text/css" href=”/cs/base-style.css" />
  <link rel="stylesheet" type="text/css" href=”/cs/page-style.css" />
  <script type="text/javascript" src="/js/library.js"></script>
  <script type="text/javascript" src="/js/page.js"></script>
  <script type="text/javascript" src="/js/extra.js"></script>
</head>
<body>
  <div class="navbar">
    <ul>
      <li>Page 1</li><li>Page 2</li><li>Page 3</li>
    </ul>
  </div>
  <div class="body">
    <h1>Page Title</h1>
    <p>This is a test, this is only a test.</p>
  </div>
</body>
</html>
          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com   Slide 24
          Noncommercial-Share Alike 3.0 Unported License
What is a web page?
summer school

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Page Title</title>                          Stylesheets
  <link rel="stylesheet" type="text/css" href=”/cs/base-style.css" />
  <link rel="stylesheet" type="text/css" href=”/cs/page-style.css" />
  <script type="text/javascript" src="/js/library.js"></script>
  <script type="text/javascript" src="/js/page.js"></script>
  <script type="text/javascript" src="/js/extra.js"></script>
</head>
<body>                                             Scripts
  <div class="navbar">
    <ul>
      <li>Page 1</li><li>Page 2</li><li>Page 3</li>
    </ul>
  </div>
  <div class="body">
    <h1>Page Title</h1>
    <p>This is a test, this is only a test.</p>
  </div>
</body>
</html>
                                          An initial model
          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com   Slide 25
          Noncommercial-Share Alike 3.0 Unported License
Why do Web 2.0 pages work?
summer school


  •  Standardization
       •    HTML
       •    CSS
       •    JavaScript
       •    XML and/or JSON
  •  More-or-less universal browser support
       •    Firefox
       •    Safari
       •    Opera
       •    Internet Explorer


            Licensed under a Creative Commons Attribution-
                                                             www.xmlsummerschool.com   Slide 26
            Noncommercial-Share Alike 3.0 Unported License
How do Web 2.0 pages work?
summer school


                                                                         •  Parse (X)HTML
                                                                         •  Build a DOM




          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com     Slide 27
          Noncommercial-Share Alike 3.0 Unported License
How do Web 2.0 pages work?
summer school


                                                                         •    Parse (X)HTML
                                                                         •    Build a DOM
                                                                         •    Load CSS
                                                                         •    Attach styles




          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com        Slide 28
          Noncommercial-Share Alike 3.0 Unported License
How do Web 2.0 pages work?
summer school


                                                                         •    Parse (X)HTML
                                                                         •    Build a DOM
                                                                         •    Load CSS
                                                                         •    Attach styles
                                                                         •    Load JavaScript
                                                                         •    Run scripts
                                                                         •    Attach event
                                                                              handlers




          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com         Slide 29
          Noncommercial-Share Alike 3.0 Unported License
How do Web 2.0 pages work?
summer school


                                                                         •    Parse (X)HTML
                                                                         •    Build a DOM
                                                                         •    Load CSS
                                                                         •    Attach styles
                                                                         •    Load JavaScript
                                                                         •    Run scripts
                                                                         •    React to events
                                                                       •        Change DOM
                                                                       •        Change Style
                                              Full disclosure: real    •        Attach new events
                                              life is more complicated
                                              than this                •        Repeat
          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com         Slide 30
          Noncommercial-Share Alike 3.0 Unported License
How do Web 2.0 pages work?
summer school


  •  JavaScript gives the programmer almost
     complete freedom
       •    Add or remove HTML elements
       •    Add, remove, or change CSS properties
       •    Move the input focus, change the cursor
       •    Create new windows
       •    Setup functions to run automatically in response
            to user events
              •  Change of focus
              •  Clicking or typing
       •  Communicate with the server


            Licensed under a Creative Commons Attribution-
                                                             www.xmlsummerschool.com   Slide 31
            Noncommercial-Share Alike 3.0 Unported License
How do Web 2.0 pages work?
summer school


  •  JavaScript gives the programmer almost
     complete freedom
  •  For security purposes, there are some limits:
       •  The same origin policy
       •  Browsers restrict or forbid “cross-site
          scripting” (XSS)




          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com   Slide 32
          Noncommercial-Share Alike 3.0 Unported License
Doing two things at once
summer school


  •  The browser is “single threaded”; it can only
     do one thing at time
  •  How can it respond to multiple situations
     simultaneously?
  •  It can’t, but the JavaScript interpreter fakes it!




          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com   Slide 33
          Noncommercial-Share Alike 3.0 Unported License
Doing two things at once
summer school


  •  The interpreter fakes it with:
  •  Events
       •  Changes to the environment detected by the
          interpreter
       •  “Handlers” are called automatically
       •  When the handler finishes, the interpreter
          resumes whatever it was doing before
  •  And callback functions
       •  Events by another name
       •  Giving the interpreter a handler to call when
          some request is complete


          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com   Slide 34
          Noncommercial-Share Alike 3.0 Unported License
Browser limitations
summer school


  •  Clients can do a lot, but
  •  Clients are ultimately limited
       •  Little memory
       •  Little horsepower
       •  Slow connections to the network
  •  Don’t think so?
       •  Think mobile phone, not desktop
  •  Servers are much less limited
       •  I can upgrade the server
       •  I can’t upgrade your desktop


          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com   Slide 35
          Noncommercial-Share Alike 3.0 Unported License
Overcoming browser limitations
summer school


  •  The goal:
       •  Allow the server to support my web application
       •  Augment (not interfere) with the user
          experience




          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com   Slide 36
          Noncommercial-Share Alike 3.0 Unported License
summer school




                                                     Asynchronous communication




          Licensed under a Creative Commons Attribution-
          Noncommercial-Share Alike 3.0 Unported License   www.xmlsummerschool.com
Asynchronous communication (1)
summer school


•  XMLHttpRequest
     •  The magic behind the curtain
•  Allows the client to construct an HTTP request
     •  http://example.com/get-stock-quote?ticker=GOOG
•  Asks the browser to perform the request
     •  GET
•  Provides a callback or event handler to process
   the response
     •  updateStockTicker()




          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com   Slide 38
          Noncommercial-Share Alike 3.0 Unported License
Asynchronous communication (2)
summer school


  •  Control returns to the browser while the
     request is being processed, so the application
     continues to function normally
  •  The callback function can insert the response
     into the users experience with the application
     in any appropriate way




          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com   Slide 39
          Noncommercial-Share Alike 3.0 Unported License
XMLHttpRequest The Hard Way
summer school


  •  Create an array to hold requests, and build the
     infrastructure to initialize it.
   var xmlReqs = new Array();!
   function ReqObj(type, xmlhttp) { ... }!
   function getReqObj() {!
       var req = false;!
       if (window.XMLHttpRequest) { // native branch!
           req = new XMLHttpRequest();!
       } else if (window.ActiveXObject) { // IE branch!
           req = new ActiveXObject("Microsoft.XMLHTTP");!
       }!
       var reqobj = new ReqObj("busy", req);!
       xmlReqs.push(reqobj);!
       return reqobj;!
   }!


          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com   Slide 40
          Noncommercial-Share Alike 3.0 Unported License
XMLHttpRequest The Hard Way
summer school


  •  Write a function to submit the request
   function loadXMLDoc(url) {!
       var req = getReqObj();!
       if (window.XMLHttpRequest) { // native branch!
           req.xmlhttp.onreadystatechange = procReqChange;!
           req.xmlhttp.open("GET", url, true);!
           req.xmlhttp.send(null);!
       } else if (window.ActiveXObject) { // IE branch!
           req.xmlhttp.onreadystatechange = procReqChange;!
           req.xmlhttp.open("GET", url, true);!
           req.xmlhttp.send();!
       }!
   }!




          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com   Slide 41
          Noncommercial-Share Alike 3.0 Unported License
XMLHttpRequest The Hard Way
summer school


  •  Write the callback handler and the function to
     process the values returned by the call
   function processReqChange() {!
        for (var i = 0; i < xmlReqs.length; i++) {!
            if (xmlReqs[i].type == "busy" !
                && xmlReqs[i].xmlhttp.readyState == 4) {!
                handleResponse(xmlReqs[i].xmlhttp);!
                xmlReqs[i].type = "ready";!
   }}}!

   function handleResponse(req) {!
       if (req.status == 200) {!
          var elem = document.getElementById(“someid”)!
          // ...processing statements go here... !
       } else { ... }!
   }!

          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com   Slide 42
          Noncommercial-Share Alike 3.0 Unported License
XMLHttpRequest The Easy Way
summer school


  •  Include a JavaScript framework, like jQuery
  •  Use it
   $(“#someid”).get(url,!
                     { param1: value1,!
                       param2: value2 },!
                     handleResponse);!

   function handleResponse(text,status,reqobj) {!
      ...!
   }!




          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com   Slide 43
          Noncommercial-Share Alike 3.0 Unported License
summer school




                                                                   JavaScript frameworks




          Licensed under a Creative Commons Attribution-
          Noncommercial-Share Alike 3.0 Unported License   www.xmlsummerschool.com
JavaScript frameworks
summer school


  There are lots to choose from:
       script.aculo.us
       Prototype
       jQuery
       MochiKit
       Railto
       Dojo Toolkit
       SproutCore
       midori
  •  My choice, having tried a few but by no means
     all of them, is jQuery

          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com   Slide 45
          Noncommercial-Share Alike 3.0 Unported License
Why I like jQuery
summer school


  •    Robust
  •    Concise
  •    Active developer community
  •    Large inventory of extensions




          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com   Slide 46
          Noncommercial-Share Alike 3.0 Unported License
CSS frameworks
summer school


  •  There are lots of CSS frameworks as well:
       •    Blueprint
       •    Baseline CSS
       •    YUI Grid CSS
       •    Elements CSS Frameworks
       •    CleverCSS
       •    Tripoli CSS Framework




            Licensed under a Creative Commons Attribution-
                                                             www.xmlsummerschool.com   Slide 47
            Noncommercial-Share Alike 3.0 Unported License
summer school




                                                                              Tutorial Session




          Licensed under a Creative Commons Attribution-
          Noncommercial-Share Alike 3.0 Unported License   www.xmlsummerschool.com
Adding interactivity
summer school


     Imagine that you’ve written a web service
     which accepts a pair of lat/long coordinates
     and returns a list of photographs contained
     within that rectangle
     Write a client application that
  •  Allows users to enter coordinates
  •  Validates the coordinates
  •  Updates the page with a list of matching
     photographs




          Licensed under a Creative Commons Attribution-
                                                           www.xmlsummerschool.com   Slide 49
          Noncommercial-Share Alike 3.0 Unported License
summer school




                                                                               Any questions?

                                                                      Thank you for your attention




          Licensed under a Creative Commons Attribution-
          Noncommercial-Share Alike 3.0 Unported License   www.xmlsummerschool.com

Mais conteúdo relacionado

Destaque

What We are Learning About DNS Security: DNSSEC and Much More..
What We are Learning About DNS Security:  DNSSEC and Much More..What We are Learning About DNS Security:  DNSSEC and Much More..
What We are Learning About DNS Security: DNSSEC and Much More..Neustar, Inc.
 
Jeni Web Programming Bab 3 Advanced Servlets
Jeni Web Programming Bab 3 Advanced ServletsJeni Web Programming Bab 3 Advanced Servlets
Jeni Web Programming Bab 3 Advanced ServletsIndividual Consultants
 
Fall_2008_CS601_W1_Tyngsboro
Fall_2008_CS601_W1_TyngsboroFall_2008_CS601_W1_Tyngsboro
Fall_2008_CS601_W1_Tyngsborotutorialsruby
 
Real Time Link Building Strategies
Real Time Link Building StrategiesReal Time Link Building Strategies
Real Time Link Building Strategiesshuey03
 
Аренда ПО Microsoft: как предлагать и как продавать (Russian), Alexey Kovyazin
Аренда ПО Microsoft: как предлагать и как продавать (Russian), Alexey KovyazinАренда ПО Microsoft: как предлагать и как продавать (Russian), Alexey Kovyazin
Аренда ПО Microsoft: как предлагать и как продавать (Russian), Alexey Kovyazinguest8b0a46
 

Destaque (8)

What We are Learning About DNS Security: DNSSEC and Much More..
What We are Learning About DNS Security:  DNSSEC and Much More..What We are Learning About DNS Security:  DNSSEC and Much More..
What We are Learning About DNS Security: DNSSEC and Much More..
 
Jeni Web Programming Bab 3 Advanced Servlets
Jeni Web Programming Bab 3 Advanced ServletsJeni Web Programming Bab 3 Advanced Servlets
Jeni Web Programming Bab 3 Advanced Servlets
 
Fall_2008_CS601_W1_Tyngsboro
Fall_2008_CS601_W1_TyngsboroFall_2008_CS601_W1_Tyngsboro
Fall_2008_CS601_W1_Tyngsboro
 
Presentatie Albert Roos Twinfield Masterclass #TWFMC
Presentatie Albert Roos Twinfield Masterclass #TWFMCPresentatie Albert Roos Twinfield Masterclass #TWFMC
Presentatie Albert Roos Twinfield Masterclass #TWFMC
 
Ncap
NcapNcap
Ncap
 
extending-php
extending-phpextending-php
extending-php
 
Real Time Link Building Strategies
Real Time Link Building StrategiesReal Time Link Building Strategies
Real Time Link Building Strategies
 
Аренда ПО Microsoft: как предлагать и как продавать (Russian), Alexey Kovyazin
Аренда ПО Microsoft: как предлагать и как продавать (Russian), Alexey KovyazinАренда ПО Microsoft: как предлагать и как продавать (Russian), Alexey Kovyazin
Аренда ПО Microsoft: как предлагать и как продавать (Russian), Alexey Kovyazin
 

Semelhante a web20

Meetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech PeopleMeetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech PeopleIT Arena
 
Enhancing Spring MVC Web Applications Progressively with Spring JavaScript
Enhancing Spring MVC Web Applications Progressively with Spring JavaScriptEnhancing Spring MVC Web Applications Progressively with Spring JavaScript
Enhancing Spring MVC Web Applications Progressively with Spring JavaScriptJeremy Grelle
 
Isomorphic web application
Isomorphic web applicationIsomorphic web application
Isomorphic web applicationOliver N
 
The Dark Side of Single Page Applications
The Dark Side of Single Page ApplicationsThe Dark Side of Single Page Applications
The Dark Side of Single Page ApplicationsDor Kalev
 
TSSJS2010 Presenatation on: Performance Anti Patterns In Ajax Applications
TSSJS2010 Presenatation on: Performance Anti Patterns In Ajax ApplicationsTSSJS2010 Presenatation on: Performance Anti Patterns In Ajax Applications
TSSJS2010 Presenatation on: Performance Anti Patterns In Ajax Applicationsguestc75cdc
 
Performance anti patterns in ajax applications
Performance anti patterns in ajax applicationsPerformance anti patterns in ajax applications
Performance anti patterns in ajax applicationsSergeyChernyshev
 
Intro to SPA using JavaScript & ASP.NET
Intro to SPA using JavaScript & ASP.NETIntro to SPA using JavaScript & ASP.NET
Intro to SPA using JavaScript & ASP.NETAlan Hecht
 
Web 2.0 Application development with Ruby on Rails
Web 2.0 Application development with Ruby on RailsWeb 2.0 Application development with Ruby on Rails
Web 2.0 Application development with Ruby on RailsAmit Mathur
 
1 web 2_lesson
1 web 2_lesson1 web 2_lesson
1 web 2_lessonGroup21
 
1 web 2_lesson
1 web 2_lesson1 web 2_lesson
1 web 2_lessonGroup21
 
Getting the-native-feel
Getting the-native-feelGetting the-native-feel
Getting the-native-feelfisherwebdev
 
Web 2.0 : Intellectual Property Issues
Web 2.0 : Intellectual Property IssuesWeb 2.0 : Intellectual Property Issues
Web 2.0 : Intellectual Property IssuesKarl Larson
 
Group meeting: Polaris - Faster Page Loads Using Fine-grained Dependency Trac...
Group meeting: Polaris - Faster Page Loads Using Fine-grained Dependency Trac...Group meeting: Polaris - Faster Page Loads Using Fine-grained Dependency Trac...
Group meeting: Polaris - Faster Page Loads Using Fine-grained Dependency Trac...Yu-Hsin Hung
 
Share point saturday presentation 9 29-2012-2
Share point saturday presentation 9 29-2012-2Share point saturday presentation 9 29-2012-2
Share point saturday presentation 9 29-2012-2Derek Gusoff
 
Hybrid Mobile Development
Hybrid Mobile DevelopmentHybrid Mobile Development
Hybrid Mobile DevelopmentShai Raiten
 
Web development tips and tricks
Web development tips and tricksWeb development tips and tricks
Web development tips and tricksmaxo_64
 

Semelhante a web20 (20)

web 2.0
web 2.0web 2.0
web 2.0
 
Meetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech PeopleMeetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech People
 
Enhancing Spring MVC Web Applications Progressively with Spring JavaScript
Enhancing Spring MVC Web Applications Progressively with Spring JavaScriptEnhancing Spring MVC Web Applications Progressively with Spring JavaScript
Enhancing Spring MVC Web Applications Progressively with Spring JavaScript
 
Isomorphic web application
Isomorphic web applicationIsomorphic web application
Isomorphic web application
 
Transforming the web into a real application platform
Transforming the web into a real application platformTransforming the web into a real application platform
Transforming the web into a real application platform
 
The Dark Side of Single Page Applications
The Dark Side of Single Page ApplicationsThe Dark Side of Single Page Applications
The Dark Side of Single Page Applications
 
TSSJS2010 Presenatation on: Performance Anti Patterns In Ajax Applications
TSSJS2010 Presenatation on: Performance Anti Patterns In Ajax ApplicationsTSSJS2010 Presenatation on: Performance Anti Patterns In Ajax Applications
TSSJS2010 Presenatation on: Performance Anti Patterns In Ajax Applications
 
Performance anti patterns in ajax applications
Performance anti patterns in ajax applicationsPerformance anti patterns in ajax applications
Performance anti patterns in ajax applications
 
Intro to SPA using JavaScript & ASP.NET
Intro to SPA using JavaScript & ASP.NETIntro to SPA using JavaScript & ASP.NET
Intro to SPA using JavaScript & ASP.NET
 
Web 2.0 Application development with Ruby on Rails
Web 2.0 Application development with Ruby on RailsWeb 2.0 Application development with Ruby on Rails
Web 2.0 Application development with Ruby on Rails
 
1 web 2_lesson
1 web 2_lesson1 web 2_lesson
1 web 2_lesson
 
1 web 2_lesson
1 web 2_lesson1 web 2_lesson
1 web 2_lesson
 
jQuery Migration
jQuery MigrationjQuery Migration
jQuery Migration
 
Getting the-native-feel
Getting the-native-feelGetting the-native-feel
Getting the-native-feel
 
Web 2.0 : Intellectual Property Issues
Web 2.0 : Intellectual Property IssuesWeb 2.0 : Intellectual Property Issues
Web 2.0 : Intellectual Property Issues
 
Group meeting: Polaris - Faster Page Loads Using Fine-grained Dependency Trac...
Group meeting: Polaris - Faster Page Loads Using Fine-grained Dependency Trac...Group meeting: Polaris - Faster Page Loads Using Fine-grained Dependency Trac...
Group meeting: Polaris - Faster Page Loads Using Fine-grained Dependency Trac...
 
Share point saturday presentation 9 29-2012-2
Share point saturday presentation 9 29-2012-2Share point saturday presentation 9 29-2012-2
Share point saturday presentation 9 29-2012-2
 
Hybrid Mobile Development
Hybrid Mobile DevelopmentHybrid Mobile Development
Hybrid Mobile Development
 
Web development tips and tricks
Web development tips and tricksWeb development tips and tricks
Web development tips and tricks
 
20120306 dublin js
20120306 dublin js20120306 dublin js
20120306 dublin js
 

Mais de tutorialsruby

&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />tutorialsruby
 
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>tutorialsruby
 
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>tutorialsruby
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />tutorialsruby
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />tutorialsruby
 
Standardization and Knowledge Transfer – INS0
Standardization and Knowledge Transfer – INS0Standardization and Knowledge Transfer – INS0
Standardization and Knowledge Transfer – INS0tutorialsruby
 
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269tutorialsruby
 
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269tutorialsruby
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008tutorialsruby
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008tutorialsruby
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheetstutorialsruby
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheetstutorialsruby
 

Mais de tutorialsruby (20)

&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
 
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
 
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
 
Standardization and Knowledge Transfer – INS0
Standardization and Knowledge Transfer – INS0Standardization and Knowledge Transfer – INS0
Standardization and Knowledge Transfer – INS0
 
xhtml_basics
xhtml_basicsxhtml_basics
xhtml_basics
 
xhtml_basics
xhtml_basicsxhtml_basics
xhtml_basics
 
xhtml-documentation
xhtml-documentationxhtml-documentation
xhtml-documentation
 
xhtml-documentation
xhtml-documentationxhtml-documentation
xhtml-documentation
 
CSS
CSSCSS
CSS
 
CSS
CSSCSS
CSS
 
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
 
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
 
HowTo_CSS
HowTo_CSSHowTo_CSS
HowTo_CSS
 
HowTo_CSS
HowTo_CSSHowTo_CSS
HowTo_CSS
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheets
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheets
 

Último

TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
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
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
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
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
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
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
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
 

Último (20)

TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
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
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
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
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
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.
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
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
 

web20

  • 1. Web 2.0 with XML 24 September 2009 summer school Building Dynamic Web Apps with XML Norman Walsh Mark Logic Corporation Licensed under a Creative Commons Attribution- Noncommercial-Share Alike 3.0 Unported License www.xmlsummerschool.com
  • 2. Learning Objectives summer school Understand the fundamentals of dynamic web applications. Learn how to apply web technologies to introduce dynamic behavior to your web pages. •  HTML •  CSS •  JavaScript •  XML Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 2 Noncommercial-Share Alike 3.0 Unported License
  • 3. Contents summer school Lecture 1.  Web 1.0 vs. Web 2.0 2.  Web standards 3.  Asynchronous communication 4.  JavaScript frameworks Tutorial Session 1. Incorporating simple dynamic behavior Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 3 Noncommercial-Share Alike 3.0 Unported License
  • 4. summer school Web 1.0 vs. Web 2.0 Licensed under a Creative Commons Attribution- Noncommercial-Share Alike 3.0 Unported License www.xmlsummerschool.com
  • 5. Web 1.0 summer school •  Very limited designs •  No images at first •  No CSS •  Completely static pages Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 5 Noncommercial-Share Alike 3.0 Unported License
  • 6. Web 1.0 “applications” summer school •  The introduction of forms allowed for some interactivity: •  Initial page provides a form •  Client data sent to server •  Server does some processing •  Results sent back to client •  Very heavyweight: •  No client-side interaction •  Result is always a complete refresh of the whole page •  Still very limited designs Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 6 Noncommercial-Share Alike 3.0 Unported License
  • 7. Web 2.0 applications (1) summer school •  Rich designs •  Images, icons, colors, gradients, rounded corners, drop shadows, … •  They (can) look much more like desktop applications Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 7 Noncommercial-Share Alike 3.0 Unported License
  • 8. Web 2.0 applications (2) summer school •  Fully interactive •  Client side: fade-in, fade-out, drag-an-drop, … •  Server side: type-ahead, spelling suggestions, forms processing… Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 8 Noncommercial-Share Alike 3.0 Unported License
  • 9. Web 2.0 applications (3) summer school •  Much more lightweight •  Client (perhaps in concert with or server side processing) can update different parts of the page without updating the whole page Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 9 Noncommercial-Share Alike 3.0 Unported License
  • 10. summer school Web standards Licensed under a Creative Commons Attribution- Noncommercial-Share Alike 3.0 Unported License www.xmlsummerschool.com
  • 11. Web 2.0 technologies summer school •  Web standards •  HTML •  CSS •  JavaScript •  XML •  Proprietary technologies •  Flash •  Silverlight Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 11 Noncommercial-Share Alike 3.0 Unported License
  • 12. Browser features summer school •  Web 2.0 applications require specific client features •  JavaScript •  AJAX (XMLHttpRequest object) •  CSS Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 12 Noncommercial-Share Alike 3.0 Unported License
  • 13. Supported browsers summer school •  Supported by all the major browsers •  Firefox and “Gecko”-derived browsers •  Safari and “Webkit”-derived browsers •  Internet Explorer (to varying degrees, with varying bugs) •  Opera •  Not universally supported •  Links and other “text only” browsers •  Screen readers •  Search engines Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 13 Noncommercial-Share Alike 3.0 Unported License
  • 14. What, how, and why? summer school •  What are web pages made of? •  How are they made? •  How do they work? Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 14 Noncommercial-Share Alike 3.0 Unported License
  • 15. HTML summer school •  “Standard” HTML •  Universally supported vocabulary •  div, span, h1, h2, table, … •  Supports a degree of “semantic” markup •  Most presentational decisions can be made elsewhere •  HTML vs. XHTML •  HTML5 vs. HTML vs. XHTML vs. … Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 15 Noncommercial-Share Alike 3.0 Unported License
  • 16. CSS summer school •  Applies presentation to HTML •  borders, margins •  colors •  fonts •  graphics •  Sufficiently powerful for most web applications •  Continues to grow in sophistication •  Browsers lag by varying amounts Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 16 Noncommercial-Share Alike 3.0 Unported License
  • 17. JavaScript summer school •  Web browser scripting language •  Quite modern and advanced •  Defined by ECMA •  JavaScript runs in the browser •  Extends the browser in application-specific ways •  Responds to user interaction •  Communicates with the server •  Updates underlying HTML and CSS Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 17 Noncommercial-Share Alike 3.0 Unported License
  • 18. XML summer school •  Declarative markup language •  Arbitrary semantic complexity •  div, span, book, spreadsheet, widget-description, … •  Can be parsed without knowing the tag set •  Nearly ubiquitous support <book> <title>Acme Widget Reference</title> <price>13.95</price> <cover>http://example.com/cover.jpg</cover> <abstract>A reference to the Acme Widgets, what else? </abstract> </book> Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 18 Noncommercial-Share Alike 3.0 Unported License
  • 19. JSON: JavaScript Object Notation summer school •  Native JavaScript notation •  Nested name/value pairs •  Ubiquitous support in JavaScript clients { "title" : "Acme Widget Reference", "price" : "13.95", "cover" : "http://example.com/cover.jpg", "abstract": "A reference to the Acme Widgets, what else?" } Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 19 Noncommercial-Share Alike 3.0 Unported License
  • 20. What is a web page? summer school Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 20 Noncommercial-Share Alike 3.0 Unported License
  • 21. What is a web page? summer school <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Page Title</title> </head> <body> <div class="navbar"> <ul> <li>Page 1</li><li>Page 2</li><li>Page 3</li> </ul> </div> <div class="body"> <h1>Page Title</h1> <p>This is a test, this is only a test.</p> </div> </body> </html> Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 21 Noncommercial-Share Alike 3.0 Unported License
  • 22. What is a web page? summer school <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Page Title</title> </head> <body> <div class="navbar"> <ul> <li>Page 1</li><li>Page 2</li><li>Page 3</li> </ul> </div> <div class="body"> <h1>Page Title</h1> <p>This is a test, this is only a test.</p> </div> </body> </html> An initial model Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 22 Noncommercial-Share Alike 3.0 Unported License
  • 23. What is a web page? summer school <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Page Title</title> <script type="text/javascript" src="/js/library.js"></script> <script type="text/javascript" src="/js/page.js"></script> <script type="text/javascript" src="/js/extra.js"></script> </head> <body> Scripts <div class="navbar"> <ul> <li>Page 1</li><li>Page 2</li><li>Page 3</li> </ul> </div> <div class="body"> <h1>Page Title</h1> <p>This is a test, this is only a test.</p> </div> </body> </html> Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 23 Noncommercial-Share Alike 3.0 Unported License
  • 24. What is a web page? summer school <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Page Title</title> Stylesheets <link rel="stylesheet" type="text/css" href=”/cs/base-style.css" /> <link rel="stylesheet" type="text/css" href=”/cs/page-style.css" /> <script type="text/javascript" src="/js/library.js"></script> <script type="text/javascript" src="/js/page.js"></script> <script type="text/javascript" src="/js/extra.js"></script> </head> <body> <div class="navbar"> <ul> <li>Page 1</li><li>Page 2</li><li>Page 3</li> </ul> </div> <div class="body"> <h1>Page Title</h1> <p>This is a test, this is only a test.</p> </div> </body> </html> Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 24 Noncommercial-Share Alike 3.0 Unported License
  • 25. What is a web page? summer school <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Page Title</title> Stylesheets <link rel="stylesheet" type="text/css" href=”/cs/base-style.css" /> <link rel="stylesheet" type="text/css" href=”/cs/page-style.css" /> <script type="text/javascript" src="/js/library.js"></script> <script type="text/javascript" src="/js/page.js"></script> <script type="text/javascript" src="/js/extra.js"></script> </head> <body> Scripts <div class="navbar"> <ul> <li>Page 1</li><li>Page 2</li><li>Page 3</li> </ul> </div> <div class="body"> <h1>Page Title</h1> <p>This is a test, this is only a test.</p> </div> </body> </html> An initial model Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 25 Noncommercial-Share Alike 3.0 Unported License
  • 26. Why do Web 2.0 pages work? summer school •  Standardization •  HTML •  CSS •  JavaScript •  XML and/or JSON •  More-or-less universal browser support •  Firefox •  Safari •  Opera •  Internet Explorer Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 26 Noncommercial-Share Alike 3.0 Unported License
  • 27. How do Web 2.0 pages work? summer school •  Parse (X)HTML •  Build a DOM Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 27 Noncommercial-Share Alike 3.0 Unported License
  • 28. How do Web 2.0 pages work? summer school •  Parse (X)HTML •  Build a DOM •  Load CSS •  Attach styles Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 28 Noncommercial-Share Alike 3.0 Unported License
  • 29. How do Web 2.0 pages work? summer school •  Parse (X)HTML •  Build a DOM •  Load CSS •  Attach styles •  Load JavaScript •  Run scripts •  Attach event handlers Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 29 Noncommercial-Share Alike 3.0 Unported License
  • 30. How do Web 2.0 pages work? summer school •  Parse (X)HTML •  Build a DOM •  Load CSS •  Attach styles •  Load JavaScript •  Run scripts •  React to events •  Change DOM •  Change Style Full disclosure: real •  Attach new events life is more complicated than this •  Repeat Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 30 Noncommercial-Share Alike 3.0 Unported License
  • 31. How do Web 2.0 pages work? summer school •  JavaScript gives the programmer almost complete freedom •  Add or remove HTML elements •  Add, remove, or change CSS properties •  Move the input focus, change the cursor •  Create new windows •  Setup functions to run automatically in response to user events •  Change of focus •  Clicking or typing •  Communicate with the server Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 31 Noncommercial-Share Alike 3.0 Unported License
  • 32. How do Web 2.0 pages work? summer school •  JavaScript gives the programmer almost complete freedom •  For security purposes, there are some limits: •  The same origin policy •  Browsers restrict or forbid “cross-site scripting” (XSS) Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 32 Noncommercial-Share Alike 3.0 Unported License
  • 33. Doing two things at once summer school •  The browser is “single threaded”; it can only do one thing at time •  How can it respond to multiple situations simultaneously? •  It can’t, but the JavaScript interpreter fakes it! Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 33 Noncommercial-Share Alike 3.0 Unported License
  • 34. Doing two things at once summer school •  The interpreter fakes it with: •  Events •  Changes to the environment detected by the interpreter •  “Handlers” are called automatically •  When the handler finishes, the interpreter resumes whatever it was doing before •  And callback functions •  Events by another name •  Giving the interpreter a handler to call when some request is complete Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 34 Noncommercial-Share Alike 3.0 Unported License
  • 35. Browser limitations summer school •  Clients can do a lot, but •  Clients are ultimately limited •  Little memory •  Little horsepower •  Slow connections to the network •  Don’t think so? •  Think mobile phone, not desktop •  Servers are much less limited •  I can upgrade the server •  I can’t upgrade your desktop Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 35 Noncommercial-Share Alike 3.0 Unported License
  • 36. Overcoming browser limitations summer school •  The goal: •  Allow the server to support my web application •  Augment (not interfere) with the user experience Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 36 Noncommercial-Share Alike 3.0 Unported License
  • 37. summer school Asynchronous communication Licensed under a Creative Commons Attribution- Noncommercial-Share Alike 3.0 Unported License www.xmlsummerschool.com
  • 38. Asynchronous communication (1) summer school •  XMLHttpRequest •  The magic behind the curtain •  Allows the client to construct an HTTP request •  http://example.com/get-stock-quote?ticker=GOOG •  Asks the browser to perform the request •  GET •  Provides a callback or event handler to process the response •  updateStockTicker() Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 38 Noncommercial-Share Alike 3.0 Unported License
  • 39. Asynchronous communication (2) summer school •  Control returns to the browser while the request is being processed, so the application continues to function normally •  The callback function can insert the response into the users experience with the application in any appropriate way Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 39 Noncommercial-Share Alike 3.0 Unported License
  • 40. XMLHttpRequest The Hard Way summer school •  Create an array to hold requests, and build the infrastructure to initialize it. var xmlReqs = new Array();! function ReqObj(type, xmlhttp) { ... }! function getReqObj() {! var req = false;! if (window.XMLHttpRequest) { // native branch! req = new XMLHttpRequest();! } else if (window.ActiveXObject) { // IE branch! req = new ActiveXObject("Microsoft.XMLHTTP");! }! var reqobj = new ReqObj("busy", req);! xmlReqs.push(reqobj);! return reqobj;! }! Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 40 Noncommercial-Share Alike 3.0 Unported License
  • 41. XMLHttpRequest The Hard Way summer school •  Write a function to submit the request function loadXMLDoc(url) {! var req = getReqObj();! if (window.XMLHttpRequest) { // native branch! req.xmlhttp.onreadystatechange = procReqChange;! req.xmlhttp.open("GET", url, true);! req.xmlhttp.send(null);! } else if (window.ActiveXObject) { // IE branch! req.xmlhttp.onreadystatechange = procReqChange;! req.xmlhttp.open("GET", url, true);! req.xmlhttp.send();! }! }! Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 41 Noncommercial-Share Alike 3.0 Unported License
  • 42. XMLHttpRequest The Hard Way summer school •  Write the callback handler and the function to process the values returned by the call function processReqChange() {! for (var i = 0; i < xmlReqs.length; i++) {! if (xmlReqs[i].type == "busy" ! && xmlReqs[i].xmlhttp.readyState == 4) {! handleResponse(xmlReqs[i].xmlhttp);! xmlReqs[i].type = "ready";! }}}! function handleResponse(req) {! if (req.status == 200) {! var elem = document.getElementById(“someid”)! // ...processing statements go here... ! } else { ... }! }! Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 42 Noncommercial-Share Alike 3.0 Unported License
  • 43. XMLHttpRequest The Easy Way summer school •  Include a JavaScript framework, like jQuery •  Use it $(“#someid”).get(url,! { param1: value1,! param2: value2 },! handleResponse);! function handleResponse(text,status,reqobj) {! ...! }! Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 43 Noncommercial-Share Alike 3.0 Unported License
  • 44. summer school JavaScript frameworks Licensed under a Creative Commons Attribution- Noncommercial-Share Alike 3.0 Unported License www.xmlsummerschool.com
  • 45. JavaScript frameworks summer school There are lots to choose from: script.aculo.us Prototype jQuery MochiKit Railto Dojo Toolkit SproutCore midori •  My choice, having tried a few but by no means all of them, is jQuery Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 45 Noncommercial-Share Alike 3.0 Unported License
  • 46. Why I like jQuery summer school •  Robust •  Concise •  Active developer community •  Large inventory of extensions Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 46 Noncommercial-Share Alike 3.0 Unported License
  • 47. CSS frameworks summer school •  There are lots of CSS frameworks as well: •  Blueprint •  Baseline CSS •  YUI Grid CSS •  Elements CSS Frameworks •  CleverCSS •  Tripoli CSS Framework Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 47 Noncommercial-Share Alike 3.0 Unported License
  • 48. summer school Tutorial Session Licensed under a Creative Commons Attribution- Noncommercial-Share Alike 3.0 Unported License www.xmlsummerschool.com
  • 49. Adding interactivity summer school Imagine that you’ve written a web service which accepts a pair of lat/long coordinates and returns a list of photographs contained within that rectangle Write a client application that •  Allows users to enter coordinates •  Validates the coordinates •  Updates the page with a list of matching photographs Licensed under a Creative Commons Attribution- www.xmlsummerschool.com Slide 49 Noncommercial-Share Alike 3.0 Unported License
  • 50. summer school Any questions? Thank you for your attention Licensed under a Creative Commons Attribution- Noncommercial-Share Alike 3.0 Unported License www.xmlsummerschool.com