<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>괴짜 프로그래머의 일상사~</title>
	
	<link>http://jiniya.net/wp</link>
	<description>컴퓨터의 깊이를 재기 위해, 컴퓨터 속으로 들어간 개발자 이야기...</description>
	<lastBuildDate>Tue, 30 Jun 2009 19:53:14 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/codewiz" type="application/rss+xml" /><item>
		<title>일단락…</title>
		<link>http://jiniya.net/wp/?p=213</link>
		<comments>http://jiniya.net/wp/?p=213#comments</comments>
		<pubDate>Tue, 30 Jun 2009 19:53:14 +0000</pubDate>
		<dc:creator>codewiz</dc:creator>
				<category><![CDATA[양피지]]></category>

		<guid isPermaLink="false">http://jiniya.net/wp/?p=213</guid>
		<description><![CDATA[요즘 걸레같은 소스를 리팩토링 하는 작업을 하고 있습니다. 사실 걸레 수준은 아니지만 제가 봐도 왔다리 갔다리 할만큼 #if, #ifdef가 많은데다 동작이 불분명한 부분이 여기 저기 &#8230; 이게 걸레인거겠죠 ㅎㅎ~
지속적인 리팩토링으로 이 지경까지 오지 않도록 하는 것이 최선이었겠지만 어쩌다보니 여기까지 왔네요. ㅎㅎ~ 확 뜯어 고친다는 건 양날의 검과 같은 작업이지요. 겁도 났지만 시작하길 잘했다는 생각이 듭니다. [...]]]></description>
			<content:encoded><![CDATA[<p>요즘 걸레같은 소스를 리팩토링 하는 작업을 하고 있습니다. 사실 걸레 수준은 아니지만 제가 봐도 왔다리 갔다리 할만큼 #if, #ifdef가 많은데다 동작이 불분명한 부분이 여기 저기 &#8230; 이게 걸레인거겠죠 ㅎㅎ~</p>
<p>지속적인 리팩토링으로 이 지경까지 오지 않도록 하는 것이 최선이었겠지만 어쩌다보니 여기까지 왔네요. ㅎㅎ~ 확 뜯어 고친다는 건 양날의 검과 같은 작업이지요. 겁도 났지만 시작하길 잘했다는 생각이 듭니다. 일주일 넘게 작업한 것 같은데 오늘 드디어 5개 프로젝트 정도를 손봐서 하나의 모듈을 대략 끈냈습니다. 후훗. 홀가분하네용. 아직 남은 게 태산이지만 ㅋㅋㅋ~</p>
<p>택도아닌 스레드 스택에 말리는 바람에 시간이 엄청 걸렸네용.<br />
애꿏은 윈도 소스만 연나 뒤적였네요. ㅎㅎ</p>

<p><a href="http://feedads.g.doubleclick.net/~a/I7Y_J4hl0DAvdB0Kxvq5q1KuwyM/0/da"><img src="http://feedads.g.doubleclick.net/~a/I7Y_J4hl0DAvdB0Kxvq5q1KuwyM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/I7Y_J4hl0DAvdB0Kxvq5q1KuwyM/1/da"><img src="http://feedads.g.doubleclick.net/~a/I7Y_J4hl0DAvdB0Kxvq5q1KuwyM/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://jiniya.net/wp/?feed=rss2&amp;p=213</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>데이비드 커틀러를 아시나요?</title>
		<link>http://jiniya.net/wp/?p=146</link>
		<comments>http://jiniya.net/wp/?p=146#comments</comments>
		<pubDate>Mon, 29 Jun 2009 04:57:31 +0000</pubDate>
		<dc:creator>codewiz</dc:creator>
				<category><![CDATA[책갈피]]></category>
		<category><![CDATA[NT]]></category>
		<category><![CDATA[데이비드 커틀러]]></category>
		<category><![CDATA[책]]></category>

		<guid isPermaLink="false">http://jiniya.net/wp/?p=146</guid>
		<description><![CDATA[
&#8220;빌게이츠의 야망을 가진 남자들&#8221;. 책 제목만 보면 무슨 삼류 통속 소설 같은 삘이 확 느껴지는 책이죠. 원서 제목은 &#8220;Show-stopper!: Breakneck Race to Create Windows NT and the Next Generation at Microsoft&#8221;입니다. 정말 왜 저렇게 통속적으로 제목을 바꿨는지 도저히 이해할 수 없습니다. 엉뚱한 책 제목 베스트 10 정도에는 뽑힐 법한 번역서 제목이죠. 참고로 쇼스토퍼란 NT 개발팀이 NT를 [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-149" style="float: right; margin-left: 16px; margin-right: 16px;" title="bill" src="http://jiniya.net/wp/wp-content/uploads/2009/06/bill1.png" alt="bill" width="250" height="289" /></p>
<p>&#8220;빌게이츠의 야망을 가진 남자들&#8221;. 책 제목만 보면 무슨 삼류 통속 소설 같은 삘이 확 느껴지는 책이죠. 원서 제목은 &#8220;Show-stopper!: Breakneck Race to Create Windows NT and the Next Generation at Microsoft&#8221;입니다. 정말 왜 저렇게 통속적으로 제목을 바꿨는지 도저히 이해할 수 없습니다. 엉뚱한 책 제목 베스트 10 정도에는 뽑힐 법한 번역서 제목이죠. 참고로 쇼스토퍼란 NT 개발팀이 NT를 중단시킬 만큼 치명적인 버그를 지칭하는 말입니다.</p>
<p>이 책은 Windows NT의 개발 스토리를 담고 있습니다. 커틀러 팀이 마이크로소프트에 합류하게 된 부분부터 Windows NT의 초기 버전 릴리즈 까지의 내용이죠. Windows NT는 1989년 부터 본격적으로 개발이 시작되어서 1993년에 첫 릴리즈가 배포됩니다.  근 5년간 개발된 것이죠. NT는 실로 방대한 프로젝트 였습니다. 첫 릴리즈 버전의 코드가 530만 라인이 넘었으며, 참여한 개발자만 거의 300명에 육박했습니다. 좀 놀라운 프로젝트죠.</p>
<p>이 책의 스토리 중심에 데이비드 커틀러가 있습니다. 데이비드 커틀러는 NT의 아버지로 불리는 사람으로 실제로 NT의 코어 아키텍처부터 운영 체제의 여러 부분을 설계, 코딩 했습니다. 커틀러는 마이크로소프트로 오기 전 디지털에서 VMS라는 운영체제를 성공적으로 개발했던 적이 있었죠. 사실 운영체제 개발 쪽에 있어서는 전설적인 인물입니다. 상용 운영체제를 세 번 넘게 성공적으로 개발한 사람은 전 세계를 통틀어서 딱 한 명 뿐인데,  그 사람이 바로 데이비드 커틀러죠.</p>
<p>NT 프로젝트 진행 과정을 보면서 가장 놀라운 점은 저렇게 거대 괴물 같은 아웃풋이 결국은 나왔다는 점 입니다. 정말 우여곡절도 많고 사람들이 좌절하는 시간도 많았습니다. 정치적인 이슈 사항도 많았죠. 하지만 결국 운영체제는 릴리즈가 됩니다. 소프트웨어 시간에서 5년이란 시간이 길지 않은 시간이고, 운영체제란 놈은 실로 괴물같은 놈임을 가만할때 커틀러 팀은 대단하다고 밖에 말할 수 없습니다. 그렇게 많은 장애물들이 있음에도 멋진 운영체제가 나올 수 있었던 건 커틀러 자신은 정확하게 무엇을 어떻게 만들어야 할지 알고 있었기 때문이 아닐까란 생각이 들었습니다.</p>
<p>두 번째로 놀라운 점은 커틀러는 소신을 굽히지 않는 엔지니어 였다는 점 입니다. 커틀러가 설계한 초창기 NT 커널은 마이크로 커널의 특징을 많이 가지고 있었습니다. 안정성이 높은 대신 느리고 컸죠. 게이츠는 이 설계 방식에 대해서 꾸준히 의문을 제기합니다. 하지만 커틀러는 안정성이 더 중요하다는 자신의 뜻을 굽히지 않습니다. 성능은 자신의 코딩 테크닉을 통해서 극복할 수 있다고 주장했죠. 그리고 결국 설계를 크게 변경하지 않는 선에서 운영체제 개발을 끝냈습니다. 지금의 NT 커널은 하이브리드 커널로 분류됩니다. 마이크로 커널과 모놀리틱 커널의 특징을 비슷하게 가지고 있기 때문이죠. 그게 커틀러가 말한 테크닉인지도 모르겠네요.</p>
<p>89년도 NT가 개발되기 시작한 시점부터 최근 윈도우 7이 나오기 까지 근 20년 가까운 세월이 흘렀습니다. 재미있는 사실은 그 때 커틀러가 작성한 코드가 여전히 윈도우 7에 포함되어 있다는 사실입니다. 책의 주요 인물들이 작성한 코드들이 아직도 운영체제 속에 살아있는 것이죠. 이 책을 보고 그 코드들을 다시 들여다보니 그 때 그 사람들의 땀방울이 느껴지는 듯 하는군요. 엔지니어로써 이보다 더 뿌듯한 일이 있을까요? ㅎ~ 20년이란 세월을 버티는 코드를 만든다는 일&#8230; 흠~</p>

<p><a href="http://feedads.g.doubleclick.net/~a/fPdP7bHQexQY9E-SKmb0MMSSC8w/0/da"><img src="http://feedads.g.doubleclick.net/~a/fPdP7bHQexQY9E-SKmb0MMSSC8w/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/fPdP7bHQexQY9E-SKmb0MMSSC8w/1/da"><img src="http://feedads.g.doubleclick.net/~a/fPdP7bHQexQY9E-SKmb0MMSSC8w/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://jiniya.net/wp/?feed=rss2&amp;p=146</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Module32FirstA를 찾아서…</title>
		<link>http://jiniya.net/wp/?p=184</link>
		<comments>http://jiniya.net/wp/?p=184#comments</comments>
		<pubDate>Fri, 26 Jun 2009 05:54:27 +0000</pubDate>
		<dc:creator>codewiz</dc:creator>
				<category><![CDATA[코드]]></category>

		<guid isPermaLink="false">http://jiniya.net/wp/?p=184</guid>
		<description><![CDATA[Windows API는 많은 부분에서 일관성을 제공한다. 일관성이 있어야 기억하기 쉽고, 새로운 것을 배우더라도 과거 방식을 사용하면 된다는 것을 개발자들이 알 수 있기 때문이다. 어쨌든 잘 추상화가된 API 세트를 제공한다고 할 수 있다.
이러한 것 중에 하나가 유니코드 함수에 대한 지원이다. 윈도우에 포함된 거의 대부분의 함수는 유니코드 버전은 끝에 W가 붙어있고, 안시 버전은 A가 붙어있다. 글자가 붙어 [...]]]></description>
			<content:encoded><![CDATA[<p>Windows API는 많은 부분에서 일관성을 제공한다. 일관성이 있어야 기억하기 쉽고, 새로운 것을 배우더라도 과거 방식을 사용하면 된다는 것을 개발자들이 알 수 있기 때문이다. 어쨌든 잘 추상화가된 API 세트를 제공한다고 할 수 있다.</p>
<p>이러한 것 중에 하나가 유니코드 함수에 대한 지원이다. 윈도우에 포함된 거의 대부분의 함수는 유니코드 버전은 끝에 W가 붙어있고, 안시 버전은 A가 붙어있다. 글자가 붙어 있지 않은 기본 함수는 프로젝트 셋팅에 따라서 달라진다. 즉, 아래와 같이 기본적으로 API를 설계한다는 이야기다.</p>
<pre name="code" class="cpp">
void SomeGoodFunctionA(LPCSTR parameter);
void SomeGoodFunctionW(LPCWSTR parameter);

#ifdef _UNICODE
#define SomeGoodFunction SomeGoodFunctionW
#else
#define SomeGoodFunction SomeGoodFunctionA
#endif
</pre>
<p>그런데 그 많은 함수들 &#8211; API는 정말 많다 &#8212; 중에 저런 원칙을 어긴게 하나도 없을 순 없다. 그 중 대표적인 놈 하나가 툴헬프 라이브러리다. 전통적으로 NT 시스템은 psapi를 사용하고, 9x 시스템은 툴헬프를 사용한다. 이 녀석들의 역할은 프로세스 열거, 모듈 열거 따위를 하는 일이다. 여튼 툴헬프 라이브러리는 조금 엉뚱한 방식으로 포팅이 되거나 진화가 되었다.</p>
<p>9x 시스템의 툴헬프에는 Module32FirstW 함수가 없다. 좋다. 여기까진 그럴수도 있다. NT에는 Module32FirstW 함수가 있다. 그렇다면 NT에는 Module32FirstA 함수가 있을까? 없다. 9x에도 없다. Module32First란 이름의 함수는 안시를 입력받도록 설계되어 있고, Module32FirstW만 추가된 형태로 NT에 있는 것이다. 즉 다음과 같이 되었다는 이야기다.</p>
<pre name="code" class="cpp">BOOL WINAPI Module32First(HANDLE, MODULEENTRY32);
BOOL WINAPI Module32FirstW(HANDLE, MODULEENTRY32W);</pre>
<p>이해할 수 있는 부분이다. 원래 A함수가 없었고, W 함수만 NT에 추가되었다고 생각할 수 있다. 그런데 문제는 이것을 포함하고 있는 tlhelp32.h다. 이 파일은 Module32First 함수가 일반적인 함수와같이 설계가 되었다고 생각한다. tlhelp32.h에서 가장 문제가 있는 줄은 다름아닌 다음과 같은 라인이다.</p>
<pre name="code" class="cpp">#ifdef UNICODE
#define Module32First Module32FirstW
#define Module32Next Module32NextW
#define MODULEENTRY32 MODULEENTRY32W
#define PMODULEENTRY32 PMODULEENTRY32W
#define LPMODULEENTRY32 LPMODULEENTRY32W
#endif  // !UNICODE</pre>
<p>즉, 유니코드 환경에서는 Module32First를 Module32FirstW에다 맵핑을 시켜 버리는 것이다. 그렇다면 위 헤더를 추가하는 순간부터 우리는 영영 유니코드 환경에서는 Module32FirstA에 해당하는 Module32First 함수를 호출할 수 없게 된다. 즉, 툴헬프 함수는 환경에 따라서 한 가지 버전밖에 호출을 못하는 것이다. 일반적인 상황에서는 문제가 없지만 한 컴파일 단위에서 A/W 함수를 모두 호출해야 하는 상황에서는 쪼다가 된다. 그런 상황이라면 아래와 같이 tlhelp32.h를 포함한 다음 정의를 전부 해제해 주면 된다.</p>
<pre name="code" class="cpp">#include &lt;tlhelp32.h&gt;

#undef Module32First
#undef Module32Next
#undef MODULEENTRY32
#undef PMODULEENTRY32
#undef LPMODULEENTRY32</pre>
<p>A/W에 대한 약간의 편집증이 있는 개발자라면 아래와 같은 방법을 추가할 수도 있다.</p>
<pre name="code" class="cpp">#define Module32FirstA Module32First
#define Module32NextA Module32Next
#define MODULEENTRY32A MODULEENTRY32
#define PMODULEENTRY32A PMODULEENTRY32
#define LPMODULEENTRY32A LPMODULEENTRY32</pre>

<p><a href="http://feedads.g.doubleclick.net/~a/4-_VWwtAVbb-lmLxROBOHhyVics/0/da"><img src="http://feedads.g.doubleclick.net/~a/4-_VWwtAVbb-lmLxROBOHhyVics/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/4-_VWwtAVbb-lmLxROBOHhyVics/1/da"><img src="http://feedads.g.doubleclick.net/~a/4-_VWwtAVbb-lmLxROBOHhyVics/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://jiniya.net/wp/?feed=rss2&amp;p=184</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>배러리가 포함된 파이썬</title>
		<link>http://jiniya.net/wp/?p=168</link>
		<comments>http://jiniya.net/wp/?p=168#comments</comments>
		<pubDate>Tue, 23 Jun 2009 19:25:30 +0000</pubDate>
		<dc:creator>codewiz</dc:creator>
				<category><![CDATA[나머지]]></category>

		<guid isPermaLink="false">http://jiniya.net/wp/?p=168</guid>
		<description><![CDATA[파이썬을 배운지는 제법 된 것 같네요.  그럼에도 불구하고 잊을만 하면 한 번씩 쓰다보니 매번 문법을 찾기 위해서 튜토리얼을 보고 프로그램을 작성하곤 합니다. 이렇게 자주 사용하지 않는 언어인데도 쓸 때 마다 느낍니다. 이런 걸 다른 개발자가 알면 큰 일 나겠군아. 경쟁사 개발자가 이 언어를 몰랐으면 좋겠는걸&#8230; &#8230;
많은 C 개발자들은 이렇게 생각합니다. &#8220;흠, 파이썬으로 할 수 있는걸 난 C로도 [...]]]></description>
			<content:encoded><![CDATA[<p>파이썬을 배운지는 제법 된 것 같네요.  그럼에도 불구하고 잊을만 하면 한 번씩 쓰다보니 매번 문법을 찾기 위해서 튜토리얼을 보고 프로그램을 작성하곤 합니다. 이렇게 자주 사용하지 않는 언어인데도 쓸 때 마다 느낍니다. 이런 걸 다른 개발자가 알면 큰 일 나겠군아. 경쟁사 개발자가 이 언어를 몰랐으면 좋겠는걸&#8230; &#8230;</p>
<p>많은 C 개발자들은 이렇게 생각합니다. &#8220;흠, 파이썬으로 할 수 있는걸 난 C로도 다 할 수 있는 걸. 그것도 충분히 빠르게.&#8221; 하지만 그 사람은 아직 모르고 있는 거죠. 얼마나 더 빨리 만들 수 있는지를 말입니다. 경험해 보기 전에는 더 빠른 세상이 있는지를 모르는 것과 같겠죠.</p>
<p>파이썬 공부하지 마세요&#8230; ㅎㅎ~</p>
<p>P.S) TAOCP를 질렀습니다. 예전에 영문판보고 좌절했던 기억이 있는데 겁없이 또 한글판 질렀습니다. 같이 공부하실 분 안계신가요? 저 책은 정말 혼자서는&#8230; 좌절이더군요. Windows Internals와 더불어 베개로 전락하는 삼대 명서 중 하나인 것 같습니다. 카누쓰 교수님의 정기를 좀 받을 수 있을런지&#8230; ㅋㅋ~</p>

<p><a href="http://feedads.g.doubleclick.net/~a/NG02hzU4z9yKWP4OiYcbakEgHqk/0/da"><img src="http://feedads.g.doubleclick.net/~a/NG02hzU4z9yKWP4OiYcbakEgHqk/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/NG02hzU4z9yKWP4OiYcbakEgHqk/1/da"><img src="http://feedads.g.doubleclick.net/~a/NG02hzU4z9yKWP4OiYcbakEgHqk/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://jiniya.net/wp/?feed=rss2&amp;p=168</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>드리밍 인 코드</title>
		<link>http://jiniya.net/wp/?p=106</link>
		<comments>http://jiniya.net/wp/?p=106#comments</comments>
		<pubDate>Mon, 15 Jun 2009 02:48:49 +0000</pubDate>
		<dc:creator>codewiz</dc:creator>
				<category><![CDATA[책갈피]]></category>
		<category><![CDATA[책]]></category>

		<guid isPermaLink="false">http://jiniya.net/wp/?p=106</guid>
		<description><![CDATA[


요 근래에 회사에서 프로젝트 관련 서적을 몇 권 샀습니다. 그 동안 주먹구구 식으로 해오던 것을 좀 더 체계적으로 해보고 싶기도 하고, 좀 더 재미있고 효율적으로 해보고 싶기도 한 욕심에 몇 권 주문을 했습니다. 이 책은 그 중에 하나였습니다. 사실 주문할 때에는 그렇게 큰 기대는 하지 않고 샀습니다. 그런데 책장을 펼치고 몇 페이지를 읽는 순간 완전 [...]]]></description>
			<content:encoded><![CDATA[<div class="ttbReview"><a href="http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN=8960770701&amp;ttbkey=ttbcodewiz0258001&amp;COPYPaper=1"></a></div>
<div class="ttbReview">
<div><a href="http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN=8960770701&amp;ttbkey=ttbcodewiz0258001&amp;COPYPaper=1"><img style="float: right; margin-left: 10px; margin-right: 10px; border-width: 0px;" src="http://image.aladdin.co.kr/cover/cover/8960770701_2.jpg" alt="" /></a></div>
<p>요 근래에 회사에서 프로젝트 관련 서적을 몇 권 샀습니다. 그 동안 주먹구구 식으로 해오던 것을 좀 더 체계적으로 해보고 싶기도 하고, 좀 더 재미있고 효율적으로 해보고 싶기도 한 욕심에 몇 권 주문을 했습니다. 이 책은 그 중에 하나였습니다. 사실 주문할 때에는 그렇게 큰 기대는 하지 않고 샀습니다. 그런데 책장을 펼치고 몇 페이지를 읽는 순간 완전 월척을 낚은 느낌이더군요.</p>
<p>이렇게 감동의 도가니탕으로 몰아넣는 책을 얼마만에 읽었는지 기억도 나질 않습니다. 물론 요즘은 사실 책도 별로 읽지도 못했지만 어쨌든 근래에 읽은 컴퓨터 관련 책 중에는 단연 으뜸입니다. 저자의 글빨이 얼마나 좋은지 그닥 재밌을 법한 주제가 아님에도 페이지를 넘기면서 심심한줄 모르고 읽었습니다. 글쓴이가 개발자인줄 알았는데 역시나 아니더군요. ㅋㅋ~</p>
<p>주된 내용은 챈들러라는 프로젝트의 진행 과정을 외부인(이 책의 저자)이 밀착 취재해서 적은 내용입니다. 프로젝트가 어떻게 산으로 갈 수 있는가? 사람들은 어떤 곳에서 문제를 겪는가? 소프트웨어 개발 프로젝트는 어떤 요소 때문에 실패하는가? 등등의 내용을 담고 있습니다. 다큐같은 내용 중간 중간에 소프트웨어 공학에 관해서 몰랐던 역사적인 내용도 감초처럼 섞여 나와서 좋았습니다.</p>
<p>책에도 나오지만 프로그래머 내지는 소프트웨어 개발자를 교육할 때 그 역사에 대해서 공부하지 않는다는 사실에 새삼 놀랐습니다. 생각해 보면 어떠한 분야도 다들 자신의 분야의 역사는 배우기 마련인데, 제가 나온 대학교의 특징인지는 몰라도 소프트웨어의 역사 요론 주제로 수업을 하는 것을 본 적은 없었거든요. 다른 학교도 비슷한 것 같구요. 아마 이런 강좌가 개설된다면 아주 재밌을 법 한데 말이죠.</p>
<blockquote><p>리스프와 객체지향 전문가이자 썬 사의 &#8220;뛰어난 공학자&#8221;인 리처드 가브리엘은 주장한다. &#8220;저는 프로그래머들도 시인, 예술가처럼 창의적인 활동을 하는 사람들을 양성하는 방식으로 양성해야 한다고 생각합니다. 사람들은 이게 엉뚱한 소리라고 말할지도 모릅니다. 하지만 시문학 석사학위를 받으려고 교육받을 때 사람들은 무엇을 하나요? 그들은 위대한 시들을 공부합니다. 소프트웨어 공학에서 그렇게 하나요? 아니요, 우리는 위대한 소프트웨어의 소스코드를 읽지 않습니다. 위대한 소프트웨어의 설계를 공부하지도 않죠. 그 디자인을 보지도 않고요. 위대한 소프트웨어 디자이너들의 인생을 공부 하지도 않습니다. 즉 우리는 우리가 만들려는 것의 기존 문헌들을 공부하지 않습니다.&#8221;</p>
<p>- 드리밍 인 코드 中</p></blockquote>
<p>저명한 커누스 교수님 또한 소프트웨어 개발이 어렵다고 하니 정말 쉬운 일은 아닌 것 같긴 하죠. 이 전 내용에 나오는 빌 조이는 책 쓰는 일이 더 어렵다고 이야기 했는데요. 두 분야(책쓰기, 소프트웨어 개발하기)를 모두 깊이 있게 경험해보신 커누스 교수님 말에 좀 더 무게를 실어 주는게 당연하겠죠. 하지만 주관적으론 빌 조이의 말에 공감이 가긴 합니다. 저 또한 코딩보다 글쓰기가 훨씬 더 어렵게 느껴지거든요. 아마 대부분의 개발자가 그런 생각을 가지고 있을 것 같습니다. 그래서 문서화가 그리도 안되는 거겠죠.</p>
<blockquote><p>제가 컴퓨터 조판 시스템 문제를 해결하기 위해서 수년의 시간을 쏟아부으면서 배운 것이 무엇이냐고요? 가장 중요한 교훈 중 하나는 아마도 &#8220;소프트웨어 개발은 어렵다&#8221;는 것입니다. 지금부터 저는 제가 만나게 되는 모든 성공적인 소프트웨어 도구들에 대해 훨씬 더 깊은 존경심을 갖게 될 것 같습니다. 지난 10년간 저는 텍과 메타폰트 개발이 제가 평생 해온 그 어떤 일(정리를 증명하는 일이나 책을 쓰는 일) 보다도 어려운 일이었다는 사실에 놀랐습니다. 좋은 소프트웨어를 만든다는 것은 다른 일ㅇ 비해 현저하게 높은 수준의 정확성을 요합니다. 그리고 다른 지적인 활동에 비해 더 오랜 시간의 집중을 요합니다.</p>
<p>- 커누스(Knuth) 교수의 말, 드리밍 인 코드 中</p></blockquote>
<p>아래 내용을 읽다보면 소프트웨어 개발이란 작업을 교량을 건설하는 것처럼 한다는 것 자체가 어불성설인지도 모른다는 생각이 듭니다. 전 레오나르도가 관리자도 승격됐다는 부분에서 눈시울을 적셨습니다. 주위에도 이런 사례는 정말 많죠. </p>
<blockquote><p>그들은 예술가들이 예술 작풍을 만드는 작업에 도움이 되도록 몇 가지 효율적인 도구를 마련해 주기로 결정했다. 그들은 전동 조각칼, 자동으로 물감 짜내는 기계 등을 발명했다&#8230; 결과는 여전히 만족스러운 수준에 이르지 못했다&#8230; 협회는 2주 동안 특정 그룹의 화가들이 하루에 평균 몇 번의 붓질을 하는지를 세어봤고, 이러한 기준을 나머지 화가들의 가치를 평가하는 데 적용 했다. 만약 어떤 화가가 하루에 20번 미만의 붓질을 했다면 그는 명백히 생산성이 낮은 화가였다. 안타깝게도 이러한 지식의 진전은 실제로 예술 작품을 제작하는 일에 별 영향을 미치지 못하는 듯 보였다. 마침내 그들은 근본적 어려움이 관리에 있다고 결론 내렸다. 재능있는 학생 중 한 명(레오나르도 다빈치란 이름의)이 곧바로 물감, 캔버스, 붓 등을 조직에 조달하는 일을 책임지는 관리자로 승격됐다.</p>
<p>- &#8216;예술 작품 공학&#8217;, 드리밍 인 코드 中</p></blockquote>
<p>대부분의 소규모 벤처 회사들은 소프트웨어 개발 일정이 지연되는 이유를 빡빡한 일정, 부족한 자금, 부족한 인력에서 찾곤 합니다. 이 책에 등장하는 챈들러 팀은 사실 그 중 하나도 해당되지 않았죠. 일정도 널널했고 (물론 느끼기 나름인지도 모르겠습니다), 자금도 풍부했고, 인력 또한 충분했습니다. 하지만 그들의 계획보다도 소프트웨어는 더 느리게 릴리즈 되었죠. 반대의 경우도 물론 있습니다. 지금은 성공했지만, 초창기 차고에서 시작한 회사들 중에는 그 모든 힘든 상황에도 불구하고 믿기 힘들만큼 좋은 제품을 빠른 시간안에 릴리즈 했던 경우가 더러 있었으니까요.</p>
<p>어쨌든, 여러가지 의견이 분분한 아직은 걸음마 단계의 소프트웨어 분야이지만 한 가지는 확실합니다. 소프트웨어를 만드는 것이 생각하는 것처럼 쉽지 않다는 것 아닐까요?</p>
<p><strong><span style="background-color: #f9c6fa;">P.S) 혹시 이런 비슷한 성격의 책 (소프트웨어 개발 프로젝트 이야기)을 좀 더 알고 계신 분은 제보 해 주세요.  의외로 이런 책을 찾으려고 하는데 눈에 띄지 않더군요.</span></strong> </p>
<p> </p></div>

<p><a href="http://feedads.g.doubleclick.net/~a/FW-GLNTM58fUtpleGnAzbEF04kU/0/da"><img src="http://feedads.g.doubleclick.net/~a/FW-GLNTM58fUtpleGnAzbEF04kU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/FW-GLNTM58fUtpleGnAzbEF04kU/1/da"><img src="http://feedads.g.doubleclick.net/~a/FW-GLNTM58fUtpleGnAzbEF04kU/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://jiniya.net/wp/?feed=rss2&amp;p=106</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>원고 신드롬…</title>
		<link>http://jiniya.net/wp/?p=65</link>
		<comments>http://jiniya.net/wp/?p=65#comments</comments>
		<pubDate>Sun, 14 Jun 2009 03:50:35 +0000</pubDate>
		<dc:creator>codewiz</dc:creator>
				<category><![CDATA[양피지]]></category>

		<guid isPermaLink="false">http://jiniya.net/wp/?p=65</guid>
		<description><![CDATA[이상하게 요즘은 항상 원고를 쓸 기간이 되면 뭔가 일이 터진다.
지난 달에는 부산에 치과 치료를 받으로 휴가를 얻어 가던 기간이 마침 원고 마감일이랑 겹쳐서 노트북을 들고 갔었다. 그런데 회사에서 작업하던 다 써둔 원고 초안을 서울에 두고 가는 바람에 상당 부분을 집에서 새로 써야 했다. 혹자는 자기가 썼던걸 다시 쓰는게 뭐가 그리 어렵냐고 반문하지만 썼던 걸 다시 [...]]]></description>
			<content:encoded><![CDATA[<p>이상하게 요즘은 항상 원고를 쓸 기간이 되면 뭔가 일이 터진다.</p>
<p>지난 달에는 부산에 치과 치료를 받으로 휴가를 얻어 가던 기간이 마침 원고 마감일이랑 겹쳐서 노트북을 들고 갔었다. 그런데 회사에서 작업하던 다 써둔 원고 초안을 서울에 두고 가는 바람에 상당 부분을 집에서 새로 써야 했다. 혹자는 자기가 썼던걸 다시 쓰는게 뭐가 그리 어렵냐고 반문하지만 썼던 걸 다시 쓰는 것 만큼 짜증나는 일도 없다. 어쨌든 결국 원고는 마감 날짜에 다 못썼고, 서울에 와서야 완성을 하게 되었다. 기자님께 죄송하다는 말과 함께 메일을 보냈다. 내가 보내는 원고 메일엔 항상 죄송이라는 단어가 포함된다. 마감을 제대로 지켜서 내본게 언젠지 참&#8230; ㅎㅎㅎ~</p>
<p>지난 달에 난 미리 원고를 써 두리라 다짐했다. 하지만 방학 숙제 마냥 그게 잘 지켜질리는 만무하다. 계획성 없는 나는 어렸을 때에도 항상 방학 숙제를 하나도 하지 않아서 마지막 주말에 엄마한테 오지게 혼나곤 했다. 하지만 오지게 혼나고 나면 늘 마법같은 방학 숙제는 등교날 나의 손에 쥐어져 있었다. 누나들이 겪었을 고통이란 ㅎㅎ~ 어쨌든 하야토에게 주어진 마지막 코너처럼, 나에겐 늘 마지막 주말이 주어진다. 이번 주말이 그런 주말이다.</p>
<p>당연히 이 글의 존재가 의미하듯 이번 주말도 그냥 넘어가는 법은 없다. 고등학교 친구 녀석이 집엘 놀러온 것이다. 생전 서울이라곤 안오던 놈인데, 몇 일 전 아는 사람을 만난다고 약속이 있다고 해서 온다고 전화가 왔다. 친한 녀석이라 거절하기도 뭣해서 그러라고 했다. 사실 약속 당일날 올라오기가 뭣해서 전날 우리집에서 하루 정도 숙식하는 거라 생각했다. 안본지 오래지 않았지만 어쨌든 한달만에 보는 친구 얼굴은 반가웠다. 거기까진 좋았다. 그런데 문제는 그 다음이다. 그 녀석의 약속 이야기를 곰곰 듣다보니 이건 뭐 정해진 것도 아니고, 만날 수도 있고 안만날 수도 있는 아주 애매모호한 형태의 약속인 것이었다. 사실 내가 봤을때는 저런 걸로 서울까지 왜 왔지, 라는 생각이 드는 정도였다. 어쨌든 난 졸지에 그 놈의 주말을 책임져야 하는 입장이 되었다.</p>
<p>난 그냥 조용이 앉아서 음악이나 들으며 원고 쓰고 싶을 뿐이고, 친구 온다는 거 안말렸을 뿐이고, 친구 약속 없어졌을 뿐이고, 엄마 보고 싶고, &#8230;</p>
<p>나의 어정쩡한 우유부단함에 키스를&#8230;<br />
이 느낌은 머지? ㅎㅎ~</p>

<p><a href="http://feedads.g.doubleclick.net/~a/BTmdIS5zJU3YIjIii-9T_udwrZs/0/da"><img src="http://feedads.g.doubleclick.net/~a/BTmdIS5zJU3YIjIii-9T_udwrZs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/BTmdIS5zJU3YIjIii-9T_udwrZs/1/da"><img src="http://feedads.g.doubleclick.net/~a/BTmdIS5zJU3YIjIii-9T_udwrZs/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://jiniya.net/wp/?feed=rss2&amp;p=65</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>출발…</title>
		<link>http://jiniya.net/wp/?p=34</link>
		<comments>http://jiniya.net/wp/?p=34#comments</comments>
		<pubDate>Fri, 12 Jun 2009 18:22:14 +0000</pubDate>
		<dc:creator>codewiz</dc:creator>
				<category><![CDATA[양피지]]></category>
		<category><![CDATA[일상]]></category>

		<guid isPermaLink="false">http://jiniya.net/wp/?p=34</guid>
		<description><![CDATA[
10일이 생일이었습니다. 9일날 저녁에 케잌에 불을 밝히면서 다음 날 블로그에 올려야지 하는 생각으로 사진을 한 컷 찍었습니다. 그런데 다음 날도, 그 다음 날도, 그 다음 다음 날도 못 올리고, 이제서야 올리네요. 요즘 참 여유가 없는 것 같습니다. 출근하면 할 일이 왤케 많은지. 메신저, 메일에 치여서 정리를 좀 했다 싶으면 하루가 다 가 버리네요. 그래도 재미는 [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter size-full wp-image-5" title="292" src="http://jiniya.net/wp/wp-content/uploads/2009/06/292.jpg" alt="292" width="500" height="339" /></p>
<p>10일이 생일이었습니다. 9일날 저녁에 케잌에 불을 밝히면서 다음 날 블로그에 올려야지 하는 생각으로 사진을 한 컷 찍었습니다. 그런데 다음 날도, 그 다음 날도, 그 다음 다음 날도 못 올리고, 이제서야 올리네요. 요즘 참 여유가 없는 것 같습니다. 출근하면 할 일이 왤케 많은지. 메신저, 메일에 치여서 정리를 좀 했다 싶으면 하루가 다 가 버리네요. 그래도 재미는 있습니다. 만들고 있는 제품이 조금은 괜찮아진다는 느낌이 들기 때문이겠죠. ㅋ~</p>
<p>누구 이야기처럼 블로그가 너무 업데이트가 되지 않았네요. 회사 업무외에도 신경 쓸 일들이 많아서 사실 블로깅을 많이 하지 못했습니다. 많진 않지만 RSS 구독 하시는 분들께 정말 죄송스럽군요. ㅎㅎ~  앞으로는 좀 더 자주 업데이트 하도록 하겠습니다.</p>
<p>어제 집에 컴퓨터를 Internet Explorer 8로 업그레이드를 하고 글을 쓰려는데 태터 툴즈 동작이 이상하더군요. 이제는 더는 아니다, 라는 생각으로 미련없이 새로운 툴로 갈아 탔습니다. 기존 자료 링크를 위해서 블로그를 폐쇄 하지는 않았습니다. 기존 블로그 자료를 보고 싶으신 분들은 <a href="http://www.jiniya.net/tt">http://www.jiniya.net/tt</a>로 접속하시면 됩니다. 워드프레스를 처음 설치해 봤는데 적응하는데 힘드네요. 아직도 어떤 기능이 어디에 숨어 있는지 모르겠습니다. 차츰 나아지겠죠. ㅎㅎ~</p>
<p>얼마 전에 회사 자리를 새롭게 옮겼습니다. 비오는 날 집도 대 청소를 했었습니다. 블로그도 새롭게 정리 했으니 이젠 열심히 달리는 일만 남았네요. 새로운 출발을 한다는 것. 출발선에 서 있다는 건 항상 설레는 일인 것 같습니다. 뭔가 가능성이 있는 것 같으니깐요. 기분 탓이겠죠. ㅋㅋ~</p>

<p><a href="http://feedads.g.doubleclick.net/~a/EBAwfVtMUgLvJRSgRb2xc3gij5E/0/da"><img src="http://feedads.g.doubleclick.net/~a/EBAwfVtMUgLvJRSgRb2xc3gij5E/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/EBAwfVtMUgLvJRSgRb2xc3gij5E/1/da"><img src="http://feedads.g.doubleclick.net/~a/EBAwfVtMUgLvJRSgRb2xc3gij5E/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://jiniya.net/wp/?feed=rss2&amp;p=34</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>버그 사냥꾼을 위한 일 원짜리 팁</title>
		<link>http://jiniya.net/wp/?p=8</link>
		<comments>http://jiniya.net/wp/?p=8#comments</comments>
		<pubDate>Fri, 12 Jun 2009 16:17:02 +0000</pubDate>
		<dc:creator>codewiz</dc:creator>
				<category><![CDATA[코드]]></category>
		<category><![CDATA[디버깅]]></category>
		<category><![CDATA[마이크로소프트웨어]]></category>

		<guid isPermaLink="false">http://jiniya.net/wp/?p=8</guid>
		<description><![CDATA[신입 개발자를 위한 조언
버그 사냥꾼을 위한 일 원짜리 팁
신영진 http://www.jiniya.net codewiz@gmail.com
최근에 드라이버 프로그램 하나를 릴리즈할 일이 있었다. 계획에도 없던 것이라 성급한 일정, 준비되지 않은 계획, 거침없는 코딩, 끝없는 밤샘 작업을 통해서 결국 드라이버는 릴리즈 되었다. 결과는? 당연히 엄청난 양의 BSOD와 문제점들로 나타났다. 이러한 디버깅 경험이 늘어나면서 몇 가지 사소한 생각들이 디버깅 시간을 지나치게 지연시킨다는 사실을 [...]]]></description>
			<content:encoded><![CDATA[<p>신입 개발자를 위한 조언<br />
버그 사냥꾼을 위한 일 원짜리 팁<br />
신영진 <a href="http://www.jiniya.net/">http://www.jiniya.net</a> <a href="mailto:codewiz@gmail.com">codewiz@gmail.com</a></p>
<p>최근에 드라이버 프로그램 하나를 릴리즈할 일이 있었다. 계획에도 없던 것이라 성급한 일정, 준비되지 않은 계획, 거침없는 코딩, 끝없는 밤샘 작업을 통해서 결국 드라이버는 릴리즈 되었다. 결과는? 당연히 엄청난 양의 BSOD와 문제점들로 나타났다. 이러한 디버깅 경험이 늘어나면서 몇 가지 사소한 생각들이 디버깅 시간을 지나치게 지연시킨다는 사실을 발견했다. 물론 좋은 책들에서 이미 모두 다 언급해버린 것들이지만 아직도 그 부분을 미처 읽지 못했던 분들을 위해서 반성문 같은 글을 적어보려 한다.</p>
<p><strong>#0: 코드에 대한 지나친 신뢰는 금물이다.</strong><br />
우리를 방해하는 가장 큰 산은 지나친 신뢰다. 특히나 코드에 대한 지나친 신뢰는 버그 소탕과는 영영 멀어지게 하는 지름길이다. 개발자들이 흔히 하는 말이 있다. 원래 잘 동작하는 코든데요. 하지만 원래라는 말은 따져 본들 의미도 없을뿐더러 그 말이 사실이라면 그 코드는 지금부터 제대로 동작하지 않는 코드라고 생각하는 것이 정신 건강에 좋다. </p>
<p>CPU 점유율과 관련된 이슈 사항이 보고 되었다. 일부 PC에서 CPU 점유율이 과도하게 높다는 것이었다. 일부 PC를 가질 수 없는 우리 입장에서는 당연히 왜 그런 일들이 발생했는지를 생각하고, 코드를 검토해보는 일이 최선이다. 이 과정에서 나는 이전 드라이버에서부터 잘 사용해왔던 IRQL Hack 관련 코드는 검토 대상에서 제외했다. 물론 의도적으로 제외한 것은 아니었지만 이건 아니겠지 하는 심정으로 코드를 검토한 것이었다. 지난 드라이버에서도 잘 사용했던 코드였고, 그 드라이버를 통해서는 그런 보고를 받은 적이 한 번도 없었기 때문이었다. 하지만 결과적으로 버그의 원인은 IRQL Hack 코드에 있었다. 지난 번 드라이버와의 차이점은 그 코드를 호출하는 시점에 있었다. </p>
<p><strong>#1: 성급한 단정은 절대 피하자.<br />
</strong>단정은 금물이다. 생각은 물과 같아서 한번 길을 터주면 그 곳으로만 흐르려는 습성이 있다. 따라서 절대로 마음속으로라도 단정은 하지 않는 것이 좋다. 항상 모든 가능성을 열어두라는 의미다. </p>
<p>특정 PC에서 특정 보안 제품을 설치하자 드라이버가 로딩이 되지 않는 문제가 발생했다. 정상적인 두뇌를 가진 인간이라면 디버깅 버전의 드라이버를 넣어보거나 해서 무엇이 문제인지를 찾는 작업에서 시작을 할 것이다. 하지만 이전에 해당 보안 제품을 테스트 하던 과정 중에 특정 바이너리 시그니처만 포함시키면 드라이버 로딩을 펜딩 시키는 현상을 경험했던 나는 해당 보안 제품이 우리 쪽 드라이버 로딩을 차단했다고 생각을 해버렸다. 이렇게 단정이 지어지고 나니 계속 그 보안 제품에 대한 코드만 검토하게 되었다. 해당 보안제품의 훅 코드에서부터 드라이버 코드까지 말이다.</p>
<p>몇 시간을 뒤졌지만 이상한 점을 찾지 못했다. 당연했다. 문제는 우리 쪽 코드에 있었기 때문이다. 원인은 커널에서 사용하는 시스템 콜백 루틴에 있었다. 그 루틴은 보통 8개까지 등록을 할 수 있도록 제한되어 있다. 문제가 발생한 PC에는 과도하게 많은 보안 제품이 설치되어 있어서 그 특정 보안 제품이 설치되면서 8개를 모두 사용했던 것이다. 그것을 지우면 7개가 되면서 우리가 등록할 수 있는 상황이었던 것이었다. 정상적인 디버깅 루트를 따랐더라면 30초면 해결할 수 있는 문제를 성급한 단정으로 인해서 5시간이 넘도록 고생했던 것이다. 물론 그 디버깅 시간이 죄다 의미 없지는 않았지만 말이다.</p>
<p><strong>#2: 경계를 넘는 순간 믿을 수 있는 정보는 하나도 없다.</strong><br />
윈도우 개발자라면 누구나 MSDN은 틀리지 않았다는 사실을 믿고 싶어한다. 하지만 그 방대한 MSDN도 틀린 곳이 없을 수는 없으며, MSDN의 예제 코드 중에도 문제를 일으킬만한 소지를 담고 있는 것도 있다. 특히나 이런 것들은 알려지지 않은 테크닉을 사용한 코드와 결부될 때 더 두드러지게 나타난다.</p>
<p>특정 상황에서 KeSetEvent의 호출로 BSOD가 발생하는 현상이 나타났다. DDK 문서에 따르면 KeSetEvent는 IRQL에 상관없이 사용할 수 있다고 언급되어 있다. 또한 그렇게 사용하기 위한 모든 조건을 해당 코드는 충족 시키고 있었다. 하지만 특정 부분에서 호출하는 KeSetEvent는 100% BSOD를 발생시켰다. 결국 원인은 해당 함수의 호출 지점에 있었다. KeSetEvent를 호출하면 내부적으로 커널 디스패처 락이라는 것을 획득하려는 시도를 한다. 그런데 우리가 호출한 KiSwapProcess라는 후킹 함수에서는 이 락이 이미 획득된 상태였던 것이다. 이 상태에서 KeSetEvent를 호출하면 그 락을 다시 획득하려는 시도를 하게 된다. 그러면서 시스템은 안드로메다로 가버린 것이다. 커널 디스패처 락은 외부로 노출된 객체가 아니기 때문에 일반적인 상황에서는 해당 락을 획득한 상태에서 작업할 일이 없다. 하지만 시스템 내부 함수를 후킹하면서 그런 가정이 깨져버린 것이다.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/1pgL-AhlSBzSS1uDKELnQ7CvK10/0/da"><img src="http://feedads.g.doubleclick.net/~a/1pgL-AhlSBzSS1uDKELnQ7CvK10/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/1pgL-AhlSBzSS1uDKELnQ7CvK10/1/da"><img src="http://feedads.g.doubleclick.net/~a/1pgL-AhlSBzSS1uDKELnQ7CvK10/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://jiniya.net/wp/?feed=rss2&amp;p=8</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
