<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="http://rss.egloos.com/style/blog.xsl" type="text/xsl" media="screen"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
	<title>saillinux님의 이글루</title>
	<link>http://saillinux.egloos.com</link>
	<description>perl, linux, emacs, 그림 그리고 나</description>
	<language>ko</language>
	<pubDate>Sat, 07 Mar 2009 15:42:54 GMT</pubDate>
	<generator>Egloos</generator>
	<image>
		<title>saillinux님의 이글루</title>
		<url>http://pds7.egloos.com/logo/200806/02/75/e0077375.jpg</url>
		<link>http://saillinux.egloos.com</link>
		<width>80</width>
		<height>89</height>
		<description>perl, linux, emacs, 그림 그리고 나</description>
	</image>
  	<item>
		<title><![CDATA[ '-') 쓰왑! Web Hook - 웹, 기억하십니까? ]]> </title>
		<link>http://saillinux.egloos.com/2313127</link>
		<guid>http://saillinux.egloos.com/2313127</guid>
		<description>
			<![CDATA[ 
  '-')/ 마크로스 극장판 제목을 패러디하여 간만에 올리는 포스트가 되겠다. 간만에 올렸다고 <br />
때리지 말아 주세요.<br />
<br />
'-')... 뭐랄까 웹은 플렛폼이라는것을 다시 상기할때가 온듯 해서 올리는 글인데....<br />
<br />
'-') 음 이건 맞을각오를 살짝 하고 우리나라는 아직 Web Hook에 관련해서 관심이 없어 보이는게<br />
매우 안타깝다. 웹 개발자나 기획자로써 미쿡애들이랑 상당한 차이를 보이는 부분이 있다면 이 <br />
web hook을 이해하느냐 못하느냐 에 따른거 같다. '-')/ 님들 좀 각오. I am not just being sarcastic here...<br />
<br />
<a href="http://www.slideshare.net/progrium/web-hooks-and-the-programmable-world-of-tomorrow-presentation" target="_top">http://www.slideshare.net/progrium/web-hooks-and-the-programmable-world-of-tomorrow-presentation</a><br />
<br />
Ok the things I'd like to impose from the slide follow as below:<br />
<ul><li>push is good! ( no more polling but pushing data whenever they are available in terms of web application )</li><li>piping ( like how unix commands are used but now this time with web applications )</li><li>XMPP vs Web Hook ( I need to delve into them more before I tell anything about them )</li><li>Logic and Content</li><li>Service Integration</li><li>Composability</li><li>Code as Glue ( wow check out the idea of using pastebin as instant code as glue ) <br />
</li></ul>죄송하다 나도 잘 모른다 '-');; 허나 지속적인 관심과 시도가 있어야 할거 같다 '-')/<br />
상세하게 적기에는 나도 아직 이해가 모자르기 때문에 안되겠지만.... 아래의 세가지 아이템으로 <br />
대부분 정리가 되겠다.<br />
<br />
Web API<br />
Web Hooks<br />
<br />
“a new programming paradigm <br />
that takes the whole Internet <br />
as its platform” -- john udell<br />
<br />
<br />
작년에 jesse가 왔을때&nbsp; 왜 xmpp에 열광을 하고 보여줄라 애썼는지 이제야 이해가 갔다....<br />
무려 반년 넘게 지나서... 반성 하도록 하자 '-') 시무룩...<br />
<br />
그리고 새로운 시작의 알림인거 같다 '-') 여! Web 2.0 이 이제야 반석이 되어 <br />
웹을 플랫폼화 하였다!<br />
<br />
<br />
p.s. 존 우델 (john udell) 은 XML.com의 리딩 아티클 투고자이자 내가 처음으로 <br />
Web상으로 존경하게 되었던 인물이다. RSS Categorization에 대한 아티클을 작성을 <br />
하여 나의 블로그 포스트 분류 연구의 시작을 돋구와 주었고 지금의 웹에 대한 정열과 <br />
할일을 주었던 사람이다. '-') 형아 고마워욤.<br />
			 ]]> 
		</description>

		<comments>http://saillinux.egloos.com/2313127#comments</comments>
		<pubDate>Sat, 07 Mar 2009 15:41:54 GMT</pubDate>
		<dc:creator>ataraxia</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 야후에 입사하다 '-') ]]> </title>
		<link>http://saillinux.egloos.com/2063872</link>
		<guid>http://saillinux.egloos.com/2063872</guid>
		<description>
			<![CDATA[ 
  야후에 입사한 날이 되겠다.... 의외로 긴장을 해서 그런지 상당히 피곤하였는데 그래도 상당히 기분 좋은 긴장이었다.<br />
어릴때 동경만 했던 야후에 입사할수 있었던것은 정말로 여러분들의 도움이 있었기에 가능했던거 같다 '-') 꾸벅...<br />
<br />
<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds11.egloos.com/pds/200810/01/75/e0077375_48e37f4f76dbd.jpg" width="500" height="375" onclick="Control.Modal.openDialog(this, event, 'http://pds11.egloos.com/pds/200810/01/75/e0077375_48e37f4f76dbd.jpg');" /></div><br />
흐음 <br />
			 ]]> 
		</description>

		<comments>http://saillinux.egloos.com/2063872#comments</comments>
		<pubDate>Wed, 01 Oct 2008 13:47:58 GMT</pubDate>
		<dc:creator>ataraxia</dc:creator>
	</item>
	<item>
		<title><![CDATA[ yuni님 캐릭 완성 ]]> </title>
		<link>http://saillinux.egloos.com/2058672</link>
		<guid>http://saillinux.egloos.com/2058672</guid>
		<description>
			<![CDATA[ 
  내가 생각해 봐도 훌륭하다<br />
<br />
<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds10.egloos.com/pds/200809/29/75/e0077375_48e0c37e28646.jpg" width="500" height="375" onclick="Control.Modal.openDialog(this, event, 'http://pds10.egloos.com/pds/200809/29/75/e0077375_48e0c37e28646.jpg');" /></div><br />
			 ]]> 
		</description>

		<comments>http://saillinux.egloos.com/2058672#comments</comments>
		<pubDate>Mon, 29 Sep 2008 12:01:12 GMT</pubDate>
		<dc:creator>ataraxia</dc:creator>
	</item>
	<item>
		<title><![CDATA[ Korean Perl Workshop 2008: Rising Perl ]]> </title>
		<link>http://saillinux.egloos.com/1940193</link>
		<guid>http://saillinux.egloos.com/1940193</guid>
		<description>
			<![CDATA[ 
  <h1>Korean Perl Workshop 2008: Rising Perl</h1><ul><li><b>시간:</b>                  <p> 2008년 8월 23일 토요일, 13:00 ~ 21:00 </p>                </li><li>                  <b>장소:</b>                  <p> 서울 강남역 6번 출구 토즈 강남점 (<a href="http://localhost/kpw2008/location.html">위치 참조</a>) </p>                </li><li>                  <b>행사 대표:</b>                  <p> keedi (김도형) </p>                </li><li>                  <b>행사 목표:</b>                  <p>                    한국의 펄 사용자들이 모일 수 있는 장을 마련하여,                    한국 내 펄 커뮤니티를 확대하고 기존 사용자들에게                    펄에 대한 새로운 관심과 가능성을 전달하기 위해                    이번 행사를 개최합니다.                  </p>                </li><li>                  <b>행사 설명:</b>                  <p>                    펄은 파이썬, 루비와 함께 가장 인기있는 3대 스크립트 언어 중 하나입니다.                     20여년의 역사를 가진 펄은 국내에서는 오래된 언어쯤으로 취급받고 있지만,                    오히려 국제적으로 여전히 많이 사용하고 있으며,                    해외의 펄 커뮤니티는 갈수록 그 열기 또한 뜨거워지고 있습니다.                    최근 일본에서 열린 펄 컨퍼런스인                    <a href="http://yapcasia.org/">YAPC::Asia 2008</a>을 보더라도                    단일 언어를 주제로 500명에 달하는 국내외 참석자가 모인 것을 보면                    펄이란 녀석이 무슨 매력을 가지고 있긴 한가 봅니다.                  </p>                  <p>                    국내에서는 비단 개발과 서버관리 보안 등의 IT분야 뿐 아니라                    생명정보학이나, 언어학, 대용량 자료처리 등 다양한 분야에서도                    펄을 사용하고 있습니다. 하지만 이렇게 펄을 사용하는 분들이 모여서                    의사소통할 수 있는 기회는 거의 없었습니다.                    아무쪼록 이번 워크샵을 통해 한국에서 펄에 관심을 가지신 분들과 함께                    최신 펄의 동향과 기술적인 주제들을 공유할 수 있는 장이 될 수 있길,                    국내의 펄 커뮤니티가 질적으로나 양적으로나 한 단계 성장할 수 있길                    기대해봅니다.                  </p>                  <p>                    많은 관심과 참석 부탁드리겠습니다. 고맙습니다! :-)                  </p>                </li><li>                  <b>행사 내용:</b>                  <p> 정규 발표(각 20분) 13개, 짧은 발표(각 5분) 8개 (<a href="http://localhost/kpw2008/schedule.html">일정 참조</a>) </p>                </li><li>                  <b>등록비:</b>                  <ul><li> <b>사전등록</b>: 청소년 및 학생(대학원생 포함)  5,000원 직장인 10,000원 </li><li> <b>현장등록</b>: 청소년 및 학생(대학원생 포함) 10,000원 직장인 20,000원 </li></ul>                  <p>                    8월 11일 월요일부터 <a href="http://localhost/kpw2008/register.html">이곳</a>에서 등록할 수 있습니다.                  </p>                </li><li>                  <b>행사 STAFF:</b>                  <ul><li> saillinux </li><li> verve </li><li> aero </li><li> amorette </li><li> pung96 </li><li> 고기스님 </li></ul>                </li><li>                  <b>후원:</b>                  <ul><li> NHN Corp. </li><li> Free OpenSource Software Association </li><li> 싸이텍 미디어, 지&amp;선 </li><li> 한빛 미디어 </li><li> KLDP </li><li> 펄매니아 </li><li> 한국 펄 사용자 모임 </li></ul>                </li></ul>			 ]]> 
		</description>

		<comments>http://saillinux.egloos.com/1940193#comments</comments>
		<pubDate>Mon, 11 Aug 2008 04:41:14 GMT</pubDate>
		<dc:creator>ataraxia</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 철희형 보내주신 축전?!! ]]> </title>
		<link>http://saillinux.egloos.com/1850360</link>
		<guid>http://saillinux.egloos.com/1850360</guid>
		<description>
			<![CDATA[ 
  축전 까지는 아니고 심심해서 만드셨다고는 하지만.... 아와~ 보통 실력이 아니시다.<br />
내 dragon의 reverse version!! 역시 정서물란한 내 캐릭터의 실체를 파악하고 다시 표현한<br />
이 그림은 간만에 나에게 활력을 불어 넣어 주었다!<br />
<br />
<br />
<span style="color: rgb(255, 102, 102); font-weight: bold;">Here's CK's drooling~</span><br />
<br />
<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds9.egloos.com/pds/200807/08/75/e0077375_4872b464ba3f6.jpg" width="500" height="375" onclick="Control.Modal.openDialog(this, event, 'http://pds9.egloos.com/pds/200807/08/75/e0077375_4872b464ba3f6.jpg');" /></div><br />
			 ]]> 
		</description>

		<comments>http://saillinux.egloos.com/1850360#comments</comments>
		<pubDate>Tue, 08 Jul 2008 00:27:46 GMT</pubDate>
		<dc:creator>ataraxia</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 아 졸립고 뻐근하고 멍하고 언츤거같고 손에 체중이 묵었다 ]]> </title>
		<link>http://saillinux.egloos.com/1832357</link>
		<guid>http://saillinux.egloos.com/1832357</guid>
		<description>
			<![CDATA[ 
  그래도 길이 있더라.... 수고했다!!<br />
<br />
<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds8.egloos.com/pds/200807/01/75/e0077375_4869f322bc650.jpg" width="500" height="366" onclick="Control.Modal.openDialog(this, event, 'http://pds8.egloos.com/pds/200807/01/75/e0077375_4869f322bc650.jpg');" /></div><br />
			 ]]> 
		</description>

		<comments>http://saillinux.egloos.com/1832357#comments</comments>
		<pubDate>Tue, 01 Jul 2008 09:04:44 GMT</pubDate>
		<dc:creator>ataraxia</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 작명 센스는 이정도는 되야... ]]> </title>
		<link>http://saillinux.egloos.com/1780181</link>
		<guid>http://saillinux.egloos.com/1780181</guid>
		<description>
			<![CDATA[ 
  암튼 감탄이 나올뿐이다....<br />
<br />
&lt;pung96&gt; 호,, JEEN님의 상세한 조언에 무한한 감사<br />
&lt;JEEN_&gt; 래리월 훼이크 작전은 좋지 않나 생각했는데...<br />
&lt;JEEN_&gt; 어떻게 생각하시는지요?<br />
&lt;pung96&gt; 흠..<br />
&lt;pung96&gt; 누굴 시켜야 어울릴까요?<br />
&lt;JEEN_&gt; 그야...<br />
&lt;JEEN_&gt; saillinux님을 시켜야<br />
&lt;JEEN_&gt; <span style="font-weight: bold;">LaHee Won</span><br />
&lt;JEEN_&gt; ;;;<br />
&lt;JEEN_&gt; <span style="font-weight: bold;">래희원</span><br />
&lt;JEEN_&gt; 뭔가 라임도 맞고...<br />
&lt;JEEN_&gt; 아닌;;<br />
&lt;JEEN_&gt; 죄송..<br />
<br />
<br />
이어지는 내용...<br />
<br />
<br />
&lt;saillinux&gt; JEEN// 어떻게 하면 래희원이 나올수 있죠;;<br />
&lt;JEEN_&gt; saillinux: 흠...<br />
&lt;JEEN_&gt; saillinux님께서 Larry wall 간지 수염만 붙인다면...<br />
&lt;saillinux&gt; 털썩<br />
&lt;JEEN_&gt; <span style="font-weight: bold;">Larry Wall + Kim Hee Won =&gt; LarHee Won</span><br />
&lt;JEEN_&gt; 래희원<br />
&lt;JEEN_&gt; 발음을 살짝 비틀어서 해야되겠지만..<br />
&lt;saillinux&gt; '-') 후와<br />
&lt;JEEN_&gt; saillinux님 간지수염을 기대~<br />
&lt;JEEN_&gt; 기조연설! 우왕~<br />
&lt;saillinux&gt; 모듈을 하나 만드세요 LarryWall("YourName") -&gt; Larrialized Your Name<br />
&lt;saillinux&gt; '-')/ 이야 이거 쿠판에서 엄청 뜰듯<br />
&lt;JEEN_&gt; 흡<br />
&lt;saillinux&gt; 암튼 JEEN님의 작명센스에 감동<br />
&lt;saillinux&gt; 래희원...<br />
&lt;JEEN_&gt; 설마 그걸 닉으로 쓰시겠다능?<br />
&lt;JEEN_&gt; 그때부터는 저작권비가 들어갑니다. :-)<br />
&lt;saillinux&gt; ...<br />
&lt;saillinux&gt; '-'); 안되나요?<br />
&lt;JEEN_&gt; 흠...<br />
&lt;JEEN_&gt; 아뇨.. 사용하세요<br />
&lt;JEEN_&gt; 특별히 <span style="font-weight: bold;">30일 무료사용쿠폰</span>을 제공해 드리겠<br />
&lt;saillinux&gt; 30일 무료사용;;<br />
<br />
<br />
누군가에 위해 <span style="font-weight: bold;">래희원</span>이 될뻔한 순간이었습니다...<br />
<br />
			 ]]> 
		</description>

		<comments>http://saillinux.egloos.com/1780181#comments</comments>
		<pubDate>Thu, 12 Jun 2008 05:50:16 GMT</pubDate>
		<dc:creator>ataraxia</dc:creator>
	</item>
	<item>
		<title><![CDATA[ Devel::REPL로 하는 심장이 좋아지는 개발 ]]> </title>
		<link>http://saillinux.egloos.com/1765103</link>
		<guid>http://saillinux.egloos.com/1765103</guid>
		<description>
			<![CDATA[ 
  REPL 에 대한 간단한 정의를 하자면 Read Eval Print Loop 의 약자로써 현재 사용되고들 있는 스크립팅언어들의interactive interpreter shell 의 다른 명칭(예전 이름) 이라고 이해 하면 좋겠다.<br />
<br />
REPL은 예전 Lisp나 Scheme 에서 개발자가 직접 간단한 코드를 직접 입력하여 바로바로 결과값을 볼수있게끔 해주는 편의성을 제공해주는 툴이 되겠다. 이미 Python (python, ipython)이나 Ruby (irb)는Interactive 한 환경을 제공하고 있으며 Perl 또한 perl debugger 를 통해 비슷한 환경을 예전 부터제공해왔었다.<br />
<br />
아쉽게도 perl debugger 를 통해 interactive한 환경을 누리고 있는 개발자들이 드물며 이러한이유가 프로그램을 키워나가거나 프로토타입핑 용도가 아닌 debugger인 용도로만 사용이되어 온듯하다. 그래서 그럴수 밖에없었던 간략한 이유와 모자른 부분을 채워줄수 있는 모듈인 <a href="http://search.cpan.org/%7Emstrout/Devel-REPL-1.002001/lib/Devel/REPL.pm" target="_top">Devel::REPL</a>에 대한 설명을 해보겠다.<br />
<br />
Devel::REPL은 <a href="http://chainsawblues.vox.com/" target="_top">http://chainsawblues.vox.com/</a> 의 Matt Trout씨가 자신이 가지고 있는 이메일들을 필터 하기 위해 인터랙티한 환경에서 작업을 할수 없을까 모색 하다가 직접 만들게 된 모듈이 되겠다.<br />
<br />
이 스터디의 주 목표는 Perl 을 이미 사용들 하고 계시거나 Perl 에 대해 좀더 알기 위한 분들에게 Perl 에도인터랙티브한 환경이 있다는것을 전달하는것이며 그리고 하나의 예를 통해 interactive 한 환경을 통한 즐거운 개발을 시연하도록 하겠다. Perl 의 수많은 모듈들을 인터랙티브한 환경에서 실행해 볼수 있는것만큼 큰 즐거움을 없을것이다.<br />
<br />
<p></p><font style="font-weight: bold;" size="3">다른 REPL 모듈과 특히 perl debugger와 Devel::REPL의 차이점</font><br />
<br />
우선 Devel::REPL을 사용함으로 perl debugger나 다른 REPL 모듈등이 제공해주지 못하는 부분을 리스트 해보겠다.<p> </p><ul><li> perl debugger 에선 입력한 코드의 결과값을 보기 위해선 x, p 명령어를 이용해서 확인 할수 있겠다. 그에비해 Devel::REPL은 바로바로 변수 이름을 입력하거나 객체를 생성하거나 함수를 실행할때 리턴값들을 자동으로 출력해 줄수있겠다.</li></ul> <p> </p><ul><li> Multi line 지원인데 perl debugger에선 함수 선언을 할때 우리가 원하는 라인넘김을 사용할수가 없겠다대신 \ 기호를 이용해 (keedi님, pung96님께 감사~) 라인넘김대신 사용하여 여러 라인으로 구성된 함수를 지정해 주어야하지만 Devel::REPL에선 <span class="twikiNewLink">MultiLine</span>::PPI 플러긴을 통해 라인넘김을 지원하게 되었다 (아직 문제가 되는 부분들이 있다 나중에 설명을).</li></ul> <p> </p><ul><li> Devel::REPL은 플러긴을 지원하는 시스템이 되겠다. <span class="twikiNewLink">MooseX</span>::Object::Pluggable 를 이용하여 perl로 직접 추가 기능등을 구현 할수 있는가에 비해 perldebugger는 이미 완성되어 있는 perl interpreter의 추가 기능이라 부가적인 기능을 개발하기가 매우 힘들것이다.</li></ul> <p> </p><ul><li> 플러긴이 아직 많지는 않아 리스트만 해보겠다 이름을 통해 직관적으로 각 기능들이 무엇을 하는지 알수 있겠다. 이런점들이 Devel::REPL이 perl debugger 보다 인터랙티브 환경에 더 적합한 점이 되겠으며 다른 언어의 REPL환경보다 저 좋게 구현 할수 있다는 장점이 있겠다.</li><ul><li><span class="twikiNewLink">CompletionDriver</span></li><li><span class="twikiNewLink">MultiLine</span> </li><li> Colors.pm</li><li> Commands.pm</li><li> Completion.pm</li><li>  DDS.pm</li><li>  <span class="twikiNewLink">DumpHistory</span> .pm</li><li>  <span class="twikiNewLink">FancyPrompt</span> .pm</li><li>  History.pm</li><li>  Interrupt.pm</li><li>  <span class="twikiNewLink">LexEnv</span> .pm</li><li>  <span class="twikiNewLink">NewlineHack</span>.pm</li><li>  <span class="twikiNewLink">OutputCache</span>.pm</li><li>  Packages.pm</li><li>  <span class="twikiNewLink">ReadLineHistory</span>.pm</li><li>  Refresh.pm</li><li>  <span class="twikiNewLink">ShowClass</span>.pm</li><li>  Timing.pm</li><li>  Turtles.pm</li></ul><li> Devel::REPL에선 모든 입력들이 use strict 환경에서 적용된다.</li></ul> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p><ul><li> Devel::REPL이 사용하는 모듈중에 namespace::clean이라는 모듈을 사용하는데 우리가 개발하는 모듈이바뀔때마다 다시 리로딩 하여 이미 기존에 있는 package namespace를 refresh 할수 있는 기능이 있는것 같다.(확인 필요)</li></ul> <p> </p><ul><li> startup script을 사용할수 있다 (perl debugger 도 있는지 확인 필요)</li></ul> <p>Devel::REPL이 perl debugger보다 부족한점을 리스트 해보겠다.</p><p> </p><ul><li> perl debugger는 perl 이 설치된 시점에 이미 사용할수 있다는 장점이 있는가에 비해 Devel::REPL은CPAN에서 직접 설치를 해줘야한다는 점이 있겠다 그리고 설치 모듈 수도 Moose를 요구하는 부분이 있어 많은 수의 설치가실행된다. 물론 ubuntu에선 package로 제공되고 있지만 아쉽게도 버젼이 낮은듯하다.</li></ul> <p> </p><ul><li> Devel::REPL에 비해 속도가 매우 빠른듯 하다. 특히 실해되는 시점에서 부터.</li></ul> <p> </p><ul><li> perl debugger는 perl -de0명령어 하나로 접근성이 매우 좋고 기억하기가 편하다 그에Devel::REPL은 perl -Ilib -MDevel::REPL -e "Devel::REPL-&gt;new-&gt;run;"이라는 좀 적지 않은 perl one liner를 이용해 접근해야 하는 불편한 점이 있다.</li></ul> <p> </p><ul><li> perl debugger는 기본적으로 Lexical 변수를 저장할수 있다 그외 비해 Devel::REPL은 <span class="twikiNewLink">LexEnv </span>플러긴을 통해 이를 지원한다.</li></ul> <p> </p><ul><li> Devel::REPL은 break, continue, watch 기능을 지원하지 않는다.</li></ul> <p> </p><ul><li> Devel::REPL은 symbol table에 있는 package name에 등록되어 있는 함수랑 변수를 따로 보여주는 기능이 없다. 대신에 직접 keys %main::를 입력하면 해당 값들이 나오겠다.</li></ul> <p> </p><ul><li> 이미 emacs의 gud 환경에서 perl debugger를 기가막히게 사용할수 있다.  (물론 Stylish에서 이미 Devel::REPL 모드를 emacs 용으로 구현해 놓았다. 대신 perl 5.10이 필요하다)</li></ul> <p></p><p>여러 종류의 perl을 위한 REPL 환경을 제공하는 모듈들이 CPAN 에 많이 올라와 있지만 특히 완성도가 좀 있는Perl Console 같은것도 확인 되었지만 현재 Devel::REPL만크 모던 스크립팅 언어 추세를 좀더 이해하고 플러긴 시스템을지원한다는점이있어 선택하게 되었다.</p><p> 현재 인기상승중인 Moose를 이용해 개발 되었으며 플러긴 개발을 매우 쉽게 해줄수 있는인터페이스를 제공하고 있는 점을 고려 해본다면 아직 미완성인 부분들이 있지만 현존하는 모든 언어들의 REPL중에서 매우 좋은측에 선다고 생각된다.</p><p><br />
</p><p><font size="3"><span style="font-weight: bold;">Devel::REPL을 이용한 간단한 web scraping 예제</span></font></p><p></p><p></p><br />
<p>보통 우리가 perl script을 작성 하고 테스트 할때 바로바로 실행해서 확인 하는데엔 무리가 없지만 웹에서 컨텐츠를가져오거나 여러 모듈을 실험해 볼때는 이런 방법은 시간을 많이 소요하게된다. <br />
</p><p><br />
</p><p>특히 웹에서 컨텐츠를 가져오는 작업은 보통 받아온컨텐츠를 이리저리 굴려 보면서 원하는 값을 긁어 오는 작업에 집중해야 하는데 추출하는 로직을 수정해야 할때 마다 웹에서 컨텐츠를가져와야 하게 된다면 매우 피곤하고 단순하면서 코딩 흐름을 방해하는 부분이 되겠다. 이를 해결해 주는 것이Devel::REPL이 되겠다!!</p><p><br />
</p><p>우선 re.pl (Devel::REPL을 스크립으로 돌릴시 기본적으로 사용되는 이름이 되겠다. 여기서 re.pl이 REPL이라고 지적해주신 yuni님께 감사~) 의 이름을 가진 스크립안에 아래와 같은 코드를 작성에Devel::REPL을 돌리도록 하겠다.<br />
</p><pre><span style="font-family: Dotum,Verdana,AppleGothic,Sans-serif;"></span>use strict;<br />
use warnings;<br />
use Devel::REPL;<br />
<br />
my $repl = Devel::REPL-&gt;new;<br />
$repl-&gt;load_plugin($_) for qw(<br />
                               History<br />
                               DumpHistory<br />
                               LexEnv<br />
                               MultiLine::PPI<br />
                               Commands<br />
                               Completion<br />
                               DDS<br />
                               FancyPrompt<br />
                               ShowClass<br />
                               Timing<br />
                            );<br />
$repl-&gt;run;<br />
<span style="font-family: 굴림;"><br />
</span>이 스크립을 perl re.pl로 돌리면 아래와 같은 interactive shell 환경이 실행 될것이다. 여기서 몇개의 주요 플러긴을 간략하게 소개 하도록 하겠다. </pre><ul><li> History.pm : bash 의 history기능과 비슷하다 생각하면  되겠다 리스팅은 안해 주지만 !를 prefix주고 숫자를 주면 해당 라인이 재실행  되겠다.</li><li> <span class="twikiNewLink">LexEnv</span>.pm : REPL에서 lexcial 변수로 정의되는 값들을 보존하게 해준다 (perl은 package변수와 lexical변수가 구분된다 여기서 package 변수는 eval로 실행되면 symbol table로 저장되어 세션에서 보존되지만lexcical 변수는 eval은 하고난뒤 삭제되어 이를 방지해주는 플러긴이 되겠다.)</li><li> <span class="twikiNewLink">DumpHistory</span>.pm : :dump라고 repl에 입력하면 지금까지 입력했던 값들을 리스트한다.</li><li> <span class="twikiNewLink">MultiLine</span>::PPI.pm : 여러라인으로 구성된 함수를 선언하거나 구성된 값을 입력시 필요한 플러긴이 되겠다.</li><li> DDS.pm : 변수값들을 Data::Dump::Streamer 모듈을 이용하여 Data::Dumper와 같은 출력을 보여주는 유용한 플러긴</li><li> Timing.pm : 실행된 라인이 얼마나 걸렸는지 걸린 시간을 보여주는 아주 유용한 플러긴 (리얼타임 프로파일링)</li><li> <span class="twikiNewLink">FancyPrompt</span>.pm : 루비의 irb와 같은 prompt를 제공해준다.</li></ul>실행 화면 예)<br />
 <p></p><pre>re.pl(main):075:0&gt; $track_nodes[0]-&gt;findnodes('./tr')-&gt;[1]-&gt;findvalue('./td')<br />
Took 0.0673990249633789 seconds.<br />
$XML_XPathEngine_Literal1 = 6/6/2008 9:01:22 AMArtist :DJ Fuma buy;<br />
<br />
re.pl(main):076:0&gt;<br />
<br />
</pre><p>여기서 scraping할 테스트 페이지는 내가 주로 듣는 라디오 playlist를 보여주는 페이지가 되겠는데 여기서 recently played items에 있는 track 정보들을 가져와서 출력해주는 예제가 되겠다.</p><p><br />
</p><p>우선 아래의 코드가 REPL을 통해 구현된 완성된 코드가 되겠다.</p><p></p><pre>#!/usr/bin/perl<br />
use strict;<br />
use warnings;<br />
use WWW::Mechanize;<br />
use HTML::TreeBuilder::XPath;<br />
<br />
my $url = "http://www.lounge-radio.com/code/pushed_files/recently.html";<br />
my $mech = WWW::Mechanize-&gt;new;<br />
$mech-&gt;get($url) or die "eeek no such page to retrieve! $!";<br />
<br />
my $tree = HTML::TreeBuilder::XPath-&gt;new;<br />
$tree-&gt;parse($mech-&gt;content) or die "No contents to parse";<br />
$tree-&gt;eof;<br />
<br />
my @track_nodes = $tree-&gt;findnodes('//tbody[@class="table"]');<br />
<br />
foreach my $track (@track_nodes) {<br />
    print "-"x25,"\n";<br />
    foreach my $tr ($track-&gt;findnodes('./tr')) {<br />
      my $td = $tr-&gt;findvalue('./td');<br />
      $td =~ /<br />
               (<br />
                 \d+\/\d+\/\d+<br />
                 \s<br />
                 \d+:\d+:\d+\s\w{2}<br />
               )      # match datetime and capture<br />
               Artist # match Artist<br />
               \s     # match whitespace<br />
               :      # match  delimiter<br />
               (.*)   # match the artist name and capture<br />
               \s+    # match any length of whitespace<br />
               buy    # match buy<br />
             /ox<br />
               and print "Date: $1\nArtist: $2\n";<br />
      $td =~ /Track\s:(.*)/o and print "Track: $1\n";<br />
      $td =~ /Album\s:(.*)/o and print "Album: $1\n";<br />
    }<br />
    print "-"x25,"\n";<br />
}<br />
</pre><p>우선 $tree-&gt;eof; 라인까지는 REPL이 필요없어도 쉽게 작성할수 있는 코드가 되어서 복사해서 repl에 붙여 넣으면 되겠다.</p><p><br />
</p><p>중간에 $mech-&gt;get($url) or die "eeek no such page to retrieve! $!"; 부분에서 2초 가까이 걸리는것을 알수 있겠다.</p><p><br />
</p><p>re.pl(main):023:0&gt; $mech-&gt;get($url) or die "eeek no such page to retrieve! $!";</p><p>Took 2.48410296440125 seconds.<span style="font-family: monospace;"><br />
</span></p><p>$HTTP_Response1 = HTTP::Response=HASH(0x9561674);</p><p></p><p><br />
REPL의 장점은 우리가 관심있는 데이타를 실제 스크립을 다시 로딩 안해도 지속적인 작업을 받아온 데이타에 할수 있다는 점이 되겠다.</p><p><br />
</p><p>이제 웹에서 컨텐츠를 WWW::Mechanize로 가져온 상태고 이를 HTML::TreeBuilder::XPath로 파싱을 한 상태가 되겠다.</p><p><br />
</p><p>이제 여기서 부터 REPL의 기능을 최대한 누려 최대한 적은 양의 시간과 노력을 들여 개발을 시작해 보도록 하겠다.</p><p><br />
</p><p>우선 우리가 원하는 트랙 정보의 XPATH 값의 '//tbody[@class="table"]' 으로 쉽게 가져올수 있다는것을 확인할수 있겠다.</p><p><br />
</p><p>각 트랙을 담고 있는 테이블을 @track_nodes에  아래의 코드를 이용해 담도록 하겠다.</p><p><br />
</p><p></p><p>my @track_nodes = $tree-&gt;findnodes('//tbody[@class="table"]');</p><p><br />
</p><p>REPL에서 확인하면 몇개의 노드가 존재 하는지 알수가 있다 하지만 아쉽게도 아직 어떤 값들이 객체에 저장되어 있는가 알수가 없다.</p><p><br />
</p><p>re.pl(main):029:0&gt; my @track_nodes = $tree-&gt;findnodes('//tbody[@class="table"]');</p><p>Took 0.279267072677612 seconds.<br />
</p><p></p><pre>$ARRAY1 = [<br />
            HTML::Element=HASH(0x95e0b30),<br />
            HTML::Element=HASH(0x95e5964),<br />
            HTML::Element=HASH(0x95edfa8),<br />
            HTML::Element=HASH(0x95f3b80),<br />
            HTML::Element=HASH(0x95fc35c),<br />
            HTML::Element=HASH(0x9600fdc),<br />
            HTML::Element=HASH(0x96082bc),<br />
            HTML::Element=HASH(0x9610c08),<br />
            HTML::Element=HASH(0x9614690),<br />
            HTML::Element=HASH(0x961ddb4)<br />
          ];<br />
<span style="font-family: Dotum,Verdana,AppleGothic,Sans-serif;"><br />
<br />
</span>이 객체들이 어떤 메소드를 제공하는지 symbol table을 검색하여 확인 할수 있으며 객체 종류를 아는 이상 CPAN의<br />
문서를 검색해서 알수 있겠다. <br />
<br />
심지어 플러긴을 추가 해서 실시간으로 객체에 대한 문서를 끄집어 낼수도 있는 기능도 차후에나올수도<br />
있겠다. 이런 플러긴 개념으로 인해 다른 REPL에선 상상하기 힘든 부분도 고려하게 되는 점이 매력적이다.<br />
</pre><p><br />
</p><p>우선 첫번째 트랙에 무엇이있는지 확인해 보도록 하자.</p><p><br />
</p><p></p><pre>re.pl(main):030:0&gt; $track_nodes[0]<br />
Took 0.00596117973327637 seconds.<br />
$HTML_Element1 = HTML::Element=HASH(0x95e0b30);<br />
<br />
</pre><p>이것을 가지고 이제 이리저리 만져 보도록 하겠다. 우선 HTML::Element라는 객체가 첫번째 트랙으로 저장되어 있는걸알수 있지만 HTML::Element은 우리에게 약간 생소한 모듈이기 때문에 어떤 메소들 제공하는지 확인 하도록 하자.</p><p><br />
</p><p>keys %HTML::Element라고 REPL에 치면 아래와 같은 매우 긴 리스트가 나오겠다.</p><p><br />
</p><p></p><pre>$ARRAY1 = [<br />
            'PRUNE_UP',<br />
            '__ANON__',<br />
.<br />
.<br />
.<br />
생략<br />
.<br />
            'look_down',<br />
            'insert_element',<br />
<br />
</pre><p>상당히 많은 리스트가 나온다 그래서 기억에 HTML관련 함수 가 있었던 것을 기억하고 아래와 같이 검색 해보았다.</p><p><br />
</p><p></p><pre>re.pl(main):041:0&gt; grep /html/i, keys %HTML::Element::<br />
Took 0.0062408447265625 seconds.<br />
$ARRAY1 = [<br />
            'as_HTML',<br />
            'html_uc'<br />
          ];<br />
</pre><p>as_HTML이란 함수를 발견 했다 이를 이욯해 출력을 해보겠다.</p><p></p><pre>re.pl(main):043:0&gt; $track_nodes[0]-&gt;as_HTML<br />
Took 0.0187687873840332 seconds.<br />
&lt;tbody "waking="&amp;quot;Waking" -="-" 6/6/2008="6/6/2008" 9:01:22="9:01:22" @="@" album:="Album:" am.="AM." by="by" class="table" dj="DJ" from="from" fuma="Fuma" fuma's="Fuma&amp;#39;s" lounge="Lounge" onmouseout="oMO(this)" onmouseover="oMOv(this)" played="played" title="Fuma&amp;#39;s Lounge v3 - " up"="Up&amp;quot;" up""="Up&amp;quot;&amp;quot;" v3="v3" waking="Waking"&gt;&lt;tr&gt;&lt;td width="111"&gt;&lt;/td&gt;&lt;td align="left" rowspan="5" width="0"&gt;&lt;/td&gt;&lt;td align="left" rowspan="5" valign="middle" width="42"&gt;<br />
<br />
... 생략<br />
</pre><p>매우 지저분한 HTML 코드가 출력이 되었다 어떤 데이타가 들어 있는지 좀더 쉽게 볼수 있도록 해보자메뉴얼을 좀더 확인 해보니 as_HTML에 인자값을 넣어 인덴트를 할수 있다는것을 확인 할수 있었다.그래서 아래와 같이 다시 한번 돌려 보았다.</p><p></p><pre>re.pl(main):070:0&gt; $track_nodes[0]-&gt;findnodes('./tr')-&gt;[1]-&gt;as_HTML(undef, "\t")<br />
Took 0.0138430595397949 seconds.<br />
&lt;tr&gt;<br />
        &lt;td align="left" class="artist" rowspan="3" valign="middle"&gt;<br />
                &lt;div align="center"&gt;6/6/2008 9:01:22 AM&lt;/div&gt;<br />
        &lt;/td&gt;<br />
        &lt;td align="left" class="artist" rowspan="3" valign="middle"&gt;<br />
        &lt;/td&gt;<br />
        &lt;td align="left" class="artist" valign="middle"&gt;&lt;img height="12" src="imgs/spacer.gif" width="1" /&gt;&lt;b&gt;Artist :&lt;/b&gt;&lt;/td&gt;<br />
        &lt;td align="left" class="artist" valign="middle"&gt;&lt;img height="12" src="imgs/spacer.gif" width="1" /&gt;&lt;b&gt;DJ Fuma&lt;/b&gt;&lt;/td&gt;<br />
        &lt;td align="left" class="artist" rowspan="3" valign="middle"&gt;<br />
                &lt;div align="center"&gt;&lt;a "="&amp;quot;" class="style1" dj="DJ" fuma="Fuma" href="Error: Field &amp;#39;BUYITMS&amp;#39; not found" onclick="return clickreturnvalue()" onmouseover="dropdownmenu(this, event, &amp;#39;anylinkdj_fuma_-_fumas_lounge_v3_-_waking_up_-_fumas_lounge_v3_-_waking_up.mp3&amp;#39;)" target="_blank" title="buy ! Fuma&amp;#39;s Lounge v3 - " up"="Up&amp;quot;" von="von" waking="Waking"&gt; buy&lt;/a&gt;&lt;/div&gt;<br />
        &lt;/td&gt;<br />
&lt;/tr&gt;<br />
<br />
여기서 확실히 내가 원하는 값인 6/6/2008 9:01:22 AM 그리고 Artist값이 DJ Fuma를 <br />
어디서 가져올수 있는지 쉽게 보여 주었다. as_HTML에 이런 기능이 있다는것을 <br />
바로바로 알수 있게된 점이 매우 기쁘다.<br />
&nbsp;</pre><p></p><p></p><p></p><p>내가 원하는 값들이 tr태그로 행으로 구분되어 있고 정작 원하는 값들은 td 태그안에 포함되어 있는 것을 확인 하였다.</p><p><br />
</p><p>다시 노드 검색을 ./tr XPATH값을 이용해 가져온 후 이 값을 findvalue를 이용해 안에 있는 텍스트 값을 가져올수 있겠다.</p><p><br />
</p><p>어떤 위치에 내가 원하는 값이 있는지 여러번의 시도가 필요 했는데 곧바로 REPL에 대고 실험 할수 있어서 매우 편했다.</p><p><br />
</p><p></p><span style="font-family: monospace;">re.pl(main):054:0&gt; $track_nodes[0]-&gt;findnodes('./tr')-&gt;[0]-&gt;findvalue('./td')<br />
Took 0.0159001350402832 seconds.<br />
$XML_XPathEngine_Literal1 = \do { my $v = '' };<br />
bless( $XML_XPathEngine_Literal1, 'XML::XPathEngine::Literal' );<br />
<br />
re.pl(main):055:0&gt; $track_nodes[0]-&gt;findnodes('./tr')-&gt;[1]-&gt;findvalue('./td')<br />
Took 0.0143728256225586 seconds.<br />
$XML_XPathEngine_Literal1 = 6/6/2008 9:01:22 AMArtist :DJ Fuma buy;<br />
<br />
re.pl(main):056:0&gt; $track_nodes[0]-&gt;findnodes('./tr')-&gt;[2]-&gt;findvalue('./td')<br />
Took 0.0106561183929443 seconds.<br />
$XML_XPathEngine_Literal1 = Track :Fuma's Lounge v3 - "Waking Up";<br />
<br />
re.pl(main):057:0&gt; $track_nodes[0]-&gt;findnodes('./tr')-&gt;[3]-&gt;findvalue('./td')<br />
Took 0.0108120441436768 seconds.<br />
$XML_XPathEngine_Literal1 = Album :Fuma's Lounge v3 - "Waking Up";<br />
<br />
re.pl(main):058:0&gt; $track_nodes[0]-&gt;findnodes('./tr')-&gt;[4]-&gt;findvalue('./td')<br />
Took 0.00907802581787109 seconds.<br />
Runtime error: Can't call method "findvalue" on an undefined value at (eval 241) line 8.<br />
<br />
</span><p>여기서 첫번째 값에서 트랙이 플레이된 시간과 아티스트 이름을 알수 있는데 이를 정규식으로 잡아 보도록 하겠다.</p><p><br />
</p><p></p><p>우선 날짜를 아래와 같이 구할수가 있었다.</p><p><br />
</p><p></p><pre>re.pl(main):060:0&gt; $track_nodes[0]-&gt;findnodes('./tr')-&gt;[1]-&gt;findvalue('./td') =~ /(\d+)\/(\d+)\/(\d+)/<br />
Took 0.0140421390533447 seconds.<br />
$ARRAY1 = [<br />
            ( 6 ) x 2,<br />
            2008<br />
          ];<br />
</pre><p>그리고 정규식을 조금씩 조금씩 키워 나가 아래와 같이 만들수 있었다.</p><p><br />
</p><pre>re.pl(main):061:0&gt;track_nodes[0]-&gt;findnodes('./tr')-&gt;[1]-&gt;findvalue('./td') =~ /(\d+\/\d+\/\d+\s\d+:\d+:\d+\sAM|PM)Artist\s:(.+)/<br />
Took 0.0144000053405762 seconds.<br />
$ARRAY1 = [<br />
            '6/6/2008 9:01:22 AM',<br />
            'DJ Fuma buy'<br />
          ];<br />
<br />
</pre><p>이를 응용해 내가 원하는 값을 위와 같은 방법으로 가져올수 있었었고 지금까지 내가 사용한 라인들을 모아 아까 완료되었던 코드들을 완성할수 있었다.</p><p><br />
</p><p>여기서 소개된 툴들과 방법론은 현대 스크립팅언어를 대표하는 Python과 Ruby에선 이미 기본적으로 사용되는것이었었다. perl도 기본적으로 제공을 하고 있었지만 많은 인지도를 얻지를 못한듯하다. 허나 Devel::REPL을 이용하여플러긴을 제작할수 있고 CPAN에 잠재워진 수많은 모듈들을 이를 통해 매우 손쉽게 접근할수 있는점을 생각하면 다른 언어에서제공하는 REPL과는 수준이 다르다는 것을 알수가 있겠다.</p><p><br />
</p><p>아직 perl의 언어 특성상 완벽한 REPL은 지원하지 못하지만 (package변수랑 lexical변수가 나주어져 있다던지, 클로져 구분이라던지..) PPI나 Moose를 통한 수준 높은 툴들에 위해 금방 해결 되라라 믿는다.</p><p><br />
</p>작성자 주석) 펄 한글 문서화 프로젝트 <a href="http://doc.perl.kr/" target="_blank">doc.perl.k</a>r에 올린 글이 되겠습니다. 문서 주소는 <a href="http://doc.perl.kr/twiki/bin/view/Wiki/Devel::REPL" target="_blank">http://doc.perl.kr/twiki/bin/view/Wiki/Devel::REPL</a> 되겠습니다.<br />
<br/><br/>tag : <a href="/tag/perl" rel="tag">perl</a>,&nbsp;<a href="/tag/matt" rel="tag">matt</a>,&nbsp;<a href="/tag/repl" rel="tag">repl</a>,&nbsp;<a href="/tag/emacs" rel="tag">emacs</a>,&nbsp;<a href="/tag/방법론" rel="tag">방법론</a>,&nbsp;<a href="/tag/module" rel="tag">module</a>			 ]]> 
		</description>
		<category>perl</category>
		<category>matt</category>
		<category>repl</category>
		<category>emacs</category>
		<category>방법론</category>
		<category>module</category>

		<comments>http://saillinux.egloos.com/1765103#comments</comments>
		<pubDate>Fri, 06 Jun 2008 17:10:09 GMT</pubDate>
		<dc:creator>ataraxia</dc:creator>
	</item>
	<item>
		<title><![CDATA[ YAPC ASIA 2008 15일 파트 2/4 ]]> </title>
		<link>http://saillinux.egloos.com/1761417</link>
		<guid>http://saillinux.egloos.com/1761417</guid>
		<description>
			<![CDATA[ 
  <p>에효효;;; 파트2 완성~ 현재 나는 손목 부상에 오십견...<br />
<br />
그리고!! YAPC 여러분~! 이 부족한 그림 봐 주셔서 강철 감사!<br />
<br />
<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds8.egloos.com/pds/200806/05/75/e0077375_4847c3faab73a.jpg" width="500" height="355.95703125" onclick="Control.Modal.openDialog(this, event, 'http://pds8.egloos.com/pds/200806/05/75/e0077375_4847c3faab73a.jpg');" /></div></p>자막을 넣어 보겠습니다 미야가와상~<br />
<br style="font-weight: bold;"><span style="font-weight: bold;">Scene #1</span><br style="font-weight: bold;"><span style="font-weight: bold;">나레이터:</span> 드디어 점심시간, 샌드위치가 배급으로 나왔다.... 왠지 아쉬운 양~<br />
<span style="font-weight: bold;">keedi:</span> 에엑 모잘라요?<br />
<span style="font-weight: bold;">saillinux:</span> 안모자르세요?<br />
<span style="font-weight: bold;">aero:</span> 모잘라~<br />
<span style="font-weight: bold;">JEEN:</span> 덥석~<br />
<br style="font-weight: bold;"><span style="font-weight: bold;">Scene #2</span><br />
<span style="font-weight: bold;">나레이터:</span> 하루 다섯끼(五食) 달성을 위해 졸라서 라면을 먹으러 갔다~<br />
<span style="font-weight: bold;">JEEN:</span> 히익<br />
<span style="font-weight: bold;">keedi:</span> 응? 어디가세요?<br />
<span style="font-weight: bold;">aero:</span> 낙타라면 있어라!<br />
<span style="font-weight: bold;">saillinux:</span> 오오 신의 인도 하심<br />
<br style="font-weight: bold;"><span style="font-weight: bold;">Scene #3</span><br style="font-weight: bold;"><span style="font-weight: bold;">나레이터:</span> 라면을 바께스로 주시는 박애적인 사랑<br />
<span style="font-weight: bold;">가게주인:</span> 자 어서 하하하 어서<br />
<br style="font-weight: bold;"><span style="font-weight: bold;">Scene #4</span><br />
<span style="font-weight: bold;">나레이터: </span>미리 도망간 JEEN은 라면범벅이된 우리들을 데리고....<br />
k<span style="font-weight: bold;">eedi:</span> 커헉<br />
<span style="font-weight: bold;">aero:</span> 오 Dan!<br />
<span style="font-weight: bold;">saillinux:</span> 도망 쳤겠다!<br />
<span style="font-weight: bold;">JEEN:</span> Dan Kogai 싸인!<br />
<br style="font-weight: bold;"><span style="font-weight: bold;">Scene #5</span><br />
<span style="font-weight: bold;">나레이터:</span> 뻘쯤해진(긴장한) JEEN 풋...<br />
<span style="font-weight: bold;">JEEN:</span> 싸인좀~ 하악하악 (ハアハア)<br />
<span style="font-weight: bold;">saillinux:</span> 꺄~ 긴장했다!<br />
<br style="font-weight: bold;"><span style="font-weight: bold;">Scene #6</span><br />
<span style="font-weight: bold;">나레이터:</span> Dan에 이어 Track2에서 Larry의 싸인을 받을수 있었다.<br />
<span style="font-weight: bold;">Larry:</span> Huh? My Autograph?<br />
<span style="font-weight: bold;">saillinux:</span> Saint Larry, My I have your perlish sign plz?<br />
<br style="font-weight: bold;"><span style="font-weight: bold;">Scene #7</span><br />
<span style="font-weight: bold;">나레이터:</span> 정말로 Colorful한 래리의 싸인!<br />
<span style="font-weight: bold;">나레이터:</span> 뺏고 싶었던 낙타도장<br />
<span style="font-weight: bold;">aero:</span> 집에 가보로 모셔야지<br />
<span style="font-weight: bold;">saillinux:</span> 꺄~<br />
<br />
<span style="font-weight: bold;">Scene #8</span><br />
<span style="font-weight: bold;">나레이터:</span> pQuery보다 인기 있었던 vRoom vRoom!<br />
<span style="font-weight: bold;">Ingy:</span> Everyone say~ vRoom~ vRoom~<br />
<span style="font-weight: bold;">everyone:</span> "vroom vroom"x3<br />
<br style="font-weight: bold;"><span style="font-weight: bold;">Scene #9</span><br />
<span style="font-weight: bold;">나레이터:</span> Leon의 working in the cloud는 혹시 나도 사업을 할수 있다라는 자신감을 주었다!<br />
<span style="font-weight: bold;">saillinux: </span>내가 사업을?<br />
<br />
모자른점이 있으시면 <span style="font-weight: bold;">perl golf</span>로 지적 부탁드리겠습니다 그럼~ 나중에 뵈요 모두들!!<br />
			 ]]> 
		</description>

		<comments>http://saillinux.egloos.com/1761417#comments</comments>
		<pubDate>Thu, 05 Jun 2008 11:05:39 GMT</pubDate>
		<dc:creator>ataraxia</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 어떻게 하면 이게 나올수가있지? ]]> </title>
		<link>http://saillinux.egloos.com/1760693</link>
		<guid>http://saillinux.egloos.com/1760693</guid>
		<description>
			<![CDATA[ 
  과연 <a href="http://jeen.tistory.com/">JEEN</a>님 종잡을 수가 없다;;;<br />
<br style="font-weight: bold;"><span style="font-weight: bold;">&lt;JEEN&gt;</span> 느낄 수 없어~ 느끼고 싶은데~ 내 마음만 들키는 걸<br />
<span style="font-weight: bold;">&lt;JEEN&gt;</span> 내 사랑에 마법의 열쇠가 있다면~ 그건 바~로<br />
<span style="font-weight: bold;">&lt;JEEN&gt;</span> ....<br />
<span style="font-weight: bold;">&lt;saillinux&gt;</span> 푸웁<br />
<span style="font-weight: bold;">&lt;JEEN&gt;</span> 아무도 도박묵시록 사쿠라를 아니봤다는 건가요?<br />
<span style="font-weight: bold;">&lt;saillinux&gt;</span> 카이지가 아니라 사쿠라인가요;;<br />
<span style="font-weight: bold;">&lt;JEEN&gt;</span> 아, 카드캡터 사쿠라<br />
<span style="font-weight: bold;">&lt;saillinux&gt;</span> 굉장하군요 어떻게 하면 도박묵시록 사쿠라가 되죠?<br />
<span style="font-weight: bold;">&lt;JEEN&gt;</span> 카드만 쥐고 있으면 일단 도박<br />
<span style="font-weight: bold;">&lt;saillinux&gt;</span> 과연;;<br />
<br />
이게 다 JEEN님 때문...<br />
			 ]]> 
		</description>

		<comments>http://saillinux.egloos.com/1760693#comments</comments>
		<pubDate>Thu, 05 Jun 2008 05:16:19 GMT</pubDate>
		<dc:creator>ataraxia</dc:creator>
	</item>
</channel>
</rss>
