슬라이드 1

Similar documents
10.ppt

Modern Javascript

untitled

XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

HTML5가 웹 환경에 미치는 영향 고 있어 웹 플랫폼 환경과는 차이가 있다. HTML5는 기존 HTML 기반 웹 브라우저와의 호환성을 유지하면서도, 구조적인 마크업(mark-up) 및 편리한 웹 폼(web form) 기능을 제공하고, 리치웹 애플리케이 션(RIA)을

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

thesis

Chap7.PDF

(Humphery Kim) RAD Studio : h=p://tech.devgear.co.kr/ : h=p://blog.hjf.pe.kr/ Facebook : h=p://d.com/hjfactory :

DocsPin_Korean.pages

..,. Job Flow,. PC,.., (Drag & Drop),.,. PC,, Windows PC Mac,.,.,. NAS(Network Attached Storage),,,., Amazon Web Services*.,, (redundancy), SSL.,. * A

<B1DDC0B6C1A4BAB8C8ADC1D6BFE4B5BFC7E C8A3292E687770>

(Microsoft PowerPoint \277\243\305\315\307\301\266\363\300\314\301\356 \260\374\301\241\300\307 HTML5)

HTML5* Web Development to the next level HTML5 ~= HTML + CSS + JS API

초보자를 위한 분산 캐시 활용 전략

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

MS-SQL SERVER 대비 기능

FileMaker 15 WebDirect 설명서

<FEFF E002D B E E FC816B CBDFC1B558B202E6559E830EB C28D9>

C H A P T E R 2

Microsoft PowerPoint - web-part03-ch19-node.js기본.pptx

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

2

Microsoft PowerPoint - ch02_인터넷 이해와 활용.ppt

Week13

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

第 1 節 組 織 11 第 1 章 檢 察 의 組 織 人 事 制 度 등 第 1 項 大 檢 察 廳 第 1 節 組 대검찰청은 대법원에 대응하여 수도인 서울에 위치 한다(검찰청법 제2조,제3조,대검찰청의 위치와 각급 검찰청의명칭및위치에관한규정 제2조). 대검찰청에 검찰총장,대

구축환경 OS : Windows 7 그외 OS 의경우교재 p26-40 참조 Windows 의다른버전은조금다르게나타날수있음 Browser : Google Chrome 다른브라우저를사용해도별차이없으나추후수업의모든과정은크롬사용 한

<%DOC NAME%> User Manual

<4D F736F F D205B4354BDC9C3FEB8AEC6F7C6AE5D3131C8A35FC5ACB6F3BFECB5E520C4C4C7BBC6C320B1E2BCFA20B5BFC7E2>

<4D F736F F F696E74202D E20C0CEC5CDB3DD20C0C0BFEB20B9D720BCADBAF1BDBA20B1E2BCFA E >

쿠폰형_상품소개서

초보자를 위한 ADO 21일 완성

untitled

강의 개요

Javascript.pages

Microsoft Word - privacypolicy_bk4.docx

PowerPoint Presentation

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

MySQL-.. 1

DBMS & SQL Server Installation Database Laboratory

Index

ESET Mobile Security for Android

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

PowerPoint Presentation

TTA Journal No.157_서체변경.indd

User Guide


untitled

2.1+ Offline package installation. Web storage Persistent and session storage. Web SQL storage (no active) Persistent SQLite storage. Geolocation Geol

PowerPoint 프레젠테이션

접근성과 웹 The power of the Web is in its universality. Access by everyone regardless of disability is an essential aspect. Tim Berners-Lee, the inventor

PowerPoint Template

playnode.key

1989 Tim Berners-Lee invents the Web with HTML 1991 First Web Browser Released HTML Tags Specification Released 1994 First World Wide Web Conference H

Microsoft PowerPoint - 10Àå.ppt

Microsoft PowerPoint - F3-1-이원석

3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT

e- 11 (Source: IMT strategy 1999 'PERMISSION ' ) The World Best Knowledge Providers Network

<B0B3C0CEC1A4BAB85FBAB8C8A3B9FDB7C95FB9D75FC1F6C4A7B0EDBDC35FC7D8BCB3BCAD C3D6C1BE292E687770>

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

歯sql_tuning2

ODS-FM1

Microsoft Word - 김완석.doc

(72) 발명자 서진교 경기 용인시 수지구 풍덕천2동 1167 진산마을 삼성5차아파트526동 1004호 조필제 경기 용인시 풍덕천동 유스빌 401호 - 2 -

00-CourseSyllabus

ALTIBASE HDB Patch Notes

3장

C# Programming Guide - Types

Building Mobile AR Web Applications in HTML5 - Google IO 2012

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

Secure Programming Lecture1 : Introduction

untitled

목 차 Ⅰ. 일반사항 1 Ⅱ. 특기사항 3 Ⅲ. 물품내역 및 세부규격 8 Ⅳ. 주의사항

Microsoft PowerPoint - 04-UDP Programming.ppt

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Mars OS System Administration Guide

6강.hwp

User's Guide Manual

게시판 스팸 실시간 차단 시스템

13주-14주proc.PDF

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

MySQL-Ch10

Microsoft PowerPoint - CoolMessenger_제안서_라이트_200508

NoSQL

PowerPoint 프레젠테이션

Analyst Briefing

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

공지사항

Intra_DW_Ch4.PDF


bn2019_2

Microsoft PowerPoint Python-DB

BEef 사용법.pages

MySQL-Ch05

슬라이드 1

1217 WebTrafMon II

Transcription:

Client-Side Storage in HTML5 작성자 : 전용우 ( mixed@nhn.com) 작성년월일 : 2011/02/22 c 2010 NHN CORPORATION

목차 1. Storage History 2. Web Storage 3. Web Database 4. Indexed Database

1. Storage History

1.1 The First Browser War(95') 4 / Client-Side Storage in HTML5

1.2 userdata ( 도메인마다 64 KB) 5 / Client-Side Storage in HTML5

1.3 Local Shared Objects( 2002 Flash6) ( 도메인마다 100 KB) 6 / Client-Side Storage in HTML5

1.3 Google Gear( 2007 ) SQLite 을기반으로하는 SqlDB 데이터제한없음. 7 / Client-Side Storage in HTML5

1.4. HTML5 Web Storage Web Database 8 / Client-Side Storage in HTML5

2. Web Storage(aka DOM Storage)

2.1. Cookie 와비교 1. 사용하기쉽다. 2. 용량이크다.(5kb/5mb) 3. 서버에데이터를젂송하지않는다. 4. 유효기갂이없다. 10 / Client-Side Storage in HTML5

2.3. 지원현황 Internet Explorer 8 Firefox 3.5 Safari 4 Google Chrome 4 Opera 10.50 Iphone 2.0 Android 2.0 11 / Client-Side Storage in HTML5

2.2. localstorage 와 sessionstorage 차이 sessionstorage 는브라우저를닫으면사라지고 localstorage 는지속적으로남음. 12 / Client-Side Storage in HTML5

2.3. localstorage 메서드 localstorage.setitem("bar", foo ); // 값저장 var foo = localstorage.getitem("bar"); // 값반환 var foo = localstorage["bar"]; localstorage["bar"] = foo; localstorage.removeitem("bar"); // 값삭제 localstorage.key();// 마지막 key 값 localstorage.key(1);// 마지막에서두번째 key 값 localstorage.key(2);// 없으면 null localstorage.clear(); // 모두삭제 localstorage.length ; // 저장된수 13 / Client-Side Storage in HTML5

3. Web Database

3.1. Web Database SQLLite 을기반으로하는 브라우저에내장된 DB. 15 / Client-Side Storage in HTML5

3.2. 지원현황 Safari 4.0 Chrome 4.0 Opera 10.50 Iphone 3.0 Android 2.0 16 / Client-Side Storage in HTML5

3.2. Database 생성 opendb : function(){ this.db = opendatabase('addressbook', '1.0', ' 데이터베이스 ', (5 * 1024 * 1024)); } 17 / Client-Side Storage in HTML5

3.3. Table 생성. createtable : function(){ this.db.transaction(function(tx){ tx.executesql('create TABLE contacts (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT, email TEXT, cell TEXT) ); }); }, 18 / Client-Side Storage in HTML5

3.4. Row 생성. insertrow : function(){ this.db.transaction(function(tx){ tx.executesql('insert INTO contacts (name, email, cell) VALUES (?,?,?)', ["mixed","mixed@nhn.com","000000"], function(transaction, resultset){ console.log("create row. id = %s",resultset.insertid); // 생성된 id }); }); }, 19 / Client-Side Storage in HTML5

3.4. Row Fetch. selectrow : function(){ this.db.transaction(function(tx){ tx.executesql('select * FROM contacts', [], function(transaction, resultset){ for (var i = 0; i < resultset.rows.length; i++) { console.log(resultset.rows.item(i)); } }); }); }, 20 / Client-Side Storage in HTML5

3.5. Row 수정. updaterow : function(){ this.db.transaction(function(tx){ tx.executesql('update contacts set cell=? Where id=?;', ["aaaaaa","3"], function(transaction, resultset){ console.log resultset.rowsaffected); // 변경된 row 수 }); }); }, 21 / Client-Side Storage in HTML5

3.6. Row 삭제. deleterow : function(){ this.db.transaction(function(tx){ tx.executesql('delete from contacts where id=?;', ["3"], function(transaction, resultset){ console.log("delete row"); }); }); } 22 / Client-Side Storage in HTML5

3.7. WebDB 의문제점 1. SQLLite 는표준 SQL92 를대부분지키긴했으나중요한일부분을빼먹었음. 2. SQLLite 는표준이아니라 HTML5 의표준정책에위반됨. 3. SQLLite 가 Upgrade 시문제가있음. 23 / Client-Side Storage in HTML5

4. IndexedDB(aka Web Simple DB)

4.1. IndexedDB 클라이언트에대용량데이터를저장하고 인덱스를이용하여보다빠르게찾는 API 25 / Client-Side Storage in HTML5

4.2. 왜 IndexedDB 인가? localstorage 는용량이작고구조화된 데이터를다루기엔부족. 26 / Client-Side Storage in HTML5

4.3. 지원현황? IE ( 플러그인 ) Firefox4 beta10 Chrome 11 Safari, Opera 미구현 27 / Client-Side Storage in HTML5

4.3. IndexedDB 의지원방식 동기접근 ( 미지원 -WebWork 을이용 ) 비동기접근 ( 지원 firefox4.b8 부터 ) - 각자실행되고 callback 로대답한다. 28 / Client-Side Storage in HTML5

4.4. IndexedDB 의 API API 설명 29 / Client-Side Storage in HTML5

4.5. IndexedDB 의 API DB 생성 DB 생성 30 / Client-Side Storage in HTML5

4.5. IndexedDB 의 API DB 생성 AddressBook 31 / Client-Side Storage in HTML5

4.5. IndexedDB 의 API DB 생성 this.db = window.mozindexeddb.open( "AddressBook",// 이름 " 책관련데이터베이스 // 설명 ); 32 / Client-Side Storage in HTML5

4.6. IndexedDB 의 API Object Store 생성 Object Store 33 / Client-Side Storage in HTML5

4.6. IndexedDB 의 API Object Store 생성 AddressBook contracts 34 / Client-Side Storage in HTML5

4.6. IndexedDB 의 API Object Store 생성 // 반드시버젂이변경되어야맊 ObjectStore생성및인덱스등을변경할수있음. var store = this.resultidbdatabase.createobjectstore( "contacts", // 이름 {"keypath": "id"} //pk // in-line keys - 자동생성, out-of-line keys - 직접입력 //false // 자동증가. firefox4 default false, w3c true ); 35 / Client-Side Storage in HTML5

4.6. IndexedDB 의 API Object Store 생성 var request = this.resultidbdatabase.setversion( parseint(math.random() * 100)); request.onsuccess = function(){ var store = this.resultidbdatabase.createobjectstore( "contacts", {"keypath": "id"} ); } 36 / Client-Side Storage in HTML5

4.6. IndexedDB 의 API Object Store 생성 var request = this.resultidbdatabase.setversion( parseint(math.random() * 100)); request.onsuccess = function(){ var store = request.result.objectstore("contacts"); store.createindex( "CellPhone", // 인덱스명 ); }.bind(this); "cell" false // 인덱스속성 // 중복여부 37 / Client-Side Storage in HTML5

4.7. IndexedDB 의 API Data manipulate Data manipulate 38 / Client-Side Storage in HTML5

4.7. IndexedDB 의 API Data manipulate AddressBook contracts Id Name Email cell 39 / Client-Side Storage in HTML5

4.7. IndexedDB 의 API Data manipulate var writetransaction = this.resultidbdatabase.transaction( [ "contacts" ],// 잠글 object store명 IDBTransaction.READ_WRITE // Lock type (READ_ONLY, READ_WRITE) //,30 timeout 밀리세컨드 ); var store = writetransaction.objectstore( "contacts" ); var id = parseint(math.random() * 100); var writerequest = store.add({ "name" : "mixed", "email" : "mixed@nhn.com", "cell": id, "id" : id }); 40 / Client-Side Storage in HTML5

4.7. IndexedDB 의 API Data manipulate writerequest.onsuccess = function(e){ console.log (writerequest.result);//id }.bind(this); writerequest.ontimeout = function ( e ) { alert("timeout"); writetransaction.abort(); }; 41 / Client-Side Storage in HTML5

4.7. IndexedDB 의 API Data manipulate AddressBook contracts Id Name Email cell Id Name Email cell 42 / Client-Side Storage in HTML5

4.7. IndexedDB 의 API Data manipulate var writetransaction = this.resultidbdatabase.transaction( [ "contacts" ], IDBTransaction.READ_WRITE ); var store = writetransaction.objectstore( "contacts" ); var writerequest = store.delete(id); 43 / Client-Side Storage in HTML5

4.7. IndexedDB 의 API Data manipulate var request = store.get(id); request.onsuccess = function(event){ request.result.email = "i.nevalose@gmail.com"; var request2 = store.put(request.result); request2.onsuccess = function(){ console.log("modified"); } }.bind(this); 44 / Client-Side Storage in HTML5

4.8. IndexedDB 의 API Data Fetch Data Fetch 45 / Client-Side Storage in HTML5

4.8. IndexedDB 의 API Data Fetch AddressBook contracts Id Name Email cell Id Name Email cell Id Name Email cell Id Name Email cell 46 / Client-Side Storage in HTML5

4.8. IndexedDB 의 API Data Fetch var store = readtransaction.objectstore( "contacts" ); var request = store.get(this.id); request.onsuccess = function(event){ }; console.log(request.result); // 데이터 47 / Client-Side Storage in HTML5

4.8. IndexedDB 의 API Data Fetch var store = readtransaction.objectstore( "contacts" ); var request = store.getall(); request.onsuccess = function(){ } console.log(request.result); //data 배열 48 / Client-Side Storage in HTML5

4.8. IndexedDB 의 API Data Fetch var store = readtransaction.objectstore( "contacts" ); var readcursor = store.opencursor(); readcursor.onsuccess = function ( e ) { if ( readcursor.result ) { console.log( readcursor.result); // 데이터 readcursor.result["continue"](); }else{ console.log("end"); } }; 49 / Client-Side Storage in HTML5

4.8. IndexedDB 의 API Data Fetch var store = readtransaction.objectstore( "contacts" ); var bounds = new IDBKeyRange.bound( 0, // 시작 10, // 끝 false, // 시작포함여부근데반대로되어있음. true // 끝포함여부 ); var readcursor = store.opencursor( bounds ); //IDBCursor.NEXT - 정방향 //IDBCursor.NEXT_NO_DUPLICATE 정방향이면서중복제외 //IDBCursor.PREV - 역방향 //IDBCursor.PREV_NO_DUPLICATE 역방향이면서중복제외 50 / Client-Side Storage in HTML5

4.8. IndexedDB 의 API Data Fetch var index = store.index("cellphone"); var bounds = new IDBKeyRange.bound(10, 90, false, false); var readcursor = index.opencursor( bounds ); 51 / Client-Side Storage in HTML5

4.8. IndexedDB 의 API Data Fetch var manipulatecursor = store.opencursor(); manipulatecursor.onsuccess = function ( e ) { if ( manipulatecursor.result ) { if(manipulatecursor.result.value.id%2 == 0){ manipulatecursor.result.delete(); }else{ manipulatecursor.result.value.name = " 젂용우 "; manipulatecursor.result.update( manipulatecursor.result.value); } manipulatecursor.result["continue"](); }else{ console.log("end"); } }; 52 / Client-Side Storage in HTML5

4.9. IndexedDB 의장점 1. WebDB는명시적으로 transaction을해야하지맊 IndexedDB는오브젝트단위로자동 transaction. 2. IndexedDB는오브젝트를넣을수있음. 3. cursor을이용하여보다빠르게얻어올수있음. 4. *lower* layer라사용자에게더맋은옵션을선택할수있게한다. 53 / Client-Side Storage in HTML5

Reference http://www.w3.org/tr/indexeddb/ http://diveintohtml5.org/storage.html http://en.wikipedia.org/wiki/browser_wars#the_first_browser_war http://msdn.microsoft.com/en-us/library/ms531424(vs.85).aspx http://hacks.mozilla.org/2010/06/beyond-html5-database-apis-and-the-road-to-indexeddb/ http://hacks.mozilla.org/2010/06/comparing-indexeddb-and-webdatabase/ http://en.wikipedia.org/wiki/web_storage http://code.google.com/p/indexeddb/ http://www.hotcleaner.com/web_storage.html http://antmicro.com/blog/2010/07/async-indexeddb-js-api-test/ http://sites.google.com/site/usingindexeddb/ https://developer.mozilla.org/en/indexeddb http://mxr.mozilla.org/mozilla-central/source/dom/indexeddb/test/test_key_requirements.html?force=1#33 http://nparashuram.com/trialtool/index.html#example=/ttd/indexeddb/moz_indexeddb.html&selected=#db& http://html5doctor.com/introducing-web-sql-databases/ http://uxebu.com/blog/2011/01/17/indexeddb-updates-ff4-09b/ http://news.cnet.com/8301-30685_3-20000376-264.html?tag=mncol;title http://blogs.msdn.com/b/interoperability/archive/2010/12/21/indexeddb-prototype-available-for-internet-explorer.aspx http://blogs.msdn.com/b/interoperability/archive/2011/02/03/the-indexeddb-prototype-gets-an-update.aspx http://mikewest.org/2010/12/intro-to-indexeddb http://blog.submitmy.info/2010/04/html5-client-side-storage/ https://developer.mozilla.org/en/indexeddb/indexeddb_primer 54 / Client-Side Storage in HTML5

Thank you.