<?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/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>rein's world</title>
	
	<link>http://rein.kr/blog</link>
	<description>프로그래머, 독서가, 게이머 그리고 블로거</description>
	<lastBuildDate>Thu, 19 Jan 2012 01:13:50 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4-alpha-19800</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/reinblog" /><feedburner:info uri="reinblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-sa/3.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><feedburner:emailServiceId>reinblog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>회사에서 사용하는 모니터 구성 변경</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/A-K1dZi-7P4/2856</link>
		<comments>http://rein.kr/blog/archives/2856#comments</comments>
		<pubDate>Wed, 18 Jan 2012 12:32:48 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[일상]]></category>
		<category><![CDATA[회사]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=2856</guid>
		<description><![CDATA[오늘 오후까지는 회사에서 삼성 모니터 3대 (TN 23&#34;, 2048 by 1152 두 대; TN 17&#34;, 1280 by 1024 한 대) 구성으로 사용하고 있었다. 개발 머신에서 17&#34; + 23&#34;을 쓰고, 인터넷 연결된 머신에서 23&#34;를 한 대 쓰는 구성으로 했다. 사실 이런 구성이 된 건 예전에 Dell UltraSharp U2407 을 얻어서 사용했는데, 이게 맛이 가면서 삼성 SyncMaster [...]


]]></description>
			<content:encoded><![CDATA[<p>오늘 오후까지는 회사에서 삼성 모니터 3대 (TN 23&quot;, 2048 by 1152 두 대; TN 17&quot;, 1280 by 1024 한 대) 구성으로 사용하고 있었다. 개발 머신에서 17&quot; + 23&quot;을 쓰고, 인터넷 연결된 머신에서 23&quot;를 한 대 쓰는 구성으로 했다.</p>
<p>사실 이런 구성이 된 건 예전에 Dell UltraSharp U2407 을 얻어서 사용했는데, 이게 맛이 가면서 삼성 SyncMaster 2343BWX (TN 패널) 을 받게 되어서 임. 이거 하나랑 17” 두 개 쓰다가 17” 하나를 동일한 23”로 바꿔서 현재까지의 상태가 된 것. </p>
<p>프로그래머는 막눈이라고 – 적어도 일단 나는 – 그냥 저냥 쓸만한 모니터 같긴 한데, 이젠 눈이 나빠서인지 삼성 2343BWX가지곤 오래 집중하기가 힘들더라. 그런 의미에서 삼성 SyncMaster 2343 BWX 의 가장 큰(?) 단점: 도트 피치가 작다 – 사람에 따라선 선호할 수도 있음; 여기서는 VS 2010 전체 화면 모드로, 2048 by 1152 해상도에서 16pt 폰트를 쓰면 한 화면에 두 개의 에디터 창(80 column)을 볼 수 있음. 하지만 도트 피치 문제로 10pt~14pt 정도에선 집중하기 힘들더라; 두통이 찾아오는 지라(…).</p>
<p>게다가 해상도 가지고 계산해 보면 알겠지만 16:9 비율이다. 이것도 취향문제일진 모르겠지만, 에디터에서 위 아래 길이가 짧은 건 꽤나 불편하다. 그렇다고 이 크기의 모니터를 회전 시켜서 쓰는 것도 좀;;; (TN 패널 자른 방향 때문인지 세로로 쓰면 색 왜곡도 심하다)</p>
<p>그래서 새해 지름으로 – 그러니까 내 돈으로 – Dell UltraSharp U2412M (이하 U2412M)두 대를 질렀다. 이걸로 17&quot; 한 대와 23&quot; 한 대를 대체했음. 개발 머신 용 설정으로 이 두 대를 수평으로 이어서 쓰게 되었다. 대략 다음과 같은 구성:</p>
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="dell-dual" border="0" alt="dell-dual" src="http://rein.kr/blog/wp-content/uploads/2012/01/dell-dual.jpg" width="640" height="366" /></p>
<p>해상도는 1920 by 1200으로 줄어들었지만, 폰트 크기는 15pt로 줄여서, 수직으로 더 많은 내용을 볼 수 있는 건 내 취향임. 폰트 크기를 줄여도 실제 글자 크기는 거의 동일하다. (도트 피치 0.249 vs. 0.270) 비슷한 이유로, 수평 해상도는 살짝 줄어들었지만 폰트 크기 역시 줄어서 수평 공간도 80 column 기준으로 오히려 약간 남게 바뀐다.<sup>[<a href="http://rein.kr/blog/archives/2856#footnote_0_2856" id="identifier_0_2856" class="footnote-link footnote-identifier-link" title="오른쪽 모니터에 떠 있는 에디터의 색상 테마는 solarized임. 흰색이 아니다">1</a>]</sup> </p>
<p><em>게다가 이 모니터는 의자 위치에 따라 색이 바뀌진 않아…</em></p>
<p>그래서 Samsung SyncMaster 2343 BWX 랑 Dell U2412M을 비교한다면 난 전적으로 후자의 손을 들어주겠음 – 적어도 내가 프로그래머인 한은 말이다… 어떤 의미로 비교대상은 고가 모델인 Dell U2410 쪽인데, 집에서 쓰는 이 모델이랑 비교하자면 이렇다:</p>
<ul>
<li>입력 단자 수가 적다. DVI도 하나 뿐이고, VGA, DP 로 끝. </li>
<li>SD 카드 리더도 없고… </li>
<li>설정 버튼도 훨씬 촌스럽고(…) 불편하다. </li>
<li>색 재현 율이 다르다고 하지만 이건 내 능력 밖의 얘기라 (먼산) </li>
<li>더 가볍다 (포장 기준으로 거의 3Kg 차이) </li>
</ul>
<p>집에서 쓴다면 XBox360도 연결하고 쓴다거나 하고, 편의 기능 (DVI가 2개라거나; SD 카드 읽기라거나) 도 있어서 굳이 U2412M을 사진 않겠지만, 두 대 사서 구성할 생각이면 U2412M도 훌륭하다고 생각한다. (일단 가격이 절반임; 양쪽 다 IPS 패널임에도…)    <br />물론 금전적인 여유가 있다면 U2410 두 대 구성도 가능하지만, 그 돈이면 그냥 U3011 사세요 (…). 얘는 HDMI도 2개임…</p>
<p>&#160;</p>
<p>PS. 델 4:3 모니터인 UltraSharp 2007FP는 왜 이렇게 비싼가요? 36만이라니 이거면 U2412M 사고도 돈이 남는다고…</p>
<ol class="footnotes"><li id="footnote_0_2856" class="footnote">오른쪽 모니터에 떠 있는 에디터의 색상 테마는 solarized임. 흰색이 아니다</li></ol>

<p></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=A-K1dZi-7P4:yh50a71BH28:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=A-K1dZi-7P4:yh50a71BH28:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=A-K1dZi-7P4:yh50a71BH28:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=A-K1dZi-7P4:yh50a71BH28:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/reinblog?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reinblog/~4/A-K1dZi-7P4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/2856/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/2856</feedburner:origLink></item>
		<item>
		<title>절전 정책인지 뭔지</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/tzbmaqP7p_k/2852</link>
		<comments>http://rein.kr/blog/archives/2852#comments</comments>
		<pubDate>Fri, 06 Jan 2012 13:55:41 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[악령이 출몰하는 세상]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=2852</guid>
		<description><![CDATA[최근 회사에서 아주 죽을 맛이다. 정부의 절전시책인가 뭔가로 회사에서 냉방기 &#8212; 난방기 아님 &#8211; 사용을 금지하고, 공조 시설 가동을 최소화 한단다.그 결과가 뭐냐하면, 이 한겨울-_-에 28도까지 올라가서 일하기 괴로운 사무실. 심심하신 분은 고성능 CPU/GPU의 면적당 발생하는 열량을 계산해보시기 바람. 항성 표면(&#8230;)에 준하는 수준임&#8230;이런걸 2~3개씩 달고 있는 PC를, 사람마다 k개 (2~5?), 그리고 팀 별로 공용 장비로 들고있는 [...]


]]></description>
			<content:encoded><![CDATA[<p>최근 회사에서 아주 죽을 맛이다.</p>
<p>정부의 절전시책인가 뭔가로 회사에서 냉방기 &#8212; <em>난방기 아님</em> &#8211; 사용을 금지하고, 공조 시설 가동을 최소화 한단다.<br />그 결과가 뭐냐하면, 이 한겨울-_-에 28도까지 올라가서 일하기 괴로운 사무실.</p>
<p>심심하신 분은 고성능 CPU/GPU의 면적당 발생하는 열량을 계산해보시기 바람. 항성 표면(&#8230;)에 준하는 수준임&#8230;<br />이런걸 2~3개씩 달고 있는 PC를, 사람마다 k개 (2~5?), 그리고 팀 별로 공용 장비로 들고있는 것 까지 생각하면 발생하는 열은 좀 삭막한 수준; </p>
<p>이 정부가 친환경 성장 정책에 전혀 관심이 없다고 느껴지는게,</p>
<ul>
<li>전기가 모자란 것 일단 사실이 아닌 것 같고 &#8212; 발전소 가동률을 볼 때</li>
<li>산업용 전기료를 인상할 생각은 없는듯 함; 가정용 수준으로 올리거나, 가정용처럼 누진제를 적용해야 함</li>
<li>상대적으로 온실 가스 방출량이 적은 기업에도 전기 사용량 제한</li>
</ul>
<p>정도?</p>
<p>재작년엔가 여름에 27도 제한했을 때도 미치는 줄 알았는데, 겨울에도 이런 꼴을 보게 해주다니 아주 짜증나 죽겠다.<br /> </p>
<p>그래서 오늘은 창문을 열어놔 봤다. 대략 25도?까지 떨어지긴 하던데,</p>
<ul>
<li>테헤란 로를 달리는 차들의 경적 + 기타 소음</li>
<li>매연</li>
<li>가끔 찬 바람이 직접 닿기</li>
</ul>
<p>&#8230;를 경험하고 나니 Orz.</p>
<p>정말 꿈도 희망도 없어&#8230;</p>


<p></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=tzbmaqP7p_k:lOOFToDzYiE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=tzbmaqP7p_k:lOOFToDzYiE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=tzbmaqP7p_k:lOOFToDzYiE:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=tzbmaqP7p_k:lOOFToDzYiE:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/reinblog?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reinblog/~4/tzbmaqP7p_k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/2852/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/2852</feedburner:origLink></item>
		<item>
		<title>위키백과의 BMP페이지에서…</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/uZfhlova29k/2850</link>
		<comments>http://rein.kr/blog/archives/2850#comments</comments>
		<pubDate>Sat, 31 Dec 2011 23:10:15 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[다국어]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=2850</guid>
		<description><![CDATA[Basic Multilingual Plane 페이지를 보다가 나온 대목: Sometimes, the terms “astral plane” and “astral characters” are used informally to refer to the planes above the Basic Multilingual Plane (planes 1–16) and their characters. (강조는 내가 넣은 것) 아스트랄 플레인이라니!! 사실 슬레이어즈는 유니코드 문자셋의 앞쪽 코드 포인트들이 뒷쪽 코드 포인트(아스트랄 플레인)를 사용한 암투인 것. 관련 글:패킷 [...]


관련 글:<ol><li><a href='http://rein.kr/blog/archives/1924' rel='bookmark' title='패킷 직렬화 / 핸들링 라이브러리'>패킷 직렬화 / 핸들링 라이브러리</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Basic_Multilingual_Plane">Basic Multilingual Plane</a> 페이지를 보다가 나온 대목:</p>
<blockquote><p>Sometimes, the terms <strong>“astral plane”</strong> and “astral characters” are used informally to refer to the planes above the Basic Multilingual Plane (planes 1–16) and their characters.</p></blockquote>
<p>(강조는 내가 넣은 것)</p>
<p>아스트랄 플레인이라니!! <del>사실 슬레이어즈는 유니코드 문자셋의 앞쪽 코드 포인트들이 뒷쪽 코드 포인트(아스트랄 플레인)를 사용한 암투인 것. </del></p>


<p>관련 글:<ol><li><a href='http://rein.kr/blog/archives/1924' rel='bookmark' title='패킷 직렬화 / 핸들링 라이브러리'>패킷 직렬화 / 핸들링 라이브러리</a></li>
</ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=uZfhlova29k:_G4UPL00ECM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=uZfhlova29k:_G4UPL00ECM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=uZfhlova29k:_G4UPL00ECM:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=uZfhlova29k:_G4UPL00ECM:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/reinblog?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reinblog/~4/uZfhlova29k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/2850/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/2850</feedburner:origLink></item>
		<item>
		<title>2011, 내 프로그래밍 언어는…</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/_XfHfrqIbz4/2843</link>
		<comments>http://rein.kr/blog/archives/2843#comments</comments>
		<pubDate>Sat, 31 Dec 2011 11:35:13 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=2843</guid>
		<description><![CDATA[twitter에 #code2011 에 덧붙여 글 하나 쓰기. 2011년에 주로 사용한 언어는, C++ Python C# JavaScript SQL Lua Go 순으로 쓴 것 같다. (트윗에는 Lua를 못 적었음&#8230;) C++ 우선 주 언어로 쓴 C++. 내년에 공개될 모 서버를 작성했다. 사내 테스트까지 나간 것 중 C++11을 사용한 것으론 처음일듯.그리고 옮겨간 팀의 서버 역시 C++로 작성하고 있다. 크래시 보고 [...]


관련 글:<ol><li><a href='http://rein.kr/blog/archives/2741' rel='bookmark' title='이번 주 팀 세미나: NDC 2011 마영전 서버 세션 정리'>이번 주 팀 세미나: NDC 2011 마영전 서버 세션 정리</a></li>
<li><a href='http://rein.kr/blog/archives/2594' rel='bookmark' title='C# 잡상: 2011-03-04'>C# 잡상: 2011-03-04</a></li>
<li><a href='http://rein.kr/blog/archives/2585' rel='bookmark' title='C#이 예전 기억만큼 편하지 않다'>C#이 예전 기억만큼 편하지 않다</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>twitter에 #code2011 에 덧붙여 글 하나 쓰기. 2011년에 주로 사용한 언어는,</p>
<ul>
<li>C++</li>
<li>Python</li>
<li>C#</li>
<li>JavaScript</li>
<li>SQL</li>
<li>Lua</li>
<li>Go</li>
</ul>
<div>순으로 쓴 것 같다. (트윗에는 Lua를 못 적었음&#8230;)</div>
<h2>C++</h2>
<p>우선 주 언어로 쓴 C++. 내년에 공개될 모 서버를 작성했다. 사내 테스트까지 나간 것 중 C++11을 사용한 것으론 처음일듯.<br />그리고 옮겨간 팀의 서버 역시 C++로 작성하고 있다. 크래시 보고 도구도 밑 단은 C++&#8230;</p>
<p>내가 주목한 특징을 꼽자면,</p>
<ul>
<li>바위에 끌로 새기는 것 같이 작업함 &#8211; 집중해서 빡쎄게;</li>
<li>lambda로 이전에 boost 쓰는 걸 대체 &#8211; C++11 만세!(&#8230;)</li>
<li>괜찮은 성능 &#8211; 내가 사용하는 모든 언어 중 가장 월등한 성능을 자랑한다</li>
<li>Bare metal 위에서 돈다 (위랑 같은 의미?)</li>
<li>원하는 수준만큼 저 수준에서, 원하는 만큼 세밀하게 제어할 수 있다</li>
</ul>
<div>그래서 이걸로 여전히 게임 서버를 짜고 있는듯&#8230;</div>
<div> </div>
<h2>Python</h2>
<p>팀 내의 코드 생성기나 대부분의 스크립트는 python으로 작성한다. 올해에는 대략,</p>
<ul>
<li>데이터 변환 도구; .xls -&gt; sqlite -&gt; (C++ internal form) 으로 몇 가지 데이터를 옮겼는데, 이 중 첫 단계는 모두 python에서 해결</li>
<li>크래시 덤프 분석 및 집계 기능. 크래시 덤프를  cdb 수준에서 분석하면 이를 토대로 다른 덤프들과 비교하고, 이에 대해서 웹에서 볼 수 있게 했다</li>
<li>덤프 수집 (web)</li>
<li>크래시 덤프 뷰어 (web)</li>
<li>빌드 도구나 덤프 관련 툴에서 메일 생성 / 알림 기능</li>
</ul>
<p>에서 python을 주로 썼다. 물론 예전부터 쓰던 코드 생성기, 빌드 보조 도구에도 python을 쓰고 있다.</p>
<p>&#8230;덧붙이자면 요즘 .svg를 python으로 만드는 뻘짓을 했다. 근데 생각해보니 python-cairo를 쓰는 게 더 간단하잖아?;;;</p>
<p>&nbsp;</p>
<h2>C#</h2>
<p>연초에 파일 전송 도구를 하나 짜야 했다. 원래 생각했던 건 python 기반으로 빨리 짜고 딴거 하고 놀자(&#8230;)였는데, </p>
<blockquote><p>이거 누가 유지 보수 하냐</p>
</blockquote>
<p>라는 태클에 물건너 갔음. 흑흑.</p>
<p>그래서 실 서비스에서 써본적(&#8230;)도 없는 C#으로 짰음. 사실 태클건 사람들은 태클 걸면 C++로 짤 거라고 생각했다고&#8230;<br />애매하게 편하고, 애매한 수준까지만 제어할 수 있어서 개인적으로 불만이 좀 많았음. 내가 python을 안 쓴다면 모를까 Orz. </p>
<p>누가 비슷한거 시키면 그땐 정말 python 쓸 테다&#8230; 일단 저거 linux에서 옮겨서 쓸 생각을 하니 눈 앞이 캄캄하기도 하고 &#8212; 누가 Mono 관련 조언 좀&#8230;</p>
<p>&nbsp;</p>
<h2>JavaScript</h2>
<p>까놓고 말하면 js에는 완전 초보임. 그래서 python쪽에서 js를 쓰긴 했는데, 크롬에서만 돌길래(&#8230;) 포기하고 jQuery로 전부 옮겼다. JavaScript를 썼다기 보단 jQuery를 쓴 느낌이지만 (&#8230;).</p>
<p>CouchDB에서 map-reduce 용 언어로 js를 쓰긴하지만, 이건 그렇게까지 복잡하게 활용한게 없으니 좀 애매하다. 따지고 보면 올해는 js보다 json을 더 많이 본 것도 같다(운다).</p>
<p>올해 얻은 건 jQuery를 좀 더 익숙하게 쓰게 되었다 정도?</p>
<p>&nbsp;</p>
<h2>SQL</h2>
<p>ORM하나 제대로 쓰고 싶었습니다만 꿈도 희망도 없어; 그냥 python위에서 클래스 수준으로 포장해서 하단의 데이터 스토어로만 쓴 듯.<br />위안이라면 MySQL / CouchDB를 선택해서 쓸 수 있게 만들었다 정도지만; </p>
<h2>Lua</h2>
<p>팀 내에서 사용하는 서버 용 부하 테스트 툴은 (NDC에서 ipkn이 발표한 내용은 <a href="http://ipkn.upnl.org/ndc.html">http://ipkn.upnl.org/ndc.html</a> 을 참조) lua를 스크립트 언어로 쓴다.<br />그런 의미에서랑, 몇 가지 도구에서 lua를 썼다. 이쪽에선 내가 발전이 전혀 없는듯&#8230; </p>
<h2>Go</h2>
<p>연초에는 좀 만졌지만 &#8212; 위에서 C#/Python으로 헀던 일 중 일부는 원래 Go로 하려던 건데 &#8212; 그 이후엔 망했음.<br />과연 내년에는 나의 야망(&#8230;)대로 Go로 돌아가는 서비스를 만들 수 있을까;</p>
<p>일단 올해에는 회사 안에서 / 실제 서비스에서 linux 기반으로 해도 된다는 건 확인했으니, 내년을 기약합시다(&#8230;). </p>
<p>&nbsp;</p>
<p><strong>요약:</strong></p>
<ul>
<li>C++/python을 여전히 많이 쓰고 있다.</li>
<li>C#은 안 편했음; 내년에는 아마 다른 선택을 할 듯.</li>
<li>웹 질(&#8230;)로 JavaScript/SQL을 좀 만졌다. 내년엔 기약 없음&#8230;</li>
<li>Go. linux 기반 서비스를 좀 더 해도 될 것 같으니 내년을 기약 </li>
</ul>


<p>관련 글:<ol><li><a href='http://rein.kr/blog/archives/2741' rel='bookmark' title='이번 주 팀 세미나: NDC 2011 마영전 서버 세션 정리'>이번 주 팀 세미나: NDC 2011 마영전 서버 세션 정리</a></li>
<li><a href='http://rein.kr/blog/archives/2594' rel='bookmark' title='C# 잡상: 2011-03-04'>C# 잡상: 2011-03-04</a></li>
<li><a href='http://rein.kr/blog/archives/2585' rel='bookmark' title='C#이 예전 기억만큼 편하지 않다'>C#이 예전 기억만큼 편하지 않다</a></li>
</ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=_XfHfrqIbz4:ENtEsg2GbFY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=_XfHfrqIbz4:ENtEsg2GbFY:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=_XfHfrqIbz4:ENtEsg2GbFY:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=_XfHfrqIbz4:ENtEsg2GbFY:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/reinblog?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reinblog/~4/_XfHfrqIbz4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/2843/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/2843</feedburner:origLink></item>
		<item>
		<title>디스크 공간이 부족하다</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/cQlzvbhUuvQ/2839</link>
		<comments>http://rein.kr/blog/archives/2839#comments</comments>
		<pubDate>Mon, 26 Dec 2011 14:33:18 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[회사]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=2839</guid>
		<description><![CDATA[작년 가을에, Google BreakPad를 써서 크래시 덤프를 보낼 수 있겠다고 썼다. 여하튼 이걸 위해 간단한 웹 서비스를 만들었었다. 팀 내에서 이걸 쓰다가 좀 확장해서 (…) 같은 스튜디오 내의 다른 팀에도 약간 적용했음. 대략 매일 매일 얼마나 많은 덤프가 나오는지, 가장 많이 발생한 원인 (WinDbg의 버킷 비슷한 것) 은 뭔지, 같은 원인으로 죽은 덤프는 어떤지, 각각의 [...]


관련 글:<ol><li><a href='http://rein.kr/blog/programming/egloos-google-chrome-ext' rel='bookmark' title='Egloos 이오공감/밸리에서 특정 블로그 무시하는 플러그인'>Egloos 이오공감/밸리에서 특정 블로그 무시하는 플러그인</a></li>
<li><a href='http://rein.kr/blog/archives/1746' rel='bookmark' title='리뷰: 셜록 홈즈 미공개 사건집'>리뷰: 셜록 홈즈 미공개 사건집</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>작년 가을에, Google BreakPad를 써서 크래시 덤프를 보낼 수 있겠다고 썼다. 여하튼 이걸 위해 간단한 웹 서비스를 만들었었다. 팀 내에서 이걸 쓰다가 좀 확장해서 (…) 같은 스튜디오 내의 다른 팀에도 약간 적용했음. 대략</p>
<ul>
<li>매일 매일 얼마나 많은 덤프가 나오는지,</li>
<li>가장 많이 발생한 원인 (WinDbg의 버킷 비슷한 것) 은 뭔지,</li>
<li>같은 원인으로 죽은 덤프는 어떤지,</li>
<li>각각의 덤프 별 콜 스택 플랫폼 정보 (OS 버전, 각 모듈 별 버전) 는 어떤지</li>
</ul>
<p>가 나오는 페이지를 만들었다.<sup>[<a href="http://rein.kr/blog/archives/2839#footnote_0_2839" id="identifier_0_2839" class="footnote-link footnote-identifier-link" title="실제 페이지 구현은 회사에서 만든 부분이라 여기서 공개하는 건 무리">1</a>]</sup> 아니 근데 생각지도 못했던 문제를 만났다;</p>
<p>여름에 서버를 설치한 후, 총 3개 팀이 사용하게 했고, 이에 따라 차근차근 크래시 덤프가 쌓여간다. 최근 덤프가 좀 무섭게 쌓여서 (…) 디스크 사용량을 추적해봤더니 대략 이런 결과가; (8월 중순 쯤 서버를 리셋했고, 그 이후의 디스크 사용량)</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="cr3" src="http://rein.kr/blog/wp-content/uploads/2011/12/cr3.jpg" alt="cr3" width="637" height="343" border="0" /></p>
<p>팀 + 1개 팀 상태에서는 참 완만하게 올라갔는데 (…), 좀 덩치 큰 다른 팀까지 적용했더니 순식간에 하드디스크가 차고 있다; 게다가 기울기가 더 올라가서, 현재 Doomsday는 다음 달 중순까지 당겨진 상태 Orz. 개발 중인 프로그램에 적용한 것이고, 개발 팀만 접근 가능한 위치라 전체 메모리 덤프를 받게 했더니 정말 저장 공간을 왕창 잡아 먹더라; 이건 내 예상 실패라고 밖엔;</p>
<p>HDD 가격 올랐다고 구매 신청해도 안 사줄 기세던데 이를 어찌 해결하는가; 일단 같은 콜 스택 + 같은 모듈 (이름; 버전; 체크 섬) 인 것들 지워서 지난 주 후반에 40 GiB 쯤 확보했는데, 그럼에도 불구하고 (…) 이미 216 GiB 쯤 쓴 상태. 사진은 2주 전 상태임.</p>
<p>&nbsp;</p>
<p>저 서버를 설정할 때만 해도, 연말까지 300 GiB 정도는 넉넉하리라 생각했다<sup>[<a href="http://rein.kr/blog/archives/2839#footnote_1_2839" id="identifier_1_2839" class="footnote-link footnote-identifier-link" title="즉, 한 달에 50 GiB 이상은 안 나오겠지 정도로&hellip;">2</a>]</sup> 하다못해 HDD 하나 추가하는 건 별 큰 일 아니라고 생각했다. 하지만 태국 홍수 덕에 구매 팀에서 HDD 가격 비싸다고 장비도 안 사주는 마당이니, 망한 상황인 듯. 아마 1월부턴 90일 정도만 남기고 – 어차피 개발 중인 프로그램들 용으로 덤프 받는 서버라 버전 정보가 휙휙 올라가는지라; – 다 지워버리던가 해야.</p>
<p>사실 내가 궁금한 건 이거다; <strong>과거의 덤프가 남아있다면 뭐가 좋을까?</strong> 그냥 간단한 텍스트 정보 – 크래시 한 상황에 대한 OS 정보, 콜 스택 정도가 있다면 충분할까? 아니면 전체 메모리 덤프가 다 있다면 오~래 가는 버그를 좀 더 쉽게 잡을 수 있을까?</p>
<p><em>원래 목적이던 &#8220;자주 발생하는 버그를 빨리 잡자&#8221;</em>는 어느 정도 되어가는 것 같은데 – 일주일쯤 피크 치는 버그는 대충 잘 잡히는 듯? – <strong>오래된 버그를 잡는데 도움이 되려면 어느 정도 범위를 가지고 있어야 할지</strong>;;;</p>
<p>PS. iPhone 4 렌즈 수차 정말 망이네; 화면 위 아래 수평선의 기울기를 비교해보면 Orz (…).</p>
<ol class="footnotes"><li id="footnote_0_2839" class="footnote">실제 페이지 구현은 <em>회사에서 만든 부분이라</em> 여기서 공개하는 건 무리</li><li id="footnote_1_2839" class="footnote">즉, 한 달에 50 GiB 이상은 안 나오겠지 정도로…</li></ol>

<p>관련 글:<ol><li><a href='http://rein.kr/blog/programming/egloos-google-chrome-ext' rel='bookmark' title='Egloos 이오공감/밸리에서 특정 블로그 무시하는 플러그인'>Egloos 이오공감/밸리에서 특정 블로그 무시하는 플러그인</a></li>
<li><a href='http://rein.kr/blog/archives/1746' rel='bookmark' title='리뷰: 셜록 홈즈 미공개 사건집'>리뷰: 셜록 홈즈 미공개 사건집</a></li>
</ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=cQlzvbhUuvQ:FP38z-e4Hm0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=cQlzvbhUuvQ:FP38z-e4Hm0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=cQlzvbhUuvQ:FP38z-e4Hm0:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=cQlzvbhUuvQ:FP38z-e4Hm0:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/reinblog?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reinblog/~4/cQlzvbhUuvQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/2839/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/2839</feedburner:origLink></item>
		<item>
		<title>Windows 서비스를 시작하지 못하는 문제 디버깅</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/BZT4plcJATc/2835</link>
		<comments>http://rein.kr/blog/archives/2835#comments</comments>
		<pubDate>Wed, 14 Dec 2011 12:54:17 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=2835</guid>
		<description><![CDATA[연초에 .NET 4.0으로 작성한 Windows 서비스가 하나 있다. 이걸 개발 팀 – 운영 팀 사이에서 쓰고 있는데, 지난 주 목요일에 이게 동작하지 않는다고 연락이 왔다. 그에 해당하는 시점이 &#34;시스템 업데이트를 위해 머신 재 시작 후&#34;라서 그게 문젤까 의심했는데, 문제가 생기도록 변경된 부분이 딱 하나였다. 운영 팀에서 &#34;서비스와 데스크톱 상호 작용 허용&#34; (allow service to interact [...]


관련 글:<ol><li><a href='http://rein.kr/blog/archives/2467' rel='bookmark' title='TLS, DLL, 그리고 Legacy Windows'>TLS, DLL, 그리고 Legacy Windows</a></li>
<li><a href='http://rein.kr/blog/archives/2444' rel='bookmark' title='Python으로 Windows Service 제작해보기'>Python으로 Windows Service 제작해보기</a></li>
<li><a href='http://rein.kr/blog/archives/1952' rel='bookmark' title='On Windows 7'>On Windows 7</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>연초에 .NET 4.0으로 작성한 Windows 서비스가 하나 있다. 이걸 개발 팀 – 운영 팀 사이에서 쓰고 있는데, 지난 주 목요일에 이게 동작하지 않는다고 연락이 왔다. 그에 해당하는 시점이 &quot;시스템 업데이트를 위해 머신 재 시작 후&quot;라서 그게 문젤까 의심했는데, 문제가 생기도록 변경된 부분이 딱 하나였다. </p>
<p>운영 팀에서 &quot;서비스와 데스크톱 상호 작용 허용&quot; (allow service to interact with desktop) 설정을 켰음 – 이유는 모르겠지만, 대부분의 개발팀이 이 설정을 요구한다고; 계정은 로컬 시스템 계정 (local administrator) 였고; 여하튼 이 설정이 켜져서 문제가 된 부분은 대략 이렇다:</p>
<ul>
<li>개발 편의성을 도모하고자, 1개의 바이너리가 서비스 혹은 콘솔 창 모드로 동작함</li>
<li>이 두 가지를 Environment.UserInteractive 값을 가지고 구분했다</li>
<li>&quot;서비스와 데스크톱 상호 작용 허용&quot;이 체크되어 있으면, <strong><em>Environment.UserInteractive가 true로 설정된다</em></strong></li>
<li>…그리고 내가 작성한 서비스는 콘솔 창을 띄웠다 (…)</li>
</ul>
<p>Orz.</p>
<p>부연하자면, 서비스는 세션 0에서 실행되기 때문에<sup>[<a href="http://rein.kr/blog/archives/2835#footnote_0_2835" id="identifier_0_2835" class="footnote-link footnote-identifier-link" title="Session 0 isolation 참고">1</a>]</sup> 사용자가 터미널 접속한 경우, &quot;이런 이런 서비스에서 창을 띄우려고 합니다&quot;란 메시지를 받게 된다. 그리고 그런 유저가 없으니 – <em>서비스는 보통 sc </em><a href="file://\\host-name"><em>\\host-name</em></a><em> start blah-blah-service 명령이나 관제 툴로 띄운다 – </em>서비스는 더 진행하지 못하고 사망. 일정 시간 안에 서비스를 시작하지 못하면 서비스 매니저는 그 서비스를 죽여버린다(…).</p>
<p>결과:</p>
<ul>
<li>일단 그 날 저 체크 박스 꺼버리는 걸로 문제 해결.</li>
<li>Environment.UserInteractive 말고도 SessionID를 확인하도록 코드 추가. (세션 0이면 서비스로 뜨게)</li>
</ul>
<p>.NET을 잘 모르고 써서 생긴 문제긴 한데, 내가 운영 매뉴얼?을 좀 만들었으면 괜찮았을지도 모르겠다. 으으.</p>
<ol class="footnotes"><li id="footnote_0_2835" class="footnote"><a href="http://msdn.microsoft.com/en-us/library/bb756986.aspx" rel="nofollow">Session 0 isolation</a> 참고</li></ol>

<p>관련 글:<ol><li><a href='http://rein.kr/blog/archives/2467' rel='bookmark' title='TLS, DLL, 그리고 Legacy Windows'>TLS, DLL, 그리고 Legacy Windows</a></li>
<li><a href='http://rein.kr/blog/archives/2444' rel='bookmark' title='Python으로 Windows Service 제작해보기'>Python으로 Windows Service 제작해보기</a></li>
<li><a href='http://rein.kr/blog/archives/1952' rel='bookmark' title='On Windows 7'>On Windows 7</a></li>
</ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=BZT4plcJATc:7-gDizMoMjI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=BZT4plcJATc:7-gDizMoMjI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=BZT4plcJATc:7-gDizMoMjI:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=BZT4plcJATc:7-gDizMoMjI:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/reinblog?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reinblog/~4/BZT4plcJATc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/2835/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/2835</feedburner:origLink></item>
		<item>
		<title>Python Jinja2</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/E-moPHS4g-o/2830</link>
		<comments>http://rein.kr/blog/archives/2830#comments</comments>
		<pubDate>Mon, 05 Dec 2011 14:44:41 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[회사]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=2830</guid>
		<description><![CDATA[한 동안 포스팅을 못했다. 그간 있었던 일을 요약하자면, 팀이 바뀌었다 모 게임의 서버를 새로 짜는 작업을 하고 있다 회사에서도 linux 서버를 만지기 시작 첫 번째 일과 두 번째는 사실 한 몸이고; 나머지에 대해서 기록; 저 linux 서버 위에 예전에 짰던 크래시 덤프 수집하는 녀석을 올렸다. Windows + IIS + MSSQL Server + WSGI&#160; (isapi 사용) [...]


관련 글:<ol><li><a href='http://rein.kr/blog/archives/2449' rel='bookmark' title='URI 삽질'>URI 삽질</a></li>
<li><a href='http://rein.kr/blog/archives/2294' rel='bookmark' title='Google Go on Android/nacl?'>Google Go on Android/nacl?</a></li>
<li><a href='http://rein.kr/blog/archives/2104' rel='bookmark' title='Adobe FlashSocketPolicyDaemon (python) 코드의 버그'>Adobe FlashSocketPolicyDaemon (python) 코드의 버그</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>한 동안 포스팅을 못했다. 그간 있었던 일을 요약하자면,</p>
<ul>
<li>팀이 바뀌었다 </li>
<li>모 게임의 서버를 새로 짜는 작업을 하고 있다 </li>
<li>회사에서도 linux 서버를 만지기 시작 </li>
</ul>
<p>첫 번째 일과 두 번째는 사실 한 몸이고; 나머지에 대해서 기록;</p>
<p>저 linux 서버 위에 예전에 짰던 크래시 덤프 수집하는 녀석을 올렸다. Windows + IIS + MSSQL Server + WSGI&#160; (isapi 사용) application 이던 걸 linux + apache2 + MySQL (or CouchDB) + WSGI (mod_wsgi) 로 옮겼다. 실제 서버는 아마 nginx proxying + gunicorn 같은 애를 쓰게 되지 않을까 싶지만;</p>
<p>저기로 옮기면서 페이지도 페이스 리프팅. 원래 좀 중구난방이던 크래시 덤프 보기 페이지에 시간 대 별 보기라거나, 카테고리 기능이라거나, failure bucket id (windbg 얘기) 로 분류하기 등등을 넣었다. 덕분에 거의 0이던 jquery 프로그래밍 경험치가 충전된 듯 (…).    <br />아무래도 이건 혼자 쓸 것만 만들다가 Firefox / Chrome이 아닌 웹 브라우저에서도 동작하게 해서 그런 거지만;</p>
<p>내가 처음 짠 코드의 문제가 CherryPy 에서 html 코드를 직접 토해낸다는 점. 간단한 건 그냥 문자열 혹은 문자열의 list로, 좀 복잡하면 문자열 yield return으로 때웠는데, 코드가 좀 길어지니까 감당이 안되더라. 일단 이걸 내가 계속 진행할 수 있는 처지가 아니라서 – 요약 1 참조 – 다른 프로그래머에게 넘겨주게 생겼는데 얘기하다 나온 게</p>
<ul>
<li>유지 보수가 가능한가? Python을 중점적으로 쓰는 나와 ipkn 말고 유지가 가능한가? </li>
<li>굳이 linux 서버를 쓸 이유가? </li>
</ul>
<p>이 두 가지. 그래서 목표가 &quot;다른 프로그래머가 적응하는 시간을 줄이자&quot;, &quot;문서를 최소한만 쓰자&quot;로&#160; 데, 이건 대략 만족한 듯. 만약 이걸 asp.net 으로 옮긴다고 해도 로직 / 화면 두 가지만 분해되어 있으면 어떻게 될 거라고 믿기로 하고 (하략). 매우 저 수준으로(…) html을 직접 토해내던 WSGI application을 좀 분해하기로 했다. ipkn의 조언에 따라 – 그리고 손에 든 것만으로 문제를 푸는 나의 나쁜 습관을 가까스로 극복하고 – 템플릿 언어를 하나 골라서 써 보기로 했다. 그래서 flask 쓸 때 잠시 봤던 신사 (jinja2; <a href="http://jinja.pocoo.org/"><u><font color="#0066cc">http://jinja.pocoo.org/</font></u></a> )를 써봤다.. </p>
<p>홈페이지의 첫 예제를 여기 가져와보자면,</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:2EC9848E-067D-4e79-BAB7-06CA927DB962:30c286b5-7c2d-41c9-83c6-c1423ba09acf" class="wlWriterEditableSmartContent">
<div style="font-family:consolas,lucida console,courier,monospace">
<span style="color:#BC7A00">{%</span>&#160;<span style="color:#008000"><b>extends</b></span>&#160;<span style="color:#BA2121">&#8220;layout.html&#8221;</span>&#160;<span style="color:#BC7A00">%}</span><br />
<span style="color:#BC7A00">{%</span>&#160;<span style="color:#008000"><b>block</b></span>&#160;<span style="color:#19177C">body</span>&#160;<span style="color:#BC7A00">%}</span><br />
&#160;&#160;<span style="color:#008000"><b>&lt;ul&gt;</b></span><br />
&#160;&#160;<span style="color:#BC7A00">{%</span>&#160;<span style="color:#008000"><b>for</b></span>&#160;<span style="color:#19177C">user</span>&#160;<span style="color:#008000"><b>in</b></span>&#160;<span style="color:#19177C">users</span>&#160;<span style="color:#BC7A00">%}</span><br />
&#160;&#160;&#160;&#160;<span style="color:#008000"><b>&lt;li&gt;&lt;a</b></span>&#160;<span style="color:#7D9029">href=</span><span style="color:#BA2121">&#8220;</span><span style="color:#BC7A00">{{</span>&#160;<span style="color:#19177C">user.url</span>&#160;<span style="color:#BC7A00">}}</span><span style="color:#BA2121">&#8220;</span><span style="color:#008000"><b>&gt;</b></span><span style="color:#BC7A00">{{</span>&#160;<span style="color:#19177C">user.username</span>&#160;<span style="color:#BC7A00">}}</span><span style="color:#008000"><b>&lt;/a&gt;&lt;/li&gt;</b></span><br />
&#160;&#160;<span style="color:#BC7A00">{%</span>&#160;<span style="color:#008000"><b>endfor</b></span>&#160;<span style="color:#BC7A00">%}</span><br />
&#160;&#160;<span style="color:#008000"><b>&lt;/ul&gt;</b></span><br />
<span style="color:#BC7A00">{%</span>&#160;<span style="color:#008000"><b>endblock</b></span>&#160;<span style="color:#BC7A00">%}</span>
</div>
</div>
<p>&#160;</p>
<p>정도인데; layout.html의 내용을 상속하고, (아마도 이중 일부인) body 블록을 override하는 예제. {{ }} 안의 내용은 print, {% %} 안은 제어문이 들어간다. 대략 있을 건 다 있음. 제대로 만든 PHP 같다고 누가 얘기했는데 누구였는지 까먹었다. 참고로 저 for 문 마지막에 : 찍어도 된다 (…). 레이아웃 코드에 제어문이 있는 걸 싫어하는 사람도 있지만 난 PHP도 싫어하지 않는 성향이라; 이 정도면 오히려 적절한 조합이 아닌가 싶다.</p>
<p>html 템플릿 파일 쪽만 봐도 내용을 어느 정도 알 수 있고, 중복 제거도 쉽고, python 쪽에서 미리 데이터를 구워(?)두기도 편한 편. 극단적으로 말하면 2000년 즈음의 VBA의 생산성을 다른 형태로 살렸다고도 할 수 있다.<sup>[<a href="http://rein.kr/blog/archives/2830#footnote_0_2830" id="identifier_0_2830" class="footnote-link footnote-identifier-link" title="DB &ndash;&amp;gt; UI 로 넘기는 형태의 프로그래밍에서 작업할게 거의 없다">1</a>]</sup> </p>
<p>경험담:</p>
<ul>
<li>python 코드 크기 절반으로. 기능도 추가했는데! (…) </li>
<li>Jinja의 템플릿 언어가 python과 비슷하다. 적응하는데 5분이면 충분함. </li>
<li>페이지 레이아웃을 python 함수로 표현하는 건 무모했다. 적당한 hook을 만들기가 영; Jinja2의 템플릿 페이지 상속 기능으로 다 대체하는 편이 편했음. </li>
<li>vim 용 문법 강조 파일도 제공함. </li>
<li>JSON 응답도 템플릿 처리가 가능; 텍스트 형태의 응답이면 대부분 쉽게 될듯함. </li>
</ul>
<p>라서 매우 편하게 작업했다. 팀 동료 몇 명에게 보여줬는데, 반응도 나쁘지 않았음.    <br />내가 전에 작업했던 얘길 했더니 팀 동료 한 명은 이렇게 표현했음:</p>
<blockquote><p>&quot;이 생퀴 python으로 CGI 프로그래밍하지 마라&quot;</p>
</blockquote>
<p>Orz. 하..하지만 나 C로 CGI짜본 남잔데! (어이)</p>
<p>요약(?)</p>
<ul>
<li>새 도구 좀 빨리 씁시다 </li>
<li>머리가 나쁘면 손발이 고생 </li>
</ul>
<ol class="footnotes"><li id="footnote_0_2830" class="footnote">DB –&gt; UI 로 넘기는 형태의 프로그래밍에서 작업할게 거의 없다</li></ol>

<p>관련 글:<ol><li><a href='http://rein.kr/blog/archives/2449' rel='bookmark' title='URI 삽질'>URI 삽질</a></li>
<li><a href='http://rein.kr/blog/archives/2294' rel='bookmark' title='Google Go on Android/nacl?'>Google Go on Android/nacl?</a></li>
<li><a href='http://rein.kr/blog/archives/2104' rel='bookmark' title='Adobe FlashSocketPolicyDaemon (python) 코드의 버그'>Adobe FlashSocketPolicyDaemon (python) 코드의 버그</a></li>
</ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=E-moPHS4g-o:q4L559GmDyM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=E-moPHS4g-o:q4L559GmDyM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=E-moPHS4g-o:q4L559GmDyM:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=E-moPHS4g-o:q4L559GmDyM:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/reinblog?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reinblog/~4/E-moPHS4g-o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/2830/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/2830</feedburner:origLink></item>
		<item>
		<title>VS 2010 소스 서버 설정과 홈 디렉터리 문제</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/l-ASIuMPAac/2822</link>
		<comments>http://rein.kr/blog/archives/2822#comments</comments>
		<pubDate>Thu, 27 Oct 2011 14:53:56 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=2822</guid>
		<description><![CDATA[최근에 받은 머신에서 크래시 덤프 디버깅 하다 겪은 일. VisualStudio 2010에서 포스트모텀 디버깅[1] 할 때 심볼 서버, 소스 서버를 이용해서 디버깅하는데, 얘가 소스 서버에서 파일을 안 가져온다. 그래서 내가 추적한 순서 (&#8230;) svn.exe 가 있는가 &#8211; 없으면 svn.exe cat &#8230; 이 실행 안될테니 심볼 서버 접근이 잘 되는가 &#8211; 안 그러면 .pdb 에서 소스 리스팅을 [...]


관련 글:<ol><li><a href='http://rein.kr/blog/archives/2549' rel='bookmark' title='rein&#8217;s world 2010 통계'>rein&#8217;s world 2010 통계</a></li>
<li><a href='http://rein.kr/blog/archives/2371' rel='bookmark' title='C++ 0x 와 VS 2010 관련해서'>C++ 0x 와 VS 2010 관련해서</a></li>
<li><a href='http://rein.kr/blog/archives/2273' rel='bookmark' title='VisualStudio 2010 체험(?)기'>VisualStudio 2010 체험(?)기</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>최근에 받은 머신에서 크래시 덤프 디버깅 하다 겪은 일.</p>
<p>VisualStudio 2010에서 포스트모텀 디버깅<sup>[<a href="http://rein.kr/blog/archives/2822#footnote_0_2822" id="identifier_0_2822" class="footnote-link footnote-identifier-link" title="혹은 사후 디버깅. 크래시 덤프를 가지고 진행하는 디버깅">1</a>]</sup> 할 때 심볼 서버, 소스 서버를 이용해서 디버깅하는데, 얘가 소스 서버에서 파일을 안 가져온다. 그래서 내가 추적한 순서 (&#8230;)</p>
<p>svn.exe 가 있는가 &#8211; 없으면 svn.exe cat &#8230; 이 실행 안될테니</p>
<p>심볼 서버 접근이 잘 되는가 &#8211; 안 그러면 .pdb 에서 소스 리스팅을 못할테니</p>
<p>.pdb에 소스 정보가 없는가 &#8211; &#8230;없으면 못 찾아올테니</p>
<p>&#8230;여기까지 했으니 전부 아니었음. .pdb도 잘 가져오고, 거기에 소스 인덱싱된 것도 있고, <em>거의</em> 똑같은 설정의 다른 머신에선 디버깅 잘 되더라고 Orz</p>
<p>&nbsp;</p>
<p><em>관리자 모드</em>로 VS 2010을 재실행하고 나니 원인이 보이더라. 유저 홈 디렉터리를 d:\Users로 옮겼는데, 소스 서버 데이터를 c:\Users\rein\AppData\&#8230; 에 저장하는 것. 이전에는 일반 유저 권한이라 c:\Users 밑에 뭔가 못 만들어서 svn.exe cat이 실패한 모양. 이유는 모르겠지만, VS2010은 저 설정이 거의 하드 코딩되어 있거나, 홈 디렉터리 위치를 c:\에서 d:\로 바꾸려고 레지스트리에서 바꾼게 불충분한 모양.</p>
<p>좀 더 이유를 아시는 분은 설명 좀 (굽신굽신)</p>
<ol class="footnotes"><li id="footnote_0_2822" class="footnote">혹은 사후 디버깅. 크래시 덤프를 가지고 진행하는 디버깅</li></ol>

<p>관련 글:<ol><li><a href='http://rein.kr/blog/archives/2549' rel='bookmark' title='rein&#8217;s world 2010 통계'>rein&#8217;s world 2010 통계</a></li>
<li><a href='http://rein.kr/blog/archives/2371' rel='bookmark' title='C++ 0x 와 VS 2010 관련해서'>C++ 0x 와 VS 2010 관련해서</a></li>
<li><a href='http://rein.kr/blog/archives/2273' rel='bookmark' title='VisualStudio 2010 체험(?)기'>VisualStudio 2010 체험(?)기</a></li>
</ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=l-ASIuMPAac:L6Ix5wflNw8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=l-ASIuMPAac:L6Ix5wflNw8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=l-ASIuMPAac:L6Ix5wflNw8:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=l-ASIuMPAac:L6Ix5wflNw8:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/reinblog?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reinblog/~4/l-ASIuMPAac" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/2822/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/2822</feedburner:origLink></item>
		<item>
		<title>Rest in peace, dmr</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/ajh6gWA5AJs/2820</link>
		<comments>http://rein.kr/blog/archives/2820#comments</comments>
		<pubDate>Thu, 13 Oct 2011 12:11:02 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=2820</guid>
		<description><![CDATA[Dennies MacAlistair Ritche (dmr) 사망. (실제 날짜는10/8일이라 한다) 여기서 그의 명복을 빌어본다. 지난 주의 스티브 잡스 사망도 슬픈 일이지만, 개인적으로는 데니스 리치의 사망이 더 임팩트 큰 일. 간단히 말해서, 우리가 현재 쓰고 있는 SW의 가장 밑 바닥을 지탱하는 기술과 개념이 데니스 리치 손에서 태어났다. 시스템 프로그래밍의 가장 널리 쓰이는 C 언어의 창시자다; 우리가 쓰는 linux, [...]


관련 글:<ol><li><a href='http://rein.kr/blog/archives/2764' rel='bookmark' title='파일 대신 SQLite 쓰기'>파일 대신 SQLite 쓰기</a></li>
<li><a href='http://rein.kr/blog/archives/2671' rel='bookmark' title='NDC 참관기: 마비노기 영웅전 자이언트 서버의 비밀'>NDC 참관기: 마비노기 영웅전 자이언트 서버의 비밀</a></li>
<li><a href='http://rein.kr/blog/archives/2485' rel='bookmark' title='Gccgo in GCC mainline'>Gccgo in GCC mainline</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Dennies MacAlistair Ritche (dmr) 사망. (실제 날짜는10/8일이라 한다) </p>
<p>여기서 그의 명복을 빌어본다.</p>
<p>지난 주의 스티브 잡스 사망도 슬픈 일이지만, 개인적으로는 데니스 리치의 사망이 더 임팩트 큰 일. </p>
<p>간단히 말해서, 우리가 현재 쓰고 있는 SW의 가장 밑 바닥을 지탱하는 기술과 개념이 데니스 리치 손에서 태어났다.</p>
<ul>
<li>시스템 프로그래밍의 가장 널리 쓰이는 C 언어의 창시자다; 우리가 쓰는 linux, Windows는(아마?)는 C 기반의 커널로 되어 있다. 대표적인 웹 서버 (아파치나 nginx) 역시 C로 만들었다. 그리고 이 C로 Unix를 재 작성(!)해서 `앞으로 OS를 어떻게 만드느냐&#8217;에 관해선 사실 상 결론을 내려버렸다.<sup>[<a href="http://rein.kr/blog/archives/2820#footnote_0_2820" id="identifier_0_2820" class="footnote-link footnote-identifier-link" title="더불어 이 두 업적으로 1983년에 켄 톰슨과 함께 튜링 어워드를 받았다">1</a>]</sup> </li>
<li>내가 가장 사랑하는 *nix의 일관성 – 간단한 텍스트 기반 I/O의 프로그램을 연결해주는 파이프.</li>
<li>현대적인 개념의 C-runtime IO 방식을 고안.</li>
<li>내가 읽어 본 가장 간결하고 군더더기 없는 프로그래밍 책 – The C Programming Language의 저자.</li>
</ul>
<p>좀 더 쓰자니 그냥 여길 링크: <a href="http://j.mearie.org/post/11385959754/rip-dennis-ritchie">http://j.mearie.org/post/11385959754/rip-dennis-ritchie</a> 에 더 잘 정리되어 있다.</p>
<ol class="footnotes"><li id="footnote_0_2820" class="footnote">더불어 이 두 업적으로 1983년에 켄 톰슨과 함께 튜링 어워드를 받았다</li></ol>

<p>관련 글:<ol><li><a href='http://rein.kr/blog/archives/2764' rel='bookmark' title='파일 대신 SQLite 쓰기'>파일 대신 SQLite 쓰기</a></li>
<li><a href='http://rein.kr/blog/archives/2671' rel='bookmark' title='NDC 참관기: 마비노기 영웅전 자이언트 서버의 비밀'>NDC 참관기: 마비노기 영웅전 자이언트 서버의 비밀</a></li>
<li><a href='http://rein.kr/blog/archives/2485' rel='bookmark' title='Gccgo in GCC mainline'>Gccgo in GCC mainline</a></li>
</ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=ajh6gWA5AJs:XslgeU5tMic:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=ajh6gWA5AJs:XslgeU5tMic:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=ajh6gWA5AJs:XslgeU5tMic:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=ajh6gWA5AJs:XslgeU5tMic:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/reinblog?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reinblog/~4/ajh6gWA5AJs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/2820/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/2820</feedburner:origLink></item>
		<item>
		<title>머신 교체: 드디어 새 머신 오다</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/9hJzBqG9iWg/2814</link>
		<comments>http://rein.kr/blog/archives/2814#comments</comments>
		<pubDate>Wed, 12 Oct 2011 11:37:00 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[회사]]></category>
		<category><![CDATA[잡담]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=2814</guid>
		<description><![CDATA[그 동안 징징대던 구 머신을 대체하기 위한 새 머신 도착. 이미 어제 (10/11) 의 일. 여하튼 밑은 스펙. ( )안은 Windows Experience Index에 찍힌 값. i7 2600 (7.6) intel 80G ssd (320 series) + sata hdd 500G (7.7) ddr3 1333MHz 4G (4G * 4 따로 달고 기존 달린 건 딴 머신으로) (7.6) nVidia 450 GTS [...]


관련 글:<ol><li><a href='http://rein.kr/blog/archives/1768' rel='bookmark' title='intel tbb 2.2 released'>intel tbb 2.2 released</a></li>
<li><a href='http://rein.kr/blog/archives/1743' rel='bookmark' title='프로그래머의 일상: OS 재설치'>프로그래머의 일상: OS 재설치</a></li>
<li><a href='http://rein.kr/blog/archives/1717' rel='bookmark' title='가상화 서버 체험기'>가상화 서버 체험기</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://rein.kr/blog/archives/2797">그 동안 징징대던 구 머신을</a> 대체하기 위한 새 머신 도착. 이미 어제 (10/11) 의 일. 여하튼 밑은 스펙. ( )안은 Windows Experience Index에 찍힌 값.</p>
<ul>
<li>i7 2600 (7.6) </li>
<li>intel 80G ssd (320 series) + sata hdd 500G (7.7) </li>
<li>ddr3 1333MHz 4G (4G * 4 따로 달고 기존 달린 건 딴 머신으로) (7.6) </li>
<li>nVidia 450 GTS (7.2) </li>
</ul>
<p>우왕ㅋ굳ㅋ. 여기에 ㅊㅊㅅ 님이 &quot;256G SSD + GTX 560ti&quot; 주는 곳 있음! 이라고 츳코미를 날렸지만 뭐(…).</p>
<p>어제는 32 bits OS가 깔린 채로 와서, 밀고 새 OS 깔고 퇴근. 이 아래는 오늘의 삽질기.</p>
<p>드라이버 디스크를 집에서 만들어왔으나, 정작 이걸 묶어서 (.tar.gz) 가져왔다가 망함. gzip은 .NET의 System.IO.compression.GZipStream 으로 풀었으나 tar가 Orz. 여하튼 이건 꼼수로 넘어가서 각종 드라이버 설치. (여기까지 대략 오전 10시)</p>
<p>(사이에 모종의 사내 서버 문제가 풀리는 걸 확인…)</p>
<p>intel DP67BA 보드가 PS/2 슬롯이 없는지라, 이걸 위한 젠더 케이블을 링코 코엑스 점 가서 사와야 했음. 어차피 연필도 사야 하는 상황이라 겸사겸사 (…). 11시가 넘어서 네트워크에 연결 완료. (mac address 등록까지 걸리는 시간이…)</p>
<p>본격적으로 프로그램 설치 시작. 대략 VisualStudio 3종 세트<sup>[<a href="http://rein.kr/blog/archives/2814#footnote_0_2814" id="identifier_0_2814" class="footnote-link footnote-identifier-link" title="VS 2005, 2008, 2010; 그리고 각각에 속한 SP와 일부 hotfix 설치">1</a>]</sup> – 이게 바로 라이브러리 개발자의 위용 – 와 기본적인 개발 도구를 설치 했음. 대략,</p>
<ul>
<li>소스 컨트롤 3종 셋: p4, svn, git </li>
<li>viemu / gvim </li>
<li>perl + Debugging Tools for Windows </li>
<li>python 및 내가 쓰는 패키지 일부 </li>
<li>7-zip </li>
<li>putty </li>
<li>Google Chrome </li>
<li>mRemote </li>
</ul>
<p>정도를 설치. 여기서 p4, git, vim, putty, mRemote는 설정 파일과 registry도 이전;</p>
<p>점심 쯤 추가 DRAM 도착. 설치하고 ram-disk 4G 할당. 이제 스크래치는 전부 여기로<sup>[<a href="http://rein.kr/blog/archives/2814#footnote_1_2814" id="identifier_1_2814" class="footnote-link footnote-identifier-link" title="TEMP, TMP, Windows\Temp, Windows\tmp, 그리고 VS의 C++ 메타 파일도 전부 이전">2</a>]</sup> 옮기게 설정. 근데 이 때 케이스 외곽에 꽂혀있는 드라이버 디스크 발견. 아침엔 무슨 삽질을 한 것인가…</p>
<p>소스 저장소에서 파일을 못 가져와서 뭐가 문제일까 고민했는데, 대략 회사 보안 정책 / 보안 도구 문제 ;; 이거 해결하고 마지막으로 (대략 오후 3시?) 설치된 프로그램 테스트. C# 프로젝트들은 빌드 되는데, C++ 프로젝트는 빌드가 안되네? CL.exe 실행하는 MSBuild task들이 예외를 던지더라…확인 결과 TEMP, TMP는 드라이브 루트면 안됨; MS 파일 시스템의 권한 설정 상 루트가 특이해서 생기는 문제인 듯. (thanx to Azyu)</p>
<p>OS 설치할 때 USB 키보드를 생각 없이 꽂아서 했더니 키보드 타입이 101key, type 3가 아닌 101 key type 1으로 잡혀버림; 망했다를 외치고 레지스트리를 고쳤다 Orz. 평소 하던 데로 ctrl, win key도 caps lock, ctrl 자리로 보냈음.</p>
<p>여하튼 이렇게 하루가 끝. 4시부터 대략 2 시간 동안은 크래시 덤프 디버깅하는 운명에 처하긴 했지만 말이다…</p>
<p>대략 빌드 속도는 프로젝트마다 차이가 있지만 1.5~3배 정도 빨라짐. 스크래치 디렉터리 옮기고 + CRT는 SSD에서 읽고 + CPU 파워가 올라간 덕택인 듯…</p>
<ol class="footnotes"><li id="footnote_0_2814" class="footnote">VS 2005, 2008, 2010; 그리고 각각에 속한 SP와 일부 hotfix 설치</li><li id="footnote_1_2814" class="footnote">TEMP, TMP, Windows\Temp, Windows\tmp, 그리고 VS의 C++ 메타 파일도 전부 이전</li></ol>

<p>관련 글:<ol><li><a href='http://rein.kr/blog/archives/1768' rel='bookmark' title='intel tbb 2.2 released'>intel tbb 2.2 released</a></li>
<li><a href='http://rein.kr/blog/archives/1743' rel='bookmark' title='프로그래머의 일상: OS 재설치'>프로그래머의 일상: OS 재설치</a></li>
<li><a href='http://rein.kr/blog/archives/1717' rel='bookmark' title='가상화 서버 체험기'>가상화 서버 체험기</a></li>
</ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=9hJzBqG9iWg:_zqUpd0qx3o:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=9hJzBqG9iWg:_zqUpd0qx3o:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=9hJzBqG9iWg:_zqUpd0qx3o:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=9hJzBqG9iWg:_zqUpd0qx3o:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/reinblog?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reinblog/~4/9hJzBqG9iWg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/2814/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/2814</feedburner:origLink></item>
		<item>
		<title>노인의 전쟁 3부에서 이름 문제</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/pzUFrE08F74/2808</link>
		<comments>http://rein.kr/blog/archives/2808#comments</comments>
		<pubDate>Sat, 24 Sep 2011 15:08:33 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[책]]></category>
		<category><![CDATA[잡담]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=2808</guid>
		<description><![CDATA[예전에 노인의 전쟁 3부작의 세 번째 책인 &#8220;마지막 행성&#8221; (The Last Colony)에서 Jane, Zane 두 이름을 어떻게 번역할지 궁굼하다고 썼다. 확인해보니 번역판에서 &#8220;제인&#8221;과 &#8220;잰&#8221;으로 처리한걸 확인. (전자는 제인 세이건, 후자는 마젤란 호의 선장임) 실제 발음은 모르겠지만 &#8212; 아시는 분은 제보 좀 (&#8230;) &#8212; 적절한 처리인 듯?


]]></description>
			<content:encoded><![CDATA[<p>예전에 노인의 전쟁 3부작의 세 번째 책인 &#8220;마지막 행성&#8221; (The Last Colony)에서 <a href="http://rein.kr/blog/archives/2361">Jane, Zane 두 이름을 어떻게 번역할지 궁굼하다</a>고 썼다.</p>
<p>확인해보니 번역판에서 &#8220;제인&#8221;과 &#8220;잰&#8221;으로 처리한걸 확인. (전자는 제인 세이건, 후자는 마젤란 호의 선장임)<br />
실제 발음은 모르겠지만 &#8212; 아시는 분은 제보 좀 (&#8230;) &#8212; 적절한 처리인 듯?</p>


<p></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=pzUFrE08F74:YyAJfXdoaBY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=pzUFrE08F74:YyAJfXdoaBY:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=pzUFrE08F74:YyAJfXdoaBY:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=pzUFrE08F74:YyAJfXdoaBY:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/reinblog?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reinblog/~4/pzUFrE08F74" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/2808/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/2808</feedburner:origLink></item>
		<item>
		<title>벌써 2년</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/ZUcRzf756Nk/2803</link>
		<comments>http://rein.kr/blog/archives/2803#comments</comments>
		<pubDate>Fri, 23 Sep 2011 11:23:53 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[일상]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=2803</guid>
		<description><![CDATA[요 장난꾸러기가 태어난지 벌써 2년! 간간이 아플 때도 있긴 했지만 매우 건강히 크고 있다. 앞으로도 이 아이가 언제나 밝고 건강하게 자랐으면 한다. 관련 글:아들이 세상에 나온 지 벌써 200일!


관련 글:<ol><li><a href='http://rein.kr/blog/archives/2264' rel='bookmark' title='아들이 세상에 나온 지 벌써 200일!'>아들이 세상에 나온 지 벌써 200일!</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-2804" title="hyunu_in_the_park" src="http://rein.kr/blog/wp-content/uploads/2011/09/hyunu_in_the_park.jpg" alt="" width="400" height="533" /></p>
<p>요 장난꾸러기가 태어난지 벌써 2년! 간간이 아플 때도 있긴 했지만 매우 건강히 크고 있다.</p>
<p>앞으로도 이 아이가 언제나 밝고 건강하게 자랐으면 한다.</p>


<p>관련 글:<ol><li><a href='http://rein.kr/blog/archives/2264' rel='bookmark' title='아들이 세상에 나온 지 벌써 200일!'>아들이 세상에 나온 지 벌써 200일!</a></li>
</ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=ZUcRzf756Nk:3lb-KDVkboM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=ZUcRzf756Nk:3lb-KDVkboM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=ZUcRzf756Nk:3lb-KDVkboM:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=ZUcRzf756Nk:3lb-KDVkboM:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/reinblog?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reinblog/~4/ZUcRzf756Nk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/2803/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/2803</feedburner:origLink></item>
		<item>
		<title>머신 교체: 현재 상황</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/i08TB6esSvo/2797</link>
		<comments>http://rein.kr/blog/archives/2797#comments</comments>
		<pubDate>Thu, 22 Sep 2011 10:58:57 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[잡담]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=2797</guid>
		<description><![CDATA[어제 `회사에서 컴퓨터 안 바꿔주고 있어서 짜증난다&#8216;라는 글을 썼다. 이 글을 본 분들의 여차저차(&#8230;)로, 팀장 권한으로 새 머신을 신청할 수 있다는 사실을 확인했고, (이를 이용해서) 4. 6년된 머신 대신 새 머신을 하나 받기로 했고 대략 원하는 스펙[1]의 머신을 받게 될 듯 (예정?) 여하튼 대략 이러한 상황이 되었음. 이젠 내 머신에서도 릴리즈 빌드가 할만해질듯. 엄하게 팀장님 [...]


]]></description>
			<content:encoded><![CDATA[<p>어제 `<a href="http://rein.kr/blog/archives/2792">회사에서 컴퓨터 안 바꿔주고 있어서 짜증난다</a>&#8216;라는 글을 썼다.<br />
이 글을 본 분들의 여차저차(&#8230;)로,</p>
<ul>
<li>팀장 권한으로 새 머신을 신청할 수 있다는 사실을 확인했고,</li>
<li>(이를 이용해서) 4. 6년된 머신 대신 새 머신을 하나 받기로 했고</li>
<li>대략 원하는 스펙<sup>[<a href="http://rein.kr/blog/archives/2797#footnote_0_2797" id="identifier_0_2797" class="footnote-link footnote-identifier-link" title="i7 2600, RAM 8G, SSD/HDD 듀얼 구성, &amp;#8230;">1</a>]</sup>의 머신을 받게 될 듯 (예정?)</li>
</ul>
<p>여하튼 대략 이러한 상황이 되었음. 이젠 내 머신에서도 릴리즈 빌드가 할만해질듯.</p>
<p>엄하게 팀장님 디스하는 상황이 (사내에서) 되어버린 건 좀 많이 죄송하지만 (&#8230;&#8230;..)</p>
<p>&nbsp;</p>
<p>댓글란에 적어준, 혹은 트위터 멘션으로 보내준 의견/사연들을 놓고 생각하면 소위 IT 업계란 곳도 프로그래머 생산성, 좁게봐서 하드웨어 공급면에 그다지 신경쓰지 않는 듯 하다. 일단 48개월 주기의 교체 일정에 대해선 사람들 반응이 매우 안 좋다.</p>
<p>교체 주기가 24개월 이하인 곳은 규모가 있는 한국계 회사 중엔 1개 (NHN)인 듯 하다. 나머지는 24개월, 36개월, 내가 있는 곳은 48개월(&#8230;).<br />
기껏해야 연봉의  1~2% 수준인<sup>[<a href="http://rein.kr/blog/archives/2797#footnote_1_2797" id="identifier_1_2797" class="footnote-link footnote-identifier-link" title="이번 모회사 공채에 신입사원에게 준다는 기준선이라던 연봉 3000만원 기준으로 150만원짜리 머신을 2년 쓴다면 대략 2.5%. 여러가지 부대 비용이 들어가는 걸 생각하면 대략 총비용을 2 년치로 나눠서 1.25%다 겨우&amp;#8230; 연봉이 높아지면 이 비율은 더 작겠다">2</a>]</sup> 수준일 머신 비용에 너무 신경 쓰는 건 너무 피곤하지 않은가.</p>
<p>뭐 국내 굴지의 모 기업에선 `<a href="http://research.microsoft.com/en-us/news/features/vibe.aspx">이미 효과가 상당부분 인정되는 듀얼모니터</a>&#8216;를 절전이란 이유로 자제하라고 한다니 말 다했지.</p>
<p>혹은 모 금융 공기업 전산직은 연차 순(&#8230;)으로 좋은 머신을 주고, 5+년된 머신으로도 개발한다는데야&#8230;</p>
<p>&nbsp;</p>
<p>원인은 뭘까? 내 나름대로 정리하자면,</p>
<ul>
<li>프로그래머 연봉이 아직 낮은 축이라 생산성이 아니라 소요 비용에 신경쓴다</li>
<li>조직이 커지면 개발 부문 이외, 사무나 회계 등의 연간 목표도 중요하다</li>
<li>비슷하게, 상대적으로 컴퓨터 성능에 영향을 덜 받는 부문에서는 이런 얘기에 귀 기울이지 않는 듯</li>
</ul>
<div>정도? 국내 IT 회사들의 분발을 기대하겠다.</div>
<ol class="footnotes"><li id="footnote_0_2797" class="footnote">i7 2600, RAM 8G, SSD/HDD 듀얼 구성, &#8230;</li><li id="footnote_1_2797" class="footnote">이번 모회사 공채에 신입사원에게 준다는 기준선이라던 연봉 3000만원 기준으로 150만원짜리 머신을 2년 쓴다면 대략 2.5%. 여러가지 부대 비용이 들어가는 걸 생각하면 대략 총비용을 2 년치로 나눠서 1.25%다 겨우&#8230; 연봉이 높아지면 이 비율은 더 작겠다</li></ol>

<p></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=i08TB6esSvo:4JrUTfZJ_FA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=i08TB6esSvo:4JrUTfZJ_FA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=i08TB6esSvo:4JrUTfZJ_FA:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=i08TB6esSvo:4JrUTfZJ_FA:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/reinblog?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reinblog/~4/i08TB6esSvo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/2797/feed</wfw:commentRss>
		<slash:comments>19</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/2797</feedburner:origLink></item>
		<item>
		<title>내 생산성의 장애물: 머신 언제 교체해주나…</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/viHM145Eizc/2792</link>
		<comments>http://rein.kr/blog/archives/2792#comments</comments>
		<pubDate>Wed, 21 Sep 2011 02:49:40 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[일상]]></category>
		<category><![CDATA[회사]]></category>
		<category><![CDATA[잡담]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=2792</guid>
		<description><![CDATA[얼마 전에 (거의 두 달 전) `내 생산성의 장애물’이란 글을 썼다. 프로그래밍 할 때 `나를 붙잡는 잡것들’의 목록을 적었는데 그 중 마지막에 적어놓은 HW 관련된 일에 대해서 몇 줄 써보고자 한다. Joel on Software의 Joel Test 9번째 항목은 이러하다. 9. (예산이 허용하는 범위 내에서) 가장 좋은 툴을 사용하는가? 9. Do you use the best tools [...]


관련 글:<ol><li><a href='http://rein.kr/blog/archives/2768' rel='bookmark' title='내 생산성의 장애물'>내 생산성의 장애물</a></li>
<li><a href='http://rein.kr/blog/archives/2435' rel='bookmark' title='난 아직도 커맨드라인이 더 편하다'>난 아직도 커맨드라인이 더 편하다</a></li>
<li><a href='http://rein.kr/blog/archives/2025' rel='bookmark' title='내가 원하는 test-runner 의 조건'>내가 원하는 test-runner 의 조건</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>얼마 전에 (거의 두 달 전) <a href="http://rein.kr/blog/archives/2768">`내 생산성의 장애물’이란 글</a>을 썼다. 프로그래밍 할 때 `나를 붙잡는 잡것들’의 목록을 적었는데 그 중 마지막에 적어놓은 HW 관련된 일에 대해서 몇 줄 써보고자 한다.</p>
<p>Joel on Software의 Joel Test 9번째 항목은 이러하다.</p>
<blockquote><p>9. <strong>(예산이 허용하는 범위 내에서) 가장 좋은 툴을 사용하는가?</strong></p>
<p>9. Do you use the best tools money can buy?</p></blockquote>
<p>현재 내 상황은 이 항목에 대한 답이 `No’다. 나는 지금 939일 (2.6년) 된 장비와, 1689일 (=4.6년) 된 개발 장비 쓰고 있는데.<sup>[<a href="http://rein.kr/blog/archives/2792#footnote_0_2792" id="identifier_0_2792" class="footnote-link footnote-identifier-link" title="심지어 전자의 장비는 후자의 장비가 너무 느려서 퇴사자 컴퓨터 받아온 것">1</a>]</sup> 연초에 교체 대상 컴퓨터를 조사해 갔던 것 같은데, 이 중 후자만 바꿔준다고 해놓고 교체없이 3Q가 끝나간다면 문제가 많지 않나. Workstation을 쓰고 있는 것도 아니고 지극히 일반적인 의미에서의 개발용 데스크 탑 쓰고 있는데 4+년의 교체 주기는 `회사가 생산성에 관심이 없거나&#8217;, `내 가치가 이런 것도 오래 걸릴 정도의 평가를 받고 있거나&#8217;가 아닐까.</p>
<p>혹시 SW회사에서 개발 장비 교체 문제에 <em>감가상각 같은 정신 나간 기준</em>을 들면 그 회사에서 나가야 한다는 강력한 신호인데 말이지.<sup>[<a href="http://rein.kr/blog/archives/2792#footnote_1_2792" id="identifier_1_2792" class="footnote-link footnote-identifier-link" title="물론 시중에는 개발을 랩탑에서 하는 이상한 곳도 있다. 데스크 탑 / 랩탑 선호로 선택하거나 둘 다 지급 하는 게 아니라 랩탑에서&hellip; 워크스테이션과 노트북과 테스트 용 서버(&hellip;)를 지급하는 회사도 있던데&hellip;">2</a>]</sup> 아오.</p>
<p>나와 같이 일하는 동료들, 혹은 IRC나 기타 SNS 미디어를 통해 얘기하는 사람들은 잘 알고 있겠지만, 나 스스로 올해 정해놓은 시한이 하나 있다:</p>
<blockquote><p>2007년 2월에 입사하면서 받은 개발 머신을 올해 말까지 계속 써야만 하는 상황이면 다른 회사를 알아보거나 창업하기로</p></blockquote>
<p>적어놓으니 뭔가 하드웨어 구걸하는 꼬락서니긴 한데. 지금으론 슬슬 `내가 왜 이런 걸로 고민해야 하는가’의 한계선인 듯. 어차피 회사 다니는 것도 단순한 계약일 뿐,</p>
<blockquote><p>내가 얻는 이익 (돈, 안정감, 일의 만족) &gt; 내가 받는 피해 (짜증, 귀찮음, 시간 소모)</p></blockquote>
<p>이 부등식이 만족되지 않으면<sup>[<a href="http://rein.kr/blog/archives/2792#footnote_2_2792" id="identifier_2_2792" class="footnote-link footnote-identifier-link" title=" &amp;gt; 대신 &amp;gt;&amp;gt; 가 와야 맞겠지 ">3</a>]</sup> 별로 더 연장할 이유가 없다. 연초에 연봉 왕창(~2x%?) 올려주면 뭐하냐.</p>
<p>얼마 전에 사람이 필요해서 학교 후배들이랑 열심히 이 사람 저 사람 알아보다가 좀 시들해진 것도 이거 탓이 꽤 큼. 4년 넘는 장비를 쓰는 회사로 `내가 후배를 데려오는 것’에 대한 도덕적인 거부감이 – 즉, 엔지니어에 대한 적당한 대우가 아니다 – 이유다. `반짝 반짝한’ 후배들 중 상당 수가 대학원에 묶여 있거나<sup>[<a href="http://rein.kr/blog/archives/2792#footnote_3_2792" id="identifier_3_2792" class="footnote-link footnote-identifier-link" title="석사 학위 없으면 병역 특례 자격이 없으니">4</a>]</sup> 이미 다른 회사를 다니면서 이직할 생각 없다고 말한 것도 이유이긴 하지만… 여하튼 Joel Test 9번 항목과 영 안 맞는 상황이니 내가 짱짱한 후배를 데려오기엔 죄책감이 든다.</p>
<ol class="footnotes"><li id="footnote_0_2792" class="footnote">심지어 전자의 장비는 후자의 장비가 너무 느려서 퇴사자 컴퓨터 받아온 것</li><li id="footnote_1_2792" class="footnote">물론 시중에는 개발을 랩탑에서 하는 이상한 곳도 있다. 데스크 탑 / 랩탑 선호로 선택하거나 둘 다 지급 하는 게 아니라 랩탑에서… 워크스테이션과 노트북과 테스트 용 서버(…)를 지급하는 회사도 있던데…</li><li id="footnote_2_2792" class="footnote"> &gt; 대신 &gt;&gt; 가 와야 맞겠지 </li><li id="footnote_3_2792" class="footnote">석사 학위 없으면 병역 특례 자격이 없으니</li></ol>

<p>관련 글:<ol><li><a href='http://rein.kr/blog/archives/2768' rel='bookmark' title='내 생산성의 장애물'>내 생산성의 장애물</a></li>
<li><a href='http://rein.kr/blog/archives/2435' rel='bookmark' title='난 아직도 커맨드라인이 더 편하다'>난 아직도 커맨드라인이 더 편하다</a></li>
<li><a href='http://rein.kr/blog/archives/2025' rel='bookmark' title='내가 원하는 test-runner 의 조건'>내가 원하는 test-runner 의 조건</a></li>
</ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=viHM145Eizc:4Jh82XUlYV4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=viHM145Eizc:4Jh82XUlYV4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=viHM145Eizc:4Jh82XUlYV4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=viHM145Eizc:4Jh82XUlYV4:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/reinblog?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reinblog/~4/viHM145Eizc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/2792/feed</wfw:commentRss>
		<slash:comments>24</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/2792</feedburner:origLink></item>
		<item>
		<title>리뷰: LHC, 현대 물리학의 최전선</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/clDPIkWrL_M/2790</link>
		<comments>http://rein.kr/blog/archives/2790#comments</comments>
		<pubDate>Fri, 02 Sep 2011 00:09:02 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[책]]></category>
		<category><![CDATA[과학]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/archives/2790</guid>
		<description><![CDATA[LHC에 관한 책을 딱 한 권만 읽고 싶다면? 에 나온 책 “LHC, 현대 물리학의 최전선”을 읽다 느낀 점. 대학과 대학원을 거치는 동안 물리학이라곤 4학점 * 2학기 과목을 교양과목으로 신입생 때 들은 것 뿐이라 내 이해수준이 매우 조야하다는 것이 제일 컸고(…). 내 조야한 이해 수준에도 불구하고, 책은 매우 즐겁게 읽었다. 얇지 않은 책이지만 대략 이틀 만에 [...]


]]></description>
			<content:encoded><![CDATA[<p><a href="http://extrad.egloos.com/3719001">LHC에 관한 책을 딱 한 권만 읽고 싶다면?</a> 에 나온 책 “LHC, 현대 물리학의 최전선”을 읽다 느낀 점. 대학과 대학원을 거치는 동안 물리학이라곤 4학점 * 2학기 과목을 교양과목으로 신입생 때 들은 것 뿐이라 내 이해수준이 매우 조야하다는 것이 제일 컸고(…).</p>
<p>내 조야한 이해 수준에도 불구하고, 책은 매우 즐겁게 읽었다. 얇지 않은 책이지만 대략 이틀 만에 다 봄. “엘리건트 유니버스”를 읽고 나서 LHC가 만들어진다는 점에 대해 꽤나 관심이 있었는데, 여기에 더 궁금하게 만들고 `왜 중요한지’에 대해서 설명해준 덕에 LHC에 대한 관심이 더 커진 듯.</p>
<p>아래는 약간 방향이 다른 리뷰(…). 사실 이건 제가 책 내용에 대한 기반 지식이 부족해서 그렇습니다 Orz.</p>
<p>1. 책의 전체 방향이랑은 조금 다른 얘기지만, 중간에 인용된 글 한 토막을 여기서 다시 인용해본다. (강조는 저자 분이 한 것)</p>
<blockquote><p>패스토어 (로드 알랜드 주 상원의원): 이 프로젝트가 소련과 경쟁 관계에 있는 우리에게 제시하는 바는 없습니까?</p>
<p>윌슨 (페르미 랩의 설립자): 오직 장기적인 관점에서의 기술 발전에 있어서만 그렇습니다. 그 외에는 가속기는 이런 것들과 관련이 있습니다. 우리는 좋은 화가인가, 좋은 조각가인가, 훌륭한 시인인가와 같은 것들, 제가 말씀 드리는 것은 이 나라에서 우리가 진정 존중하고 명예롭게 여기는 것, 그것을 위해 나라를 사랑하게 하는 것들 말입니다. 그런 의미에서, 이 새로운 지식은 전적으로 국가의 명예와 관련이 있습니다. <strong>이것은 우리나라를 지키는 일과 관련 있는 것이 아니라, 이 나라가 지킬 만한 가치가 있도록 하는 것과 관련이 있습니다.</strong></p></blockquote>
<p>지금 한국과, 한국의 사회를 구성하는 사람들은 “한국을 지킬 만한 가치가 있는 나라”로 만드는 부분을 늘리고 있는가? 이런 생각을 하니 굉장히 가슴 한 켠이 서늘해지더라. 정말 지킬 가치가 있는 나라인가?</p>
<p>&nbsp;</p>
<p>2. LHC의 건설 비용과 운용 비용에 관한 것. 건설에 CERN이 사용한 비용은 6조 3000억 원. 그리고 검출기와 기타 시설 비용까지 추정하면 대략 10조 원 수준이라 한다.<sup>[<a href="http://rein.kr/blog/archives/2790#footnote_0_2790" id="identifier_0_2790" class="footnote-link footnote-identifier-link" title="물론 책의 내용에 따르면 LEP 실험 때 이미 다음 세대의 가속기를 생각해서 터널을 파놓았기 때문에 그 부분의 비용은 추가로 들지 않아서 이런 거라곤 하지만">1</a>]</sup> 운영비는 연간 약 2250억 원, 각 실험 팀의 실험비가 약 400억 원 정도로 예상된다고 한다.<sup>[<a href="http://rein.kr/blog/archives/2790#footnote_1_2790" id="identifier_1_2790" class="footnote-link footnote-identifier-link" title="책 446~447 페이지에 나온 내용">2</a>]</sup> 내가 국가 규모의 예산을 이해할 능력이 없긴 하지만, 이 비용이 정말 큰가? 특히 내가 이 글의 1에서 인용한 내용을 생각하면 정말 큰가? 사대강의 올해 예산이 10조 원이란 주장도 있는 걸 생각하면 말이다…<sup>[<a href="http://rein.kr/blog/archives/2790#footnote_2_2790" id="identifier_2_2790" class="footnote-link footnote-identifier-link" title="한겨레 신문의 보도 참조; http://www.hani.co.kr/arti/society/society_general/428782.html">3</a>]</sup></p>
<p>예산을 더 들일수록 아마 그 기대 이익이 감소할 (수확체감; law of diminishing returns) 도로나 항만, 공항 같은 기반 시설에 돈을 계속해서 쓰는 게 유의미한가? (물론 기존 인프라를 유지 보수하는 비용이야 어쩔 수 없다고 해도) 과학과 문화에 대한 `사회 간접 자본’은 만들 생각이 없는가? 하다 못해 건물만 번드르르 지어놓은 도서관에 책이라도 채워 놓아야 하지 않을까.</p>
<p>&nbsp;</p>
<p>3. LHC의 데이터를 처리하기 위한 시스템 구성에 더 관심이 가는 건 어쩔 수 없나(…)</p>
<ol class="footnotes"><li id="footnote_0_2790" class="footnote">물론 책의 내용에 따르면 LEP 실험 때 이미 다음 세대의 가속기를 생각해서 터널을 파놓았기 때문에 그 부분의 비용은 추가로 들지 않아서 이런 거라곤 하지만</li><li id="footnote_1_2790" class="footnote">책 446~447 페이지에 나온 내용</li><li id="footnote_2_2790" class="footnote">한겨레 신문의 보도 참조; <a href="http://www.hani.co.kr/arti/society/society_general/428782.html">http://www.hani.co.kr/arti/society/society_general/428782.html</a></li></ol>

<p></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=clDPIkWrL_M:r5HPClwadXo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=clDPIkWrL_M:r5HPClwadXo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=clDPIkWrL_M:r5HPClwadXo:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=clDPIkWrL_M:r5HPClwadXo:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/reinblog?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reinblog/~4/clDPIkWrL_M" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/2790/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/2790</feedburner:origLink></item>
		<item>
		<title>리뷰: Bastion</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/hluksrlVX8Q/2786</link>
		<comments>http://rein.kr/blog/archives/2786#comments</comments>
		<pubDate>Sun, 21 Aug 2011 12:59:19 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Game]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=2786</guid>
		<description><![CDATA[어제 Steam에서 구매한 (발매 일은 8/16)[1] 게임. 가벼운(?) 게임 플레이를 제공하는 아기자기한 2D 게임을 원하던 터라 주저 없이 구매. 19.99 (이하 USD)를 할인해서 14.99던가에 판매하더라.. 다만 OST 합본 팩을 안 산걸 조금 후회… OST를 따로 사니 추가로 $5쯤 추가로 들었다 Orz. 전형적인 2D, 쿼터 뷰, 핵&#38;슬래시 장르라고나 할까… 게임 배경이 배경이니 좀 음울하긴 하지만 색조는 [...]


관련 글:<ol><li><a href='http://rein.kr/blog/archives/2392' rel='bookmark' title='게임물 등급 심의 제도에 관한 생각'>게임물 등급 심의 제도에 관한 생각</a></li>
<li><a href='http://rein.kr/blog/archives/2131' rel='bookmark' title='Project DarkStar 는 왜 실패했을까?'>Project DarkStar 는 왜 실패했을까?</a></li>
<li><a href='http://rein.kr/blog/archives/1874' rel='bookmark' title='Tomb Raider: Underworld'>Tomb Raider: Underworld</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="bastion-title" border="0" alt="bastion-title" src="http://rein.kr/blog/wp-content/uploads/2011/08/bastion-title.jpg" width="640" height="359" /></p>
<p>어제 Steam에서 구매한 (발매 일은 8/16)<sup>[<a href="http://rein.kr/blog/archives/2786#footnote_0_2786" id="identifier_0_2786" class="footnote-link footnote-identifier-link" title="XBox Live Arcade를 통해서는 지난 달에 발매되긴 했다.">1</a>]</sup> 게임. 가벼운(?) 게임 플레이를 제공하는 아기자기한 2D 게임을 원하던 터라 주저 없이 구매. 19.99 (이하 USD)를 할인해서 14.99던가에 판매하더라.. 다만 OST 합본 팩을 안 산걸 조금 후회… OST를 따로 사니 추가로 $5쯤 추가로 들었다 Orz.</p>
<p>전형적인 2D, 쿼터 뷰, 핵&amp;슬래시 장르라고나 할까…    <br />게임 배경이 배경이니 좀 음울하긴 하지만 색조는 화사(?)한 편에 가깝다. 2D에서 좀 더 보여주기 쉬운 색감이랄까.</p>
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="bastion-graphic" border="0" alt="bastion-graphic" src="http://rein.kr/blog/wp-content/uploads/2011/08/bastion-graphic.png" width="640" height="360" /></p>
<p>화면 중앙 왼쪽의 다리 난간이 좀 이상하게 보일 거다. 던전(?)에 들어가면 일부 지역만 보이고/이동가능하고, 특정 경로로 이동하면 화면에 타일들이 `떠오른다&#8217;. 저 다리 난간도 떠올라서 생기는 중(…). 적도 그렇게 생긴 화면에 턱 하고 나타나는 경우가 있어서 나름대로 긴장감 유지에 좋음.</p>
<p>정말 좋았던 부분은 음악 + 해설(?). 주요 등장 인물 중 한 명이 주인공의 행동을 서술하는 형식인데. 이게 음성으로 낮게 깔려 나옴. 일부 동작 – 예를 들어 새로 얻은 무기로 열심히 물건들을 부순다거나, 추락한다거나, … – 에 반응해서 그에 대한 설명을 하기도 한다. 시작하자마자 떨어지고 나서 나오는 해설에 잠시 멍해지더라(…).</p>
<p>&#160;</p>
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="bastion-mortar" border="0" alt="bastion-mortar" src="http://rein.kr/blog/wp-content/uploads/2011/08/bastion-mortar.png" width="640" height="360" /></p>
<p>무기가 다양하게 나오는데 – 망치, 바셰티, 창(할버드?), 활, 저격소총, 샷건, 박격포, …이건 뭐라 설명할 수 없는 로켓포(?), 화염방사기 등… – 이에 대한 업그레이드 재료 + 돈으로 이 무기에 추가 옵션을 달아서 게임 플레이가 꽤 변한다. 로켓포 최종 업그레이드 같은 경우 자동 추적(…)옵션이 달리기도. (무려 범위 무기에 궁극 무기라 한 방에 거의 다 잡는데…) </p>
<p>스크린 샷에서는 터렛에 맞아가며 박격포를 조준하는 장면. 무기마다 컨트롤이 확연히 다른 것도 재미요소. 활은 오래 겨냥하면 더 세게 나가고, 저격 소총은 오래 겨냥하면 더 정확히 나가고… 박격포는 더 오래 겨냥해야 멀리 나가고(…). 일부 근접 무기는 오래 누르면 던진다거나 하기도; 그리고 무기 마스터 던전도 존재한다. 각 무기에 맞는 특정 미션을 수행하면 수행 수준에 따라 보상을 달리 주는 곳(…). </p>
<p>사원이란 시스템으로 난이도를 조절하는 것도 괜찮았음. 사원에 특정 신상을 활성화하면 특정 조건의 몹이 특정 형태로 더 강해지거나 하는 게 생김 – 물론 돈과 경험치도 더 줍니다… 그래서 별도의 난이도 시스템이 외부에 preset으로 주어지는 게 아니라 유저가 알아서 잘(?) 하면 되는 구조… 요즘처럼 게임이 대중화 된 상태에선 난이도에 대해 호 불호가 극명하기 때문에 이건 꽤 괜찮은 선택으로 보인다.</p>
<p>&#160;</p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="bastion-portal" border="0" alt="bastion-portal" src="http://rein.kr/blog/wp-content/uploads/2011/08/bastion-portal.jpg" width="640" height="360" /></p>
<p>보너스: Steam 판매용 버전에만 있다는 깨알 같은 포탈 패러디. 특수 스킬을 고를 수 있는데 Gel Canister란 녀석이 있다(…). 이거에 대한 NPC들의 반응도 깨알 같다(…). 일단 `Who Knows Where&#8217;클리어 할 때 매우 편하다.</p>
<p>한 번 클리어한 던전에 또 진입할 수가 없는데, 대신 `Who Knows Where&#8217;라는 모드가 있다. 게임이 전체적으로 3종류의 던전 배경이 있는데 그 각각에 대해 몬스터의 웨이브가 k번 반복되는 그런 반복 던전. 돈은 여기서 모으면 됩니다. 어차피 스토리를 이해하기 위해선 꼭 한 번 씩은 가야 하니…</p>
<p>&#160;</p>
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="bastion-ville" border="0" alt="bastion-ville" src="http://rein.kr/blog/wp-content/uploads/2011/08/bastion-ville.jpg" width="640" height="360" /></p>
<p>마을은 왼쪽에 보이는 노란 아이콘 (검은 배경) 같은 상점(?)류가 총 6곳 있다. 처음엔 0곳이지만 스토리를 진행하다 보면 늘어나고, 각각이 지원하는 기능이 다름. 하지만 마을은 큰 의미가 없는 게임이라(…). </p>
<p>전체적으로 올해 나온 게임 중엔 가장 맘에 듬. 짧다는 것만 빼고(…). 시작해서 엔딩 볼 때 까지 실 플레이 시간은 5시간 미만?. 물론 두 번 엔딩 봐야 하고(…), 업적도 채워야 하니 그보다 더 걸리긴 함. 일단 가격도 그다지 비싸지 않으니 추천. 이 게임 분류가 인디긴 하지만 무려 HD 해상도도 지원하고 / 그래픽 / 사운드(!!) 모두 나무랄 곳이 없다. </p>
<p>&#160;</p>
<p>PS. 여기서 잠시 스포일러 성 멘트 하나. 게임 엔딩 선택지가 commit or rollback이다. 이런 공돌이들 같으니(?).</p>
<ol class="footnotes"><li id="footnote_0_2786" class="footnote">XBox Live Arcade를 통해서는 지난 달에 발매되긴 했다.</li></ol>

<p>관련 글:<ol><li><a href='http://rein.kr/blog/archives/2392' rel='bookmark' title='게임물 등급 심의 제도에 관한 생각'>게임물 등급 심의 제도에 관한 생각</a></li>
<li><a href='http://rein.kr/blog/archives/2131' rel='bookmark' title='Project DarkStar 는 왜 실패했을까?'>Project DarkStar 는 왜 실패했을까?</a></li>
<li><a href='http://rein.kr/blog/archives/1874' rel='bookmark' title='Tomb Raider: Underworld'>Tomb Raider: Underworld</a></li>
</ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=hluksrlVX8Q:ebTSnhyVq6A:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=hluksrlVX8Q:ebTSnhyVq6A:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=hluksrlVX8Q:ebTSnhyVq6A:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=hluksrlVX8Q:ebTSnhyVq6A:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/reinblog?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reinblog/~4/hluksrlVX8Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/2786/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/2786</feedburner:origLink></item>
		<item>
		<title>Project Dark Star 그 후는?</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/4KANblbNhOY/2778</link>
		<comments>http://rein.kr/blog/archives/2778#comments</comments>
		<pubDate>Thu, 11 Aug 2011 11:22:47 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Game]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=2778</guid>
		<description><![CDATA[작년 2월에 Sun Microsystems (이제는 Oracle) 에서 개발하던 Java 기반 게임 서버 프레임워크인 Project Dark Star가 접히고, 오픈 소스 프로젝트로 fork 했다는 얘길 했다. 현재 상황은 대략 망해가는 프로젝트인 것 같다. 마지막 stable version이 작년 12월에 릴리즈. 다운로드 수는 누적으로 70회; 마지막에 등록된 티켓(trac issue)이 올해 2월. 위키 최종 편집 시간이 6월[1] 포럼에만 활동이 약간 [...]


관련 글:<ol><li><a href='http://rein.kr/blog/archives/2131' rel='bookmark' title='Project DarkStar 는 왜 실패했을까?'>Project DarkStar 는 왜 실패했을까?</a></li>
<li><a href='http://rein.kr/blog/archives/2126' rel='bookmark' title='Project Dark Star 개발 중단 및 오픈 소스화'>Project Dark Star 개발 중단 및 오픈 소스화</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://rein.kr/blog/archives/2126">작년 2월에 Sun Microsystems (이제는 Oracle) 에서 개발하던 Java 기반 게임 서버 프레임워크인 Project Dark Star가 접히고, 오픈 소스 프로젝트로 fork 했다</a>는 얘길 했다.</p>
<p>현재 상황은 <em><a href="http://sourceforge.net/apps/trac/reddwarf/timeline">대략 망해가는 프로젝트</a></em>인 것 같다.</p>
<p>마지막 stable version이 작년 12월에 릴리즈. 다운로드 수는 누적으로 70회;</p>
<p>마지막에 등록된 티켓(trac issue)이 올해 2월.</p>
<p>위키 최종 편집 시간이 6월<sup>[<a href="http://rein.kr/blog/archives/2778#footnote_0_2778" id="identifier_0_2778" class="footnote-link footnote-identifier-link" title="그 이전에 올해 들어와서 수정된 페이지가 6개 , 그리고 각각 1번씩만 수정">1</a>]</sup> 포럼에만 활동이 약간 있는 정도. 이 정도면 거의 활동없는 프로젝트라고 봐야하나?</p>
<p>(실질적으로) 사용하는 곳이 없고 / 개발 팀도 응집되지 않은 듯 하고 (커밋한 사람 수를 보면&#8230;) / 앞으로 비전이 있는 프로젝트는 못 될듯 하다.</p>
<ol class="footnotes"><li id="footnote_0_2778" class="footnote">그 이전에 올해 들어와서 수정된 페이지가 6개 , 그리고 각각 1번씩만 수정</li></ol>

<p>관련 글:<ol><li><a href='http://rein.kr/blog/archives/2131' rel='bookmark' title='Project DarkStar 는 왜 실패했을까?'>Project DarkStar 는 왜 실패했을까?</a></li>
<li><a href='http://rein.kr/blog/archives/2126' rel='bookmark' title='Project Dark Star 개발 중단 및 오픈 소스화'>Project Dark Star 개발 중단 및 오픈 소스화</a></li>
</ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=4KANblbNhOY:TxNNJhSuhi4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=4KANblbNhOY:TxNNJhSuhi4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=4KANblbNhOY:TxNNJhSuhi4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=4KANblbNhOY:TxNNJhSuhi4:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/reinblog?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reinblog/~4/4KANblbNhOY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/2778/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/2778</feedburner:origLink></item>
		<item>
		<title>내 생산성의 장애물</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/ID2rx89Lth4/2768</link>
		<comments>http://rein.kr/blog/archives/2768#comments</comments>
		<pubDate>Tue, 09 Aug 2011 14:28:36 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Test]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=2768</guid>
		<description><![CDATA[프로그래밍하다보면 부드럽게 달리다가 턱에 퍽하고 걸린다고 느낄 때가 있다. 유닛 테스트(혹은 기능 테스트)를 돌렸는데 끝이 안난다거나 컴파일러 메시지가 쭉 뜨고있거나 혹은 링커/코드 생성 메시지에서 끝이 안나고 있다거나 빌드 서버에서 끝없이 노란 불(=빌드 중)이 들어가 있거나 안티바이러스 스캐닝이 하드 디스크를 긁고 있거나[1] 여하튼 이런 일에 신경이 쓰이면 뭔가 발이 잡힌 것 같고, 집중이 퍽하고 깨진다. 개인적으로는 [...]


관련 글:<ol><li><a href='http://rein.kr/blog/archives/2273' rel='bookmark' title='VisualStudio 2010 체험(?)기'>VisualStudio 2010 체험(?)기</a></li>
<li><a href='http://rein.kr/blog/archives/2238' rel='bookmark' title='svn tag만들 때 svn:externals 리비젼 고정하기'>svn tag만들 때 svn:externals 리비젼 고정하기</a></li>
<li><a href='http://rein.kr/blog/archives/1709' rel='bookmark' title='서버 설치 기록 post-mortem'>서버 설치 기록 post-mortem</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>프로그래밍하다보면 부드럽게 달리다가 턱에 퍽하고 걸린다고 느낄 때가 있다.</p>
<ul>
<li>유닛 테스트(혹은 기능 테스트)를 돌렸는데 끝이 안난다거나</li>
<li>컴파일러 메시지가 쭉 뜨고있거나 혹은 링커/코드 생성 메시지에서 끝이 안나고 있다거나</li>
<li>빌드 서버에서 끝없이 노란 불(=빌드 중)이 들어가 있거나</li>
<li>안티바이러스 스캐닝이 하드 디스크를 긁고 있거나<sup>[<a href="http://rein.kr/blog/archives/2768#footnote_0_2768" id="identifier_0_2768" class="footnote-link footnote-identifier-link" title="물론 이 경우에는 정말 아무 것도 할 수 없기 때문에, 수단과 방법을 가리지 않고 안티 바이러스를 종료한다. 안 꺼지면 파워 버튼을 연타">1</a>]</sup></li>
</ul>
<p>여하튼 이런 일에 신경이 쓰이면 뭔가 발이 잡힌 것 같고, 집중이 퍽하고 깨진다.</p>
<p>개인적으로는 이거에 대해 약간의 우회책을 넣어 대처하고 있다(=성격 나빠지고 있다).</p>
<p>우선 빌드 속도와 테스트 케이스 실행 속도.<br />
google test 를 써서 작성한 테스트인 경우 실행 파일 생성 시간이 바뀌면 자동으로 테스트를 실행하고 실패하면 화면 오른쪽 아래에 커다란 빨간 팝업을 뜨게 했다. 클릭하기 전에는 안 사라지는 그런 팝업임.</p>
<p><img class="aligncenter size-full wp-image-2775" title="img-test-runner" src="http://rein.kr/blog/wp-content/uploads/2011/08/img-test-runner.jpg" alt="" width="600" height="350" /></p>
<p>대충 여기 화면 오른쪽 아래에 나오는 식.<sup>[<a href="http://rein.kr/blog/archives/2768#footnote_1_2768" id="identifier_1_2768" class="footnote-link footnote-identifier-link" title="화면 오른쪽 아래 좀 탁하게 찍힌 화면이 그것. 화면 해상도가 2048 by 1152 임을 감안하고 보실 듯">2</a>]</sup> 반대로 모든 테스트가 성공하면 쬐끄마한 녹색 팝업을 수 초쯤 띄우고 사라지게 했다. 이전에 빨간 팝업이 있었으면 그것도 지우고&#8230;<br />
상대적으로 좀 덜 기다리고 (문제가 생기면 알려주고) 다른 작업을 할 수 있게;</p>
<p>이전 포스팅에서 말했던 원래 문제(긴 테스트 시간)도 약간은 견딜만한 문제정도로 바꿨다. 다만 이 방법도 항상 통하는건 아니다. 코드 작성 -&gt; 빌드 -&gt; 실행 -&gt; 보고의 한 싸이클이 너무 길면 큰 도움이 안된다. 테스트가 다 돌기도 전에 다음 싸이클의 코드 작업이 끝나고 빌드 버튼을 누르면 이미 실패. 엄한 링크 오류나 보게 된다.</p>
<p>그덕에 직전 포스팅에 나온 작업에 착수. 테스트 실행시간을 줄이고나니 어지간해선 &#8212; 멍청한 안티바이러스라거나가 빌드 시간을 잡아먹지 않는다면 &#8212; 견딜 수 있는 범위 내로 어떻게 어떻게 되더라.</p>
<p>&nbsp;</p>
<p>빌드 서버 결과기다리는 것도 예전엔 상태 보면서 기다렸는데, 요즘은 신경 끄고 딴 일하다 실패 팝업 뜨면 그 때 보기는 방식으로 가고 있다. 문제는 내가 고친 프로젝트 말고 다른 사람 프로젝트 깨지면 그것도 신경쓰게 된다는 거지만;</p>
<p>&nbsp;</p>
<p>하지만 이런 짓하면 성공적으로 전진하는 경우야 좋지만 <strong>실패했을 때의 페널티가 크다</strong>. 내가 뭘 생각하고 있었나도 돌아봐야하고, 문제를 풀고나서도 다시 원래있던 곳으로 사고를 돌려야하니&#8230;</p>
<p>&nbsp;</p>
<p>여하튼 세 줄 요약</p>
<ul>
<li>작업 싸이클에 드는 시간이 짧아야 집중해서 일할 수 있다</li>
<li>특정 단계가 너무 길다 싶으면 비동기로 바꾸고, 보고할만한 내용이 있으면 눈에 잘 띄게 알려주자(소리나 불빛 덜 방해되는 영역의 팝업)</li>
<li>이래도 안되면<sup>[<a href="http://rein.kr/blog/archives/2768#footnote_2_2768" id="identifier_2_2768" class="footnote-link footnote-identifier-link" title="사실이게 제일 싼 방법 같은데">3</a>]</sup> 하드웨어에 투자해야. 뭐 난 그게 안되서 테스트 코드를 최적화했다만(&#8230;)</li>
</ul>
<ol class="footnotes"><li id="footnote_0_2768" class="footnote">물론 이 경우에는 정말 아무 것도 할 수 없기 때문에, 수단과 방법을 가리지 않고 안티 바이러스를 종료한다. 안 꺼지면 파워 버튼을 연타</li><li id="footnote_1_2768" class="footnote">화면 오른쪽 아래 좀 탁하게 찍힌 화면이 그것. 화면 해상도가 2048 by 1152 임을 감안하고 보실 듯</li><li id="footnote_2_2768" class="footnote">사실이게 제일 싼 방법 같은데</li></ol>

<p>관련 글:<ol><li><a href='http://rein.kr/blog/archives/2273' rel='bookmark' title='VisualStudio 2010 체험(?)기'>VisualStudio 2010 체험(?)기</a></li>
<li><a href='http://rein.kr/blog/archives/2238' rel='bookmark' title='svn tag만들 때 svn:externals 리비젼 고정하기'>svn tag만들 때 svn:externals 리비젼 고정하기</a></li>
<li><a href='http://rein.kr/blog/archives/1709' rel='bookmark' title='서버 설치 기록 post-mortem'>서버 설치 기록 post-mortem</a></li>
</ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=ID2rx89Lth4:9KpPi927Evo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=ID2rx89Lth4:9KpPi927Evo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=ID2rx89Lth4:9KpPi927Evo:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=ID2rx89Lth4:9KpPi927Evo:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/reinblog?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reinblog/~4/ID2rx89Lth4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/2768/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/2768</feedburner:origLink></item>
		<item>
		<title>파일 대신 SQLite 쓰기</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/WtTAqJ8n40k/2764</link>
		<comments>http://rein.kr/blog/archives/2764#comments</comments>
		<pubDate>Sun, 07 Aug 2011 08:34:00 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[SQLite]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=2764</guid>
		<description><![CDATA[최근에 홍민희님이 링크한 sqlite는 fopen( )대신이다란 글이 있다.[1] 최근에 모 개발 중인 서버에서 시작시점에 데이터 파일 읽는 부분을 SQLite로 바꿔봤다. 원래의 구현은 엑셀 파일(.xls)을 서버 시작시점에 읽어서 특정 시트를 각 시트에 맞는 데이터 타입으로 바꿔서 저장하는 것. 이를 위해 Microsoft Office용 일부 dll (MS Visual Studio 2010 Tools for Office Runtime, AccessDatabaseEngine_x64)을 필요로 함. 이걸 [...]


관련 글:<ol><li><a href='http://rein.kr/blog/archives/2615' rel='bookmark' title='평범하지 않게 파일 복사하기'>평범하지 않게 파일 복사하기</a></li>
<li><a href='http://rein.kr/blog/archives/2467' rel='bookmark' title='TLS, DLL, 그리고 Legacy Windows'>TLS, DLL, 그리고 Legacy Windows</a></li>
<li><a href='http://rein.kr/blog/archives/1642' rel='bookmark' title='당신 역시 초보일 수 있습니다'>당신 역시 초보일 수 있습니다</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>최근에 <a href="http://news.ycombinator.com/item?id=2822983" target="_blank">홍민희님이 링크한 sqlite는 fopen( )대신이다</a>란 글이 있다.<sup>[<a href="http://rein.kr/blog/archives/2764#footnote_0_2764" id="identifier_0_2764" class="footnote-link footnote-identifier-link" title="링크에 적어놓은 말 자체는 Hacker News 페이지의 제목이고, 실제로 연결된 페이지는 SQLite 사이트의 화이트 페이퍼 페이지다">1</a>]</sup> 최근에 모 개발 중인 서버에서 시작시점에 데이터 파일 읽는 부분을 SQLite로 바꿔봤다.</p>
<p>원래의 구현은 엑셀 파일(.xls)을 서버 시작시점에 읽어서 특정 시트를 각 시트에 맞는 데이터 타입으로 바꿔서 저장하는 것. 이를 위해 Microsoft Office용 일부 dll (MS Visual Studio 2010 Tools for Office Runtime, AccessDatabaseEngine_x64)을 필요로 함. 이걸 써서 OLE로 값을 읽는다. 그리고 좀 엄하게도(…) 일부 셀은 리스트, 그것도 구조체 비슷한 것의 리스트를 적당한 토큰으로 구분해놨다. 이 부분은 문자열로 읽고 정규 표현식으로 분리해서 메모리에 올린다.</p>
<p>&nbsp;</p>
<p>개인적으로 이 구현은 굉장히 맘에 안들었다. 문제라고 생각하는 부분은 두 가지. 일단 <strong>속도</strong>. 백 개 정도의 테스트 케이스를 실행하면 140초쯤 걸린다. 교체 대상인(&#8230;) 내 Q8400에서 약 140초쯤 걸림. 물론 콘솔 출력을 날려버리면 (&gt; nul) 8x ~ 9x초 수준까진 줄어든다. 느린 부분이,</p>
<ul>
<li>OLE로 데이터 가져오는 부분(700ms)</li>
<li>regex 로 데이터 언마셜링하는 부분(500ms).</li>
</ul>
<p>물론 기능 테스트에서만 전체 데이터를 로드하는 거지만 전체 테스트가 느려지는 건 스트레스.  그리고 60% 이상의 케이스가 기능 테스트이고, 이 때마다 서버 런타임 전체를 초기화 하기 때문에 여기 들어가는 시간이 매우 스트레스였다.<br />
일단 OLE에서 데이터 읽는 부분은 처음 읽을 때만 사용하고, 이 때 데이터를 텍스트 형태로 메모리에 올린 후, 그 이후 테스트 케이스에선 이걸 읽게 했더니 꽤 빨라지긴 했지만(140초-&gt;100초) 여전히 남은 정규 표현식 Orz. 그리고 이건 데이터 늘어나면 더 느려질게 뻔하니&#8230;</p>
<p>두 번째는 <strong>외부 의존성</strong>. 서비스하기 위해 추가로 설치해야 하는 외부 프로그램이 있는게 좀&#8230;</p>
<p>그래서 (a) SQLite 테이블로 바꾸는 스크립트, (b) SQLite 테이블에서 데이터 읽는 코드 이렇게 두 가지를 만들었다.</p>
<p>우선 엑셀 파일(.xls)로 되어있는 데이터를 SQLite 테이블로 변환하는 코드를 작성했다. python xlrd 팩키지로 특정 시트를 읽고 여기 있는 첫 번째 행에 있는 데이터를 열 이름으로 처리하고 나머지 행에서 셀 데이터 타입을 받은 후 여기서 빈 셀이 아닌 것의 주요 타입을 열 타입으로 고름. 다만 정수/실수 선택은 적당히 실제 셀 값을 뒤져서 골랐다. 근데 SQLite에 문자열로 넣고 실행시간에 select한 후 읽는 쪽에서 고르는 게 나을지도 모르겠다. 이 테이블에 개별 행을 하나 씩 읽어서 삽입.  (INSERT ?, ?, … , args)로 끝.</p>
<p>마지막으로 이전에 정규 표현식으로 처리하던 부분을 python에서 해석하는 단계에서 별도 테이블을 생성하게 바꿨다. 나중에 유효성 검사할 걸 생각하면 역시 단계가 하나 더 있어야 하고, 이걸 여러 번 할 이유가 없거든…</p>
<p>SQLite에서 데이터 읽는 부분은 흔히 하는 sqlite3 open, prepare(SELECT 구문), 데이터 다 나올 때 까지 step k번으로 해결. OLE로 읽는 거 보다 당연히 빠르고 텍스트로 캐싱한 것 읽는 거보다 조금 늦은 수준으로 끝나더라.</p>
<p>이제 외부 의존성은 없고(sqlite.c가 추가되지만) 테스트 케이스 실행은 50초 수준까지 줄었다. nul로 콘솔 출력 보내면 20초 미만…</p>
<p>여하튼 이거 오늘 git에서 메인 스트림으로 보내버리고 딴 버그 잡고나니 하루가 지나가긴 했다. (상당 수의 작업은 금요일에 했음)</p>
<ol class="footnotes"><li id="footnote_0_2764" class="footnote">링크에 적어놓은 말 자체는 Hacker News 페이지의 제목이고, 실제로 연결된 페이지는 SQLite 사이트의 화이트 페이퍼 페이지다</li></ol>

<p>관련 글:<ol><li><a href='http://rein.kr/blog/archives/2615' rel='bookmark' title='평범하지 않게 파일 복사하기'>평범하지 않게 파일 복사하기</a></li>
<li><a href='http://rein.kr/blog/archives/2467' rel='bookmark' title='TLS, DLL, 그리고 Legacy Windows'>TLS, DLL, 그리고 Legacy Windows</a></li>
<li><a href='http://rein.kr/blog/archives/1642' rel='bookmark' title='당신 역시 초보일 수 있습니다'>당신 역시 초보일 수 있습니다</a></li>
</ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=WtTAqJ8n40k:8gu4y2WGg3M:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=WtTAqJ8n40k:8gu4y2WGg3M:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=WtTAqJ8n40k:8gu4y2WGg3M:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=WtTAqJ8n40k:8gu4y2WGg3M:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/reinblog?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reinblog/~4/WtTAqJ8n40k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/2764/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/2764</feedburner:origLink></item>
		<item>
		<title>Blog 재설치</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/q0fOTiRfvEI/2762</link>
		<comments>http://rein.kr/blog/archives/2762#comments</comments>
		<pubDate>Sat, 06 Aug 2011 11:07:40 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[일상]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[잡담]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=2762</guid>
		<description><![CDATA[WordPress의 비쥬얼 에디터가 제대로 동작하지 않아서 WordPress 자체를 재 설치. 이 글은 비쥬얼 에디터에서 쓰고 있다. MS Windows에서 글 쓰는 거라면 Windows Live Writer가 워낙 훌륭해서 되거나 말거나 크게 신경 안 썼는데, 요즘 Windows 부팅하는 시간이 너무 적어서 결국 불편함을 못 견디고 재설치했다. 설치는 다음과 같은 순서로 진행했다. 기존 디렉터리 백업 (blog 디렉터리를 백업 디렉터리로 변경) [...]


관련 글:<ol><li><a href='http://rein.kr/blog/archives/2462' rel='bookmark' title='일반 사용자용 제품에 당연히 기대해야 하는 것'>일반 사용자용 제품에 당연히 기대해야 하는 것</a></li>
<li><a href='http://rein.kr/blog/archives/2116' rel='bookmark' title='Blog 이사 아닌 이사'>Blog 이사 아닌 이사</a></li>
<li><a href='http://rein.kr/blog/archives/2112' rel='bookmark' title='Blog 도메인 이전 및 기타 등등'>Blog 도메인 이전 및 기타 등등</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>WordPress의 비쥬얼 에디터가 제대로 동작하지 않아서 WordPress 자체를 재 설치. 이 글은 비쥬얼 에디터에서 쓰고 있다.</p>
<p>MS Windows에서 글 쓰는 거라면 Windows Live Writer가 워낙 훌륭해서 되거나 말거나 크게 신경 안 썼는데, 요즘 Windows 부팅하는 시간이 너무 적어서 결국 불편함을 못 견디고 재설치했다.</p>
<p>설치는 다음과 같은 순서로 진행했다.</p>
<ol>
<li>기존 디렉터리 백업 (blog 디렉터리를 백업 디렉터리로 변경)</li>
<li>새로 설치 (svn checkout 으로 통채로 blog 디렉터리에 가져다 설치)</li>
<li>기존 설정 파일 복사 (wp-config.php, wlwmanifest.xml, .htaccess)</li>
<li>기존 테마 파일 복사 (wp-content/theme 디렉터리를 백업에서 blog로 복사)</li>
<li>기존 플러그인 복사 (wp-content/plugins 디렉터리를 백업에서 blog로 복사)</li>
<li>기존 이미지 파일 복사 (wp-content/uploads 디렉터리를 백업에서 blog로 복사)</li>
</ol>
<p>만에 하나 있을지 모를 문제 때문에 캐싱 플러그인 (wp-super-cache는 비활성화 했음)</p>
<p>&nbsp;</p>
<p>혹시 깨진 링크, 깨진 이미지, 비정상 동작하는 부분이 발견되면 댓글로 알려주시면 감사하겠습니다(&#8230;).</p>
<p>&nbsp;</p>
<p>&nbsp;</p>


<p>관련 글:<ol><li><a href='http://rein.kr/blog/archives/2462' rel='bookmark' title='일반 사용자용 제품에 당연히 기대해야 하는 것'>일반 사용자용 제품에 당연히 기대해야 하는 것</a></li>
<li><a href='http://rein.kr/blog/archives/2116' rel='bookmark' title='Blog 이사 아닌 이사'>Blog 이사 아닌 이사</a></li>
<li><a href='http://rein.kr/blog/archives/2112' rel='bookmark' title='Blog 도메인 이전 및 기타 등등'>Blog 도메인 이전 및 기타 등등</a></li>
</ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=q0fOTiRfvEI:-Z6tffyloXI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=q0fOTiRfvEI:-Z6tffyloXI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=q0fOTiRfvEI:-Z6tffyloXI:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=q0fOTiRfvEI:-Z6tffyloXI:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/reinblog?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reinblog/~4/q0fOTiRfvEI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/2762/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/2762</feedburner:origLink></item>
	</channel>
</rss>

