Rev. 2.73

시기를 놓쳐 까맣게 잊고 있다가 이제서야 소개합니다. 인도출신 개발자들에 의해 탄생한 Zoho는 웹에 기반하는 생산성 애플리케이션들의 묶음입니다. 통합형 웹 오피스정도로 축약할 수 있겠습니다. Writer(워드프로세서), Sheet(스프레드시트), Show(프리젠테이션), Meeting(공유), Notebook(노트), DB & Reports(DB관리), Planner(일정 관리), Projects(프로젝트 관리), CRM(고객 관리), Creator(소그룹간 협업), Wiki(위키), Chat(그룹 채팅), Mail(그룹웨어) 서비스를 제공하며, 이들 대부분이 Ajax를 이용해 구축되었습니다. Zoho외에도 웹 오피스계 왕좌를 노리는 웹 애플리케이션은 Google Apps, MS Office Live, ThinkFree, Zimbra 등이 있습니다. 그 중에서도 강력한 주자인 Google Apps보다 인터페이스가 뛰어나다는 평을 받고, 심심찮게 벤치마크 대상이 되기도 하며, MS가 인수에 나섰다는 루머도 있습니다.

zoho.jpg

소개는 이즈음으로 마치고 주제에 대해 말씀드리면, Zoho는 그동안 구글 Gears를 이용해 온라인에서 생성한 문서들을 오프라인에서 조회가 가능하게 했던 것을 최근들어 오프라인에서도 생성/편집을 가능케하는 기능을 추가했습니다. Connection자체가 곧 Installation이고, Synchronization이 되는 신개념을 만들어 냈군요. 웹 애플리케이션이 가지는 한계를 뒤엎는 행보가 어디까지 계속될지 귀추가 주목됩니다. 그나저나 구글은 죽쒀서 개 준 꼴이 되고 말았네요.

Comments

Google Developer Day에서 발표된 Google Gears(구글 기어즈)는 오프라인에서도 온라인처럼 사용할 수 있는 클라이언트 스토리지 솔루션입니다. 특징을 보면, SQLite를 이용한 데이터 처리 및 문서 검색, 서버와 클라이언트 사이의 데이터 동기화, 개발자와 사용자를 위한 JavaScript APIs를 들 수 있습니다.(Channy님의 포스트 인용) 아시다시피, Google은 Google reader에 실제로 오프라인(Offline) 서비스를 추가하였습니다. 아래의 자바스크립트 예문을 봅시다.

function initDb() {
  if (!window.google || !google.gears) {
    return;
  }

  db = getDb();
  run('create table if not exists feeds (' +
             'id integer not null primary key autoincrement,' +
             'title varchar(255),' +
             'url varchar(255),' +
             'description text)');

  run('create table if not exists posts (' +         
             'id integer not null primary key autoincrement,' +
             'feed_id integer,' +
             'title varchar(255),' +
             'url varchar(255),' +
             'content text)');
}
 
function getDb() {
  try {
    var theDb = google.gears.factory.create('beta.database', '1.0');
    theDb.open('rssbling');
    return theDb;
  } catch (e) {
    alert('Could not create the rssbling database: ' + e.message);
  }
}

 
/*
* Check to see if the feed is already there before adding it
*/
function addFeed(title, url, description) {
  var rslt = executeToObjects('select id from feeds where title = ? and url = ?', [title, url])[0];
  if (rslt) { return; }
  run('insert into feeds (title, url, description) values (?, ?, ?)', [title, url, description]);
}

 
function selectPosts(feed_id) {
  return executeToObjects("select * from posts where feed_id = ?", [feed_id]);
}

서버단 코딩없이 자바스크립트가 직접 DB쿼리를 날리는 발상은 기가 막힙니다. 온라인 환경에서만 사용할 수 있는 웹 취약점을 보완하는 것 뿐만 아니라, 더욱 다양한 형태로 활용될 수 있을 것입니다. 예를 들어 얼마전 소개한 Ajax기반 운영체제에 있어서 오프라인은 로컬파일 접근과 다를바 없으며, 오프라인에서도 보여지는 웹서비스 또는 블로그는 Gears의 사용가능한 DB에 직접 접근하여 로딩속도 증가 및 트래픽 분산효과를 기대할 수 있고, 비교적 통신환경이 저조하거나 비용이 비싼 모바일은 더할나위없는 솔루션입니다. PDA 서비스중 하나인 아반고(avantgo)와 비슷한 맥락이기도 합니다. 자바스크립트만으로 하나의 완성된 애플리케이션을 개발한다는 관점으로 다가서면 Gears는 상식을 뒤엎습니다. 여담입니다만, 꽤나 인지도있는 자바스크립트 라이브러리인 Dojo는 Gears를 사용한 프로젝트를 발빠르게 시작한 모양입니다.(비디오 인터뷰)

그래서 개인적으로 Gears API를 이용한 오프라인 블로깅 프로젝트를 진행해 볼까 생각하고 있습니다. 버스나 지하철 기타 교통수단 속에서 노트북이나 PDA등으로 실제 블로그를 접속한 듯이 포스트를 읽고 작성하며 실제 온라인환경에서는 몇번의 싱크만으로 이루어지는 블로깅 멋지지 않습니까?

Comments