<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>Big Data Scientist</description><title>Daily Tech Sketch</title><generator>Tumblr (3.0; @oikonote10)</generator><link>http://note.oiko.cc/</link><item><title>Fixing Erlang checksum problem</title><description>&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;It can be resolved with updating the checksum of the following into the Portfile:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;bash-3.2# openssl rmd160 &lt; ./otp_doc_html_R14B04.tar.gz &lt;br/&gt;(stdin)= &lt;strong&gt;0e44a933ae35fe95d1ecd9958c9e86ce398e259f&lt;/strong&gt;&lt;br/&gt;bash-3.2# openssl sha1 &lt; ./otp_doc_html_R14B04.tar.gz &lt;br/&gt;(stdin)= &lt;strong&gt;86f76adee9bf953e5578d7998fda9e7dfc0d43f5&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And, then&lt;/p&gt;
&lt;p&gt;$ sudo port install elrang&lt;/p&gt;
&lt;p&gt;Plus: When a compilation fails, please add the following snippet into the ‘darwin 11’ section of the Profile.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;if {${configure.compiler} == “clang”}&lt;br/&gt;{    &lt;br/&gt;   configure.compiler llvm-gcc-4.2 &lt;br/&gt;} &lt;br/&gt;configure.cflags-delete “-std=c99”&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://note.oiko.cc/post/12042566174</link><guid>http://note.oiko.cc/post/12042566174</guid><pubDate>Fri, 28 Oct 2011 14:17:00 -0600</pubDate><category>tip</category></item><item><title>Speeding up Xcode using Ramdisk</title><description>&lt;p&gt;This is my 1 cent tip for speeding up building projects using Ramdisk.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Steps&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;1. Add more RAM modules to your MacBook (up to 8GB)&lt;br/&gt;2. Make a temporary ramdisk(1GB in size) using the following command:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;diskutil erasevolume HFS+ “ramdisk” `hdiutil attach -nomount ram://2097152`&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;3. Now, the ramdisk is setup in /Volumes/ramdisk. Check it with ‘mount’ command.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;/dev/disk1 on /Volumes/ramdisk (hfs, local, nodev, nosuid, noowners, mounted by USER)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;4. Change the build path in Xcode: File -&gt; Project Settings. Set ‘/Volumes/ramdisk’.&lt;/p&gt;
&lt;p&gt;5. All done.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Benchmark Test:&lt;/strong&gt; You can compare the speed of both ramdisk and HDD with a write test.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;dd if=/dev/zero of=/tmp/xxx bs=8k count=100000&lt;/strong&gt; (this took 1.8secs in Macbook 2.26GHz)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;dd if=/dev/zero of=/Volumes/ramdisk/xxx bs=8k count=100000&lt;/strong&gt; (this took 18secs in Macbook 2.26GHz)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Notice&lt;/strong&gt;: Unmount the ramdisk.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;hdiutil detach /dev/disk1&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://note.oiko.cc/post/11714157499</link><guid>http://note.oiko.cc/post/11714157499</guid><pubDate>Thu, 20 Oct 2011 18:40:00 -0600</pubDate><category>tip</category></item><item><title>Learning from Bacteria about Social Networks (Google Tech...</title><description>&lt;iframe width="400" height="225" src="http://www.youtube.com/embed/yJpi8SnFXHs?wmode=transparent&amp;autohide=1&amp;egm=0&amp;hd=1&amp;iv_load_policy=3&amp;modestbranding=1&amp;rel=0&amp;showinfo=0&amp;showsearch=0" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Learning from Bacteria about Social Networks (Google Tech Talk) &lt;/p&gt;
&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Eshel_Ben-Jacob" target="_blank"&gt;Dr. Eshel Ben-Jacob&lt;/a&gt;&lt;/p&gt;</description><link>http://note.oiko.cc/post/11578554810</link><guid>http://note.oiko.cc/post/11578554810</guid><pubDate>Mon, 17 Oct 2011 13:10:00 -0600</pubDate><category>video</category></item><item><title>Photo</title><description>&lt;img src="http://27.media.tumblr.com/tumblr_lspoyspmpn1qcs0lno1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;</description><link>http://note.oiko.cc/post/11149543347</link><guid>http://note.oiko.cc/post/11149543347</guid><pubDate>Fri, 07 Oct 2011 14:01:40 -0600</pubDate></item><item><title>SSH Identity for EC2</title><description>&lt;p&gt;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, &lt;strong&gt;&lt;a href="http://www.theether.org/pssh/" target="_blank"&gt;pssh&lt;/a&gt; &lt;/strong&gt;(parallel ssh), in which it does not support explicit way of specifying the identity file. I use &lt;strong&gt;pssh&lt;/strong&gt; to make changes on multiple EC2 instances with one script from my Macbook.&lt;/p&gt;
&lt;p&gt;Recently, I upgraded my Macbook to Lion (GM Seed version). I found the OpenSSH’s identity doesn’t work any more. After some debugging on that, I figured out that it needs to specify the identity file with ‘config’ file. Before that, I just placed a EC2 keypair  file in “$HOME/.ssh”.&lt;/p&gt;
&lt;p&gt;A ‘config’ file of SSH maps a hostname and its identity file as follows:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;$HOME/.ssh/config:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Host host1.amazon.com&lt;br/&gt;IdentityFile ~/.ssh/identity&lt;/p&gt;
&lt;p&gt;Host host2.amazon.com&lt;br/&gt;IdentityFile ~/.ssh/identity&lt;/p&gt;
&lt;p&gt;Host 1.2.3.4&lt;br/&gt;IdentityFile ~/.ssh/identity&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It needs to add the FQDN and the IP address hostname of a host seperately.&lt;br/&gt;Now, we can see that SSH refers the config file.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span&gt;debug1: Reading configuration data &lt;strong&gt;/Users/ghost/.ssh/config&lt;/strong&gt;&lt;br/&gt;debug1: Applying options for xxxx.com&lt;br/&gt;debug1: Reading configuration data /etc/ssh_config&lt;br/&gt;debug1: Trying private key: &lt;strong&gt;/Users/&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;ghost&lt;/strong&gt;&lt;span&gt;&lt;strong&gt;/.ssh/identity&lt;/strong&gt;&lt;br/&gt;debug1: read PEM private key done: type RSA&lt;br/&gt;debug1: Authentication succeeded (publickey).&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;</description><link>http://note.oiko.cc/post/7584705797</link><guid>http://note.oiko.cc/post/7584705797</guid><pubDate>Wed, 13 Jul 2011 14:32:00 -0600</pubDate></item><item><title>On Beauty of Size</title><description>&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm3.static.flickr.com/2569/5721034159_90cea70698.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3318/5721034115_fc2a428998.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3416/5721033993_603db031d5.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm3.static.flickr.com/2386/5721034079_1ed9c2fd37.jpg"/&gt;&lt;/p&gt;</description><link>http://note.oiko.cc/post/5504383933</link><guid>http://note.oiko.cc/post/5504383933</guid><pubDate>Sun, 15 May 2011 01:53:00 -0600</pubDate></item><item><title>At last, my MIDI keyboard met the iPad2. Lovely Lovely.</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_lkno7zrDOe1qcs0lno1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;At last, my MIDI keyboard met the iPad2. Lovely Lovely.&lt;/p&gt;</description><link>http://note.oiko.cc/post/5183276185</link><guid>http://note.oiko.cc/post/5183276185</guid><pubDate>Tue, 03 May 2011 23:21:00 -0600</pubDate></item><item><title>Emailing NETGAR logs to Gmail</title><description>&lt;p&gt;집에 설치되어 있는 넷기어 유무선 라우터가 최근 iPhone과 iPad의 접속이 매끄럽지 못하고 접속을 튕겨내는 등의 작동이 이상해서 라우터의 로그를 메일로 받아볼 필요가 생겼다. 넷기어 라우터 셋팅에 SMTP서버와 사용자 ID를 설정하면 주기적으로 메일을 받아 볼 수 있는 기능이 있는데 SSL/TLS는 지원하지 않기 때문에 직접 GMail로 메일을 받아 보기 위해서 몇가지 작업이 필요했다. 로컬네트워크에 보안기능이 없는 SMTP서버를 설치하고 다시 GMail로 퍼워드 시키는 방법도 있기는 하지만 가장 간편한 방법으로 stunnel을 택했다. stunnel은 보안기능이 구현되어 있지 않은 네트워크 종단에 암호화 통신을 제공하는 일종의 Proxy다.&lt;/p&gt;
&lt;p&gt;[1] 넷기어라우터 —-(plain)—&gt; GMail (SSL/TLS)&lt;br/&gt;[2] 넷기어라우터 —-(plain)—&gt; &lt;strong&gt;로컬메일서버(SMTP)/퍼워드&lt;/strong&gt; —-(SSL/TLS)—-&gt; GMail&lt;br/&gt;[3] 넷기어라우터 —-(plain)—&gt; &lt;strong&gt;stunnel&lt;/strong&gt; —-(SSL/TLS)—-&gt; GMail&lt;/p&gt;
&lt;p&gt;&lt;br/&gt;&lt;strong&gt;#1. stunnel.pem 생성&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;br/&gt;개인키와 자체인증서를 만든다. &lt;br/&gt;&lt;em&gt;openssl genrsa -out ./private.pem&lt;br/&gt;&lt;/em&gt;&lt;em&gt;openssl req -new -x509 -key &lt;span&gt;&lt;em&gt;private&lt;/em&gt;&lt;/span&gt;.pem -out ./cacert.pem -days 1095&lt;br/&gt;&lt;/em&gt;private.pem과 cacert.pem의 바디를 &lt;strong&gt;stunnel.pem&lt;/strong&gt;으로 합친다.&lt;/p&gt;
&lt;p&gt;&lt;br/&gt;&lt;strong&gt;#2. stunnel 셋업&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;중략&lt;br/&gt;&lt;em&gt;cert = /Users/xxxx/&lt;strong&gt;stunnel.pem&lt;br/&gt;&lt;/strong&gt;&lt;/em&gt;중략&lt;br/&gt;[smtps]&lt;br/&gt;&lt;em&gt;accept = 25 &lt;br/&gt;connect = smtp.gmail.com:465&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;#3. stunnel 실행&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;sudo stunnel ./stunnel.conf &lt;/em&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;</description><link>http://note.oiko.cc/post/5165216104</link><guid>http://note.oiko.cc/post/5165216104</guid><pubDate>Tue, 03 May 2011 12:19:00 -0600</pubDate></item><item><title>My Kinect View</title><description>&lt;p&gt;&lt;img src="http://farm6.static.flickr.com/5299/5507378640_4c05213653.jpg"/&gt;&lt;/p&gt;</description><link>http://note.oiko.cc/post/3707528863</link><guid>http://note.oiko.cc/post/3707528863</guid><pubDate>Mon, 07 Mar 2011 13:58:41 -0700</pubDate></item><item><title>HandlerSocket for MySQL</title><description>&lt;p&gt;MySQL을 NoSQL로 변신 시켜주는 참한 물건이 나왔다. 나온지 몇 개월 됐다. 현재 추진하고 있는 솔루션에 memcached나 redis를 메모리 캐쉬 서버로 앞에 두고 영성속을 위해 데이터베이스로 MySQL를 쓰려던 참이었는데 시기적절하게 좋은 물건을 만난것 같다. DeNA라는 일본의 소셜 게임회사에서 서비스용으로 현업에 사용하고 있기 때문에 일단은 검증은 되었다고 봐도 무난하다. MongoDB나 CouchDB도 쓰이고 있는 판인데 MySQL은 더 신뢰가 간다. MySQL를 KeyValue 스토리지로 사용하는 트릭도 있었기는 하지만 이번엔 제대로 나온듯 하다. 버클리DB나 Sqlite3를 DB엔진으로 두는 KeyValue스토리지도 있기는 하지만 동시성 제어 등에서 약간은 불안한 감이 없지는 않았다.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.harpers.org/media/image/art/cartoons/mrfish/ThoroughlyTestedShortcut_504x437.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;HandlerSocket의 이야기는 이렇다. MySQL에 대해 리눅스에서 OS레벨의 프로파일링(oProfile)을 해봤더니 대부분의 오버헤드는 SQL을 파싱하고 처리하는데서 발생하고 InnoDB를 접근하는 시간은 그리 길지 않다는 것이 개발의 동기란다. 그래서 직접 InnoDB에 접근할 수 있는 통로를 HandlerSocket라는 플러그인을 만들어 뚫었다. 모든 시스템이 그렇듯 가벼우면 가벼울 수록 성능은 좋기 마련이다. HandlerSocket은 MySQL같이 SQL을 처리하는 레이어와 실제 데이터베이스 인덱싱 엔진(e.g. InnoDB)이 분리되어 있기 때문에 가능한 일인지도 모른다. HandlerSocket은 MySQL의 플러그인으로 만들어졌기 때문에 하나의 테이블에 대해 SQL과 NoSQL로 동시에 접근 할 수 있어 아주 매력적이다. 복잡한 쿼리는 SQL로 소화하고 PRIMARY로 빨리 접근하는 get/put의 경우 HandlerSocket으로 통하면 된다.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.newone.com/jkohl/cartoons/Shortcut_350.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;벤치마킹 결과 초당 75만 qps를 소화해 낸다. 같은 하드웨어에서 memcached는 22만 qps의 성능이 나왔다. (벤치마킹한 하드웨어 스펙은 아래 링크를 참고.) HandlerSocket으로 접근할 경우 PRIMARY가 되는 필드가 키가 된다. 기본적으로 9998포트(읽기전용), 9999포트(쓰기전용)를 사용하고 내부적으로 16개의 쓰레드를 사용한다. Disk I/O 바운드의 데이터베이스 보다 메모리에 데이터를 다 올릴 수 있는 데이터베이스에 더 유용하다.&lt;/p&gt;
&lt;p&gt;HandlerSocket은 기본적으로 C++과 Perl 클라이언트 라이브러리를 제공한다. 파이썬 바인딩으로 pyhs(&lt;a href="http://packages.python.org/python-handler-socket" target="_blank"&gt;python-handler-socket&lt;/a&gt;)가 있다.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.percona.com/downloads/Percona-Server-5.1/Percona-Server-5.1.54-12.5/Linux/" target="_blank"&gt;Percona-Server 5.1.34 r12.5&lt;/a&gt; 바이너리 배포판에 함께 컴파일되어 내장되어 있기 때문에 쉽게 테스트 해 볼 수 있다. 100만건 테스트를 실시할 예정인데 memcached, redis와 비교해 성능이 어떤지 궁금해 진다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;참고자료&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as-nosql-story-for.html" target="_blank"&gt;http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as-nosql-story-for.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://packages.python.org/python-handler-socket" target="_blank"&gt;http://packages.python.org/python-handler-socket&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><link>http://note.oiko.cc/post/2937725236</link><guid>http://note.oiko.cc/post/2937725236</guid><pubDate>Tue, 25 Jan 2011 23:17:00 -0700</pubDate><category>HandlerSocket</category><category>MySQL</category><category>NoSQL</category></item><item><title>Kinect Hack</title><description>&lt;p&gt;Kinect를 연구용으로 사용할 일이 있어 맥북에서 환경을 세팅 해봤다. &lt;/p&gt;
&lt;p&gt;원래는 PrimeSense제품으로 테스트 해보고 싶었지만 손쉽게 구할 수 있는 Kinect로 해보기로 했다. 어차피 Kinect도 PrimeSense기술이기는 하지만 fps가 60에서 30으로 낮춰서 나온 제품이다.&lt;/p&gt;
&lt;p&gt;아직 테스트는 해보지 못했는데 재미삼아서 하는거라 결과가 나오면 공개할 예정이다. 간단에 맥북 port 업뎃하는데 오래걸리는구나. ;-)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;설치하기&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;설치법: &lt;a href="http://openkinect.org/wiki/Getting_Started" target="_blank"&gt;http://openkinect.org/wiki/Getting_Started&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mac OS X: git-core, libtool, &lt;strong&gt;libusb-devel&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;소스 받기: git clone &lt;a href="https://github.com/OpenKinect/libfreenect.git" target="_blank"&gt;https://github.com/OpenKinect/libfreenect.git&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;자료&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.ladyada.net/learn/diykinect/" target="_blank"&gt;DIY Kinect Hacking&lt;/a&gt; : USB Analyzer로 USB패킷을 분석하는 내용을 소개한다. 보통 USB디바이스에 대한 리버스엔지니어링으로 많이 사용하는 방법이다.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://sourceforge.net/apps/mediawiki/pyusb/index.php?title=Main_Page" target="_blank"&gt;PyUSB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.libusb.org/" target="_blank"&gt;libUSB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://neuro.debian.net/pkgs/python-freenect.html" target="_blank"&gt;python-freenect&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mirror2image.wordpress.com/2010/11/30/how-kinect-works-stereo-triangulation/" target="_blank"&gt;How Kinect depth sensor works&lt;/a&gt; : IR로 특별한 고정 마크를 이용한다는 설이 유력.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src="http://media.bestofmicro.com/kinect-ifixit-teardown,T-X-268053-13.jpg"/&gt;&lt;/p&gt;</description><link>http://note.oiko.cc/post/2829056517</link><guid>http://note.oiko.cc/post/2829056517</guid><pubDate>Wed, 19 Jan 2011 11:50:00 -0700</pubDate><category>kinect</category><category>primesense</category><category>HCI</category></item><item><title>R 패키지 찾기</title><description>구글 검색엔지 이외에 R용 패키지를 검색해 볼만한 사이트
&lt;ul&gt;&lt;li&gt;&lt;a href="http://cran.r-project.org/web/views/" target="_blank"&gt;&lt;a href="http://cran.r-project.org/web/views/" target="_blank"&gt;http://cran.r-project.org/web/views/&lt;/a&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://crantastic.org/" target="_blank"&gt;&lt;a href="http://crantastic.org/" target="_blank"&gt;http://crantastic.org/&lt;/a&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.rseek.org/" target="_blank"&gt;&lt;a href="http://www.rseek.org/" target="_blank"&gt;http://www.rseek.org/&lt;/a&gt;&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Tip: &lt;a href="http://cran.r-project.org/web/packages/sos/index.html" target="_blank"&gt;sos&lt;/a&gt;라는 패키지로 R 관련 검색을 할 수 있다.&lt;/p&gt;</description><link>http://note.oiko.cc/post/1375091536</link><guid>http://note.oiko.cc/post/1375091536</guid><pubDate>Fri, 22 Oct 2010 13:41:19 -0600</pubDate><category>gnu-r</category><category>tool</category></item><item><title>지루한 글쓰기 요령</title><description>&lt;p&gt;논문쓰기에서 지켜야할 일들을 반대로 꼬집어 말하고 있다. 저자도 말미에 언급하는 중요한 부분은 글을 쓸 때 시적 표현이나 유머나 부드럽게 읽히게 하는 흐름이 더 중요하고 이런 것들을 책에 도입한 예들을 들면서 이렇게 바뀌어 가는 것도 좋지 않냐는 말을 한다. &lt;/p&gt;
&lt;p&gt;극소수의 사람들을 위한 글을 쓸것인가 아니면 많은 사람들이 읽고 이해의 폭을 넓히는 글을 쓸것인가 하는 딜레머에 빠지게 되는데 결국 오래 남은 글은 후자가 아닐까 한다. 과학문헌의 경우에도 조금은 그런 여유를 집어 넣는것도 좋을듯 하다. 틀에 박힌 형식에서 벗어나기 힘든 과학문헌에 투고하는 것보다 조금은 모험적인 책을 써보는것도 흥미진진한 작업일듯 싶다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How to write consistently boring scientific literature&lt;/strong&gt;&lt;br/&gt;(Kaj Sand-Jensen)&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Avoid focus&lt;/li&gt;
&lt;li&gt;Avoid originality and personality&lt;/li&gt;
&lt;li&gt;Write l-o-n-g contributions&lt;/li&gt;
&lt;li&gt;Remove implications and speculations&lt;/li&gt;
&lt;li&gt;Leave out illustrations&lt;/li&gt;
&lt;li&gt;Omit necessary steps of reasoning&lt;/li&gt;
&lt;li&gt;Use many abbreviations and terms&lt;/li&gt;
&lt;li&gt;Suppress humor and flowery language&lt;/li&gt;
&lt;li&gt;Degrade biology to statistics&lt;/li&gt;
&lt;li&gt;Quote numerous papers for trivial statements&lt;/li&gt;
&lt;/ol&gt;</description><link>http://note.oiko.cc/post/1352604259</link><guid>http://note.oiko.cc/post/1352604259</guid><pubDate>Tue, 19 Oct 2010 12:46:00 -0600</pubDate><category>writing</category></item><item><title>모든 데이터에 관심을 가져라</title><description>&lt;p&gt;지천에 널려있는 데이터만 잘 활용해도 재미있는 것들을 많이 발견할 수 있고 그것을 비지니스로 연결 시킬 수 있을텐데 왜 그런 노력들을 못하는 것일까? 이건 역시 마인드의 문제이고 IT수준의 문제인지도 모를 일이다. 직관에만 의존하거나 시대의 흐름에만 급급하니 신선하고 혁신적인 것들을 만들어 내지 못하는듯도 싶다. Data Science에 대해서 회사들이 좀 더 관심을 갖고 투자를 하면 좋겠는데 말이지.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“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, because we’re kind of an unknown site, just having people discovering OkCupid is really powerful.” &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;출처: &lt;a href="http://www.inc.com/magazine/20101001/mining-company-data-for-pr-gold.html" target="_blank"&gt;Inc: Mining company data for PR gold.&lt;/a&gt;&lt;/p&gt;</description><link>http://note.oiko.cc/post/1334095242</link><guid>http://note.oiko.cc/post/1334095242</guid><pubDate>Sun, 17 Oct 2010 01:01:00 -0600</pubDate><category>기사</category><category>인용</category><category>데이터분석</category></item><item><title>글쓰기 작업</title><description>&lt;blockquote&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://note.oiko.cc/post/1323439306</link><guid>http://note.oiko.cc/post/1323439306</guid><pubDate>Fri, 15 Oct 2010 17:49:00 -0600</pubDate><category>글쓰기</category></item><item><title>The Art of R #1</title><description>&lt;p&gt;요즘 다시 R을 많이 써야하는 상황이라 바닥부터 다시 훑고 있다. R을 사용한 예제들을 종종 올릴 예정이다. 이름하여 R의 예술이라고나 할까. 오늘은 참고서적과 간단하게 R로 재미삼아 로고를 만들어 봤다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;참고서적&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/R-Nutshell-Desktop-Quick-Reference/dp/059680170X" target="_blank"&gt;The R in a nutshell&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/R-Book-Michael-J-Crawley/dp/0470510242" target="_blank"&gt;The R Book&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Handbook-Statistical-Analyses-Using-Second/dp/1420079336" target="_blank"&gt;A Handbook of Statistical Analyses Using R&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Introductory-Statistics-R-Computing/dp/0387790535" target="_blank"&gt;Introductory Statistics with R&lt;/a&gt; (Statistics and Computing)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Introduction-Scientific-Programming-Simulation-Using/dp/1420068725" target="_blank"&gt;Introduction to Scientific Programming and Simulation Using R&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://devcheatsheet.com/tag/r/" target="_blank"&gt;R cheat sheets&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;#1. 예술적 로고 만들기&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Normal Distribution Random 함수(rnorm, runif 등)을 사용하여 그럴듯해 보이는 작품을 한번 만들어 봤다. 이런 식으로 로고를 만들어 사용해도 좋을듯 하다.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm5.static.flickr.com/4124/5081839424_e533a6d3d8.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm5.static.flickr.com/4085/5081245897_7e98b31647.jpg"/&gt;&lt;/p&gt;</description><link>http://note.oiko.cc/post/1314201400</link><guid>http://note.oiko.cc/post/1314201400</guid><pubDate>Thu, 14 Oct 2010 12:09:00 -0600</pubDate><category>gnu-r</category><category>tool</category><category>art</category></item><item><title>최근 대형SNS의 Downtime 사례</title><description>&lt;p&gt;최근 발생한 몇몇 대형 서비스들의 Downtime에 대해 기술적으로 살펴봤다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;#1. Facebook: 9월 23일 / 2시간 30분 downtime&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;5억명이 넘는 사용자를 가지고 있는 페이스북의 경우 성능을 위해 약800대의 메모리캐슁서버(memcached)에 28테라바이트의 소셜 그래프 데이터를 담아 사용자들에게 서비스 한다. 이는 5억명이라는 사용자를 상대하기 위한 페이스북의 가장 중요한 부분이다. (UDP로 통신하는 가장 고성능의 memcached를 자체적으로 만들어 사용하는 것으로 이미 알려져있다.) 메모리캐슁서비스는 원본 데이터를 빠르게 접근하기 위해 메인 메모리에 데이터를 두는 저장소다. 문제는 원본 데이터가 변경이 되면 캐슁도 따라서 갱신을 해줘야하는데 이번 사건은 모든 메모리캐슁서비스가 원본데이터를 다시 확인하고 갱신하는 이른바 cache invalidation과정이 연쇄적으로 일어나면서 마스터DB에 대한 일종의 DDoS공격과 같은 것이 되어버렸다. (마스터DB가 과부하가 걸리면서 접근이 실패한 클라이언트의 재시도에 의해 더 많은 요청이 발생하게 되는 악순환 구조가 생겨난다.) 이는 페이스북 엔지니어의 실수로 cache invalidation 명령을 사용자들이 접근하는 데이터 서버쪽에 오더한 것이 발단이 되었다.&lt;/p&gt;
&lt;p&gt;문제가 중앙서버에 영향을 끼쳐 결국 서비스를 더 이상 못하는 상태가 되어 Like버튼이 달려있는 35만개의 외부사이트가 이를 지켜봤단다. 결국 모든 서비스는 중단되고 다시 하나씩 가동시켜 정상으로 복구가 되었다.&lt;/p&gt;
&lt;p&gt;이번 문제는 사람의 실수가 원인이긴 하지만 느슨하게 연결되어 있는 분산시스템의 복잡도가 높아져 가면서 하나의 작은 실수가 전체 시스템을 흔들어 버릴 정도의 위험을 초래할 수 있다는 교훈을 남겼다. 예전에 MSSQL의 request flooding에 의해 통신장비를 마비시켜서 나라 전체의 네트워크를 마비시켰던 일도 떠올리게 한다. 수백에서 수천대의 서버가 하나의 상태로 동기화 하는데 걸리는 절대적인 지연시간(propagation delay)이 있기 때문에 혹 잘못된 정보 때문에 한쪽 부분이 무너지게 되면 이로 인해 생겨나는 영향력을 더 이상 제어할 수 없게 되는 순간들이 발생한다.&lt;/p&gt;
&lt;p&gt;&lt;img height="400" width="337" src="http://waldo.villagesoup.com/media/vnm/3/C0/245982/face.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;#2. Foursquare: 10월 4일 / 11시간 downtime&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;약 3백만명의 사용자를 가지고 있는 4sq의 경우 사용자가 check-in하는 모든 데이터는 사용자id를 key로 해 내부 db서버중 하나에 분배되어 저장된다. 이를 sharding이라고 하는데 모든 데이터는 여러 서버에 골고루 분배 된다. 이는 consistent hashing을 이용하기 때문이다.&lt;/p&gt;
&lt;p&gt;&lt;img height="333" width="572" src="http://www.mongodb.org/download/attachments/2097393/sharding.PNG?version=2&amp;modificationDate=1267724627656"/&gt;&lt;/p&gt;
&lt;p&gt;이번에 발생한 문제는 DB서버중 하나에 이상하게 많은 양의 check-in이 쏠리면서 시작되었다. 그 시각이 오전 11시. 12시 반까지 이런 저런 시도를 했으나 실패하였고 이 이후에 새로운 서버로 교체하는 작업을 했다고 한다. 새로 교체한 서버에 이전 데이터를 실서비스와 동시에 옮기는 작업을 했지만 상황은 호전되지 않았고 더욱이 새로 교체한 서버가 전체 서비스를 중단시키게 만들었고 그후 5시간 동안 다른 방법으로 데이터를 옮기는 작업을 하고 서비스를 리스타팅 했지만 처음과 같은 증상을 보였다. 오후 6시 30분. 결국엔 모든 데이터를 다시 Shards로 reindexing하는 작업을 5시간 동안 실시해 결국 밤 11시 30분에 서비스는 다시 정상으로 돌아오게 했단다. 유실된 데이터는 없다고 말하는데 암튼 일단 발등에 불은 껐다고 한다.&lt;/p&gt;
&lt;p&gt;4sq에서는 MongoDB(v1.6)의 auto-sharding기능을 사용했다고 하는데 커뮤니티에서 이야기하는 걸 보니 원래부터 문제가 있었던 모양이다. 사건 이후 Shards에 서버를 더 추가했고 MongoDB 개발자들과 긴밀하게 작업을 하고 있다고 한다. 또한 이번과 같이 전체 시스템을 다운시키지 않고도 문제를 해결할 수 있도록 부분적 서비스 차단이 가능하도록 적용할 예정이란다. AWS, GAE, Twitter 등의 Status페이지 같은것도 새로 만들어 제공하기 시작했다.&lt;/p&gt;
&lt;p&gt;대강 이렇게 두가지 사례를 요약 정리해 봤다.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.toothpastefordinner.com/120407/restart-your-career.gif"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;# 에필로그&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;나도 한국인 트위터 계정을 수집하고 관리하면서(&lt;a href="http://tki.oiko.cc" target="_blank"&gt;http://tki.oiko.cc&lt;/a&gt;) 다수의 서버를 엮어서 사용하고 있는데 지금까지 166만개의 한국인 계정을 수집하다 보니 그 보다 훨씬 많은 수의 데이터를 저장하고 관리해야 하는 어려움에 봉착하게 되더라. 혼자서 모든 일들을 해야하기 때문에 최대한 서버수를 줄여야 했다. 줄인 서버 수 만큼의 복잡도도 줄어들 수 있기 때문에 새로운 데이터 구조나 서비스 구조가 도입되지 않을 수 없더라. 실제 사용자가 접근하는 부분은 구글 앱엔진의 클라우드 쪽으로 넘겨버리긴 했지만 구글 앱엔진 역시 가용성에서는 100%가 아니기 때문에 여전히 불안한 감은 남아있다. 또, 일단 올린 데이터에 대한 관리부분도 시간이 지나가면서 부담이 커지고 있는것도 사실이다. 지금은 100% 자동화되어 수집과 분석 등이 이루어지고 있고 때가 되면 트위터 계정에 리포팅도 해준다. 리포팅 해주는 자체도 하나의 시스템 운영 모니터링으로 사용하고 있다.&lt;/p&gt;
&lt;p&gt;Big Data시대에 ‘소프트웨어 버그’나 ‘사람의 실수’가 적이 아니라 데이터의 양에 비례한 ‘downtime’이 진정 적이 아닐까 한다. 서비스가 운영하는 데이터의 양이 방대하기 때문에 downtime을 최소화 하려고 해도 데이터의 양에 비례하여 늘어나게 된다. 위에 사례로 든 두가지 경우 모두 서비스 재시동후 데이터를 다시 올리는데 소요되는 시간의 절대치는 데이터 양에 비례할 것이다. downtime을 최소한으로 하는 가장 좋은 방법은 무엇일까? 정답은 없겠지만 downtime을 인정하고 대비해야하는 마음가짐이 아닐까 한다. 이는 전체 시스템의 설계는 물론 통신프로토콜, 서비스 사이의 동기화,  기타 수 많은 종류의 오류나 예외사항에 대한 대비책을 미리 세워두고 준비해 둬야 하는 실행력에 달려있다. 덧붙여 분산 시스템에 대한 이해를 더 공고히 하고 이론적인 배경에서 더 신경을 써야할 것이다. 이론적인 부분에 대해서는 다음에 여유가 되면 정리해볼까 한다.&lt;/p&gt;</description><link>http://note.oiko.cc/post/1254744912</link><guid>http://note.oiko.cc/post/1254744912</guid><pubDate>Wed, 06 Oct 2010 02:40:00 -0600</pubDate><category>downtime</category><category>case</category></item><item><title>YesterTabs --&gt; TabZip</title><description>&lt;p&gt;&lt;img src="http://yes.uzip.in/static/image/logo4.png"/&gt; &lt;/p&gt;
&lt;p&gt;이름 변경!&lt;/p&gt;
&lt;p&gt;&lt;img src="http://tab.uzip.in/static/image/tabzip1.png"/&gt;&lt;/p&gt;
&lt;p&gt;크롬에서 탭 전체를 북마킹할 수 있다. 종종 열어 놓은 탭이 많은 경우 날짜로 북마킹을 해서 다시 보곤 하는데 웹에 올려 놓고 싶어 하나 만들어 봤다. 사실 크롬 확장 프로그램 어떻게 만드나 한번  배워보려고 겸사 겸사. 그리고 놀고 있던 도메인도 살릴겸.&lt;/p&gt;
&lt;p&gt;&lt;strike&gt;“Yester-“는 지나간 시간에 대한 표현의 접두어다. 스티비 원더의 Yester-Me, Yester-You, Yesterday라는 노래를 떠올리면 쉽겠다. 지나간 탭들을 잊지 않기 위한 서비스라고나 할까?&lt;/strike&gt;&lt;/p&gt;
&lt;p&gt;일단 크롬 확장프로그램(crx)은 서비스 사이트에서 다운받아 설치하면 된다. 아래 그림 처럼 책 모양의 아이콘이 생기는데 그놈을 누르면 현재 열려있는 모든 크롬 탭은 다 저장 할 리스트에 나온다. 저장을 원하지 않는 탭은 x버튼으로 지우면 된다. 마지막으로 저장하기 전에 리스트에 대한 키워드나 제목을 입력해주고 save 버튼을 누르면 탭들에 대한 정보가 yes.uzip.in에 전송되고 끝난다.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://tab.uzip.in" target="_blank"&gt;http://tab.uzip.in&lt;/a&gt;에 가서 자신이 저장한 탭들이 있는지 확인하고 공유를 위해 오른쪽에 화살표 링크를 누르면 주소를 알 수 있다. 이 주소를 다른 사람과 공유하면 된다. Facebook의 Like 버튼도 추가했다.&lt;/p&gt;
&lt;p&gt;아직은 계정으로 관리하는 기능이 없는데 조금간 시간이 나면 만들 생각이다. 트위터 계정으로 연동할지 아니면 독립적으로 할지는 정하지 않았다.&lt;/p&gt;
&lt;p&gt;하루짜리 프로젝트 치고는 쓸만한듯!? ㅋㅋ&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm5.static.flickr.com/4092/5018524967_be50231eb9.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm5.static.flickr.com/4147/5019130958_035a976f86.jpg"/&gt;&lt;/p&gt;</description><link>http://note.oiko.cc/post/1175587366</link><guid>http://note.oiko.cc/post/1175587366</guid><pubDate>Thu, 23 Sep 2010 17:45:00 -0600</pubDate><category>서비스</category><category>북마크</category></item><item><title>글쓰기 도구 iPad</title><description>&lt;p&gt;글쓰기 도구로서의 아이패드에 대해 간단히 정리해 봤다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;좋은점&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;언제 어디서든 글쓰기가 가능하다.&lt;/li&gt;
&lt;li&gt;통신이 되지 않는 곳에서 글쓰기에 집중할 수 있다.&lt;/li&gt;
&lt;li&gt;앱간의 스위칭이 PC만큼 자유롭지 않아 웹질이나 다른 일에 빠질 확률이 다소 적다. (정말? 그 반대의 경우도)&lt;/li&gt;
&lt;li&gt;완성된 글을 iBook에서 책 처럼 볼 수 있다.&lt;/li&gt;
&lt;li&gt;Dropbox나 Evernote로 동기화해 다른 환경에서 바로 작업을 이어나갈 수 있다.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;글쓰기를 위한 아이패드&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://becoming-a-writer-seriously.com/wordpress/2010/04/09/ipad-for-writers/" target="_blank"&gt;iPad for Writers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.thebookwright.com/2010/05/29/the-ipad-a-writers-toolbox/" target="_blank"&gt;The iPad: A Writer’s Tookbox&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.angelabooth.biz/2010/02/the-ipad-for-writers-cant-wait.html" target="_blank"&gt;The iPad for Writers? Can’t Wait&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.inkygirl.com/ipad-apps-for-writers/" target="_blank"&gt;iPad Apps for Writers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://timetowrite.blogs.com/weblog/2010/03/what-does-the-ipad-mean-for-writers.html" target="_blank"&gt;What does the iPad mean for writers?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;소프트웨어&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Pages for iPad&lt;/li&gt;
&lt;li&gt;Evernote&lt;/li&gt;
&lt;li&gt;Dropbox&lt;/li&gt;
&lt;li&gt;Writeroom (맥북에서는 Command+Option+Control+8을 누르면 화면이 반전된다. 비슷한 효과를 얻을 수있다. 아니면 Pages에서 색상 셋팅하고 전체화면으로 편집)&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;악세사리&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;단기간 사용한 결과 전용 키보드는 별로 유용하지 않은듯 하다.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://images.gizmag.com/inline/ipad-accessories-round-up-18.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;하지만 거치대가 있다면 무선 키보드는 덜 걸리적 거려서 좋다. 개인적으로 외장 키보드는 필수다. 터치로는 글쓰는 재미를 얻기 어렵더라. 때리는 맛이 없다.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://images.gizmag.com/inline/ipad-accessories-round-up-10.png"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://bindapple.com/wp-content/uploads/2010/06/apple-ipad-case.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;물론 전원은 필수!라고 할 수도 있고 아닐 수도 있다. 추가 전원이 없이 제한된 시간 동안에 글쓰기를 완성해야 한다면 능률을 더 높일 수 있을지도 모른다. 진모씨가 글쓸때 PC방을 간다는 말을 했던 기억이 난다. 시간은 정해져 있고 그 안에 완수해야 한다는 사명감 뭐 그런것이 더 몰입하게 하는 것이다. 한마디로 똥줄이 타야 뭔가를 한다능.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://images.gizmag.com/inline/ipad-accessories-round-up-2.png"/&gt;&lt;/p&gt;</description><link>http://note.oiko.cc/post/1151496283</link><guid>http://note.oiko.cc/post/1151496283</guid><pubDate>Sun, 19 Sep 2010 13:21:00 -0600</pubDate><category>ipad</category><category>글쓰기</category></item><item><title>SeoulParlor</title><description>&lt;p&gt;최근에 수정을 보고 있는 SeoulParlor의 아키텍쳐. 어떠한 상황에서도 살아 남을 수 있는 서비스를 지향하고 있다. 주로 Read-Only의 어플리케이션을 타겟으로 하고 스토리지에서의 검색기능을 특화하도록 할 생각이다. 이미 모듈들은 독립적으로 존재하는데 합치는 작업에 시간이 소요될 듯 하다.&lt;/p&gt;
&lt;p&gt;한국인 트위터 계정에 대한 데이터와 LBS를 위한 위치정보 데이터들을 위해서 주로 쓰여질 예정이다. 정식으로 공개는 버젼 0.1 정도 나와야 할 수 있을듯.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://lab.oiko.cc/code" target="_blank"&gt;공식사이트&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img height="80" width="300" src="http://farm5.static.flickr.com/4103/4993729693_c5dc7e87d8_o.png"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm5.static.flickr.com/4108/4993732965_9a0ee42706_z.jpg"/&gt;&lt;/p&gt;</description><link>http://note.oiko.cc/post/1127557029</link><guid>http://note.oiko.cc/post/1127557029</guid><pubDate>Wed, 15 Sep 2010 13:08:00 -0600</pubDate><category>SeoulParlor</category><category>KeyValue</category><category>SelfReplication</category><category>Project</category></item></channel></rss>

