<?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>Mon, 06 May 2013 23:38:11 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</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>NDC 2013: DVCS와 코드리뷰, 자동화를 통한 쾌속개발</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/2QxQK-pQNTk/3156</link>
		<comments>http://rein.kr/blog/archives/3156#comments</comments>
		<pubDate>Mon, 06 May 2013 23:38:11 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[ndc2013]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=3156</guid>
		<description><![CDATA[&#160; 올해 NDC에서 발표한 내용. Slideshare에 업로드 실패를 반복해서 (원인은 용량인듯; pdf로 한 48MiB쯤?) 스피커덱을 한 번 써봤다. 다만 WordPress에 임베드가 잘 안되어서 오늘에야 플러그인 찾아서 블로그에도 게시. 같이 쓰는 사람 수만 좀 많으면 참 좋겠는데 (&#8230;).]]></description>
				<content:encoded><![CDATA[<iframe allowfullscreen="true" allowtransparency="true" frameborder="0" height="345" id="talk_frame_45232" mozallowfullscreen="true" src="//speakerdeck.com/player/d50acf608fda0130ada212313d1a8509" style="border:0; padding:0; margin:0; background:transparent;" webkitallowfullscreen="true" width="500"></iframe>
<p>&nbsp;</p>
<p>올해 NDC에서 발표한 내용. Slideshare에 업로드 실패를 반복해서 (원인은 용량인듯; pdf로 한 48MiB쯤?) <a title="Speaker Deck" href="https://speakerdeck.com/" target="_blank">스피커덱</a>을 한 번 써봤다.<br />
다만 WordPress에 임베드가 잘 안되어서 오늘에야 플러그인 찾아서 블로그에도 게시.</p>
<p>같이 쓰는 사람 수만 좀 많으면 참 좋겠는데 (&#8230;).</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=2QxQK-pQNTk:P8pTNxIisE4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=2QxQK-pQNTk:P8pTNxIisE4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=2QxQK-pQNTk:P8pTNxIisE4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=2QxQK-pQNTk:P8pTNxIisE4: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/2QxQK-pQNTk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/3156/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/3156</feedburner:origLink></item>
		<item>
		<title>리뷰: 코딩호러의 이펙티브 프로그래밍</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/qcjzqm6n6B8/3148</link>
		<comments>http://rein.kr/blog/archives/3148#comments</comments>
		<pubDate>Fri, 05 Apr 2013 22:31:21 +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=3148</guid>
		<description><![CDATA[스택오버플로우의 공동 창업자인 제프 앳우드의 글 모음. http://www.codinghorror.com/blog/ 에 연재된 글을 정리한 것도 있고, 새로운 내용도 있다. 인상깊었던 부분을 몇 가지 추려보자면: 회사의 관점에서 스택 오버플로우를 운영하는 것에 대해 커티스 암스트롱의 조언(?)을 이용 저 길로 가, 총알같이 빠르게. 눈앞에 뭐가 나타나면 방향을 틀어 Go that way, really fast. If something gets in your way, turn. 그리고 [...]]]></description>
				<content:encoded><![CDATA[<p>스택오버플로우의 공동 창업자인 제프 앳우드의 글 모음. http://www.codinghorror.com/blog/ 에 연재된 글을 정리한 것도 있고, 새로운 내용도 있다.</p>
<p>인상깊었던 부분을 몇 가지 추려보자면:</p>
<h2>회사의 관점에서 스택 오버플로우를 운영하는 것에 대해</h2>
<p>커티스 암스트롱의 조언(?)을 이용</p>
<blockquote><p>저 길로 가, 총알같이 빠르게. 눈앞에 뭐가 나타나면 방향을 틀어<br />
Go that way, really fast. If something gets in your way, turn.</p></blockquote>
<p>그리고 팀 오라일리가 래리 페이지를 인용한 것을 재인용한 부분:</p>
<blockquote><p>래리 페이지는 이렇게 말했다. &#8220;속도와 좋은 결정 사이에 존재하는 관련성… 빠르고 좋은 결정은 있지만, 느리고 좋은 결정은 없다.&#8221; (오후 3:40 &#8212; 2011년 9월 27일)</p></blockquote>
<h2>프로그래머 권리 장전</h2>
<p>이건 코딩호러 블로그에 나온 것 그대로임 (http://www.codinghorror.com/blog/2006/08/the-programmers-bill-of-rights.html )</p>
<p>모든 프로그래머는</p>
<ol>
<li>두 대의 모니터를 가져야 한다</li>
<li>빠른 PC를 가져야 한다</li>
<li>마우스와 키보드를 자기가 원하는 것으로 선택할 권리가 있다</li>
<li>편안한 의자를 가져야 한다</li>
<li>인터넷에 연결할 수 있어야 한다</li>
<li>조용한 작업 환경을 가져야 한다</li>
</ol>
<p>&#8230;이건 내가 일했던 곳들에 대입해서 생각하니 참 뭐랄까 (하략)</p>
<h2>배경 조명</h2>
<p>LED 조명 + 양면 테이프로 값 싼 배경 조명 (background light)을 구축할 수 있겠다고 함. 이건 다음 일하게 되면 해봐야지 (&#8230;)</p>
<h2>UI를 우선시하는 소프트웨어 개발</h2>
<blockquote><p>단 한줄의 코드를 작성하기 전에 나는 사용자 인터페이스가 어떤 모습이어야 할지에 대해 완전히 명확한 아이디어를 갖길 원한다.</p></blockquote>
<p>종이를 이용한 프로토타입 만들기 등을 다루는데 이건 좀 해보고 싶다.</p>
<h2>고객의 고통을 공유하기</h2>
<blockquote><p>개발자가 자신의 코드와 함께 살아가는 사람들인 고객의 마음과 밀착하는 것은 대단히 중요하다.</p></blockquote>
<p>소프트웨어 개발자가 코드를 실제로 사용하는 시간보다, 이걸 사용하는 사람들이 코드를 사용하는 시간이 훨씬 길다. 그래서 <strong>개밥 먹기</strong> 등으로 고객의 고통을 분담해야 한다. 멋진 일은 아니지만 소프트웨어 완성에는 중요하다.</p>
<h3>코드 리뷰: 그냥 하라</h3>
<p>코드 컴플리트에 나온 내용 원용; 이걸 전에 어디서 봤느지 궁금했었는데 (NDC 발표 자료 만들면서 (&#8230;)) 출처를 찾은 듯;</p>
<blockquote><p>평균적으로 버그를 잡아내는 비율:</p>
<ul>
<li>단위 테스트: 25%</li>
<li>기능 테스트: 35%</li>
<li>통합 테스트: 45%</li>
<li>설계와 코드에 대한 리뷰: 55% ~ 65%</li>
</ul>
</blockquote>
<p>책의 다른 절에서 유닛 테스트 / 베타 테스트를 비교하는 부분도 있었다.</p>
<p>그리고,</p>
<blockquote><p>코드 리뷰에서 유일한 장애물은 당신이 존중할 만한 동료 개발자를 찾고, 함께 코드 리뷰를 수행할 만한 시간을 할애하는 것이다.</p></blockquote>
<p>현재 팀에선 코드 리뷰를 하는데, 코드에 대한 부분은 어느 정도 이상 잘 되는 것 같다. 다만 설계에 대해서 잘 했는지는 좀 반성할 필요가 있는 듯해서 여운이 좀 (&#8230;).</p>
<h2>그 외에</h2>
<p>이 이후에 나온 내용은 제프 앳우드가 추천한 책 &#8220;Rocket Surgery Made Easy&#8221; (사용성 테스트 관련) 과 겹치는 내용이 꽤 많다.<br />
그리고 마지막 부분들은 좀 재미 없었다.</p>
<p>&nbsp;</p>
<p><strong>전반적인 평: 꼭 보시오 (&#8230;).</strong></p>
<p>&nbsp;</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=qcjzqm6n6B8:LwVw1Dz94F0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=qcjzqm6n6B8:LwVw1Dz94F0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=qcjzqm6n6B8:LwVw1Dz94F0:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=qcjzqm6n6B8:LwVw1Dz94F0: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/qcjzqm6n6B8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/3148/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/3148</feedburner:origLink></item>
		<item>
		<title>Moving on</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/a4GbTAb1LZo/3136</link>
		<comments>http://rein.kr/blog/archives/3136#comments</comments>
		<pubDate>Fri, 05 Apr 2013 22:12:31 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[일상]]></category>
		<category><![CDATA[회사]]></category>
		<category><![CDATA[잡담]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=3136</guid>
		<description><![CDATA[4월을 마지막으로 넥슨에서 퇴사. 옮겨갈 곳은 아직 미확정이지만 구직 의사는 없음. 작년에 엔씨소프트에서 넥슨으로 옮겼을 때처럼 몇 가지 장/단점을 애기해보자면: 장점: 장비는 잘 사준다. 2년마다 칼 같이 갈아 주는 걸 몇 번 봤음. 감가상각이 4년이라 4년 단위로 교체해준다던 (물론 난 그 기간에 교체 못 받았다) 곳과는 좀 비교되더라; 프로젝트 특성 때문에 머신이 좀 많이 필요했는데 거의 [...]]]></description>
				<content:encoded><![CDATA[<p>4월을 마지막으로 넥슨에서 퇴사. 옮겨갈 곳은 아직 미확정이지만 구직 의사는 없음.</p>
<p><a href="http://rein.kr/blog/archives/2878">작년에 엔씨소프트에서 넥슨으로 옮겼을 때처럼</a> 몇 가지 장/단점을 애기해보자면:</p>
<p><strong>장점</strong>:</p>
<ul>
<li>장비는 잘 사준다. 2년마다 칼 같이 갈아 주는 걸 몇 번 봤음. 감가상각이 4년이라 4년 단위로 교체해준다던 (물론 난 그 기간에 교체 못 받았다) 곳과는 좀 비교되더라; 프로젝트 특성 때문에 머신이 좀 많이 필요했는데 거의 원하는 댓수만큼 신청해서 잘 썼다.</li>
<li>개발 머신에서 인터넷 접근이 잘 되니 정말 좋았음; 근데 이건 부서마다 다르다. 이전 회사처럼 망 분리 된 곳도 많다.</li>
<li>모니터/키보드 사다 놓았다고 태클 걸지 않아서 다행 (&#8230;)</li>
<li>연봉을 1/12 분할해서 주니 1/14 분할하고 설/추석 더 주는 것보다 한 해 계획을 세우기가 좋더라.</li>
</ul>
<h3><span style="font-size: 13px;"><strong>단점</strong>:</span></h3>
<ul>
<li>사내에 뭐가 있는지 알기 너무 힘들다; 뭔가 다른 조직에 요청할 게 있으면 &#8220;누구한테 요청해야 하는지&#8221; 알아내는 부분이 좀 짜증났다; 일단 조직도도 볼 수 없다 (적어도 팀장 직책까지는&#8230;)</li>
<li>여기도 동종업계 이직 금지 조항이 달려 있다</li>
<li>책상/의자는 그냥 저냥 평범하다. 그리고 책상은 약간 좁은 듯 함. (이건 근무하는 건물마다 다르다는데 누가 확인 좀; NHN이나 엔씨소프트보단 의자는 확실히 나쁨&#8230;)</li>
</ul>
<p>&nbsp;</p>
<p>보상 체계나 프로그래머에 대한 지원 같은 걸 생각하면 한국에서 소프트웨어 엔지니어가 일하기엔 나름 좋은 회사인 것 같지만, 경영진이 취하는 태도로 볼 때 돌아올 일은 없을 듯.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=a4GbTAb1LZo:Y6IbgYAzHJI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=a4GbTAb1LZo:Y6IbgYAzHJI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=a4GbTAb1LZo:Y6IbgYAzHJI:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=a4GbTAb1LZo:Y6IbgYAzHJI: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/a4GbTAb1LZo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/3136/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/3136</feedburner:origLink></item>
		<item>
		<title>gerrit 남은 리뷰 수 시각화하기</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/QnjXj-W-6Go/3120</link>
		<comments>http://rein.kr/blog/archives/3120#comments</comments>
		<pubDate>Sun, 03 Feb 2013 14:48:59 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[gerrit]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=3120</guid>
		<description><![CDATA[회사에서 gerrit 이라는 git 기반의 코드 리뷰 도구를 쓴다. gerrit 최근 버전들이 RESTful API를 제공하기 시작했는데, 이를 이용해서 각 날짜 별로 남아있는 리뷰 수를 보여주는 스크립트를 작성했다. 예를 들어 android 프로젝트의 하위 프로젝트인 platform/sdk 에 대해서 그려보면 이런 그래프가 나온다. 대략 작년 1월부터 오늘까지 남은 리뷰 수 통계다 &#8212; 실제론 merge 된 것만 계산해서 최근 [...]]]></description>
				<content:encoded><![CDATA[<p>회사에서 <a href="https://code.google.com/p/gerrit/">gerrit</a> 이라는 git 기반의 코드 리뷰 도구를 쓴다.</p>
<p>gerrit 최근 버전들이 <a href="https://gerrit-review.googlesource.com/Documentation/rest-api.html">RESTful API를 제공하기 시작</a>했는데, 이를 이용해서 각 날짜 별로 남아있는 리뷰 수를 보여주는 스크립트를 작성했다.</p>
<p>예를 들어 android 프로젝트의 하위 프로젝트인 platform/sdk 에 대해서 그려보면 이런 그래프가 나온다.</p>
<p style="text-align: center;"><a href="http://rein.kr/blog/wp-content/uploads/2013/02/gerrit-graph.png"><img class="aligncenter size-medium wp-image-3121" alt="gerrit-graph" src="http://rein.kr/blog/wp-content/uploads/2013/02/gerrit-graph-640x74.png" width="640" height="74" /></a></p>
<p>대략 작년 1월부터 오늘까지 남은 리뷰 수 통계다 &#8212; 실제론 merge 된 것만 계산해서 최근 통계는 좀 안 맞을 수도 있다.</p>
<p>해당 코드는 <a href="https://github.com/reinkim/gerrit-graph">https://github.com/reinkim/gerrit-graph</a> 에 올려두었다. 좀 naive하긴하지만 svg로 그리니 그리긴 참 편하다 (&#8230;).</p>
<p>git 통계 / jenkins 통계 / gerrit 통계가지고 조금 손보면 적당히 발표할만한 주제를 잡을 수 있을 것 같다.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=QnjXj-W-6Go:Xy2DdNoulJw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=QnjXj-W-6Go:Xy2DdNoulJw:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=QnjXj-W-6Go:Xy2DdNoulJw:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=QnjXj-W-6Go:Xy2DdNoulJw: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/QnjXj-W-6Go" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/3120/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/3120</feedburner:origLink></item>
		<item>
		<title>신규 웹 서비스 뒷조사(?)해보기</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/n7g6F19d6T8/3117</link>
		<comments>http://rein.kr/blog/archives/3117#comments</comments>
		<pubDate>Sat, 02 Feb 2013 13:55:32 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[잡담]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=3117</guid>
		<description><![CDATA[며칠 전 트위터 타임라인에서 https://urigit.com 이란 서비스에 대해 초대권 받는다는 글이 보여서 뒷조사(?)한 후기. 내가 쓰는 방식이 상식적인 방법인진 모르겠지만, 여하튼 대략 다음과 같은 걸 읽어본다. 1. DNS 주소 정보 urigit.com은 올해 1/19에야 등록이 되었고 (그러니까 최종적인 서비스 명칭은 이 시점에야&#8230;), 등록자는 애조로 스튜디오란 이름이었다. 소개 페이지의 내용도 그렇고 메일 주소가 daum.net 인걸로 봐선 다음 [...]]]></description>
				<content:encoded><![CDATA[<p>며칠 전 트위터 타임라인에서 https://urigit.com 이란 서비스에 대해 초대권 받는다는 글이 보여서 뒷조사(?)한 후기.</p>
<p>내가 쓰는 방식이 상식적인 방법인진 모르겠지만, 여하튼 대략 다음과 같은 걸 읽어본다.</p>
<h2>1. DNS 주소 정보</h2>
<p>urigit.com은 올해 1/19에야 등록이 되었고 (그러니까 최종적인 서비스 명칭은 이 시점에야&#8230;),<br />
등록자는 애조로 스튜디오란 이름이었다.</p>
<p>소개 페이지의 내용도 그렇고 메일 주소가 daum.net 인걸로 봐선 다음 제주 본사에 근무 중인 개발자가 주축인 것으로 보인다.</p>
<p>그리고 DNS 서버는 AWSDNS-* 이다. 서버도 AWS 위에서 돌리고 있음.<br />
다음에서 직접 준비한 서비스가 아니거나 다음이 AWS를 테스트베드로 쓰고 있거나인듯. (누가 다른 정보 좀&#8230;)</p>
<p>근데 이 정보는 아예 막혀있는 경우도 많다. godaddy나 gabia 등도 registar 주소만 보이는 경우가 더 많음&#8230;</p>
<h2>2. SSL 인증서 정보</h2>
<p>인증서가 1/30에 발행된듯하다. 아마 twitter  계정으로 해당 초대권을 알리기 시작한 날과 무관하지 않은 듯.</p>
<h2>3. Twitter 등의 SNS 페이지</h2>
<p>이건 큰 참고는 안되고, 대략 public하게 행동한게 언젠지 알게 해주는 정도. 대략 DNS 등록한 날짜랑 큰 차이가 없음.</p>
<p>&nbsp;</p>
<p>사실 이런 걸 까본 이유는 다음과 같은 점이 궁금해서:</p>
<p><strong>1. git 호스팅 서비스가 큰 의미가 있는가?</strong></p>
<p>한국에선 최초로 하는 서비스 일 것 같다. 근데 git 기반이면 지연시간이 짧다는 것 하나만으론 큰 의미가 없을 것 같다.</p>
<p>git 의 remote operation을 할 일 자체가 자주 없는데 그럼에도 호스팅 서비스가 의미가 큰 가?<br />
특히 github, bitbucket, google-code 같은 다른 서비스들이랑 비교해서?</p>
<p><strong>2. 사업 모델이 뭘까?</strong></p>
<p>단순 호스팅 서비스를 판매하는 거라면 이게 의미가 클까? 상대적으로 연동할 수 있는 툴 수도 제한적일텐데.<br />
github 처럼 연동 도구를 선점하거나, bitbucket처럼 배후에 아틀라시안을 깔고 있는 건 아닐텐데. (배후에 있는 회사가 다음이면 잘 모르겠다)</p>
<p>github 처럼 설치 버전을 판다면 이게 몇몇 스타트업들이 이용하는 gitlab이나, 규모가 좀 되는 회사들(예를 들어 카카오?)이 도입하기도 하는  github enterprise보다 큰 가치가 무엇일까?</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=n7g6F19d6T8:_gPA83khk7g:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=n7g6F19d6T8:_gPA83khk7g:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=n7g6F19d6T8:_gPA83khk7g:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=n7g6F19d6T8:_gPA83khk7g: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/n7g6F19d6T8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/3117/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/3117</feedburner:origLink></item>
		<item>
		<title>한국에서 Windows Live ID로 MacOSX 용 Skype 쓰기</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/oOkEGoNhltQ/3115</link>
		<comments>http://rein.kr/blog/archives/3115#comments</comments>
		<pubDate>Sat, 02 Feb 2013 13:18:08 +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=3115</guid>
		<description><![CDATA[부모님이 손자들과 전화대신 영상 통화하게 하려고 아버지가 구입한 노트북에 Skype 설치. 그리고 iPhone이랑 영상 통화 시도하니 잘 되더라. 폰 들고있기가 좀 불편해서 맥북에도 설치하려고 하는데 큰 문제가 있다. (이건 사실 Windows 7 이전도 공통일 듯) 이 문제 해결하려고 30분 가까이 날렸음. 어흑. 원인: 한국 서비스를 담당한다는 대성 스카이프라는 뭣 같은 놈들이 있다 koscom 공시 정보만 [...]]]></description>
				<content:encoded><![CDATA[<p>부모님이 손자들과 전화대신 영상 통화하게 하려고 아버지가 구입한 노트북에 Skype 설치. 그리고 iPhone이랑 영상 통화 시도하니 잘 되더라.<br />
폰 들고있기가 좀 불편해서 맥북에도 설치하려고 하는데 큰 문제가 있다. (이건 사실 Windows 7 이전도 공통일 듯)<br />
이 문제 해결하려고 30분 가까이 날렸음. 어흑.</p>
<h2>원인: 한국 서비스를 담당한다는 대성 스카이프라는 뭣 같은 놈들이 있다</h2>
<p>koscom 공시 정보만 보고 말하자면 시총 1200억원 정도의 &#8220;가스 제조 및 공급업&#8221; (&#8230;)으로 분류된 회사더라.<br />
여하튼 이 회사가 대성-스카이프란 이름으로 서비스(?)하고 있는데 (원래는 auction (그러니까 eBay)에서 운영했던 것 같다), 운영하는 놈들이 개념이 없어서 몇 가지 심각한 문제가 있다.</p>
<p>1. skype.com 의 대부분의 (아마 support 일부와 계정 정보 등 ssl 기반 페이지를 제외한) 페이지를 대성-스카이프 쪽으로 redirect 한다.</p>
<p>근데 이 페이지는 제정신이라곤 볼 수 없다. &#8220;한국 내 서비스 구매는 여기서 하세요&#8221;. 얌마 -_- 나는 다운로드 페이지 주소를 요청했다고&#8230;<br />
여하튼 다운로드 페이지를 다시 찾아가면 &#8230;</p>
<p>2. 최신 버전 클라이언트를 유지하지 않는다</p>
<p><strong>이건 어느 정도  고의로 보인다. </strong>아니면 가스 제조 및 공급업체답게 IT 서비스업을 수행할 개념이 없거나.</p>
<p>일단 버전이 굉장히 오래된 버전이다. MacOSX 용은 작년 6월에 나온 것으로 보이는 5.8.0.86x. <em>8개월 전</em>이라니&#8230;<br />
그 사이에 3회 이상의 릴리즈가 있었던 듯 하다.</p>
<p>게다가 linux 클라이언트는 어디갔냐. 이 사이트와 한국 내 스카이프 운영하는 사업부는 그냥 접시에 코박고 (하략).</p>
<p>3. Windows Live ID 로그인을 지원하지 않는 클라이언트를 배포</p>
<p>사실 이건 2와 같은 소리일 것 같긴한데. 내가 2에 고의성이 있다고 의심하는 부분.<br />
예전 버전은 Windows Live Messeneger와 통합이 아니기 때문에 (당연히) Live ID로 로그인이 안된다. 아오&#8230;</p>
<p>&nbsp;</p>
<h2>해결책: Windows Store나 AppStore 같은 기기 전용 스토어를 쓰거나 VPN을 쓰거나, 기타 자신이 신뢰하는 다운로드 사이트를 쓸 것</h2>
<p>아버지 노트북에 설치할 때는 OS가 Windows 8이라 그냥 Windows Store에서 설치했다. 내 iPhone 에도 AppStore에서 설치.</p>
<p>그래서 대성-스카이프란 바보같은 페이지에서 다운받은 .dmg 파일을 MacOSX에 설치하면서도 그냥 잘 되겠거니 생각했음 (먼산).</p>
<p>일단 Browser의 언어 설정을 영문으로 한다고 skype.com 으로 가진 않는다. 대성-스카이프 한국어 버전만큼 병맛이진 않지만 하여간 그 밑에 있는 이상한 페이지로 간다.<br />
테스트해보진 않았지만 AWS에 micro instance 하나 띄워서 프록싱하거나 VPN하면 그냥 연결 잘 될 것 같긴하다 (아마 geo-ip일테니).</p>
<p>내 경우엔 softonic.com 이란 곳에서 다운로드해서 설치했다. 대략 위키백과 https://en.wikipedia.org/wiki/Softonic.com 를 보니 어느 정도 믿을만한 사이트로 보여서&#8230;<br />
이건 최신 클라이언트라 (6.0.x) Windows Live ID로도 로그인이 잘된다.</p>
<p>혹시 삽질하시는 분이 있으면 참고하시길.</p>
<p>&nbsp;</p>
<p>http://skype-for-mac.en.softonic.com/mac</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=oOkEGoNhltQ:9P1DmhnGzlk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=oOkEGoNhltQ:9P1DmhnGzlk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=oOkEGoNhltQ:9P1DmhnGzlk:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=oOkEGoNhltQ:9P1DmhnGzlk: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/oOkEGoNhltQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/3115/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/3115</feedburner:origLink></item>
		<item>
		<title>SQLite를 in-memory DB로 쓰기</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/iqRfe4Fi-B0/3106</link>
		<comments>http://rein.kr/blog/archives/3106#comments</comments>
		<pubDate>Tue, 15 Jan 2013 15:50:32 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[SQLite]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=3106</guid>
		<description><![CDATA[회사에서 같이 일하는 분이 테스트 프로그램에서 실제 데이터베이스 대신에 SQLite를 쓰는데 문제가 있다는 얘길 하시더라. (실제 데이터베이스에 비해) 너무 느려서, 데이터베이스 쪽과 연동된 코드들이 원하는대로 동작하지 않는다는 것. 그래서 어느 부분이 병목인지 시험해볼 수 있는 팁을 하나 알려드렸다.[1] SQLite 연결을 생성할 때 파일 경로 대신에 :memory: 를 주는 것. 이러면 in-memory DB 처럼 동작한다. 다만 [...]]]></description>
				<content:encoded><![CDATA[<p>회사에서 같이 일하는 분이 테스트 프로그램에서 실제 데이터베이스 대신에 SQLite를 쓰는데 문제가 있다는 얘길 하시더라.<br />
(실제 데이터베이스에 비해) 너무 느려서, 데이터베이스 쪽과 연동된 코드들이 원하는대로 동작하지 않는다는 것.</p>
<p>그래서 어느 부분이 병목인지 시험해볼 수 있는 팁을 하나 알려드렸다.<sup>[<a href="http://rein.kr/blog/archives/3106#footnote_0_3106" id="identifier_0_3106" class="footnote-link footnote-identifier-link" title="SQLite 자체가 문제인지, 아니면 주변 로직이 문제인지 검사하는 팁이라고 좀 더 정확하겠다">1</a>]</sup><br />
SQLite 연결을 생성할 때 파일 경로 대신에 <a title="In-Memory Databases" href="https://www.sqlite.org/inmemorydb.html" target="_blank">:memory: 를 주는 것. 이러면 in-memory DB 처럼 동작한다</a>.</p>
<p><i>다만 여기엔 거대한 문제가 있다</i>. 이런 식으로 데이터베이스를 만들면 persistency가 없다. 해당 연결을 닫아버리면 끝이다.<br />
SQLite의 .dump 명령어를 구현하면 얘기가 좀 다르겠지만 프로그램이 크래시할 때 데이터가 날아갈 수 있다면 데이터베이스라고 부르기는 좀 뭣해지니 (&#8230;);<sup>[<a href="http://rein.kr/blog/archives/3106#footnote_1_3106" id="identifier_1_3106" class="footnote-link footnote-identifier-link" title=".dump 자체가 transaction 안에서 모든 테이블과 인덱스를 내보내는 명령이라 데이터가 크다면 (하략) ">2</a>]</sup></p>
<ol class="footnotes"><li id="footnote_0_3106" class="footnote">SQLite 자체가 문제인지, 아니면 주변 로직이 문제인지 검사하는 팁이라고 좀 더 정확하겠다</li><li id="footnote_1_3106" class="footnote">.dump 자체가 transaction 안에서 모든 테이블과 인덱스를 내보내는 명령이라 데이터가 크다면 (하략) </li></ol><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=iqRfe4Fi-B0:ng7hKxVfczI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=iqRfe4Fi-B0:ng7hKxVfczI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=iqRfe4Fi-B0:ng7hKxVfczI:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=iqRfe4Fi-B0:ng7hKxVfczI: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/iqRfe4Fi-B0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/3106/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/3106</feedburner:origLink></item>
		<item>
		<title>Linux 데스크탑에 ssd + hdd 구성이면 파티션은 어떻게?</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/16NrmcQ1DIs/3103</link>
		<comments>http://rein.kr/blog/archives/3103#comments</comments>
		<pubDate>Tue, 15 Jan 2013 15:06:15 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[회사]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=3103</guid>
		<description><![CDATA[내일 입사하시는 분이 사용할 용도로 데스크탑 머신 + 모니터(U2412M) 두 대가 왔다. 포장 풀고, 등록된 MAC 주소가지고 도메인 주소 설정하고, PXE 로 OS 설치 시작. 현재 설정된 preseed가 작년에 지급되던 데스크탑(i7-2600, hdd 구성) 기준이라, 이번에 지급되기 시작한 데스크탑(i5-3750, ssd + hdd 구성) 이랑 좀 안 맞아서 수동 설치를 해봤다. 좀 고민하다가 결국엔 / 와 swap [...]]]></description>
				<content:encoded><![CDATA[<p>내일 입사하시는 분이 사용할 용도로 데스크탑 머신 + 모니터(U2412M) 두 대가 왔다.</p>
<p>포장 풀고, 등록된 MAC 주소가지고 도메인 주소 설정하고, PXE 로 OS 설치 시작.</p>
<p>현재 설정된 preseed가 작년에 지급되던 데스크탑(i7-2600, hdd 구성) 기준이라, 이번에 지급되기 시작한 데스크탑(i5-3750, ssd + hdd 구성) 이랑 좀 안 맞아서 수동 설치를 해봤다.</p>
<p>좀 고민하다가 결국엔</p>
<ul>
<li>/ 와 swap 용으로 hdd를 (boot flag 걸고)</li>
<li>/home 용으로 ssd를</li>
</ul>
<p>설정했다.</p>
<p>빌드를 하거나 뭘 하거나 대부분은 ssd에서 할테고, 프로그램 류는 한 번 page cache에 올라가선 아마 안 내려올테니 (&#8230;) 그냥 잘 돌거라고 믿기로 했다.</p>
<p>(먼산)</p>
<p>&nbsp;</p>
<p>혹시 경험적으로, 혹은 측정치로 추천하는 구성이 있으시면 좀 알려주십시오 (&#8230;).</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=16NrmcQ1DIs:cX3rFOAxNCQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=16NrmcQ1DIs:cX3rFOAxNCQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=16NrmcQ1DIs:cX3rFOAxNCQ:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=16NrmcQ1DIs:cX3rFOAxNCQ: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/16NrmcQ1DIs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/3103/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/3103</feedburner:origLink></item>
		<item>
		<title>Python 기반의 static page 생성기로 블로그를 옮기려는 중</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/eMQCOoinKBQ/3098</link>
		<comments>http://rein.kr/blog/archives/3098#comments</comments>
		<pubDate>Sat, 12 Jan 2013 15:52:13 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[일상]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=3098</guid>
		<description><![CDATA[원래 내 의도는 최근에 읽은 책 (=&#8221;해커를 위한 디자인 레슨&#8221;) 과 게임 (=&#8221;어쌔신 크리드 2 및 그 확장팩, 3&#8243;)에 대한 리뷰를 쓰려는 거였다. 하지만 블로그 관리자 페이지 로딩이 너무 느려서 &#8212; WordPress 버전이 올라갈 수록 더 심한듯? &#8212; 좀 괴롭다. (일반 유저가 볼) 페이지 로딩 자체는 큰 차이가 없어서 그냥 쓸 생각이 많았는데 오늘 좀 [...]]]></description>
				<content:encoded><![CDATA[<p>원래 내 의도는 최근에 읽은 책 (=&#8221;해커를 위한 디자인 레슨&#8221;) 과 게임 (=&#8221;어쌔신 크리드 2 및 그 확장팩, 3&#8243;)에 대한 리뷰를 쓰려는 거였다.<br />
하지만 블로그 관리자 페이지 로딩이 너무 느려서 &#8212; WordPress 버전이 올라갈 수록 더 심한듯? &#8212; 좀 괴롭다.</p>
<p>(일반 유저가 볼) 페이지 로딩 자체는 큰 차이가 없어서 그냥 쓸 생각이 많았는데 오늘 좀 추가 많이 기운 듯 하다.</p>
<p>그래서 <a href="http://docs.getpelican.com/en/3.1.1/">Pelican</a> 이란 도구를 다음과 같은 이유로 시도해봤다: (이 순서대로 고려한 것은 아님)</p>
<ul>
<li>OpenSource</li>
<li>History가 길다 (+5yr)</li>
<li>현재도 개발이 진행되고 있다</li>
<li>Python 기반</li>
<li>Markdown 지원 (rst가 주 언어지만)</li>
<li>WordPress import 지원</li>
</ul>
<p>이걸 가지고 내 블로그를 import 해보니 몇 가지 문제가 있다: (WordPress 가 정의한 xml을 rst로 변환하는 도구가 포함되어 있다)</p>
<ul>
<li>멀티바이트 인코딩된 블로그 제목이면 rst 의 #### 이 부분을 짧게 계산해서 망한다. (글자 수를 세서 그런가)</li>
<li>일부 글에서 글자를 해석 못해서 망하고 있음</li>
<li>글 제목(정확히는 WordPress의 slug 값)을 이용해서 .rst 를 만드는데 urlencode 당한 문자열을 쓴다 -_-</li>
</ul>
<p>딱히 다른 대안이 없으면 importer를 고치고 어떻게 해봐야겠다;</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=eMQCOoinKBQ:62Y0X-2npFY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=eMQCOoinKBQ:62Y0X-2npFY:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=eMQCOoinKBQ:62Y0X-2npFY:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=eMQCOoinKBQ:62Y0X-2npFY: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/eMQCOoinKBQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/3098/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/3098</feedburner:origLink></item>
		<item>
		<title>2012년 git 통계 (@work)</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/BLwXASsR2xo/3090</link>
		<comments>http://rein.kr/blog/archives/3090#comments</comments>
		<pubDate>Mon, 31 Dec 2012 14:12:19 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[회사]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=3090</guid>
		<description><![CDATA[현재 일하고 있는 곳에서는 소스 저장소로 git을 이용하고 있다. 오늘 오후에 심심풀이로 (???) 적당한 스크립트를 돌려서 내가 commit 한 것에 대한 통계를 내봤다. (gitstats 를 이용해서 통계를 냈다.) 예전 회사에서 SVN stats 던가 하는 걸로 통계 낼 때는 천년 쯤 걸렸던 것 같은데, 로컬에 데이터가 다 있으니 금방 되더라. (상대적으로 history도 적고) 월 별 통계: [...]]]></description>
				<content:encoded><![CDATA[<p>현재 일하고 있는 곳에서는 소스 저장소로 git을 이용하고 있다. 오늘 오후에 심심풀이로 (???) 적당한 스크립트를 돌려서 내가 commit 한 것에 대한 통계를 내봤다. (<a href="http://gitstats.sourceforge.net/" target="_blank">gitstats</a> 를 이용해서 통계를 냈다.) 예전 회사에서 SVN stats 던가 하는 걸로 통계 낼 때는 천년 쯤 걸렸던 것 같은데, 로컬에 데이터가 다 있으니 금방 되더라. (상대적으로 history도 적고)</p>
<h2><strong>월 별 통계:</strong></h2>
<p>4월에 입사한 이후의 통계.</p>
<p><a href="http://rein.kr/blog/wp-content/uploads/2012/12/work2012_month_of_year_.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="work2012_month_of_year_" alt="work2012_month_of_year_" src="http://rein.kr/blog/wp-content/uploads/2012/12/work2012_month_of_year__thumb.png" width="482" height="182" border="0" /></a></p>
<p>올해는 여러 가지로 다사다난했던 것 같다. 중간중간 움푹 들어간 커밋 량을 보니 Orz.</p>
<p>내년엔 12월의 페이스로 진행할 수 있게 되길(…)</p>
<p>&nbsp;</p>
<h2><strong>요일/시간대 별 통계</strong> (heat map):</h2>
<p><a href="http://rein.kr/blog/wp-content/uploads/2012/12/work2012_hours.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="work2012_hours" alt="work2012_hours" src="http://rein.kr/blog/wp-content/uploads/2012/12/work2012_hours_thumb.png" width="475" height="192" border="0" /></a></p>
<p>목, 금이 평소보다 커밋을 더 많이 하는 듯. 그리고 주로 점심 먹고 온 후에 커밋을 하게 되는 것 같은데 … (점심 시간이 오후 1~2 사이)</p>
<p>커밋 로그에 따르면 주말 출근은 1회 (…).</p>
<p>&nbsp;</p>
<h2><strong>스크립트: </strong></h2>
<p><a href="https://www.kernel.org/pub/software/scm/git/docs/git-filter-branch.html" target="_blank">git filter-branch 의 man page</a>에 나오는 commit-filter 예제 – 특정 사용자의 커밋을 지우는 걸 조건을 바꿔서 – 를 수정해서 사용했다.</p>
<blockquote>
<pre>#!/bin/bash -ex
skip_commit()
{
  shift;
  while [ -n "$1" ];
  do
    shift;
    map "$1";
    shift;
  done;
}

git filter-branch --commit-filter '
  if [ "$GIT_AUTHOR_NAME" = "Jinuk Kim" ];
  then
    git commit-tree "$@";
  else
    skip_commit "$@";
  fi' HEAD</pre>
</blockquote>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=BLwXASsR2xo:f7t6nCSktuc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=BLwXASsR2xo:f7t6nCSktuc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=BLwXASsR2xo:f7t6nCSktuc:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=BLwXASsR2xo:f7t6nCSktuc: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/BLwXASsR2xo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/3090/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/3090</feedburner:origLink></item>
		<item>
		<title>2012, 내 프로그래밍 언어는…</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/nFtyF5YKd3o/3083</link>
		<comments>http://rein.kr/blog/archives/3083#comments</comments>
		<pubDate>Mon, 31 Dec 2012 12:34:23 +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[Python]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=3083</guid>
		<description><![CDATA[작년에 이어, 올해에도 twitter에 적은 #code212에 덧붙여 글 하나 쓰기. 올해 주로 사용한 언어는, Python Bash script C++ JavaScript C# Go 정도의 순서인 듯 하다. 작년의 순서와는 상당히 달라졌는데 그 배경은 역시 이직. Windows 에서 C++ 코드베이스에서 작업하던 환경에서, linux 위에서 python 코드베이스를 작업하니 바뀐 게 많지(…). &#160; Python 회사를 옮긴 이후로 C++ 코드는 한 [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://rein.kr/blog/archives/2843" target="_blank">작년에 이어</a>, 올해에도 twitter에 적은 #code212에 덧붙여 글 하나 쓰기.</p>
<p>올해 주로 사용한 언어는,</p>
<ul>
<li>Python</li>
<li>Bash script</li>
<li>C++</li>
<li>JavaScript</li>
<li>C#</li>
<li>Go</li>
</ul>
<p>정도의 순서인 듯 하다.</p>
<p>작년의 순서와는 상당히 달라졌는데 그 배경은 역시 이직.</p>
<p>Windows 에서 C++ 코드베이스에서 작업하던 환경에서, linux 위에서 python 코드베이스를 작업하니 바뀐 게 많지(…).</p>
<p>&nbsp;</p>
<p><strong>Python</strong></p>
<p>회사를 옮긴 이후로 C++ 코드는 한 줄도 안 짜고 python을 주 언어로 작업했다.</p>
<p>분산 서비스 (w/ restful interface)와 그 프런트엔드에 해당하는 웹 앱, 그리고 이를 테스트하는 코드들을 다 python으로 구성했다. 올해는 정말 python은 징그럽게(?)만진 듯.</p>
<p>감상을 적자면,</p>
<ul>
<li>편하다; 사실 이건 작년의 주 언어가 C++이라?</li>
<li>생각을 코드로 표현하는데 부분에 걸리는 시간엔 거의 C++ 수준에 다다를 정도로 쓴 것 같다</li>
<li>상대적으로 “뭘 만들지”에 집중하고 “어떻게 만들지”에는 조금 덜 신경 쓴다</li>
</ul>
<p>…</p>
<p>여하튼 python으로 작성한 서비스가 내년 중엔 아마 라이브로 전환 할 듯…</p>
<p><strong>Bash script</strong></p>
<p>Python으로 프로그램을 만들긴 하지만 이걸 실제로 배포하고, 설치하고, 설정하는 부분은 전부 bash script. 특히나 debian packaging하면서 갈수록 bash script 짜는 기술이 늘어가는 것 같다. 어흑</p>
<p><strong>C++</strong></p>
<p>이전 회사에선 주로 C++을 썼다. 그리고 2월 말까지는 C++로 코드 짰음 (사실 3월에 남은 날 수 출근할 때 C++ 코드 디버깅도 했다(…) )</p>
<p><strong>JavaScript (w/ html, css, …)</strong></p>
<p>Python으로 짠 서비스의 프런트엔드는 결국 html + JavaScript + css.</p>
<p>들어가서 바닥부터 만든 한 프런트엔드의 css를 직접 짜며 삽질하다가 bootstrap으로 바꾸고 신세계가 펼쳐졌다 (…).<br />
내가 작성한 JavaScript는 IE에서 안 돌기도 하고 – 나중에 합류한 프런트엔드 엔지니어 분이 해결해 주심 – 하여간 삽질이 Orz.</p>
<p>초반엔 사람이 없어서 짰는데 요즘은 거의 손 댈 일이 없는 듯. 그래도 어제 <a href="http://rein.kr/blog/archives/3070" target="_blank">포스팅 한 일</a> 같은 류를 처리하려면 어느 정도 알긴 해야 할 것 같은데;</p>
<p><strong>C#</strong></p>
<p>작년에 C# 배우면서 짰던 프로그램을 퇴사하기 전까지 유지 보수하다가 나왔음. 지금은 그 회사의 A모 게임과 B모 게임이 쓰고 있을 거라던데 난 모르겠다 (야).</p>
<p>이젠 Windows 환경이 아니라서 더 이상 만질 일은 없을 듯. (작년 감상을 보고 생각해도 이건 잘 된 일?)</p>
<p><strong>Go</strong></p>
<p>Go로 동작하는 서비스를 작성하겠다는 야망을 품었으나… (내년에 계속?)</p>
<p>&nbsp;</p>
<p><strong>정리:</strong></p>
<ul>
<li>Python 코드베이스를 작성하는 일로 옮겨왔다</li>
<li>Linux로 옮겨왔으니 bash 나 기타 등등 만질 일이 늘어남</li>
<li>Go로 서비스 작성하고 싶다 (…)</li>
<li>내년엔 C++ 만질 일이 생길지도…</li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=nFtyF5YKd3o:XJtdDBZXB3U:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=nFtyF5YKd3o:XJtdDBZXB3U:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=nFtyF5YKd3o:XJtdDBZXB3U:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=nFtyF5YKd3o:XJtdDBZXB3U: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/nFtyF5YKd3o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/3083/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/3083</feedburner:origLink></item>
		<item>
		<title>WebApp 안에 다른 WebApp 넣어서 보여주기</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/xl55butFRFY/3070</link>
		<comments>http://rein.kr/blog/archives/3070#comments</comments>
		<pubDate>Sun, 30 Dec 2012 14:10:26 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=3070</guid>
		<description><![CDATA[최근 몇 일간 이미 만들어진 WebApp A안에 다른 WebApp B이 하나의 페이지처럼 들어가 보이도록 하는 작업을 했다. 사용자는 A에는 접근할 수 있지만, B에는 (대부분) 접근할 수 없는 상태. 정석(?)은 사실 이런 식으로 해야 할 것 같지만: B를 RESTful API 혹은 어떤 web API를 갖는 서비스로 작성하고 (Service B) B의 RESTful API를 보여주는 view에 해당하는 WebApp을 [...]]]></description>
				<content:encoded><![CDATA[<p>최근 몇 일간 이미 만들어진 WebApp A안에 다른 WebApp B이 하나의 페이지처럼 들어가 보이도록 하는 작업을 했다. 사용자는 A에는 접근할 수 있지만, B에는 (대부분) 접근할 수 없는 상태.</p>
<p>정석(?)은 사실 이런 식으로 해야 할 것 같지만:</p>
<ul>
<li>B를 RESTful API 혹은 어떤 web API를 갖는 서비스로 작성하고 (Service B)</li>
<li>B의 RESTful API를 보여주는 view에 해당하는 WebApp을 작성하고 (App B)</li>
<li>A는 &#8216;Service B&#8217;를 써서 특정 페이지를 만든다</li>
</ul>
<p>하지만 그렇게 하지는 않고, 여름에 인턴으로 잠시 일했던 puzzlet군이 사용했던 방법을 좀 고쳐서 썼다.</p>
<p>Web B가 html5로 작성한거라서 http proxy 비슷한거 만들기는 편했다.</p>
<h2>인증</h2>
<p>다행히 이 두 웹앱은 인증 서비스는 공유한다. 그래서 A에서 인증한 shared-secret을 가지고 만든 데이터를 B에게 주고 이걸로 인증하게 했다.<br />
그리고 B에 접속할 떄 사용하는 세션 키를 A의 세션에 저장하고 꺼내서 쓰게 했다.</p>
<h2>페이지 접근</h2>
<p>A 의 특정 URL 밑에 오는 것은 B의 URL로 접근하게 했다. 다만 일부 접근할 수 없는 URI에 대한 처리는 있다.<br />
이런게 없었다면 그냥 reverse proxy쓰거나 하면 될 듯도.</p>
<p>web_app_A_host/page_B/&#8230; 이면 실제론  B의 페이지에 접근하게 했다. 실제론 URI가 완전히 맵핑되는 건 아니고, 특정 변환을 해주긴해야 해서 reverse-proxy를 쓰진 않았다.</p>
<h2>HTTP 응답 rewrite</h2>
<p>http 응답은 몇 가지 조건을 걸고 rewrite했다.</p>
<h3><strong>1.  http 헤더에 Location 필드가 있는 경우</strong></h3>
<p>30x나 201, 202인 경우 이게 붙어서 오는데, 이번 경우엔 201/202는 안 써서 그냥 30x에 Location field를 rewrite하게 했다.</p>
<h3><strong>2. html 페이지</strong></h3>
<p>href, src 등으로 오는 것 전부 rewrite.</p>
<p>그리고 나서 css, js, 실제 내용에 해당하는 부분을 찾았다. 그리곤 다음과 같이 합쳐서 내보냈다. html5lib이 xpath 로 DOM에 접근할 수 있어서 엄청 간단히 했다.</p>
<p><a href="http://rein.kr/blog/wp-content/uploads/2012/12/rewrite-html.png"><img alt="rewrite-html" src="http://rein.kr/blog/wp-content/uploads/2012/12/rewrite-html.png" width="365" height="600" /></a></p>
<h3><strong>3. css 추가 처리 </strong></h3>
<p>CSS의 경우 골치 아픈 문제가 생기더라. B에서 온 CSS 셀렉터에 해당하는게 A 안에도 있어서 레이아웃까지 깨지고 있었다. Orz.</p>
<p>그래서 위에서 한 것처럼 특정 class 밑에 B의 내용이 오게 강제하고, B에서 오는 모든 css 에는 셀렉터마다 (&#8230;) 맨 앞에 저 embedded가 붙게 했다.<br />
cssutils로 해석한 다음 각 셀렉터를 하나하나 업데이트하는 코드를 짰다.</p>
<p>약간 느려지긴 하던데 어차피 저건 정적으로 캐싱할 수 있으니까 신경 끄기로 (야).</p>
<p>&nbsp;</p>
<h2>결론(?)</h2>
<ul>
<li>http 요청하는 클라이언트 흉내내기는 재밌더라</li>
<li>CSS 때문에 귀찮아&#8230;</li>
<li>B가 사실 상 페이지 1개짜리 앱이니 그냥 했지, 안 그랬으면 RESTful API로 서비스 분리하는게 훨씬 속 편할 것 같다.</li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=xl55butFRFY:BEkoGtQhutE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=xl55butFRFY:BEkoGtQhutE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=xl55butFRFY:BEkoGtQhutE:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=xl55butFRFY:BEkoGtQhutE: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/xl55butFRFY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/3070/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/3070</feedburner:origLink></item>
		<item>
		<title>MacBook Air 설정 기록</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/JAGk92PIwn0/3064</link>
		<comments>http://rein.kr/blog/archives/3064#comments</comments>
		<pubDate>Sat, 29 Dec 2012 07:52:32 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[잡담]]></category>
		<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=3064</guid>
		<description><![CDATA[크리스마스 선물로 마느님께서 MacBook Air를 하사.(&#8230;) 여하튼 이제 Lion 부팅하고 1분 정도는 쓰기 괴롭고 + 파워케이블 뽑은 순간 꺼지는 MacBook[1] 는 과거 속으로. 대략 다음과 같은 순서로 설정했다. 나중에 밀고 다시 설치할 일 있으면 참고해야. AppStore를 통해서 설치했던 프로그램들 재설치 (iA Writer, OmniFocus, OmniGraffle, Caffeine, Caffeinated, Keynote, …); 이 글은 iA Writer에 남겼던 메모를 토대로 [...]]]></description>
				<content:encoded><![CDATA[<p>크리스마스 선물로 마느님께서 MacBook Air를 하사.(&#8230;)</p>
<p>여하튼 이제 Lion 부팅하고 1분 정도는 쓰기 괴롭고 + 파워케이블 뽑은 순간 꺼지는 MacBook<sup>[<a href="http://rein.kr/blog/archives/3064#footnote_0_3064" id="identifier_0_3064" class="footnote-link footnote-identifier-link" title="Unibody도 아니고 2008년에 초에 나온 모델; OS 버전만 올리면서 잘 썼지만 MountainLion 업데이트는 안되는 모델">1</a>]</sup> 는 과거 속으로.</p>
<p>대략 다음과 같은 순서로 설정했다. 나중에 밀고 다시 설치할 일 있으면 참고해야.</p>
<ol>
<li>AppStore를 통해서 설치했던 프로그램들 재설치 (iA Writer, OmniFocus, OmniGraffle, Caffeine, Caffeinated, Keynote, …); 이 글은 iA Writer에 남겼던 메모를 토대로 썼다.</li>
<li>Google Chrome 설치; 이후부터는 웹 브라우저를 써야 설치할 수 있는 애들이.</li>
<li>Firefox 및 ChatZilla 설치 (&#8230;)</li>
<li>iTerm2 설치; solarized theme으로 재설정</li>
<li>/usr/local 밑에 bash-4.2 설치</li>
<li>dot files 복원</li>
<li>NanumGothic-OTF와 NanumGothicCoding-*.ttf 설치</li>
<li>MacVim 설치</li>
<li>이전에 사용하던 Documents/*, Downloads/*, src/* 이전</li>
<li>Conatcts Google 계정에 연동</li>
<li>사용 중인 mail 서버 등록 (gmail은 템플릿이 있고, 사용 중인 exchange server는 auto-discovery로 잘 잡히더라)</li>
</ol>
<p>이걸로 대략 끝.</p>
<p>&nbsp;</p>
<p>본격적으로(?) 여기서 뭔가 개발하려면 python도 새로 빌드해야할 것 같긴한데, 그건 당장의 일이 아니니 나중에 하는 걸로(&#8230;).</p>
<ol class="footnotes"><li id="footnote_0_3064" class="footnote">Unibody도 아니고 2008년에 초에 나온 모델; OS 버전만 올리면서 잘 썼지만 MountainLion 업데이트는 안되는 모델</li></ol><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=JAGk92PIwn0:S9QLOmvfSZ4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=JAGk92PIwn0:S9QLOmvfSZ4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=JAGk92PIwn0:S9QLOmvfSZ4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=JAGk92PIwn0:S9QLOmvfSZ4: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/JAGk92PIwn0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/3064/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/3064</feedburner:origLink></item>
		<item>
		<title>자유롭게 말하고 생각할 권리를 위해 투표하겠다</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/owsLbfRWHk4/3058</link>
		<comments>http://rein.kr/blog/archives/3058#comments</comments>
		<pubDate>Tue, 18 Dec 2012 13:36:54 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[일상]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=3058</guid>
		<description><![CDATA[내가 대학(원)을 다니고 사회 초년병 시절이었던 몇 년간에 대해 떠올려보자면 몇 가지는 보장된 것 같다. 적어도, 내가 생각하고, 그 생각을 말하는데 뭔가를 신경 쓸 일은 (없거나) 적었던 것 같다. 하지만 지난 몇 년은 생각이야 막을 수 없지만 내가 생활하는 공간 (오프라인/온라인 모두) 에서 생각을 말하는 것 자체를 `스스로&#8217;  검열하게 되더라.[1] 최근 뉴스에 따르면 한국은 ITU 총회에서 [...]]]></description>
				<content:encoded><![CDATA[<p>내가 대학(원)을 다니고 사회 초년병 시절이었던 몇 년간에 대해 떠올려보자면 몇 가지는 보장된 것 같다. 적어도, 내가 생각하고, 그 생각을 말하는데 뭔가를 신경 쓸 일은 (없거나) 적었던 것 같다.</p>
<p>하지만 지난 몇 년은 생각이야 막을 수 없지만 내가 생활하는 공간 (오프라인/온라인 모두) 에서 생각을 말하는 것 자체를 <em>`스스로&#8217;  검열하게 되더라</em>.<sup>[<a href="http://rein.kr/blog/archives/3058#footnote_0_3058" id="identifier_0_3058" class="footnote-link footnote-identifier-link" title="멀리 갈 것도 없이 최근에 RT했다고 형을 선고받은 박정근 씨의 예를 떠올려보자.">1</a>]</sup></p>
<p>최근 <a href="http://arstechnica.com/tech-policy/2012/12/the-uns-telecom-conference-is-finally-over-who-won-nobody-knows/">뉴스</a>에 따르면 한국은 ITU 총회에서 <strong>`인터넷을 검열하는 안&#8217;</strong><sup>[<a href="http://rein.kr/blog/archives/3058#footnote_1_3058" id="identifier_1_3058" class="footnote-link footnote-identifier-link" title="패킷 감청 장치를 mandatory화하는 안을 포함하는&hellip;">2</a>]</sup> 에 대해 찬성했다. 그나마 미국, 영국, 유럽 연합, 캐나다 등의 자유주의 국가들이 반대에도 불구하고 일단 일부 국가는 사인했다 &#8212; 여기에는 러시아, 중국 등 자국민에게 억압적인 정부들이 포함되어 있다. 그러니까 한국은 찬성을 표명한 국가에 속한다.<br />
어쩌다 표현의 자유를 심하게 억누를 수 있는 &#8212; 적어도 한국의 전기통신기본법의 방향에도 어긋난다고 생각한다 &#8212; 이런 ITU 안을 찬성하는 국가가 되었는지 참담할 따름이다.</p>
<p>게다가 <a href="http://www.leejeonghwan.com/media/archives/002237.html">방송통신위원회가 한다는 소리는 &#8216;국익에 배치되지 않는다&#8217; </a>란다. 그네들이 그 간 열심히 떠들어 댄 `국격&#8217; 떨어지는 소리다 아주&#8230;<br />
ITU에 관해 한국이 천명한 바만 봐서는 자유주의 국가가 아니라 러시아나 중국같이 공산국가스러운 경찰 국가가 되고 싶은 것 같다.<br />
그리고 집권 중인 새누리당에게 5년이 더 주어진다면 견디기 힘들 정도의 통제가 행해질 거라 생각한다.</p>
<p>나는 내 생각을 말할 수 있는 자유를 원한다. 내가 바라는 대한민국은 자유롭고 정의로운 국가이지 경찰 국가가 아니다.<br />
민주당이 뭘 할지는 모르겠지만, 적어도 인권변호사로 인생을 보낸 문재인 후보는 현재보다 이 방향 쪽으로 나라를 이끄리라 믿는다.</p>
<p>나는 적어도 앞으로의 5년 동안의 내 생각과 표현의 자유를 위해 투표하겠다.</p>
<ol class="footnotes"><li id="footnote_0_3058" class="footnote">멀리 갈 것도 없이 최근에 RT했다고 형을 선고받은 박정근 씨의 예를 떠올려보자.</li><li id="footnote_1_3058" class="footnote">패킷 감청 장치를 mandatory화하는 안을 포함하는&#8230;</li></ol><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=owsLbfRWHk4:lHEFm3tuJl8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=owsLbfRWHk4:lHEFm3tuJl8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=owsLbfRWHk4:lHEFm3tuJl8:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=owsLbfRWHk4:lHEFm3tuJl8: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/owsLbfRWHk4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/3058/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/3058</feedburner:origLink></item>
		<item>
		<title>Windows Server 2012 가상화 관련 영업멘트 유감</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/Gqzn0F1XW9A/3056</link>
		<comments>http://rein.kr/blog/archives/3056#comments</comments>
		<pubDate>Wed, 12 Dec 2012 23:10:20 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=3056</guid>
		<description><![CDATA[얼마 전에 Windows Server 2012 설명(=영업)을 들을 기회가 있었는데, 차마 그 자리에서 뭐라 그러진 못하고 (…) 여기에 간단히 적어두기. 1. Windows Server 2012의 가상화 기능은 가장 최신의 linux kernel에 추가되었고 그런 건 hyper-v (MS의 가상화 기술) 뿐이다. 고갱님 여기서 구라치다 걸리면 피곤합니다 (…). 가상화가 VM에서 돌아가는 OS가 뭔지 모르면 매우 좋을 것 같지만 실제로는 성능 [...]]]></description>
				<content:encoded><![CDATA[<p>얼마 전에 Windows Server 2012 설명(=영업)을 들을 기회가 있었는데, 차마 그 자리에서 뭐라 그러진 못하고 (…) 여기에 간단히 적어두기.</p>
<h2>1. Windows Server 2012의 가상화 기능은 가장 최신의 linux kernel에 추가되었고 그런 건 hyper-v (MS의 가상화 기술) 뿐이다.</h2>
<p>고갱님 여기서 구라치다 걸리면 피곤합니다 (…). 가상화가 VM에서 돌아가는 OS가 뭔지 모르면 매우 좋을 것 같지만 실제로는 성능 때문에 (syscall 할 때마다 가상 머신 OS – 가상 머신 device emulation – 물리 머신 OS – 물리 머신 device를 다 거치면 오래 걸린다) para-virtualization(=반가상화라고 번역하기도)을 하거나 일부 성능에 민감한 장치(block IO, network IO, graphic card …)에는 가상 머신 device emulation을 건너뛸 방법을 찾는다.</p>
<p>Hyper-v가 kernel mainline에 올라간 건 3.3 때 얘기고, 저 설명회(?)할 당시에 3.7 릴리즈 사이클이 진행 중이었다. (그리고 어제, 2012-12-12에 3.7 stable이 릴리즈 되었다) 게다가 mainline 말고 드라이버만 따지면 훨씬 오래된(=서버 2008시절; 2.6.xx 시절) 얘기기도 하다.</p>
<p>근데 Xen과 VMware가 linux kernel의 반가상화 드라이버들을 이용한 건 2.6 후반 (2.6 개발 사이클이 너무 길다;; ) 얘기다. 상대적으로 역사가 짧은 KVM도 포함된 지 오래되었음. (이것 역시 2.6.xx 시절의 얘기)</p>
<p>반대로 Windows에서 linux의 반가상화 드라이버인 virtio 나 VMware의 반가상화 드라이버를 쓸 수 있었던 게 이미 수년이 지난 얘기인걸 생각하면 (…).</p>
<h2>2. Windows Server 2012의 반가상화 드라이버의 block device IO 성능이 좋아서 데이터베이스 인스턴스를 운영할 수 있다.</h2>
<p>많은 기술들이 그렇듯이 상황에 따라 다르다. 지난 달 말에 모 게임 서버팀장을 만났는데 (서비스 중인 게임이 DB 서버에 들어간 돈이 좀 많다) 이 얘길 했더니 코웃음 치더라. IOPS가 모자란다고 (…).</p>
<p>그래도 M$ 내부의 빌드팜에서도 쓸 수 있을 정도라 하니 성능은 좋은 편이겠지만 영업 멘트만 읽으면 좀 곤란하지.</p>
<h2>3. MS가 만든 네트워크 가상화 솔루션은 훌륭하다.</h2>
<p>…뭐라고! NVGRE를 니네가 만들었냐!!<sup>[<a href="http://rein.kr/blog/archives/3056#footnote_0_3056" id="identifier_0_3056" class="footnote-link footnote-identifier-link" title="그럴 리가 없지. 흔히 그렇듯이 CISCO에서 나옴">1</a>]</sup> </p>
<p>여하튼 영업멘트에서 이거 기반으로 가상 네트워크를 구축할 수 있고 반가상화 드라이버 때문에 성능도 좋다라는 거였는데. 일단 네트워크 가상화의 성능 문제는 간단하지 않다.   <br />원래 하드웨어에서 할 부분을 CPU가 대신하는 부분이 많기 때문에 CPU 로드가 꽤 높다.</p>
<p>아마 이쪽 엔지니어링 경력이 없는 에반젤리스트라 그럴 수도 있겠지만, 상대한테 매우 중요할 수도 있는 부분에서 이렇게 말하면 곤란하다. <a href="https://blogs.technet.com/b/windowsserver/archive/2012/04/16/introducing-windows-server-8-hyper-v-network-virtualization-enabling-rapid-migration-and-workload-isolation-in-the-cloud.aspx" target="_blank">TechNet의 blog 포스팅</a>에서도 고성능 네트워크가 필요하면 (이러면 사용자간 네트워크가 분리되어 있지 않기 때문에 사실 상 가상화가 아닌) IP rewrite를 쓰라고 되어있다. </p>
<p>저 글에서도 말하고 있지만 LSO 같은 기능을 이용하게 구성된 stateless transport tunneling (=STT) 같은 걸 써야 한다. 아니면 CPU 오버로드를 버틸 생각을 하고 GRE를 그냥 쓰거나.</p>
<p>&#160;</p>
<p>간단히 정리하자면,</p>
<ul>
<li>영업은 영업</li>
<li>에반젤리스트도 해당 회사에 맞는 영역으로 보내주시면 좋겠습니다(…)</li>
<li>(환경에 따라 다르겠지만) VMware 솔루션(vCenter?)을 대체하는 게 아니면 큰 임팩트는 없을 것 같다.</li>
</ul>
<ol class="footnotes"><li id="footnote_0_3056" class="footnote">그럴 리가 없지. 흔히 그렇듯이 CISCO에서 나옴</li></ol><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=Gqzn0F1XW9A:F6MuWX8fcnQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=Gqzn0F1XW9A:F6MuWX8fcnQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=Gqzn0F1XW9A:F6MuWX8fcnQ:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=Gqzn0F1XW9A:F6MuWX8fcnQ: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/Gqzn0F1XW9A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/3056/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/3056</feedburner:origLink></item>
		<item>
		<title>신입 SW 엔지니어 / 프로그래머의 이력서에 바라는 점</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/KFexyuBM7tY/3042</link>
		<comments>http://rein.kr/blog/archives/3042#comments</comments>
		<pubDate>Fri, 12 Oct 2012 00:25:56 +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=3042</guid>
		<description><![CDATA[아침부터 꼰대질 좀 해보자 (&#8230;). 최근 이력서 읽으면서 느낀 점 정리. 미리 요약: 첨부 파일은 os/locale에 구애 받지 않는 문서/압축 포맷을 쓰자 지원하는 부서에 대해선 제대로 확인해라 프로그래머라면 프로그래밍을 몰라선 안되고 기본기가 너무 부족해도 곤란. 반대로 만들어본게 있다면 적극 어필하자 빈칸은 남겨두어도 괜찮다 채점자에 따라선 메일주소나 링크한 블로그나 홈페이지도 다 읽어본다 이력서의 첨부 문서가 . [...]]]></description>
				<content:encoded><![CDATA[<p>아침부터 꼰대질 좀 해보자 (&#8230;). </p>
<p>최근 이력서 읽으면서 느낀 점 정리. </p>
<blockquote><p>
미리 요약:</p>
<ul>
<li>첨부 파일은 os/locale에 구애 받지 않는 문서/압축 포맷을 쓰자</li>
<li>지원하는 부서에 대해선 제대로 확인해라</li>
<li>프로그래머라면 프로그래밍을 몰라선 안되고 기본기가 너무 부족해도 곤란. 반대로 만들어본게 있다면 적극 어필하자</li>
<li>빈칸은 남겨두어도 괜찮다</li>
<li>채점자에 따라선 메일주소나 링크한 블로그나 홈페이지도 다 읽어본다</li>
</ul>
</blockquote>
<p>이력서의 첨부 문서가 . hwp면 열어 볼 방법이 없다. 다른 사항이 어지간히 좋지 않고서야 더 이상 읽지 않는다. .pdf나 .xps, 하다못해 그나마 de facto standard인 .docx라도.<sup>[<a href="http://rein.kr/blog/archives/3042#footnote_0_3042" id="identifier_0_3042" class="footnote-link footnote-identifier-link" title="곧 구글 문서의 .doc 지원이 끊기는 거류생각하면 장기적으론 .doc는 좀 곤란하다.">1</a>]</sup> 생각같아선 LaTeX+pdf 이면 좋겠지만 그런 사례는 지금까지 세 번 밖에 못 봄. </p>
<p>한글 이름의 파일을 포함해서 .zip 파일을 만들지 말자. 다른 대안 (.rar, .7z) 을 쓰거나 아니면 ascii 영역만 쓰거나. 서류 평가하는 사람이 맥을 쓸지 리눅스를 쓸 지 어찌아냐. 프로그래머라면 자신이 다국어 환경 / 다중 인코딩 환경에 대한 최소한의 개념이 있어야 한다. </p>
<p>자기가 가고 싶은 부서가 정말 그 회사에 있는지는 좀 확인하자. 관계사에 있는 부서를 쓰는 건 양반. 써드파티의 부서명이 나오면 뭔가 할 말이 없다. </p>
<p>프로그래머 뽑는데 &#8220;들어가서 열심히 배우겠습니다&#8221;만 있는 건 곤란하다. 수상안전 요원을 찾는데 물에 뜨지도 못하는 사람을 고려할 순 없다. 스스로 쓰려고 작성한 프로그램이나 서비스가 있다면 그 지원자는 합격할 가능성이 정말 높다.</p>
<p>자기가 작성한 소스코드의 인코딩이 뭔지는 좀 신경 써 주자. 이건 C++ 표준 소스 인코딩 문제이기도 한데, 시대(?)를 생각해서라도 utf-8 같은 걸 좀 쓰자.</p>
<p>그리고 빈 칸을 다 채우고 싶은 욕구는 좀 자제하자. 신입인 경우엔 특히. 이력/수상경력에 교내 뭐시기나 관계 없는 업종의 파트타임 경력, 운전면허나 MOS 적어넣는 것 보면 짜증난다. </p>
<p>그리고 메일 주소나 홈페이지/블로그 주소를 적으면 주소 자체가 평가 대상이 될 수도 있다. 메일 주소가 serial.killer@example.com이라거나 하면 좀 곤란하다. 입력해 놓은 블로그에 불법 게임 서버 운영법을 써놓으면 (&#8230;).</p>
<ol class="footnotes"><li id="footnote_0_3042" class="footnote">곧 구글 문서의 .doc 지원이 끊기는 거류생각하면 장기적으론 .doc는 좀 곤란하다.</li></ol><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=KFexyuBM7tY:--3V1eJ0tnY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=KFexyuBM7tY:--3V1eJ0tnY:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=KFexyuBM7tY:--3V1eJ0tnY:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=KFexyuBM7tY:--3V1eJ0tnY: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/KFexyuBM7tY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/3042/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/3042</feedburner:origLink></item>
		<item>
		<title>KGC2012: Avoiding Developer Taxes</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/aM22hQcd7_w/3035</link>
		<comments>http://rein.kr/blog/archives/3035#comments</comments>
		<pubDate>Mon, 08 Oct 2012 11:55:19 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Game]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[KGC2012]]></category>
		<category><![CDATA[lua]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=3035</guid>
		<description><![CDATA[GDC 2012의 “Robustification Through Introspection and Analysis Tools (Avoiding Developer Taxes” 와 유사한 내용인 듯. 강연 내용에 해당하는 코드(clang-extract)는 https://github.com/sk-havok/clang-extract 에서 볼 수 있다. 내용 요약: 고질적인 게임 개발 비용들(taxes) 직렬화 메모리 정보 보기 스크립트 바인딩 버전 관리 Reflection C++로 개발할 때 reflection 을 이용해서 푼다. 여기엔 이런 문제가 있다: 어떻게 리플렉션을 만들까? 어떻게 (소스 [...]]]></description>
				<content:encoded><![CDATA[<p>GDC 2012의 <a href="http://schedule.gdconf.com/session/6641">“Robustification Through Introspection and Analysis Tools (Avoiding Developer Taxes”</a> 와 유사한 내용인 듯.</p>
<p>강연 내용에 해당하는 코드(clang-extract)는 <a href="https://github.com/sk-havok/clang-extract">https://github.com/sk-havok/clang-extract</a> 에서 볼 수 있다.</p>
<p>내용 요약:</p>
<p><strong>고질적인 게임 개발 비용들(taxes)</strong></p>
<p>직렬화</p>
<p>메모리 정보 보기</p>
<p>스크립트 바인딩</p>
<p>버전 관리</p>
<p><strong>Reflection</strong></p>
<p>C++로 개발할 때 reflection 을 이용해서 푼다. 여기엔 이런 문제가 있다:</p>
<ul>
<li>어떻게 리플렉션을 만들까?</li>
<li>어떻게 (소스 코드와 데이터에) 싱크가 맞을까?</li>
<li>견고성 (robustness)</li>
</ul>
<p>수동으로 처리하는 것은 문제가 많다. (buggy!)</p>
<p>regex 등으로 헤더를 처리하는 것도 마찬가지.</p>
<p>그리고…</p>
<ol>
<li>하지만 C++에는 reflection이 없다</li>
<li>GCC XML을 써봤다. 느리고 개발도 완성 상태가 아님<sup>[<a href="http://rein.kr/blog/archives/3035#footnote_0_3035" id="identifier_0_3035" class="footnote-link footnote-identifier-link" title="예전에 C++ 헤더들을 GCC-XML의 python bindiong으로 해석해서 이를 처리하기 위한 script 등을 만드는 작업을 했었다. 흑흑 이걸 좀 더 했으면 GDC감인가!">1</a>]</sup></li>
<li>clang + LLVM frontend를 수정해서 reflection 생성기 개발</li>
</ol>
<p>C++ headers –&gt; LLVM + clang –&gt; DB 로 변환<br />
그리고 이걸 이용해서 리플렉션 생성, 스크립트 생성. 그리고 정적 분석.</p>
<p>그리고 이 리플렉션을 쓰면 직렬화는 껌(…).</p>
<p>메모리 alignment를 해석해서 구조체의 메모리 배치를 효율적으로 바꾼다거나 하는 것도 가능.</p>
<p>LLVM+clang pass는 견고하고, 싱크가 안 맞는 문제를 방지</p>
<p>DB Consumer pass 는 컴파일 이전에 논리적인 문제를 찾고, 런타임 문제를 컴파일 시간에 잡게 한다.</p>
<p>유닛 테스트 역시 (자동으로) 리플렉션 데이터를 검사할 수 있게 됨.</p>
<p>&nbsp;</p>
<p><strong>Language Binding</strong></p>
<p>C++을 스크립트에 바인딩 하려면 문제가 많음. 다만 리플렉션을 쓰면 데이터는 자연스럽게 됨. 그렇지만 callable들은 여전히 힘듬.</p>
<p>함수 trampoline 의 경우 C++ 함수 signature를 처리하기 위해서 생성하는데, 함수 signature마다 bridge 함수를 만드는 쪽이 함수마다 wrapper를 만드는 것보다 싸다.<sup>[<a href="http://rein.kr/blog/archives/3035#footnote_1_3035" id="identifier_1_3035" class="footnote-link footnote-identifier-link" title="함수 N개에 대해 400bytes 씩인 것 vs. 40 * N + 60 * 함수 signature 수 정도라서; 아 근데 60인지 manuscript 안 보면 확인을 못하겠다 ㅠㅠ">2</a>]</sup></p>
<p><strong>메모리 리포팅</strong></p>
<p>Leap frog 테크닉을 쓴다: (일부) 메모리 할당의 타입을 기록하고, 이 오프셋과 사이에 있는 데이터를 유추. (indirect pointers)</p>
<p>그리고 stack walk하면서 이에 대한 데이터를 추정해서 메모리 할당 맵을 offline으로 생성할 수 있게 된다. 그렇지만 일부 컨테이너 류 등에서는 false positive가 있을 수 있고, obfuscated pointer<sup>[<a href="http://rein.kr/blog/archives/3035#footnote_2_3035" id="identifier_2_3035" class="footnote-link footnote-identifier-link" title="p ^=1; 같은 포인터 연산">3</a>]</sup> 나 타입을 알 수 없는 void* 류는 처리 안됨. 그래도 디버그 모드는 콜스택과 시간을 남겨서 처리한다.</p>
<p>…로 annotated memory data를 만들 수 있게 함.</p>
<p>&nbsp;</p>
<p><strong>버전 관리</strong></p>
<p>버전 관리는 쉽지 않음. 매뉴얼하게 하면 버그 나오기도 매우 쉽고 코드 관리도 힘들다.</p>
<p>이걸 snapshot versioning으로 구현. (reflection data의 CRC 이용해서 reflection 결과가 바뀌는 걸 추적)</p>
<p>하지만 이것의 오버헤드 때문에 좀 더 세밀한 단위로 변경 사항을 추적하고 이걸 patching하는 코드를 (semi-automatic하게) 만들게 함.</p>
<p>&nbsp;</p>
<p><strong>결론</strong></p>
<p>코드 말고 데이터를 생성하자. 데이터가 더 작고 용도도 많다.</p>
<ol class="footnotes"><li id="footnote_0_3035" class="footnote">예전에 C++ 헤더들을 GCC-XML의 python bindiong으로 해석해서 이를 처리하기 위한 script 등을 만드는 작업을 했었다. 흑흑 이걸 좀 더 했으면 GDC감인가!</li><li id="footnote_1_3035" class="footnote">함수 N개에 대해 400bytes 씩인 것 vs. 40 * N + 60 * 함수 signature 수 정도라서; 아 근데 60인지 manuscript 안 보면 확인을 못하겠다 ㅠㅠ</li><li id="footnote_2_3035" class="footnote">p ^=1; 같은 포인터 연산</li></ol><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=aM22hQcd7_w:JVCVPwjRJH0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=aM22hQcd7_w:JVCVPwjRJH0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=aM22hQcd7_w:JVCVPwjRJH0:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=aM22hQcd7_w:JVCVPwjRJH0: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/aM22hQcd7_w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/3035/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/3035</feedburner:origLink></item>
		<item>
		<title>이사 삽질</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/HVrFA9Zgwgc/3030</link>
		<comments>http://rein.kr/blog/archives/3030#comments</comments>
		<pubDate>Fri, 05 Oct 2012 12:24:04 +0000</pubDate>
		<dc:creator>rein</dc:creator>
				<category><![CDATA[일상]]></category>
		<category><![CDATA[잡담]]></category>

		<guid isPermaLink="false">http://rein.kr/blog/?p=3030</guid>
		<description><![CDATA[8월 말에 새 집으로 이사를 했다. 다만 전입 신고는 이번 주에야 했음. 어쩌다 그렇게 되었나를 적어보자면 이전 집 임대인이 “집도 안 나가는데 보증금을 어떻게 주냐” 따위의 소리나 하고 있어서. 아니 법대로 하자며. 게다가 전세금을 올려놔서 (1.2억이던 전세금을 1.5억에 내놨다) 안 나가고 있었음. 그래서 다음과 같은 파란 만장한 일정을. 어흑. 1. 6월 초에 이사 가겠다고 이전에 [...]]]></description>
				<content:encoded><![CDATA[<p>8월 말에 새 집으로 이사를 했다. 다만 전입 신고는 이번 주에야 했음. 어쩌다 그렇게 되었나를 적어보자면 이전 집 임대인이 “집도 안 나가는데 보증금을 어떻게 주냐” 따위의 소리나 하고 있어서. <strike>아니 법대로 하자며</strike>. 게다가 전세금을 올려놔서 (1.2억이던 전세금을 1.5억에 내놨다) 안 나가고 있었음.</p>
<p>그래서 다음과 같은 파란 만장한 일정을. 어흑.</p>
<p>1. 6월 초에 이사 가겠다고 이전에 살던 집 임대인에게 통보함.</p>
<p>2. 7월 중순에 8월 말에 이사 갈 집 전세 계약.</p>
<p>3. 8월 말에 이사. 그리고 이전 집의 계약 만료. 이걸 예상하고 이전 집 전세금만큼 대출 받았음. 월급 통장에 카드에 다 있어봐야 국민은행 이자율은 5.5%. 잊지 않으마(…).</p>
<p>4. 계약이 만료되었으니 임차권 등기 절차 밟기 시작(8/30); 여러모로 바쁠 때라 법무사에게 맡겼다. 실제로 들어가야 할 돈 보다 10만원 쯤 든다. (실제 비용 자체는 임대인이 내지 임차인이 내야 하는 게 아님…)<sup>[<a href="http://rein.kr/blog/archives/3030#footnote_0_3030" id="identifier_0_3030" class="footnote-link footnote-identifier-link" title="몇 가지 서류가 필요했다. 살던 집의 계약서, 주민등록등본, 집 도면 등등이 필요하다; 도면은 구청이나 동사무소에서 발급해주는데, 오래된 집은 이게 없다. 하지만 없으면 손으로 대충(?) 그리면 됨.">1</a>]</sup> 가장 중요한 건 임대인의 `주민등록상 주소’를 정확히 알아야 한다. 안 그러면 이 이후 과정에서 망할 수 있음. 여하튼 계약 만료 다음 날 가서 신청하고 +3일 후 다음 스텝</p>
<p>5. (법원에서) 임대인에게&#160; 매일 집에 뻔히 있는 임대인들이 폐문 부재 (문이 잠겨 있었다)로 절차가 늘어지기 시작. (실제로 발송 후에 대략 +4업무일 쯤 걸리는 듯)</p>
<p>6. 2차 시도 후 안되면 법원에서는 `임대인이 받은 셈 치고’ 다음 단계로 넘어간다. 법원에서 등기소로 등기 촉탁(?) 절차가 시작.</p>
<p>7. 다시 2~3 업무일이 지나면 등기소에 등기 명령이 도착한다. 이때부터 등기부등본 조회할 때 명령 진행 상태가 보인다. 조사 대기 상태가 되었다가 하루 쯤 지나면 등본에 기재된다.</p>
<p>8. 이제 전입 신고를 할 수 있는 상태가 되어 전입 신고. 이게 대략 10/2.</p>
<p>8에 대해선 법무사 말에 따르면 (…) 계약 당사자 이외의 가족에 대해 (새로 이사간 집에 대해) 전입 신고를 미리 하는 것은 가능한데, 이게 판례에 따라 대항력 여부가 달라지니 난 귀찮아서 그냥 안 했음.</p>
<p>그리고 이전 집 임대인에게 가서 “2주 안에 진전이 없으면 지급 명령 신청하겠다”고 했더니 싸게 내놓는단다. 그리고 오늘은 계약금에 해당하는 천 만원을 받았음. 싸게 내놓으니 금방 나가는 구만. 이제 할 일은 임대인 스스로 말한 “이자는 내주마” 항목을 받아내야. 다음 임차인(=세입자)이 들어온다는 11/10 기준으로 하면 대략 130만원 정도를 받아야 한다. 과연 이제 무슨 뻘짓을 할지 기대가 된다.</p>
<p>&#160;</p>
<p><strong>결론:</strong></p>
<p>이사 가고 싶은데 임대인이 돈 안주겠다 드립을 치면 다음과 같은 절차를 밟으면 된다. 이사 계획을 세운다면 (임대인한테 돈 못 받는 부분은 대출이나 예금 등으로 메꿀 수 있다고 가정) 빨라도 2주, 내 경우처럼 임대인이 집을 비우거나 (비운 척 하거나?) 하면 한 달 가까이 걸리니 이걸 염두에 두고 진행하시라. 안 그러면 나처럼 한 달 씩 전입 신고 못하는 사태가 생긴다.</p>
<ol class="footnotes"><li id="footnote_0_3030" class="footnote">몇 가지 서류가 필요했다. 살던 집의 계약서, 주민등록등본, 집 도면 등등이 필요하다; 도면은 구청이나 동사무소에서 발급해주는데, 오래된 집은 이게 없다. 하지만 없으면 손으로 대충(?) 그리면 됨.</li></ol><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=HVrFA9Zgwgc:ypnOXh9c33w:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=HVrFA9Zgwgc:ypnOXh9c33w:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=HVrFA9Zgwgc:ypnOXh9c33w:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=HVrFA9Zgwgc:ypnOXh9c33w: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/HVrFA9Zgwgc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/3030/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/3030</feedburner:origLink></item>
		<item>
		<title>새 PC 조립</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/T1_sIx7SbNw/3025</link>
		<comments>http://rein.kr/blog/archives/3025#comments</comments>
		<pubDate>Mon, 17 Sep 2012 22:36:47 +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=3025</guid>
		<description><![CDATA[이미 3주 다 된 일이지만 정리하는 시점이 Orz. 이사할 때까지 큰 지출은 없애자고 해서 이사 직후(…)까지 버티다가 새 컴을 조립.[1] 언젠가부터 직접 조립하기 귀찮아서 조립비(=10,000~15,000원쯤?) 내고 조립해서 보내게 했는데, 당일 마감 시한 지났다고(…) 조립비를 적립금으로 돌리고 보낸 ezguide 잊지 않겠다. 부품 사양 검색하는 것도 귀찮아서 대략 ars technica 연재글들만 스크랩했다가 봤다. 연재 시기 때문에 포럼 [...]]]></description>
				<content:encoded><![CDATA[<p>이미 3주 다 된 일이지만 정리하는 시점이 Orz.</p>
<p>이사할 때까지 큰 지출은 없애자고 해서 이사 직후(…)까지 버티다가 새 컴을 조립.<sup>[<a href="http://rein.kr/blog/archives/3025#footnote_0_3025" id="identifier_0_3025" class="footnote-link footnote-identifier-link" title="하지만 카드 결제일 기준으로 이사 비용과 한꺼번에 묶여서 나올 것이란 게 함정">1</a>]</sup> 언젠가부터 직접 조립하기 귀찮아서 조립비(=10,000~15,000원쯤?) 내고 조립해서 보내게 했는데, 당일 마감 시한 지났다고(…) 조립비를 적립금으로 돌리고 보낸 ezguide 잊지 않겠다.</p>
<p>부품 사양 검색하는 것도 귀찮아서 대략 ars technica 연재글들만 스크랩했다가 봤다. 연재 시기 때문에 포럼 게시물도 같이 봤음.</p>
<ul>
<li><a href="http://arstechnica.com/gadgets/2011/12/ars-technica-system-guide-december-2011/2/">Ars Technica system guide: December 2011</a></li>
<li><a href="http://arstechnica.com/civis/viewtopic.php?f=8&amp;t=1173184">Ars System Guide: May 2012 update</a></li>
</ul>
<p>간략히 요약하자면, 저 둘 사이의 차이는</p>
<p>* 인텔의 새 CPU 군이 나옴 (Ivy Bridge)</p>
<p>* AMD와 nVidia의 새 그래픽카드 군이 나옴 (Radeon HD 7xxx, Geforce 6xx)</p>
<p>정도임. (너무 러프한가?)</p>
<p>&nbsp;</p>
<p>위 가이드에서 “Hot Rod”로 분류된 기준에 따라 시스템을 아래와 같이 구성.</p>
<ul>
<li>intel i5-3570: 오버클럭킹에는 관심 없음.</li>
<li>intel DH77KC M/B: 역시 오버클럭킹은 신경 안 쓰는 구성. ASUS 보드를 그냥 쓸까 하다가 익숙한 인텔보드 (가격도 2만원 안쪽 차이) 쓰기로.</li>
<li>SEC DDR3 4G (PC3 12800) * 4: 가이드에서 추천한 양의 두 배. 순전히 램 드라이브 쓰려고.</li>
<li>잘만 Radeon HD7850 D5 2G: 가이드대로 고름. 추천 품 중에 이게 제일 쌈. 모니터 해상도(1920&#215;1200) 맞춰서 메모리는 좀 많게.</li>
<li>SEC 830 SSD (128GB) + WD Caviar Blue (500G): 적절한 게이밍 PC 구입을 위한 조합으로 고른 조합. 하드디스크 1TB가 필요한진 의문이라 500GB로. 추천품 대신 SEC껄 쓰기로 한건 성능 그래프는 비슷한데 더 싸서. 삼전 전용으로 나오는 SSD 2.5”를 3.5” 베이에 장착하는 가이드도 같이 지름(3,000원)</li>
<li>EFM ipTIME N150PX: pci-e 지원하는 무선 랜 카드 (802.11n 호환): 대충 보고 추가한 무선 랜 카드였지만 성능은 괜찮은 듯. 데스크 탑에 달아놓을 생각이라 안테나 연장선 있는 것도 괜찮았음. 하지만 안테나가 1개라 AP 안테나도 1개면 망할 듯(…).</li>
<li>파워는 슈퍼플라워 ATX 500W; Gold 로 질러 봄. 아직까진 괜찮아 보임…</li>
<li>케이스를 GMX X-5를 샀는데 캐망. 절대 비추. 메인보드 후면 단자함 커버 쪽에 단차?가 있어서 제대로 닫히질 않음. 그리고 전면부의 DVD 드라이브 버튼도 잘 안 맞는 듯.</li>
</ul>
<p>&nbsp;</p>
<p>그래서 결과물은:</p>
<p><a href="http://rein.kr/blog/wp-content/uploads/2012/09/wpi.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border-width: 0px;" title="wpi" alt="wpi" src="http://rein.kr/blog/wp-content/uploads/2012/09/wpi_thumb.png" height="380" width="604" /></a></p>
<p>예상대로 CPU가 딸리는 시스템. 근데 뭐 집에서 PyPy 빌드할 것도 아니고 (야).</p>
<ol class="footnotes"><li id="footnote_0_3025" class="footnote">하지만 카드 결제일 기준으로 이사 비용과 한꺼번에 묶여서 나올 것이란 게 함정</li></ol><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=T1_sIx7SbNw:2CVlK8kfHHU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=T1_sIx7SbNw:2CVlK8kfHHU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=T1_sIx7SbNw:2CVlK8kfHHU:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=T1_sIx7SbNw:2CVlK8kfHHU: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/T1_sIx7SbNw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/3025/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/3025</feedburner:origLink></item>
		<item>
		<title>거대 PDF 변환삽질</title>
		<link>http://feedproxy.google.com/~r/reinblog/~3/vth1TAo6XUM/3021</link>
		<comments>http://rein.kr/blog/archives/3021#comments</comments>
		<pubDate>Sat, 15 Sep 2012 02:36:59 +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=3021</guid>
		<description><![CDATA[지난 여름 인턴들이 만들고 간 포스터를 웹 페이지 게시할 수준의 이미지로 변환하는 동안 한 삽질기. 포스터는 A1 크기의 pdf 파일로 보관하고 있었다. 크기는 4 MiB에서 90 MiB쯤. 1. ImageMagick으로 가로 1024px로 변환. 속도도 빠르고 다 좋은데 색감이 이상해졌음. 무슨 문제인지 찾을 수 없어서 다른 방법을 찾기 시작. 2. inkscape으로 열어서 bitmap 내보내기를 하니 색감이 인쇄물과 [...]]]></description>
				<content:encoded><![CDATA[<p>지난 여름 인턴들이 만들고 간 포스터를 웹 페이지 게시할 수준의 이미지로 변환하는 동안 한 삽질기. 포스터는 A1 크기의 pdf 파일로 보관하고 있었다. 크기는 4 MiB에서 90 MiB쯤. </p>
<p>1. ImageMagick으로 가로 1024px로 변환. 속도도 빠르고 다 좋은데 색감이 이상해졌음. 무슨 문제인지 찾을 수 없어서 다른 방법을 찾기 시작. </p>
<p>2. inkscape으로 열어서 bitmap 내보내기를 하니 색감이 인쇄물과 비슷한 느낌으로 나오더라. 그래서 변환하기 시작. 대략 파일 하나 여는데 30~120 초쯤 걸리더라. </p>
<p>하지맘 일부 작은(=4 MiB 쯤) 파일을 열었더니 가용 메모리 8 GiB 를 다 쓰고 17 G 쯤 할당하다 죽더라. 얌마 (&#8230;). 특히 이미지가 아닌, 문자 정보가 많은 경우 이러던데. </p>
<p>3. 결국 Gimp에서 1400dpi쯤으로 열어서 변환했음. 파일 당 일분이면 수작업 포함해서 전부 해결 ㅠㅠ. </p>
<p>근데 ImageMagick은 왜 색이 이상하지? 누구 아는 사람 없나. 제일 편한건 이쪽인데 컬러 이미지를 거의 손댄적이 없으니.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reinblog?a=vth1TAo6XUM:VDm4Spw20T8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reinblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=vth1TAo6XUM:VDm4Spw20T8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/reinblog?i=vth1TAo6XUM:VDm4Spw20T8:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reinblog?a=vth1TAo6XUM:VDm4Spw20T8: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/vth1TAo6XUM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rein.kr/blog/archives/3021/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://rein.kr/blog/archives/3021</feedburner:origLink></item>
	</channel>
</rss>
