Apache HTTPD and Tomcat Easy & Fast installation guide

1) Install httpd and httpd_devel using yum.

# yum install httpd**

2) Download the latest tomcat and tomcat connectors

# wget http://mirror.khlug.org/apache/tomcat/tomcat-6/v6.0.20/bin/apache-tomcat-6.0.20.tar.gz
# wget http://www.apache.org/dist/tomcat/tomcat-connectors/jk/source/jk-1.2.28/tomcat-connectors-1.2.28-src.tar.gz

3) Compile tomcat connectors

# tar -xvfz http://www.apache.org/dist/tomcat/tomcat-connectors/jk/source/jk-1.2.28/tomcat-connectors-1.2.28-src.tar.gz
# cd tomcat-connectors-1.2.28-src/native
# ./configure --with-apxs=/usr/sbin/apxs
# make
# su -c 'make install'

4) Configurations

4-1) Add jk module to httpd.conf.
# vi /etc/httpd/conf/httpd.conf

LoadModule jk_module modules/mod_jk.so
//JkMount /*.jsp ajp13

<ifmodule jk_module="">
  JkWorkersFile conf/workers.properties
  JkLogFile logs/mod_jk.log
  JkLogLevel error
</ifmodule>

4-2) Set an tomcat/jdk home path.
# vi /etc/httpd/conf/workers.properties

workers.tomcat_home=/usr/local/src/tomcat6
workers.java_home=/usr/java/jdk_1.6.0.17

4-3) Edit {$TOMCAT_HOME}/server.xml

...
    <Host name="centos.com"  appbase="/home/test" unpackWARS="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
    <Context Path="" docBase="" debug="1" allowLinking="true" reloadable="true"></Context>
...

5) Changes SELinux policy

If you see something along the lines of:

Sep 15 10:56:57 fc5test kernel: audit(1158314217.408:259): avc:
denied  { name_connect } for  pid=2245 comm="httpd"
dest=8009 scontext=system_u:system_r:httpd_t:s0
tcontext=system_u:object_r:port_t:s0 tclass=tcp_socket

then there is some work to do. Note, the “avc: denied” message references httpd (the Apache daemon) and port 8009 as the destination for a tcp socket connection (this is the Tomcat port from earlier). To allow Apache to perform network connects, you can do the following:

setsebool -P httpd_can_network_connect=1

This will allow Apache to perform network connections and will store this change in the booleans.local file in /etc/selinux/targeted/modules/active so it wil be reloaded at next boot.

BMW Z4 Wallpaper (1680x1050 size)

This is my car at Jungdongjin beach on the East Sea in Korea. It's made as a 1680x1050.

2009 Happy Christmas, 정동진 여행기

BMW Z4가 비록 후륜이지만 눈길과 빗길을 전혀 두려워하지 않는 나.. (-_-;;)
어김없이 과감히, 강원도 산길 국도 대관령을 뚫었습니다.
사진으론 표현이 잘 안되지만 정말 아름답더군요.



지나가던 길에 풍력발전 연구소가 있었습니다.
물론 바람은 거셌고, 풍력발전기는 뱅글뱅글~
얼어죽는줄 알았다는.



정동진에 도착해서는 가장 먼저 밥을 먹었습니다.
밥을 먹는 내내 주방 아주머니들이 강원도 사투리를 쓰시는데 귀엽다는 생각이 들더군요.
아마 '웰컴 투 동막골'에서 강원도 사투리가 귀엽게 소개된 탓인것도 같으나,
근본적으로 액센트자체가 귀여운 듯.



또 한번 어김없이 과감히, ..
"들어갈곳 못들어갈곳이 없다", "내가 가는 곳이 곧 길이다", 해변까지 GoGo.
(철판 깔면 누구나 가능함 ㅋ)



아, 바다는 아름답고 일몰도 멋졌(대부분 일출보러가던데)습니다.
요즘 답답한 마음이 뻥 뚫린다고나 할까. :)

모쪼록, 정동진으로 여행을 가신다면 반드시 국도를 애용해보세요!

Explore Followers of You With Twitter Cumulus!

Google Image Swirl was an inspiration to me. So, I just made the twitter cumulus using REST API. It's really simple But It's a 3D!!!! :)

All code written in javascript. You can simply use this and source code available if you want. How to? See this page, or query URL as below:

http://people.apache.org/~edwardyoon/twitter-cumulus.html?id={YOUR_TWITTER_ID}

P.S. If you have a lot of followers, do not use. It'll be slow.

Removing friendships using Twitter API

I just wanted to remove all friendships at once. (As you know, If there is a lot of friends, It could be a rough job... ) There is a Java library for TwitterAPI. So, I could program it. :)

public static void main(String args[]) throws Exception {
    Twitter twitter = new Twitter("user_id", "passwd");
    List list = twitter.getFriendsStatuses();

    for (int i = 0; i < list.size(); i++) {
      User user = list.get(i);
      twitter.destroyFriendship(String.valueOf(user.getId()));
      System.out.println("Un-following " + user.getName());
    }
  }

[Book] Pro Hadoop

Hadoop 관련 책을 살펴보다 Apache Hama가 언급된 부분이 있어, "아니 이런 훌륭한 책이 어디 또 있는가?" ㅋㅋ 스스로 감개무량하여 블로그에 포스팅 해둡니다. (아직 다 읽어보진 못해서 review는 패스)

도서 개요

You've heard the hype about Hadoop: it runs petabyte-scale data mining tasks insanely fast, it runs gigantic tasks on clouds for absurdly cheap, it's been heavily committed to by tech giants like IBM, Yahoo!, and the Apache Project, and it's completely open source (thus free). But what exactly is it, and more importantly, how do you even get a Hadoop cluster up and running?

From Apress, the name you've come to trust for hands-on technical knowledge, Pro Hadoop brings you up to speed on Hadoop. You learn the ins and outs of MapReduce; how to structure a cluster, design, and implement the Hadoop file system; and how to build your first cloud-computing tasks using Hadoop. Learn how to let Hadoop take care of distributing and parallelizing your software--you just focus on the code, Hadoop takes care of the rest.

Best of all, you'll learn from a tech professional who's been in the Hadoop scene since day one. Written from the perspective of a principal engineer with down-in-the-trenches knowledge of what to do wrong with Hadoop, you learn how to avoid the common, expensive first errors that everyone makes with creating their own Hadoop system or inheriting someone else's.

Skip the novice stage and the expensive, hard-to-fix mistakes...go straight to seasoned pro on the hottest cloud-computing framework with Pro Hadoop. Your productivity will blow your managers away.
What you'll learn Set up a stand-alone Hadoop cluster the smart way, laid out simply and step by step so you can get up and running quickly to build your next data center, collaborative, data-intensive Internet services application, Software as a Service (SaaS), and more. Optimize your Hadoop production tasks like an experienced pro. Work with time-proven, bulletproof standard patterns that have been tested and debugged in high-volume production. Understand just enough theoretical knowledge to know why something works in Hadoop, without getting bogged down in abstruse walls of theory. Get detailed explanations of not only how to do something with Hadoop, but also why, from a front-line coder with years in the Hadoop game. Turn someone else's expensive cluster-wide "wrong" into an orderly, productive "right" with professional-level debugging and testing.
Who is this book for?

IT professionals interested in investigating Hadoop and implementing it in their organizations, and existing Hadoop users who want to deepen their professional toolkits. About the Apress Pro Series

The Apress Pro series books are practical, professional tutorials to keep you on and moving up the professional ladder.

You have gotten the job, now you need to hone your skills in these tough competitive times. The Apress Pro series expands your skills and expertise in exactly the areas you need. Master the content of a Pro book, and you will always be able to get the job done in a professional development project. Written by experts in their field, Pro series books from Apress give you the hard-won solutions to problems you will face in your professional programming career.

Mircosoft's Bing (Korea) provides search engine with the Daum, corp.

Today, I just noticed that the http://bing.com is automatically redirected to
http://bing.search.daum.net/search?q=bing.

BTW, Daum and Bing's search results are exactly the same. It looks like a bing-skinned version of Daum search engine. LOL

- daum search result
- bing search result

See also,
- Microsoft’s Bing fails to crack Korea

Hot spring bath, .. 온천욕 매니아

정확히 기억은 안납니다만 언제부터인지 못해도 주-(week) 마다 한번은 꼭 온천을 갑니다. 오늘도 어김없이 ㅋ.



남한산성에서 점심을 먹고, 넘어가는 길에 찍은 사진입니다. '퇴촌 스파그린랜드'를 갔지요. (가장 좋아하는 코스) 오늘은 날씨가 크게 나쁘지않아서 탑을 오픈해도 춥지않고, 적당하더군요.

온천지에 도착해서는 도저히 '촬영 정신'을 연결할 수 없어서, 사진은 이것으로 끝납니다. 홀딱 벗어야 되는 상황도 한 몫 했을것이고..

굳이 이후 상황을 말로 전달하자면, 따듯한 온천에 가만히 누워 하늘을 바라보는 그 맛은 정말 '신선놀음'이라 할 수 있지요. 명품 악세서리, 고급 스포츠카, 맛있는 음식, ..., 등등 무엇보다 달콤한 맛이죠.

이렇게 (한국나이) 31살 12월을 보내고 있습니다.

Serialize Printing of HelloWorld using BSP of Hama

Apache Hama Team made the BSP package, which is a computational model based on the concept of supersteps on the top of Hadoop for perform matrix/graph computations with better performance. It provide more flexible programming model than Map/Reduce, and more simple APIs than MPI. The vertical system structure of the BSP is as below:



Sequential composition of "supersteps".
- Local computation
- Process Communication
- Barrier Synchronization

* More detailed will be announced very soon.

To helping understand the Synchronization and Superstep, I made a "Serialize Printing of Hello World" example.

The below codes create 10 BSPPeerThreads. Each thread will have a shuffled ID number from 0 to 9.
BSPPeerThread thread;
    int[] randomSequence = new int[] { 2, 3, 4, 5, 0, 1, 6, 7, 8, 9 };
    for (int i = 0; i < NUM_PEER; i++) {
      conf.set("bsp.peers.num", String.valueOf(NUM_PEER));
      conf.set(BSPConstants.PEER_HOST, "localhost");
      conf.set(BSPConstants.PEER_PORT, String
          .valueOf(30000 + randomSequence[i]));
      conf.set(BSPConstants.ZOOKEEPER_SERVER_ADDRS, "localhost:21810");
      thread = new BSPPeerThread(conf, randomSequence[i]);
      thread.start();
      System.out.println(randomSequence[i] + ", " + thread.getName());
      list.add(thread);
    }

    for (int i = 0; i < NUM_PEER; i++) {
      list.get(i).join();
    }

Try to run below codes, then you'll see the output in order of thread ID. (It'll take 10 steps)

for (int i = 0; i < NUM_PEER; i++) {
        if (myId == i) {
          echo.add(getName());
          System.out.println("Hello BSP from " + i + " of " + NUM_PEER + ": "
              + getName());
        }

        try {
          Thread.sleep(2500);
          peer.sync();
        } catch (IOException e) {
          e.printStackTrace();
        } catch (KeeperException e) {
          e.printStackTrace();
        } catch (InterruptedException e) {
          e.printStackTrace();
        }
      }

Google Chrome is available today on Linux!

Oh yes!! I love it.

----
Hello everybody out there using Linux -

Google Chrome is go for beta on Linux! Thanks to the many Chromium and WebKit developers who helped make Google Chrome a lean, mean browsing machine. Here are a few fun facts from us on the Google Chrome for Linux team:

60,000 lines of Linux-specific code written
23 developer builds
2,713 Linux-specific bugs fixed
12 external committers and bug editors to the Google Chrome for Linux code base, 48 external code contributors

Thanks for waiting and we hope that you enjoy using Google Chrome!


Google Chrome Team



http://www.google.com/chrome/intl/en/w00t.html

--------

(c) 2009 Google www.google.com 1600 Amphitheatre Parkway, Mountain
View CA 94043 United States of America.

Google is a trademark of Google Inc. All other company and product
names may be trademarks of the respective companies with which they
are associated.

Drawing a pie chart using Google Chart API

Really useful!!!

----
The Google Chart API lets you dynamically generate charts. To see the Chart API in action, open up a browser window and copy the following URL into the address bar:

http://chart.apis.google.com/chart?cht=p3&chd=t:60,40&chs=450x200&chl=Hello|World

Press the Enter or Return key and - presto! - you should see the following image:


Introducing Google Public DNS

어제 구글 공식 블로그에서 Google Public DNS 에 대해 소개가 있었습니다 -- Official Google Blog: Introducing Google Public DNS

DNS라는건 Domain Name System의 약자로 IP 주소를 도메인 네임(Domain Name)으로 매칭해주는 시스템으로, blog.udanax.org 와 같은 도메인을 브라우저로 입력하면, DNS 서버의 데이터베이스를 참조하면서 해당 서버를 찾아가는 일련의 작업을 내부에서 하게됩니다. 이건 통상 ISP 인터넷 제공자, 즉 KT나 뭐 그런애들이 제공하는데, 이걸 자기들이(Google) public DNS 제공해서 좀더 빠르게 해주겠다는 얘기로 요약됩니다.

어떻게 사용하냐? 사용법은 간단하게 DNS server 주소를 8.8.8.8 과 8.8.4.4 로 변경해주면 됩니다.

(리눅스 기준) DNS server를 아래와 같이 변경하면 됩니다.
[edward@udanax ~]# cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4


윈도우즈도 마찬가지로 네트워크 연결 속성에서 DNS server ip를 8.8.8.8 과 8.8.4.4 로 바꿔주면 됩니다.
C:\Documents and Settings\Administrator>ping 210.94.0.73
Pinging 210.94.0.73 with 32 bytes of data:

Reply from 210.94.0.73: bytes=32 time=4ms TTL=243
Reply from 210.94.0.73: bytes=32 time=5ms TTL=243
Reply from 210.94.0.73: bytes=32 time=4ms TTL=243
Reply from 210.94.0.73: bytes=32 time=4ms TTL=243

Ping statistics for 210.94.0.73:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 4ms, Maximum = 5ms, Average = 4ms

C:\Documents and Settings\Administrator>ping 8.8.8.8
Pinging 8.8.8.8 with 32 bytes of data:

Reply from 8.8.8.8: bytes=32 time=125ms TTL=239
Reply from 8.8.8.8: bytes=32 time=126ms TTL=239
Reply from 8.8.8.8: bytes=32 time=125ms TTL=239
Reply from 8.8.8.8: bytes=32 time=125ms TTL=239

Ping statistics for 8.8.8.8:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 125ms, Maximum = 126ms, Average = 125ms
Ping-Pong 테스트 결과는 이렇지만, 이상하게 빨라진 느낌이나네요 (-_-;;)

Review: The mist (2007)

Really fun. ★★★★☆!!!
More Information: http://en.wikipedia.org/wiki/The_Mist_(film)

IMO, This movie is about the uncertainties of life.
We can't see the future and what the end result will be. So, there is no correct answer. I think, .. We don't need to worry about the future, A reflex action is best.

일본만화 추천 100선


The Red : 4천만 MAU를 지탱하는 서비스 설계와 데이터 처리 기술 By 카카오페이지 기술전략이사 윤

당신의 인터넷 서비스는 안정적이고 확장성 있게 설계되어 있습니까? 아파치 하마 프로젝트 의장 활동, GSoC 멘토링 경험과 7개의 기업을 거치며 쌓은 노하우와 인사이트를 바탕으로, 4천만 MAU도

www.fastcampus.co.kr



1.군계 (액션,격투)

격투만화 중에서는 아주 유명하고 열광적으로 좋아하는 사람이 많은 만화입니다. 전체적으로 만화의 분위기는 어둡고요... 줄거리를 소개하죠. 주인공인 료는 모범생이었습니다. 그러나 부모님의 강압적인 통제... 그에 대한 무의식적 반발로 부모님을 살해하게 되고 맙니다. 그리고 교도소에서 많은 변화를 겪게되죠..그리고 악의 화신같은 존재가 되고 말죠..... 또 그에 대항하는 인물이 나타나고.... 만화에 대한 소개가 만화의 질을 못 따라가네요. 이 만화는 선과 악에 대해 생각해볼 수있는 만화입니다. 그리고 싸움이란 인간에게 어떤 의미가 있는것일까? 하는 생각도요. 아..군계는 싸움닭이란 뜻입니다. 네이밍센스가 좋죠.


2. 생추어리(해적판제목:빛과 그림자) (액션,정치)

일본 최고의 극화체 만화가인 이케가미 료이치님의 작품입니다. 캄보디아에서 일본 외교관의 아들로 태어난 두 남자 이야기를 그리고 있습니다. 캄보디아의 킬링필드(대학살..실존사건입니다.)와중에서 살아남아 돌아온 두 주인공..한명은 암흑계 보스로 다른 한 명은 정치계 거물로 성장해갑니다. 두 남자의 목숨과도 같은 우정....그들의 관계는 어떻게 될까? 뛰어난 스토리작가와 항상 작업하여 재미는 보장이 되는 작품입니다. 단 남성우월주의가 작품전반에 깔려있어서 여성이 보기엔 거부감을 느낄수도 있는 작품..남자분인거 같아 추천합니다.


3.수라의 각 (역사,무협)

해황기의 작가가 쓴 매우 흥미진진한 역사 무협물입니다. 일본 역사속의 많은 실존인물들의 얘기를 기둥줄거리로 하여 거기에 허구를 작가의 능수능란한 솜씨로 섞어냅니다. 이 작품은 코믹 만화인 수험의 제왕에도 등장하는 데요....그 만화에 이런 말이 있지요. "역사 공부를 하려거든 수라의 각을 읽어라" 이 만화작가의 다른 작품인 해황기도 매우 흥미진진하답니다.


4.베르세르크 (판타지)

말이 필요없는 판타지의 최고 걸작.... 뛰어난 작화에 철학적인 사유까지 배어든 최고의 작품. 안 읽으셨다면 부디 읽어보시길..


5.메존일각(도레미하우스) (러브코믹)

여태까지 본 만화중 세 손가락안에 꼽는 만화.. 두말할 필요없는 러브코미디의 대표작. 소년취향에는 약간 안 맞을 수 있습니다. 이 만화가 연재되었을 때 주요 독자층은 청년,성인층이었습니다. 재미있는 소년만화나 쓴다는 평가를 받던 다카하시루미코를 일약 일본 최고작가 반열에 올려놓은 작품입니다. 미망인과 한 청년의 사랑을 코믹하게 또 나름의 상황에 따른 현실적인 고민도 드러내면서 잘 표현해 낸 걸작입니다. 한 번 읽어보세요.


6.기생수 (SF)

SF의 수작입니다. 외계에서 인간을 장악하기 위해 내려보낸 기생생물들....하지만 주인공의 필사적인 저항으로 뇌를 장악하지 못하고 오른팔만을 정복하게 됩니다. 우선 재미가 있고 인간의 존엄성을 다룬 주제도 돋보입니다.


7.총몽 (SF)

SF의 고전입니다. 사이보그인간의 얘기를 통하여 미래사회의 인간정체성을 다루고 있는 작품입니다. 후대 SF만화들에 지대한 영향을 끼친 작품입니다. 이 작품의 세밀한 캐릭터 묘사능력....대단하죠.


8.시마과장 (직장)

일본 리얼리즘 만화의 거장 히로카네 켄지의 작품입니다. 사실적인 상황묘사로 정평이 난 작가이죠... 시마는 일류전기업체의 과장입니다. 회사에서 일어나는 여러 일과 거기에 대처해가는 시마의 전략이 흥미있는 작품입니다. 또 시마의 화려한 여성편력도 빼놓을 수 없죠...


9.러프 (스포츠,러브코믹)

일본에서 최대만화판매부수를 기록(1억 5000만부 이상)하고 있는 아다치 미츠루의 작품입니다. 총 12권 완결로 4시간 정도 투자하면 다 볼 수 있는 작품이고요.... 그의 대표작 중 하나로 꼽히고 있는 작품이기도 합니다. 그의 또 다른 대표작이라면 터치,미유키,H2등을 들 수 있겠는데요 이 러프는 비교적 짧은 길이에도 완성도 있는 내용과 함께 그의 작품중 재미면에서 가장 완벽한 작품이죠. 사건이 진행됨에 따라서 주인공들이 겪는 심리변화에 몰입되어 읽는 재미가 쏠쏠한 작품입니다. 메존일각과 함께 러브코미디의 베스트로 꼽는 작품입니다. 꼭 읽어보세요.


10.오늘부터 우리는 (코미디)

웃기기 위해 태어난 만화. 한번 보다보면 웃다가 미쳐버리는 만화 ....코미디를 원한다면 이작품을. 애장판이 나왔다는 건 인기가 있다는 증거겠죠?


11.이나중 탁구부 (코미디)

약간 하드고어 취향으로 미치게 웃기는 만화입니다. 오늘부터 우리는이 전연령 상관없이 웃겨준다면 이나중 탁구부는 성적인 코드가 상당히 결합되어있는 코미디 물이죠...하지만 성적인 코드가 주요내용은 아니므로 그리 거부감을 가지실 필요는 없습니다. 코미디 물로는 정말 대단한 작품이라 할 수 있습니다.


12.따끈따끈 베이커리 (요리,코미디)

요리만화를 자처하고 있지만 실상을 보면 무지하게 웃기는 코미디 만화.... 이 작가 웃기는 솜씨가 상당한데요.... 주인공은 제빵사거든요.(빵만드는 사람) 이 작품은 대결형식을 통해 흥미를 높이고 있고 또 기묘한 심사방식을 통해 웃음을 제공합니다. 주인공이 게 모양의 빵을 만들면 그걸 먹는 주위 사람들이 게로 변해서 기어다니는....뭐 그런 식인데 만화를 보면 황당하기보다도 재밌습니다. 그림체도 정말 이쁩니다. 예쁜 그림체 좋아하시는 분이라면 이 만화를 꼭


13.사이코 닥터 (추리)

본인이 생각하는 가장 재미있는 추리만화입니다. 코난이나 김전일이 추리만화의 대표격으로 인식되고 있지만 그 만화들은 주요 타겟층이 소년이고 이 만화는 성인을 타겟으로 한 작품입니다. 옴니버스식으로 구성되어있으며 각각의 에피소드가 아주 흥미롭습니다. 인간의 정신이상현상을 근거로 진실을 찾아나가는 작업....한번 보시죠. 일본에서는 드라마로 제작되어 인기를 끌고 있죠.


14.20세기 소년 (추리)

작가의 뛰어난 상상력이 돗보이는 추리만화. 열혈매니아들을 거느린 작품.재미를 보장하는 서현아표 번역작품입니다.


15.용(龍) (시대,역사,정치)

본인이 여태까지 본 만화중 NO. 1 으로 꼽는 작품... 인물 하나하나의 개성을 살아넘치게 하는 뛰어난 뎃생력. 스토리전개에 완벽히 부합하는 장면구성..... 정치,경제,사회,문화,인간사 등 광범위한 분야를 다루는 포괄적 스케일, 또 그 내용들이 톱니바퀴츠럼 기묘하게 얽혀들어가는 구성과 전개의 치밀함.... 일본작가임에도 일본에 치우치지 않고 객관적으로 사태를 파악하는 작가의 힘... 일본,중국의 현대사에 한국의 현대사가 가끔씩 언급되는 시대물이라는 매력..... 본인이 생각하기에 이 만화는 만화의 이상향이 아닐까 생각합니다.


16.로토의 문장 (모험)

모험만화라면.....이걸 보시길.


17. 그 남자 그 여자 (순정)

순정만화를 좋아하진 않지만 이 만화는 유명한 이유가 있더군요....작가는 우리의 마음을 어떻게 그리 잘 알고 있는걸까? 재미있고 유쾌하며 또한 질투가 나는 작품.


18.권법소년 (무협)

앗싸리 팔극권.. 무협을 좋아하신다기에 추가시켰습니다. 팔극권 설명이 아주 자세히 나와있죠.... 이케가미 선생의 문하생출신인 후지와라 요시히데의 작품입니다. 스승답게 극화실력이 대단하죠. 그래서 무술장면이 아주 실감납니다.


19.엠블럼 TAKE 2 (액션)

본인이 여태까지 본 학원물,야쿠자물 가운데 최고의 재미와 완성도를 가진 작품..... 이 작품은 단순 주먹으로 승부하는 만화가 아님.. 주인공의 치밀한 전략과 알수 없는 미지의 운명이 얽힌 대단히 흥미있는 작품 현재 42권까지 출간되었는데 읽으면서 한번도 지루함을 느껴본 적이 없음.... 이런 말 하면 과장이겠지만 삼국지를 보는 듯한 느낌도 들었음.


20.피아노의 숲 (음악)

음악 만화도 이렇게 재밌을 수 있다. 천진난만한 그림체와 그림과 더없이 잘 어울리는 캐릭터의 성격. 그리고 작가 특유의 코믹감각까지 .. 전 이 만화작가인 이시키 마코토를 참 좋아하는데요... 이사람 다른 작품인 으라차차,하나다소년사,좋은 친구들..이 작품들도 정말 재미있답니다.


21.비디오걸(전영소녀) (하렘물)

아이즈 작가의 대표작입니다. 하핫....한때 일본 만화잡지 설문조사에서 야한 만화 1위로 선정되었던 작품...그리고 메인 캐릭터인 아이는 소녀들의 닮고 싶어하는 인물 1위에도 선정되었었다.. 하렘물의 고전이자 남자들 마음을 설레게 하는 작품...흐흣...또 옛날 생각 나네.


22.도박묵시록 카이지 (추리)

인간 본연의 도박심리를 무섭게 파헤친 작품....작가의 뛰어난 사고전개에 감탄할 따름이다... 그림체는 형편없지만 이야기 전개만큼은 일급수라 평할 수 있는 작품입니다. 지금 이 작품 작가 노부유키는 도박묵시록 연재를 끝내고 도박파계록 카이지를 연재하고 있습니다.^^


23.행복한 시간 (성인,멜로)

성인용 작품입니다. 화목했던 가정이 어떻게 한 순간에 파멸에 이를 수 있는지를 보여주는 작품....정크보이의 작가가 쓴 작품인데 정크보이같이 과장되고 허무맹랑한 설정은 없습니다. 이 작품은 심리묘사가 탁월한 수작입니다. 이런 작품도 읽어보고 성인세계에 대해 미리 알아놔야 할 필요도 있겠죠.


24.유도부 이야기 (스포츠)

스포츠 작품을 읽고 싶다면 이 작품을 읽어보세요. 뛰어난 뎃생능력으로 인물의 생김새가 아주 시원시원합니다. 또한 작가인 고바야시 마코토는 코믹감각이 탁월하여 읽는 내내 웃으면서 볼 수 있는 작품을 씁니다. 이 작가도 본인이 꽤나 좋아하는 작가랍니다. 유도 만화 중에는 이 만화만 한 것이 없습니다. 다음만화도 유도 만화로 하나 추천하죠..단 유도부 이야기 만큼 재미는 없습니다.


25.야와라 (스포츠)

약속대로 또 하나의 유도작품입니다. 역시나 위에서 말했던 서현아표 번역작품이라 재미가 있습니다. 여자 48kg급 유도 선수의 성공기를 그리고 있는데요. 아기자미한 재미가 상당한 작품입니다. 우라사와 나오키의 능력을 이 작품에서 보여주었죠.... 심각한 주제의 작품을 쓸 뿐만 아니라 흥미 위주의 작품도 잘 만들어내는구나..아하!!!!


26.죠죠의 기묘한 모험 (판타지)

조나단과 디오(이름 맞나?) 하여튼 두 가문의 100년에 걸친 결투를 그리고 있는 작품입니다. 숨막힐 듯한 긴장감이 압권인 작품이죠..... 일본에서는 큰 인기를 끌어 지금 69권까지 연재되어 만화책 연재순위 9위에 올랐다는데 우리 나라에선 정식판이 발매가 되지 않아 안타깝군요... 하지만 해적판으로 발매된게 있으니 찾아서 보시라.... 재밌답니다.


27.양의 노래 (비극)

보고나면 눈물이 쏟아져 나올 거 같은 작품....이 작품 소개를 다시 쓰려니 가슴이 울렁거리네요... 타인의 피를 마셔야만 살 수 있는 흡혈 가문의 남매 얘기랍니다. 남의 피를 마시고 사는 흡혈귀가 되지 않기 위해 무진 애를 쓰는 그들의 모습이 너무나 가슴아픈... 또 그들간의 안타까운 사랑이..꼭 한번 읽어보세요.


28.나를 가져가 (직장)

너무나 사실적인 직장생활묘사에 겁이 나는 만화입니다. 표지에서 볼 수 있듯이 주인공은 제대로 하는 일없이 상사에게 늘 채이면서 울분을 삭이면서 살고 있는 직장인입니다. 하지만 만화에서처럼 그러한 단점이 쉽게 고쳐지는 것은 아니죠... 끊임없이 노력하지만 너무나 고치기 힘든게 또한 성격인지라... 직장에서 일어나는 일들과 주인공의 눈물겨운 인간개조과정을 마치 내가 겪는 것처럼 사실적으로 묘사해낸 작품입니다.


29.바람의 대지 (스포츠)

골프만화입니다. 죽은 형의 뒤를 이어 골프를 시작하게 된 주인공... 24세에 입문한 골프이지만 뛰어난 체격조건과 선천적 능력으로 급속히 실력을 키워나갑니다. 여타 골프만화처럼 허황되고 말도 안되는 샷이 난무하는 만화가 아닙니다. 사실감 넘치는 그림과 골프의 자세한 기술 설명 그리고 박진감 넘치는 승부의 세계묘사까지 스포츠 만화는 이래야 한다는 것을 잘 보여주는 만화입니다.


30.용서하세요 (직장)

직장여성의 얘기를 그린 작품입니다. 미인에다가 일처리 똑바르고 야무진 우리의 주인공...하지만 결정적으로 그녀는 심술단지이다. 남을 괴롭히면서 삶의 의의를 찾는 그녀...하는 행동마다 폭소를 유발하며 한편으론 하는 짓이 너무 귀엽습니다. 유명작가 후지히코 호소노의 숨겨진 보물.


31.침묵의 함대 (가상현실)

세계 최고 기술이 집약된 핵잠수함에서 반란을 일으키고 중립국을 선포한다. .... 숨막힐듯한 긴장감이 작품 전반을 장악하는 걸작... 핵이라는 위험천만한 소재를 사용하여 긴장감을 한층 더 끌어올립니다.


32.창천항로 (역사,판타지)

삼국지를 누가 유비,관우,장비의 이야기라고 하던가? 창천항로는 조조중심의 세계관으로 바라본 새로운 삼국지라 할 수 있습니다. 매우 흥미있게 스토리가 전개되며 우리가 그 동안 알고있던 삼국지의 내용과 비교해서 보면 더 재미있을 겁니다. 많은 사람들이 자신의 최고만화로 꼽는 작품입니다.


33.묵공 (역사,전략)

고대시대의 전투,전략등을 파악할 수 있는 아주 흥미있는 작품.


34.지뢰진 (서스펜스,스릴러)

암울한 분위기, 힘이 넘치는 그림체, 냉혹한 카리스마의 주인공...... 형사라는 직위를 이용(?)하여 살인도 거리낌없이 저지르는 주인공의 이야기입니다. 그의 암울함의 근원은 무엇인가? 새로운 여자형사는? 냉냉한 분위기속에 읽고나면 주인공의 카리스마가 압도적으로 느껴지는 작품입니다.


35.더 파이팅 (스포츠)

최고의 복싱만화 69권이라는 엄청난 권수에도 불과하고 지루함을 전혀 느낄 수 없는 작품... 그것도 작가의 능력이겠지요... 복싱장면 묘사는 너무나 실감이 넘쳐 표지그림처럼 불이 활활 타오를 정도입니다. 주인공인 일보의 얘기만 전편에 걸쳐 다루었다면 지겨울 수도있었겠지만 주변의 캐릭터들도 아주 매력적이구요... 단 바라는 점이라면 여자 캐릭터 좀 강화해줬으면 하는 바람이 있네요... 도통 만화에 여자가 안 보여요.


36.의룡 (의료)

의료계의 부패를 다룬 의료만화 .... 감동적인 의사를 다룬 종래의 의료만화와는 달리 의료계에 현실적으로 존재하는 문제점을 낱낱이 파헤치고 있습니다. 거기에 천재의사라는 설정을 덧붙여 재미도 제공하고 있구요.... 같은 의료계 부패를 다룬 만화인 헬로우블랙잭에 비하여 더 재미가 있습니다. 전 만화에 재미를 중요시하는 지라 의룡에 한 표 던집니다.


37.미유키 (러브코미디)

80년대 오렌지로드,메존일각과 더불어 러브코미디 장르를 이끌던 작품....아다치의 초기작으로서 그의 화풍이 확실히 확립된 작품....아다치 작품에 고정적으로 등장하는 인물의 특성이 이 작품에서 거의 확립되게 된다. 역시나 밀고 당기는 서로의 심리전이 으뜸인 작품.


38. 겨울 이야기 (드라마)

소외된 자들의 심리묘사가 뛰어난 작가인 하라 히데노리의 작품... 동경대에 간 오빠를 동경하여 동경대에 가려는 소녀와 연인관계가 되고 만 주인공....같이 동경대를 들어가려고 하지만... 과연 이상과 현실의 괴리는... 현실 속의 우리들이 결코 강하지 않은 것처럼 하라 히데노리 작품속의 주인공이 그렇다. 그래서 더 이입이 잘 되는듯...


39.그루밍 업 (드라마)

말 사육에 관련된 만화...경마 산업에 관한 자세한 지식을 알 수 있다. 일반 만화들에서 다루지 않는 소재에 대해 전문적인 지식을 알 수 있는 반가운 만화...거기에다 러브 스토리가 삽입되어 있는데 이것의 비중도 꽤 높아서 그리 지루해하지 않고 유쾌하게 볼 수 있는 만화입니다.


40.메이저 (스포츠)

괜찮은 야구만화... 근성을 제대로 강조하는 야구만화입니다. 근성이나 의지를 중요시하게 생각하는 분이라면 재미있게 보실 수 있을듯... 여기서 성격이 좀 다른 야구만화를 소개해 드리죠..


41.터치 (스포츠,러브코믹)

아다치 미츠루의 대표작... 80,90년대 일본과 우리나라에서 대단한 폭풍을 일으켰던 작품. 오늘날 학생들에게는 H2가 더 잘 알려져있으나 그 형태와 인물형은 터치에서 완성된 것이며 H2는 터치의 복제판이라 하는 것이 맞을 것입니다. 터치는 열혈스포츠물에서 벗어나 스포츠를 연애의 소재로 활용한 의의가 있는 작품이라 할 수있습니다. 일본에서 6000여만부가 팔려 역대 만화판매순위 11위에 랭크된 작품이기도 합니다.


42.학원라이벌전 (스포츠)

스포츠물중에서 천재가 등장하지 않는 몇 안되는 작품... 재미가 있다해도 천재가 등장하는 작품에는 괴리감이 느껴져서 흥미가 떨어지는 느낌이 있는데 이 작품의 주인공은 평범함의 매력을 가지고 있습니다. 끊임없는 노력으로 유도의 강자가 되어가는 주인공에게서 대리만족을 느낄 수 있습니다.


43.해황기 (FANTASY)

바다의 일족의 수장인 주인공이 육상과 해상에서 세력을 넓혀 나가는 과정이 아주 흥미진진하게 펼쳐지는 작품입니다. 작가 기와하라 마사토시는 이야기를 흥미있게 전개하는 재주가 아주 뛰어난 듯 싶습니다. 이 작가의 작품은 수라의 각에 이어 이 작품이 두번째군요.


44.반항하지마 (액션)

영길선생의 활약이 볼만한 만화...내용상으로 상남 2인조의 후속편격입니다. 전 별로 상남 2인조를 재밌게 본 편이 아니라... (대신 오늘부터 우리는을 무지 재밌게 봤습니다.)


45.무뢰전 가이 (드라마)

도박묵시록 카이지의 작가 후쿠모토 노부유키의 작품입니다. 특유의 확률적 사고가 잘 드러나 있는 작품입니다. 주인공은 학생 신분으로 억울하게 갇혀서 탈출계획을 특유의 확률사고로 세워나갑니다. 극한의 상황에서 뛰어난 능력을 발휘하는 것에서 감탄사가...


46.수험의 제왕 (장르 판정불가)

B급 성향의 아주 재밌는 만화입니다. 사람들이 B급 만화라길래 왜 그럴까 하고 생각을 해봤는데 아마도 만화의 주제때문에 그런게 아닐까 합니다. 다른 만화의 주제가 보편적인 것들이라면 이 만화의 주제는 합격 방법,시험점수 잘나오는 방법 그런것들이라 일반적인 주제와 동떨어진 것을 다뤄서 그렇게 불리는게 아닐까 생각해봅니다. 하여튼 무지 재밌는 만화.


47.에덴 (SF)

암울한 미래사회도시를 배경으로 한 작품입니다.


48.3*3 EYES (FANTASY)

요괴 판타지의 걸작...재밌습니다. 아마 유유백서도 같은 부류랬죠...같이 추천한걸로 치죠.유유백서도 꽤 재밌게 봤었드랬죠.


49.골든보이 (드라마)

캠퍼스 러브스토리를 추천하려고 했는데 그림찾기가 귀찮아서 같은작가의 비슷한 경향 작품인 골든보이 그림을 올렸습니다. 캠퍼스러브스토리도 같이 추천한셈치세요... 두 작품 모두 동경대생을 주인공으로 해서 심리묘사가 주내용으로 구성되어있습니다. 1초동안에 엄청나게 많은 생각을 해대죠...(만화책 몇장분량...) 약간 야한 만화.


50.골때리는 연극부 (코미디)

호모 연극부장과 사이코같은 이상한 연극부원들 사이에서 일어나는 엽기적인 사건들..무지 황당하고 웃깁니다.


51.다덤벼 (스포츠,코미디)

고바야시 마코토의 두번째 추천작입니다. 레슬링 선수의 얘기를 다루고 있는데요. 저 표정 보입니까? 이 작가 특유의 그림체는 정말 기억에 오래 남습니다. 그 정도로 뎃생력이 뛰어나다는 소리죠...캐릭터의 특색을 독자의 뇌리에 오래 각인시킬수 있으니까요. 코믹한 전개가 일품인 만화.


52.대사각하의 요리사 (요리)

첫번째로 소개하는 요리만화네요... 제일 뛰어나기 때문에 처음 소개하는 것은 아닙니다. 어쩌다 보니... 하지만 괜찮은 요리만화입니다. 앞으로 두 개정도의 요리만화를 더 소개할 듯 싶은데요... 이 작품은 외교관저에 근무하는 요리사 얘기를 다루고 있습니다. 요리와 외교의 궁합을 다루는 만화입죠.


53.라면요리왕 (요리)

라면 좋아하세요? 낮에는 회사원 밤에는 포장마차에서 자신의 라면가게를 차릴 꿈을 꾸며 라면을 끓이는 주인공.. 각종 라면과 조리법이 등장합니다. 라면 매니아라면 볼만한 만화.


54.블랙잭 (의료)

일본에서 만화의 신이라 불리우는 데즈카 오사무의 작품... 이 작품은 후대에 수많은 만화에서 캐릭터가 인용된바 있으며 또 이 작품과 유사한 형식의 수많은 아류작이 등장했죠. 이 만화의 형식은 옴니버스식인데 주요 내용은 절정의 실력을 가진 의사가 떠돌아다니면서 사회의 약자를 치료한다는 것이죠. 이 설정이 다른 만화들에 많이 적용됐습니다.


55.바론 (SF)

고대부터 외계인들이 지구를 왕래하고 있었다는 가설이 현실이었다면.... 외계인들의 생체실험... 그 공포가 다가온다.


56.에프(F) (액션,스포츠)

시원한 카레이싱 만화입니다.


57.올드 보이 (드라마)

영화 올드보이 아시죠.... 그 영화의 원작만화랍니다. 이 만화를 출판한 만화사(후타바샤)

에서는 영화가 크게 흥행하지 않을 걸로 보고 판권을 되게 싸게 팔았다는 군요.... 내용은 영화를 보셨으니 따로 설명하진 않겠습니다. 만화도 영화만큼 괜찮습니다. 난 만화가 더 낫던데 사람들은 영화가 더 괜찮다더군요.


58.핑퐁 (스포츠)

이 만화 아직 읽지 못했습니다. 하지만 많은 사람들이 일본만화 BEST에 집어넣곤 하는 만화더군요.. 좀 오래됐지만 높은 완성도를 가지고 있다 들었습니다.


59.드래곤헤드 ( 가상현실,재난)

만약 지구의 종말이 닥친다면...무시무시한 가정이 현실이 되었을 때의 패닉현상을 잘 표현해낸 만화입니다. 대공황, 가치관 혼란, 무자비한 인간의 욕망 표출, 살인 등 위기 상황에서 인간이 어떻게 변하는지를 소름끼치게 잘 보여준 작품이죠...수작입니다. 괴물이 등장하지 않고도 충분히 공포스러운 작품.


60.블러드레인 (성인,추리)

고등학교 때의 야구부원들이 한명씩 차례대로 살해되어간다. 누가, 왜 그런 짓을 저지르는 것일까? 상당히 야하면서도 재미있는 성인만화입니다.


61.생존게임 (가상현실,재난)

드래곤헤드와 동일한 주제인 지구 종말을 다루고 있습니다. 이 작품도 매우 흥미진진합니다. 드래곤헤드가 소름끼치는 공포를 보여준다면, 이 작품은 그러한 상황속에서 살아남으려는 인간의 강인한 의지를 보여줍니다. 주인공이 살아남기 위해 고안해내는 여러 방법들이 흥미롭습니다.


62.브레이크다운 (가상현실,재난)

생존게임 작가의 재난 영화.. 지구와 소행성의 충돌...그리고 연이은 바이러스의 출현...인간은 과연 살아남을 수 있을까?


63.출동 ! 119 구조대 (액션)

소다 마사히토 선생의 작품입니다. 이 작가의 특징이 천재의 일상을 그린다는 점인데요. 이 작가의 천재는 좀 독특합니다. 천재기 때문에 뛰어난 능력을 가지지만서도 그 능력 때문에 미쳐버리고 폭주하기 쉬운 성향을 지니고 있지요. 그 때문에 가끔씩 무섭다는 생각이 들곤 합니다. 흥미롭게 작을 전개 하는 방식이 뛰어난 작가죠.


64.스바루 (드라마)

역시 소다 마사히토 선생의 작품이며 발레천재를 다루고 있습니다. 이 작품도 읽다보면 주인공이 미쳐버리지나 않을까 걱정되며 겁이 납니다. 하지만 재미는 있습니다.


65.스피드 도둑 (드라마)

역시 소다 마사히토 선생의 작품!!!


66.무한의 주인 (무협)

상처를 메꿔버리는 혈선충을 몸안에 지니고 있어 죽지 않는 몸이 된 무사의 이야기 입니다. 사랑하는 사람들이 옆에서 죽어가는 것을 지켜보며 끝까지 살아있는 다는 것이 과연 행복한 것일까요? 죽지 못해 산다 그런말이 생각나는군요. 과연 그의 운명은 불행인가? 행운인가?


67.마스터 키튼 (추리)

벌써 우라사와 나오키 선생의 세번째 작품이네요.. 그의 작품 중에서 가장 괜찮은 듯한 작품입니다. 여러분야를 다루는 통찰력이 대단한 작품.. 그림실력도 일품이죠.


68. 으라차차 (스포츠)

이시키 마코토님의 작품중에 두번째군요... 여자레슬링선수의 꿈을 가지고 그것을 이뤄가려는 주인공의 이야기... 시종일관 재미있는 그림체가 눈길을 끕니다.


69.칠석의 나라 (SF)

기생수 작가의 작품입니다. 역시 설정이 특이한 작품입니다. 과거로부터 신기한 힘을 가지고 있는 한 가문. 그 가문을 둘러싸고 일어나는 여러가지 일들과 인간의 욕망을 잘 엮어냈습니다. 4권 완결이지만 완성도도 높고 재밌는 작품입니다.


70.카페 알파 (드라마)

삶에 대해 천천히, 느긋하게 여유롭게 바라볼 수 있게 하는 작품.. 천천히 흘러가는 시간 감각과 여유로운 색감, 화면 구성이 인상적인 작품입니다. 이 작품을 읽으면 마음이 안정된다는.... 좋아합니다.


71.캠퍼스 블루스 (학원물)

지금까지 출간된 모든 학원물 중에서 가장 인기가 있었고 재미있는 작품.. 학원물중에 최고라는 칭호를 마땅히 받아야할 작품입니다. 역시 또 봐도 재미있는 작품.


72.이매진 (순정)

본인은 아직 읽어보지 않은 순정만화지만 전혀 순정만화같지 않고 재미있는 만화라고 함... 딸과 어머니 각자의 사랑을 그리고 있으며 딸의 성장이 돋보이는 만화라고 함...그림체도 깔끔하고 군더더기가 없다고 들었음.


73. 형사 다카스기 분발하겠습니다. (액션)

형사물로서 각각의 사건 에피소드가 구체적이고 상당히 흥미롭습니다. 총에 대한 자세한 지식도 나열되어있으며 인물의 개성도 뚜렷해서 보는 재미를 더합니다.


74.스위치 (2권 완결)

스승과 제자와의 사랑을 담담한 필체로 그린 작품.... 왕눈이 귀여운 여고생이 등장하는 것이 아니라 실제로 주위에서 봄직한 성격의 학생과 선생이 등장하여 실감을 더한다. 하지만 2권완결이라 좀 짧은 느낌.... 아쉽다.


75.스피드걸 (스포츠)

여자가 주인공인 몇 안되는 스포츠물이죠.. 전 이 작품 상당히 재미있게 봤습니다. 주인공은 육상에 천부적인 자질을 갖고 태어났죠.... 귀여운 여인의 육상성공기


76.LAST NEWS (직장)

히로카네 켄지의 작품 두번째로 추천합니다. 방송국 보도국에서 일어나는 일들을 긴박하게 생중계하는 듯한 만화입니다. 현실감이 느껴지는 만화...그리고 방송국에서 일어나는 여러 일들을 알 수가 있죠.


77.크로우즈 (학원물)

시원시원한 학원물... 캐릭터의 생김새도 개성이 넘치고 킬링타임용으로 보기에 적합한 작품입니다.


78.세븐틴 러브 (러브코믹)

학생연애물 중에선 군계일학같은 작품.... 학생연애물의 짜증나는 부분이 인물의 우유부단한 면인데 이 작품엔 그런 인물이 없어서 마음에 든다. 저마다의 꿈을 갖고 정진하면서 사랑놀음에만 정신 팔지않는 모습들이 마음에 든다. 학생연애물중에 제일 나은거같은 작품.


79.섬데이(SOMEDAY) (드라마)

하라 히데노리의 두번째작품추천이네요.... 역시나 소외된 자들의 마음을 잘 그려내고 있구요... 특히나 마음에 드는 것은 결말이 해피하다는 점이네요... 그동안 이 사람 만화 보면서 현실적이긴 하지만 결말이 너무 서글펐었거든요....그래서 이작품 추천합니다.


80.견신 (SF)

초월적인 힘을 가지고 있는 개를 통하여 인간의 존엄성과 생물체의 존엄성 생물체를 이용한 실험의 위험성 등을 경고하는 작품...


81.봄이여 오라 (성인,드라마)

성인들의 연애와 동거등을 리얼하게 잘 그려낸 작품.... 주인공이 약간 우유부단하지만 그래서 더 실감이 나는 작품입니다.


82.일평 (드라마)

검도를 배우며 경찰이 되어 점점 성장해 가는 인간의 이야기 감동적이다.


83.생각하는 개

이 작품도 보면서 유쾌함을 느낄 수 있는 만화 이 만화는 개 이야기가 아니라 사람 사는 이야기입니다. 일상생활을 천천히 음미하며 느낄수 있는 감동을 코믹한 터치로 잘 그려내고 있지요. 천재유교수의 생활,카페알파 같은 분위기의 작품입니다.


84.소용돌이 (공포)

이토준지의 공포작품들 중의 하나입니다. 나선형의 소용돌이가 몸에 생기고 마을에 생기고 상상도 할 수 없는 것들에 생겨나는데.... 공포를 조성하는데 있어서 일가를 이룬 이토준지의 작품입니다. 이토 준지의 공포전집도 읽어볼 것을 권합니다. 그런 것 좋아하시는 분들만요...


85.돌연변이 (FANTASY,드라마)

기생수처럼 설정이 독특한 작품입니다. 생각하는 내용이 사념파의 형태로 주위에 전달되는 인간인 사토라레집단을 다루고 있죠... 물론 사토라레들은 자신들의 생각이 주위에 알려진다는 것을 모르고 있구요.. 사토라레로 인해서 생기는 여러 현상을 사회와 연관시켜서 접근하는 작품인데요...재미있구요.. 무엇보다 인간의 존엄성이라는 주제가 감동적인 작품입니다. 기생수를 봤을때만큼이나 신선한 작품을 보는 느낌이었죠.


86.다중인격탐정 싸이코 (추리,FANTASY)

한 인간의 내부에 네 개의 인격이 숨어있다는 기발한 설정을 가지고 시작하는 작품입니다. 네 개의 인격은 판이하게 다르며 언제 출현할지도 모르죠.... 다중인격이라는 매력적인 소재를 흥미진진하게 잘 풀어낸 작품입니다.


87.천재 유교수의 생활 (순정,드라마)

유택교수의 삶을 통해 삶을 되돌아보게 하는 만화... 삶에 대한 유택교수의 진지하고도 너그러운 시선이 인상적인 작품입니다. 읽고 나면 가슴이 훈훈해지는 만화.. 딱히 순정만화의 느낌은 들지 않습니다.


88. 차카게 살자 (코미디)

한국만화인데 상당히 재밌습니다. 두사부일체 아시죠..? 그 만화의 원본으로 생각되는 만화입니다. 전국을 떠들석하게 하던 조폭두목이 교도소 안에서 갱생이 되어 출소뒤 고등학교로 다시 돌아간다는 설정이죠.. 유쾌하게 읽을만합니다. 그림은 차카게 살자2 입니다만 추천작은 차카게 살자1입니다.


89. 츄리닝 (코미디)

2004 한국만화계에 선풍을 일으킨 만화 츄리닝.... 혁명적인 마지막 한컷의 반전으로 수많은 독자를 매료하는 만화 모든 일간지 게재 만화 중에서 최고의 페이지뷰를 자랑하는 그 만화가 단행본으로 출시되었습니다. 정말 재밌죠.ㅋㅋ


90. BOYS BE (하렘물)

고등학교 때 이 작품 하나가 반 전체를 돌고 돌아 결국 돌아온 것은 군데군데 찢긴 만화책뿐... ㅋㅋ 굿키스와 함께 고교시절을 수놓았던 맘을 설레게 하던 그 추억의 만화


91.겔러리페이크

후지히코 호소노 선생의 두번째 추천작... 미술품들을 뒷거래하는 화랑 겔러리페이크를 운영하는 주인공의 얘기입니다. 과연 그는 악당일까요? 뉴욕 박물관 큐레이터로 근무하다가 겔러리페이크를 운영하게된 사연은... 미술분야에 대해 전문적인 지식을 제공하는 유익한 만화책입니다.


92. 크라잉 프리맨 (자유인) (액션)

이케가미 료이치님의 두번째 작품추천이네요... 제목 그대로 눈물을 흘리는 킬러의 이야기입니다. 적을 암살하면서 눈물 한 방울 떨구어주지요... 그림실력이 압권이죠.. 그리고 남자분이라면 흥미있게 읽을만한 줄거리도요.


93.정치 9단 (정치)

히로카네 겐지님의 두번째 작품 추천입니다. 유명한 정치가의 아들로 태어나 기업체에 근무하다가 정치에 발을 들여놓게 되는 주인공의 이야기 입니다. 아버지에게 물려받은 원칙을 중시하고 대의를 중시하는 사고로 뜻을 펼쳐가는 내용이 감동을 줍니다. 정치가라는 것이 원래는 국민의 존경을 받아야 하는 사람이며, 현실정치는 또한 냉혹한 싸움판이 될 수 밖에 없다는 진실을 알게 해 줍니다.


94.용오 (정치)

영화 네고시에이터 보셨나요? 위기상황에서 피해를 최소화하기 위해서 투입되는 협상가,교섭인을 다룬 영화이죠... 이 만화 용오도 교섭인을 다루고 있습니다. 세계 각지에서 일어나는 납치와 테러 그 와중에 투입되어 문제를 해결하는 용오의 활약상을 다룹니다. 교섭인이다 보니 서로간의 대화가 자주 등장하는데 상대를 설득시키는 화술이 압권이죠...


95.미스 헬로우 ( 드라마)

시골의 순박한 처녀가 긴자의 술집에 취직하여 겪게 되는 이야기. 그녀로 인해서 주변의 사람들은 마음의 평안을 느끼고 그녀에게 호감을 갖게 되는데... 읽으면 유쾌해집니다.


96.시티헌터 (액션)

명작이죠... 고등학생 때 이 작품 가능한한 안 잘린거 구하려고 그렇게 애를 썼는데 지금은 구하기 너무 쉽죠... 뛰어난 작화 실력과 코믹감각이 돋보이는 츠카사 호조의 대표작입니다.


97.중역비서 리나

일본 굴지의 은행 부행장의 비서로 근무하는 리나.... 부은행장님을 은행장으로 되게 하는 자신의 목표를 세우고 최선을 다하는데... 비서로서 자신의 임무를 다하는 그녀의 태도와 노력이 아름다운 만화....


98.행복한 백수 ( 드라마)

희망도 힘도 능력도 의지도 없는 백수가장을 보고 있으면 그냥 확 죽이고 싶은 마음이 든다.. 그런데도 그런 남편을 믿고 살아가는 그녀는 참.... 웃기면서도 너무 가슴아픈 만화


99.어덜트 베이비 (코미디)

몸은 아기인데 정신은 어른... 엄마 젖을 빨면서 음탕한 짓을.... 유쾌한 만화


100.헬로우 블랙잭 (의료)

주인공은 유명 의과대학 인턴.. 인간 같지 않은 하루 16시간의 일과 한달 4만엔(40만원)의 수당.... 수면 시간은 2시간... 그리고 각종 비리.. 그런 비리속에 익숙해지는 사람들.. 주인공은 그 속에서 올바로 된 자신을 찾기 위해 무진 애를 씁니다. 엄청나게 부패한 의료현실이 충격적인 의료만화죠.

Do you need a Google Wave Invitation?

I have 12 Google Wave Invitations left out of 16. Please post a comment on this post, I'll invite you to the Google Wave. :)

구글링하는(googling) 방법

1) 연속된 문자열 검색하기: 검색 중 White-Space(공백)는 or 연산 역할을 합니다. 공백 분할 키워드가 하나라도 매치되면 검색된다는거죠. 때문에 연속된 문자열을 검색할때 사용합니다. 노래가사 일부를 찾을 때 유용하지요. 예를 들어, 노래 중 "I gotta feeling" 이란 구절을 들으면 아래와 같이 검색합니다.
["I gotta feeling" lyrics]
개인적으로는 문법이 잘 맞는건지 확인할때도 사용합니다. 내가 생각한 영문이 맞는거라면 전세계 웹에서 어느 한 구절에 포함될 확률이 있으니까요.

2) 특정 사이트만 검색하기: 말그대로 특정 사이트 내 컨텐트에서만 검색합니다.
제 블로그에서 breadth first search 관련 내용만 찾습니다.

[site:blog.udanax.org breadth first search]

3) 특정 파일 포맷에서만 검색하기: 구글이 검색하는 대상은 웹 문서 뿐만아니라 PDF, PPT 등등을 모두 검색합니다. 주로 PDF는 논문 검색할때 사용할 수 있고, 프리젠테이션 내용 역시 찾아볼 수 있습니다.
PDF 파일로 된 문서중에 social network 이 포함된 문서들만 검색

[filetype:pdf social network]

마지막으로 검색 탭 아래 "Show options"라는 버튼을 활용하면 최근 문서, 혹은 최근 이미지, 이미지 사이즈 별로 조건을 더 줄 수 있습니다. 자 이정도 스킬이면 원하는 정보는 충분히 찾지 않겠습니까?

Subversion Submitted to Become a Project at The Apache Software Foundation

Subversion Submitted to Become a Project at The Apache Software Foundation

Today, I noticed that Subversion proposal/vote was opened in the general mailing list of Apache Software Foundation.

Hi all,

The Subversion Corporation decided recently to submit Subversion to
the Apache Software Foundation. I've sent the initial proposal to
Apache's Incubator project requesting the move (see below).

There are a lot of ramifications to this step. It would take me quite
a while to write this email if I detailed this stuff. In short, there
will be *no change for users*. This will primarily impact the
development community.

Please stay tuned for more info!

Thanks,
-g 

버전 관리툴로 잘 알려진 Subversion이 Apache Project로의 제안이 제출되었습니다. 아직 투표가 진행중이지만, 거의 100% Apache Subversion이 확정된것 같네요. :) 오픈소스는 ASF가 짱 먹을려나 봅니다.

Facebook Infrastructure and Scaling


Much to my amusement, This video is most popular in Korea. In Korea, there is no global service yet. And, I did not see anyone to trying to enter into international markets.

신기하게도... 이 동영상은 한국 사람들이 가장 많이 보고 좋아하는걸로 나옵니다. (-_-;;) 한국 IT기업도 조금 공격적으로 세계 시장에 달라들 수 있으면 좋겠네요.

백악관 사이트의 새로운 검색엔진, Apache Solr

O'relly 에 따르면 Apache licensed 검색엔진 공개 소프트웨어인 Solr이 White House 검색엔진으로 사용된다고 합니다. -- Thoughts on the Whitehouse.gov switch to Drupal

대조적으로 '정부 프로젝트는 눈 먼 돈'이라는 말이 있듯, 알아서들(?) open source를 활용하되 그것을 바닥아래 몰래 숨겨 프로젝트 몸집만 부풀리는 한국은 여전한것 같군요. 비단 정부 뿐 아니라 사실 한국은 기업부터도 그러한 것 같습니다. open source를 core components로 활용하면서 순수 기술력의 성과라는 과대 포장과 함께 open source는 한마디 언급하지 않는 모습을 보입니다. 누가 잘못됬다라기보다는 IT 사회 전반의 인식 문제 같습니다.

Friend Suggestion using Hama

SNS market share is similar with othello game. It means that the adjacent people could change you. Therefore, to prevent emigration from your service, you need to recommend a couple of people to user. Don't leave them alone!! For the gradual settlement of the Social Network Service, Friend suggestion might be a solution or useful tool.

It's a slide on conceptual design stage. The main idea is the k-plex clustering to find out the communities, and then friend suggestion among the people who don't know each other in community.



I'm still updating.....
If you want to see more detail, please subscribe my blog. ;)

Hamburg, will be integrated to Apache Hama project.

Hamburg, will be integrated to Apache Hama project soon.

Hamburg is the BSP based graph computing framework on top of Hadoop. We're working on the perfection of a project as a open source. Since the matrix is the great tool to store graph data and process them, we thought the idea of dealing with graph and matrix at one place.

Is this the new venture or just another desperation?

Recently, I'm trying to figure out another (better) life since I've lost my passion for company.

Of course, despite some failures (e.g. global services), this company has had quite a good year on balance. And, this company is still one of the largest enterprises of its kind.

Well, IMO, the problems are partly due to bad (conservative) management. There's no room for new talent. The fact that many people also think like me adds conviction to my view.

However, I have no plan yet and don't know whether it is right or wrong. Is this the new venture of just another desperation?

Google Code Jam 2009

Google Code Jam 2009, 누군가 소개해줘서 어제 진입했습니다. 저녁밥도 먹어야 되고 잠도 자야해서, 한 문제만 풀고 말았습니다만, 다행히 한 문제만 풀어도 다음 Round 가능 한가보군요. 이렇게 다음 Round 참여하는 한국인은 151명 입니다.

Qualification 문제 치고는 나름 영어 + 난이도가 있어 보이더군요. 그런데 오오, 한국인 중 가장 상위권에 있는 놀라운 Astein, 이사람은 대략 똑똑하고 GCJ 과거 유경험자인듯 하네요.

아마도 apache committer들 중에서 코딩 스킬이 가장 허접할것 같은 제가 과연 몇 Round 버틸지는 모르겠으나, 어디 한번 Top 10 ranking 과 상금을 노려볼까요~ :)

Inference anatomy of the Google Pregel

The summary paper of the Google Pregel was distributed -- Pregel: a system for large-scale graph processing.

The high-level organization of Pregel programs is inspired by Valiant's Bulk Synchronous Parallel model. Pregel computations consist of a sequence of iterations, called super-steps.

It's same with Hamburg design as figured below:

During a superstep the framework invokes a user-defined Compute() function for each vertex, conceptually in parallel. The function specifies behavior at a single vertex v and a single superstep S. It can read messages sent to v in superstep S - 1, send messages to other vertices that will be received at superstep S + 1, and modify the state of v and its outgoing edges. Messages are typically sent along outgoing edges, but a message may be sent to any vertex whose identifier is known. A program terminates when all vertices declare that they are done.

According to our reasoning, user defined Compute() function which can be called during graph traversal will be shaped as described below:

User Interface:

public void traverse(Map<Vertex, Message> value, Map<Integer, Message> nextQueue) {
  for (Integer i : v.getAdjList()) {
    // Handle the vertex and send a message with modified state of vertex i to next level
  }
}

And, ... need something to local processing and send message to the next step.

So that's similar to the MapReduce model in that programmers focus on a local action, processing a single item at a time, which the system then lifts to computation on a large dataset.

Do you think everything was too easy this far? But, I can't say about below mechanisms and locality problems yet.
The basic computing model of Pregel is enhanced by several mechanisms to improve performance and usability. They include combiners, an optimization to reduce network traffic, and aggregators, a simple mechanism for monitoring and global communication.

And the conclusion is..
We conducted an experiment solving single-source shortest paths using a simple Belman-Ford algorithm expressed in Pregel. As input data, we chose a randomly generated graph with a log-normal distribution of outdegrees; the graph had 1B vertices and approximately 80B edges. Weights of all edges were set to 1 for simplicity. We used a cluster of 480 commodity multi-core PCs and 2000 workers. The graph was partitioned 8000 ways using the default partitioning function based on a random hash, to get a sense of the default performance of the Pregel system. Each worker was assigned 4 graph partitions and allowed up to 2 computational threads to execute the Compute() function over the partitions (not counting system threads that handle messaging, etc.). Running shortest paths took under 200 seconds, using 8 supersteps.

Belman-Ford algorithm computes single-source shortest paths in a weighted digraph. In the sub-graph, the passed path will be updated while compute() function is run to traversal. Then, the boundary of sub-graphs could synchronized by supersteps. This programming model can be more intuitional than M/R version BFS.

Anyway, though Hamburg isn't as good as pregel, It will be a great framework for many of graph techniques.

Note: Hamburg project integrated into Apache Hama.

Graph database on Hadoop

Below is the problem list of the recent trends of graph data in my Insight.

- Very large (e.g. Web linked data, Social network, ..., etc)
- Diversified attributes of node and edge
- Requires real-time processing (for exampe, finding the shortest path based on attributes in Google Map)

So, I'm thinking the graph database on hadoop as described below:


HDFS Hama, Map/Reduce Hamburg
graph data -> graph partitioning for locality -> real-time processing


The large graph data can be stored on Hadoop/Hbase and, communication cost can be reduced by partitioning step as bulk processing. Then, finally we can perform the real-time graph processing. What do you think? ;)

Doug Cutting leaves Yahoo, joins Cloudera

The core member of Hadoop, Doug Cutting, is leaving Yahoo to join a startup called Cloudera. Cool... I would like to learn from his footsteps... and eventually soon be a open source developer like him.

The low-power Hadoop cluster

We're understand that the Hadoop is a low-cost way to manage and process the massive data since it has been designed to run on a lot of cheap commodity computers. But, the electric power costs also should be considered when evaluating cost effectiveness. Have you thought them? Since It's a fault tolerant system with active replication, a few servers could go anytime into power saving mode without data loss.

I heard that some guys are trying to handle this problem. See also : On the Energy (In)efficiency of Hadoop Clusters

Hamburg, a graph computing framework on Hadoop

As mentioned ago, I've been forming up the Hamburg project with Hyunsik Choi. Let's see more detail in the diagram of computing method of Hamburg based on BSP model.




Each worker will process the data fragments stored locally. And then, We can do bulk synchronization using collected communication data. The 'Computation' and 'Bulk synchronization' can be performed iteratively, Data for synchronization can be compressed to reduce network usage.

Plainly, It aims to improve the performance of traverse operations in Graph computing. For example, to explores all the neighboring nodes from the root node using Map/Reduce (FYI, Breadth-First Search (BFS) & MapReduce), We need a lot of iterations to get next vertex per-hop time.

If (same condition as before) do BFS using Hamburg, It will cause a lowering the cost of iterations. Let's assume the graph looks like presented below:




The graph was stored in Hbase on distributed system as above. The root is 1. Then, we need only one 'Bulk synchronization' between server2 and server3 with Hamburg. Rests will be calculated on local machine.




Almost graph algorithms are similar with this case.

Updated - 26 August, 2009 : See also, Inference anatomy of the Google Pregel

Massive DDoS attacks

The targets as described below hit by attacks :

Korea sites:

www.president.go.kr, www.mnd.go.kr, www.mofat.go.kr, www.assembly.go.kr, www.usfk.mil, blog.naver.com, mail.naver.com, banking.nonghyup.com, ezbank.shinhan.com, ebank.keb.co.kr, www.hannara.or.kr, www.chosun.com, www.auction.co.kr

US sites:

www.whitehouse.gov, www.faa.gov, www.dhs.gov, www.state.gov, www.voanews.com, www.defenselink.mil, www.nyse.com, www.nasdaq.com, finance.yahoo.com, www.usauctionslive.com, www.usbank.com, www.washingtonpost.com, www.ustreas.gov

It seems, are of a political character. Anyway, please check the 'msiexec2.exe' on your computer! -- Trojan.Win32.DDoS-Agent.33841

- S. Korean Web Sites Hit by Cyber Attacks
- MS제로데이 취약 패치 공개...DDoS 원인일 수 있어

Pregel, Google's large scale graph computing framework

According to google research blog, They made the Pregel for performing large-scale garph computing and uses it for PageRank calculations, shortest path, ..., etc.

In order to achieve that, we have created scalable infrastructure,
named Pregel, to mine a wide range of graphs. In Pregel, programs
are expressed as a sequence of iterations. In each iteration,
a vertex can, independently of other vertices, receive messages
sent to it in the previous iteration, send messages to other vertices,
modify its own and its outgoing edges' states, and mutate the
graph's topology (experts in parallel processing will recognize that
the Bulk Synchronous Parallel Model inspired Pregel).

Maybe the most important things are the locality of adjacent vertices and the dynamic programming. I talked with Hyunsik, a memeber of Heart project about this, We thought it's other distributed programming model instead of map/reduce, but same the shared-nothing architecture for the better performance. I guess it's not much different from the map/reduce framework.

See also:
- Distributing a database for parallelism

Updated - 26 August, 2009 : See also, Inference anatomy of the Google Pregel

Non-negative Matrix Factorization

Non-negative matrix factorization (NMF) is a group of algorithms in multivariate analysis and linear algebra where a matrix, X, is factorized into (usually) two matrices, W and H.

A( M by N ) = W(M by K) X H( K by N )

W,H : Initialize W and H to random positive matrices.
W = ||W*H-A||
H = ||H(T)W(T)-A(T)||

Iterates W*H until convergence.

See also,
- http://en.wikipedia.org/wiki/Non-negative_matrix_factorization, WIKIPEDIA
- Non-Negative Matrix Factorization with sparseness constraints
- Non-Negative Matrix Factorization Techniques and Optimizations
- Document Clustering Based On Non-negative Matrix Factorization

Jacobi eigenvalue algorithm

The Jacobi eigenvalue algorithm is a numerical procedure for the calculation of all eigenvalues and eigenvectors of a real symmetric matrix.

Each Jacobi rotation can be done in n steps when the pivot element p is known. However the search for p requires inspection of all N ≈ ½ n² off-diag elements. We can reduce this to n steps too if we introduce an additional index array with the property that mi is the index of the largest element in row i, (i = 1, … , n - 1) of the current S. Then (k, l) must be one of the pairs (i,mi) . Since only columns k and l change, only mk and ml must be updated, which again can be done in n steps. Thus each rotation has O(n) cost and one sweep has O(n³) cost which is equivalent to one matrix multiplication. Additionally the mi must be initialized before the process starts, this can be done in n² steps.
Typically the Jacobi method converges within numerical precision after a small number of sweeps. Note that multiple eigenvalues reduce the number of iterations since NS < N. -- WIKIPEDIA

See also:
- Jacobi eigenvalue algorithm, Wikipedia
- A parallel algorithm for the eigenvalues and eigenvectors of a general complex matrix

Here's my test code.

/**
* Jacobi eigenvalue algorithm
*/
public class Jacobi {
public static void main(String[] args) {
double[][] A = new double[][] { { 4, 3, 2, 1, 0, 0 }, { 3, 4, 3, 2, 0, 0 },
{ 2, 3, 4, 3, 0, 0 }, { 1, 2, 3, 4, 0, 0 }, { 0, 0, 0, 0, 1, 0 },
{ 0, 0, 0, 0, 0, 1 } };

double t, c, s;
int p, q, icount, state, size = 6;
double tol = 1.e-5; // the tolerance level of convergence
int icmax = 100; // the maximum iterations number

int[] colRowOfElMax = new int[size], rowOfElMax = new int[1];
double[][] temp = new double[size][size], D = new double[size][size];
double[][] V, diagD;

double[] maxElColRow = new double[size], maxElRow = new double[1];
double[][] dMinusDiagD = new double[size][size], absDminusDiagD = new double[size][size];
double[][] rot = new double[2][2], rotT = new double[2][2];

// makes V into a unit matrix
V = new double[size][size];
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
V[i][j] = 0;
}
V[i][i] = 1.0;
}

D = A; // copies A to D
diagD = diag(D, size);// outputs DiagD=diagonal of D
dMinusDiagD = minus(D, diagD, size); // does D-DiagD
abs(dMinusDiagD, absDminusDiagD, size);// does abs(D-DiagD)
maxMatrix(absDminusDiagD, size, colRowOfElMax, maxElColRow);
maxVector(maxElColRow, size, rowOfElMax, maxElRow);
q = rowOfElMax[0];
p = colRowOfElMax[q];
icount = 0;
state = 1;

// Iterations
while (state == 1 && icount < icmax) {
icount = icount + 1;
if (D[q][q] == D[p][p]) { // check to prevent t from diverging
D[q][q] = D[p][p] + 1.e-10;
}
t = D[p][q] / (D[q][q] - D[p][p]);
c = 1 / Math.sqrt(t * t + 1);
s = c * t;
rot[0][0] = c;
rot[0][1] = s;
rot[1][0] = -s;
rot[1][1] = c;
transpose(rot, rotT, 2);// rotT=transpose(Rot)

for (int i = 0; i < size; i++) {
temp[p][i] = rotT[0][0] * D[p][i] + rotT[0][1] * D[q][i];
temp[q][i] = rotT[1][0] * D[p][i] + rotT[1][1] * D[q][i];
D[p][i] = temp[p][i];
D[q][i] = temp[q][i];
}
for (int i = 0; i < size; i++) {
temp[i][p] = D[i][p] * rot[0][0] + D[i][q] * rot[1][0];
temp[i][q] = D[i][p] * rot[0][1] + D[i][q] * rot[1][1];
D[i][p] = temp[i][p];
D[i][q] = temp[i][q];
}
for (int i = 0; i < size; i++) {
temp[i][p] = V[i][p] * rot[0][0] + V[i][q] * rot[1][0];
temp[i][q] = V[i][p] * rot[0][1] + V[i][q] * rot[1][1];
V[i][p] = temp[i][p];
V[i][q] = temp[i][q];
}

// find the new q, p element array values that need to be changed
diagD = diag(D, size); // outputs diagD=diagonal of D
dMinusDiagD = minus(D, diagD, size); // does D-DiagD
abs(dMinusDiagD, absDminusDiagD, size); // does abs(D-DiagD)
maxMatrix(absDminusDiagD, size, colRowOfElMax, maxElColRow);
maxVector(maxElColRow, size, rowOfElMax, maxElRow);
q = rowOfElMax[0];
p = colRowOfElMax[q];
if (Math.abs(D[p][q]) < tol * Math.sqrt(sumDiagElSq(diagD, size)) / size) {
state = 0;
}
}

// V is the eigen vectors
System.out.println("Jacobi Eigenvalues");
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
System.out.print(diagD[i][j] + "\t");
}
System.out.println(" ");
}
}

/**
* finds the diagonal elements of A and puts them into B
*
* @param A
* @param n
* @return
*/
public static double[][] diag(double A[][], int n) {
double[][] B = new double[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
B[i][j] = 0;
}
B[i][i] = A[i][i];
}

return B;
}

/**
* C = A - B
*
* @param A
* @param B
* @param n
* @return C
*/
public static double[][] minus(double A[][], double B[][], int n) {
double[][] C = new double[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
C[i][j] = A[i][j] - B[i][j];
}
}
return C;
}

/**
* Finds the absolute value of a matrix
*
* @param A
* @param B
* @param n
*/
public static void abs(double A[][], double B[][], int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
B[i][j] = Math.abs(A[i][j]);
}
}
}

/**
* finds the maximum elements of each column; returns the maximums in Max and
* their array positions in Row
*
* @param A
* @param n
* @param Row
* @param Max
*/
public static void maxMatrix(double A[][], int n, int Row[], double Max[]) {
for (int i = 0; i < n; i++) {
int k = 0;
Max[i] = A[k][i];
Row[i] = k;
for (int j = 0; j < n; j++) {
if (A[j][i] > Max[i]) {
Max[i] = A[j][i];
Row[i] = j;
}
}
k = k + 1;
}
}

/**
* finds the maximum elements of a column of A; returns the maximum of a
* column as Max and its array position as Row
*
* @param A
* @param n
* @param Row
* @param Max
*/
public static void maxVector(double A[], int n, int Row[], double Max[]) {
Max[0] = A[0];
Row[0] = 0;
for (int i = 0; i < n; i++) {
if (A[i] > Max[0]) {
Max[0] = A[i];
Row[0] = i;
}
}
}

/**
* finds the transpose of A and puts it into B
*
* @param A
* @param B
* @param n
*/
public static void transpose(double A[][], double B[][], int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
B[i][j] = A[j][i];
}
}
}

/**
* finds the sums of the squared of the diagonal elements of A
*
* @param A
* @param n
* @return
*/
public static double sumDiagElSq(double A[][], int n) {
double sum = 0;
for (int i = 0; i < n; i++) {
sum = A[i][i] * A[i][i] + sum;
}
return sum;
}
}

NAVER Japan, closed beta service has been started again

The Search engine, NAVER Japan closed beta service, will run from the 15th of this month for the limited number of people.




Naver Japan had actually launched in the Japanese market earlier (2005), but the service didn't make any splashes. Instead, According to wikipedia Japan (http://ja.wikipedia.org/wiki/NaverBot), NAVER japan seems disgraced by their behavior, specially, an bots who impersonated a GoogleBot was ran. NAVER Japan will fail again unless the service delivers a significantly better performance and good image.

See also, Japanese Search Engine Market

P.S. The interview model : Julia Oki.

IMAP protocol and server

I realized that IMAP is a really complex protocol with problems like support for concurrent command processing, aside from the extensive list of commands. So, command parser, session manager and request handler are necessary. For example,

LSUB "#news." "comp.mail.*"
A654 FETCH 2:4 (FLAGS BODY[HEADER.FIELDS (DATE FROM)])

Fortunately , There are some open source projects related with IMAP.

- Apache James, fully featured mail server
- Green Mail, mail server, supports SMTP, POP3, IMAP with SSL
- JIMAP, java based implementation of the IMAP protocol

According to Robert Burrell Donkin which is a member of ASF, "As far as James IMAP goes, the protocol handlers are fine. The Mailbox implementations need more work (but that's on my list for this week).".

The secrets of fast mental arithmetic

The 'Britain´s Got Talent' of south korea, 'Star King' introduced the expert of mental arithmetic. She did quick mental arithmetic to calculate large integer numbers in only a few seconds. For example, 258,785,412,354 + 125,465,871,235 + 954,125,487,965 - 845,123,658,792 * 542,136,587,212 ... = ?

I was very impressed. According to She, "I did calculate them with an imaginary abacus".



OK, The abacus-based mental calculation is the recipe. Generally, we learned to calculate multi-digit numbers from right to left, one digit at a time. It's a carry/serial calculation. But Her (abacus) algorithm is little different from us. It's the shift-up/parallel calculation.

Frobenius norm with Hama

Recently, The Frobenius norm was nicely implemented as below by Samuel, which is the one of Hama committers. The Frobenius norm is submultiplicative and is very useful for linear algebra. This norm is often easier to compute than induced norms.


/** Frobenius Norm Mapper */
public static class MatrixFrobeniusNormMapper extends MapReduceBase implements
MatrixNormMapper {
@Override
public void map(IntWritable key, MapWritable value,
OutputCollector output, Reporter reporter)
throws IOException {
double rowSqrtSum = 0;
for (Map.Entry e : value.entrySet()) {
double cellValue = ((DoubleEntry) e.getValue()).getValue();
rowSqrtSum += (cellValue * cellValue);
}

nValue.set(rowSqrtSum);
output.collect(nKey, nValue);
}
}

/** Frobenius Norm Combiner */
public static class MatrixFrobeniusNormCombiner extends MapReduceBase
implements MatrixNormReducer {
private double sqrtSum = 0;

@Override
public void reduce(IntWritable key, Iterator values,
OutputCollector output, Reporter reporter)
throws IOException {
while (values.hasNext()) {
sqrtSum += values.next().get();
}
// Note: Tricky here. As we known, we collect each row's sum with key(-1).
// the reduce will just iterate through one key (-1)
// so we collect the max sum-value here
nValue.set(sqrtSum);
output.collect(nKey, nValue);
}
}


You can see this performance on this page

Google support RDFa and Microformats

http://ebiquity.umbc.edu/blogger/2009/05/12/google-support-rdfa-and-microformats/

Meeting with the CTO of Sun Japan

I was in a meeting with the CTO of Sun Japan today. He visited me and wanted to know the possibility of Hama deployment into scientific/HPC computing area with Hadoop.

Since it's too early stage, there was not much talk/plan. but I felt sure that it'll really valuable if implemented. It was a delight to talk with him.

Psychologists Are Better Stockmarket Speculators Than Economists

Below report shows that the stock is not so much a science as a gamble. ;)

----
From: http://www.medicalnewstoday.com/articles/35953.php

Shareholders seem to be swayed by the buying pattern of other shareholders much less than has hitherto been assumed. This at least is the conclusion arrived at by economists of the Bank of England and the universities of Heidelberg and Bonn. Together with the corporate consultants McKinsey they scrutinised the share-buying behaviour of about 6,500 persons in an Internet experiment. They found no signs of ‘herd instinct’ during the experiment - on the contrary, some of the test subjects decided against buying those specific shares which had just been bought by so many other players. Psychologists, particularly, mistrusted those shares which they regarded as overvalued. This strategy benefited them enormously: on average they were markedly more successful in their speculation than physicists or mathematicians - or even economists.

On average the psychologists earned three times as much as economists and physicists in the stock exchange game. ‘They tended to decide against buying shares precisely when a lot of other players had bought them,’ Dr. Andreas Roider of the University of Bonn’s Economics Department explains. Many discussions up to now have assumed the opposite: investors, it was thought, behave like lemmings. They always buy those shares which are most in demand at a particular time, thereby pushing the share prices too high (or too low). Hardly any explanation of the turbulences on the financial markets are without some reference to the marked predisposition to the herd instinct which allegedly investors show. Yet it might also be the case that each investor has decided in favour of buying independently of the behaviour of other investors - for example, because information has become available about a particular share which argues in favour of buying. Whether shareholders really are influenced by the ‘herd instinct’ is therefore hard to determine in practice.

An economic experiment under controlled conditions was meant to help clarify this issue. Together with corporate consultants McKinsey Professor Jörg Oechssler of the University of Heidelberg with his co-authors Dr. Andreas Roider and Dr. Matthias Drehmann of the Bank of England carried out a financial markets game via the Internet. In it just under 6,500 participants were able to deal in different stocks and shares. Prizes amounting to over 11,000 euros ensured that the game was taken seriously.

‘The players were able to decide in favour of two fictitious shares A and B,’ Dr. Roider explains. ‘Only one share turned up a profit at the end of the game, the other being a dud.’ Before making a decision to buy each participant was given a tip by their investment banker, e.g. ‘Share A is a winner.’ However, these tips were only true in two out of three cases - even investment bankers can make mistakes. As soon as a player had decided in favour of a specific share, the share rose in price. ‘The players could now buy their shares consecutively,’ Dr. Roider says. ‘The first one was only able to rely on the investment banker’s tip. The subsequent buyers, by contrast, were also able to see from the share index what shares their predecessors had chosen.

One million flies can’t be wrong

In a situation like this even a ‘bad’ share can soar dramatically in price - simply because a lot of people choose it. Assuming the first two players get the tip to buy share A from their investment banker, even if player 3 then gets a tip to choose share B, that player may decide in favour of A - after all, his predecessors have apparently been tipped off to choose this share. Player 4, taking as a motto ‘one million flies can’t be wrong’, will find it very difficult to buck the trend and choose share B. The result is that the herd instinct sends the value of share A up to dizzying - and ultimately irrational - heights.

In the experiment, however, those involved by no means followed blindly the behaviour of previous investors. - quite the contrary. As a rule the participants mainly allowed themselves to be influenced in their choice of share by their adviser’s tip. In fact, many investors made a conscious decision to buck the trend, thereby contributing to a stabilisation of the share prices. ‘This can of course be perfectly sensible if you think that the share is currently overpriced and that this is partly due to the irrational behaviour of earlier investors,’ says Dr. Roider. The psychologists, particularly, seemed to ascribe share prices to these sorts of ‘psychological’ effects. Their intuition about the possibly irrational behaviour of other investors meant that they made bigger profits. By contrast, players who had studied Physics seemed to rely on the cool rationality of other participants - and thus fared worse.

Dr. Andreas Roider
roider@uni-bonn.de
University of Bonn
http://www.uni-bonn.de

The spammer is a potential advertiser?

I have once thought that the spammer is a potential advertiser, fighting with spammers. Basically, they want to advertise on mail infra-. Should we only block them? Is there a way to convert them to advertiser?

Be distressed by excessive work

Commonly I make up my mind easily. I'm not on the horns of a dilemma very often. But, I'm not right now. Lately, I've been considering of going back to school (Or other nice company which could provide me some time for my research) since the lack of time for my open source works / researches and my free time distresses me deeply.

By far, workers in South Korea have the longest work hours among OECD countries. The average South Korean works 2,390 hours each year, according to the OECD. This is over 400 hours longer than the next longest-working country and 34% more hours than the average in the United States.

NHN, corp. is good company, but do you know that NHN, corp. is in Korea? ;(

Movie: The Happening 2008

Today, I watched this movie and personally I think it's not bad.




The film opens in New York. People start to get confused in Central Park, repeating their words, standing still and sometimes walking backwards. We hear a few screams. A woman reading on a bench takes her silver chopstick-style hair pin out of her hair and stabs herself in the neck with it.

The plant's chemical defenses were the culprit. That insight seems based on 'New Study Sheds Light on Plants’ Nighttime Defense'.

Compute the transpose of matrix using Hama

The transpose of a matrix is another matrix in which the rows and columns have been reversed. It will be used for SVD (Singular Value Decomposition).

+ + + +
| a11 a12 a13 | | a11 a21 a31 |
| a21 a22 a23 | => | a12 a22 a32 |
| a31 a32 a33 | | a13 a23 a33 |
+ + + +

- A map task receives a row n as a key, and vector of each row as its value
- emit (Reversed index, the entry with the given index)
- Reduce task sets the reversed values

The transpose of 5,000 * 5,000 dense matrix took 12 mins using Hadoop/Hama (10 nodes). Why need to store the result? If we store the result, the locality will be provided for next steps, such as multiplication.

The ASF is ten years

The Apache Software Foundation was 10 years old two weeks ago. At that time, I was university student in Korea, I never dreamed that I would someday play with apache. Recently I'm quite busy at work but I'll do my best for ASF.



- https://blogs.apache.org/foundation/entry/the_asf_is_ten_years

Japanese search engine market

I was wondering about japanese IT market since NHN, corp. still plans to japanes web search offering as far as I know. So, I asked about it to 'Tetsuya Kitahata' who is a japanese, a man of IT enterprise, also famous for his open source work (Apache Jakarta). He said, "Baidu (Chinese leading company in web search engine) is struggling here in japan.", "Yahoo! JAPAN is the most popular web search engine in Japan (Yahoo:Goole:MSN = 6:3:1). Yahoo, Inc. is/was mostly owned by the Japanese (to be precise, he has bloodline of Korean), named Masayoshi SON from the beginning (in 1996 or around?). Mr. SON is one of the most famous entrepreneurs in Japan. So, Yahoo! is very popular in Japan. I can not think that Baidu can beat neither Yahoo! Japan nor Google Japan. Mr. SON is the owner and CEO of SOFTBANK, K.K.".

Hmm, I can't forecast the success but, A degree of success seems predictable.

Friday's Dinner

Today, the stock market closed strong and I wound up this week by selling all my stock. But, I'll invest again in a near future, thinking that I had better invest in stocks because they have more growth potential than me. Oh, I wish I lives on income from investments.

Anyway, this is my dinner for tonight. Thank you Lord for the food -- amen.


TIP: How to hide the Blogger Navbar

To hide the Blogger Navbar :

1: On your Dashboard, select Layout. This will take you to the Template tab. Click Edit HTML. Under the Edit Template section you will see you blog's HTML.

2: Paste the CSS definition in the top of the template code:

#navbar-iframe {
display: none !important;
}

Google AdSense for Domains


What is AdSense for domains?

AdSense for domains allows publishers with undeveloped domains to help users by providing relevant information including ads, links and search results.
...

Cool, seems a good solution for useless/undeveloped domain. I wanted to try them immediately. (In all honesty, I heard rumor that some decoy domain names by typing errors (e.g. foofle.com/uoutube.com or maver.com) earn a lot of money. *smile*)

So, Just bought a few domains:

- http://www.fadegook.com
- http://www.filegactory.com

I choose these by statistical analysis, I'll report the detailed result if I can. ;)

Nature's Equity

이인로(李仁老), a wise old scholar of korea said, "The birds have two wings, but only two legs, the beatiful flowers doesn't bear fruits and the color clouds are more easily scattered".

TouchGraph - Graph visualization tool

The diagram below is my social graph from a online social network of facebook. The TouchGraph shows how my friends are connected. It seems was developed, as a open source under the apache license - http://sourceforge.net/projects/touchgraph/



Find the maximum absolute row sum of matrix using MapReduce

The find the maximum absolute row sum of matrix is a good fit with MapReduce model as below.

j=n
The maximum absolute row sum = max ( sum | a_{i,j} | )
1<=i<=n j=1


- A map task receives a row n as a key, and vector of each row as its value
- emit (row, the sum of the absolute value of each entries)
- Reduce task select the maximum one

Maybe it can be written in java as below.

Vector v = givenValue;

double rowSum;
for(VectorEntry e : v) {
rowSum += Math.abs(e.get(i));
}

See more of the Hama - Algorithms

PHP similar_text algorithm

The similar_text returns the number of matching letters of two strings. It can also calculate the similarity of the two strings in percent (matched letters count/average length of two letters)*100. For example,

<?php
echo similar_text("Hello World","Hello Peter");
?>
Output: 7

<?php
echo similar_text("Pello World","Hello Weter");
?>
Output: 6, because the letters are not in the correct order.

<?php
similar_text("Hello World","Hello Peter",$percent);
echo $percent;
?>
Output: 63.6363636364

Gmail and Spam Filtering

"Many Google teams provide pieces of the spam-protection puzzle, from distributed computing to language detection. For example, we use optical character recognition (OCR) developed by the Google Book Search team to protect Gmail users from image spam. And machine-learning algorithms developed to merge and rank large sets of Google search results allow us to combine hundreds of factors to classify spam," explains Google. "Gmail supports multiple authentication systems, including SPF (Sender Policy Framework), DomainKeys, and DKIM (DomainKeys Identified Mail), so we can be more certain that your mail is from who it says it's from. Also, unlike many other providers that automatically let through all mail from certain senders, making it possible for their messages to bypass spam filters, Gmail puts all senders through the same rigorous checks."

See also:

- Official Gmail Blog: How our spam filter works
- A Distributed Bayesian Spam Filtering using Hadoop Map/Reduce
- or Parallelizing Support Vector Machines on Distributed Computers
- Sender Reputation in a Large Webmail Service
- Spam Filtering using Google/GMAIL

Movie: Gran Torino

This movie was very impressive, took me to think of of my father and my life.


Hadoop Install (하둡 설치)

Many korean people still ask me how to download and install the hadoop. This post describes how to install, configure hadoop cluster. If you are familiar with English, See below links:

- Hadoop: Quick Start
- Hadoop: Cluster Setup

하둡 소개

Hadoop은 일반 PC급 컴퓨터들로 가상화된 대형 Storage를 형성하고 그 안에 보관된 거대한 데이터 셋을 병렬로 처리할 수 있도록 개발된 Java Software Framework 입니다. Map Reduce와 같이 단순화된 병렬 처리 모델은 복잡한 병렬 프로그램을 light-weight 하게 개발 할 수 있도록 도와 주고, Storage의 Fault tolerance 모델은 서비스/운영의 maintenance를 용이하게 합니다.

필요한것들

Hadoop Installation 이전 위에 언급된 바와같이 하둡은 Java Software Framework 이기때문에, JDK 1.6.x 이상이 필요합니다. (하둡 0.19.x 이상 기준) 그리고, Master와 Slaves 간의 통신을 위해 SSH 로 하기 때문에 SSH도 설치해야하며, 연결시 패스워드 입력 없이 자동으로 인식하기 위해서 공개키를 미리 복사해주는것이 좋습니다.


$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/udanax/.ssh/id_dsa):
Created directory '/home/udanax/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/udanax/.ssh/id_dsa.
Your public key has been saved in /home/udanax/.ssh/id_dsa.pub.
The key fingerprint is: blah~ blah~
$ _

$ cat ~/.ssh/id_dsa.pub | ssh id@host "cat >> .ssh/authorized_keys"
password: enter the password
$ _


설치/설정

하둡 다운로드는 여기에서 하세요. 압축만 적당한 디렉토리에 (각 서버 동일하게) 풀면됩니다. 그 다음 설정파일들로 Cluster를 구성합니다. 설정 파일들은 ${HADOOP_HOME}/conf 에 위치합니다.

$ cd ${HADOOP_HOME}
$ vi ./conf/hadoop-env.sh
# Java 홈 경로를 입력
export JAVA_HOME=/usr/local/java

$ vi ./conf/master
# 파일에 master 서버의 host 이름을 작성
MASTER_SERVER_NAME
ex) master.udanax.org

$ vi ./conf/slaves
# 파일에 slave들을 라인단위로 작성
SLAVE_SERVER_NAME_1
SLAVE_SERVER_NAME_2
ex) slave1.udanax.org

그리고, hadoop-site.xml 파일을 열어, 아래와 같이 기본적인 경로 및 URL을 설정해줍니다.

- hadoop.tmp.dir : 데이터 저장 디렉터리
- fs.default.name : HDFS 파일시스템 주소 (NameNode 가 올라간 master 서버)
- mapred.job.tracker : JobTracker 주소 (JobTracker 가 올라간 서버)

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->

<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/udanax/hadoop-storage</value>
<description>A base for other temporary directories.</description>
</property>

<property>
<name>fs.default.name</name>
<value>hdfs://master.udanax.org:9000/</value>
<description>
The name of the default file system. Either the literal string
"local" or a host:port for NDFS.
</description>
</property>

<property>
<name>mapred.job.tracker</name>
<value>master.udanax.org:9001</value>
<description>
The host and port that the MapReduce job tracker runs at. If
"local", then jobs are run in-process as a single map and
reduce task.
</description>
</property>

<property>
<name>mapred.map.tasks</name>
<value>3</value>
<description>
define mapred.map tasks to be number of slave hosts
</description>
</property>

<property>
<name>mapred.reduce.tasks</name>
<value>3</value>
<description>
define mapred.reduce tasks to be number of slave hosts
</description>
</property>

<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>

실행


$ cd ${HADOOP_HOME}
$ ./bin/hadoop namenode -format
$ ./bin/start-all.sh

$ ./bin/hadoop jar hadoop-example.jar pi 10 10

Breadth-First Search (BFS) & MapReduce

The Breadth-First Search (BFS) & MapReduce was roughly introduced from Distributed Computing Seminar. The graph is stored as a sparse matrix, finds shortest path using Map/Reduce as describe below:

Finding the Shortest Path: Intuition

- We can define the solution to this problem inductively:
- DistanceTo(startNode) = 0
- For all nodes n directly reachable from startNode, DistanceTo(n) = 1
- For all nodes n reachable from some other set of nodes S,
- DistanceTo(n) = 1 + min(DistanceTo(m), m ∈ S)


From Intuition to Algorithm

- A map task receives a node n as a key, and (D, points-to) as its value
- D is the distance to the node from the start
- points-to is a list of nodes reachable from n
∀p ∈ points-to, emit (p, D+1)
- Reduce task gathers possible distances to a given p
and selects the minimum one

According to above-mentioned idea, A map task receives a node n as a key, and (D, points-to) as its value. It means that an "input" is a set of all reachable path from 'start' to each key.

Updated: My mis-understand. It doesn't need an set of all reachable path. See page 9 - "Adjacency Matrices".

- Another classic graph representation.
M[i][j]= '1' implies a link from node i to j.
- Naturally encapsulates iteration over nodes

| 1 2 3 4
--+----------
1 | 0 1 0 1
2 | 1 0 1 1
3 | 0 1 0 0
4 | 1 0 1 0

So, It can be represented as below:

1 (2, 4)
2 (1, 3, 4)
3 (2)
4 (1, 3)

Then, MR job will iterate 'hop' times(= maximum distance). Let's assume the start node is "1".

First MR job:

1 D=0, points-to=(2, 4)
2 D=inf, points-to=(1, 3, 4)
3 D=inf, points-to=(2)
4 D=inf, points-to=(1, 3)

Result: (2,1), (4,1)

Second MR job:

1 D=0, points-to=(2, 4)
2 D=1, points-to=(1, 3, 4)
3 D=inf, points-to=(2)
4 D=1, points-to=(1, 3)

Result: (2,1), (3,2), (4,1)

Here's my test code:

public class BFS {
static Map<String, ArrayList<String>> collect = new HashMap<String, ArrayList<String>>();

public static void main(String[] args) {
String[] value = {
// key | distance | points-to
"1|0|2;4",
"2|"+Integer.MAX_VALUE+"|1;3;4",
"3|"+Integer.MAX_VALUE+"|2",
"4|"+Integer.MAX_VALUE+"|1;3",
};

mapper(value);
reducer(collect.entrySet());
}

private static void mapper(String[] value) {
for (int i = 0; i < value.length; i++) {
String line = value[i].toString();
String[] keyVal = line.split("[|]");

String Key = keyVal[0];
String sDist = keyVal[1];
String[] links = null;
if (keyVal.length > 2) {
links = keyVal[2].split(";");
int Dist = Integer.parseInt(sDist);

if (Dist != Integer.MAX_VALUE)
Dist++;

for (int x = 0; x < links.length; x++) {
if (links[x] != "") {
ArrayList<String> list;
if (collect.containsKey(links[x])) {
list = collect.get(links[x]);
} else {
list = new ArrayList<String>();
}

list.add(Dist + "|");
collect.put(links[x], list);
}
}

ArrayList<String> list;
if (collect.containsKey(Key)) {
list = collect.get(Key);
} else {
list = new ArrayList<String>();
}
list.add(sDist + "|" + keyVal[2]);
collect.put(Key, list);
}
}
}

private static void reducer(Set<Entry<String, ArrayList<String>>> entrySet) {
for (Map.Entry<String, ArrayList<String>> e : entrySet) {
Iterator<String> values = e.getValue().iterator();
int minDist = Integer.MAX_VALUE;
String link_list = "";

while (values.hasNext()) {
String[] dist_links = values.next().toString().split("[|]");
if (dist_links.length > 1)
link_list = dist_links[1];

int dist = Integer.parseInt(dist_links[0]);
minDist = Math.min(minDist, dist);
}

System.out.println(e.getKey() + " - D " + (minDist + " | " + link_list));
}
}
}

Chinese Proverb - 兎死狗烹

Do you know '兎死狗烹'? It's a chinese proverb. In metaphrase, The man use hound to hunt rabbit but shoo the hound out onto the street after hunt rabbit. it means that when needed, it's grateful, but once unneedful, it's useless and abandoned.

Sexy or Intelligent Internet

It is better to be intelligent or sexy? For scientist is important to be intelligent. For model is important sexy appereance. For school professor is important to be intelligent. It is better to be intelligent or sexy to achieve the succes in relations to other people.

Then, the web application should be intelligent or sexy? IMO, It's same with above. A search engine should be intelligent enough to bring you the best information based on what you mean. A entertainment applications should be sexy, fresh, suggestive to provide more fun.

We can find that examples of these character from google.com and youtube.com.

What are the operating system most dominantly use in korea?

I noticed that someone visit my blog with this question - "what are the operating system most dominantly use in korea?". So I would like to answer that question.

In korea, Microsoft Windows (and IE browser) is still used on as many as 90 percent of China's 40 million PCs, because of most korea web-site (e.g. internet banking, game launch sites, multi-media site, ..., etc) requires Active-X on the high speed internet infra-. It was boom w/o special reason.

So, I think that not IE stuff (e.g., IPhone, Google Chrome, Safari, FireFox) didn't much appeal to korea market.

Google Chubby And Distributed Systems

Chubby is a sort of external lock-management server for reliability and availablity, and used to solve asynchronous consensus and other problems in distributed computing.

Building Chubby was an engineering effort required
to fill the needs mentioned above; it was not research.
We claim no new algorithms or techniques. The purpose
of this paper is to describe what we did and why, rather
than to advocate it. In the sections that follow, we de-
scribe Chubby’s design and implementation, and how it
has changed in the light of experience. We describe un-
expected ways in which Chubby has been used, and fea-
tures that proved to be mistakes. We omit details that are
covered elsewhere in the literature, such as the details of
a consensus protocol or an RPC system.

Papers are focused on their overall system architecture as they claimed. Click below to see more detail:

- The Chubby lock service for loosely-coupled distributed systems
- Paxos made live

Updated:
- There is a similar open source called zookeeper.

Google PowerMeter

Google PowerMeter, now in prototype, will receive information from utility smart meters and energy management devices and provide anyone who signs up access to her home electricity consumption right on her iGoogle homepage. The graph below shows how someone could use this information to figure out how much energy is used by different household activites.




Great, It represents a kind of ubiquitous computing system.