Dev/Web

GoogleGear Sample source

newtype 2007. 7. 4. 03:42

얼마전 구글에서 GoogleGear라는 것을 배포 했다.
처음엔 어떤것인지도 몰랐는데..
최근에 알게된 사실로는 오프라인에서도 웹서핑을 도와준다고 한다.

자세히 내용을 살표보니 SQLite를 이용해 웹에 있는 자료들을 미리 읽어들어 저장해 두고,
오프라인 일 때도 써먹는 다는 내용이였다.

사실, IE의 "오프라인으로 작업"등 비슷한 기능은 이미 있었다.
하지만, 역시 구글이다.
개발자들이 편하게 접근할 수 있도록 GoogleGear API를 열어두었다.

그럼, 코드로 만나보자.

1. GoogleGear를 사용하기 위해서는 먼저 설치가 되어있어야 한다.
   처음 발표되었을때, 뭔지도 모르고 미리 설치는 해두었다 ^^;

2. gears_init.js 파일을 html안에 포함 해야한다.
<script src="gears_init.js"></script>
  gears_init.js 파일을 미리 받아 놓고 위 코드를 html에 포함 해도 되고,
  gears_init.js 파일의 내용 전부를 html 파일에 포함 시켜도 된다.

3. 설치 여부 체크
  html 파일이 열리면, GoogleGear가 설치되어 있는지 체크 하는 부분이 있어야 한다.
  if ( !window.google || !google.gears ) 
  {
      alert('GoogleGear를 먼저 설치하세요.');
      return;
  }

4. DB파일을 생성한다.
SQLite는 파일 하나로 Database를 로칼 컴퓨터에 생성 한다.
FireFox에서는 C:\Documents and Settings\<사용자명>\Application Data\Mozilla\Firefox\Profiles\<임시이름>.default\urlclassifier2.sqlite 라는 파일이 생성되었다.
  try {
    db = google.gears.factory.create('beta.database', '1.0');
  } catch (ex) {
    alert('Database를 생성할 수 없습니다: ' + ex.message);
  }

5. 테이블을 만든다.
  if (db) {
    db.open('address');
    db.execute('create table if not exists ntAddress' +
               ' (name varchar(255), phone varchar(255), email varchar(255) , Timestamp int)');

    display();
  }
  소스를 보면 알겠지만, 자바스크립트에서 쿼리를 직접 날린다. @.@

6. 쿼리를 날린다.
   이렇게 쉽게 사용이 가능하다.
   try {
    db.execute('insert into ntAddress values (?, ?, ?, ?)', [oName.value, oPhone.value, oMail.value, currTime]);
  } catch (e) {
    alert(e.message);
    throw new Error(e.message);
alert (e.message);
   }

   이제까지 Google API가 그러했듯이 엄청 간단하다.
   우리가 잘 아는 쿼리를 직접 날리고,
   무거운 작업의 경우 WorkPool을 이용해 백그라운드로 돌릴 수도 있다.
   LocalServer를 이용해 서버 정보를 간단하게 캐쉬로 만들어 저장하는 할 수도 있는 듯하다.
   Google에서 제공하는 샘플 소스 및 툴 을 받아보자

   손가락이 근질근질 하지 않은가. 흐흐흐흐흐...
 



덧글,
샘플 코딩하면서 삽질을 했다.
innerHTML 스크립트가 IE7에서 먹지 않는 것이다.
한참 삽질을 하다가 IE7 관련 자료에서 이런 문구를 발견 했다.
IE does not support when setting a div’s innerHTML property
div 테그를 span으로 바꾸고 간단히 해결했다.
신버전은 구버전과 호환 되게 해달라고!!!  버럭



반응형