티스토리 툴바


develope2012/01/04 12:44
제약사항
1. 하나의 PC에서 Hbase 테스트 하고 싶음
2. PC 기본 OS는 업무때문에 XP가 install되어 있음
3. Hbase는 linux에 설치하기가 용이하므로 colinux를 사용하였음 (cgywin으로 하다가 path 설정이 다른 sw와 중복되어colinux로 변경)
4. Hbase를 test하기 위한 eclipse는 XP에 있음

작업사항
1. colinux 설치 & xp와 colinux간 네트워크 브릿지 연결
2. http://hbase.apache.org/book.html#quickstart 에 명시된 바와 같이 Hbase를 Standalone으로 설치
3. test용도의 java client 작성, 연결 code는 아래와 같음

Configuration conf = HBaseConfiguration.create(); 
conf.set("hbase.zookeeper.quorum", "linux.test.com");
conf.set("hbase.zookeeper.property.clientPort", "2181");

문제
1. colinux의 Hbase zooKeeper port인 2181까지 접속되어 session은 맺어지나 이후 작업에서 error 발생
2. error가 발생한 곳을 debug 해 보니 Hbase가 설치된 곳의 특정 port로 접속하려고 하나 접속이 안됨
3. Hbase가 설치된 곳에서 netstat -na | grep LISTEN 을 해보니 해당 port가 127.0.0.1로 바인딩되어 있음

문제 해결
1. Hbase가 설치된 linux의 /etc/hosts에서 localhost와 localhost.localDoamin을 127.0.0.1 에서 ifconfig에 명시된 할당받은 ip로 변경

문제 해결 실마리
http://grokbase.com/t/hbase.apache.org/user/2010/12/hbase-client-connect-to-remote-hbase/2332kgy4p63dhbpbhvlcogpst5ri   

문제 발생 상황 유추
Standalone으로 설치되었을 때 DNS query 결과 localhost가 127.0.0.1이면 이후 open하는 listen socket을 127.0.0.1로 binding 하는 것 같음. 
Posted by rer44
develope2011/08/31 14:50
목표 : 
-. Eclipse에서 CassandraDaemon.java를 debug mode에서 실행 (Window PC환경)

목표 정당화 : 
-. 사람에 따라 다르지만 OSS를 가장 빨리 이해하는 방법은 실행되는 내부 코드 관찰이라고 생각하기 때문

가정 : 
-. 뭐가 어떻게 되었든 java로 만들어졌으니 eclipse에서 debugging 할 수 있을 것이다.

시행착오 내역 & 대안 :
시행착오1 : 공식 사이트인 http://cassandra.apache.org/ 에서 내려받는 최근 소스에는 모든 java file이 없다. build시 source generation되는 부분이 있기 때문으로 추정(ex: cli, cql), 그 외 다른 이유도 있을 것 같음
시행착오1 대안 : 다행이 특정 버전에 대한 Cassandra의 모든 버전은 http://search.maven.org 에서 검색 및 download 가능
시행착오2 : eclipse에서 org.apache.cassandra의 소스코드 자동 컴파일시에 필요한 jar 파일 구하기가 매우 귀찮았음. 왜냐하면 어떤 version의 jar를 구해야 할지를 build.xml을 보고 찾아야 하므로.
시행착오2 대안 : http://cassandra.apache.org/ 에서 다운로드 받은 소스에서 build.xml을 실행하면 /build 아래부분에 빌드 결과가 나오는데 그 중 lib인가를 보면 필요한 jar를 ANT가 버전까지 맞추어서 거의 모두 download 해 놓으므로 그것들을 가져다 쓰면됨.

작업내용 전 단어 명칭 통일
source : http://cassandra.apache.org/ 에서 내려받은 source 
source-all : http://search.maven.org 에서 Cassandra로 검색 후 내려받은 source

작업내용 
1. source와 source-all을 download 받는다. (동일한 버전으로 받아야 함. 동일하지 않으면 머리 많이 아픔. 단 아래는 0.8.4로 작업한 내역임)
2. eclipse workspace에서 source를 두벌 카피한다. folder이름은 각각 Cassandra, Cassandra4Build로 결정. (source-all은 나중에 사용될 것임. 단 source의 bin 아래 Cassandra.bat는 따로 보관할 것.)
3. eclipse에서 java project를 2개 생성하되, 2번에서 만든 folder를 각각 지정한다.
4. Cassandra4Build에서 Build.xml을 Run As > Ant Build로 실행한다.
5. Cassandra4Build에서 Build folder가 만들어졌음을 확인한다.
6. Cassandra 프로젝트에서 src/java 패키지 아래 org/apache/cassandra로 시작하는 폴더를 모두 삭제한다.
7. 6에서 삭제한 곳에 source-all을 copy한다.
8. eclipse에서 Cassandra로 가서 src/java 아래 compile error가 난 곳을 확인한다.
9. Cassandra4Build 프로젝트의 build/lib/jars 에서 적절한 jar를 copy하여 Cassandra lib로 copy한 다음 build path를 재설정한다. (ex: hadoop, jna, common-logging등등... 단 pig는 google에서 검색후 download 받았던 것으로 기억남.)
10. conf 아래 파일들을 6번의 src/java 아래 모두 copy (사실 이 부분은 실행시 필요한 환경설정 file 위치를 맞추는 부분인데, 10번 과정은 빠르기는 하나.. 지저분한 방법임.)
11. Cassandra project의 src/java 내 error가 없음을 확인한 이후 org.apache.cassandra.thrift.CassandraDaemon.java 선택 후 Run As > Run Configuration 선택
12. Program Arguments에 jmxremote, log4j 관련 값들을 설정(설정시 참조할 값은 2번 과정에서 따로 보관한 Cassandra.bat의 내용을 참조하면 됨.)
13. 원하는 곳에 break point 설정한 이후 CassandraDaemon.java에서 Debug As > Java Application 으로 실행.
14. error 가 있다는 경고 메시지가 나오지만 그냥 실행.(어느 부분인지는 아직 파악 못하였음.)
15. Enjoy debugging!

작업 후기
-. CASSANDRA_HOME 을 설정한 이후 작업하면 편할 것 같았지만 그냥 go했음(작업내용의 10번 항목 - 이 부분은 Cassandra.bat를 보면 보다 우아한 환경 구축이 떠 오를 것임.)
-. 외부 Interface격에 해당하는 Cli와 cql 부분은 컴파일러 기술 중 ANTLR이 사용되었음. lex/yacc, javacc만 해봤는데 ANTLR은 이번에 처음 봄. 요즘은 ANTLR이 대세인가????? cql.g는 보면 ANTLR도 비슷하구나라고 생각되는데, cli.g에서 보면 기존 얘들에 비해 ANTLR 문법이 재미있어 보임.
-. Cli는 그렇다 치더라도 cql BNF 변경 용이성 때문에 query 확장성이 매우 높을 것 같음.
-. 무진장 많은 OSS가 사용되었음. 
-. Hadoop 관련 패키지도 있는 걸로 봐서 뭔가 한 단계 더 있을 거 같음.
-. 제대로 알아내려면 많이 공부해야 할 것 같음.

Posted by rer44
Memo2010/04/05 13:20
websocket 현재 버전 : http://www.w3.org/TR/websockets/
웹브라우저가 socket을 어떻게 처리해야 하는가에 대한 websocket spec이 설명되어 있음. 
(20100405 14:41)
알고보니 표준이 하나 더 있었음 : http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-75
둘 중의 하나로 어여 통일되어라!!!

websocket 지원 서버 제품 중 하나 : http://www.kaazing.com/
발빠르게 구현한 제품. 한마디로 잘 만들어 놓으셨음. 
Kaazing Enterprise Gateway 라는 제품이 있고 그 제품에 대한 Developers guide가 있음.
The 10K problem때문에 window에서는 iocp를 쓸 것 같고, linux에서는 epoll을 쓸 것 같음(java 6가 필요인 걸로 봐서)
기본 컨셉은 lightHTTP와 같이 다량의 connection관리가 가능한 proxy 서버인것 같음.

google codesearch에서 찾아본 사례
java : http://www.google.com/codesearch/p?hl=en#71tu17j_Ce0/src/WebSocketServer.java&q=websocket%20file:java&d=1
python : http://www.google.com/codesearch/p?hl=en#QlTYwnotJ-o/tornado/websocket.py&q=websocket&sa=N&cd=4&ct=rc

code를 살펴보면 http header에 Upgrade, Origin.. 등의 생소한 field가 보임. 
W3C 문서에 그런 field가 안 보이는 걸로 봐서 특정 서비스에 dependent한 내용인 것 같음.
(20100405 14:41)
http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-75 에 보면 위 field 관련 내용이 나옴.
request와 response가 HTTP로 구현되어 있는 것 같음.

결론 :
위 code를 참조하여 websocket을 지원하는 브라우저를 client로 하여 request, response를 테스트해보면 websocket을 지원하는 서버구현이 어려운 것은 아닌 것 같음.
proxy로 websocket url은 daemon으로 보내고 일반 http request url은 legacy was로 보내면 테스트 가능해 보임.

기존에 사용하고 있는 was와 websocket지원서버가 어떤식으로 조합될지, 
혹은 legacy was가 websocket spec을 어떻게 지원할지를 지켜보는 것이 관전 포인트임.

(20100405 03:26)
ps :
약 1년반전 websocket과 comet에 대한 내용
Posted by rer44
TAG websocket
Memo2010/03/26 17:17
reverse ajax 혹은 comet에서 발생하는 cross-domain 이슈에서, 지저분한 도메인 설정을 피하기 위한 가장 값싼 아키텍쳐를 정리. 

(add 20100331)
또한 connection을 브라우저와 서버가 항상 유지해야 하는 특성에서 발생하는 문제인 
다량의 유저를 서비스 하기 힘든 점을 해결하기 위함임. 
즉 corss-domain문제는 proxy로 해결하고 다량의 유저를 서비스하는 점은 각 os에서 지원하는 특성들(epoll. kqueue....)등으로 극복함.

business logic이 java인 경우 필요한 것 : 
linxu(2.6이상) lighttpd (for proxy), long-polling handling daemon(or something), was(for common query) 

business logic이 java가 아닌경우 :
business logic을 lighttpd에서 지원하는 cgi로 구현한다면 위 목록에서 was가 빠질수도 있음 

1. linux 장비에서 lighttpd 가 모든 query를 받는다. (long-polling query & common query) 
linux에서 실행된 lighttpd는 많은 수의 connection 을 수용할 수 있다. (linux이외에 다른 os는 http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:Performance 를 참조) 
그러므로 apache proxy와는 달리 long-polling query를 수용할 수 있다.

2. lighttpd에서 proxy를 설정한다. long-polling query는 해당 쿼리를 다루는 daemon(이것 역시 많은 수의 log-polling long-polling connection을 다루기 위해 epoll혹은 kqueue등을 사용해야 한다.)으로 보내고 common query는 was로 보낸다. 

끝. 

주의사항 : twopairs는 lighttpd를 다운로드 받아보지도 않았음. lighttpd의 document로만 짐작하는 바임.
그러므로 위 아키텍쳐를 실제로 검증해보지는 않았음. lighttpd epoll proxy가 예상대로 되지 않는다면 위 내용은 사실과 다를 수 있음. 

ps1 : apache의 proxy를 사용하지 않는 이유는 apache도 epoll을 지원하는 MPM worker(http://httpd.apache.org/docs/2.1/mod/event.html)가 있기는 있지만 여기저기 뒤져보면 hang이 걸린다는 내용이 걸림. 

ps2 : meboo에서 이걸 사용한다고 lighttpd 대문에 나와 있는 걸 보면 lighttpd가 long-polling connection을 위해 최소한 proxy로는 사용이 되었을 것이라 예상됨.
Posted by rer44
Memo2010/02/23 22:03
최선을 다할 수 있는 곳.
최선을 다해도 가끔씩 안되는 곳
최선을 다하는 게 당연한 곳
최선을 다하고 싶게 만들어 주는 곳
최선을 다하여도 뭔가 아쉬움이 남는 곳
Posted by rer44
Memo2010/01/30 18:45
시간이 모자란다.


회사에서 주어지는 과업은 모두 실현 가능한 정도의 양이다.
그걸 다 하지 못한다고 생각하면 참을 수가 없다.


가정을 화목하게 만드는 일도 모두 실현 가능한 일이다.
다만 그만큼 헌신할 시간이 절대적으로 필요하다..


그런데 말이다. 그 두개를 다 하는 것이 매우 힘들다
그래서 힘들다.


나에게 시간이 조금만 더 주어졌으면 좋겠다.

Posted by rer44
Book2010/01/10 21:38
인공지능 개론
마이클 네그네빗스키 저(김용혁 역)

4학교때 회사에 다니느라 AI 강의를 2회이하로 참석한 이후,
10여년이 지날때쯤 쌩뚱맞게 AI가 과업으로 떨어진다면 이책을 추천한다.

학교 다닐때 심지어 AI 교재도 사지 않았던 관계로 이책은 인생에서 처음으로 보는 AI 책이다.
그래서 책 내용자체의 좋고 나쁨을 판단할 근거는 없지만
원하는 내용을 쉽게 이해할 수 있었던 점으로 보아서 내용이 이해하기 쉽게 작성되었고 번역이 잘 된것 같다.

그리고 다른 분들의 이해도와 상대평가를 해 보건데 최소한 학부수준의 AI 지식에 대해 논할 때 AI에 무식함을 들키지 않을 수 있다.
Posted by rer44
Book2010/01/09 22:59

FREE AS IN FREEDOM (RICHARD STALLMAN'S CRUSADE FOR FREE SOFTWARE)

꼬꼬마 엔지니어 시절 머나먼 이국땅에서 RICHARD STALLMAN 아저씨를 W.RICHARD STEVENS 아저씨로 오인하여 구매한 책.

짫다면 짫고 길다면 긴 SW 역사 페이지에 새빨간 한획을 대각선으로 큼지막하게 그어버리셨고, 아직도 여정이 끝나지 않으신 RICHARD STALLMAN 아저씨의 일대기이다.

목적에 정확하게 부합하는 Opensource를 찾고나서도 license에 GNU라고 새겨져 있는 것을 확인한 후 좌절한 기억이 한 두번이 아니지만....

십자가를 짊어지고 가고 있는 그의 길을,
언젠가는 나도 따르리라는 막연한 소망을 내 마음속에 잉태시켜 놓은 책이다.

ps1 : 이 책을 완독하는데 6년 걸렸다.

Posted by rer44
Book2009/12/15 17:28

맥킨지라는 회사가 속해있는 산업환경에서의 best practice를 정리해 놓은 책이다.

모든 best practice가 그렇듯이
자기산업군에서의 최선의 관행은 타산업군에서의 최선의 관행과 완전히 동떨어져 있지는 않다.

그런 관점에서 보면 매킨지가 무슨회사인지 관심이 없더라도
그네들의 탁월한 비즈니스 처리 관행은 꼭 접해볼 필요가 있다!!!

Posted by rer44
Book2009/12/15 17:07
만일 마인드맵을 다년간 활용하고 있는 와중에
이 책을 살까 말까 고민하고 있다면 조언해 드린다.

"절대 사지 마라"

책 중반까지 읽어 보았는데 새로운 개념을 하나도 발견하지 못하였다.
Posted by rer44
TAG 그참