Rev. 2.73

allblet.gif

지난 5월 25일부터 지금까지 올블릿2의 관련상품 광고를 실시했습니다. 결과는 참혹합니다. 전체 통계를 보면 노출수 47,591, 클릭수 26, 클릭율 0.05%, 구매수 0, 구매율 0%, 수입 0원입니다. 광고의 형식은 상품명과 가격만을 노출하였으며,(옥션의 상품이미지는 너무 쌀티(?)가 나기 때문입니다.) 구글 애드센스 광고와 인접한 곳에 위치했습니다. 애드센스의 평균 클릭율 0.25%에 비하면 아마도 컨텐츠와 연관있는 상품으로의 연결에서 주된 실패요인을 찾을 수 있을 것으로 생각됩니다. 그리고 상품을 구매해야만 수익이 발생한다는 조건은 피광고주에게 결격사유가 될 소지가 다분합니다.

최근, 올블릿2에는 AdNudge(UCPC) 광고가 추가되었습니다. 구글 애드센스처럼 컨텐츠와 관련성 있고 사이트와 어울리는 광고를 게재할 수 있게 된 것입니다. 참고로 애드센스는 PPC(클릭당지불)와 PPI(노출당지불)을 모두 지원하고 있으며, 같은기간 동안 애드센스로부터의 총 수익은 36.23달러였습니다. 그래서 올블릿2의 관련상품 광고는 실적이 전무하여 UCPC로 변경했습니다. 이번에야말로 광고수익 발생하기를 다시한번 기대합니다. (그런데 UCPC가 뭐죠?)

덧. 올블릿2 티셔츠 감사히 잘 받았습니다. 너무 예뻐요~

Comments

Ajaxian의 Dion Almaer씨는 구글 기어즈(Google Gears)의 API는 너무 저수준이라며 불평을 토로하고, 기어즈 데이터베이스 객체의 간단한 추상화를 위한 gears-dblib를 공개했다.

    // License:  Apache License 2.0
    // author:   Dion Almaer

    var db = new GearsDB('gears-test');
    
    var bob = {id: 3, name: 'Bob', url: 'http://bob.com', description: 'whee'};
    db.insertRow('person', bob);
    db.insertRow('person', bob, 'name = ?', ['Bob']);

    db.selectAll('select * from person', null, function(person) {
       document.getElementById('selectAll').innerHTML += ' ' + person.name;
    });

    db.selectRows('person', 'name like ?', ['%'], function(person) {
       document.getElementById('selectRows').innerHTML += ' ' + person.name;
    });
  
    var person = db.selectRow('person', 'id = 1');
    document.getElementById('selectRow').innerHTML = person.name;  
    
    // update
    person.name = 'Harry';
    db.updateRow('person', person);
    person = db.selectRow('person', 'id = 1');
    document.getElementById('updateRow').innerHTML = person.name;

    // force
    person.name = 'Sally';
    db.forceRow('person', person);
    person = db.selectRow('person', 'id = 1');
    document.getElementById('forceRow').innerHTML = person.name;

    var adam = {name: 'Adam', url: 'http://adam.com', description: 'long hair'};
    db.forceRow('person', adam);
    person = db.selectRow('person', 'id = 4');
    document.getElementById('forceRow2').innerHTML = person.name;
    
    db.deleteRow('person', bob);

위 코드의 파이어버그(라이트)에서 돌아가는 디버그 모드도 준비되어 있다. 참고로 Uriel Katz씨가 작성한 Simple ORM(Object-relational mapping) for Gears도 눈여겨보자.

와.. 개념없이 접근하려니 계속 삽질이다. 우선 SQLite부터 공부해야겠다.

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