October 2011
4 posts
1 tag
Fixing Erlang checksum problem
There is an installation problem on Erlang (R14B04) with Macport. When it tests its checksum, it produces ‘checksum error’ for opt_doc_html_R14B04.tar.gz. I googled on this and found some others reports. Weirdly, the file’s checksum was not updated in the Portfile of the package. It can be resolved with updating the checksum of the following into the Portfile: bash-3.2#...
Oct 28th
8 notes
1 tag
Speeding up Xcode using Ramdisk
This is my 1 cent tip for speeding up building projects using Ramdisk. Steps 1. Add more RAM modules to your MacBook (up to 8GB) 2. Make a temporary ramdisk(1GB in size) using the following command: diskutil erasevolume HFS+ “ramdisk” `hdiutil attach -nomount ram://2097152` 3. Now, the ramdisk is setup in /Volumes/ramdisk. Check it with ‘mount’ command. /dev/disk1...
Oct 21st
10 notes
1 tag
Oct 17th
Oct 7th
July 2011
1 post
SSH Identity for EC2
To connect Amazone EC2 instances with SSH, it needs to specify its identity(private key, a keypair from EC2). Explicitly, this can be done with ‘ssh -i keypair_file hostname’. To apply this in the system wide, it needs to expose the identity(key pair) file in a user’s “$HOME/.ssh”. This is very useful for a tool, pssh (parallel ssh), in which it does not support...
Jul 13th
May 2011
3 posts
On Beauty of Size
The below pictures were obtained from my recent work. As growing in size, it is becoming an art. This is similar in nature. The beauty of nature comes from its size and its unpredictable outcome.
May 15th
May 4th
Emailing NETGAR logs to Gmail
집에 설치되어 있는 넷기어 유무선 라우터가 최근 iPhone과 iPad의 접속이 매끄럽지 못하고 접속을 튕겨내는 등의 작동이 이상해서 라우터의 로그를 메일로 받아볼 필요가 생겼다. 넷기어 라우터 셋팅에 SMTP서버와 사용자 ID를 설정하면 주기적으로 메일을 받아 볼 수 있는 기능이 있는데 SSL/TLS는 지원하지 않기 때문에 직접 GMail로 메일을 받아 보기 위해서 몇가지 작업이 필요했다. 로컬네트워크에 보안기능이 없는 SMTP서버를 설치하고 다시 GMail로 퍼워드 시키는 방법도 있기는 하지만 가장 간편한 방법으로 stunnel을 택했다. stunnel은 보안기능이 구현되어 있지 않은 네트워크 종단에 암호화 통신을 제공하는 일종의 Proxy다. [1] 넷기어라우터...
May 3rd
March 2011
1 post
My Kinect View
Mar 7th
January 2011
2 posts
3 tags
HandlerSocket for MySQL
MySQL을 NoSQL로 변신 시켜주는 참한 물건이 나왔다. 나온지 몇 개월 됐다. 현재 추진하고 있는 솔루션에 memcached나 redis를 메모리 캐쉬 서버로 앞에 두고 영성속을 위해 데이터베이스로 MySQL를 쓰려던 참이었는데 시기적절하게 좋은 물건을 만난것 같다. DeNA라는 일본의 소셜 게임회사에서 서비스용으로 현업에 사용하고 있기 때문에 일단은 검증은 되었다고 봐도 무난하다. MongoDB나 CouchDB도 쓰이고 있는 판인데 MySQL은 더 신뢰가 간다. MySQL를 KeyValue 스토리지로 사용하는 트릭도 있었기는 하지만 이번엔 제대로 나온듯 하다. 버클리DB나 Sqlite3를 DB엔진으로 두는 KeyValue스토리지도 있기는 하지만 동시성 제어 등에서 약간은 불안한 감이 없지는 않았다. ...
Jan 26th
26 notes
3 tags
Kinect Hack
Kinect를 연구용으로 사용할 일이 있어 맥북에서 환경을 세팅 해봤다.  원래는 PrimeSense제품으로 테스트 해보고 싶었지만 손쉽게 구할 수 있는 Kinect로 해보기로 했다. 어차피 Kinect도 PrimeSense기술이기는 하지만 fps가 60에서 30으로 낮춰서 나온 제품이다. 아직 테스트는 해보지 못했는데 재미삼아서 하는거라 결과가 나오면 공개할 예정이다. 간단에 맥북 port 업뎃하는데 오래걸리는구나. ;-) 설치하기 설치법: http://openkinect.org/wiki/Getting_Started Mac OS X: git-core, libtool, libusb-devel 소스 받기: git clone...
Jan 19th
October 2010
6 posts
2 tags
R 패키지 찾기
구글 검색엔지 이외에 R용 패키지를 검색해 볼만한 사이트 http://cran.r-project.org/web/views/ http://crantastic.org/ http://www.rseek.org/  Tip: sos라는 패키지로 R 관련 검색을 할 수 있다.
Oct 22nd
1 tag
지루한 글쓰기 요령
논문쓰기에서 지켜야할 일들을 반대로 꼬집어 말하고 있다. 저자도 말미에 언급하는 중요한 부분은 글을 쓸 때 시적 표현이나 유머나 부드럽게 읽히게 하는 흐름이 더 중요하고 이런 것들을 책에 도입한 예들을 들면서 이렇게 바뀌어 가는 것도 좋지 않냐는 말을 한다.  극소수의 사람들을 위한 글을 쓸것인가 아니면 많은 사람들이 읽고 이해의 폭을 넓히는 글을 쓸것인가 하는 딜레머에 빠지게 되는데 결국 오래 남은 글은 후자가 아닐까 한다. 과학문헌의 경우에도 조금은 그런 여유를 집어 넣는것도 좋을듯 하다. 틀에 박힌 형식에서 벗어나기 힘든 과학문헌에 투고하는 것보다 조금은 모험적인 책을 써보는것도 흥미진진한 작업일듯 싶다. How to write consistently boring scientific...
Oct 19th
3 tags
모든 데이터에 관심을 가져라
지천에 널려있는 데이터만 잘 활용해도 재미있는 것들을 많이 발견할 수 있고 그것을 비지니스로 연결 시킬 수 있을텐데 왜 그런 노력들을 못하는 것일까? 이건 역시 마인드의 문제이고 IT수준의 문제인지도 모를 일이다. 직관에만 의존하거나 시대의 흐름에만 급급하니 신선하고 혁신적인 것들을 만들어 내지 못하는듯도 싶다. Data Science에 대해서 회사들이 좀 더 관심을 갖고 투자를 하면 좋겠는데 말이지. “I think businesses are sitting on all kinds of interesting data,” Yagan says. “The thing to consider is, How does it drive your business? In our case,...
Oct 17th
1 tag
글쓰기 작업
When you are planning your paper, write down each idea/concept that you want to talk about, checking that they are in a logical order and then listing what you want to say about each, using bullet points. This will help you create paragraphs that have a logical and coherent structure.
Oct 16th
3 tags
The Art of R #1
요즘 다시 R을 많이 써야하는 상황이라 바닥부터 다시 훑고 있다. R을 사용한 예제들을 종종 올릴 예정이다. 이름하여 R의 예술이라고나 할까. 오늘은 참고서적과 간단하게 R로 재미삼아 로고를 만들어 봤다. 참고서적 The R in a nutshell The R Book A Handbook of Statistical Analyses Using R Introductory Statistics with R (Statistics and Computing) Introduction to Scientific Programming and Simulation Using R R cheat sheets #1. 예술적 로고 만들기 Normal Distribution Random 함수(rnorm, runif 등)을...
Oct 14th
2 tags
최근 대형SNS의 Downtime 사례
최근 발생한 몇몇 대형 서비스들의 Downtime에 대해 기술적으로 살펴봤다. #1. Facebook: 9월 23일 / 2시간 30분 downtime 5억명이 넘는 사용자를 가지고 있는 페이스북의 경우 성능을 위해 약800대의 메모리캐슁서버(memcached)에 28테라바이트의 소셜 그래프 데이터를 담아 사용자들에게 서비스 한다. 이는 5억명이라는 사용자를 상대하기 위한 페이스북의 가장 중요한 부분이다. (UDP로 통신하는 가장 고성능의 memcached를 자체적으로 만들어 사용하는 것으로 이미 알려져있다.) 메모리캐슁서비스는 원본 데이터를 빠르게 접근하기 위해 메인 메모리에 데이터를 두는 저장소다. 문제는 원본 데이터가 변경이 되면 캐슁도 따라서 갱신을 해줘야하는데 이번 사건은 모든 메모리캐슁서비스가...
Oct 6th
September 2010
10 posts
2 tags
YesterTabs --> TabZip
  이름 변경! 크롬에서 탭 전체를 북마킹할 수 있다. 종종 열어 놓은 탭이 많은 경우 날짜로 북마킹을 해서 다시 보곤 하는데 웹에 올려 놓고 싶어 하나 만들어 봤다. 사실 크롬 확장 프로그램 어떻게 만드나 한번  배워보려고 겸사 겸사. 그리고 놀고 있던 도메인도 살릴겸. “Yester-“는 지나간 시간에 대한 표현의 접두어다. 스티비 원더의 Yester-Me, Yester-You, Yesterday라는 노래를 떠올리면 쉽겠다. 지나간 탭들을 잊지 않기 위한 서비스라고나 할까? 일단 크롬 확장프로그램(crx)은 서비스 사이트에서 다운받아 설치하면 된다. 아래 그림 처럼 책 모양의 아이콘이 생기는데 그놈을 누르면 현재 열려있는 모든 크롬 탭은 다 저장 할 리스트에 나온다....
Sep 24th
2 tags
글쓰기 도구 iPad
글쓰기 도구로서의 아이패드에 대해 간단히 정리해 봤다. 좋은점 언제 어디서든 글쓰기가 가능하다. 통신이 되지 않는 곳에서 글쓰기에 집중할 수 있다. 앱간의 스위칭이 PC만큼 자유롭지 않아 웹질이나 다른 일에 빠질 확률이 다소 적다. (정말? 그 반대의 경우도) 완성된 글을 iBook에서 책 처럼 볼 수 있다. Dropbox나 Evernote로 동기화해 다른 환경에서 바로 작업을 이어나갈 수 있다. 글쓰기를 위한 아이패드 iPad for Writers The iPad: A Writer’s Tookbox The iPad for Writers? Can’t Wait iPad Apps for Writers What does the iPad mean for writers? ...
Sep 19th
4 tags
SeoulParlor
최근에 수정을 보고 있는 SeoulParlor의 아키텍쳐. 어떠한 상황에서도 살아 남을 수 있는 서비스를 지향하고 있다. 주로 Read-Only의 어플리케이션을 타겟으로 하고 스토리지에서의 검색기능을 특화하도록 할 생각이다. 이미 모듈들은 독립적으로 존재하는데 합치는 작업에 시간이 소요될 듯 하다. 한국인 트위터 계정에 대한 데이터와 LBS를 위한 위치정보 데이터들을 위해서 주로 쓰여질 예정이다. 정식으로 공개는 버젼 0.1 정도 나와야 할 수 있을듯. 공식사이트
Sep 15th
3 tags
Dropbox Switcher
예전에 Dropbox 내부를 살펴보다가 알아낸건데 약간의 트릭을 써주면 한 컴퓨터에서 Dropbox 2GB 무료계정을 여러개 만들어서 쓸 수 있다. 동시 사용은 불가능하고 한번에 하나만 사용 할 수 있도록 계정을 전환해주는 프로그램이 필요했다. 맥의 경우 Dropbox를 설치하면 두개의 폴더가 생긴다. ($HOME/.dropbox, $HOME/Dropbox) 하나는 파일목록에 대한 메타데이터 폴더이고 다른 하나는 실제 데이터 폴더다. 두 폴더를 백업해주고 복원시켜주는 프로그램을 Python으로 간단히 만들어 봤는데 아쉬운데로 쓸만하다. 3개의 계정을 만들어서 쓰고 있는데 하나는 중요한 개인/연구 데이터, 두번째는 ebook, 세번째는 fresh install용 소프트웨어다. 각각 2기가씩이니 동기화...
Sep 13th
4 tags
단어 클러스터링 시간에 따른 변화
이건 그냥 재미로 ^^; 이틀 전 이틀 후
Sep 10th
3 tags
GAE remote_api로 로컬에서 접근하기
로컬에서 GAE 앱의 memcache, datastore 등을 접근할 수 있다. 로컬에서 테스트나 제어용으로 편하게 사용가능하다. 아래 PATH는 Mac OS X에서의 예. app.yaml - url: /remote_api script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py login: admin PATH /Applications/GoogleAppEngineLauncher.app/Contents /Resources/GoogleAppEngine-default.bundle/ Contents/Resources/google_appengine SHELL $ ./remote_api_shell.py -s APPID.appspot.com APPID
Sep 9th
7 tags
WatchWatch
전에 BitTorrent소개 하면서 잠깐 언급했던 트위터의 소스코드 배포 시스템인 Murder에 대한 소개 동영상이다. 생각했던 것보다는 단순하게 활용하고 있다. Infrastructure 엔지니어가 필요에 의해서 저런 오픈소스를 만들어내는 환경이 참 부럽게 느껴진다. 우리나라도 대형 포털들에서 오픈소스라고 만들어 내놓기도 하지만 그 수준은 쉘에서 명령어 던지는 수준 아니던가. 어차피 이미 있는것 가지고 조금 다듬어서 사용하는건 마찮가지이지만 기술의 수준이나 생각하는 폭 자체가 다르니 그것이 문제다.  Capistrano같은 어드민 툴이 있으니 좀 편하겠네 다만 Ruby로 만들어졌다는 것이 좀 걸린다. 나는 Python으로 만들어진 Supervisor를 사용하고 있는데 이것도 GUI와 CLI를 모두...
Sep 8th
3 tags
클러스터링 대표 단어
씨앗(키워드)에 대한 크롤링 후 각 클러스터의 대표 단어만 나열해봤다. 클러스터링이 단순히 모아주는 거이 아니라 살아서 움직이는 무언가가 있는데 그건 여기서 공개하기 좀 그렇고.   white word를 버리자니 문맥이나 무드에 대해 파악하기 힘드니 하나라도 버리지 말고 주워다가 잘 이용해야 할듯하다. 대표 단어들만 모아서 문장을 자동생성해보는 것도 재미있을 듯 하지만 이건 beyond the work이기 때문에 패스. 재미로 해보는 건데 이번에는 너무 멀리 나가지 말아야겠다. 내가 NLP하는 것도 아니고. 저 단어들은 그저 데이터 일뿐이다. 이제 이 놈들을 어떻게 요리할 것인가 그것이 관건이다. 그나저나 이제 신정환을 라디오스타에서 못보겠구나.
Sep 8th
7 tags
단어 유사도 클러스터링
생각나무에 쓸 클러스터링을 만들었는데 역시 Google AppEngine에서 돌릴만한 성질의 것은 아니라 전용 서버에서 돌리도록 했다. 나름 쓸만하다. 작년에 Hadoop기반으로 만들었었는데 속도는 조금 빨라도 이번에 새로 만든게 더 좋아보인다. 병렬화와 함께 둘을 합해서 속도 좀 더 올려야 하는데. 최근 구글에서 Prediction API에 대한 공개를 했는데 나도 한글에 대한 유사도 측정 서비스를 오픈할까? 재미있겠군. 아래 결과는 최근 데이터를 가지고 돌려본 것인데 이름하야 Unsupervised Similar Word Clustering이라고나 할까. ;-)
Sep 4th
1 note
4 tags
Home Media Center
새로운 Apple TV가 나오면서 아주 깔끔하게 정리가 되었다. 문제는 MIDI를 위한 오디오 구성이 문제다. 맥북에서 TV로 가는 부분을 무선으로 만들고 싶은데 FM트랜시버를 이용하는 것이 가장 저렴할듯 한데. 아니면 그냥 선으로 연결해버릴까. 5미터 정도를 필요할듯. ps. 아 그런데 오늘 코스트코 가니 WD HD Live TV라는 Apple TV보다 더 좋아보이는 놈을 발견했다. 이미 이런류의 장치를 많이 나와 있는편인데 Apple TV에 관심이 더 가는 이유는 뭘까. WD것은 $109로 $119인 Apple TV보다 10불이나 더 싸다. WD것은 오디오 비디오(HDMI) 케이블도 패키지에 다 포함되어 있다. 이미  Apple TV는 주문을 한 상태인데 고민이다. WD것은 무선랜이 없다. 그런데...
Sep 2nd
August 2010
4 posts
6 tags
GAE를 위한 Naked Domain
GAE(Google AppEngine)에서 원칙적으로 Naked Domain에 대해서 지원하지 않는다. 대부분 Naked Domain으로 들어오면 DNS서버에서 subdomain으로 forward해주는 형식으로 해결할 수 밖에 없다. 독립서버로 운영하지 않는 이상 이런 방식 밖에 없다. DNS서버에서 Naked Domain에 대해서는 CNAME을 허용하지 않고 설사 허용한다고 하더라도 Google Sites에서 등록이 되질 않는다. 실험적으로 아래와 같이 한번 해봤다. 고정IP가 있는 널널한 EC2인스턴스가 하나 있는데 Nginx를 Proxy로 두고 GAE로 다시 보내는 형식이다. EC2가 싱가폴에 있기 때문에 Proxy를 거치지 않고 들어가는 것보다 훨씬 반응이 느리다. Nginx에서 memcached를...
Aug 26th
3 tags
GAE MapReduce 유감
돌릴 때마다 성능 편차가 심하고 Mapper오퍼레이션이 별거 아닌데도 DeadlineExceededError가 소나기 오듯 떨어진다. 그냥 자체적으로 구현한 MapReduce를 써야할듯 하다.
Aug 13th
5 tags
EC2 리눅스 인스턴스에 EBS 마운트 하기
리눅스에서 EBS를 마운트 할때 아래처럼 하면 된다. 처음에는 —region을 붙이지 않아 에러가 나더라. 아시아(싱가폴)은 ap-southeast-1로 하면 된다. 인스턴스ID는 직접 줘도 되고 아니면 아래 처럼 얻어와도 된다. 어차피 인스턴스ID가 있으면 어떤 지역에 있는지 알 수 있을텐데 명시적으로 지정을 해줘야 하니 약간 귀찮다. Root Device를 EBS로 한 AMI를 런칭하면 instance-store보다 부팅이 빠르긴한데 데이터나 런타임 관련된 파일들을 EBS에 넣고 마운트해서 사용하는게 더 깔끔해 보인다. EBS Root Device는 기본 15기가짜리가 생성되기 때문에 좀 낭비인듯도 하고. Attach하기 # INSTANCE_ID = `curl...
Aug 12th
WatchWatch
요즘 돌려보고 있는 알고리즘이 있다. 예상대로 잘 나와주면 좋겠다. 
Aug 7th
July 2010
5 posts
4 tags
GAE Status #GAE기초3
구글 앱 엔진의 서비스들이 항상 쾌적한 상태로 유지되지는 않는다. 문제가 발생하거나 관리를 위해 서비스가 일시 멈추는 경우도 빈번하기 때문에 이런 환경에 적응하도록 하는 코드를 만들어야 한다.  Python의 경우  CapabilityDisabledError, DeadlineExceededError, OverQuotaError 같은 예외사항에 대한 처리를 해줘야 한다.
Jul 27th
5 tags
GAE Mapper API (MapReduce) #GAE기초2
최근 Google AppEngine에서 Mapper API를 제공하고 있다. TaskQueue를 이용해 MapReduce를 구현한 라이브러리를 제공해준다. GAE 자체에서 Cron이나 여타 서비스 형태의 MapReduce가 아니라 제공된 라이브러리가  MapReduce를 구현한 것이다. Hadoop과 같이 웹 인터페이스를 제공해 Job을 시작하거나 멈추게 할 수 있고 모니터링도 제공하고 있다. 구현은 8개의 Shard를 구성해 TaskQueue를 이용 백그라운드 병렬처리를 하도록 하고 있다. Datastore에 대한 대량의 작업을 하거나 여타 통계 작업 등에 활용할 수 있다. 물론 CPU사용에 대한 과금을 하기 때문에 하려고 하는 작업에 대해 잘 분석해서 사용해야 한다. 테스트로 Datastore에 있는...
Jul 27th
3 tags
GAE의 성능과 과금 #GAE기초1
같은 크기의 데이터를 주기적으로 처리하는데 들어간 CPU시간이 고르지 않을 때가 종종 보인다. 한번씩 튀는거 보면 돈나가는 소리가 들린다. 프로파일러로 짜내고 짜내도 이런것은 어쩔 수 없다. 시스템 자체가 고정된 것이 아니라 다이내믹하기 때문이다. 그 흔들리는 오차가 그렇게 크지 않기 때문에 그나마 굴러가는 것. 간격이 짧은 주지적인 일이 안정적인 CPU사용량을 보이지만 텀이 긴 일에서는 CPU가 튀는것을 볼 수 있다. 이는 cache등 시스템을 초기화 하는 비용과 상관이 있을 듯 하다. GAE의 과금은 쓴 만큼 내는 방식이다. 아마존도 마찮가지다. 다만 EC2의 경우 유닛타임으로 과금이 되기 때문에 어쩌면 GAE보다 손해다. GAE에서 과금을 활성화 시키려면 하루예산을 정한다음 지불수단으로 선 결재를...
Jul 26th
Rsync로 MacBook 백업하고 Tweeting하기
백업 아무리 강조해도 지나치지 않다. 동기화 기술이 날로 발전하고 있는 마당에 잘 쓰고 있던 랩탑이 맛이 가버리면 필요한 소프트웨어나 귀중한 자료들을 여기저기서 주섬주섬 수동으로 복원을 해야하니 시간도 그렇고 아주 귀찮은 일이 아닐수 없다. 맥사용자는 여유가 있다면 타임머신을 사용해 내장이나 외장 스토리지에 백업을 할 수도 있는데 이것이 여의치 않다면 rsync를 이용해 외부 서버에 백업을 하는 것을 추천한다. 오늘은 이 방법을 알아보자. 덤으로 백업이 정해진 시간에 잘 완료 되었는지를 알기 위해 트윗팅도 해보자. 필요한 절차는 아래와 같다. 1. ssh-keygen -t rsa로 자신의 공개키 .ssh/ida_rsa.pub의 내용을 서버계정의 .ssh/authorized_keys에 추가한다. 이는...
Jul 9th
5 tags
TeX for Korean
요즘은 옛날보다 한글로 TeX을 하기에 좀 더 편해지기는 했구나. Mac에서 사용하기 위해 MacTex를 설치하고 아래와 같이 명령을 하면 9개의 패키지를 인스톨 한다. 업데이트는 install대신 update —all하면 된다. .tex파일의 엔코딩은 반드시 UTF-8로해야 한다. $ sudo tlmgr --location=http://ftp.ktug.or.kr/KTUG/texlive/2009 install collection-kotex 자신이 원하는 한글 폰트를 사용하기 위해서는 아래와 같이 my.conf 파일을 하나 만들어 TeX가 사용할 수 있는 형태의 폰트 데이터를 구축한다. my.conf FOUNDRY: my FONTmj: f=han m=han.TTF FONTgl:...
Jul 5th
June 2010
9 posts
3 tags
Shell Script for Unfollowing All Your Friends
You can easily unfollow all your friends. #!/bin/sh SCREEN_NAME='xxxx' PASSWORD='xxxx' curl -q -u ${SCREEN_NAME}:${PASSWORD} -X GET http://api.twitter.com/1/friends/ids.json?id=${SCREEN_NAME} | sed -e 's/\[//g;s/\]//g;s/,/ /g' > unfollow.txt for ID in `cat unfollow.txt` do         echo "Unfollowing ${ID}"         curl -u ${SCREEN_NAME}:${PASSWORD} -X DELETE...
Jun 25th
1 note
5 tags
Google Apps
메인으로 사용하는 도메인이 oiko.cc인데 enom에서 DNS 서비스를 받고 있다. gmail로 email forwarding도 해줘서 잘 쓰고 있었는데 최근 메일이 뜨문뜨문 오더니 이제는 하나도 오질 않는다. 몇가지 테스트를 해봐도 역시나 메일이 정상이 아니었다. 그래서 Google Apps에서 제공하는 메일 서비스로 이전했다. 작은 규모의 조직에서 사용할 수 있도록 다양한 구글 서비스들을 제공한다. 특히 메일이 gmail과 같은 인터페이스라 친숙해서 좋다. 또, Google AppEngine을 내 도메인으로 운영하기 위해서는 Google Apps는 필수사항이다. 별도의 추가 도메인도 alias로 지정해서 사용하면 되기 때문에 상당히 유연하게 여러 도메인을 같이 사용할 수 있다. GoDaddy에 있는...
Jun 24th
4 tags
Twitter's Murder
Twitter가 자체적으로 Murder라는 BitTorrent기반의 소프트웨어 Deployment 시스템을 만들어 운영하고 있다. 중앙에 Tracker를 하나 운영하면서 적개는 수백에서 수십만대에 달하는 서버에 서비스 관련 소프트웨어를 배포하는데 사용한다고 한다. 복잡도를 줄이기 위해서 아직 DHT는 사용하고 있지 않다고 한다. 중앙집중의 Tracker를 사용하니 다중화를 해서 SPOF(Single Point of Failure)를 막았을 것이다. BitTorrent를 사용하는 중요한 이유들 중에 하나가 여러곳에 퍼져있는 데이터센터 때문일 것이다. 각 데이터센터의 프론트에 다른 서버들 보다 더 빨리 Seeder가 되는 서버를 두고 내부로 전파되는 그런식이 될 수도 있겠다. 예전에도 내부 조직에 이런류의...
Jun 24th
4 tags
BitTorrent's Piece
실제 BitTorrent가 어떻게 구현되었는가를 보기위해 C++로 만든 libtorrent를 보고있다. BitTorrent는 .torrent파일에 infohash 리스트를 가지고 있다. 이 infohash는 단위 파일의 조각(piece)의 해쉬다. piece는 eMule과 달리 고정된 사이즈가 없고 2^n으로 정한다. 아래의 그림 처럼 여러개의 파일을 하나의 파일로 붙였다고 생각하고 2^n으로 잘라서 각 piece의 SHA1 해쉬를 구한다. 각 조각의 해쉬를 다 붙여서 루트해쉬를 만든다. .torrent가 제공하는 파일리스트가 다르면 완전히 다른 조각들의 infohash를 가지기 때문에 단위 파일이 같다고 infohash가 같을순 없다. 참고: libtorrent
Jun 24th
7 tags
eMule in a Nutshell
예전에 이미 살펴본 내용인데 다시 정리하는 차원에서 그려봤다. DHT에 기반한 다른 P2P 시스템에 대해서도 꾸준히 분석해 올릴 예정이다. 이런 시스템 위에서 재미있는 일들을 할 수 있을것 같다. 몇가지 아이디어가 있는데 이를 더 구체화 하기 위해 관련된 기술을 살펴보고 있다.
Jun 19th
6 tags
Model
모델은 가능한 단순한게 좋고 그 가정은 현실적인 것이 대부분 좋은 결과를 낳는다. Unsupervised Learning에서도 마찮가지다. Unsupervised Learning of Articulated Skeletons From Motion이라는 연구의 비디오를 보면 문제를 해결하기 위한 모델은 역시 그 대상에 대한 면밀한 관찰에서 나오게 마련이다. 그것이 단순하다고 폄하할 수 있을지는 몰라도 그것이 대상을 설명해주는 가장 단순화된 추상화라면 그것을 찾아내는 것은 의미있는 일이다. 최근 구글에서 발표한 SPEC Hashing이라는 논문의 공저자중 한명의 웹페이지서 발견한 것인데 저자가 Youtube에서 일하는 것으로 봐서 이런류의 영상분석을 통해 물체의 움직임에 대한 패턴을 검색에 점목하는 서비스가...
Jun 19th
7 tags
Trie (Data Structure)
Trie (“retrieval”, Prefix Tree, ‘트리’ 또는 ‘트라이’로 발음)는 string을 key로 하는 정렬된 트리다. 하나의 부모를 공유하는 자식들은 동일한 prefix를 갖는다. 사전을 구성할 때 단어의 중복 저장을 피할 수 있어 나름 압축효과가 크다. BST(Binary Search Tree, O(logN))보다도 성능이 좋아서 m사이즈의 스트링에서 O(m)의 성능을 보인다. 충돌(collision)이 발생할 수 있는 완벽하지 않은 해쉬테이블(imperfect hash table) 보다 성능이 좋다. Approximate Matching Algorithm으로 활용가능하다.
Jun 16th
6 tags
DHT #1
#1. Trackerless Torrents 지난해 11월 PirateBay가 Torrent의 Peer 정보를 중앙에서 제공하는 Tracker를 중지하고 DHT(Distributed Hash Table)와 PEX(Peer Exchange) 만으로 Peer 정보를 유통하는 구조로 바꾸기 시작했다. DHT가 이제는 특수한 용도가 아닌 보편적인 서비스의 일부로 사용되기 시작했다는 것을 시사한다. PirateBay의 경우 Tracker 유지비용도 줄이고 중앙에서 관리해야하는 위험부담도 줄여보려고 한듯 하다. BitTorrent이외에도 aMule의 Kad는 이미 사용되고 있다. 특수한 용도로는 Amazon의 Dynamo가 업계에 가장 대표적인 예가 되고 있다.  여기서 말하는 DHT는 Mainline DHT로...
Jun 15th
1 tag
다시 시작
서버 이전을 몇 번을 하는 건지 모르겠다. 이제 개인서버로 웹서비스를 하지 않고 블로그 서비스로 완전이주를 결정했다. 덩치가 큰 컨텐츠는 클라우드 서비스를 이용할 것이고 블로그는 대부분 tumblr를 사용할 것이다.
Jun 15th