<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>hatemogi&#039;s 방랑, 그리고 소프트웨어개발</title>
		<link>http://blog.hatemogi.com/</link>
		<description>프로다운 프로그래머로 가는 길</description>
		<language>ko</language>
		<pubDate>Wed, 01 Feb 2012 13:45:45 +0900</pubDate>
		<generator>Tistory 1.1 (http://www.tistory.com/)</generator>
		<managingEditor>hatemogi</managingEditor>
		<image>
		<title>hatemogi&#039;s 방랑, 그리고 소프트웨어개발</title>
		<url><![CDATA[http://cfs2.tistory.com/upload_control/download.blog?fhandle=YmxvZzg1MzA4QGZzMi50aXN0b3J5LmNvbTovYXR0YWNoLzAvMC5qcGc%3D]]></url>
		<link>http://blog.hatemogi.com/</link>
		<description>프로다운 프로그래머로 가는 길</description>
		</image>
		<item>
			<title>hatemogi.com</title>
			<link>http://blog.hatemogi.com/144</link>
			<description>블로그 이전합니다.&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://hatemogi.com&quot; target=&quot;_blank&quot; title=&quot;[http://hatemogi.com]로 이동합니다.&quot;&gt;hatemogi.com&lt;/a&gt; 에 쓰려고 해요.&lt;br /&gt;
새 블로그에는, 프로그래밍적 이슈만 써볼까 합니다. ㅋ&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;</description>
			<author>hatemogi</author>
			<guid>http://blog.hatemogi.com/144</guid>
			<comments>http://blog.hatemogi.com/144#entry144comment</comments>
			<pubDate>Wed, 21 Dec 2011 13:02:03 +0900</pubDate>
		</item>
		<item>
			<title>근황</title>
			<link>http://blog.hatemogi.com/143</link>
			<description>제 블로그에 들어와본지도 오래됐네요. 북마크를 잘못 눌러서 제 블로그에 들어왔다가, 방명록에 남겨주신 글들을 보고, &quot;아 그래도 이 블로그 몇몇분들이 찾아오시는구나&quot;라고 생각했습니다.&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;마지막 포스팅이, 결혼전이었으니, 1년도 넘은것 같네요. 당시에는 jekyll등의 프로그램으로 블로그를 만들려고하다가, 귀차니즘의 블랙홀에 빠져서 중단된 상태입니다. 아직, nanoc로 블로그를 교체(?)할 생각도 있어요. 그래도 웹개발도 하는 개발자인데, 그냥 티스토리에 얹어서 쓰기는 뭔가가 찜찜하단 말이죠. &lt;br /&gt;
&lt;br /&gt;요새는 git을 좀 밀어보려 하고 있습니다. github.com이 일궈낸 사업과 문화가 너무 마음에 들어서, 사내에 자체 git리파지토리 서비스를 혼자서 업무외로 진행하고 있습니다. 한국형 github서비스를 만들어 공개하고 싶은 생각도 쪼끔은 있습니다. 과연 한국내 github이 필요하거나 유용할지의 판단이 서지 않습니다만, 안해보는 것 보다는 경험이 되겠거니 하는 생각도 있구요. 개인적으로는, 사업을 한다면 이런 개발자스러운, 개발자를 위한 비지니스를 꿈꾸곤 합니다. &amp;nbsp;&lt;br /&gt;
&lt;br /&gt;회사에서는 아무래도 프로그래밍 언어나 프레임웍등을 혼자 마음대로 쓸 수 없기때문에, 개인적으로 활용해보고 싶은 Erlang이나 Riak등을 도입해서 개발해보고자하는 개인적 욕구도 있어요. 사내용은 거의 다 만들었는데, 아직 눈치를 보고 있습니다. &lt;br /&gt;
&lt;br /&gt;회사에도, 이거 사외에도 공개해서 개발자커뮤니티공헌도 하고, 이미지 개선에도 도움이 될거다라고 제안은 해보았습니다만, 역시 아직 크게 반응을 얻지는 못하고 있습니다. 어쩌면 잘된일인지도 모르죠, 그 덕분에 개인적으로 따로 해볼 수 있는 여건이 된거랄까요?&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;따스한 햇살을 보며, 점심시간에 시간이 남아 마구 끄적여봤습니다.&amp;nbsp;&lt;br /&gt;
&amp;nbsp;</description>
			<author>hatemogi</author>
			<guid>http://blog.hatemogi.com/143</guid>
			<comments>http://blog.hatemogi.com/143#entry143comment</comments>
			<pubDate>Wed, 16 Nov 2011 12:31:32 +0900</pubDate>
		</item>
		<item>
			<title>아이폰으로 R/C카 제어하기 데모.</title>
			<link>http://blog.hatemogi.com/142</link>
			<description>&lt;font class=&quot;Apple-style-span&quot; color=&quot;#333333&quot; face=&quot;굴림&quot;&gt;작년에 회사의 &quot;개발자 컨퍼런스&quot;에 전시할 목표로 개발하던, 작은 개인 프로젝트.&amp;nbsp;&lt;/font&gt;&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#333333&quot; face=&quot;굴림&quot;&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#333333&quot; face=&quot;굴림&quot;&gt;작은 임베디드 시스템 만들어서 장난감 자동차를 제어하는 데모를 보이고자 했었다. 회사에서 실비지원 받기로 하고, 각종 부품들을 구매했었으나, 당시 유행했던 &quot;신종플루&quot; 덕분에 행사는 취소되고, 내 프로젝트도 잠정 중단됐었지. (&lt;a href=&quot;http://blog.hatemogi.com/135&quot; target=&quot;_blank&quot; title=&quot;[http://blog.hatemogi.com/135]로 이동합니다.&quot;&gt;http://blog.hatemogi.com/135&lt;/a&gt;&amp;nbsp;,&amp;nbsp;&lt;a href=&quot;http://blog.hatemogi.com/133&quot; target=&quot;_blank&quot; title=&quot;[http://blog.hatemogi.com/133]로 이동합니다.&quot;&gt;http://blog.hatemogi.com/133&lt;/a&gt;)&lt;/font&gt;&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#333333&quot; face=&quot;굴림&quot;&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#333333&quot; face=&quot;굴림&quot;&gt;올해 다시 해당 컨퍼런스가 개최되었고, 난 작년에 중단했던 것을 추가개발해서 데모 완성. 학생시절인양 막판 날밤새기 프로젝트의 스릴을 만끽했다.&amp;nbsp;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#333333&quot; face=&quot;굴림&quot;&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#333333&quot; face=&quot;굴림&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile9.uf.tistory.com/original/122272314CBBDB4D5D183E&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile9.uf.tistory.com/image/122272314CBBDB4D5D183E&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;kdh_IMG_0228.jpg&quot; height=&quot;266&quot; width=&quot;400&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#333333&quot; face=&quot;굴림&quot;&gt;1년이 지나서 보니, 개발툴들도 버전업되어 다시 세팅해서 개발하는것도 쉽지 않았다. 블루투스 통신모듈이 불안정했던 부분을 걱정했었는데, 적어도 하드웨어상의 문제는 아니었던거 같고. (다시 납땜작업해야할까봐 조마조마 했었다)&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#333333&quot; face=&quot;굴림&quot;&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#333333&quot; face=&quot;굴림&quot;&gt;요점은 위드로봇의 LM3S8962모듈에 초간단 펌웨어 개발해 얹어서 R/C의 서보모터 제어하는 PWM신호 내보낸 것. 맥북프로에 얹은 게이트웨이 소프트웨어랑 아이폰에 얹은 소프트웨어야 뭐 늘상 하던 개발이라 특이할게 없었고. 아, 하지만, 맥북 프로에 얹은 게이트웨이를 루비로 개발 할 수 있었던 점은 특이사항. 블루투스 통신을 위해 디바이스 연결해 놓은 것이 그냥 /dev/tty-로 잡혀서, 순수 루비 스크립트로 모두 제어할 수 있었다. BSD 시스템 만쉐이~&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#333333&quot; face=&quot;굴림&quot;&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#333333&quot; face=&quot;굴림&quot;&gt;전시해보고 나니, 회사내에도 관심있어하는 개발자분들이 많아서, 조만간 관련 내용을 잘 정리해보고 싶다고 생각중.&amp;nbsp;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#333333&quot; face=&quot;굴림&quot;&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#333333&quot; face=&quot;굴림&quot;&gt;일단, 결혼준비부터 마무리하고. ㅋ&amp;nbsp;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#333333&quot; face=&quot;굴림&quot;&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#333333&quot; face=&quot;굴림&quot;&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;/div&gt;</description>
			<author>hatemogi</author>
			<guid>http://blog.hatemogi.com/142</guid>
			<comments>http://blog.hatemogi.com/142#entry142comment</comments>
			<pubDate>Mon, 18 Oct 2010 14:29:02 +0900</pubDate>
		</item>
		<item>
			<title>Xkobo for Mac OS X</title>
			<link>http://blog.hatemogi.com/141</link>
			<description>&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
대학시절 동아리방에 덩그러니 놀고 있던 리눅스 머신이 한 대 있었다. 아마도 386수준의 PC에다가 리눅스 깔아놓고, 공부시킬 용도였던거 같은데, 사실 과제마감기간에 임박해, 서버실 자리잡기가 힘들 때 대신 활용되곤 했었지. 그러다 언젠가 부터, &quot;귀여운 우주선게임&quot;이라고 불리는 Xkobo라는 게임이 유행했고, 스코어나 하이레벨 경쟁이 붙기 시작했다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
나도 처음에는 별 쓸데없는 게임이나 하고 있다며 혀를 끌끌찼지만, 그 단순해 보이는 게임의 매력에 빠져들까 생각하던 즈음, 모두가 &quot;마의 23판&quot;이라 부르는 공략불가의 레벨이 있다는 소식을 듣게되었다. 이 소식과 함께, &quot;나라면 깰 수 있을거다&quot;라는 근거없는 자신감이 있었고, 도전하고 말았다. 곧 &quot;마의 23판&quot;은 나에게 처음 공략당했고, 순식간에 &quot;코보의 신&quot;으로 칭송받게 되었지.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
곧 이 소식을 접한 경쟁자들도 도전했고, 며칠이 지나지 않아 &quot;마의 23판&quot;을 넘어서는 동지들이 늘어났다. 문제는 한동안 누구에게도 깨지지 않던 &quot;마의 23판&quot;이 한명에게 깨지는 순간, 봇물 터지듯 모두가 깨고 말았다는 거다. &quot;안된다고 생각하던 일도, 누군가 이뤄낸(?)것을 알게 되면, 금방 되게 할 수 있다&quot;는 걸 눈앞에서 경험한 순간이랄까? &quot;할 수 있다&quot;라는 자신감의 중요성. 훗.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
어쨋든, 잠시나마 즐겼던 Xkobo의 여운을 잊지 못해, 해당 게임을 윈도우용으로 포팅하기로 맘먹었었다. X Window에 C로 작성된 게임을 Win32환경에 Delphi로 포팅했다. 지금생각해보면 정말 무식한 포팅이었다. 모든 C코드를 손수 Pascal코드로 번역한거니까.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
그게 98년쯤의 일이니 12년전 얘기구나....&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
그러다가, 얼마전에 Mac OS X용으로 포팅했다. 사실 &amp;nbsp;Mac OS X에는 이미 X Window 시스템이 들어가 있기 때문에, 거의 그대로 컴파일하고 실행해서 즐길 수 있다. 하지만 원래 코드가 워낙 오래된지라, 요새의 Mac OS X에서 컴파일할때 호환이 되지 않는 부분이 있었고, 몇줄 수정하고 애플스크립트로 묶어서, 애플리케이션으로 만들어서 공개.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;img src=&quot;http://osxkobo.appspot.com/screenshot3.png&quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;a href=&quot;http://osxkobo.appspot.com/&quot; target=&quot;_blank&quot; title=&quot;[http://osxkobo.appspot.com/]로 이동합니다.&quot;&gt;http://osxkobo.appspot.com/&lt;/a&gt;&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
이게 진정한 포팅이라고할 수 있지.&amp;nbsp;&lt;/div&gt;</description>
			<category>programming</category>
			<author>hatemogi</author>
			<guid>http://blog.hatemogi.com/141</guid>
			<comments>http://blog.hatemogi.com/141#entry141comment</comments>
			<pubDate>Thu, 05 Aug 2010 11:56:23 +0900</pubDate>
		</item>
		<item>
			<title>Other people&#039;s jobs</title>
			<link>http://blog.hatemogi.com/140</link>
			<description>&lt;a href=&quot;http://dilbert.com/strips/comic/2010-07-20/&quot; title=&quot;Dilbert.com&quot;&gt;&lt;img src=&quot;http://dilbert.com/dyn/str_strip/000000000/00000000/0000000/000000/90000/5000/100/95109/95109.strip.gif&quot; border=&quot;0&quot; alt=&quot;Dilbert.com&quot;&gt;&lt;/a&gt;&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
그렇다. 딜버트에 나오는 저 풍자되는 보스 캐릭터가 점점 이해되는 것은, 나이가 들어감에 따라서 일까? 아, 내가 저런 캐릭터가 되겠다는 것은 아니고, 단지 이해가 조금 된다는거. &amp;nbsp;</description>
			<author>hatemogi</author>
			<guid>http://blog.hatemogi.com/140</guid>
			<comments>http://blog.hatemogi.com/140#entry140comment</comments>
			<pubDate>Thu, 22 Jul 2010 11:16:27 +0900</pubDate>
		</item>
		<item>
			<title>구글코드잼 1라운드 탈락</title>
			<link>http://blog.hatemogi.com/139</link>
			<description>&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 16px; line-height: 24px;&quot;&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
기분이 복잡하면 무제 노트를 펴고, 그냥 머리속의 이런 저런 생각들을 마음에 드는 펜으로 끄적여보곤 한다. 이래저래 편하게 적다보면 딱히 정리되는 것은 없더라도, 무언가 편해지는 느낌이 있어.&amp;nbsp;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;오래간만에 내 블로그에 들렀다. 주인조차 들르지 않는 블로그라니, 누가 와서 들러보겠는가. 마지막 포스트가 구글코드잼 예선 통과에 관한 것이었구나. 결과를 안적었었네. 결과는 사실 창피하다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
&lt;a href=&quot;http://www.go-hero.net/jam/10/name/hatemogi&quot; target=&quot;_blank&quot; title=&quot;[http://www.go-hero.net/jam/10/name/hatemogi]로 이동합니다.&quot;&gt;http://www.go-hero.net/jam/10/name/hatemogi&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
본선1라운드의 A, B, C중 한번이라도 1,000위 안에 들면 본선2라운드로 진출하는 것이었는데, 세번 모두 1,800위 정도의 저조한 성적을 기록하며 탈락했다. A, B, C 모두 참가하고도 (즉, 7시간 30분을 들이고도) 다 떨어지는 최악의 시나리오가 펼쳐졌달까? 세 번 모두 가장 쉬운문제만 풀 수 있었다. 나머지는 이해도 못한 문제가 많았다. &amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
아무튼 저렇게 떨어지고나니, 허탈감이라해야할지 뭐랄지 모를 묘한 부정적 감정에 휩싸여버렸다. 첫 도전에 쉽지 않을거라 생각은 했지만, 그래도 본선2라운드는 진출 할 수 있을거라 내심 기대했었는데 말이다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
대학때, 자료구조 수업을 들었을 때의 느낌이랄까? 첫 전공수업다운 전공수업이었는데, 쉽게 적응하지 못했을 때의 당혹감과 비슷하다. 내가 좀 한다고 자만하던 분야에서의 코깨짐? ㅋ&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
따지고보면 뭐 세계 4,000위쯤 되니, 그렇게 형편없는 것은 아니라고 위안해보지만, 난 이해할 수도 없는 문제들을 10~20분에 다 풀어내는 애들이 있다는 사실을 보면 주눅이 드는 기분은 피할 수 없다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
내년에 또 도전해 봐야지 뭐. 그냥 무작정 재도전이 아니라, 알고리즘 책이라도 한권 공부하면서 준비하자구.&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 16px; line-height: 24px;&quot;&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;</description>
			<category>programming</category>
			<author>hatemogi</author>
			<guid>http://blog.hatemogi.com/139</guid>
			<comments>http://blog.hatemogi.com/139#entry139comment</comments>
			<pubDate>Tue, 13 Jul 2010 12:11:10 +0900</pubDate>
		</item>
		<item>
			<title>Google Code Jam 2010 QR통과</title>
			<link>http://blog.hatemogi.com/138</link>
			<description>얼마전 우연히 발견한 Google Code Jam, 살펴보니 올해로 3년째인 코딩 실력 뽐내기 대회인 것 같았다. 오래전 학창시절 이런 경진대회(?)에 나갔어야 했겠지만, 학교다닐 때는 노느라 바빠서, 나갈 생각도 못했지. 게다가 어설픈 기억엔 단체참가 위주였던것 같은데, 이 대회는 단독 참가인것 같더군.&amp;nbsp;&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
녹슬은 머리에 기름칠해야겠다는 심정으로 일단 참가신청을 하고, 과거 기출문제를 연습삼아 풀어보기로 했다. 예선 문제야 너무 쉬웠지만, 본선 1라운드 부터 쉽게 풀리지 않는다. 첫번째 문제를 풀었으나, large-set에 대해 답이 통 나오질 않아, 결국 루비만으로 푸는 것은 포기하고, C extension 넣어서 처리. 보통은 C++로 많이 푸는것 같아 보인다. 재미없는 구현으로 한참 시간을 쏟고 나니, 흥미가 급격히 떨어졌고, 별다른 공부나 연습없이, 예선날짜는 다가왔다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
우리나라 시간으로 5월 8일 오전8시. 토요일인 점은 좋았지만, 오전 8시는 내게 너무 힘든시간 아닌가? 어렵사리 일어나서 눈비비적 거리며 문제를 읽기 시작. 24시간 내에 풀면 되지만, 난 오후에 약속이 있으므로, 오전내에만 다 풀자는 생각으로 시작했다. 그런데 이게 왠걸? 작년 예선문제에 비해 난이도가 꽤 높은걸? 풀다가 딴짓하다, 밥먹다가, 좀 누워있다가, 쉬엄쉬엄 했다지만, 총 소요시간은 무려 6시간. 구글 왈, 한시간 남짓에 풀 수 있을것으로 보인다고 했었는데 말이다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
세번째 문제의 large set을 처리하지 못해서, 76점으로 마무리했고, 예선은 통과한 셈. 풀지 못했던 세번째 문제의 large set도 오늘에야 재도전해서 풀기야 했지만, 두시간 이상 걸린것 같다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
다음주 토요일의 본선 1라운드에서는, 이보다 높은 난이도의 문제들을 2시간 30분 내에 풀어야 한다. 목표는 본선2라운드까지 진출하는 것인데, 빠듯해 보이는구나.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
다른사람들의 결과를 보니, 참 대단들 하다는 생각이 든다. 갖가지 언어로 푸는 사람들도 있고말이다. 일단의 생각은 진출할 수 있는 수준까지 나가고, 내년에도 기회되면 참가해봐야겠다는 생각이 든다. 두뇌 운동 삼아 말이다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;a href=&quot;http://code.google.com/codejam/contest/scoreboard?c=433101#vf=1&amp;amp;sp=1641&quot; target=&quot;_blank&quot; title=&quot;[http://code.google.com/codejam/contest/scoreboard?c=433101#vf=1&amp;amp;sp=1641]로 이동합니다.&quot;&gt;http://code.google.com/codejam/contest/scoreboard?c=433101#vf=1&amp;amp;sp=1641&lt;/a&gt;&lt;/div&gt;</description>
			<category>일상</category>
			<author>hatemogi</author>
			<guid>http://blog.hatemogi.com/138</guid>
			<comments>http://blog.hatemogi.com/138#entry138comment</comments>
			<pubDate>Mon, 10 May 2010 19:35:26 +0900</pubDate>
		</item>
		<item>
			<title>TLS on iPhone</title>
			<link>http://blog.hatemogi.com/137</link>
			<description>아이폰 응용프로그램으로부터 서버와 네트워크 통신하는 내용을 암호화 하기 위해 &lt;a href=&quot;http://en.wikipedia.org/wiki/Transport_Layer_Security&quot; target=&quot;_blank&quot; title=&quot;[http://en.wikipedia.org/wiki/Transport_Layer_Security]로 이동합니다.&quot;&gt;TLS(Transport Layer Security)&lt;/a&gt;를 쓰는 방법을 정리합니다.&amp;nbsp;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-size: 14pt; &quot;&gt;&lt;b&gt;HTTPS&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
HTTP통신의 경우에는 NSURLRequest를 사용할때 https 스킴을 사용하면 자체적으로 HTTPS를 사용하므로, 별다른 설정 없이 보안설정이 가능합니다. 일반 HTTP통신과 동일한 방식으로 NSURLConnection 객체를 활용하여 HTTPS를 사용할 수 있습니다.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
서버측에서 비공인 인증서(eg. self-signed certificate)를 경우에는, 아래의 delegate method를 구현해서 처리 가능합니다.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;blockquote&gt;&lt;div&gt;
- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace;&lt;/div&gt;
&lt;div&gt;- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge;&lt;/div&gt;
&lt;/blockquote&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; &quot;&gt;&lt;span style=&quot;font-size: 14pt; &quot;&gt;TLS socket&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
하지만, HTTP통신이 아닌, 일반 소켓 통신의 경우 얘기가 조금 다릅니다. NSStream 객체로 만들어 소켓통신을 할 수 있습니다만, SSL통신을 하기위한 옵션이 있습니다. NSStream을 만들고 스트림을 open하기 전에 아래의 속성을 설정하고 나서, 스트림을 열면, 열리자 마자 TLS handshaking을 진행합니다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;
[stream setProperty:NSStreamSocketSecurityLevelTLSv1 forKey:NSStreamSocketSecurityLevelKey];&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/blockquote&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;하지만, 이경우에 비공인 인증서는 사용할 수 없습니다. 어떻게 하면 비공인 서버인증서로 TLS통신을 할 수 있을까 조금 더 자료를 찾아본 결과, CoreFoundation쪽을 직접 건드리는 방법이 있었습니다. CFReadStream과 CFWriteStream에 속성을 설정할 수 있는 함수가 있고, 아래의 코드처럼 kCFStreamSSLValidatesCertificateChain속성을 NO로 설정해서, 서버인증서 검증과정을 생략할 수 있습니다.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;
&lt;div&gt;NSDictionary *settings = [NSDictionary dictionaryWithObjectsAndKeys:&lt;/div&gt;
&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt; &amp;nbsp;[NSNumber numberWithBool:NO], kCFStreamSSLValidatesCertificateChain,&lt;/div&gt;
&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;&amp;nbsp;&amp;nbsp;kCFStreamSocketSecurityLevelTLSv1, kCFStreamSSLLevel,&lt;/div&gt;
&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt; &amp;nbsp;nil];&lt;/div&gt;
&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;CFReadStreamSetProperty(readStream, kCFStreamPropertySSLSettings, (CFTypeRef)settings);&lt;/div&gt;
&lt;div&gt;CFWriteStreamSetProperty(writeStream, kCFStreamPropertySSLSettings, (CFTypeRef)settings);&lt;/div&gt;
&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;위의 설정후에 CFReadStream과 CFWriteStream을 각각 NSInputStream과 NSOutputStream으로 바꾸어 사용하면, open후 TLS handshaking이 진행된 채로 데이터를 주고 받을 수 있습니다.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
			<category>programming</category>
			<author>hatemogi</author>
			<guid>http://blog.hatemogi.com/137</guid>
			<comments>http://blog.hatemogi.com/137#entry137comment</comments>
			<pubDate>Wed, 24 Mar 2010 17:22:07 +0900</pubDate>
		</item>
		<item>
			<title>EventMachine에서 epoll/kqueue를 사용하려면...</title>
			<link>http://blog.hatemogi.com/136</link>
			<description>&lt;div&gt;
&lt;b&gt;&lt;span style=&quot;font-size: 12pt; &quot;&gt;EventMachine&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
EventMachine은 Ruby, Java, 그리고 C++을 위한 고성능 네트웍 I/O라이브러리이다. 최근 네트웍서버를 하나 만들게 되었는데, 프로토타입 개발과 성능테스트 모듈을 EventMachine으로 개발했다. 예전에는 Ruby용 라이브러리라고만 생각했는데, 살펴보니 Java나 C++환경에서도 쓸 수 있을뿐더러 (JRuby가 아니고서야 누가 쓸까 궁금하긴 하지만 말이다) 보면 볼 수록 잘만들었다는 생각이 들었다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
실제 서버는 사내의 자체개발 프레임워크를 이용해 C로 개발을 완료하고 성능테스트를 돌리려는 시점이었다. &amp;nbsp;EventMachine을 써서 개발한 루비 프로세스를 17대의 서버에 얹어놓고, 한꺼번에 접속해서 부하를 주려는데, 각각의 루비프로세스가 TCP커넥션이 1024개 근처가 되면 죽어나가는 상황 발생. 당연이 Max Open File Descriptor문제이리라 생각하고, 17대의 서버에서 &amp;nbsp;ulimit을 모두 올려주었다. soft/hard limit을 모두 올려놓고 다시 테스트를 하는데, 또다시 1024개 근처에서 루비프로세스는 죽고 말았다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
성능테스트 모듈자체가 중요한 상황이 아니었기때문에, 해당 문제를 해결하는 일은 접어두고, 성능테스트 자체에 집중하기로 했다. 결국 각각의 서버에서 다수의 루비프로세스를 실행해서 목표서버에 무식하게 많은 커넥션을 열고 트래픽을 걸어서 테스트를 완료했다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style=&quot;font-size: 12pt; &quot;&gt;Ruby의 select문제&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
그러고 며칠 후, 아무리 생각해도, 루비 프로세스가 죽어나간 점이 찜찜해서, 여유시간에 해당 문제를 파고들었다. 찾아낸 결과 자료는 의외로 가까운 곳에 있었다. eventmachine패키지안에 포함된 &lt;a href=&quot;http://github.com/eventmachine/eventmachine/blob/master/docs/EPOLL&quot; target=&quot;_blank&quot; title=&quot;[http://github.com/eventmachine/eventmachine/blob/master/docs/EPOLL]로 이동합니다.&quot;&gt;EPOLL이라는 텍스트 문서&lt;/a&gt;에 아주 자세하게 설명되어있던 것.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
select함수는 해당되는 descriptor가 수백개가 넘어가면 성능저하가 매우 진다고 하는데, 게다가 &lt;b&gt;루비에서는 select를 사용할 수 있는 디스크립터 수가 1024개로 제한되어있던 것&lt;/b&gt;. 우선 루비에서 하드코딩으로 이 숫자가 제한되어 있는 점은 그러려니 한다. 어차피 수백개 넘어가면 지나친 성능 저하로 실용성이 매우 적기 때문에 1024개도 너무 많다고 생각하니까 말이다. 하지만, 문제는, 믿었던 EventMachine인데, 난 이 친구가 당연히 epoll/kqueue를 기본으로 사용한다고 믿어 의심치 않았던 것. &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style=&quot;font-size: 12pt; &quot;&gt;epoll, kqueue&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
EventMachine의 기본값은 그냥 일반 select함수를 사용하는 것이었다. 응? 설치할 때 컴파일하면서 시스템별로 사용할 수 있는 함수 사용하는 거 아니었어? 당연히 내 Mac에서는 kqueue를 쓰고, Linux환경에서는 epoll써줘야하는 거 아니야? 결과적으로, 현재버전까지(0.12.10) 아직은 아니었다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
EM.run 블럭을 실행하기전에&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;blockquote&gt;&lt;div&gt;
EM.epoll&lt;/div&gt;
&lt;div&gt;
EM.kqueue&lt;/div&gt;
&lt;div&gt;
EM.run {&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp; ...&lt;/div&gt;
&lt;div&gt;
}&lt;/div&gt;
&lt;/blockquote&gt;&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
를 실행해 주어야, 해당 기능을 쓸 수 있는 환경에서 작동을 하며, 그렇지 않다면 그냥 select를 쓰게 되는 것. &amp;nbsp;두 함수는 해당 기능을 쓸 수 없는 환경에서는 무시되므로 환경 생각하지 않고 호출해주어도 되겠다. 기본값이 일반 select를 쓰게해놓은 이유는 뭘까?&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
아무튼, EventMachine을 쓰면서 다수의 연결을 유지해야할 필요가 있다면, 위 메소드들을 꼭 호출해 놓고 사용해야할듯 하다. &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;</description>
			<category>programming</category>
			<category>eventmachine</category>
			<category>ruby</category>
			<author>hatemogi</author>
			<guid>http://blog.hatemogi.com/136</guid>
			<comments>http://blog.hatemogi.com/136#entry136comment</comments>
			<pubDate>Thu, 26 Nov 2009 15:02:18 +0900</pubDate>
		</item>
		<item>
			<title>드리프트 제어 유닛</title>
			<link>http://blog.hatemogi.com/135</link>
			<description>&lt;div&gt;
&lt;b&gt;&lt;span style=&quot;font-size: 11pt; &quot;&gt;장난감 R/C카 제어&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
최근 몰입하고있는 개인 프로젝트가 있습니다. &quot;소프트웨어 개발자의 하드웨어 개발기&quot;를 쓰게 된 이유이자, 목표 결과물은 오래전의 꿈과 관계되어 있습니다. 사실 대학시절에 완성했어야할 프로젝트인데 10여년이 지난 이제서야하고 있네요. 어린시절 꿈쫓기의 하나입니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
만들고 있는 것은 맥북(or 아이팟 터치)로 R/C 자동차를 제어하는 시스템입니다. 이 프로젝트를 핑계로, 입문용 R/C 자동차 세트도 하나 샀습니다. 어릴적에 그토록 갖고 싶었던 장난감이죠. (사실은 이게 사고싶어서 이런저런 핑계를 만든건지도 모릅니다)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;table class=&quot;flickrImgSearch&quot;&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;http://www.flickr.com/photos/19461752@N00/3848495820&quot; title=&quot;DSC_6174&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3544/3848495820_78719a7d00.jpg&quot; width=&quot;450&quot; alt=&quot;DSC_6174&quot; style=&quot;border: 0; padding-bottom: 7px;&quot;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div&gt;
임베디드 시스템을 만들어 넣어서, MacBook이나 iPod Touch에 개발해 넣은 소프트웨어로 저 사진의 장난감 차량을 제어하는 것입니다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;blockquote&gt;&lt;div&gt;
컴퓨터 -&amp;gt; 무선 통신 -&amp;gt; 임베디드 시스템 -&amp;gt; R/C 자동차&lt;/div&gt;
&lt;/blockquote&gt;&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
이런 제어 흐름인데요, 사실 임베디드 시스템이 가장 약한부분이자, 관심부분입니다. 이번 기회를 통해서 어느정도 경험이 쌓이면, 여기에 간단한 OS를 얹는다거나, 루비같은 언어의 인터프리터를 얹는다거나해서 더 어릴쩍의 꿈을 이뤄볼 수도 있겠다는 야망이 불타 오릅니다. 흐흐, 김칫국물 마구 마시고 있습니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style=&quot;font-size: 11pt; &quot;&gt;학창시절에 했어야할...&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
사실 이 구성은 대학시절에 구현했던 내용의 연장선 위에 있습니다. 초기 모델은 대학 신입생 시절에 전시회에 출품한 프로그램이었습니다.&amp;nbsp;당시에는 정말 애들용 R/C를 PC의 패러럴 포트에 연결한 회로를 이용해서 제어했었지요. 단순히 키보드로 R/C카를 제어한 간단한 예제였습니다만, 관람객(?)들은 키보드를 눌렀는데 실제 장난감이 움직인다며 신기해해서 반응이 좋았습니다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
이어서, 제대로된 R/C 차량을 이용해서, 차량동역학 시뮬레이션을 해보고 싶었습니다만, 각종 미적분 수학식의 무게에 압도당해 완성하지 못했던 아쉬움이 남아있습니다. 다시 한번 기회를 잡아 인공지능 수업때에 과제프로젝트로 구현하려 했었으나, 프로젝트 상담중에 교수님과의 상담중에 방향이 바뀌어 결국 남들 다하는 시시한 오목 프로그램 만들었었습니다. 결국 그렇게 시간은 가고, 그냥 졸업해버렸네요.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
당시에는 자동차 시뮬레이션 게임도 지금보다는 사실성(?)이 떨어지던 시점이었기 때문에, 계속 파고들었으면, 그럴싸한 자동차 시뮬레이션 소프트웨어를 흉내내볼 수 있었을지도 모르겠습니다만, 지금은 아무리 잘만들어봐도, 요새의 레이싱 게임만큼 만들기는 절대 무리겠지요. 대신에 공개된 레이싱 게임엔진을 찾아다 활용해 볼 수도 있겠네요.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
어쨌건, 차량제어 시뮬레이션을 저 1/10 스케일의 폭스바겐으로 보여줄 수 있다는 가정하에, 이런저런 프로그램을 만들어 볼 수 있겠습니다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style=&quot;font-size: 11pt; &quot;&gt;드리프트 놀이&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
사진의 저 차량은 온로드(포장도로) 주행용 4륜구동 차량인데, 타이어를 드리프트용으로 교체해서 달았습니다. 액션영화에서 빠지지 않는 자동차 추격신의 하일라이트는 차량간 총격씬과, 골목길에서의 드리프트씬 아닐까요? 주인공의 차량은 아찔하게 사고를 피해가며, 골목길을 빠져나와 큰길로 접어들며 요란한 타이어 마찰음과 함께 카운터 스티어링과 함께 드리프트를 선보이죠.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
아래 사진은 실제 드리프트 경주용 차량의 사진입니다.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile3.uf.tistory.com/original/1242CB1C4A921AABABD848&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile3.uf.tistory.com/image/1242CB1C4A921AABABD848&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;drifting_main_image.jpg&quot; height=&quot;277&quot; width=&quot;600&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
드리프트 관련 자료를 찾아보다가, 드리프트의 원리와 방법들을 살펴보게 됐는데, 역시 드리프트가 쉬운게 아니더군요. 덕분에 왜 가능 방향과 반대로 카운터스티어링을 걸어주는지도 알게됐습니다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
드리프트의 기본은 &quot;뒷바퀴의 오버스티어링을 활용해서 차량 주행을 컨트롤&quot;하는 것이더군요. 뒷바퀴의 오버스티어링을 위해서는 차량이 4륜구동이거나 후륜구동이어야합니다. 국내 대부분의 세단차량은 전륜구동이므로, 일반 차량으로 드리프트를 해보기 어렵다는 판단에 이를 수 있습니다. 전륜구동 차량은 오히려 앞바퀴의 언더스티어링 현상이 발생하기 쉽습니다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
R/C차량의 경우 후륜구동 또는 4륜구동이 대부분인데, 2륜구동 차량으로는 드리프트를 제어하기 어렵기때문에 대부분 4륜구동 차량으로 드리프트 놀이(?)를 한다고 합니다. 4륜구동 차체를 준비해서 타이어만 미끄러지기 쉬운 드리프트 타이어로 교체해도 어느정도의 드리프트는 구사할 수 있습니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
문제는 이 드리프트 기술을 활용하기 위해서는 뒷바퀴 오버스티어를 만회(?)할 수 있는 카운터스티어링이 적절히 필요하다는 겁니다. (위 사진을 보면 차량은 좌측으로 회전중이지만, 바퀴는 오른쪽을 향하고 있는 것을 볼 수 있습니다. 아래 그림은 반대)&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile3.uf.tistory.com/original/1721341A4A921B273AF50E&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile3.uf.tistory.com/image/1721341A4A921B273AF50E&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;drifting-apex.jpg&quot; height=&quot;332&quot; width=&quot;600&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
뒷바퀴가 오버스티어링 되는 상황을 그냥 내버려두면 차체가 계속 스핀이 걸려서 휙 돌아버리게 되는데, 이를 막기 위해, 접지력이 남아있는 앞바퀴의 방향을 회전반대편으로 조절하여, 차체의 회전을 막는 것입니다. 게다가, 속도가 어느정도 줄어서 다시 뒷바퀴의 오버스티어링이 끝나갈 시점에는 다시 카운터스티어링을 풀어줘야, 다시 반대편으로 급회전하게 되는 현상을 막을 수 있습니다. (오락실에서 레이싱 게임할 때, 흔히 겪는 현상이죠. 코너를 돈다고 심하게 핸들을 꺾었다가, 미끌어지기 시작해서 반대로 꺾다보면, 조금 제대로 가는 듯 싶다가 다시 반대쪽 벽을 들이받는 현상이죠)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile4.uf.tistory.com/original/143B591C4A921BB29DCF9C&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile4.uf.tistory.com/image/143B591C4A921BB29DCF9C&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;drifting-overview.gif&quot; height=&quot;374&quot; width=&quot;700&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
즉, 적절한 드리프트 코너웍을 위해서는, B시점에 핸들을 반대쪽으로 틀어서 카운터 스티어링을 걸고, D시점에는 정상 스티어링으로 풀어줘야 원하는대로 코너를 빠져나올 수 있는 것입니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style=&quot;font-size: 11pt; &quot;&gt;드리프트 컨트롤 유닛&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
이 기술을 구사하려면 많은 연습이 필요한것 같습니다. 순간적인 반응도 중요할테구요. 여기서 만들 임베디드 시스템의 응용 방법이 떠올랐습니다. 임베디드 시스템은 현재의 바퀴 회전각과 전후진 추진력을 알고 있으니, 현 차체의 움직임을 판단할 수 있다면 (즉, 오버스티어링 현상을 감지할 수 있다면) 자동으로 카운터스티어링을 걸어줄 수 있을거라는 생각이 들었습니다. 즉, 스핀현상을 막아서, 대충의 손기술로도 드리프트 놀이를 해볼 수 있지않을까 합니다. 다시말하면, 실제 차량에 탑재되는 차량 주행안전시스템(ESC등으로 불리는 옵션들)의 한 보기를 구현해볼 수 있다는 겁니다. (이거 찾아보다가 ABS의 원리까지 파악하게 됐습니다.)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
더 흥미로웠던 점은, 이렇게 구현하려는 시스템이, 실제 R/C계에 상용화된 상품이 있다는 점이었습니다. 아래는 해당 제품을 판매하는 HPI사의 홍보 동영상입니다. 각각 해당기능을 켰을때와 껐을때의 시범 동영상이 있습니다. 물론 홍보용이니까 조금 과장된 면은 없지 않겠습니다만, 적절한 자동 카운터스티어링으로 스핀을 막아 안정된 드리프트 주행을 보여줍니다. &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;object type=&quot;application/x-shockwave-flash&quot; classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot; codebase=&quot;http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0&quot; width=&quot;502&quot; height=&quot;399&quot;&gt;
	&lt;param name=&quot;movie&quot; value=&quot;http://flvs.daum.net/flvPlayer.swf?vid=0I5AIncpONk%24&amp;amp;pwidth=502&amp;amp;pheight=399&quot;/&gt;
	&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;/&gt;
	&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;/&gt;
	&lt;param name=&quot;bgcolor&quot; value=&quot;#000000&quot;/&gt;
	&lt;embed src=&quot;http://flvs.daum.net/flvPlayer.swf?vid=0I5AIncpONk%24&amp;amp;pwidth=502&amp;amp;pheight=399&quot; width=&quot;502&quot; height=&quot;399&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; type=&quot;application/x-shockwave-flash&quot; bgcolor=&quot;#000000&quot;/&gt;
&lt;/object&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
제품의 연결선을 보아하니, 가속도 센서 값을 읽어 순간적인 회전이 발생하면 오버스티어링 상황으로 간주해서 카운터 스티어링을 걸어주는 방식으로 구현한것 같습니다. 간단하게는 이정도로 드리프트를 돕는 유닛을 만들 수 있겠구요, 나아가서는 가속/감속 상황까지 판단해서 더 나은 수준으로 구현해 볼 수도 있을 것 같습니다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
그 외의 재미난 응용사례도 있으면 좋겠습니다. 이 결과물은, 10월달에 열리는 회사 개발자 컨퍼런스에 출품할 예정입니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
====================================&lt;/div&gt;
&lt;div&gt;
인용자료: hpiracing.com, drivingfast.net&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;</description>
			<category>programming</category>
			<author>hatemogi</author>
			<guid>http://blog.hatemogi.com/135</guid>
			<comments>http://blog.hatemogi.com/135#entry135comment</comments>
			<pubDate>Mon, 24 Aug 2009 11:56:01 +0900</pubDate>
		</item>
		<item>
			<title>첫 회로 구성 완료</title>
			<link>http://blog.hatemogi.com/134</link>
			<description>&lt;div&gt;
&quot;소프트웨어 개발자의 하드웨어 개발기&quot; 두번째 글입니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
ARM Cortex M3 기반의 LM3S8962 개발보드에 블루트스 모듈, 3차원 가속도 센서 모듈을 연결하는데 성공했습니다. 전원공급과 배선 납땜조차 어떻게 해야하는지 모르는 상황에서 이래저래 하다보니 기대이상 잘 됐습니다. PWM 생성해서 서보모터 제어하는데에도 성공했습니다.&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;table class=&quot;flickrImgSearch&quot;&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2508/3848489098_a601c23ced.jpg&quot; alt=&quot;DSC_6172&quot; style=&quot;border: 0; padding-bottom: 7px;&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;div&gt;
완성한 1차 보드의 모습. 맨 왼쪽은 JTAG 인터페이스, 가운데가 LM3S8962개발보드, 맨 우측이 블루트스 통신 모듈, 그 아래가 3차원 가속도 센서입니다. 기판 아래쪽에는 전원 공급과 서보모터를 연결하는 핀을 배치했습니다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
하나하나 직접 만들려면 꽤나 어려운 일일텐데, 고맙게도 모듈화가 너무 잘 되어있어서, 필요한 모듈을 사다가 연결만 하면 되는 수준이었습니다.&amp;nbsp;이제 납땜은 일시 중단하고, 소프트웨어 개발을 본격적으로 해봐야겠습니다.&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
(저 보드는 프로토타입이랍시고 대강대강 만들었는데, 한번 하고 나니, 다시 하고 싶지는 않아서, 그냥 저걸로 그냥쓸까도 생각중입니다. 아마도 이걸로 끝나지는 않겠지만요)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
여기까지 만들면서 어리석은 궁금증이 많았는데, 이래저래 찾아보고, 또 가까운 전문가(!)들에게 물어봐가며 해결했습니다. 제가 궁금했던 부분과 그 해결사항을 나름대로 적어봅니다. (학창시절이었다면, 자료 찾아보기도 쉽지 않았을텐데, 요새는 위키페디아에 이런정보들도 아주 잘 나와있더군요. 위키페디아 덕을 톡톡히 보고 있습니다. 이하는 제멋대로 이해한 내용이며, 정확한 내용을 위해서는 위키페디아를 보시는게 좋을것 같습니다)&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;
Q. 서보모터를 제어하기 위해서는 PWM (Pulse-Width Modulation)방식을 쓴다고 하는데, 대체 PWM이 무엇인가?&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
A. 1과0의 값을 넣어주는 주기와 길이에 따라 그 중간값을 표현하는 방식입니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile2.uf.tistory.com/original/14584F194A913D5395C522&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile2.uf.tistory.com/image/14584F194A913D5395C522&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;Duty_cycle_general.png&quot; height=&quot;245&quot; width=&quot;700&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
위 그림으로부터 단순하게 이해하면, T주기 내에서 Ymax로 표현된 값이 지속된 시간 DT만큼의 비율로 표현 값을 이해할 수 있습니다. 예를들어 D.T가 T의 절반이라면 0.5로 해석하고, T와 같다면 1.0, 계속 Ymin이라면 0.0이라고 이해할 수 있는 것입니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
제가 구매한 서보모터의 사양을 보면, 20ms주기 T에서, 1.5ms동안 High신호를 주고, 나머지를 Low로 주면 중립위치를 지키고, 1.0ms ~ 2.0ms 범위에서 High값을 주면 해당 값에 맞게 서보모터의 각도가 변화합니다. &amp;nbsp;즉, 20ms중에 앞부분 일부만을 사용해서 결과값을 사용하는 것이죠.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Q. 회로도들을 보면 캐퍼시터를 끼워넣는 곳이 많은데, 캐퍼시터의 역할은?&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
A. 전류를 안정화합니다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
캐퍼시터의 역할이 여러가지 있는것 같은데, 제가 본 회로도에서의 역할은 전류흐름 안정화였습니다. 각종 대학서적을 봐도, 캐퍼시터의 종류와 특성은 잘 나와있으나, 왜 쓰는지에 대한 얘기를 찾기 어려웠습니다. 나와있어도, 저로서는 이해하기 어려웠습니다만, 결국 이해한 내용은 매우 간단합니다. 소프트웨어쪽으로 치자면 버퍼링입니다. 버퍼사이즈가 너무 적으면, 중간중간 데이터가 끊기는 상황이 생길 것이고, 사이즈가 너무 크면, 버퍼링하는 시간이 길어지겠죠. 적절한 크기에 맞는 캐퍼시터를 택하는것이 적절한 버퍼사이즈 정하는 것과 비슷한 문제인 것 같았습니다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
DC전원을 공급하더라도, 그때그때 상황에 따라 전류가 튈 수 있는데, 이로 인한 오동작을 막기 위해 캐퍼시터를 중간에 병렬로 끼워주면, 안정화를 돕는 것 같습니다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Q. 서보모터를 제어하기위해서는 4.8V~6V사이의 전압을 공급해야하는데, MPU에서 나오는 PWM신호(아마도 3.3V)를 공급해서도 제어할 수 있는가?&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
A. 연결해보니 잘됩니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
LM3S8962보드는 공급전압이 3.3V입니다. 각종 출력핀의 전압도 3.3V이지 않을까 생각되는데요, (지금생각해보니 측정해보면 되는군요ㅠ.ㅠ), 그렇다면, PWM출력신호도. 3.3V일 가능성이 높았습니다. 이 신호를 그대로 써도 서보모터가 정상 작동할지가 궁금했었습니다. 자료도 찾아보고, 주변의 전문가(!)들에게 물어보니, 아마도 될거 같으니, 한번 연결해 보라는 답변을 들었습니다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
찾아보니, 이런 디지틀 입출력값을 TTL(Transistor-Transistor Logic)방식이라고 하는데, 0V~5V의 범위에서 0V~0.8V로 연결되면 Low(0), 2.2V~5.0V로 연결되면 High(1)로 나누어 판단하는 기준이었습니다. 즉, 만약 3.3V로 High신호가 나간다고 하더라도, 5V TTL기준에서 2.2V이상의 기준에 걸리기 때문에, 통신에는 문제가 없게 되는거죠.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
이 정도가 이제까지 가장 궁금했던 내용인데, 오늘 프로토타입 보드를 완성하면서 모두 해결되었습니다. 이렇게 저렇게 다 수가 생기는군요.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
-- Special Thanks to 도니형 &amp;amp; 근용군&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
			<category>programming</category>
			<author>hatemogi</author>
			<guid>http://blog.hatemogi.com/134</guid>
			<comments>http://blog.hatemogi.com/134#entry134comment</comments>
			<pubDate>Sun, 23 Aug 2009 21:45:53 +0900</pubDate>
		</item>
		<item>
			<title>Mac OS X에서 LM3S8962(ARM Cortex M3)용 소프트웨어 개발하기</title>
			<link>http://blog.hatemogi.com/133</link>
			<description>&lt;div&gt;
&quot;소프트웨어 개발자의 하드웨어 개발기&quot;의 첫 글을 씁니다. 하드웨어 개발에 대한 지식도 무식이 전부이고, 관련해 받은 교육이라고는 고등학교 물리시간에 배운 것이 전부인지라, 모든게 까마득합니다만, 어설프게나마 기록으로 남겨보려 합니다. 누군가에게는 도움이 될지도 모르죠...&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
임베디드 시스템을 위한 MPU보드라는 걸 구할 수 있더군요. 각종 마이크로프로세서와 그에 연결한 메모리와 플래쉬, I/O모듈등을 함께 자그마한 시스템 보드를 묶어서 파는데다, 가격도 저렴하고, 기본적인 시스템이 갖춰져 있어서, 소프트웨어만 얹으면 간단한 임베디드 시스템을 만들 수 있게 말이죠. 학창시절에 관심을 두려할 때는, 다 따로 사서 만들어야하는 줄 알았습니다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
CPU 벤더도 다양하고 모델도 다양하지만, 일단 ARM쪽을 알아봤습니다. 임베디드 하면 ARM프로세서가 먼저 떠오르더라구요. 많이 쓰이는 이유가 있겠지 싶었습니다. 국내 모 디바이스 쇼핑몰에서 찾아보니, ARM의 마이크로프로세서를 사용한 임베디드 개발보드가 여러개 보였습니다. 그중에는 ARM v7아키넥쳐 기반의 것이 가장 많은 것 같았고, 나름 신형인 ARM Cortex M3 아키텍쳐의 임베디드 개발보드가 눈에 띄었습니다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
소프트웨어도 그렇지만, 좀 새로운거 쓰려고보면 이런저런 환경이 걸리는 것들이 많아서, 편하게 가려면 &quot;많이 쓰이는&quot; 녀석을 택하는게 최선이죠. 하지만, 뭔가 좀 새로 하려다 보면 아무래도, 신기술(?)에 끌려서, 고생을 사서하곤 합니다. 어차피 목표결과물을 내기 위한 여유시간도 많이 있겠다, 과감히 Cortex M3보드를 선택했습니다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
그렇게 구매한 MPU보드는, Texas Instruments사가 인수한 루니너리 마이크로사의 LM3S8962를 가져다 만든 위드로봇의 myCortex-LM8962입니다. (텍사스 인스트루먼트는 어디서 들었는지 꽤 낯익은 회사명이었습니다)&amp;nbsp;이 개발 보드는 PWM제어 모듈도 포함되어 있어서 제가 원하는 목표결과물에 쉽게 접근할 수 있지 않을까 기대해봅니다. &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile3.uf.tistory.com/original/15310D134A8CD61418E5B7&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile3.uf.tistory.com/image/15310D134A8CD61418E5B7&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;myCortex-LM8962.jpg&quot; height=&quot;303&quot; width=&quot;350&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
위의 보드의 은색 육면체가 이더넷 포트입니다. 보드 전체가 자그마하 하죠.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
저 보드에 전원공급이며, 신호선 연결은 어떻게 할지도 막막하지만, 일단 소프트웨어를 어떻게 얹을지가 막막합니다. 좀 찾아보니, 저 보드에 소프트웨어를 설치하는 방법은 여러가지가 있지만, 위드로봇사에서 판매하는 Stellaris-JTAG 보드를 사용해서 개발&amp;amp;설치하는 방법이 잘 나와있었습니다. (JTAG이 뭔지도 처음 들어보는 용어입니다. ㅠ.ㅠ 대충 이해한 바로는, 임베디드 하드웨어의 소프트웨어 설치나 디버깅에 사용되는 표준 인터페이스쯤 되나봅니다.) 우선 하드웨어 디버깅이 된다는 말에, 해당 보드도 같이 구매했습니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile2.uf.tistory.com/original/117E8C144A8CD7B522FA65&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile2.uf.tistory.com/image/117E8C144A8CD7B522FA65&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;download.blog.jpg&quot; height=&quot;346&quot; width=&quot;412&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
역시 비슷하게 작은 크기의 보드입니다. 저기의 USB포트를 PC와 연결하고, JTAG인터페이스를 개발보드에 연결하면, PC로부터 소프트웨어를 설치하고, 디버깅도 할 수 있습니다. 매뉴얼에 개발 방법이 잘 나와있습니다만, 한가지 아쉬운 점이 있었습니다. 각종 소프트웨어 드라이버나 개발 방법이 Windows기준으로 되어있다는겁니다. 이거 하겠다고, VM띄워서 개발하기도 깝깝하고, 그냥 맥에서 개발하는 방법이 없을까 찾아봤습니다. 이래저래 해보니, 다행히 Mac OS X에서도 개발이 가능하더군요.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;
&lt;span style=&quot;font-size: 12pt; &quot;&gt;1. 하드웨어 연결&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
위의 두 하드웨어를 연결해서 MacBook Pro에 연결하면 다음과 같이 USB하드웨어가 잡힙니다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile3.uf.tistory.com/original/14179F1B4A8CDC912BC829&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile3.uf.tistory.com/image/14179F1B4A8CDC912BC829&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;스크린샷 2009-08-18 오후 3.29.33.png&quot; height=&quot;317&quot; width=&quot;544&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
별다른 추가작업 없이 &quot;Stellaris Evaluation Board&quot;라고 잡혀줍니다. 고맙기 그지 없습니다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: 12pt; &quot;&gt;&lt;b&gt;2. 컴파일러&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
OS X에서 사용할 수 있는 무료 ARM 크로스 컴파일러는 GNUARM과, &lt;a href=&quot;http://www.yagarto.de/&quot; target=&quot;_blank&quot; title=&quot;[http://www.yagarto.de/]로 이동합니다.&quot;&gt;yagarto&lt;/a&gt;가 있습니다. 이 중, Cortex M3를 지원하는 컴파일러는 yagarto뿐입니다. 바이너리를 받아서 /usr/local/yagarto에 설치했습니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;
&lt;span style=&quot;font-size: 12pt; &quot;&gt;3. OCD (On-Chip Debugger)&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
JTAG인터페이스를 통해서 디버깅을 할때 쓰는 디버거입니다. 역시 무료버전으로 &lt;a href=&quot;http://openocd.berlios.de/web/&quot; target=&quot;_blank&quot; title=&quot;[http://openocd.berlios.de/web/]로 이동합니다.&quot;&gt;OpenOCD&lt;/a&gt;라는 소프트웨어가 있습니다. 이 소프트웨어는 OS X버전이 따로 있어서 별 문제없이 설치 가능합니다. 이 프로그램이 GDB와 연동해서 하드웨어에 소프트웨어를 얹을 수 있고, 얹은 소프트웨어를 디버깅할 수 있게도 해줍니다. openocd-ftd2xx로 USB에 잡힌 Stellaris Evaluation Board와 연결해서 작업할 수 있습니다. 따로 드라이버를 깔면 Virtual COM Port도 잡을 수 있을 것 같은데, 해당 드라이버가 아직 OS X Leopard까지만 지원하는 것 같습니다. (Snow Leopard 개발판을 먼저 쓰고 있는게 이럴때도 걸림돌이 되어주는군요) 일단 저는 Virtual COM Port가 필요없는 상황입니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://openocd.berlios.de/web/&quot; target=&quot;_blank&quot; title=&quot;[http://openocd.berlios.de/web/]로 이동합니다.&quot;&gt;OpenOCD&lt;/a&gt;가 최신버전이 0.2.0인데, 명령어가 조금 달라서, 매뉴얼을 보고 좀 손봐야할 부분이 있습니다. OpenOCD가 설치된 디렉토리를 뒤져보면&amp;nbsp;&amp;nbsp;lm3s8962.cfg도 구할 수 있고, 인터페이스 설정파일도 찾아서 그대로 쓸 수 있습니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;
&lt;span style=&quot;font-size: 12pt; &quot;&gt;4. 통합개발환경 (IDE)&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
상용제품으로 CrossWorks for ARM이라는 아주 훌륭해보이는 제품이 있었습니다만, 개인버전이 $150입니다. 시험판을 써보고, 실제로 구매할까도 생각했습니다만, 시험판 라이센스를 구하는데 실패했습니다. 라이센스 담당자가 두번째 보낸 메일을 무시하더군요. 제가 앞으로 임베디드 소프트웨어 개발을 전문적으로 할 것도 아니고, 그냥 무료판 구해다 하는데 결정적 도움을 주었습니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
결국 오래전에 떠났던 이클립스 (Eclipse)판으로 돌아왔습니다. 오래전 자바 개발할 때 쓰던 환경인데, 이렇게 임베디드용 C개발을 위해 돌아도다니, 참 모를 일입니다. 어쨌건 새로 설치해보니 Cocoa인터페이스로 재무장한 이클립스, 아주 더 멋져진 모습입니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
Eclipse CDT환경을 설치하고, &lt;a href=&quot;http://opensource.zylin.com/embeddedcdt.html&quot; target=&quot;_blank&quot; title=&quot;[http://opensource.zylin.com/embeddedcdt.html]로 이동합니다.&quot;&gt;Zylin사의 Embedded CDT&lt;/a&gt; 플러그인을 추가로 설치합니다. 이 플러그인이 OpenOCD와 GDB프로토콜로 통신해서 이클립스 환경에서 디버깅을 할 수 있습니다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile24.uf.tistory.com/original/17566A1F4A8D958E094A94&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile24.uf.tistory.com/image/17566A1F4A8D958E094A94&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;스크린샷 2009-08-21 오전 3.27.09.png&quot; height=&quot;477&quot; width=&quot;661&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: 12pt; &quot;&gt;&lt;b&gt;5. 연동 성공!&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
이런 구성으로 연결해서 간단한 예제를 컴파일하고, 얹어보고, 디버깅하는데 성공했습니다. 다른 구성 방법도 많이 있겠지만, 일단 OS X에서 개발 가능하다는데에 크게 만족스럽습니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
이렇게 설정은 그럭저럭 해결한 거 같습니다. 이제 그럼, 얹을 소프트웨어를 개발해 봐야겠습니다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile22.uf.tistory.com/original/1457761F4A8D94EC054E5E&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile22.uf.tistory.com/image/1457761F4A8D94EC054E5E&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;스크린샷 2009-08-21 오전 3.23.57.png&quot; height=&quot;498&quot; width=&quot;700&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;</description>
			<category>programming</category>
			<author>hatemogi</author>
			<guid>http://blog.hatemogi.com/133</guid>
			<comments>http://blog.hatemogi.com/133#entry133comment</comments>
			<pubDate>Thu, 20 Aug 2009 14:22:11 +0900</pubDate>
		</item>
		<item>
			<title>올림푸스 PEN E-P1</title>
			<link>http://blog.hatemogi.com/132</link>
			<description>&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile24.uf.tistory.com/original/14129C244A700EC1BE7210&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile24.uf.tistory.com/image/14129C244A700EC1BE7210&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;스크린샷 2009-07-29 오후 5.56.12.png&quot; height=&quot;291&quot; width=&quot;534&quot;/&gt;&lt;/a&gt;&lt;/div&gt;오랜간만에 지름신이 왕림하셨다. 이 녀석이 나오는줄도 모르는 사이, 이미 2차물량까지 전량 판매되었다는군. 3차물량이 풀리려면 얼마나 걸릴지 모르겠지만, 아마도 질러주실듯. 어딘가 감추어놓은 PEN EE3도 꺼내서 함께 갖고 놀아볼까?&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;</description>
			<category>일상</category>
			<author>hatemogi</author>
			<guid>http://blog.hatemogi.com/132</guid>
			<comments>http://blog.hatemogi.com/132#entry132comment</comments>
			<pubDate>Wed, 29 Jul 2009 17:58:20 +0900</pubDate>
		</item>
		<item>
			<title>실제크기(?)의 건담 출현</title>
			<link>http://blog.hatemogi.com/131</link>
			<description>&lt;img src=&quot;http://farm4.static.flickr.com/3348/3646501162_26764a1d9f.jpg?v=0&quot;&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
도쿄 오다이바에 키 18미터 크기의 건담을 만들었다는군. 저 사진 아래에 조그만 사람들 보이나? ㅋㅋㅋ 일본사람들 참 재밌어. 나머지 사진들을 보아하니 디테일도 아주 훌륭하다. 동영상으로 보니 고개도 살짝 살짝 돌리고, 불도 들어오고 훌륭한데? 담에 도쿄에 가게되면, 오다이바 또 가봐야겠구나.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
원문:&amp;nbsp;&lt;a href=&quot;http://blog.flickr.net/en/2009/07/09/a-robot-rise/&quot; target=&quot;_blank&quot; title=&quot;[http://blog.flickr.net/en/2009/07/09/a-robot-rise/]로 이동합니다.&quot;&gt;http://blog.flickr.net/en/2009/07/09/a-robot-rise/&lt;/a&gt;&lt;/div&gt;</description>
			<category>일상</category>
			<author>hatemogi</author>
			<guid>http://blog.hatemogi.com/131</guid>
			<comments>http://blog.hatemogi.com/131#entry131comment</comments>
			<pubDate>Tue, 21 Jul 2009 11:37:21 +0900</pubDate>
		</item>
		<item>
			<title>정치</title>
			<link>http://blog.hatemogi.com/130</link>
			<description>얼마전 일어난 국민적 충격 사태이후, 정치에 조금이나마 관심을 갖게 되었다. 오래전부터, 무작정 기피했던 분야(?)에 창피하지만 이제부터라도 관심을 갖게 된 것. 날마나 웃음을 안겨주는 코미디 같은 일들이 벌어지는 것을 보고 있노라니 웃어야하는건지 울어야하는건지 아리송할 때가 많아지고 있다.&amp;nbsp;&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
일간지까지는 아니더라도, 주간지를 사서 보고있다. 조금이나마 관심을 갖게된 것은 긍정적인 일이지만, 한편으로는 늘상 얼굴을 찡그리고 있는 내자신을 발견하게 된다. 음, 혹시 이런 이유때문에 우리나라 사람들의 표정이 전체적으로 어두운 것일까하는 생각마저 든다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
한편, 최근의 인터넷 공격 사태의 배경에 북한세력이 있는 것으로 의심된다고 말하고 있는 정부정보기관의 코미디 덕분에&amp;nbsp;웃을 수 있는 일도 함께 일어나고 있으니, 최근의 희비가 서로&amp;nbsp;중화될 수 있는걸까? 갑자기 해당기관에 근무하는 몇몇&amp;nbsp;선배들의 얼굴이 떠오르면서, 그 형들이 후배들 보기에 창피하진 않을까 내가 다 걱정이 된다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
내가 할 수있는 일은 많지 않겠지만, 일단 관심을 갖고 꼬박꼬박 소신껏 투표하리라 다짐이라도 해야겠다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
날 다시 웃게 해줘!&amp;nbsp;&lt;/div&gt;</description>
			<category>일상</category>
			<author>hatemogi</author>
			<guid>http://blog.hatemogi.com/130</guid>
			<comments>http://blog.hatemogi.com/130#entry130comment</comments>
			<pubDate>Sat, 11 Jul 2009 02:56:34 +0900</pubDate>
		</item>
		<item>
			<title>당산철교를 건너다</title>
			<link>http://blog.hatemogi.com/129</link>
			<description>지하철 2호선을 타고 당산철교를 건너다가 바라본 서쪽 하늘. 한참 오던 비가 잠시 멎은 하늘의 노을, 그 다양하고 화려한 색깔이 아름다웠다. 어디 먼 곳에 갈 필요 없다. 공해만 가득하다고 생각했던 서울하늘도 이렇게 아름다울 수 있는걸.&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;</description>
			<category>일상</category>
			<author>hatemogi</author>
			<guid>http://blog.hatemogi.com/129</guid>
			<comments>http://blog.hatemogi.com/129#entry129comment</comments>
			<pubDate>Fri, 10 Jul 2009 03:56:50 +0900</pubDate>
		</item>
		<item>
			<title>미안하다, 행복하다.</title>
			<link>http://blog.hatemogi.com/127</link>
			<description>world2009 프로젝트의 전반전 후, 경기가 취소된 것인지, 아니면 후반전을 위한 휴식기인지 알 수 없었다. 하지만 현상황에서는 전반전만으로도 콜드게임을 이룬것 같아서, 후반전은 진행되지 않을 것 같다. 본의아니게 주변에 떠들어대기도 했고, 모종의 대리만족감을 전파하고 있던 중이라서 그랬는지, 아쉽다는 얘기를 듣기도 했고, 자세한 이유를 어렵사리 설명해보았으나, 이해를 구할 수 없기도 했다.&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
자세한 이유를 알려줄 수 없어서 조금은 답답하지만, 난 행복하기만 하다. 얻고자 떠날 수 있었고, 얻어서 돌아올 수 있었던 행운이 감사하고 말이다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
주변사람의 이런저런 상황과는 별개로 나만 행복한거 같아서 미안할 정도로 말이다. 어제 찍은 어제 사진을 보고, 한 친구가 행복해 보인다는 말을 적어주었다. 그말을 듣고 다시보니 정말 그런것 같기도 하다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;table class=&quot;flickrImgSearch&quot;&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;http://www.flickr.com/photos/19461752@N00/3683462201&quot; title=&quot;DSC_6104&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2458/3683462201_18157f6e3d.jpg&quot; alt=&quot;DSC_6104&quot; style=&quot;border: 0;&quot;&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
어때? 진짜로 행복해 보이나? 정말이라면, 이 행복도 주변인들에게 전파될 수 있겠지.&lt;/div&gt;</description>
			<category>trip</category>
			<author>hatemogi</author>
			<guid>http://blog.hatemogi.com/127</guid>
			<comments>http://blog.hatemogi.com/127#entry127comment</comments>
			<pubDate>Fri, 03 Jul 2009 19:26:27 +0900</pubDate>
		</item>
		<item>
			<title>Mac OS X Snow Leopard 개발자 프리뷰</title>
			<link>http://blog.hatemogi.com/126</link>
			<description>&lt;div&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile25.uf.tistory.com/original/16534E184A479522321BAD&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile25.uf.tistory.com/image/16534E184A479522321BAD&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;snow_leopard.jpg&quot; height=&quot;373&quot; width=&quot;700&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;
Mac OS X Snow Leopard 개발자 프리뷰, 유혹을 참지 못하고 설치했다. 정식버전은 9월즈음에 출시 되는 것 같은데, 아직은 한창 안정화작업중인듯. WWDC에서 나눠준 빌드 10A380버전은 키노트에 소개된 Dock에서의 Expose기능을 다 지원하지 않았으나, 최근 올라온&amp;nbsp;10A394버전으로 업데이트 했더니 해당 기능이 잘 작동했다.&amp;nbsp;&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
이래저래 안되는 소프트웨어가 있을거라 생각해서 참으려 했지만, llvm으로 빌드된 기본 소프트웨어들이 한층 빠른 성능으로 동작한다라는 얘기에 한번 설치해보고, 다시 Leopard로 내려가지 못하고 있는 상황. 아직까지는 참을만 하다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
현재 안되고 있는 것은 아래와 같다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;ul style=&quot;list-style-type: square; &quot;&gt;
&lt;li&gt;iStat menu 설치 불가&lt;/li&gt;
&lt;li&gt;Aquamacs에서의 한글출력&lt;/li&gt;
&lt;li&gt;iTerms에서 option키를 meta키로 사용하기&amp;nbsp;&lt;/li&gt;
&lt;li&gt;MacPorts (이건 좀 크군...)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
내가 주로 쓰는 소프트웨어에서 위의 것들이 안되고 있지만, 나머지 기본 프로그램들은 아직까지 크래쉬없이 아주 잘 돌고 있다. Aquamacs에서 한글이 깨져보이는 바람에, 터미널에서 emacs를 사용해보고 있다. 아직 나쁘진 않군.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
전반적인 느낌은 기분인지 몰라도, 한결 가벼운 느낌. 정식 출시되면 위의 프로그램들도 잘 돌게 되겠지.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;update: MacPorts는 소스를 받아서 빌드하니 정상 작동.&amp;nbsp;&lt;/div&gt;</description>
			<category>mac</category>
			<author>hatemogi</author>
			<guid>http://blog.hatemogi.com/126</guid>
			<comments>http://blog.hatemogi.com/126#entry126comment</comments>
			<pubDate>Mon, 29 Jun 2009 01:14:22 +0900</pubDate>
		</item>
		<item>
			<title>오빠가 돌아왔다</title>
			<link>http://blog.hatemogi.com/125</link>
			<description>모 이통사 광고에 배경음악으로 소개되어 유명해진 그룹 W&amp;amp;Whale의 노래 제목이다. 광고의 원곡인 R.P.G.도 좋지만, 난 그 앨범에서 &quot;오빠가 돌아왔다&quot;라는 노래가 제일 좋다. 보컬의 보이스도 매력적이지만, 가사가 꽤 마음에 들었던 것.&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;blockquote&gt;&lt;div&gt;
늘 한마리 고독한 늑대처럼&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
세상과 화해하지 못한채&lt;/div&gt;
&lt;div&gt;
매섭게 치켜 뜬 눈빛속에&lt;/div&gt;
&lt;div&gt;
화려한 슬픔을 간직한채&lt;/div&gt;
&lt;div&gt;
....&lt;/div&gt;
&lt;div&gt;
또 어딘가 먼곳을 바라보며&lt;/div&gt;
&lt;div&gt;
오빠는 가만히 노래했지&lt;/div&gt;
&lt;div&gt;
현실에 타협할 수 없었던&lt;/div&gt;
&lt;div&gt;
위대한 패배자들의 블루스&lt;/div&gt;
&lt;div&gt;
....&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
노래 가사의 일부인데, &quot;세상과 화해하지 못한&quot;, &quot;화려한 슬픔&quot;, &quot;위대한 패배자&quot;, 이런 문구들이 꽤나 마음에 들었던 것. 슬픔도 화려할 수 있고, 패배자도 위대할 수 있다니 말이다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
그건 그렇고, 나 역시 돌아왔다. 원래 여행계획의 전반전의 일정만 모두 소화한채, 불현듯, 아주 갑자기 돌아와버린 것. (합리적 인간이 아닌) 합리화의 인간인 나는 이런저런 공감살만한 이유들을 떠올려봤으나, 주변사람들에게 얘기해보니, 별 실효가 없었다. 수많은 이유들을 얘기해보아도, 그들의 궁금증을 속시원히 해결해 줄 수 없었다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
괜찮다. 각자 독자적인 삶을 살다보면, 남들과 공감할 수 없는 일들이 많아지기 마련이라고 생각한다. 그것이 오히려 다행일지도 모른다. 남들과 너무 쉽게 공감할 수 있는 일들만 일어난다면, 그역시 참 맛없는 삶 아니겠는가?&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
떠났던 이유와 돌아온 이유는 사실 매우 간단하다. 떠나고 싶어 떠났었고, 돌아오고 싶어져서 돌아왔다. 마음이 원했던 길을 따른 것 뿐이다. 정말 원한다는 걸 알게된다면, 그 외의 걸림돌들은 헤쳐나가는 수가 생긴다고 믿어보고 있다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
아무튼, 난 돌아왔다. 당당한 자신감, 내&amp;nbsp;정체성, 내 꿈을 데리고.&lt;/div&gt;</description>
			<category>trip</category>
			<category>world2009</category>
			<author>hatemogi</author>
			<guid>http://blog.hatemogi.com/125</guid>
			<comments>http://blog.hatemogi.com/125#entry125comment</comments>
			<pubDate>Thu, 25 Jun 2009 11:09:44 +0900</pubDate>
		</item>
		<item>
			<title>좋댄다</title>
			<link>http://blog.hatemogi.com/124</link>
			<description>&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile2.uf.tistory.com/original/202F02134A38B255723CB1&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile2.uf.tistory.com/image/202F02134A38B255723CB1&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;4851_114996695209_730180209_3078980_5596208_n.jpg&quot; height=&quot;603&quot; width=&quot;417&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;내가 린디합을 좋아하는 이유는, 무엇보다도 그 쾌활한 즐거움 때문이다. 린디합을&amp;nbsp;춤추는 사람들의 밝은 표정, 심지어 덜떨어져 보이기까지 한다. 하지만 한편, 살짝씩 살펴본 다른 커플댄스의 얼굴표정은 진지하다 못해 심각해보이기까지도 했었다. 뭐가 그리도 진지하신건지. 스윙댄스의 밝음은&amp;nbsp;아마도 스윙재즈의 특성과도 연결되는 속성인거 같다. 그저 밝게 바라보는 것이지. 모가 그렇게들 신난다고...&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
사진은 프랭키 파티에서 춤추는 동안 찍힌&amp;nbsp;것 같다. 파트너는 몬트리올에서 온 아만다. 내 얼굴은 잘 보이지 않지만, 아마도 크게 웃고 있는 중인거 같다. 내가 춤추다 저렇게 웃는 것은 아마도 대단히 호흡이 잘맞았거나, 아니면 아주 우스운 실수를 했을 때이다. 아마도 후자의 상황일 확률이 크다. 난 저런 우스꽝 스러운 상황의 웃음이 너무 좋다. 그것이 취미로 즐길 때의 특권이기도 할테고. (어우, 공연때 실수라도 해봐...)&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;저 자세만으로만 봐서는 무슨 동작 전후인지 모르겠다. 스윙아웃 전후로 보기에는 자세가 너무 높고, 언더암턴 전이라고 보기에는 너무 마주 보고 있고, 노래 전주중일 때로 보기에는 커넥션이 없고. 흠, 사뭇 궁금하지만, 어쨋건&amp;nbsp;중요한 것은 폭소하고 있다는 것.&lt;/div&gt;</description>
			<category>swing</category>
			<category>린디합</category>
			<category>스윙</category>
			<author>hatemogi</author>
			<guid>http://blog.hatemogi.com/124</guid>
			<comments>http://blog.hatemogi.com/124#entry124comment</comments>
			<pubDate>Wed, 17 Jun 2009 18:17:20 +0900</pubDate>
		</item>
		<item>
			<title>world2009 프로젝트, 만3개월...</title>
			<link>http://blog.hatemogi.com/123</link>
			<description>&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
WWDC행사를 마지막으로,&amp;nbsp;&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
이후 일정을 뒤로하고,&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
귀국할까 하는 생각이 들었다.&amp;nbsp;&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
			<category>trip</category>
			<author>hatemogi</author>
			<guid>http://blog.hatemogi.com/123</guid>
			<comments>http://blog.hatemogi.com/123#entry123comment</comments>
			<pubDate>Fri, 12 Jun 2009 09:52:07 +0900</pubDate>
		</item>
		<item>
			<title>WWDC2009: OpenCL 세션을 듣다가...</title>
			<link>http://blog.hatemogi.com/122</link>
			<description>&lt;div&gt;
WWDC에 성능 관련한 주제가 여러개 있는데, GCD(Grand Central Dispatch)와 OpenCL가 주요하게 소개되고 있다. MacOS X Leopard의 다음 버전인 Snow Leopard에 적극 활용되는 기술들인 듯. GCD의 경우 멀티코어CPU에서의 병렬처리를 돕는 기술인것 같고, OpenCL은 CPU와 GPU를 모두 활용할 수 있는 병렬 컴퓨팅 기술인것 같다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
내가 쓰고 있는 MacBook Pro 15&quot;만 하더라도, 듀얼코어 CPU한장에다가 GPU는 두장이 들어있다. 화면 디스플레이에는 전력소모가 적은 Integrated GPU만을 쓰고 있기때문에 나머지 한장은 완전히&amp;nbsp;놀고 있는 상황인거지. (Integrated GPU의 경우역시 거의 놀고있는걸테고 말이다)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile23.uf.tistory.com/original/1913B41A4A31458725C991&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile23.uf.tistory.com/image/1913B41A4A31458725C991&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;그림 6.png&quot; height=&quot;411&quot; width=&quot;536&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;
OpenCL사이트의 소개문서에서 발췌한 그림이다. OpenCL용 C소스코드를 런타임에 원하는 타겟 프로세서용 코드로&amp;nbsp;컴파일해서 활용할 수 있다. 상황에 따라 CPU가 될 수도 있고, 아마도 일반적으로는 GPU를 대상으로 할테다. 컴파일된 바이너리는 특정 GPU에 최적화된 코드가 실행될 테고, CPU와는 별도로 병렬 실행되는 구조이다. GPU가 잘하는 일들을 하드웨어 수준에서 빠르게 병렬처리하는 코드를 만들어 활용할 수 있다는 아이디어겠다. (예전의&amp;nbsp;MMX나 SSE등의 SIMD기술들을 연상시킨다)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
OpenCL소스코드는 C소스 비슷하게 생겼는데, 특화된 데이터타입이나 연산자들 함수들이 들어있다. 이 소스를 메인프로그램의 C코드에서 읽어들여, CL함수에 컴파일을 요청하고, 결과로 나온 커널을 실행하는 구조.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
(참고로, 아이폰 3G S에서 지원하는 OpenGL ES 2.0의 Programmable Shader의 경우에도 같은 형태의 컴파일/실행구조다)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
한참 하이레벨인 루비쪽에서 놀다가, 이런 C코드 수준으로 내려와서 하드웨어 종속적인 사고를 보고 있으니 참 흥미롭기도 하고, 어떻게 보면 참&amp;nbsp;구차하다 싶기도 하지만, 분명 이런 성능 관련한 주제가 크게 관심있었던 매력적인 분야임은 부정할 수 없다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
아마도 내가 직접&amp;nbsp;병렬처리를 활용하게 된다면 이와는 전혀 상관없이&amp;nbsp;Erlang을 쓰게 되겠지만, OpenCL같은 하드웨어와 밀접한&amp;nbsp;환경과 아이디어 자체는 흥미롭게 공부해볼 수도 있겠다. 혹시 또 알아? 내가 직접 쓰게되는 일이 생길지, 그 누구도 모르는 거지.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;</description>
			<category>programming</category>
			<category>wwdc</category>
			<author>hatemogi</author>
			<guid>http://blog.hatemogi.com/122</guid>
			<comments>http://blog.hatemogi.com/122#entry122comment</comments>
			<pubDate>Fri, 12 Jun 2009 03:18:40 +0900</pubDate>
		</item>
		<item>
			<title>여행용 영어를 잘하는 (척하는) 법</title>
			<link>http://blog.hatemogi.com/121</link>
			<description>world2009 프로젝트의 목표중 하나는 영어 실력 향상이다. 생각만큼 열심히 하진 않았지만, 2~3개월 북미에서 돌아다니다 보니, 이런저런 요령들이 생겼다. 이제 여행용 서바이벌 영어로는 충분하다고 생각하는 수준. 터득한 요령들을 나열해보면 다음과 같다.&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style=&quot;font-size: 12pt; &quot;&gt;자신있게 얘기한다&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
영어를&amp;nbsp;잘 못한다는 생각에 우물쭈물하면서 웅얼웅얼 얘기하면 더 알아듣기 어렵다. 맞건 틀리건 주어와 술어만이라도 또박또박 크게 얘기하는 게 나을 수 있다. 영어를 잘하는게 중요한게 아니라 의사소통 자체가 중요한 것 아닌가? 발음과 엑센트를 고려하되, 정확히 입밖으로 발성한다. 잘못 이해하고, 틀렸더라도 확실하게 얘기해야, 상대방도 내가 잘못 이해한 사실을 명확히 알고, 다시 질문해오거나 넘어간다. 외국인이고, 외국어를 구사하고 있다는 사실을 명심하자. 미국애들은 자기나라 말 말고 전혀 못하는 애들이 대부분이다. 이 정도 얘기할 줄 아는것도 대단한거다. 자신감 갖자.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
게다가, 사실상 한국인의 영어실력 결코 떨어지지 않는다. 영어를 잘하는 것처럼 보이는 유럽애들하고 얘기해보면 문법도 마구 틀리고, 특히 스펠링은 완전 저질임을 금방 파악할 수 있다. 우리는 발음과 억양이 저질이지만, 결코 기죽지 말자.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style=&quot;font-size: 12pt; &quot;&gt;문장을 끝까지 이어서 얘기한다&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
머리 속에서 문장 만드느라고 한단어씩 끊어가며&amp;nbsp;얘기하면 알아 듣기 어렵다. 시간을 갖고 한문장 다 만든 다음에 끝까지 이어서 말한다. 중간중간 발음이나 엑센트가 틀리더라도, 문장을 다 만들어내면 전체 의미를 유추하며 이해해낼 수 있는 확률이 높아진다. 물론 문장자체를 짧게 만드는게 중요하다 하겠다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style=&quot;font-size: 12pt; &quot;&gt;문맥을 고려한다&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
종종 상대방의 질문을 잘 못 듣는 경우가 있다. 이럴&amp;nbsp;때는 어림짐작으로 대충 이해해서 답변하거나, 다시 질문해달라고 얘기할 수 있는데, 다시 얘기해도 못알아듣는 경우도 있다. 좋은 대처방법으로는, 문맥을 고려해서 예상되는 질문에 대한 답변을 이어서하는게 방법일 수 있겠다. 예를 들어, &#039;여기 온지 얼마나 됐니?&#039;라는 질문을 했는데 &#039;언제 여기서 떠나니?&#039;라는 질문으로 잘못 들었다 치자. 어쨌건, 현재 문맥은 난 여행중이고, 얘는 현지인이고, 나의 여행일정에 대한 인사치례성 질문임을 파악했다고 생각해보자. &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
이런 문맥에서의 답변은 간단하다. 예상되는 질문에 대한 답변을 줄줄줄 이어서 다 얘기하면 된다. 난 언제왔고, 여기 있은지 며칠됐고, 언제 여기서 떠나고, 그 다음은 어디로간다. 참고로 이 여행의 전체 일정은 몇개월이다. 이 정도 얘기하면, 잘못 들은 질문에 대한 정답도 다 얘기해버렸을 확률도 높고, 더 나아가, 앞으로 날아올 질문에 대한 사전 답변도 되어버린다. 게다가 줄줄줄 이어서 얘기하다보면, 스스로&amp;nbsp;영어를 잘하는 것 같은 착각도 들지 않는가?&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style=&quot;font-size: 12pt; &quot;&gt;질문을 한다&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
생각해보라. 어떤 문제건, 질문이 쉬운가 답변이 쉬운가. 쉬운 쪽을 얼릉 선택에 자리를 내주지 말자. 일단 질문을 받으면, 문맥에 맞게 줄줄줄 답변을 한 뒤, 얼릉 질문의 주도권을 가져오거나, 최소한 동등하게 주고 받는다. 우물쭈물하며 계속 질문을 받고, 영어가 짧은 이유로&amp;nbsp;단답형으로 대답하다보면 금방 대화가 단절될 수 밖에 없다. 어차피 여행중 대화라는게 스몰톡이다. 위의 문맥의 질문을 받았다고 하면, 줄줄줄 이어서 대답한 뒤, 상대방 눈치로 보아, 질문에 대한 명맥한 답변이 됐다는 눈치가 보이면, 바로 이어서 질문을 한다. &quot;너는 어디서 왔니? 여기 사니? 거기는 여기서 가까운거니? 지하철로 갈 수 있는 거리니? 그건 그렇고 한국에 와본 적은 있니? 없으면 앞으로 와볼 계획은 있니? 기회가 되면 꼭 한번 와보렴&quot; 이런 질문을 준비해 놓고 주고 받으면, 어느새 의사소통이 되고 있는 스스로를 발견할 수 있다. 정 물어볼꺼 없으면 &quot;여기 날씨는 정말 좋구나. 넌 참 좋은 도시에 산다&quot;같은 멘트도 써먹을 수 있겠다. 핵심은 이런 문장들은 미리 생각해서 만들어 놓을 수 있다는 거고, 어디서나 반복해서 써먹을 수 있다는 거다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style=&quot;font-size: 12pt; &quot;&gt;호응하며 맞장구를 친다&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
질문의 주도권을 갖고, 상대방의 답변을 듣고 있으면, 이해한 내용에 대해 호응하며 맞장구를 친다. &quot;That&#039;s great&quot;, &quot;Good for you&quot;, &quot;yeah&quot;, &quot;awesome&quot;, 등등등 긍정적 답변의 다양한 사례를 적절히 때맞춰 호응해줘만 줘도 대화의 템포를 늦추지 않고 이어갈 수 있다. 답변이 끝나기 전에 주요 포인트에 맞춰 다음 질문을 생각해 놓는 다면, 돌아올 질문에 대한 방어책도 될 수 있겠다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style=&quot;font-size: 12pt; &quot;&gt;그러나...&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
이건 다 영어를 잘하는 &lt;b&gt;척하는&lt;/b&gt; 법이다. 실제로 잘하려면 많은 노력과 시간이 필요하겠지. 그래도, 최소한의 자신감을 갖기 위해서 위의 방법들이 도움이 될 수도 있겠다 생각에서 적어봤다. 나름 자신감을 갖고 있던 중이었는데, 오늘 어머니와 통화하다가 이런 얘기를 들었다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&quot;그래, 그 비싼 돈 들여 컨퍼런스 참가하는건데, 뭐 좀 알아는 듣고 있는거냐?&quot;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
ㅋㅋㅋ.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;</description>
			<category>self-help</category>
			<author>hatemogi</author>
			<guid>http://blog.hatemogi.com/121</guid>
			<comments>http://blog.hatemogi.com/121#entry121comment</comments>
			<pubDate>Thu, 11 Jun 2009 13:52:00 +0900</pubDate>
		</item>
		<item>
			<title>학창시절의 꿈 하나</title>
			<link>http://blog.hatemogi.com/120</link>
			<description>&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Gulim, sans-serif; line-height: normal; white-space: pre; &quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt; &quot;&gt;Creating iPhone Apps that Communicate with Accessories&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; face=&quot;Gulim, sans-serif&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 16px; line-height: normal; white-space: pre;&quot;&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
이번 WWDC의 전체적 관심주제는 당연히 아이폰 개발. 그중에서도 OpenGL ES에 관심이 많았다. 오늘 OpenGL에 관련한 세션이 많았는데, Intro수준의 세션에는 들어가지 않았다. 줄이 너무 길기도 했고, 나중에 동영상으로 봐도 다 따라서 이해할 수 있을 것 같다는 판단 때문이었지.&amp;nbsp;&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
같은 시간에 다른 홀하는 세션 중에 위의 제목의 세션이 있었는데, 아이폰과 외부장치와의 통신을 담당하는 API 프레임웍을 소개하고 데모를 보여주는 세션이었다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
아이폰이 외부 하드웨어와 통신 할 수 있는 방법은 크게 3가지, 블루투스, UART, USB. (WiFi는 논외로 하겠다).&amp;nbsp;이중에 UART/USB에 관심이 많이 갔지. 그중에도 UART를 이용한 예제는 오래전 학창시절의&amp;nbsp;꿈을 상기시켜주었다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style=&quot;font-size: 12pt; &quot;&gt;학창시절의 꿈 하나&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
학창시절에 컴퓨터로 외부 하드웨어를 제어하는 데에 관심이 있었다. 당시 만들었던것이 장난감 탱크를 컴퓨터 키보드로 제어하는 프로그램과 인터페이스였다. 하드웨어 인터페이스 관련 지식은 전혀 없었기 때문에, 당시 통신망에 떠돌던 패러럴 포트 연결한 LED제어 인터페이스 회로도를 구해다가 병렬로 연결해서 쿵짝쿵짝 만들었던 기억이 있다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
기계적 릴레이 스위칭 회로를 병렬로 이어붙어 별도 공급하는&amp;nbsp;직류 전원의 +/-를 교체하기 위해 이래 저래 회로를 구성하느라 밤을 샜던 기억도 있다. (당시에 donny형도 함께였고). 프라모델 탱크를 전후좌우로 움직일 수 있는 프로그램을 만들어 PC의 패러럴포트의 4개핀을 이어 4비트로 제어했었고, 추후에 조금 확장해서, RC자동차를 제어하는 모델로 발전시켰었지. 당시 학과 동아리 전시회에도 출품했었는데, 아주 인기 만점이었다. :)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
추후에 더 확장하고 싶었던 내용은, PC수준에서 RC자동차의 예상 움직임을 시뮬레이션해서, 원하는 신호를 적절한 타이밍에 내보내서, 실제 움직임이 그와 같은지 확인하는 프로그램이었다. 자동차의 움직임 시뮬레이션이라는 분야가 &quot;Vehicle Dynamics&quot;라는 동역학 분야의 하나라는 사실을 알기위해서만도 학교 도서관을 한참 돌아다녔던 기억이 난다. (찾고 나서 그 방대한 자료와 수식들에 나가떨어졌지만 말이다)&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
대학 생활이라는 것이 공부말고 재밌는 것들이 너무도 많았던 나머지, 얼마 지나지 않아 흐지부지되고 노느라 바빴던 것 같은데, 그 먼 기억속의 꿈이 오늘에야 다시 회상되다니, 거 참 신기하다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style=&quot;font-size: 12pt; &quot;&gt;다시 해볼 수 있을까&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
오늘의 세션도 소프트웨어 개발자 측면의 이야기만 있어서, 어떻게 UART통신을 처리할 수 있는 하드웨어 인터페이스를 만들 수 있을 지는 깜깜하지만, 그래도 시간좀 들이다 보면 만들어 볼 수도 있지 않을까 싶다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
꿈이라는게 다른 사람들에게도 의미가 있어야한다는 (내지는 경제적 가치로 이어져야한다는) 누구도 정의하지 않은 압박으로 인해 시들어져버린 나만의 소중한 꿈들이 되살아나며, 작은 생기가 감도는 기분이다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
또다시 어느새 시들해질지 모르지만 말이다.&amp;nbsp;&lt;/div&gt;</description>
			<category>programming</category>
			<category>wwdc</category>
			<author>hatemogi</author>
			<guid>http://blog.hatemogi.com/120</guid>
			<comments>http://blog.hatemogi.com/120#entry120comment</comments>
			<pubDate>Thu, 11 Jun 2009 09:10:36 +0900</pubDate>
		</item>
		<item>
			<title>극성스런 호들갑</title>
			<link>http://blog.hatemogi.com/119</link>
			<description>&lt;div&gt;
&lt;b&gt;
&lt;span style=&quot;font-size: 11pt; &quot;&gt;WWDC 키노트&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
Apple Worldwide Developers Conference의 첫째날. 첫날 아침의 키노트를 듣겠다고 아침 일찍부터 숙소를 나섰다. 일부 극성스러운 사람들은 전날 저녁부터 가서 밤새 기다리는 열성을 보였지만, 난 그보다&amp;nbsp;잠을 더 사랑하기에 그럴 수는 없었다. 그래도 나름 실제 진행하는 컨퍼런스 룸에서 (참가자가 너무 많아서, 일찍 간 사람이 아니면 다른 홀에서 생중계로 보아야했다) 보고자, 두시간이나 일찍 가서 줄을 섰지만, 결국 생중계로 보게되고 말았다. 생중계도 꽤 볼만하더군, 장비들이 너무 좋아서, 화면도 아주 깨끗하고, 발표자 모습도 클로즈 업해주어서 오히려 보기 좋다고 생각했다. 생중계 홀은&amp;nbsp;자리 경쟁도 치열하지 않아서 앞자리에서 볼 수 있었고 말이다. 기대했던, 한국 아이폰 출시소식은 전혀 언급되지 않았다. 이제, 한국의 아이폰 출시 관련한&amp;nbsp;그 어떤 루머도 믿지 않겠다. 춥고 졸린 아침에 밥도 굶고 2시간이나 기다리는 호들갑도 떨지 않겠다.&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style=&quot;font-size: 11pt; &quot;&gt;개발자들, 내지는 geek들&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
얼마전에 조나단이랑 얘기하다가, 이런 얘기를 한적이 있다. &quot;난 컴퓨터를 다루는 데에는 아주 능숙하지만, 사람들과 어울리는 데는 아주 미숙하다&quot;고. 아마도 이런 특성이 개발자들의 공통된 특성이자 문제점이 아닐까 싶어. 고작 세 번의 해외 컨퍼런스에 참석하지만, 미국의 개발자들도 비슷한 특성이 있어보인다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
컴퓨터를 상대로 일을 하지만, 결국은 사람을 위한 일을 하는 것 임을 잊지 말아야 할텐데 말이다. 이상하다, 예전 같으면 열광했을 법한 기술들에 대한 얘기들을 들어도 별 감흥이 없다. &#039;음, 그래 좋은거네, 잘했네&#039; 정도?&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
그 극성스런 호들갑들이 다 자잘한 행복거리이자 열광의 대상이었던것 같은데 말이다. 그래도 아직 몇가지 내용들은 내 가슴을 뛰게 하더군. 뼈속 깊이 개발자임에는 아직 변함 없겠지.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
이제 무엇이 나의 가슴을 뛰게하는가.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
			<category>programming</category>
			<category>wwdc</category>
			<author>hatemogi</author>
			<guid>http://blog.hatemogi.com/119</guid>
			<comments>http://blog.hatemogi.com/119#entry119comment</comments>
			<pubDate>Tue, 09 Jun 2009 12:59:10 +0900</pubDate>
		</item>
	</channel>
</rss>

