<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Extremely Agile</title>
		<link>http://www.buggymind.com/</link>
		<description>버그투성이 소프트웨어 프로젝트와 화해하는 방법</description>
		<language>ko</language>
		<pubDate>Fri, 03 Jul 2009 02:43:23 +0900</pubDate>
		<generator>Textcube 1.7.8 : Con moto</generator>
		<item>
			<title>만화가들, 시국 선언 하다</title>
			<link>http://www.buggymind.com/228</link>
			<description>&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://www.buggymind.com/attach/1/1018064117.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;5046&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;&lt;br&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>Thoughts</category>
			<category>만화가</category>
			<category>시국선언</category>
			<author>(낭만고양이)</author>
			<guid>http://www.buggymind.com/228</guid>
			<comments>http://www.buggymind.com/228#entry228comment</comments>
			<pubDate>Fri, 03 Jul 2009 02:20:18 +0900</pubDate>
		</item>
		<item>
			<title>프로그래머 19</title>
			<link>http://www.buggymind.com/227</link>
			<description>[이전 글에서 계속...]&lt;br&gt;&lt;br&gt;그날 저녁의 회식 자리는 조용했습니다. 술이 좀 들어가자 허동수를 중심으로 약간씩 목소리가 높아지기는 했습니다만, 전체적으로 조용한 자리였습니다. 대화는 거의 질문 형식이었습니다. 모두들 박팀장에게 프로젝트의 성격에 대해서 두세 가지 정도의 질문들을 했고, 박팀장은 아는 대로 성의껏 대답을 해 주었습니다. 하지만 간혹 대답이 막힐 때에는 남기수가 재빨리 끼어들어 구체적인 사항을 설명해 주었습니다. 네트워크 관련 기술에 대한 경험이 있는 사람인지라, 기술적인 사항에 확실히 밝았습니다. &lt;br&gt;&lt;br&gt;&quot;남기수씨.&quot;&lt;br&gt;&lt;br&gt;&quot;네, 팀장님.&quot;&lt;br&gt;&lt;br&gt;&quot;고마워요.&quot;&lt;br&gt;&lt;br&gt;질문도 잦아들고, 두어 명씩 짝을 지어 개인적인 대화들을 나누는 분위기가 되자, 박팀장이 조용히 술잔을 기울이던 남기수에게 고개를 숙여 감사의 뜻을 표했습니다. 그는 황급히 손을 저었습니다.&lt;br&gt;&lt;br&gt;&quot;아뇨, 그런 말씀 안하셔도...&quot;&lt;br&gt;&lt;br&gt;&quot;이번 프로젝트는 남기수씨께서 많이 도와주셔야 할 것 같아요. 저를 포함해서 많은 사람들이 이 쪽에는 경험이 없어요. 이 프로젝트가 어떻게 우리 회사까지 넘어오게 되었는지 저도 자세히는 모르지만, 지금 회사 상황이 조금은 어렵고, 이 프로젝트가 어떻게 끝나느냐에 따라 우리 회사의 사업분야도 조금은 달라질 것 같다는 이야기를 들었어요.&quot;&lt;br&gt;&lt;br&gt;&quot;네에...&quot;&lt;br&gt;&lt;br&gt;박팀장의 말에 그는 고개를 끄덕거렸습니다. &#039;결국 또 똑같은 일을 하게 되는 건가?&quot; 하는 듯한, 심드렁한 표정이었습니다. &lt;br&gt;&lt;br&gt;&quot;상황만 보더라도, 남기수씨를 뽑은 건 정말 시의 적절한 일이라고 해야겠죠?&quot;&lt;br&gt;&lt;br&gt;그 말을 하며 박팀장은 남기수에게 소주잔을 내밀었습니다. 그녀의 얼굴에는 숨길 수 없는 기쁨이 잔뜩 묻어 있었습니다. 남기수의 얼굴은 이미 술기운으로 붉어져 있었습니다만, 그녀의 미소를 보는 그의 귀밑어름은 거의 진홍색으로 물들어 가고 있었습니다. &lt;br&gt;&lt;br&gt;&quot;열심히 하겠습니다.&quot;&lt;br&gt;&lt;br&gt;남기수는 그녀가 주는 잔을 받아 단숨에 들이켰습니다. 박팀장도 남기수의 잔을 받았습니다. &lt;br&gt;&lt;br&gt;&quot;그런데 대수씨는 원래 그렇게 말이 없으신 편인가요?&quot;&lt;br&gt;&lt;br&gt;그 때 갑자기 이선화가 잔뜩 꼬부라진 혀로 나에게 물었습니다. 느닷없는 질문이라 한참을 생각해야 했습니다. 내가 원래 말이 없는 인간이던가? &lt;br&gt;&lt;br&gt;&quot;네, 그런 것 같습니다. 제가 좀 재미 없는 사람이라서요.&quot;&lt;br&gt;&lt;br&gt;겸연쩍게 웃으면서 머리를 긁적이자, 바로 옆에 앉아 있던 허동수가 내 어깨를 툭 쳤습니다. &lt;br&gt;&lt;br&gt;&quot;에이, 원래부터 재미 없는 사람이 어디 있습니꺼. 그런 건 다 택도 없는 소리고예. 자. 한잔 받으이소. 술을 안드시니까 그렇다 아입니꺼. 원래 술을 마시면 안되던 영어도 된다꼬 했습니더. 자. 한잔 하입시더예. 쭉 들이키이소. 쭉.&quot;&lt;br&gt;&lt;br&gt;허동수는 완전히 술에 취해 있었습니다. 그러면서도 다른 사람들의 빈 잔 만큼은 꼬박꼬박 챙기고 있었습니다. 그 덕에, 그의 주변에 앉은 모든 사람들은 거의 떡이 되어 있었습니다. 저는 생각했습니다.&lt;br&gt;&lt;br&gt;&#039;나도 곧 저렇게 되겠군.&#039;&lt;br&gt;&lt;br&gt;그리고 그 예상은 전혀 빗나가지 않았습니다. 한 삼십분이나 더 흘렀을까? 저는 테이블에 머리를 처박고 눈만 끔뻑거리고 있었습니다. 허동수는 내 등을 두드리며 &#039;괜찮으십니꺼?&#039; 하고 몇 번 묻다가 다시 남은 사람들에게 잔을 돌렸고, 박팀장과 남기수는 계속 프로젝트에 관한 이야기를 하고 있었으며, 이선화와 김유식은 허동수의 잔을 받으면서 계속 뭔가로 토닥거리고 있었습니다. 나는 생각했습니다. 내가 몇살이더라? 여기가 어디더라? 나는 무슨 일을 하는 사람이더라? 그런 뜬금없는 생각들이 머리속을 맴돌다 픽, 하고 꺼져버릴 때 쯤 나는 정신을 잃었습니다. &lt;br&gt;&lt;br&gt;눈을 뜨자, 익숙한 숙취의 고통이 사방에서 밀려왔습니다. 어지러웠고, 메스꺼웠고, 두통으로 머리가 저렸습니다. 내가 눈을 뜬 곳은 회사의 휴게실에 마련된 이층 침대 였습니다. &lt;br&gt;&lt;br&gt;[다음에 계속...]&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>Thoughts</category>
			<category>프로그래머</category>
			<author>(낭만고양이)</author>
			<guid>http://www.buggymind.com/227</guid>
			<comments>http://www.buggymind.com/227#entry227comment</comments>
			<pubDate>Mon, 29 Jun 2009 00:26:42 +0900</pubDate>
		</item>
		<item>
			<title>Erlang과 Java의 연동</title>
			<link>http://www.buggymind.com/226</link>
			<description>Erlang과 Java를 연동시키려면 Erlang의 runtime을 띄울 때 epmd가 구동되도록 해야 합니다. 별도로 실행 방법을 알 필요는 없고, erl을 띄울 때 node 이름과 host name을 지정해 주면 됩니다.&lt;br&gt;&lt;br&gt;$&amp;gt; erl -name foo@foo.bar&lt;br&gt;&lt;br&gt;그렇게 하면 epmd가 자동으로 듭니다. 그래야 나중에 Java가 붙을 때 Java 프로그램의 node 이름이 해당 epmd에 등록 되기 때문에, 반드시 이렇게 해 주어야 합니다.&lt;br&gt;&lt;br&gt;Erlang과 Java 프로그램의 연동은 서로 메시지를 주고 받는 과정을 통해서 이루어집니다. 따라서 연동을 하려면 Java 프로그램과 연동할 Erlang 프로세스가 떠 있어야 합니다. 다음의 간단한 프로그램 예제를 봅시다. 이 파일을 ets_java_frontend.erl로 저장하고 컴파일 해 둡니다.&lt;br&gt;&lt;br&gt;-module(ets_java_frontend).&lt;br&gt;-export([start/0, shutdown/0, show/0, rpc/1]).&lt;br&gt;&lt;br&gt;start() -&amp;gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; LoopPid = spawn(fun loop/0),&lt;br&gt;&amp;nbsp; &amp;nbsp; register(ets_server, LoopPid).&lt;br&gt;&lt;br&gt;shutdown() -&amp;gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; Pid = whereis(ets_server),&lt;br&gt;&amp;nbsp; &amp;nbsp; Pid ! quit.&lt;br&gt;&lt;br&gt;show() -&amp;gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; Pid = whereis(ets_server),&lt;br&gt;&amp;nbsp; &amp;nbsp; Pid ! show.&lt;br&gt;&lt;br&gt;rpc(T) -&amp;gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; Pid = whereis(ets_server),&lt;br&gt;&amp;nbsp; &amp;nbsp; Pid ! T.&lt;br&gt;&lt;br&gt;loop() -&amp;gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; EtsHandle = ets:new(test, [set]),&lt;br&gt;&amp;nbsp; &amp;nbsp; loop(EtsHandle).&lt;br&gt;&lt;br&gt;loop(Handle) -&amp;gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; receive &lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; show -&amp;gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; List = ets:tab2list(Handle),&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; io:format(&quot;~p~n&quot;, [List]),&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; loop(Handle);&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; quit -&amp;gt; &lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {ok, terminated};&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {tuple, T} -&amp;gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; io:format(&quot;msg is received ~p~n&quot;, [T]),&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ets:insert(Handle, T),&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; loop(Handle);&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; true -&amp;gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; io:format(&quot;unprocessable msg is received~n&quot;),&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; loop(Handle)&lt;br&gt;&amp;nbsp; &amp;nbsp; end.&lt;br&gt;&lt;br&gt;이 Erlang 프로그램은 {tuple, T} 형태의 메시지를 받으면 T (투플입니다)를 ets에 저장하는 프로그램입니다. spawn해서 프로세스를 생성할 때 해당 프로세스의 Pid를 register() 호출을 통해 등록하고 있는데, Java쪽에서 이 Erlang 프로그램에 메시지를 보낼 때 register()할 때 전달한 프로세스 이름(위의 경우에는 ets_server)을 통해 해당 프로세스의 mbox에 메시지를 전달하므로, register()를 반드시 호출해 프로세스 이름을 등록해 두어야 합니다.&lt;br&gt;&lt;br&gt;이렇게 하면 Java 프로그램 안에서 Erlang 프로세스에 메시지를 전달할 수 있는데요. 공짜로 되는 것은 아니고 (당연하겠죠?) Erlang 패키지에 포함되어 있는 JInterface라는 라이브러리를 통하여야 합니다. Windows라면 해당 라이브러리는 C:/Program Files/erl5.7.2/lib/jinterface-1.5.1/priv에 있고, Unix라면 아마 /usr/lib/erlang/ 아래 어딘가에 해당 jar가 있을 겁니다. ^^;&lt;br&gt;&lt;br&gt;잡소리는 집어치우고 해당 프로그램 예제를 간단하게 훑어보면...&lt;br&gt;&lt;br&gt;import java.io.IOException;&lt;br&gt;import com.ericsson.otp.erlang.*;&lt;br&gt;&lt;br&gt;public class ETP {&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; private String node;&lt;br&gt;&amp;nbsp; &amp;nbsp; private OtpNode self;&lt;br&gt;&amp;nbsp; &amp;nbsp; private OtpMbox mbox;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; /** &lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* create ETP instance.&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* @param name name of the erlang server node.&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* @throws IOException &lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;*/&lt;br&gt;&amp;nbsp; &amp;nbsp; public ETP(String node) throws IOException {&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.node = node;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.self = new OtpNode(&quot;java_erl_bjlee&quot;);&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } catch ( IOException e ) {&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.err.println(&quot;cannot create ETP instance.&quot;);&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; e.printStackTrace();&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw e;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.mbox = self.createMbox(&quot;etp_java_client&quot;);&lt;br&gt;&amp;nbsp; &amp;nbsp; }&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; private OtpErlangTuple createMessage(OtpErlangTuple tuple) {&lt;br&gt;
 &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; OtpErlangObject[] aTerm = new OtpErlangObject[2];&lt;br&gt;
 &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; aTerm[0] = new OtpErlangAtom(&quot;tuple&quot;);&lt;br&gt;
 &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; aTerm[1] = tuple;&lt;br&gt;
 &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; OtpErlangTuple msg = new OtpErlangTuple( aTerm );&lt;br&gt;
 &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; return msg;&lt;br&gt;
 &amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
 &amp;nbsp;&amp;nbsp; private void send(OtpErlangTuple msg) {&lt;br&gt;
 &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; mbox.send(&quot;ets_server&quot;, this.node, msg);&lt;br&gt;
 &amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;br&gt;&amp;nbsp; &amp;nbsp; public boolean put(String key, String value) {&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; OtpErlangObject[] aTuple = new OtpErlangObject[2];&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; aTuple[0] = new OtpErlangAtom(key);&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; aTuple[1] = new OtpErlangAtom(value);&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; OtpErlangTuple tuple = new OtpErlangTuple(aTuple);&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; OtpErlangTuple msg = createMessage(tuple);&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; send(msg);&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return true;&lt;br&gt;&amp;nbsp; &amp;nbsp; }&lt;br&gt;}&lt;br&gt;&lt;br&gt;this.node에는 통신할 Erlang 노드의 이름이 들어갑니다. 이 페이지 맨 위에서처럼 했다면 foo가 들어가야겠군요. 먼저 OtpNode를 생성하구요. (이름을 주어야 합니다. Java 프로그램은 별개의 Erlang 노드인 것처럼 동작하거든요.) 그 다음에 message 송수신에 사용될 mbox를 만듭니다.&lt;br&gt;&lt;br&gt;그 다음에는 이제 메시지를 보내 Erlang 프로그램이 원하는 작업을 하도록 만들면 됩니다. put 메소드의 코드를 보시면 되겠습니다. mbox.send() 함수가 최종적으로 호출되는데, 이 때 첫 번째 인자로는 통신할 erlang 프로세스의 registered name이 들어가고, 두 번째 인자로는 해당 프로세스가 돌고 있는 Erlang node, 그리고 세 번째 인자로는 실제로 전송할 메시지가 들어갑니다. &lt;br&gt;&lt;br&gt;이제 Main 클래스를 다음과 같이 작성하고 돌려보면...&lt;br&gt;&lt;br&gt;public class Main {&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; /**&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* @param args&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;*/&lt;br&gt;&amp;nbsp; &amp;nbsp; public static void main(String[] args) {&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ETP etp;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; etp = new ETP(&quot;foo&quot;);&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } catch (IOException e) {&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; e.printStackTrace();&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; etp.put(&quot;test1&quot;, &quot;value1&quot;);&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; etp.put(&quot;test2&quot;, &quot;value2&quot;);&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println(&quot;finished&quot;);&lt;br&gt;&amp;nbsp; &amp;nbsp; }&lt;br&gt;}&lt;br&gt;&lt;br&gt;참. 돌리기 전에 erl 셸에서 ets_java_frontend:start()를 먼저 실행해주어야 합니다. ㅎㅎ 어쨌든 실행하고 위의 Java 프로그램을 돌려보면... erl 쪽 화면에 메시지들이 찍히면서 ets에 내가 전송한 투플들이 저장됩니다. 저장이 잘 되었는지는 erl 셸에서 ets_java_frontend:show()를 실행하여 확인할 수 있습니다.&lt;br&gt;&lt;br&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>Erlang</category>
			<category>Erlang</category>
			<category>ets</category>
			<category>JInterface</category>
			<category>연동</category>
			<category>인터페이스</category>
			<author>(낭만고양이)</author>
			<guid>http://www.buggymind.com/226</guid>
			<comments>http://www.buggymind.com/226#entry226comment</comments>
			<pubDate>Tue, 23 Jun 2009 14:07:01 +0900</pubDate>
		</item>
		<item>
			<title>개발자의 진화</title>
			<link>http://www.buggymind.com/225</link>
			<description>&lt;P&gt;개발자는 어떻게 성장하는 걸까요? 대략 주변에서 보고 들은 걸 종합해 보자면...&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;1. 프로그래밍 언어의 시기&lt;BR&gt;&lt;/STRONG&gt;&lt;BR&gt;프로그래밍 언어를 죽자고 배우는 시기. 아직 매뉴얼이나 참고서 없이는 한 줄의 코드 짜기가 버겁다.&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;2. 초보 개발자의 시기&lt;BR&gt;&lt;/STRONG&gt;&lt;BR&gt;프로그래밍 언어 한 두개를 능숙하게 쓸 줄 아는 시기. 매뉴얼이나 참고서도 구글로 대신하는 수준. 하지만 본인이 제대로 된 코드를 작성하고 있는지는 장담을 못한다&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;3. 중급 개발자의 시기&lt;BR&gt;&lt;/STRONG&gt;&lt;BR&gt;진정한 개발이 무엇인지를 고민하는 시기. 왜 프로젝트 막바지에 더 바쁜지를 고민한다거나, 어떻게 하면 버그의 수를 획기적으로 줄일 수 있을지를 고민한다거나, 가장 최적의 클래스 설계는 어떤 모습일지를 고민한다거나 하는 개발자가 이에 해당. 그에 따라 읽는 책도 많아진다. 어떤 한 가지 믿음에 경도되기 쉬운 시기이기도 하다. 이 시기의 개발자가 가장 꼬장꼬장하다. 하지만 아직도 performance profiling에는 게으르다.&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;4. 고급 개발자의 시기&lt;BR&gt;&lt;/STRONG&gt;&lt;BR&gt;남을 가르치거나 홀릴 줄 알게 된 시기. 문제가 주어지면 기존 해법을 Survey하고 좀 더 나은 해결책이 무엇일지를 고민할 줄 알게 된 시기. 필드에서 자주 발견하는 문제에 대해서는 꿰고 있는 해결책도 두어가지 되는 수준. 버그가 나타나면 디버거 대신 머리를 굴려 발견하는 경지이나, 정작 코딩을 하는 시간은 점점 줄어든다. 어떻게 하면 좀 더 적은 코드로 좀 더 많은 일을 할 수 있을지를 항상 고민한다. 테스트와 코딩, 그리고 결과물의 배치 문제 뿐 만 아니라 최적화의 문제에도 항상 관심을 갖는다. 프로그래밍 언어는 이제 더 이상 주된 관심사가 아니다. 가끔은 그토록 찾아 해메던 문제의 답을 먼지를 뒤집어쓴 대학 교재 안에서 발견하고는 절망하기도 한다. 그 책의 이름은...&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;5. 초고급 개발자의 시기 (추가)&lt;BR&gt;&lt;/STRONG&gt;&lt;BR&gt;이 쯤 되면 이 개발자는 (1) 자기 회사를 차렸거나 (2) 끝내주는 회사에 다니고 있거나 (3) 책을 썼거나 (4) 좋은 논문을 썼거나 (5) 멋진 공개 소프트웨어를 작성했거나... 어쨌든 &#039;세상에 뭔가 보탬이 되는 일&#039;을 하고 있다. 고급 개발자와 초고급 개발자를 나누는 가장 결정적인 기준은, 좀 어이 없긴 하지만, 바로 그것이다. &#039;세상에 뭔가 보탬이 되는 일을 하고 있느냐&#039; 하는 것. 고급 개발자들은 먹고 살기 위해 코딩을 하지만, 초고급 개발자들은 세상을 보다 낫게 바꾸기 위해 코딩을 한다. 그렇기 때문에 그들이 하는 코딩은 본질적으로 자발적이며, 그들 내면의 충동으로부터 발원하는 것이다. 이런 사람들이 모이는 회사라면 분명 끝내주는 회사일 것이고, 이런 사람이 차린 회사라면 설사 성공하진 못하더라도 끝내주는 회사일 것이다. 이런 사람들이 만드는 SW나 논문도, 분명 끝내 줄 것이다.&lt;BR&gt;&lt;BR&gt;보통 우리는 이런 사람들의 의식 깊은 곳에 자리한, 그들의 개발을 추동하는 내적 원리를 &lt;BR&gt;&#039;프로그래밍의 도&#039;라고 부른다. &lt;BR&gt;&lt;BR&gt;프로그래밍의 도를 깨칠수 없다고 할지라도 절망하지는 말자.&lt;BR&gt;세상의 모든 도는 그 본류가 하나로 이어져 있다.&lt;BR&gt;세상에 좋은 일을 할 수 있는 기회는 의외로 다양하다는 뜻.&lt;BR&gt;프로그래밍이 버겁게 느껴지고 때로 망망대해같은 코드의 심연에서 외로움을 느낀다면,&lt;BR&gt;지금 당장 자선단체의 번호를 눌러 단돈 만원이라도 기부를 하도록 하자.&lt;BR&gt;그 작은 행위가 여러분의 프로그래밍에 기쁨을 되찾아 줄 것이다.&lt;BR&gt;&lt;BR&gt;좋은 프로그래머가 되면, 초고급 개발자가 될 확률도 덩달아 높아진다.&lt;BR&gt;&lt;BR&gt;- - - &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;몇 줄 요약:&lt;BR&gt;&lt;/STRONG&gt;&lt;BR&gt;개발자의 경력이 늘어가면 갈수록, 개발자는 코딩 그 자체에서는 자유로와진다. &lt;BR&gt;정작 중요한 것은 코딩이 아니라 Domain Knowledge라는 사실을 깨닫는다.&lt;BR&gt;그러면서 &#039;자신을 키운 것은 99%가 삽질&#039;이었다는 사실을 서서히 잊는다.&lt;BR&gt;왜냐하면, 이미 그는 삽질과 하나가 되었기 때문이다.&lt;BR&gt;&lt;BR&gt;여러분은 지금 어디에?&lt;BR&gt;&lt;/P&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>Thoughts</category>
			<category>개발자</category>
			<category>성장</category>
			<category>진화</category>
			<author>(낭만고양이)</author>
			<guid>http://www.buggymind.com/225</guid>
			<comments>http://www.buggymind.com/225#entry225comment</comments>
			<pubDate>Tue, 16 Jun 2009 17:42:45 +0900</pubDate>
		</item>
		<item>
			<title>약속</title>
			<link>http://www.buggymind.com/224</link>
			<description>작년 말에 시작하기로 했던 FIT 번역을 올해 초에 시작해서 오늘 밤에 출판사로 넘겼다. 당초에 약속했던 기한은 아마 두달가량 화끈하게 오바한듯... ㅎㅎ &lt;BR&gt;&lt;BR&gt;약속은 중요한데 잘 지키지 못하는 일이 생긴다. 그 약속에 얽힌 당사자들에게는 항상 미안하고 죄송스럽다. 그 분들은 애써 태연하게 &#039;괜찮습니다&#039;라고 하는데, 그 말 뒤에 때로 이해 대신 짜증과 분노가 섞이기도 한다는 사실을 잘 안다.&lt;BR&gt;&amp;nbsp;&lt;BR&gt;돌이켜 보면 이런 저런 약속들을 참 많이도 어기며 살았다. 능력 부족 탓에 벌어지는 일이기도 하고 (빈약한 기억력 탓에 놓친 약속만 해도 대체 몇 건인가) 내가 나쁜 인간이라 벌어지는 일이기도 하다. 그래도 항상 앞으로는 그러지 말아야지... 하고 다짐하게 된다. 이 지면(?)을 빌어, 필자가 깬 약속 때문에 열받았던 모든 분들에게 고개숙여 사죄드린다.&lt;BR&gt;&lt;BR&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://www.buggymind.com/attach/1/1384380286.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;396&quot; width=&quot;600&quot; /&gt;&lt;/div&gt;&lt;BR&gt;&lt;BR&gt;FIT과 관련해서 베타리더 몇 분에게 민망한 초고를 검토해 주십사 죄송한 부탁을 드렸다. 그 중 네 분 께서는 진작에 답을 주셨다. 역시 이 지면(!)을 빌어 감사드린다. 하지만 다른 두분께서는 아직 아무런 답도 주고 계시지 않고 계신다. 그 두 분 께는, 이제 원고도 넘겨 버렸으니 부담은 털어버리시고 책의 출간을 즐거운 마음으로 기다려 주십사 말씀드리고 싶다.&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>Thoughts</category>
			<category>FIT</category>
			<category>인사이트</category>
			<author>(낭만고양이)</author>
			<guid>http://www.buggymind.com/224</guid>
			<comments>http://www.buggymind.com/224#entry224comment</comments>
			<pubDate>Sun, 14 Jun 2009 21:50:44 +0900</pubDate>
		</item>
		<item>
			<title>프로그래머 18</title>
			<link>http://www.buggymind.com/223</link>
			<description>[이전 글에서 계속...]&lt;BR&gt;&lt;BR&gt;
&lt;DIV style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;2부.&lt;/SPAN&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;BR&gt;&quot;모두 반갑습니다.&quot;&lt;BR&gt;&lt;BR&gt;박팀장이 입을 열었습니다. 회의실이 어떻게 설계되었는지는 몰라도, 그녀의 목소리는 마치 노래방 마이크를 통해 나오는 소리처럼 울렸습니다. 그녀의 입가에는 미소가 어려 있었습니다.&lt;BR&gt;&lt;BR&gt;&quot;이제 모두 모였으니, 간단히 자기 소개부터 하죠. 아마 오늘 첨 뵙는 분도 있을 것 같은데... 우선 제가 먼저 간단히 말씀드리면, 저는 팀장인 박시애구요. 제 오른쪽에 앉으신 분부터 시계 반대 방향으로 남기수, 김유식, 허동수, 이선화, 그리고 오대수씨입니다. 저까지 포함 전부 여섯 분이군요. 우리 팀 이름은... 그게 좀 애매한데요. 네트워크 관리 기술 개발팀이에요. 이름만 들어서는 대체 뭘 하자는 건지 알기가 좀 어렵죠? 사실 저도 아직 감을 잡지 못하고 있습니다. 그건 차차 나아질테니 양해해 주시구요.&quot;&lt;BR&gt;&lt;BR&gt;그녀는 잠시 말을 멈추고 모두를 웃으며 차례 차례 바라보았습니다. 그리고는 다시 말을 이었습니다.&lt;BR&gt;&lt;BR&gt;&quot;자. 그러면 한 분씩 개인 소개를 해 볼까요? 우선 제 왼쪽에 앉은 오대수씨부터.&quot;&lt;BR&gt;&lt;BR&gt;그리고 그녀는 내 얼굴을 빤히 쳐다보았습니다. 제 얼굴은 순간 붉어졌습니다. &lt;BR&gt;&lt;BR&gt;&quot;아... 반갑습니다. 오대수입니다. 이 회사에 입사한 지는 일년 남짓 된 것 같습니다. 입사 후에는 김유식 주임과 같이 일을 했구요. 직급은 대리입니다. 주로 해 온 일은... 아마 여러분들도 비슷하실 것 같습니다만, 프로그래밍입니다. 뭐 남들보다 잘 하는 건 아니구요. 그냥 먹고 사는 데 지장 없을 정도로 합니다.&quot;&lt;BR&gt;&lt;BR&gt;그러자 모두들 미소를 지어 보였습니다. 나도 다를 것 없다는 뜻의, 겸손한 웃음이었습니다. &lt;BR&gt;&lt;BR&gt;&quot;좋아하는 것은 책읽기, 남 이야기 들어주기 등등입니다. 사실 그동안 먹고 사느라 바빠서 특별히 특기 같은 걸 만들 새가 없었습니다. 앞으로도 다를 것 같지는 않지만요.&quot;&lt;BR&gt;&lt;BR&gt;&quot;어떤 책을 좋아하세요?&quot;&lt;BR&gt;&lt;BR&gt;박팀장이 물었습니다.&lt;BR&gt;&lt;BR&gt;&quot;아... 뭐 그냥 잡다하게 읽습니다. 일 때문에 보는 책을 뺀다면, 그리스 로마 신화 류의 서적을 좋아하는 편이구요.&quot;&lt;BR&gt;&lt;BR&gt;&quot;결혼은 하셨어요?&quot;&lt;BR&gt;&lt;BR&gt;남기수가 물었습니다. 너무 상투적인 질문이다 싶었는지, 그는 다소 겸연쩍게 웃고 있었습니다.&lt;BR&gt;&lt;BR&gt;&quot;아뇨. 아직 못했습니다. 역시 먹고 사느라 바빠서...&quot;&lt;BR&gt;&lt;BR&gt;내가 헛 웃음을 웃자 모두들 따라 웃었습니다. 역시, &#039;나도 마찬가지 신세요&#039; 하는 듯한 표정들이었습니다. &lt;BR&gt;&lt;BR&gt;&quot;프로그래밍 언어는 보통 뭘 쓰십니까?&quot;&lt;BR&gt;&lt;BR&gt;허동수가 물었습니다. 프로그래머들끼리 모여 앉으면 한 번 씩은 할 법한 질문이었습니다. 애써 경상도 사투리를 자제하려는 듯 말하고 있었습니다만, 허동수의 말투에는 특유의 억양이 짙게 배어 있었습니다.&lt;BR&gt;&lt;BR&gt;&quot;뭐... C++하고 Java를 좀 쓸줄 압니다. JavaScript도 조금 할 줄 알고... 다른 언어는 잘 모르구요.&quot;&lt;BR&gt;&lt;BR&gt;모두들 고개를 끄덕였습니다. &lt;BR&gt;&lt;BR&gt;그리고 한참 동안, 모두들 자기 소개를 했습니다. 이선화가 낭랑한 목소리로 자기 소개를 할 때는 모든 총각 사원들의 눈이 빛났습니다. 김유식 주임만 빼구요. 허동수는 아주 진지한 태도로 길게 자기 소개를 했고, 김유식은 아주 짧게 소개를 마쳤습니다. 남기수는 말하는 내내 뭔가 좀 불편한 표정이어서 모두를 의아하게 했습니다. (나중에 알고 보니 원래 공식적인 자리에서 말 할 때는 좀 불편해 하는 성격이더군요.)&amp;nbsp; &lt;BR&gt;&lt;BR&gt;모두의 소개가 끝나자, 박팀장은 다시 간단하게 자기 소개를 했습니다. 그리고는 말했습니다.&lt;BR&gt;&lt;BR&gt;&quot;이제 소개가 다 끝났군요. 다시 한 번, 반갑습니다.&quot;&lt;BR&gt;&lt;BR&gt;모두가 반갑습니다, 하고 한 목소리로 대답했습니다. 박 팀장은 웃으면서 말을 이었습니다.&lt;BR&gt;&lt;BR&gt;&quot;보시다시피, 우리 팀은 아주 작은 팀입니다. 우리 회사에서도 이례적으로 작은 팀이죠. 위에서는 프로젝트를 진행하면서 필요한 사람을 그때 그때 충원하던지, 아니면 다시 용역을 주던지 하라고 이야기하고 있어요. 뭐, 저도 필요하다면 그렇게 할 생각입니다. 하지만 정말 그럴 필요가 있을지를 우선 알아보아야 할 거고, 앞으로 한 달 정도는 그 작업을 할 생각이에요.&quot;&lt;BR&gt;&lt;BR&gt;그리고 박팀장은 모두에게 몇 장 짜리 유인물을 나누어 주었습니다.&lt;BR&gt;&lt;BR&gt;&quot;자. 모두들 한 부씩 받으시구요. 우리가 앞으로 진행할 프로젝트가 어떤 프로젝트인지, 그리고 우리가 무슨 일을 해야 하는지를 간단하게 적어보았습니다. 제가 간단하게 설명을 해 드릴께요. 그런데 그 전에...&quot;&lt;BR&gt;&lt;BR&gt;박팀장의 눈길이 김유식에게 가서 멎었습니다.&lt;BR&gt;&lt;BR&gt;&quot;김주임님. 이전 팀에 계실때 총무 하셨었죠?&quot;&lt;BR&gt;&lt;BR&gt;&quot;네. 맞습니다.&quot;&lt;BR&gt;&lt;BR&gt;&quot;혹시 이번에도 총무 해 주실 수 있나요?&quot;&lt;BR&gt;&lt;BR&gt;그러자 그가 웃으며 대답했습니다.&lt;BR&gt;&lt;BR&gt;&quot;네, 얼마든지요.&quot;&lt;BR&gt;&lt;BR&gt;박팀장의 얼굴에 다시 웃음이 번졌습니다.&lt;BR&gt;&lt;BR&gt;&quot;가장 심각한 문제가 해결되었군요.&quot;&lt;BR&gt;&lt;BR&gt;그 말에 모두들 웃었습니다. 약간은 딱딱했던 분위기가 풀어지는 느낌이었습니다.&lt;BR&gt;&lt;BR&gt;&quot;위에서 허락해 줄 지는 모르겠지만, 한 달에 하루 정도는 일을 쉬고 밖에서 재충전의 시간을 갖도록 하겠습니다. 같이 영화를 봐도 되고 밥을 먹어도 되고 아니면 세미나를 해도 되고... 그러려면 회비가 필요한 데 한 달에 만원 정도 총무님이 각출해서 관리해 주세요. 모자라는 돈은 제가 처리하도록 하겠습니다.&quot;&lt;BR&gt;&lt;BR&gt;다들 조금은 뜻밖이라는 듯이 서로를 쳐다보았습니다만, 싫어하는 눈치는 아니었습니다. &lt;BR&gt;&lt;BR&gt;&quot;자. 그러면 제 프리젠테이션을 시작하죠. 대수씨. 프로젝터 바로 앞이신데, 좀 켜 주시겠어요?&quot;&lt;BR&gt;&lt;BR&gt;그리고 그녀의 발표가 시작되었습니다. 우리가 해야 하는 일은 회사의 주력 사업 영역에서는 한 발 물러서 있었습니다. 네트워크 장비 관리 시스템을 만드는 일이 우리가 해야 하는 일이었죠. 웹 브라우저를 통해 구현되는 클라이언트와, 웹 서버 위에서 돌아가는 서버 시스템을 만들어야 했습니다. 그리고 그 서버는 사용자가 등록한 네트워크 장비에 사용자가 원하는 설정을 내릴 수 있어야 했습니다. 모두들 그런 종류의 프로그램에는 경험이 없었습니다. 관리해야 하는 네트워크 장비라는 것도, 생소하기 짝이 없는 물건들이었습니다. 스위치나 허브 같은 거야 일상적으로 쓰이는 물건들이니 낯설 건 없다고 할 수 있겠지만, 라우터(router) 같은 장비에 이르면 남기수를 제외한 모두가 문외한이었습니다.&lt;BR&gt;&lt;BR&gt;&quot;라우터라는 게 뭡니꺼?&quot;&lt;BR&gt;&lt;BR&gt;허동수가 불쑥 질문을 던졌습니다. &lt;BR&gt;&lt;BR&gt;&quot;라우터는, 인터넷을 서로 연결 시켜주는 장비에요. 가령 허동수씨가 브라우저를 열어 웹 서버에 접속을 하면, HTTP 패킷이 웹 서버로 날아갈 텐데요. 그 패킷을 웹 서버라는 목적지 까지 계속 중계해 주는 것이 라우터가 하는 일입니다. 라우터는 패킷을 만날 때 마다 그 패킷에 적혀 있는 목적지 IP 주소를 보고, 다음에 어느 라우터로 보내야 하는지, 라우터가 아니라면 다음에 어떤 호스트로 보내야 하는지를 결정하죠. 그 덕에 우리가 인터넷을 통해 웹 서버에 접속할 수 있게 되는 겁니다.&quot;&lt;BR&gt;&lt;BR&gt;&quot;웹 서버가 보내는 웹 페이지도 그런 식으로 저에게 되돌아 오는 거란 말씀이지요?&quot;&lt;BR&gt;&lt;BR&gt;&quot;그렇습니다.&quot;&lt;BR&gt;&lt;BR&gt;모두들 고개를 끄덕였습니다. 그러자 박팀장이 말을 이었습니다.&lt;BR&gt;&lt;BR&gt;&quot;아마 생소한 용어들이 많아서 걱정이 많이 되실 텐데, 미리부터 겁먹지 않으셔도 괜찮아요. 프로젝트를 준비하는 데 한 달 정도의 시간은 있으니까, 그 동안 공부하고 대비하면 될 겁니다.&quot;&lt;BR&gt;&lt;BR&gt;하지만 모두들, 벌써부터 잔뜩 겁먹은 눈치였습니다. 저도 마찬가지였구요.&lt;BR&gt;&lt;BR&gt;&quot;이 프로젝트의 공식 명칭은, OLYMPUS입니다. Object layer for management of packet-support systems의 약자죠. 이 프로젝트를 주신 분들이 지은 명칭이라 저도 그 뜻이 정확하게 무언지는 모르는 상태입니다만, 곧 알게 될겁니다. 능력이 워낙 출중하신 분들이라, 여러분들이 저보다 먼저 알게 되실 수도 있구요.&quot;&lt;BR&gt;&lt;BR&gt;이번에는 고개를 끄덕이는 사람이 아무도 없었습니다. 회의실에는 침묵이 감돌았습니다.&lt;BR&gt;&lt;BR&gt;&quot;자. 그럼 회의는 이것으로 마치겠습니다. 오늘 저녁에 회식 있는 건 아시죠? 시간은 저녁 여섯 시 반, 장소는 회사 바로 앞 길건너 서울 회관입니다. 모두, 수고하셨습니다.&quot;&lt;BR&gt;&lt;BR&gt;[다음 글에 계속...]&lt;BR&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>Thoughts</category>
			<category>프로그래머</category>
			<author>(낭만고양이)</author>
			<guid>http://www.buggymind.com/223</guid>
			<comments>http://www.buggymind.com/223#entry223comment</comments>
			<pubDate>Mon, 08 Jun 2009 16:12:07 +0900</pubDate>
		</item>
		<item>
			<title>분노의 메커니즘</title>
			<link>http://www.buggymind.com/222</link>
			<description>예전에 분노에 대한 글을 하나 올렸습니다. 그 이후로 분노에 대한 책도 읽어보고, 자료도 찾아봤습니다. 그 결과로 알게된 사실을 간단히 정리해보면 이렇습니다.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. 분노는 자극 + 평가의 단계를 거쳐 발생한다&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;분노를 촉발시키는 것은 외부 자극(stimulus)입니다만 자극이 있다고 해서 반드시 분노가 발생하는 것은 아닙니다. 오히려 분노의 진짜 원인(cause)는 그 자극에 대한 평가입니다. 가령 어떤 사람이 나에게 이렇게 말했다고 합시다. &lt;br /&gt;&lt;br /&gt;A: 영화를 그렇게 많이 보셨다니... 그때 좀 넉넉하셨나봐요?&lt;br /&gt;&lt;br /&gt;분노를 일으키는 것은 이 말 자체가 아니라, 이 말에 대한 평가(evaluation) 입니다. 이 말을 빈정거림으로 받아들이면 그 때 부터 분노가 시작됩니다. 가령 위의 말에 이렇게 대답하게 되면 그 때 부터는 손쓸 수가 없게 됩니다.&lt;br /&gt;&lt;br /&gt;B: 네 좀 많이 봤었죠. 뭐 보태주신 거 있어요?&lt;br /&gt;&lt;br /&gt;이런 대화 유형을 폭력적 대화(violent communication)라고 합니다. 폭력적인 대화를 통해 분노를 드러내게 되면, 상대방과의 관계가 나빠집니다. 분노를 흔히 &#039;제어해야 할 무엇&#039;으로 보는 이유는, 분노를 통해 타인과의 관계가 나빠지기 때문입니다. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2. 비폭력적 대화 (Non-violent communication, NVC)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;폭럭적 대화는 분노를 표출하는 개인의 필요(need)를 충족시키지 못하면서 타인과의 관계만 나쁘게 만든다는 점에서 좋지 않습니다. 이 점을 개선하려면, 분노는 어떤 필요가 충족되지 못해서 발생하는 것이라는 점에 눈을 돌릴 필요가 있습니다. 위에서 예로 든 대화의 경우, B는 A에게 자신이 영화를 많이 본 이유가 무엇이라는 점, 그리고 돈이 많아서 영화를 보고 다닌 것이 아니라는 점 등등을 납득시킬 필요가 있습니다. &lt;br /&gt;&lt;br /&gt;가령 어떤 사람이 자기 애인이 자주 연락을 하지 않아서 화가 났다고 해 봅시다. 이 경우 자극은 &#039;연락을 자주 하지 않음&#039;이고, 이 자극을 분노로 바꾼 진짜 원인, 그러니까 평가는 &#039;애인에게 다른 사람이 생겼을 지도 모른다&#039;는 의심 같은 것입니다. 충족하고 싶은 필요는 &#039;애인이 자주 연락을 해 주거나, 연락을 못할 경우에는 자신에게 충분한 설명을 해 주었으면 좋겠다&#039; 입니다. 다음과 같이 폭력적으로 대화를 해 버리면 (그러니까 자신이 &#039;평가&#039;한 내용을 직접적으로 전달해 버리면) 필요를 충족시킬 가능성은 점점 낮아집니다.&lt;br /&gt;&lt;br /&gt;A: 너 혹시 다른 사람 생겼냐? 그게 아니면 전화한통 하는걸 왜 그렇게 힘들어 해?&lt;br /&gt;&lt;br /&gt;비 폭력적 대화를 하는 경우에는, 자신이 평가를 한 내용은 말하지 않습니다. 다음과 같이 이야기합니다.&lt;br /&gt;&lt;br /&gt;A: 하루에 한 번 정도라도 연락을 못하면 내가 좀 답답하다. 연락 못할 때에는 미리 바쁘다고 문자라도 한 번 해 주었으면 좋겠어.&lt;br /&gt;&lt;br /&gt;비 폭력적 대화의 장점은 대화에 참여하는 사람 중 한 사람만이라도 비폭력적으로 이야기를 하면, 대화에 참여하는 모든 사람들이 자연스럽게 그런 쪽으로 유도된다는 점이고, 그럼으로써 모두의 필요를 충족시킬 가능성이 점점 높아진다는 데 있습니다.&lt;br /&gt;&lt;br /&gt;요즘 인터넷을 통해 전개되는 대화들을 보면, 폭력적 형태의 대화가 이루어지는 일이 많습니다. 특히 익명 게시판에서 진행되는 토론이나, 익명의 댓글 같은 것들이 그렇습니다. 이런 형태의 대화는 상대방을 납득 시키는 데 별로 도움이 되지 않고, 나중에는 일방적인 비난 같은 것으로 전도될 가능성이 높습니다.&lt;br /&gt;&lt;br/&gt;
&lt;div class=&quot;ttbReview&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN=1892005158&amp;amp;ttbkey=ttbbyungjoon.lee2310003&amp;amp;COPYPaper=1&quot;&gt;&lt;img src=&quot;http://image.aladdin.co.kr/cover/cover/1892005158_1.jpg&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;  style=&quot;vertical-align:top;&quot;&gt;&lt;a href=&quot;http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN=1892005158&amp;amp;ttbkey=ttbbyungjoon.lee2310003&amp;amp;COPYPaper=1&quot;  class=&quot;aladdin_title&quot;&gt;The Surprising Purpose Of Anger (Paperback)&lt;/a&gt; - &lt;img src=&quot;http://image.aladdin.co.kr/img/common/star_s10.gif&quot; border=&quot;0&quot; alt=&quot;10점&quot; /&gt;&lt;br/&gt;Rosenberg, Marshall B., Ph.D./Independent Pub Group&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;br /&gt;분노와 비폭력적 대화에 대해서 간단하게라도 알고 싶으시다면, 사진에 나온 책을 참고하세요. 얇은 책인데,내용은 나름 괜찮습니다. &lt;br /&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>Thoughts</category>
			<category>분노</category>
			<category>비폭력적 대화</category>
			<category>통제</category>
			<author>(낭만고양이)</author>
			<guid>http://www.buggymind.com/222</guid>
			<comments>http://www.buggymind.com/222#entry222comment</comments>
			<pubDate>Mon, 08 Jun 2009 13:10:28 +0900</pubDate>
		</item>
		<item>
			<title>노무현</title>
			<link>http://www.buggymind.com/221</link>
			<description>노무현 전 대통령이 2009년 5월 23일 세상을 등졌습니다. 이 소식은 노무현 대통령에게 한 표를 던진 이후로 정치에는 관심을 끊고 살던 저희 부부에게도 충격이었습니다. 와이프는 저와 이야기하는 동안 내내 눈물을 보였고, 저도 감정을 추스리기가 어려웠습니다. &lt;br&gt;&lt;br&gt;한 때, 우리나라에는 도덕성과 출세 사이에 큰 상관 관계가 없는 시절이 있었습니다. 우리 부모님이 젊은 날을 보내셨던 시대가 그러했습니다. 그러나 그분들이 자식을 키우면서, 상황은 많이 달라졌습니다. 저는 독재로 군림하던 제왕적 통치자가 총탄에 스러지는 모습을 보았고, 이런 저런 대통령들이 투옥되고 사형 선거를 받는 장면을 보았습니다. 이제 대한민국에서 도덕적인 청결함은 돈이 있으면 있어도 그만이고 없어도 그만인 그런 가치는 아닙니다. &lt;br&gt;&lt;br&gt;그런 과정을 보면서 성장한 30대에게, 노무현은 새로운 가치의 한 표상이 되어 주었습니다. 이제 부패는 여기서 끝이다. 부패하면 패가 망신한다. 정직하고 성실한 사람이 승리한다. 예전에는 구호에 그쳤던 그런 말들이 그가 대통령이 되면서 정말 실제가 되는 것 같았습니다.&lt;br&gt;&lt;br&gt;하지만 그가 대통령 직에서 내려와 검찰 수사의 대상이 되면서 상황이 달라졌습니다. 많은 사람들이 그가 대변했던 가치에 의구심을 품었습니다. &#039;노무현도 별 수 없네...&#039;라는 말이 지지자의 입에서도 서슴없이 흘러나왔습니다. 제가 노무현을 의심했던 것도 그때쯤이었던 것으로 기억합니다.&lt;br&gt;&lt;br&gt;하지만 노무현 전 대통령이 스스로 목숨을 끊으면서 상황은 달라졌습니다. 노무현은 그가 대변하던 가치 그 자체였습니다. 그 가치가 훼손되자 스스로 &#039;여러분은 나를 버려달라&#039;고 말했고, 그 끝으로 그는 자신마저 버렸습니다. 신념이 떠난 자리에 남은 인간 노무현은 아무 의미가 없는 존재라는 사실을 몸으로 웅변한 것입니다. &lt;br&gt;&lt;br&gt;덕분에 이제 우리나라에는 선이 하나 생겼습니다. 노무현 이전과 이후를 확연히 구분짓는, 선 하나가 생긴 것입니다. 앞으로 이 나라의 지도자들은, 노무현이 죽음으로써 그어놓은 그 선을 넘었느냐 넘지 않았느냐에 따라 평가될 것입니다. 어떤 흠결도, 그 잣대를 결코 피해나가지는 못할 것입니다.&lt;br&gt;&lt;br&gt;그는 죽음으로 그가 지키고자 하는 가치를 이 땅에 되살려 놓았습니다만, 남아있는 우리는 허전하기 짝이 없습니다. 그가 대변했던 신념을 온전히 지켜나갈 또 다른 사람이 과연 누구일지, 혼탁한 정치판을 보아서는 도무지 짐작하기도 어렵기 때문입니다.&lt;br&gt;&lt;br&gt;노무현 전 대통령의 명복을 빕니다. &lt;br&gt;&lt;br&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://www.buggymind.com/attach/1/1043405754.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;162&quot; width=&quot;595&quot; /&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>Thoughts</category>
			<category>노무현</category>
			<author>(낭만고양이)</author>
			<guid>http://www.buggymind.com/221</guid>
			<comments>http://www.buggymind.com/221#entry221comment</comments>
			<pubDate>Mon, 25 May 2009 12:28:56 +0900</pubDate>
		</item>
		<item>
			<title>프로그래밍을 통한 감정 조절</title>
			<link>http://www.buggymind.com/220</link>
			<description>최근에 굉장히 오랫동안 몸이 안좋았습니다. 부산에 차를 몰고 다녀온 이후로 안좋았으니 대략 보름 정도입니다. 체력 저하의 결과로 기분이 굉장히 우울해졌습니다. 우울증을 의심할 정도였으니 굉장히 우울했던 셈이죠.&lt;br&gt;&lt;br&gt;우울함은 보통 다음과 같은 감정들과 함께 나타납니다.&lt;br&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;분노&lt;/li&gt;&lt;li&gt;억측&lt;/li&gt;&lt;li&gt;집착&lt;/li&gt;&lt;li&gt;망상&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;보통 이런 상태는 집착 -&amp;gt; 억측 -&amp;gt; 망상 -&amp;gt; 분노 -&amp;gt; 우울의 단계를 거쳐 진화하고 순환합니다. 그리고 보통 이런 상태에서는 집착이나 억측의 대상이 되는 무언가에 자연스럽게 몰입되는 경우가 일반적입니다. 그런 몰입 대상이 없는 상태에서 우울함이 계속 반복되는 경우도 있는데, 그 때는 &#039;나는 우울하다&#039;는 생각 자체가 몰입 대상이 되기도 합니다.&lt;br&gt;&lt;br&gt;따라서 우울함이 오래 지속되면 &#039;우울하다는 생각&#039;이나 &#039;나를 우울하게 하는 무엇&#039;에 대한 생각이 머리속을 떠나지 않는 일이 자주 생깁니다. 그러므로 본인 스스로는 &#039;아무 일도 할 수 없는 상태이다&#039;라고 느끼고 있더라도, 실제로 두되는 혼자서 무언가를 아주 열심히 하고 있다고 보아야 합니다. 우울할 때 몸이 평소보다 훨씬 더 피곤하게 느껴지는 것은 아마 그 때문일 것입니다. 부정적인 몰입은 감정의 상태를 해칠 뿐 아니라, 신체의 상태도 해칩니다.&lt;br&gt;&lt;br&gt;이런 상태의 고리를 끊으려면 머리가 혼자서 열심히 하고 있는 부정적 몰입활동의 고리를 끊어야 합니다. 부정적 몰입도 결국 고도의 정신 활동의 일종이므로, 그런 활동의 고리를 끊으려면 새로운 활동도 그만큼 고도의 정신 활동이어야 아마 효과가 좋을 것입니다.&lt;br&gt;&lt;br&gt;이런 활동의 후보로는 다음과 같은 것들이 있습니다.&lt;br&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;글쓰기&lt;/li&gt;&lt;li&gt;프로그래밍&lt;/li&gt;&lt;li&gt;음악&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;본인이 이미 익숙해서 별다른 주의를 기울이지 않아도 할 수 있는 활동은 효과가 별로 없습니다. (가령 걷기 같은 것이 그렇습니다.) 그러므로 가능한한 창조적인 활동이 효과가 좋습니다. 음악도 그냥 &#039;악기를 두드리기&#039;만 해서는 효과가 없고, 그 악기로 &#039;무언가를 창조&#039;하는 것일 때 효과가 좋습니다.&lt;br&gt;&lt;br&gt;그런 면에서 보자면 프로그래밍은 우울함의 고리를 끊는 데 꽤 효과가 좋습니다. (저도 효과를 봤습니다.)&lt;br&gt;&lt;br&gt;일단 프로그래밍은 &#039;아무리 익숙하더라도 계속해서 주의를 기울여야 하는&#039; 활동입니다. 무의식적으로 진행할 수 있는 부분이 그렇게 크지 않습니다. 그리고 프로그래밍은 무언가를 만들고 결과를 확인해야만 하는 활동입니다. 다른 예술적 활동들에 비견할 수 있을지는 모르겠습니다만, 만든다는 측면에서 보자면 분명 창조성이 있습니다. 무언가를 &#039;창조&#039;하려면 본인의 &#039;주도적 생각&#039;이 뒷받침되어야 합니다. 그러므로 단순 반복적인 활동이 되기 어렵습니다.&lt;br&gt;&lt;br&gt;다만 프로그래밍은 하루 종일 할 수 있는 활동이 아니므로, 퇴근 이후나 주말 같은 때는 다른 활동을 병행해야 합니다. 상대방이 있을 때는 대화를 많이 하는 것도 효과적인데, 특히 말을 많이 하면 좋습니다. 말을 적게 하고 듣기를 많이 할 경우에는, 듣는 동안 다른 생각이 끼어들어 원래 우울한 상태로 돌아갈 가능성이 높아집니다.&lt;br&gt;&lt;br&gt;이런 식으로 자신의 감정을 계속해서 관찰하고 통제하는 것은 굉장히 피곤한 일이므로, 밤에는 의외로 쉽게 잠들 수 있습니다. 우울함의 고리를 끊는 데는 숙면이 특히 중요한데, 잠을 많이 자지 않으면 체력이 떨어지므로 자신의 감정을 계속해서 관찰하고 통제할 수가 없습니다. 통제력을 상실하게 되면 음주나 흡연과 같은 다른 수단의 힘을 빌리게 되는 일이 잦아지는데, 그러다 보면 자기 모멸감이 심해져 오히려 역효과가 나게 됩니다. &lt;br&gt;&lt;br&gt;하지만 잠이 오지 않는 데 잠을 자려고 애쓰는 것 만큼 힘든 일도 없으므로, 그럴 때는 의사의 도움을 받아 수면 보조제 같은 것을 처방받는 것도 괜찮겠습니다. (저 같은 경우에는 수면 보조제를 받아두었다는 사실을 의식하는 것 만으로도 쉽게 잠들 수 있는 때가 많았습니다.) &lt;br&gt;&lt;br&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>Thoughts</category>
			<category>부정적 몰입</category>
			<category>우울증</category>
			<category>프로그래밍</category>
			<author>(낭만고양이)</author>
			<guid>http://www.buggymind.com/220</guid>
			<comments>http://www.buggymind.com/220#entry220comment</comments>
			<pubDate>Sat, 23 May 2009 14:28:40 +0900</pubDate>
		</item>
		<item>
			<title>프로그래머 17</title>
			<link>http://www.buggymind.com/219</link>
			<description>[이전 글에서 계속..]&lt;br&gt;&lt;br&gt;그렇게 해서 악몽같던 디버깅 행군도 끝나고, 그들이 만든 웹 사이트는 론칭되었습니다. 유식은 일주일 간의 휴가를 얻었으나, 그 기간 동안에도 납품한 회사에서 걸려오는 전화 때문에 편히 쉴 수는 없었습니다. 일주일이 지나 다시 회사에 출근해 자리에 앉자, 연구소장이 그를 불렀습니다. &lt;br&gt;&lt;br&gt;&quot;휴가는 어땠습니까?&quot;&lt;br&gt;&lt;br&gt;소장의 물음에 유식은 쓴웃음을 지었습니다.&lt;br&gt;&lt;br&gt;&quot;잠만 잤습니다. 깨어 있는 동안에는 전화를 받거나 컴퓨터 앞에 앉아 있거나 했구요.&quot;&lt;br&gt;&lt;br&gt;유식의 대답에 소장은 고개를 끄덕거렸습니다.&lt;br&gt;&lt;br&gt;&quot;그랬겠군요. 아무튼, 애썼습니다. 이번 프로젝트의 결과물이 예상보다 훌륭해서, 이사님도 그렇고 저쪽 회사 분들도 그렇고, 모두들 유식씨 칭찬을 많이 하더군요. 자기 일처럼 몸바쳐 일해 주었다고요.&quot;&lt;br&gt;&lt;br&gt;&quot;제 일이었으니까요.&quot;&lt;br&gt;&lt;br&gt;심드렁한 대답에도, 소장은 함박웃음을 지어 보였습니다. 그리고는 말했습니다.&lt;br&gt;&lt;br&gt;&quot;그래서 말인데, 지금 직함 그대로 개발팀장을 계속 맡는 것은 어떻겠어요?&quot;&lt;br&gt;&lt;br&gt;&quot;네...?&quot;&lt;br&gt;&lt;br&gt;&quot;물론 팀장을 맡기에는 나이도 그렇고 걸리는 게 좀 있습니다만, 모두 유식씨의 능력과 책임감을 높이 사고 있어요. 이번 기회에 팀장이 되어 많은 경험을 쌓아 나가는 것도 좋으리라 보는데...&quot;&lt;br&gt;&lt;br&gt;유식은 잠시 생각했습니다. 많은 것이 그의 머리속을 스쳐 지나갔습니다. 난데없이 떨어진 컨설팅 업무, 그리고 마치 나쁜 꿈처럼 순식간에 흘러가 버린 지난 몇 개월... 그는 잠시 눈을 감은 채로 조용히 서 있었습니다. 그의 동료들과 때로는 싸우며, 때로는 같이 눈물 흘리며 매만졌던 그 많은 코드들이 흰 거품을 내며 부서지는 파도의 외침이 되어 그에게로 밀려오고 있었습니다. 그는 그 파도의 소리를 들으며, 입을 열었습니다.&lt;br&gt;&lt;br&gt;&quot;소장님.&quot;&lt;br&gt;&lt;br&gt;&quot;네?&quot;&lt;br&gt;&lt;br&gt;&quot;저, 이제 이 회사 그만 다닐까 합니다.&quot;&lt;br&gt;&lt;br&gt;&lt;div style=&quot;text-align: center;&quot;&gt;* * *&lt;br&gt;&lt;/div&gt;&lt;br&gt;&quot;김주임님?&quot;&lt;br&gt;&lt;br&gt;&quot;...&quot;&lt;br&gt;&lt;br&gt;&quot;김주임님?&quot;&lt;br&gt;&lt;br&gt;선화는 계속 묻고 있었습니다.&lt;br&gt;&lt;br&gt;&quot;어떻게 프로그래머가 되셨냐니까요?&quot;&lt;br&gt;&lt;br&gt;&quot;아, 그게...&quot;&lt;br&gt;&lt;br&gt;유식은 잠애서 막 깨어난 듯한 얼굴로 머리를 긁적거리며 아무 대답을 못하고 있었습니다. 그 때, 박시애 팀장이 다가왔습니다. 손에는 노트북과 마우스가 들려 있었습니다.&lt;br&gt;&lt;br&gt;&quot;지금 회의실로 모이세요.&quot;&lt;br&gt;&lt;br&gt;그러자 유식이 물었습니다.&lt;br&gt;&lt;br&gt;&quot;무슨 회의인지...&quot;&lt;br&gt;&lt;br&gt;&quot;오늘 우리 팀에 인사발령이 전부 끝났습니다. 이제 당분간은 새 인력 충원은 없을 것 같아요. 아직 정식으로 새로 오신 분들과 상견례가 없었는데요. 지금 합시다.&quot;&lt;br&gt;&lt;br&gt;그러자 선화는 활짝 웃으며 물었습니다. &lt;br&gt;&lt;br&gt;&quot;그럼 오늘 회식하는 건가요?&quot;&lt;br&gt;&lt;br&gt;그러자 박팀장도 웃으며 대답했습니다.&lt;br&gt;&lt;br&gt;&quot;글쎄요... 그건 모여서 이야기를 좀 해 봐야 할 것 같은데. 어쨌든 갑시다. 314호에요.&quot;&lt;br&gt;&lt;br&gt;박팀장은 그 말을 남기고 또각또각 굽 소리를 내며, 특유의 날랜 걸음으로 개발실을 빠져 나갔습니다. 개발실에는 다시, 키보드와 마우스 소리 뿐인 일상적인 정적이 찾아왔습니다. &lt;br&gt;&lt;br&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;[1부 끝. 2부에서 다시 시작...]&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;짧고 더디기만 한 잡문 [프로그래머]의 1부가 끝났습니다. 짜증나는 글을 가끔 와서 읽어봐주신 분들께 이 자리를 빌어 감사를 드립니다. 제가 변변한 글 재주가 있는 것도 아닌데 괜히 손댔다가 솔직히 중간 중간 후회도 많이 했습니다만, 뭐 가끔 와주시는 분들이 계시니 중간에 짜르고 날르지는 않겠습니다. &lt;br&gt;&lt;br&gt;그럼 오늘도 좋은 하루 되세요~&lt;br&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>Thoughts</category>
			<category>프로그래머</category>
			<author>(낭만고양이)</author>
			<guid>http://www.buggymind.com/219</guid>
			<comments>http://www.buggymind.com/219#entry219comment</comments>
			<pubDate>Tue, 19 May 2009 17:14:27 +0900</pubDate>
		</item>
	</channel>
</rss>
