<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0">
 <title type="html">몬지의 늘어지는 일상</title>
 <id>http://monji.co.kr/atom</id>
 <link rel="alternate" type="text/html" hreflang="ko" href="http://monji.co.kr/"/>
 <subtitle type="html"></subtitle>
 <updated>2010-02-13T08:02:08+09:00</updated>
 <generator>Textcube.com 2.0 Garnet</generator>
 <entry>
  <title type="html">JUJU どんなに遠くても… / GOODBYE DAY</title>
  <link rel="alternate" type="text/html" href="http://monji.co.kr/6"/>
  <link rel="replies" type="application/atom+xml" href="http://monji.co.kr/atom/discuss/6" thr:count="0"/>
  <category term="Music"/>
  <author>
   <name>몬지</name>
  </author>
  <id>http://monji.co.kr/6</id>
  <updated>2009-03-28T15:48:28+09:00</updated>
  <published>2008-10-14T00:43:58+09:00</published>
  <summary type="html">PS3 게임인 戦場のヴァルキュリア (전장의 발큐리아)의 테마곡의 싱글입니다. 실은 메인 타이틀인 どんなに遠くても…&amp;nbsp;도&amp;nbsp;듣기&amp;nbsp;좋지만 컴필레이션으로 같이 들어가있는 GOODBYE DAY라는 곡이 귀에 익어서 찾다봤습니다. 좀 오래된 곡입니다만 来生たかお(카스기 타카오)의 곡으로 YouTube등에서 찾을 수 있습니다. 국내에서는 김장훈이 리메이크했었네요. 아래는 덤으로 JUJU의 どんなに遠くても… 입니다. 또 덤으로 JUJU의 奇跡を望むなら… 입니다. &lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://monji.co.kr/6&quot;&gt;글 전체보기&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</summary>
 </entry>
 <entry>
  <title type="html">GIMP 2.x 에서 언어 설정 방법</title>
  <link rel="alternate" type="text/html" href="http://monji.co.kr/5"/>
  <link rel="replies" type="application/atom+xml" href="http://monji.co.kr/atom/discuss/5" thr:count="0"/>
  <category term="Windows"/>
  <category term="gimp"/>
  <category term="gtk"/>
  <category term="locale"/>
  <author>
   <name>몬지</name>
  </author>
  <id>http://monji.co.kr/5</id>
  <updated>2008-04-09T11:13:31+09:00</updated>
  <published>2008-04-09T11:11:15+09:00</published>
  <summary type="html">GIMP 를 설치해서 사용하려고 보면 가끔 언어 설정이 이상하게 되어서 메뉴 글자가 전부 깨져보이는 경우가 있습니다. 이런 경우 환경변수를 하나 추가하는 것으로 간단하게 해결이 가능합니다. LANG 이라는 이름으로 환경변수를 추가하고 값을 en 으로 넣습니다. 그러면 메뉴 글자가 깨지는 일 없이 영문으로 정상적으로 나옵니다. 만약 환경변수에 추가하는 것이 싫으시다면 배치 파일을 만들어서 해결할 수도 있습니다. set LANG=en c:\Program Files\GIMP-2.0\bin\GIMP-2.x.exe 아마도 이와 비슷한 GTK를 사용하는 어플리케이션에서도 종종 발생하는 문제입니다만 아마도 같은 방법으로 해결이 가능하리라 생각됩니다. &lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://monji.co.kr/5&quot;&gt;글 전체보기&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</summary>
 </entry>
 <entry>
  <title type="html">플래시 업데이트 후에 유튜브등의 플래시 동영상 재생이 끊길때</title>
  <link rel="alternate" type="text/html" href="http://monji.co.kr/4"/>
  <link rel="replies" type="application/atom+xml" href="http://monji.co.kr/atom/discuss/4" thr:count="0"/>
  <category term="Windows"/>
  <category term="Flash"/>
  <category term="Flash Movie"/>
  <category term="youtube"/>
  <category term="&#xC720;&#xD29C;&#xBE0C;"/>
  <category term="&#xD50C;&#xB798;&#xC2DC;"/>
  <author>
   <name>몬지</name>
  </author>
  <id>http://monji.co.kr/4</id>
  <updated>2009-05-14T22:41:36+09:00</updated>
  <published>2008-04-09T11:03:57+09:00</published>
  <summary type="html"> Flash 를 업데이트 한 이후에 갑자기 플레이어의 스크롤바에서 버퍼링된 용량이 나오는 게이지가 나오지 않고 동영상이 계속 끊기는 현상이 발생하는 경우가 발생한다면 다음과 같이 설정을 바꿔보시기 바랍니다. 플래시 위에서 오른쪽 클릭을 하여 설정(Settings)로 들어가시면 나오는 화면에서 아래쪽 아이콘 중에서 폴더표시를 클릭하면 위의 화면과 같이 나옵니다. 여기에서 바를 오른쪽 끝으로 옮겨서 다음과 같이 캐시사이즈에 대한 제한은 없애버리시면 됩니다. 위 설정은 아마도 사이트별로 적용이 필요한 것으로 보이므로 버퍼링 게이지가 안보이고 동영상이 끊긴다 싶을때에는 들어가서 설정을 해주시기 바랍니다. &lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://monji.co.kr/4&quot;&gt;글 전체보기&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</summary>
 </entry>
 <entry>
  <title type="html">과연 이번엔 정착을 할 수 있을런지...</title>
  <link rel="alternate" type="text/html" href="http://monji.co.kr/3"/>
  <link rel="replies" type="application/atom+xml" href="http://monji.co.kr/atom/discuss/3" thr:count="0"/>
  <category term="Gossip"/>
  <author>
   <name>몬지</name>
  </author>
  <id>http://monji.co.kr/3</id>
  <updated>2008-03-30T12:41:31+09:00</updated>
  <published>2008-03-29T21:18:23+09:00</published>
  <summary type="html"> 여기저기 전전하다가 이글루스로 좀 하다가 설치형으로 해서 조금 유지하다가 이번엔 티스토리로 왔네요... 티스토리를 선택한것은 2차 도메인 연결이 가능하고 나중에 설치형으로 전환할때 유리하기 때문입니다. 요즘에는 점점 뭔가 복잡한것이 귀찮게 느껴지는군요 ^^; 설치형 블로그도 워드프레스로 해보려다가 원하는 몇가지 기능을 위해서 커스터마이징해야 하는 것이 너무 많아서 나중에는 대충 방치했던 기억이 -_-; 아무튼 다시 시작합니다. ^^; 라고 해봤자 한달에 포스팅 하나 올라올까 말까 할텐데 -_-;a &lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://monji.co.kr/3&quot;&gt;글 전체보기&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</summary>
 </entry>
 <entry>
  <title type="html">mka (Matroska) 로 묶여진 TTA/CUE 파일 풀기</title>
  <link rel="alternate" type="text/html" href="http://monji.co.kr/2"/>
  <link rel="replies" type="application/atom+xml" href="http://monji.co.kr/atom/discuss/2" thr:count="1" thr:updated="2010-02-02T14:52:09+09:00"/>
  <category term="Foobar _ EAC"/>
  <author>
   <name>몬지</name>
  </author>
  <id>http://monji.co.kr/2</id>
  <updated>2008-03-29T02:10:05+09:00</updated>
  <published>2008-03-29T02:03:51+09:00</published>
  <summary type="html">최근 ape/cue 뿐 아니라 tta/cue도 점점 많아지고 있는데 거기에 곁들여 이것을 하나의 파일로 묶은 mka 파일 또한 조금씩 보이고 있습니다. mka 장점이라면 tta/cue를 하나의 파일로 만들기 때문에 좀더 정리를 간단하게 할 수 있으며 attachments 를 이용하며 커버 이미지와 log 파일 등을 추가하여 브라우징을 편하게 할 수 있습니다. 그러나 아직 많이 퍼지지 못했고 몇몇 플레이어에서 오작동을 일으키기 때문에 그리 선호되고 있진 않습니다. 문제는 이런 파일만 있는 경우에는 조금 귀찮아진다는 것입니다. 물론 푸는 방법이 존재합니다만 역시 조금 귀찮습니다. 그래서 어쩌겠습니까. 일단 풀고 봐야죠 ^^; 1. mkvextract 받기 MKVToolnix 홈페이지에서 MKVToolnix를 받습니다. 취향대로 골라 받으시기 바라며 다양한 OS를 지원하고 있으며 윈도우또한 지원하고 있기 때문에 실행에 어려움은 없습니다. Command Line 방식을 선호하시는 분이시라면 직접 하나하나 명령어를 통해 풀으시기 바라며 귀차니즘에 쩔어계신 분들을 위해 mkvextract로 3rd party로 GUI가 존재합니다. GUI사용법 부분은 목차 3을 참조하시기 바랍니다. 2. mka extract mkvextract의 man page를 보면 친절하게 예제가 잘 나와있습니다. 조금 아시는 분이라면 그냥 이 예제를 참고하시면 금방 방법을 알아내실 수 있으리라 생각합니다. 여러가지 옵션이 있습니다만 특별한 경우가 아닌 다음에는 별다른 옵션을 사용할 필요는 없는 것 같습니다. 만약 계속 사용하다 문제가 생기면 추가적인 내용을 삽입하도록 하겠습니다. 2.1. mkvmerge -i 일단 mka 파일이 어떤 내용들로 구성이 되어있는지 확인을 해야합니다. 아쉽게도 파일 내용을 한꺼번에 추출해내는 옵션은 제공하지 않습니다. &amp;gt;&amp;gt; mkvmerge -i filename 명령을 내리면 다음과 같은 결과를 볼 수 있습니다. (파일명은 xxx로 교체하였습니다. ^^) &amp;gt;&amp;gt; mkvmerge -i &amp;quot;xxx.mka&amp;quot; File &amp;#039;xxx.mka&amp;#039;: container: Matroska Track ID 1: audio (A_TTA1) Attachment ID 1604522379: type &amp;#039;image/jpeg&amp;#039;, size 1027402 bytes, file name &amp;#039;cover.jpg&amp;#039; Attachment ID 1358588602: type &amp;#039;text/plain&amp;#039;, size 3164 bytes, file name &amp;#039;OriginalCue.cue&amp;#039; Attachment ID 3166145469: type &amp;#039;image/jpeg&amp;#039;, size 1138067 bytes, file name &amp;#039;amae001.jpg&amp;#039; Attachment ID 2231018159: type &amp;#039;image/jpeg&amp;#039;, size 949990 bytes, file name &amp;#039;amae002.jpg&amp;#039; Attachment ID 1568992178: type &amp;#039;image/jpeg&amp;#039;, size 1135612 bytes, file name &amp;#039;amae003.jpg&amp;#039; Attachment ID 3602332604: type &amp;#039;image/jpeg&amp;#039;, size 1218230 bytes, file name &amp;#039;amae004.jpg&amp;#039; Attachment ID 4051135402: type &amp;#039;image/jpeg&amp;#039;, size 1189273 bytes, file name &amp;#039;amae005.jpg&amp;#039; Attachment ID 1864627606: type &amp;#039;image/jpeg&amp;#039;, size 1179749 bytes, file name &amp;#039;amae006.jpg&amp;#039; Attachment ID 152691083: type &amp;#039;image/jpeg&amp;#039;, size 1248552 bytes, file name &amp;#039;amae007.jpg&amp;#039; Attachment ID 2530986890: type &amp;#039;image/jpeg&amp;#039;, size 1430254 bytes, file name &amp;#039;amae008.jpg&amp;#039; Attachment ID 3352196018: type &amp;#039;image/jpeg&amp;#039;, size 1360231 bytes, file name &amp;#039;amae009.jpg&amp;#039; Attachment ID 4116674692: type &amp;#039;text/plain&amp;#039;, size 915 bytes, file name &amp;#039;amae.LOG&amp;#039; Attachment ID 3275375237: type &amp;#039;text/plain&amp;#039;, size 1077 bytes, file name &amp;#039;amae.TXT&amp;#039; 위의 결과에서 알 수 있는 것은, 이 파일에 하나의 tta 파일과 다수의 이미지 파일과 텍스트 파일이 있다는 것입니다. 이제 우리는 이 하나로 묶여진 파일들을 푸는 것이 목적이니... 2.2 mkvextract tracks 가장 중요한 TTA파일을 뽑아내는 일이 먼저이겠죠? 아쉽게도 이 툴에서는 알아서 이름을 붙여주는 일을 하지 못합니다. 따라서 귀찮더라도 직접 트랙에 해당하는 파일이름을 지정해 주어야 합니다. 위의 결과에서 보여지듯이 트랙은 단 하나입니다. &amp;gt;&amp;gt; mkvextract tracks &amp;quot;xxx.mka&amp;quot; 1:CDImage.tta Extracting track 1 with the CodecID &amp;#039;A_TTA1&amp;#039; to the file &amp;#039;CDImage.tta&amp;#039;. progress: 99% The temporary TTA file for track ID 1 is being copied into the final TTA file. This may take some time. progress: 100% 위의 예제는 xxx.mka 의 파일의 첫번째 트랙을 CDImage.tta라는 파일로 저장하라는 것입니다. 약간 특이한 문법이긴 하지만 이해하는데 어려움을 없습니다. 다수의 트랙을 뽑아낼때는 trackno:filename 쌍으로 계속 적어주면 됩니다. 2.3. mkvextract cuesheet TTA파일 다음으로 중요한 것이 바로 CUE파일이겠죠. CUE Sheet는 stdout으로 나오기 때문에 리다이렉션을 사용해서 저장해주어야 합니다. &amp;gt;&amp;gt; mkvextract cuesheet &amp;quot;xxx.mka&amp;quot; &amp;gt; CDImage.cue 여기에서 옵션을 사용할 필요가 생길 수도 있는데 저는 일본어 윈도우에서 사용하기 때문에 관계가 없지만 가끔 Character Set 문제로 골치 아프실때가 있을수도 있습니다. 그럴때는 -c 옵션을 사용하여 이리 저리 굴려보시기 바랍니다. 2.4.mkvextract attachments 첨부 파일들을 뽑아내는 방법은 트랙을 뽑아내는 방법과 동일합니다. 다만 위와 같이 첨부 파일이 많을 경우에는 일일히 해주기가 상당히 귀찮기 때문에 가급적이면 GUI툴을 사용하셔서 작업하시는 것이 좋습니다. 2.5. 기타 쉘스크립트를 통해 GUI를 사용하지 않고 Command Line으로 처리가 가능할 수도 있을 것입니다. 많은 파일을 보유하신 분들께서는 awk 등을 사용하여 자동으로 처리하는 스크립트를 작성하시는 것을 권합니다. mkvextract 에서는 Source Code를 공개하고 있기 때문에 필요하다면 이 GUI의 Source Code를 참조하는 것도 도움이 되리라 생각합니다. 3. mkvextract GUI 3.1. 설치/실행 일단 http://corecodec.org/projects/mkvextractgui/&amp;nbsp;에서 파일을 받습니다. 취향대로 압축을 풀으시고 실행하시기 전에 전에 받은 MKVToolnix에서 실행파일들을 복사하여 mkvextract GUI의 폴더로 복사합니다. 정상적으로 복사가 될 경우 mkvextracg GUI가 실행될때 경고 메시지가 뜨지 않을 것입니다. 3.2. extract 사용법은 간단합니다. 파일을 열고 필요한 트랙 및 파일을 선택한 뒤에 &amp;quot;Extract&amp;quot; 버튼을 누르면 끝입니다. track 파일은 확장자를 물어보기 때문에 적당한 확장자를 입력해주시면 됩니다. Commandline 부분에 실제로 사용될 것들이 나오기 때문에 Extract 버튼을 누르지 않으시고 이 결과들만을 저장하여 나중에 한꺼번에 실행하셔도 됩니다. 물론 이 GUI도 만능은 아닙니다. 위에서 한번 언급한 Character Set 의 문제랄지 혹은 가끔 오작동하여 전부 파일을 뽑아내지 못하고 죽는 경우도 있습니다. 주로 Chapters ID나 Tags ID를 뽑아낼때 발생하는 것 같습니다. 결정적으로 CUE Sheet를 자동적으로 만들어주지 못합니다. 몇몇 파일에는 Original CUE 파일이 첨부되어있는 경우도 있지만 없는 파일도 있기 때문에 이럴경우 수동으로 처리해주어야 합니다. 4. Related Links Matroska Homepage [ http://www.matroska.org/&amp;nbsp;] MKVToolnix&amp;nbsp; Homepage [ http://www.bunkus.org/videotools/mkvtoolnix/&amp;nbsp;] mkvextract man Page [ http://www.bunkus.org/videotools/mkvtoolnix/doc/mkvextract.html&amp;nbsp;] mkvextract GUI Forum Page [ http://forum.doom9.org/showthread.php?t=73819&amp;nbsp;] mkvextract GUI corecodec Page [ http://corecodec.org/projects/mkvextractgui/&amp;nbsp;] &lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://monji.co.kr/2&quot;&gt;글 전체보기&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</summary>
 </entry>
 <entry>
  <title type="html">cproto 를 이용한 function prototype 자동 생성</title>
  <link rel="alternate" type="text/html" href="http://monji.co.kr/1"/>
  <link rel="replies" type="application/atom+xml" href="http://monji.co.kr/atom/discuss/1" thr:count="0"/>
  <category term="Unix _ C"/>
  <author>
   <name>몬지</name>
  </author>
  <id>http://monji.co.kr/1</id>
  <updated>2008-03-29T02:00:32+09:00</updated>
  <published>2008-03-29T01:58:10+09:00</published>
  <summary type="html">일의 특성상 IDE Tool 이 아닌 오직 shell &amp;amp; vi 환경에서만 작업을 하다보니 여러가지 문명의 이기에서 멀어져가고 있습니다. 그다지 범용적인 개발 환경이 아닌지라 공개되어있는 개발 방법도 적어서 정보도 얻기가 힘들군요. 그런저런 이유로 이번에는 function prototype 의 자동생성에 대해서 알아봤습니다. 현재 제가 다니는 회사에서 사용되는 function prototype 생성 툴은 충분히 잘 돌아갑니다만 범용적으로 사용되기에는 조금 제약사항이 따르는 것이 사실입니다. 일단 가장 범용적으로 사용되는 util 을 찾아봤습니다. cproto -- generate C function prototypes from C source code Cproto is a program that generates function prototypes and variable declarations from C source code. It can also convert function definitions between the old style and the ANSI C style. 이 util 을 선택한 이유는 보통의 linux 환경에서는 compiler 를 설치할때 기본적으로 선택되는 util 이라는 점도 있었지만 무엇보다 범용적으로 사용되고 있다는 것입니다. 가장 큰 장점 중 하나는 -D option 을 사용해 option compile 시와 마찬가지로 prototype 을 생성할 수 있다는 것입니다. 다양한 option 을 지원하지만 여기에서 모든 것을 다 설명할 필요는 없으므로 man page 등을 참고하시기 바랍니다. cproto 의 homepage 는 아래와 같습니다. http://cproto.sourceforge.net/ 현재 제가 다니는 회사의 source code 에 적합한 예를 몇개 들어보겠습니다. 1. 전역 변수 처리 cproto -I ../h -O /dev/null -v -f0 -e *.c 위의 명령으로 함수에 정의 되어있는 전역변수의 prototype을 뽑아내서 앞에 extern을 붙여 출력하게 됩니다. 옵션 설명 &amp;gt; -I : header 의 path 를 나타내는 것입니다. &amp;gt; -O : stderr로 나오는 warning 이나 error 의 출력을 지정해주는 것입니다. –q 옵션도 있지만 일부 warning 에 대해 처리가 안되는 것을 확인했습니다. &amp;gt; -v : 함수 뿐 아니라 전역 변수로 선언된 것의 prototype 을 출력하라는 것입니다. &amp;gt; -f0 : 이 option 은 0~3까지 있습니다. 0은 함수의 prototype을 출력 안하는 것이고 1,2,3은 각각의 format 으로 출력하는 것입니다. 기본은 –f3이고 –f3이 현재 대부분의 사람들이 사용하는 one line 의 가장 보편적인 prototype 형식입니다. &amp;gt; -e : 해당 prototype 앞에 extern을 붙이라는 옵션입니다. 아래는 출력 예입니다. /* sctp_ipif.c */ extern int ISSECURE; /* sctp_main.c */ extern sctpInstance_t sctpInst[(13 + 1) ]; extern SCTP_ulpCallbacks sctpUlp; extern SCTP_InstanceParameters instancePara; extern SCTP_LibraryParameters libPara; /* sctp_misc.c */ 2. 함수 prototype 처리 cproto -I ../h -O /dev/null *.c 위 명령은 *.c 파일 내부의 함수의 prototype을 출력하게 합니다. option 설명은 이미 위에서 하였으니 부연설명은 안하겠습니다. –f3옵션은 default이기 때문에 하지 않은 것이고 –e 옵션은 extern을 붙일 필요가 없기 때문에 하지 않은 것입니다. 아래는 출력 예입니다. /* sctp_ipif.c */ void *ip_interface(void); /* sctp_main.c */ sint main(void); void to_exit(uint exit_code); sint initSctp(void); sint initialize(void); /* sctp_proc.c */ void timer_expired(unsigned int tID, void *para1, void *para2); void proc_lower(ipcMsg_t *pMsg); void proc_upper(ipcMsg_t *pMsg); sint setServiceIp(void); sint getLeal(void); /* sctp_recv.c */ sint searchSntId(uint key); 3. 자동화 처리 단순한 shell script를 사용하여 처리하였습니다. extern 선언 부분과 function 선언부분에 특정한 주석을 삽입하여 그 사이에 결과를 넣도록 처리한 것입니다. 좀더 세련된 방법이나 좋은 방법이 있으신 분은 알려주시기 바랍니다. #! /bin/sh IFS=&amp;#039;&amp;#039; replace_flag=0 while read -r line; do if [ &amp;quot;$replace_flag&amp;quot; != &amp;quot;1&amp;quot; ]; then echo &amp;quot;$line&amp;quot; fi if [ &amp;quot;$line&amp;quot; = &amp;quot;/* extern declare */&amp;quot; ]; then replace_flag=1 cproto -I ../h -O /dev/null -v -f0 -e *.c fi if [ &amp;quot;$line&amp;quot; = &amp;quot;/* extern declare end */&amp;quot; ]; then replace_flag=0 echo &amp;quot;$line&amp;quot; fi if [ &amp;quot;$line&amp;quot; = &amp;quot;/* function prototype declare */&amp;quot; ]; then replace_flag=1 cproto -I ../h -O /dev/null *.c fi if [ &amp;quot;$line&amp;quot; = &amp;quot;/* function prototype declare end */&amp;quot; ]; then replace_flag=0 echo &amp;quot;$line&amp;quot; fi done &amp;lt; $1 IFS의 값을 없애지 않으면 애써 이쁘게 만들어 놓은 선언이 엉망이 됩니다. 이와 같은 script 를 Makefile 내에 proto 로 선언한 곳에서 사용하도록 하면 make tag와 같이 유용하게 사용될 수 있을 것이라 생각합니다. 4. 단점 &amp;gt; 약간은 깨끗하지 못하게 파일에 대한 주석이 나온다. (아무것도 출력되는게 없을 경우에 파일 이름의 주석을 없애는 옵션은 발견하지 못했습니다. 아마도 이런 옵션은 후에도 나오지 않을 것으로 생각됩니다.) &amp;gt; 속도가 느리다. (생각보다 속도가 많이 느립니다. 거의 컴파일러 수준이라고 생각하시면 됩니다. 그대신 –D 옵션이 먹는 것만으로도 충분히 가치가 있다고 생각합니다.) &lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://monji.co.kr/1&quot;&gt;글 전체보기&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</summary>
 </entry>
</feed>
