SlideShare ist ein Scribd-Unternehmen logo
1 von 114
W3            iP ho ne
      C
                  ery
                 bile
      HTML5


              jQu
                          5
              Mo
Ph




                        L
on




              TM
 eG




          (@ohmyzany)
     ap
HTML5   ...
HISTORY OF HTML
1989         Tim Berners-Lee, HTML Tags       CERN
1994   May The First WWW conference           Geneva
1994   Sep IETF sets up HTML working group
1995   Nov HTML 2.0                            IETF
1997   Jan   HTML 3.2                         W3C
1997   Dec HTML 4.0                           W3C
1999   Dec HTML 4.01                          W3C
2000         XHTML 1.0                        W3C
2002         XHTML 2.0                        W3C
2004         Web Applications 1.0            WHATWG
2007         HTML5 Working Group              W3C
2010   Oct HTML5 Last Call Working Draft      W3C
HISTORY OF HTML
HTML5
                                    Jun, 2010
                                    Nov, 2010
                                    Mar, 2011




http://beta.html5test.com
HTML5
                                                     Jun, 2010
              IE7                                    Nov, 2010
                                                     Mar, 2011

              IE8

          IE9 RC

FireFox 4.0 b12

Opera 11 Alpha

   Chrome 10.0

        Safari 5.0

         iOS 4.3

    Android 2.3

                     0      50   100   150   200   250           300
http://beta.html5test.com
HTML5
                                                                               Jun, 2010
                     0
              IE7                                                              Nov, 2010
                                                                               Mar, 2011
                            27
              IE8

                     0
          IE9 RC

                                                   139
FireFox 4.0 b12

                                             129
Opera 11 Alpha

                                                                 202
   Chrome 10.0

                                                                       212
        Safari 5.0

                                            125
         iOS 4.3

                                                         178
    Android 2.3

                     0           50   100          150         200           250           300
http://beta.html5test.com
HTML5
                                                                                            Jun, 2010
                     0
              IE7           17                                                              Nov, 2010
                                                                                            Mar, 2011
                                 27
              IE8                27


                     0
          IE9 RC                           80


                                                             139
FireFox 4.0 b12                                                                            249


                                                       129
Opera 11 Alpha                                                                      223


                                                                           202
   Chrome 10.0                                                                              252


                                                                                 212
        Safari 5.0                                                                  220


                                                      125
         iOS 4.3                                                          198


                                                                   178
    Android 2.3                                                    178



                     0                50        100          150         200              250           300
http://beta.html5test.com
HTML5
                                                                                                     Jun, 2010
                     0
              IE7           17                                                                       Nov, 2010
                            17
                                                                                                     Mar, 2011
                                 27
              IE8                27
                                   32

                     0
          IE9 RC                             80
                                                         130

                                                               139
FireFox 4.0 b12                                                                                     249
                                                                                                      255

                                                         129
Opera 11 Alpha                                                                          223
                                                                                              234

                                                                               202
   Chrome 10.0                                                                                       252
                                                                                                                 288

                                                                                     212
        Safari 5.0                                                                      220
                                                                                           228

                                                        125
         iOS 4.3                                                              198
                                                                                 206

                                                                     178
    Android 2.3                                                      178
                                                                       182


                     0                  50        100          150           200                 250              300
http://beta.html5test.com
HTML5

✤   HTML5                      - http://bit.ly/chh79p

✤                    - http://beta.html5test.com (http://
    html5test.com)
HTML5 OVERVIEW
DOCTYPE

     <!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">

  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
          "http://www.w3.org/TR/html4/strict.dtd">

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
           "http://www.w3.org/TR/html4/loose.dtd">

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
         "http://www.w3.org/TR/html4/frameset.dtd">



   <!DOCTYPE html>
STRUCTURAL ELEMENTS




Before                                                     After
     http://html5doctor.com/designing-a-blog-with-html5/
HTML5 FEATURES

 Web Form        Web SQL Database
                    Indexed Database




Canvas / SVG      Web Storage


Audio / Video    Web Workers


Geolocation       Web Socket


  Web GL
HTML5 FEATURES

 Web Form        Web SQL Database
                    Indexed Database




Canvas / SVG      Web Storage


Audio / Video    Web Workers


Geolocation       Web Socket


  Web GL          ● ● ● ● ●
<article>     <mark>
  <aside>      <meter>
<command>       <nav>
 <details>    <progress>
<summary>      <ruby>
 <figure>        <rt>
<figcaption>     <rp>
 <footer>     <section>
 <header>      <time>
 <hgroup>       <wbr>
FORM


<canvas> For making graphics with a script.


<datalist> A list of options for input values.


<keygen> Generate keys to authenticate users.


         For different types of output, such as
<output>
         output written by a script.
INPUT TYPE

  tel                   week

 search                  time

  url              datetime-local

 email                  number

datetime                range

  date                  color

 month
INPUT TYPE




                           <input type=‘color’/>




<input type=‘datetime’/>
                            <input type=‘number’/>
INPUT TYPE RANGE




<input type=‘range’ min=’0’ max=‘100’ step=’1’/>
INPUT PLACEHOLDER




<input type=‘text’ id=‘userid’ placeholder=‘     ’/>
<input type=‘password’ id=‘passwd’ placeholder=‘       ’/>
INPUT




input       required

        , URL
DATALIST


<input type="text" list="favorite_cars"/>
<datalist id="favorite_cars">
  <option label="210hp" value="Kia K5"/>
  <option label="270hp" value="Kia K7"/>
  <option label="235hp" value="Hyundai Genesis"/>
  <option label="360hp" value="Hyundai Equus"/>
  <option label="174hp" value="BMW Mini Cooper"/>
  <option label="236hp" value="BMW Mini Cooper S"/>
</datalist>
INPUT TYPE




<input type=‘text’/>   <input type=‘email’/>
INPUT TYPE




<input type=‘number’/>   <input type=‘tel’/>
For multimedia content, sounds, music or
<audio>
          other audio streams.

          For video content, such as a movie clip or
<video>
          other video streams.

         For media resources for media elements,
<source>
         defined inside video or audio elements.


<embed> For embedded content, such as plug-in.
AUDIO, VIDEO TAG
                       Video                             Audio
                              Ogg                                     Ogg
            MPEG-4   H.264            WebM   PCM   MP3    AAC                          WebM
                             Theora                                  Vorbis

  IE9                YES                           YES    YES

Firefox 4
                              YES     YES    YES                       YES             YES
 beta 7
 Safari
             YES     YES                     YES   YES    YES
 5.0.2
Chrome
                     YES      YES     YES    YES   YES    YES          YES             YES
  8.0
 Opera
                              YES     YES    YES                       YES             YES
  11.0
  iOS
             YES     YES                     YES   YES    YES
  4.2.1
Android
  2.2
                                                                http://html5test.com
VIDEO TAG
<video id="video" poster="../video/poster.png" autobuffer>
    <source src="../video/myvideo.ogv"/>
    <source src="../video/myvideo.webm"/>
    <source src="../video/myvideo.m4v"/>
</video>



<script>
    var videoObj = document.getElementById("video");
</script>




currentTime                   ended                ?

 duration                    paused                      ?

  volume                     pause()

                              play()
WEB GL

✤                                3D   .

✤   OpenGL ES 2.0   JavaScript    .

✤

         ,     ,

     NVIDIA, AMD,
WEB GL




http://bodybrowser.googlelabs.com
WEB GL




http://blog.nihilogic.dk/2009/11/webgl-musical-solar-system.html
DEVICE APIS AND POLICY WORKING GROUP

           Calendar                  Contacts
                                     Address-book

           Camera                   Messaging
         and microphone            (SMS, MMS, Emails)

         System info             Device Interfaces
       (CPU, Network, etc)

   Application Launcher
    (KangChan Lee, WonSuk Lee)
                                      ● ● ●
DEVICE APIS AND POLICY WORKING GROUP

           Calendar                         Contacts
                                            Address-book

           Camera                           Messaging
         and microphone                   (SMS, MMS, Emails)

         System info                   Device Interfaces
       (CPU, Network, etc)

   Application Launcher
    (KangChan Lee, WonSuk Lee)
                                             ● ● ●


    Device APIs and Policy Working Group Meeting
    The DAP WG is planning to have a F2F in Seoul, South Korea
             on March 15-18 2011, hosted by ETRI.
HTML5
                  WEB STORAGE
   WEB APPLICATION SOFTWARE METHODS AND PROTOCOLS USED FOR STORING DATA IN A WEB BROWSER.
WEB STORAGE SUPPORTS PERSISTENT DATA STORAGE, SIMILAR TO COOKIES, AS WELL AS WINDOW-LOCAL STORAGE.
HTML5 WEB STORAGE API

✤                                 Cookie       .

✤   Cookie          .

                            4KB                        .

     HTTP Request                    .

                        .

                                                   .

                                           .
HTML5 WEB STORAGE API

✤   HTML5 Web Storage

                                           .

                                 5MB               .

                                               .

     Key - Value

     LocalStorage, SessionStorage 2    .
HTML5 WEB STORAGE API

    LocalStorage           SessionStorage




(                  )   (                    )
HTML5 WEB STORAGE API

function isSupportLocalStorage() {
  var result = true;
  try { localStorage }
  catch (e) { result = false; }
  return result;
}

function isSupportSessionStorage() {
  var result = true;
  try { sessionStorage }
  catch (e) { result = false; }
  return result;
}
HTML5 WEB STORAGE API


var sKey   = $(“#txtKey”).val();
var sValue = $(“#txtValue”).val();

try {
  localStorage.setItem(sKey, sValue);
} catch (e) {
  if (e == QUOTA_EXCEEDED_ERR) {
    alert(“                      .”);
  }
}



       Key-Value pair
HTML5 WEB STORAGE API



var sKey = “userName”;

localStorage.getItem(sKey);
localStorage.removeItem(sKey);
localStorage.clear();




       SessionStorage    LocalStorage
                                        .
BREAK TIME
HTML5
WEB SQL DATABASE
AN API FOR STORING DATA IN DATABASES THAT CAN BE QUERIED USING A VARIANT OF SQL.
HTML5 WEB SQL DATABASE

✤   SQL                                                       .

✤   SQLite

✤                      (http://www.caniuse.com/#search=sql)


     Google Chrome 7.0 ⇧ / Apple Safari 3.2 ⇧

     Opera 10.5 ⇧ / iOS Safari 3.2 ⇧ / Android 2.1 ⇧

     IE      FireFox

✤   Indexed Database                          .
HTML5 WEB SQL DATABASE

✤   Indexed Database
     Web SQL Database

     JavaScript                                     .

                                            (           /   )


     SQL               .

                           SQL

                           (Key-Value           )

     Firefox 4.0 beta 12                .
HTML5 WEB SQL DATABASE
HTML5 WEB SQL DATABASE

✤   Web SQL Database

     openDatabase :                                  .

     transaction :            . commit / rollback.

     executeSql : SQL Query       .
HTML5 WEB SQL DATABASE

✤   openDatabase

                              (                                        Open)

    var db = openDatabase('mydb', '1.0', 'sample db', 2 * 1024 * 1024);
    db.transaction(function (tx) {
      // here be the transaction
      // do SQL magic here using the tx object
    });




     openDatabase Parameters

                                                   Creation callback
HTML5 WEB SQL DATABASE

✤

          executeSql            SQL                     .



    var db = openDatabase('mydb', '1.0', 'sample db', 2 * 1024 * 1024);
    db.transaction(function (tx) {

      tx.executeSql('CREATE TABLE IF NOT EXISTS foo (id unique, text)');

      tx.executeSql('INSERT INTO foo (id, text) VALUES (1, "synergies")');
    });
HTML5 WEB SQL DATABASE

✤   executeSql

                                                                                   .


    var db = openDatabase('mydb', '1.0', 'sample db', 2 * 1024 * 1024);


    var userID   = document.getElementById('userId').value;
    var userName = document.getElementById('userName').value;


    db.transaction(function (tx) {
      tx.executeSql('CREATE TABLE IF NOT EXISTS foo (id unique, text)');
      tx.executeSql('INSERT INTO foo (id, text) VALUES (?, ?)', [userID, userName]);
    });
HTML5 WEB SQL DATABASE

✤

          executeSql
          ResultSet                        .

    var db = openDatabase('mydb', '1.0', 'sample db', 2 * 1024 * 1024);


    db.transaction(function (tx) {
      tx.executeSql('SELECT * FROM foo', [], function (tx, results) {
          var len = results.rows.length, i;
          for (i = 0; i < len; i++) {
              alert(results.rows.item(i).text);
          }
      });
    });
HTML5
        GEOLOCATION
     THE GEOLOCATION API DEFINES A HIGH-LEVEL INTERFACE TO
LOCATION INFORMATION ASSOCIATED ONLY WITH THE DEVICE HOSTING
     THE IMPLEMENTATION, SUCH AS LATITUDE AND LONGITUDE
HTML5 GEOLOCATION API

✤                                    API.

✤                 GPS                       .

     WPS : WiFi Positioning System

✤       ,     ,     ,        ,       ,          .

✤   navigator.geolocation object
HTML5 GEOLOCATION API


if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(success, error);
} else {
  alert(“browser does not support geolocation”);
}

function success(position) {
  alert(“latitude=” + position.coords.latitude + “, ”
      + “longitude=” + position.coords.longitude);
}

function error(e) {
  alert(“Error”);
}
HTML5 GEOLOCATION API
HTML5
        WEBSOCKET
        A TECHNOLOGY PROVIDING FOR BI-DIRECTIONAL,
          FULL-DUPLEX COMMUNICATIONS CHANNELS,
OVER A SINGLE TRANSMISSION CONTROL PROTOCOL (TCP) SOCKET
?

✤           TCP Socket
              IETF     .

✤   1           TCP                   .

✤                  ,              ,
                        .

✤                              JavaScript setInterval()
        Reverse Ajax (Comet)                       .
CASE #1.
     WAS
           .
CASE #2.
     WAS
[Constructor (in DOMString url, in optional DOMString protocol)]
interface WebSocket {
  readonly attribute DOMString URL;

 const unsigned short CONNECTING = 0;
 const unsigned short OPEN = 1;
 const unsigned short CLOSED = 2;
 readonly attribute unsigned short readyState;
 readonly attribute unsigned long bufferedAmount;

     attribute Function onopen;
     attribute Function onmessage;
     attribute Function onclose;
 boolean send(in DOMString data);
 void close();
};
WebSocket implements EventTarget;



                        WebSocket Client API Working Draft - 2009   12   22
[Constructor (in DOMString url, in optional DOMString protocol)]
[Constructor (in DOMString url, in optional DOMString[] protocols)]
interface WebSocket {
  readonly attribute DOMString URL;

  const unsigned short CONNECTING = 0;
  const unsigned short OPEN = 1;
  const unsigned short CLOSING = 2;
  const unsigned short CLOSED = 3;
  readonly attribute unsigned short readyState;
  readonly attribute unsigned long bufferedAmount;

       attribute Function onopen;
       attribute Function onmessage;
       attribute Function onerror;
       attribute Function onclose;
  readonly attribute DOMString protocol;
   void send(in DOMString data);
  void close();
};
WebSocket implements EventTarget;


                           WebSocket Client API Editor’s Draft - 2010   12   14
WebSocket Client Sample
WebSocket Server
Opening handshake
✤   JavaApplet            Flash            HTTP Header
                 .

                             (Firewall Circumvention Attack)

                     Host Header            ,
                                   (   )                       .

     Cache Poisoning Attack

       Proxy     Cache                      .
✤                                        (Firewall Circumvention Attack)
                      attacker.com:843                 port      origin            Flash

           .

                      swf     attacker.com:80                                .

   Flash Player             attacker.com:843              ,                                .

                      swf                              attacker.com:80                               .

                      swf                         Host Header                                  .

   Transparent Proxy                                  HTTP Request                                 , Host

Header                           .(       IP Address (2.2.2.2)            Host Header (target.com;
1.1.1.1)       ...)
Firewall Circumvention Attack
✤       Cache Poisoning Attack
             Java Applet   attacker.com:80                               .

             Java Applet            Host Header                                     .

Transparent Proxy                 Data       HTTP request                       ,

             IP               .

                  HTTP Expires header                                                           .

Host Header

http://www.google.com/script.js                 (           http://attacker.com/script.js   )

         ,                                          http://www.google.com/script.js

    ,                                                   .
Cache Poisoning Attack
✤   Proxy       Upgrade-based, POST-based
    WebSocket Handshake                     .

✤                          CONNECT mechanism
                 .
✤        Firefox 4 beta 8         Opera 11.0                  WebSocket
                    .

✤   Firefox
                      . (http://hacks.mozilla.org/2010/12/websockets-disabled-in-firefox-4/)
BREAK TIME
HTML + NATIVE SDK

HYBRID APP
?

✤                         ,
    Native SDK
                 .

✤                        , Native SDK
                     .
✤   iPhone Safari

     http://splax.net/m

     http://www.touchapp.co.uk/iphone
✤

             ,                   .

                 .

                             .

✤

                     .

    Native               .
Native SDK
      HTML, CSS, JavaScript
                                    (iPhone SDK, Android SDK...)

                                                 Native SDK
 (Native         Native       )




Native Browser




                                  Native
HTML, CSS,
 JavaScript
HTML, CSS,
 JavaScript




     JQTouch,
   JQueryMobile
Native Framework



  HTML, CSS,
   JavaScript




        JQTouch,
      JQueryMobile
iPhone SDK
                Android SDK




Native Framework



  HTML, CSS,
   JavaScript




        JQTouch,
      JQueryMobile
iPhone SDK
                Android SDK


   Native App
Native Framework



  HTML, CSS,
   JavaScript




        JQTouch,
      JQueryMobile
iPhone SDK
                Android SDK


   Native App
Native Framework



  HTML, CSS,
   JavaScript




        JQTouch,
      JQueryMobile
iPhone SDK
                Android SDK


   Native App                 App Store
Native Framework



  HTML, CSS,
   JavaScript




        JQTouch,
      JQueryMobile
iPhone SDK
                Android SDK


   Native App                 App Store
Native Framework



  HTML, CSS,
   JavaScript




        JQTouch,
      JQueryMobile
iPhone SDK
                Android SDK


   Native App                 App Store
Native Framework



  HTML, CSS,
   JavaScript




        JQTouch,
      JQueryMobile
✤             (iPhone, Android, Blackberry, Tablet PC...)

✤   iPhone / iPad           Native SDK
    Macintosh       .

✤   Android             Windows, Mac, Linux           .

✤   Blackberry            Windows              .

     Macintosh                            .
✤   Xcode 3.2.4

     iOS4

✤   Eclipse Galileo

✤   PhoneGap Framework

✤   JQuery Framework (for JQueryMobile)

✤   JQueryMobile or JQTouch Framework

✤   Android SDK & Blackberry SDK
PHONEGAP
BUILDING CROSS-PLATFORM MOBILE APPS
     IN HTML, CSS AND JAVASCRIPT
PHONEGAP      ?

✤   HTML, CSS, JavaScript
                                        .


                            .

✤                    HTML5          .

            ,                   .
PHONEGAP
PHONEGAP - IPHONE
PHONEGAP - IPHONE
PHONEGAP - ANDROID
JQUERY MOBILE
 TOUCH-OPTIMIZED WEB FRAMEWORK
    FOR SMARTPHONES & TABLETS
JQUERY MOBILE

✤                        JavaScript Framework.

✤                                  UI Layout        .

                                    Theme       .

✤           Event         .

     Tap, Swipe, Orientation, Scroll...

✤   JQuery Framework

     Ajax, Animation, Transitions, Dialogs...
JQUERY MOBILE
    <link rel="stylesheet" href="./script/jquery.mobile-1.0a2.min.css"/>
    <script src="./script/jquery-1.4.4.min.js"></script>
    <script src="./script/jquery.mobile-1.0a2.min.js"></script>




✤   <head>        JQueryMobile
                                                                    .

✤                                              .

✤   Alpha 3...                                     ...
JQUERY MOBILE

<meta name="apple-touch-fullscreen" content="yes" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<meta name="viewport" content="width=device-width, initial-scale=1.0,
maximum-scale=1.0, user-scalable=0;"/>
<meta charset="UTF-8">

<title>Hybrid App Demos - zany.kr</title>

<link rel="apple-touch-startup-image" href="./images/splash_iphone4.png"/>
<link rel="apple-touch-icon" href="./images/icon.png"/>

<link rel="stylesheet" href="./base.css" />
<link rel="stylesheet" href="./script/jquery.mobile-1.0a2.min.css" />
<script src="./script/jWebSocket.js"></script>
<script src="./script/jquery-1.4.4.min.js"></script>
<script src="./script/jquery.mobile-1.0a2.min.js"></script>

<script src="http://maps.google.com/maps/api/js?sensor=true"></script>
JQUERY MOBILE

$(document).bind("mobileinit", function() {
	 // Initialize
});

$(document).ready(function() {
	 // Document Ready
});
JQUERY MOBILE

<div data-role="page">
  <div data-role="header">...</div>
  <div data-role="content">...</div>
  <div data-role="footer">...</div>
</div>




                  header

                 content

                  footer
JQUERY MOBILE
<body onload="onBodyLoad()">
	   <div data-role="page" data-theme="a" id="main">
	   	   <div id="headerArea" data-role="header">
	   	   	   <h1>HybridApp Demo</h1>
	   	   </div>
	   	   <div data-role="content">
	   	   	   <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="b">
	   	   	   	   <li data-role="list-divider">Demo List</li>
	   	   	   	   <li><a href="#inputDemo">Input Demo</a></li>
	   	   	   	   <li><a href="#progressDemo">Progress Demo</a></li>
	   	   	   	   <li><a href="#webstorageDemo">WebStorage Demo</a></li>
	   	   	   	   <li><a href="#geolocationDemo">Geolocation Demo</a></li>
	   	   	   	   <li><a href="#googleMapDemo">GoogleMap Demo</a></li>
	   	   	   	   <li><a href="#websocketChat">WebSocket Chatting</a></li>
	   	   	   	   <li><a href="./list_basic.html" rel="external">Basic ListView</a></li>
	   	   	   </ul>
	   	   </div>
	   	   <div data-role="footer">
	   	   	   <h4><a href="http://zany.kr">http://zany.kr</a></h4>
	   	   </div>
	   </div>
    ...
</body>
JQUERY MOBILE
<div data-role="page" data-theme="a" id="googleMapDemo">
	 <div data-role="header">
	 	 <h1>GoogleMap Demo</h1>
	 </div>
	 <div data-role="content">

	   	   <div id="mapDivTrackingYes">
	   	   	 <input type="button" id="btnTrackingYes" value="Start Tracking"/>
	   	   </div>
	   	   <div id="mapDivTrackingNo">
	   	   	 <input type="button" id="btnTrackingNo" value="Stop Tracking"/>
	   	   </div>
	   	
	   	   <div id="mapLogArea"></div>
	   	   <div id="map_canvas"></div>

	 </div>
	 <div data-role="footer">
	 	 <h4><a href="http://zany.kr">http://zany.kr</a></h4>
	 </div>
</div>
JQUERY MOBILE
$("#googleMapDemo").live("pageshow", function() {

	     $("#mapDivTrackingNo").hide();

	     if (isSupportGeolocation()) {
	     	   navigator.geolocation.getCurrentPosition(mapSuccess, mapError);
	     }

});

function mapSuccess(position) {
	
	   mapLatitude = position.coords.latitude;
	   mapLongitude = position.coords.longitude;

	     $("#mapLogArea div").remove();
	     $("<div></div>").html(""
	     	   	  	   + "Lat: " + mapLatitude + ", "
	     	   	  	   + "Lon: " + mapLongitude).css("color","#228822").appendTo("#mapLogArea");

	     latlng = new google.maps.LatLng(mapLatitude, mapLongitude);

      ...     ...

}
JQUERY HYBRID APP DEMO
JQUERY HYBRID APP DEMO
JQUERY HYBRID APP DEMO
JQUERY HYBRID APP DEMO
✤                                                .

✤   Firebug    Chrome                       .

✤                                     ...

                              .

✤

     http://caniuse.com   http://html5test.com
DEMO



         (iPhone & Android)




http://bit.ly/zany-mobile
HTML5 웹 표준과 모바일 개발

Weitere ähnliche Inhalte

Kürzlich hochgeladen

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Kürzlich hochgeladen (20)

Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 

Empfohlen

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 

Empfohlen (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

HTML5 웹 표준과 모바일 개발

  • 1. W3 iP ho ne C ery bile HTML5 jQu 5 Mo Ph L on TM eG (@ohmyzany) ap
  • 2. HTML5 ...
  • 3. HISTORY OF HTML 1989 Tim Berners-Lee, HTML Tags CERN 1994 May The First WWW conference Geneva 1994 Sep IETF sets up HTML working group 1995 Nov HTML 2.0 IETF 1997 Jan HTML 3.2 W3C 1997 Dec HTML 4.0 W3C 1999 Dec HTML 4.01 W3C 2000 XHTML 1.0 W3C 2002 XHTML 2.0 W3C 2004 Web Applications 1.0 WHATWG 2007 HTML5 Working Group W3C 2010 Oct HTML5 Last Call Working Draft W3C
  • 5. HTML5 Jun, 2010 Nov, 2010 Mar, 2011 http://beta.html5test.com
  • 6. HTML5 Jun, 2010 IE7 Nov, 2010 Mar, 2011 IE8 IE9 RC FireFox 4.0 b12 Opera 11 Alpha Chrome 10.0 Safari 5.0 iOS 4.3 Android 2.3 0 50 100 150 200 250 300 http://beta.html5test.com
  • 7. HTML5 Jun, 2010 0 IE7 Nov, 2010 Mar, 2011 27 IE8 0 IE9 RC 139 FireFox 4.0 b12 129 Opera 11 Alpha 202 Chrome 10.0 212 Safari 5.0 125 iOS 4.3 178 Android 2.3 0 50 100 150 200 250 300 http://beta.html5test.com
  • 8. HTML5 Jun, 2010 0 IE7 17 Nov, 2010 Mar, 2011 27 IE8 27 0 IE9 RC 80 139 FireFox 4.0 b12 249 129 Opera 11 Alpha 223 202 Chrome 10.0 252 212 Safari 5.0 220 125 iOS 4.3 198 178 Android 2.3 178 0 50 100 150 200 250 300 http://beta.html5test.com
  • 9. HTML5 Jun, 2010 0 IE7 17 Nov, 2010 17 Mar, 2011 27 IE8 27 32 0 IE9 RC 80 130 139 FireFox 4.0 b12 249 255 129 Opera 11 Alpha 223 234 202 Chrome 10.0 252 288 212 Safari 5.0 220 228 125 iOS 4.3 198 206 178 Android 2.3 178 182 0 50 100 150 200 250 300 http://beta.html5test.com
  • 10. HTML5 ✤ HTML5 - http://bit.ly/chh79p ✤ - http://beta.html5test.com (http:// html5test.com)
  • 12. DOCTYPE <!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN"> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <!DOCTYPE html>
  • 13. STRUCTURAL ELEMENTS Before After http://html5doctor.com/designing-a-blog-with-html5/
  • 14. HTML5 FEATURES Web Form Web SQL Database Indexed Database Canvas / SVG Web Storage Audio / Video Web Workers Geolocation Web Socket Web GL
  • 15. HTML5 FEATURES Web Form Web SQL Database Indexed Database Canvas / SVG Web Storage Audio / Video Web Workers Geolocation Web Socket Web GL ● ● ● ● ●
  • 16. <article> <mark> <aside> <meter> <command> <nav> <details> <progress> <summary> <ruby> <figure> <rt> <figcaption> <rp> <footer> <section> <header> <time> <hgroup> <wbr>
  • 17. FORM <canvas> For making graphics with a script. <datalist> A list of options for input values. <keygen> Generate keys to authenticate users. For different types of output, such as <output> output written by a script.
  • 18. INPUT TYPE tel week search time url datetime-local email number datetime range date color month
  • 19. INPUT TYPE <input type=‘color’/> <input type=‘datetime’/> <input type=‘number’/>
  • 20. INPUT TYPE RANGE <input type=‘range’ min=’0’ max=‘100’ step=’1’/>
  • 21. INPUT PLACEHOLDER <input type=‘text’ id=‘userid’ placeholder=‘ ’/> <input type=‘password’ id=‘passwd’ placeholder=‘ ’/>
  • 22. INPUT input required , URL
  • 23. DATALIST <input type="text" list="favorite_cars"/> <datalist id="favorite_cars"> <option label="210hp" value="Kia K5"/> <option label="270hp" value="Kia K7"/> <option label="235hp" value="Hyundai Genesis"/> <option label="360hp" value="Hyundai Equus"/> <option label="174hp" value="BMW Mini Cooper"/> <option label="236hp" value="BMW Mini Cooper S"/> </datalist>
  • 24. INPUT TYPE <input type=‘text’/> <input type=‘email’/>
  • 25. INPUT TYPE <input type=‘number’/> <input type=‘tel’/>
  • 26. For multimedia content, sounds, music or <audio> other audio streams. For video content, such as a movie clip or <video> other video streams. For media resources for media elements, <source> defined inside video or audio elements. <embed> For embedded content, such as plug-in.
  • 27. AUDIO, VIDEO TAG Video Audio Ogg Ogg MPEG-4 H.264 WebM PCM MP3 AAC WebM Theora Vorbis IE9 YES YES YES Firefox 4 YES YES YES YES YES beta 7 Safari YES YES YES YES YES 5.0.2 Chrome YES YES YES YES YES YES YES YES 8.0 Opera YES YES YES YES YES 11.0 iOS YES YES YES YES YES 4.2.1 Android 2.2 http://html5test.com
  • 28. VIDEO TAG <video id="video" poster="../video/poster.png" autobuffer> <source src="../video/myvideo.ogv"/> <source src="../video/myvideo.webm"/> <source src="../video/myvideo.m4v"/> </video> <script> var videoObj = document.getElementById("video"); </script> currentTime ended ? duration paused ? volume pause() play()
  • 29. WEB GL ✤ 3D . ✤ OpenGL ES 2.0 JavaScript . ✤ , , NVIDIA, AMD,
  • 32. DEVICE APIS AND POLICY WORKING GROUP Calendar Contacts Address-book Camera Messaging and microphone (SMS, MMS, Emails) System info Device Interfaces (CPU, Network, etc) Application Launcher (KangChan Lee, WonSuk Lee) ● ● ●
  • 33. DEVICE APIS AND POLICY WORKING GROUP Calendar Contacts Address-book Camera Messaging and microphone (SMS, MMS, Emails) System info Device Interfaces (CPU, Network, etc) Application Launcher (KangChan Lee, WonSuk Lee) ● ● ● Device APIs and Policy Working Group Meeting The DAP WG is planning to have a F2F in Seoul, South Korea on March 15-18 2011, hosted by ETRI.
  • 34. HTML5 WEB STORAGE WEB APPLICATION SOFTWARE METHODS AND PROTOCOLS USED FOR STORING DATA IN A WEB BROWSER. WEB STORAGE SUPPORTS PERSISTENT DATA STORAGE, SIMILAR TO COOKIES, AS WELL AS WINDOW-LOCAL STORAGE.
  • 35. HTML5 WEB STORAGE API ✤ Cookie . ✤ Cookie . 4KB . HTTP Request . . . .
  • 36. HTML5 WEB STORAGE API ✤ HTML5 Web Storage . 5MB . . Key - Value LocalStorage, SessionStorage 2 .
  • 37. HTML5 WEB STORAGE API LocalStorage SessionStorage ( ) ( )
  • 38. HTML5 WEB STORAGE API function isSupportLocalStorage() { var result = true; try { localStorage } catch (e) { result = false; } return result; } function isSupportSessionStorage() { var result = true; try { sessionStorage } catch (e) { result = false; } return result; }
  • 39. HTML5 WEB STORAGE API var sKey = $(“#txtKey”).val(); var sValue = $(“#txtValue”).val(); try { localStorage.setItem(sKey, sValue); } catch (e) { if (e == QUOTA_EXCEEDED_ERR) { alert(“ .”); } } Key-Value pair
  • 40. HTML5 WEB STORAGE API var sKey = “userName”; localStorage.getItem(sKey); localStorage.removeItem(sKey); localStorage.clear(); SessionStorage LocalStorage .
  • 42. HTML5 WEB SQL DATABASE AN API FOR STORING DATA IN DATABASES THAT CAN BE QUERIED USING A VARIANT OF SQL.
  • 43. HTML5 WEB SQL DATABASE ✤ SQL . ✤ SQLite ✤ (http://www.caniuse.com/#search=sql) Google Chrome 7.0 ⇧ / Apple Safari 3.2 ⇧ Opera 10.5 ⇧ / iOS Safari 3.2 ⇧ / Android 2.1 ⇧ IE FireFox ✤ Indexed Database .
  • 44. HTML5 WEB SQL DATABASE ✤ Indexed Database Web SQL Database JavaScript . ( / ) SQL . SQL (Key-Value ) Firefox 4.0 beta 12 .
  • 45. HTML5 WEB SQL DATABASE
  • 46. HTML5 WEB SQL DATABASE ✤ Web SQL Database openDatabase : . transaction : . commit / rollback. executeSql : SQL Query .
  • 47. HTML5 WEB SQL DATABASE ✤ openDatabase ( Open) var db = openDatabase('mydb', '1.0', 'sample db', 2 * 1024 * 1024); db.transaction(function (tx) { // here be the transaction // do SQL magic here using the tx object }); openDatabase Parameters Creation callback
  • 48. HTML5 WEB SQL DATABASE ✤ executeSql SQL . var db = openDatabase('mydb', '1.0', 'sample db', 2 * 1024 * 1024); db.transaction(function (tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS foo (id unique, text)'); tx.executeSql('INSERT INTO foo (id, text) VALUES (1, "synergies")'); });
  • 49. HTML5 WEB SQL DATABASE ✤ executeSql . var db = openDatabase('mydb', '1.0', 'sample db', 2 * 1024 * 1024); var userID = document.getElementById('userId').value; var userName = document.getElementById('userName').value; db.transaction(function (tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS foo (id unique, text)'); tx.executeSql('INSERT INTO foo (id, text) VALUES (?, ?)', [userID, userName]); });
  • 50. HTML5 WEB SQL DATABASE ✤ executeSql ResultSet . var db = openDatabase('mydb', '1.0', 'sample db', 2 * 1024 * 1024); db.transaction(function (tx) { tx.executeSql('SELECT * FROM foo', [], function (tx, results) { var len = results.rows.length, i; for (i = 0; i < len; i++) { alert(results.rows.item(i).text); } }); });
  • 51. HTML5 GEOLOCATION THE GEOLOCATION API DEFINES A HIGH-LEVEL INTERFACE TO LOCATION INFORMATION ASSOCIATED ONLY WITH THE DEVICE HOSTING THE IMPLEMENTATION, SUCH AS LATITUDE AND LONGITUDE
  • 52. HTML5 GEOLOCATION API ✤ API. ✤ GPS . WPS : WiFi Positioning System ✤ , , , , , . ✤ navigator.geolocation object
  • 53. HTML5 GEOLOCATION API if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(success, error); } else { alert(“browser does not support geolocation”); } function success(position) { alert(“latitude=” + position.coords.latitude + “, ” + “longitude=” + position.coords.longitude); } function error(e) { alert(“Error”); }
  • 55. HTML5 WEBSOCKET A TECHNOLOGY PROVIDING FOR BI-DIRECTIONAL, FULL-DUPLEX COMMUNICATIONS CHANNELS, OVER A SINGLE TRANSMISSION CONTROL PROTOCOL (TCP) SOCKET
  • 56. ? ✤ TCP Socket IETF . ✤ 1 TCP . ✤ , , . ✤ JavaScript setInterval() Reverse Ajax (Comet) .
  • 57. CASE #1. WAS .
  • 58. CASE #2. WAS
  • 59. [Constructor (in DOMString url, in optional DOMString protocol)] interface WebSocket { readonly attribute DOMString URL; const unsigned short CONNECTING = 0; const unsigned short OPEN = 1; const unsigned short CLOSED = 2; readonly attribute unsigned short readyState; readonly attribute unsigned long bufferedAmount; attribute Function onopen; attribute Function onmessage; attribute Function onclose; boolean send(in DOMString data); void close(); }; WebSocket implements EventTarget; WebSocket Client API Working Draft - 2009 12 22
  • 60. [Constructor (in DOMString url, in optional DOMString protocol)] [Constructor (in DOMString url, in optional DOMString[] protocols)] interface WebSocket { readonly attribute DOMString URL; const unsigned short CONNECTING = 0; const unsigned short OPEN = 1; const unsigned short CLOSING = 2; const unsigned short CLOSED = 3; readonly attribute unsigned short readyState; readonly attribute unsigned long bufferedAmount; attribute Function onopen; attribute Function onmessage; attribute Function onerror; attribute Function onclose; readonly attribute DOMString protocol; void send(in DOMString data); void close(); }; WebSocket implements EventTarget; WebSocket Client API Editor’s Draft - 2010 12 14
  • 63. JavaApplet Flash HTTP Header . (Firewall Circumvention Attack) Host Header , ( ) . Cache Poisoning Attack Proxy Cache .
  • 64. (Firewall Circumvention Attack) attacker.com:843 port origin Flash . swf attacker.com:80 . Flash Player attacker.com:843 , . swf attacker.com:80 . swf Host Header . Transparent Proxy HTTP Request , Host Header .( IP Address (2.2.2.2) Host Header (target.com; 1.1.1.1) ...)
  • 66. Cache Poisoning Attack Java Applet attacker.com:80 . Java Applet Host Header . Transparent Proxy Data HTTP request , IP . HTTP Expires header . Host Header http://www.google.com/script.js ( http://attacker.com/script.js ) , http://www.google.com/script.js , .
  • 68. Proxy Upgrade-based, POST-based WebSocket Handshake . ✤ CONNECT mechanism .
  • 69.
  • 70. Firefox 4 beta 8 Opera 11.0 WebSocket . ✤ Firefox . (http://hacks.mozilla.org/2010/12/websockets-disabled-in-firefox-4/)
  • 72. HTML + NATIVE SDK HYBRID APP
  • 73. ? ✤ , Native SDK . ✤ , Native SDK .
  • 74. iPhone Safari http://splax.net/m http://www.touchapp.co.uk/iphone
  • 75. , . . . ✤ . Native .
  • 76. Native SDK HTML, CSS, JavaScript (iPhone SDK, Android SDK...) Native SDK (Native Native ) Native Browser Native
  • 77.
  • 79. HTML, CSS, JavaScript JQTouch, JQueryMobile
  • 80. Native Framework HTML, CSS, JavaScript JQTouch, JQueryMobile
  • 81. iPhone SDK Android SDK Native Framework HTML, CSS, JavaScript JQTouch, JQueryMobile
  • 82. iPhone SDK Android SDK Native App Native Framework HTML, CSS, JavaScript JQTouch, JQueryMobile
  • 83. iPhone SDK Android SDK Native App Native Framework HTML, CSS, JavaScript JQTouch, JQueryMobile
  • 84. iPhone SDK Android SDK Native App App Store Native Framework HTML, CSS, JavaScript JQTouch, JQueryMobile
  • 85. iPhone SDK Android SDK Native App App Store Native Framework HTML, CSS, JavaScript JQTouch, JQueryMobile
  • 86. iPhone SDK Android SDK Native App App Store Native Framework HTML, CSS, JavaScript JQTouch, JQueryMobile
  • 87. (iPhone, Android, Blackberry, Tablet PC...) ✤ iPhone / iPad Native SDK Macintosh . ✤ Android Windows, Mac, Linux . ✤ Blackberry Windows . Macintosh .
  • 88. Xcode 3.2.4 iOS4 ✤ Eclipse Galileo ✤ PhoneGap Framework ✤ JQuery Framework (for JQueryMobile) ✤ JQueryMobile or JQTouch Framework ✤ Android SDK & Blackberry SDK
  • 89. PHONEGAP BUILDING CROSS-PLATFORM MOBILE APPS IN HTML, CSS AND JAVASCRIPT
  • 90. PHONEGAP ? ✤ HTML, CSS, JavaScript . . ✤ HTML5 . , .
  • 95.
  • 96.
  • 97.
  • 98.
  • 99. JQUERY MOBILE TOUCH-OPTIMIZED WEB FRAMEWORK FOR SMARTPHONES & TABLETS
  • 100. JQUERY MOBILE ✤ JavaScript Framework. ✤ UI Layout . Theme . ✤ Event . Tap, Swipe, Orientation, Scroll... ✤ JQuery Framework Ajax, Animation, Transitions, Dialogs...
  • 101. JQUERY MOBILE <link rel="stylesheet" href="./script/jquery.mobile-1.0a2.min.css"/> <script src="./script/jquery-1.4.4.min.js"></script> <script src="./script/jquery.mobile-1.0a2.min.js"></script> ✤ <head> JQueryMobile . ✤ . ✤ Alpha 3... ...
  • 102. JQUERY MOBILE <meta name="apple-touch-fullscreen" content="yes" /> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="apple-mobile-web-app-status-bar-style" content="black" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0;"/> <meta charset="UTF-8"> <title>Hybrid App Demos - zany.kr</title> <link rel="apple-touch-startup-image" href="./images/splash_iphone4.png"/> <link rel="apple-touch-icon" href="./images/icon.png"/> <link rel="stylesheet" href="./base.css" /> <link rel="stylesheet" href="./script/jquery.mobile-1.0a2.min.css" /> <script src="./script/jWebSocket.js"></script> <script src="./script/jquery-1.4.4.min.js"></script> <script src="./script/jquery.mobile-1.0a2.min.js"></script> <script src="http://maps.google.com/maps/api/js?sensor=true"></script>
  • 103. JQUERY MOBILE $(document).bind("mobileinit", function() { // Initialize }); $(document).ready(function() { // Document Ready });
  • 104. JQUERY MOBILE <div data-role="page"> <div data-role="header">...</div> <div data-role="content">...</div> <div data-role="footer">...</div> </div> header content footer
  • 105. JQUERY MOBILE <body onload="onBodyLoad()"> <div data-role="page" data-theme="a" id="main"> <div id="headerArea" data-role="header"> <h1>HybridApp Demo</h1> </div> <div data-role="content"> <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="b"> <li data-role="list-divider">Demo List</li> <li><a href="#inputDemo">Input Demo</a></li> <li><a href="#progressDemo">Progress Demo</a></li> <li><a href="#webstorageDemo">WebStorage Demo</a></li> <li><a href="#geolocationDemo">Geolocation Demo</a></li> <li><a href="#googleMapDemo">GoogleMap Demo</a></li> <li><a href="#websocketChat">WebSocket Chatting</a></li> <li><a href="./list_basic.html" rel="external">Basic ListView</a></li> </ul> </div> <div data-role="footer"> <h4><a href="http://zany.kr">http://zany.kr</a></h4> </div> </div> ... </body>
  • 106. JQUERY MOBILE <div data-role="page" data-theme="a" id="googleMapDemo"> <div data-role="header"> <h1>GoogleMap Demo</h1> </div> <div data-role="content"> <div id="mapDivTrackingYes"> <input type="button" id="btnTrackingYes" value="Start Tracking"/> </div> <div id="mapDivTrackingNo"> <input type="button" id="btnTrackingNo" value="Stop Tracking"/> </div> <div id="mapLogArea"></div> <div id="map_canvas"></div> </div> <div data-role="footer"> <h4><a href="http://zany.kr">http://zany.kr</a></h4> </div> </div>
  • 107. JQUERY MOBILE $("#googleMapDemo").live("pageshow", function() { $("#mapDivTrackingNo").hide(); if (isSupportGeolocation()) { navigator.geolocation.getCurrentPosition(mapSuccess, mapError); } }); function mapSuccess(position) { mapLatitude = position.coords.latitude; mapLongitude = position.coords.longitude; $("#mapLogArea div").remove(); $("<div></div>").html("" + "Lat: " + mapLatitude + ", " + "Lon: " + mapLongitude).css("color","#228822").appendTo("#mapLogArea"); latlng = new google.maps.LatLng(mapLatitude, mapLongitude); ... ... }
  • 112. . ✤ Firebug Chrome . ✤ ... . ✤ http://caniuse.com http://html5test.com
  • 113. DEMO (iPhone & Android) http://bit.ly/zany-mobile

Hinweis der Redaktion

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. \n
  87. \n
  88. \n
  89. \n
  90. \n
  91. \n
  92. \n
  93. \n
  94. \n