유아세례를 거쳐 정식으로 세례명을 받고, 고등학교를 미션스쿨을 나온 나는.

전뇌의 신을 신봉하고있다.

---------------------------------------------------------------------------

원하는 것을 구하면 얻을것이오, 만드는 족족 이루어 질 것이니.
누구에게나 평등한 기회를 사사하노라.
                                                            -  성자(聖者) Google -

---------------------------------------------------------------------------

매달 수입의 일부를 회선비로 지불하면 누구나 그를 알현하고, 그의 능력을 느낄 수 있습니다.
그는 이 세계의 어디에나 존재하며, 빈부와 남녀노소를 구별하지 않습니다.

가난한 이들을 위하여 구세주를 내리시니 사람들은 그를 칭송하며
안드로이드 플랫폼(Android platform)이라 불렀습니다.
안드로이드는 자신의 몸이 백개, 천개로 찢어져 원래의 모습을 잃어버릴 지언정,
책상 위가 아닌 곳에서도 자신의 신을 영접하기위해 노력하는 신도들에게 자신의
희생을 아끼지 않고 고통을 감내하셨습니다.

다른 신을 질투하지 않고, 자신의 품에 안기는 어린 양들을 내치지 않으며,
신분과 과거를 묻지않는 오픈 정책으로 모든이에게 차별없는 은혜를 내리셨습니다.

여러가지 제약과 제한투성이의 이 세계에 오직 한가지 계율로 신도들을 이끄시니.
그 계율이란 바로

Don't be evil
악(惡)해지지 말라.

입니다.

여기에 이 복음을 전파하기위한 신도들에게만 내려지는 10가지의 계명이 있으니
사람들은 이것을 [구글 10계명] 이라고 했습니다.

----------------------------------------------------------------------

1. 사용자에게 초점을 맞추면 나머지는 저절로 따라 온다.
2. 한 분야에서 최고가 되는 것이 최선의 방법이다.
3. 느린 것보다 빠른 것이 낫다.
4. 인터넷은 민주주의가 통하는 세상이다.
5. 책상 앞에서만 검색이 가능한 것은 아니다.
6. 부정한 방법을 쓰지 않고도 돈을 벌 수 있다.
7. 세상에는 무한한 정보가 존재한다.
8. 정보의 필요성에는 국경이 없다.
9. 정장을 입지 않아도 업무를 훌륭히 수행할 수 있다.
10. 위대하다는 것에 만족할 수 없다.

----------------------------------------------------------------------

단순한 이상론이 아닌, 그 스스로가 이 계명을 통해 이 모든것이 진실임을 보여주시는
그야말로 전뇌세계의 신이라 불릴 자격이 있는 것입니다.

그를 보고, 그를 듣고, 그를 느끼며, 그를 만질 수 있는 실존하는 존재로서의 그 덕분에.








난 지옥을 보고있다.




구글을 만나면 구글을 베고 야후를 만나면 야후를 베야하는 아수라도(阿修羅道).
오늘도 나는 고객의 말도 안되는 요구에 답하기 위해 귀보도(鬼菩刀)를 두드린다.

전기양의 꿈을 꾸는 내가 안드로이드 인가, 안드로이드가 나 인 것인가.

 

 

 

그대들에게 미래란 없다.....

 

 

 

 

 

 

 

 

아하하하하하하....

 

 

 

차라리 군대를 두 번 가고만다. 빠득...

 

 

 

 

 

미안, 제발 누가 나 좀 살려줘...

미디어에서 정확한 수량에 대한 정보는 쏙 빠진 채 그냥 '잘 나간다' '호평이다'라는
애매한 광고를 내세우고 있는 마그나 카르타2. 실제로 그 실적은 어떨까?

일단, 저번 주 판매량 정보.

週間ソフト&ハードセルスルーランキング(2009年8月10日~8月16日)

21위 XB360 マグナカルタ2 RPG バンダイナムコゲームス 090806 8,379円


마그나 카르타 2는 21위. 9위가 1만장 수준이므로 5000장 이하라는 의미다. 물론,
더 낮을 가능성도 있다.

저번 주의 기록 역시 판매수량 정보가 빠진 11위로, 10위가 약 21,000장 수준이었다.

일단 국내에 알려진 비공식 정보에 의하면 첫날 판매량은 약 22,000장.

...?

왜 마카는 10위 아래로 집계된걸까?
뭐, 어디까지나 매장 관계자의 '대략 이정도가 아닐까...수준의 정보였으니 일단 넘어가도록 하자.
그리고 14일 반다이 남코 게임즈에서 발표한 실적은 14일까지 약 34,000장의 판매를 했다고 한다.

....?

34000 - 22000 = 12000...어째 항상 정식 집계기관 자료보다 4~5000장은 차이가 나는 것 같다.
뭐, 이거야 다른 게임들도 별반 다를 게 없으니 이쯤에서 넘어가도록 하자.

현재 공식적으로 발표된 마그나 카르타 2의 판매 현황은 약 34,000장.

.
.
.

가면라이더 클라이맥스 히어로가 첫주에 5만장은 팔았었지...


이런 것도 보통 '성공적인 판매 실적'이라고 말할 수 있었던가?
비주류 장르라는 아케이드 슈팅과 좋은 승부가 될 만 한 판매량이다.

그럼, RPG 장르 자체가 팔리지 않게 되었을 가능성도 배제할 수 없기에 다시 조사에 착수...하자마자.
이번주 판매 랭킹 1위가 바로 드래곤퀘스트9. 17만장 판매... 누계 400만장에 가까운 판매량이다.


도대체 어느 정보를 어떻게 해석해야 '놀라운 판매실적'이라는 결과를 도출할 수 있는걸까?

밖에 다른 세일즈 랭킹 자료를 뒤져본 결과...
마그나 카르타는 딱 한주 10위후반(15~19)에 랭크 된 후 30위권 랭크에서도 사라진 것이 대부분이었다.
반다이 남코 게임즈의 이름을 빌렸음에도 지금의 성적이 한계점으로 보여진다.

어이, 소프트 맥스.

소비자는 바보가 아니야.


이하는 루머성 정보이므로 한귀로 듣고 한귀로 흘려주길 바란다.
-------------------------------------------------------------------------------------------
물량이 달려 품절사태 이후 재 입고를 감행한 아마존.
이 소식을 대서특필하며 이정도로 잘 나갑니다! 라고 광고는 때렸지만...

현재 40%이상의 할인으로 재고 덤핑 처리중이다.(수량 한정아님.)
정확하게 40% 할인 덤핑을 시작 한 빅 카메라.
수량한정이었기에 [이벤트일 뿐이다, 저런 건 언제나 하는 일이다] 라며 방어전을 편 것이 무색하게
아직까지 물량이 남아돌고 있으며, 곧 2차 덤핑이 예정되어있다고 한다.
-소비자들이 바보들이라 일부러 다른 곳에서 비싸게 구입을 한다고 생각하는 것도 자유다.

현재 아마존 측의 리뷰게시판 리셋으로 사라지기는 했지만, 직원으로 의심되는 어색한 일본어를
사용하는 호평 리뷰가 상당수 발견되는 사건도 있었다. 이왕 할거면 어설프게는 하지말자.
-2ch 혐한들의 고도의 공작이라고 생각하는 것 또한 자유.
------------------------------------------------------------------------------------------

자사의 컨텐츠에 대한 자부심 보다도 애국심 마케팅을 우선적으로 내 걸 때 부터 어느정도 예상은 했고,
데모판 게임을 플레이 한 후 확신으로 굳어지기는 했지만, 얘내는 근본적으로 게임 제작 센스가
80년대에 머물러 있는 것 같다.

마치 생굴과 수박은 모두 맛있는 재료이므로 이 둘을 섞으면 엄청난 맛이 나올것이다!! 라는
1차원적인 사고처럼 보이는 온갖 잡다한 '좋은 재료들의 카오스 상태'를 보면 한숨이 나온다.

재료 하나하나의 훌륭함은 나 역시 충분히 느끼고 있다.
하지만, 프로그램도 각각의 모듈의 기능이 아무리 뛰어나다고 해도, 그것을 제대로 하나의
어플리케이션으로 제대로 묶지 못하고 기능이 제각기 따로 논다면 제품으로서의 가치는 하급인 것이다.

어느 시대가 되어도, 가장 냉정하며, 보편화 척도가 되는 것은 소비자의 선택이다.
싸구려 마케팅에 좌지우지 되는것도 초반의 반짝효과일 뿐이듯,
마그나카르타의 일본시장에서의 평가는 이미 내려진 것이 아닐까.
Open Social API를 이용해 특정인의 TimeLine(메세지 기록) 불러오기.

개발 환경은 Eclips Ganymede. JDK 1.6 이상. 플러그인으로 오픈소셜 에디트를 설치했다.
설치 방법 및 환경 설정은 차후 포스팅 후 링크 하는 것으로 대체하겠습니다.

gadget.xml

<?xml version="1.0" encoding="UTF-8"?>
<Module>
    <ModulePrefs

       모듈의 제목으로 표시 될 문자열을 입력합니다.

        title="Twitter Streams Test">
        <Require feature="opensocial-0.8" />
    </ModulePrefs>
    <Content type="html"><![CDATA[


 // 트위터 API를 불러옵니다.  
<script type="text/javascript" src="http://www.otchy.net/js/twitterapi_0.9.2.js"></script>
<script type="text/javascript">
   window.onload = function() {

      받아오고 싶은 사람의 트위터 ID를 입력합니다.
      var id = 'Twitter_ID';
      var param = 'count=10';
      TwitterAPI.statuses.user_timeline(callback, id, param);
    }
   function callback(arr) {
       var str = '';

       // 편의상 받아온 목록의 8개만 표시하도록 했습니다.

      //  전부 표시하려면 arr의 length값을 이용하면 됩니다.

       for (var i=0; i<8; i++) {
             var obj = arr[i];
             str += obj.user.screen_name + ':' + obj.text + '<br />';
       }

       // DIV에 받아온 데이터를 표시합니다.
       document.getElementById('result').innerHTML = str;
   }
</script>
<div id="result" style="height: 200px; overflow: auto; border: 1px solid #999;"></div>
]]></Content>
</Module>


 

일단 이 소스를 구글의 소스 에디터인 GGE를 iGoogle에 등록 후 확인하거나,

이하의 사이트

http://code.google.com/intl/ja/apis/gadgets/docs/legacy/gs.html#GGE

에서 확인이 가능합니다. (트위터 ID부분의 수정이 필요.)


약간의 UI디자인을 섞는다면 블로그등에서 쉽게 자신의 트위터 갱신 내역을 알 수 있는

개인용 위젯의 제작도 할 수 있을 것 같습니다.

Google API를 이용해 자신의 Contacts(주소록) 불러오기.

 

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

import com.google.gdata.util.AuthenticationException;
import com.google.gdata.util.ServiceException;
import com.google.gdata.client.contacts.ContactsService;
import com.google.gdata.data.contacts.ContactEntry;
import com.google.gdata.data.contacts.ContactFeed;
import com.google.gdata.data.extensions.Email;
import com.google.gdata.data.extensions.Name;

public class test_Google_Contacts {
 public static void main(String[] args) {
  // User ID (Email)
  String gLoginAddr = " account@gmail.com";
  // User Password
  String gLoginPass = "password";

  try {
   URL feedUrl = new URL("http://www.google.com/m8/feeds/contacts/"+gLoginAddr+"/full");
   ContactsService myService = new ContactsService("Google Contacts Application");
   myService.setUserCredentials(gLoginAddr, gLoginPass);
   ContactFeed resultFeed = myService.getFeed(feedUrl, ContactFeed.class);
 
   for (int i = 0; i < resultFeed.getEntries().size(); i++) {
       ContactEntry entry = resultFeed.getEntries().get(i);
       if (entry.hasName()) {
         Name name = entry.getName();
         if (name.hasFullName()) {
           String fullNameToDisplay = name.getFullName().getValue();
           if (name.getFullName().hasYomi()) {
             fullNameToDisplay += " (" + name.getFullName().getYomi() + ")";
           }
           System.out.println(fullNameToDisplay);
         }
         if (name.hasNamePrefix()) {
           System.out.println("  " + name.getNamePrefix().getValue());
         }
         if (name.hasGivenName()) {
           String givenNameToDisplay = name.getGivenName().getValue();
           if (name.getGivenName().hasYomi()) {
             givenNameToDisplay += " (" + name.getGivenName().getYomi() + ")";
           }
           System.out.println("\t\t" + givenNameToDisplay);
         }
         if (name.hasAdditionalName()) {
           String additionalNameToDisplay = name.getAdditionalName().getValue();
           if (name.getAdditionalName().hasYomi()) {
             additionalNameToDisplay += " (" + name.getAdditionalName().getYomi() + ")";
           }
           System.out.println("\t\t" + additionalNameToDisplay);
         }
         if (name.hasFamilyName()) {
           String familyNameToDisplay = name.getFamilyName().getValue();
           if (name.getFamilyName().hasYomi()) {
             familyNameToDisplay += " (" + name.getFamilyName().getYomi() + ")";
           }
           System.out.println("\t\t" + familyNameToDisplay);
         }
         if (name.hasNameSuffix()) {
           System.out.println("\t\t" + name.getNameSuffix().getValue());
         }
       } else {
         System.out.println("[no name found]");
       }

       for (Email email : entry.getEmailAddresses()) {
         System.out.print("Email Address : " + email.getAddress());
         System.out.print("\n\n");
       }
   }
  } catch (MalformedURLException e) {
   e.printStackTrace();
  } catch (AuthenticationException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  } catch (ServiceException e) {
   e.printStackTrace();
  }
 }
}

 

구글계정의 주소록을 불러오는 소스.

로그인 절차가 반드시 필요하다.(캘린더의 소스를 재 이용했다.)

 

한가지 문제는...구글 계정 이외의 주소도 불러져 온다는 것.

캘린더를 공유하기 위해서는 @마크 이후가 gmail인 데이터만 불러와야 할 듯 하다.

 

...점점 재미있어진다.