• 2008-07-09

    Google Docs Form

    이번주부터 구글 스프레드시트에다가 CBT 일정 계획을 작성중인데, 혁신적인 기능이 있어서 한번 공유해본다. (이미 다들 아실지도..)

    우선 스프레드 시트를 하나 만들고 아래와 같이 헤더를 구성한다.

    http://boxcatstudio.files.wordpress.com/2009/07/spreadsheet.jpg

    그다음 Form - Create Form 메뉴를 이용해서 폼을 구성해보자. HTML 표준 폼 구성요소를 모두 지원하며, 정말 손쉽게 폼을 만들어낼 수 있다.

    http://boxcatstudio.files.wordpress.com/2009/07/cbt.jpg

    이렇게 만든 폼은 메일로 보내거나, iframe 을 이용해서 위키나 인트라넷 등 다양한 웹페이지에 게시할 수 있다. 그러면 어떻게 될까? 사람들이 폼에 값을 입력하면, 그 값들이 자동적으로 스프레드시트에 쌓이게 된다!! 당연히 그 결과물인 스프레드 시트 역시 웹에 게시할 수 있으며, pdf 나 xls 로 내보내기를 해서 메일로 쏴 줄 수도 있다.

    http://boxcatstudio.files.wordpress.com/2009/07/gantt2.jpg

    아쉬운 점이라면 폼에서 캘린더 스타일의 날짜 입력이 지원되지 않는다는 건데, 그래서 간트 차트 가젯을 만들기가 좀 난감해서 일단은 더미 날짜를 넣어서 만들어봤다. 어쨌든 이 정도만 되어도, 위키에서 표를 다루느라 고생하는 기획자나 디자이너들에게는 큰 선물이 아닐까. 간단한 설문 조사를 해도 되겠고, 나아가서는 표 형식의 어떤 게임 데이터도 관리할 수 있을테니 말이다.

    ps. viewpath 에서는 무료 온라인 간트 차트를 지원하는 모양이다.

  • 2008-07-04

    Google Test

    구글에서 나온 C++ Unit Test Framework.

    대체적으로 다른 프레임워크와 유사한데 몇몇 특징적인 기능들이 눈에 띄어서 요약해본다.

    Custom Failure Message : 테스트 실패시 에러 메시지를 보다 친절하게 쓸 수 있다. 아래 예제처럼 i 값을 출력할 수 있다는 점이 멋지다.

    
    for (int i = 0; i < x.size(); ++i) {
    EXPECT_EQ(x[i], y[i]) << "Vectors x and y differ at index " << i;
    }
    

    Predicate Assertions : 테스트 코드에서 함수를 호출했다가 실패하면, 파라미터로 뭘 넘겼는지를 출력해준다.

    
    bool MutuallyPrime(int m, int n) { ... }
    const int a = 3;
    const int b = 4;
    const int c = 10;
    EXPECT_PRED2(MutuallyPrime, b, c);
    .....
    MutuallyPrime(b, c) is false,
    where
    b is 4
    c is 10
    

    Scoped Assert : 다른 함수에 테스트 코드가 들어있고, 이걸 여러 테스트에서 사용할 경우 도대체 어느 테스트에서 실패했는지를 알려주는 기능이다.

    
    10: void Sub1(int n) {
    11: EXPECT_EQ(1, Bar(n));
    12: EXPECT_EQ(2, Bar(n + 1));
    13: }
    14:
    15: TEST(FooTest, Bar) {
    16: {
    17: SCOPED_TRACE("A"); // This trace point will be included in
    18: // every failure in this scope.
    19: Sub1(1);
    20: }
    21: // Now it won't.
    22: Sub1(9);
    23: }
    ...
    path/to/foo_test.cc:11: Failure
    Value of: Bar(n)
    Expected: 1
    Actual: 2
    Trace:
    path/to/foo_test.cc:17: A
    path/to/foo_test.cc:12: Failure
    Value of: Bar(n + 1)
    Expected: 2
    Actual: 3
    

    --gtest_break_on_failure : 테스트를 디버거로 실행할 경우, 주요 에러 발생시 바로 해당 라인에서 브레이크가 걸리게해주는 커맨드라인 명령. 이 기능이면 테스트 실행 -> 실패 발견 -> 해당 라인에 브레이크 걸기 -> 디버거 붙여서 재시작 이라는 귀찮은 작업에서 해방된다.

    --gtest_filter : 특정 테스트만 실행하고 싶을 때, 기존 코드를 건드리지 않고 커맨드라인에서 필터링을 할 수 있다. 이거야말로 대박 기능인 듯!

    --gtest_filter=FooTest. : FooTest 하위 테스트를 모두 실행
    --gtest_filter=
    Null:Constructor : 이름에 "Null" 또는 "Constructor"를 포함한 모든 테스트를 실행
    --gtest_filter=-
    DeathTest. : DeathTest 가 아닌 모든 테스트를 실행
    --gtest_filter=FooTest.
    -FooTest.Bar : FooTest 중에서 FooTest.Bar를 제외한 나머지 테스트를 실행
    --gtest_repeat : 테스트를 N번 실행할 수 있다. --gtest_filter 와 함께 쓰면 특정 테스트만 반복해서 수행할 수 있다.

    DISABLED_ : 임시로 테스트를 실행하지 않으려면 코멘트로 막는 대신 이름 앞에다가 DISABLED_ 를 붙이면 된다.

    대충 기능만 훑어봤는데도 이 넘들이 진짜 테스트에서 귀찮은 게 무엇인지를 잘 알고 만들었다는 느낌이 든다. 멋진 놈들이란 말이야

  • 2008-07-01

    Google Trends

    http://www.google.com/intl//trends/logo_sm.gif

    구글 트렌드구글 검색의 패턴 및 통계를 보여주는 서비스다. 이번에 뭔가 리뉴얼되었다길래 한번 구경해봤다.

    가장 먼저 요즘 사내 이슈가 되고 있는 오픈 베타 서비스 시기는 언제로 하면 좋을까? 를 알아보기 위해 baseball 을 검색해봤다.

    http://boxcatstudio.files.wordpress.com/2009/07/baseball.png

    사실 정답은 MLB 일정과 맞춰야 한다는 뻔한 놈인데, 이건 baseball + MLB로 검색해보면 알 수 있다. 여기서 연관어의 중요성을 알 수 있다. :)








    baseball






    1.00








    mlb






    0.30

    http://boxcatstudio.files.wordpress.com/2009/07/baseball_mlb.png

    즉 무조건 내년 3월에는 오픈을 해야 한다는 소리가 된다. ㅠㅠ 뭐 이미 각오하고 있는 바이므로 이번엔 다른 걸 검색해보자. 미국에 야구 팬은 많은데 그 중에서 얼마나 많은 사람들이 야구 게임을 즐길까? 라는 고전적인 의문의 답을 찾아보고 싶었지만, 특별히 떠오르는 검색어가 없으므로 online baseball 과 fantasy baseball 을 찾아봤다.








    online baseball






    1.00








    online baseball game






    0.10








    fantasy baseball






    3.50

    http://boxcatstudio.files.wordpress.com/2009/07/onlinebaseball_fantasybaseball.png

    역시나 아직까지 미국 온라인 야구 시장은 실제 데이터를 기본으로 하는 환타지 야구에 비하면 10-20% 밖에 안되는 모양이다. (그리고 환타지 야구 역시 MLB 일정을 따라가고 있는 걸 확인할 수 있다.)

    이번엔 우리의 적(이라고 쓰고 큰형님이라고 읽는다)인 MLB 시리즈들을 살펴보자.








    mlb 08






    1.00








    mlb 07






    1.20








    mlb the show






    2.80

    http://boxcatstudio.files.wordpress.com/2009/07/mlb08.png

    웬지 매년 출시할 때마다 인기가 높아진다는 느낌이 든다. 아마도 판매량이 가장 높은 시기는 1사분기이리라. 웬지 씁쓸하니 이번엔 우리 게임에 대해서 한번 알아볼까 한다.









    real baseball






    1.00








    cal ripken






    3.15








    online baseball game






    0.95


    http://boxcatstudio.files.wordpress.com/2009/07/calripken.png

    우리 게임이 Ultimate baseball Online 에서 Cal Ripken's Real Baseball로 이름을 바꾼게 올초였는데, 검색 패턴은 립켄 횽아랑 비슷한 것 같다. 더이상 자세한 설명은 구차하므로 생략한다.

    다른 게임들은 어떨까? 팡야를 살펴보면 아마도 태국 > 인도네시아 > 필리핀 순으로 동남아에서 인기를 끄는 모양이다. 그런데 올초 Wii용 팡야가 출시되었음에도 검색 빈도가 점점 시들해지고 있다. ^^;;;

    http://boxcatstudio.files.wordpress.com/2009/07/pangya.png

    헬게이트 런던, 헉슬리, 길드워를 검색해보면 웬지 안타깝다.








    hellgate london






    1.00








    guild war






    0.15








    huxley






    0.35

    http://boxcatstudio.files.wordpress.com/2009/07/hellgate.png

    이 외에도 Wii, 엑박, PS3 등 3대 콘솔들을 검색해보면 웬지 크리스마스때 장사가 잘 되는 모양이다.









    wii






    1.00








    xbox 360






    0.52








    ps3






    0.70


    http://boxcatstudio.files.wordpress.com/2009/07/console.png


    음... 피곤해서 오늘 검색 놀이는 여기까지. 뭔가 의미있는 통계 정보를 알아내려면 정확한 검색어와 연관어를 잘 찾아야 한다는 게 오늘의 교훈이 아닐까 싶다.

  • 2008-07-01

    Google Apps

    http://www.google.com/a/help/intl/ko/images/150x55.gif

    회사 법인 카드를 빌려서 냉큼 google apps를 신청했다. 비용은 고작 도메인값 $10/year.

    예전에 이 서비스가 처음 나왔을 때 .com 이름으로 하려다가 whois.co.kr에서 CName 레코드 편집을 지원해주지 않아서 포기했다가, N모사에서 google apps로 거의 마이그레이션했다는 이야기를 듣고 용기를 내서, 오늘자로 .net 이름을 구글에서 바로 등록해버렸다.

    우리 회사의 경우 미국 본사랑 한국 지사 2군데에서 동시 접근 가능한 솔루션이 필요한데, 본사에다 설치하면 우리는 방화벽 + VPN 을 통해서 접근해야 해서 속도도 느리고, 또 주기적으로 시스템 보안 체크도 해줘야 하는 부담이 있다. (패스워드 1234로 쓰는 사람 정말 싫다..) 반대로 우리 인트라넷을 본사의 누군가가 접근하도록 포트를 열어주는 일도 생각보다 피곤한 일이다. 이걸 구글로 옮기면 속도도 빠르고 보안 관리도 신경쓰지 않아도 되니, 쿠웨이트에서 발생한 ISP 캐시 문제 같은 일만 안생기면 진짜 편할텐데... 회사 자산을 외부에 둔다는 걸 설득하는 일이 만만치 않아서 포기하고 있는 상태다.

    게다가, 일전에 37signalsbasecamp 서비스를 전사적으로 도입했다가 특유의 느린 반응 속도 때문에, 서서히 용도폐기되어 가는 걸 직접 겪었기 때문에, 이번에는 큰 욕심 없이 우리 회사 DBA랑 단둘이서 google docs랑 캘린더 위주로 테스트 삼아 써볼 계획이다. 쓰다가 효용성을 깨닫게 되면 어떻게든 누군가에게 전파되려니 하고 '긍정적'으로 생각중이다. 흘흘.