<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:wfw="http://wellformedweb.org/CommentAPI/"
     >
  <channel>
    <title>Jaemok</title>
    <link>http://jmjeong.com</link>
    <description>jmjeong, Jaemok Jeong</description>
    <pubDate>Wed, 09 Jun 2010 02:16:35 GMT</pubDate>
    <generator>Blogofile</generator>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Writing DEVONThink Pro article using org-mode</title>
      <link>http://jmjeong.com/blog/devonthink-using-orgmode</link>
      <pubDate>Fri, 21 May 2010 00:16:00 KST</pubDate>
      <category><![CDATA[devonthink]]></category>
      <category><![CDATA[emacs]]></category>
      <guid isPermaLink="true">http://jmjeong.com/blog/devonthink-using-orgmode</guid>
      <description><p>
DEVONthink Pro에 Rich Text로 글을 작성하는 기능이 있지만, 
일관성있는 style이나 작성의 편이성 측면에서는 Emacs의 Orgmode가 낫다. 
</p><p>
위 코드는 orgmode로 작성된 글을 DEVONthink Pro에 HTML로 저장하는 elisp 코드이다. 
</p><i>Read more...</i></description>
      <content:encoded><![CDATA[
<div id="outline-container-1" class="outline-2">

<div class="outline-text-2" id="text-1">
<script src="http://gist.github.com/412710.js"></script>
<p>
DEVONthink Pro에 Rich Text로 글을 작성하는 기능이 있지만, 
일관성있는 style이나 작성의 편이성 측면에서는 Emacs의 Orgmode가 낫다. 
</p>
<p>
위 코드는 orgmode로 작성된 글을 DEVONthink Pro에 HTML로 저장하는 elisp 코드이다. 
</p>
<pre class="src src-elisp">(load <span style="color: #8b2252;">"jmjeong-devonthink"</span>)
</pre>
<p>
현재는 [F8] key에 등록이 되어 있다. 현재 orgmode buffer의 내용을 html로 export 한 다음에
DEVONthink의 선택된 그룹에 저장한다. Orgmode의 글을 HTML로 export한 다음에 browser에서
pdf로 변환한다음에 저장하는 것보다 훨씬 편하다. 
</p>
<p>
Export된 DEVONthink의 글에서 원본 소스를 보고 싶은 경우에는, 오른쪽 버튼을 누르고 'Launch URL'을 하면
orgmode의 파일을 볼 수 있다. 
</p>
<ul>
<li>
원본 org file

</li>
</ul>
<p><img src="/images/devon-orgmode.png" alt="/images/devon-orgmode.png" />
</p>
<ul>
<li>
[F8]을 눌러서 DEVONthink Pro에 저장된 화면 

</li>
</ul>
<p><img src="/images/devon-orgmode-exported.png" alt="/images/devon-orgmode-exported.png" />
</p>
</div>
</div>]]></content:encoded>
    </item>
    <item>
      <title>Emacs Tutorial</title>
      <link>http://jmjeong.com/blog/emacstutorialresource</link>
      <pubDate>Mon, 02 Nov 2009 16:21:00 KST</pubDate>
      <category><![CDATA[emacs]]></category>
      <guid isPermaLink="true">http://jmjeong.com/blog/emacstutorialresource</guid>
      <description><i>Read more...</i></description>
      <content:encoded><![CDATA[
<div id="outline-container-1" class="outline-2">

<div class="outline-text-2" id="text-1">
<ul>
<li>
<a href="http://web.psung.name/emacs/">Being Productive With Emacs</a>
<ul>
<li>
<a href="http://web.psung.name/emacs/2007/emacs-slides-1.pdf">http://web.psung.name/emacs/2007/emacs-slides-1.pdf</a>
</li>
<li>
<a href="http://web.psung.name/emacs/2007/emacs-slides-2.pdf">http://web.psung.name/emacs/2007/emacs-slides-2.pdf</a>
</li>
<li>
<a href="http://web.psung.name/emacs/2007/emacs-slides-3.pdf">http://web.psung.name/emacs/2007/emacs-slides-3.pdf</a>
</li>
</ul>
</li>
<li>
<a href="http://www.cc.gatech.edu/emacs.pdf">Emacs Presentation for LUG@GT</a>
</li>
</ul>
</div>
</div>]]></content:encoded>
    </item>
    <item>
      <title>Android with Emacs</title>
      <link>http://jmjeong.com/blog/androidwithemacs</link>
      <pubDate>Fri, 30 Oct 2009 14:00:00 KST</pubDate>
      <category><![CDATA[android]]></category>
      <category><![CDATA[emacs]]></category>
      <guid isPermaLink="true">http://jmjeong.com/blog/androidwithemacs</guid>
      <description><p>
android list avd로 현재 만들어진 android virutal device에 대해서 확인하자 
</p><p>
없다면 <code>android create avd -n &lt;name&gt; -t &lt;target-number&gt;</code>를 통해서 만들 수 있다. 
</p><i>Read more...</i></description>
      <content:encoded><![CDATA[
<div id="outline-container-1" class="outline-2">

<div class="outline-text-2" id="text-1">
</div>
<div id="outline-container-1.1" class="outline-3">
<h3 id="sec-1.1">필요한 사항 </h3>
<div class="outline-text-3" id="text-1.1">
<ul>
<li>
java : 1.5.0 이상
</li>
<li>
ant : Android ant vesion 1.7.x 이상
</li>
<li>
<a href="http://developer.android.com/sdk">android sdk</a> : 1.5.x 이상 

</li>
</ul>
</div>
</div>
<div id="outline-container-1.2" class="outline-3">
<h3 id="sec-1.2">사전 tool 사용법 </h3>
<div class="outline-text-3" id="text-1.2">
<p>
android list avd로 현재 만들어진 android virutal device에 대해서 확인하자 
</p>
<pre class="src src-sh">jaemok-jeong:tools jmjeong$ ./android list avd
Available Android Virtual Devices:
    Name: test
    Path: /Users/jmjeong/.android/avd/test.avd
  Target: Android 1.5 (API level 3)
    Skin: HVGA
---------
    Name: tiffany
    Path: /Users/jmjeong/.android/avd/tiffany.avd
  Target: Android 1.5 (API level 3)
    Skin: HVGA
</pre>
<p>
없다면 <code>android create avd -n &lt;name&gt; -t &lt;target-number&gt;</code>를 통해서 만들 수 있다. 
</p>
<pre class="src src-sh">jaemok-jeong:tools jmjeong$ ./android create avd -n test-e -t 2
Android 1.5 is a basic Android platform.
Do you wish to create a custom hardware profile [no]no
Created AVD <span style="color: #8b2252;">'test-e'</span> based on Android 1.5
</pre>
<p>
<code>&lt;target-number&gt;</code>는 <code>android list targets</code>로 확인 가능하다.
</p>
<pre class="src src-sh">jaemok-jeong:tools jmjeong$ ./android list targets
Available Android targets:
id: 1
     Name: Android 1.1
     Type: Platform
     API level: 2
     Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P
id: 2
     Name: Android 1.5
     Type: Platform
     API level: 3
     Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P
id: 3
     Name: Google APIs
     Type: Add-On
     Vendor: Google Inc.
     Description: Android + Google APIs
     Based on Android 1.5 (API level 3)
     Libraries:
      * com.google.android.maps (maps.jar)
          API for Google Maps
     Skins: HVGA (default), HVGA-L, QVGA-P, HVGA-P, QVGA-L
</pre>
</div>
</div>
<div id="outline-container-1.3" class="outline-3">
<h3 id="sec-1.3">Android with Emacs </h3>
<div class="outline-text-3" id="text-1.3">
<ul>
<li>
<a href="http://www.emacswiki.org/emacs/emdroid.el">emdroid.el</a>
</li>
<li>
<a href="#sec-1.3.1">android-mode</a>
</li>
</ul>
</div>
<div id="outline-container-1.3.1" class="outline-4">
<h4 id="sec-1.3.1">Install android-mode </h4>
<div class="outline-text-4" id="text-1.3.1">
<p>
Android mode를 인스톨하자
</p>
<pre class="src src-sh">jaemok-jeong:my-dot-emacs jmjeong$ git clone git://github.com/remvee/android-mode.git
</pre>
</div>
</div>
<div id="outline-container-1.3.2" class="outline-4">
<h4 id="sec-1.3.2">Emacs 설정 </h4>
<div class="outline-text-4" id="text-1.3.2">
<pre class="src src-elisp"><span style="color: #b22222;">;; </span><span style="color: #b22222;">android-mode
</span>(add-to-list 'load-path <span style="color: #8b2252;">"~/my-dot-emacs/android-mode"</span>)
(<span style="color: #7f007f;">require</span> '<span style="color: #008b8b;">android-mode</span>)
(setq android-mode-sdk-dir <span style="color: #8b2252;">"~/android-1.5"</span>)
</pre>
</div>
</div>
<div id="outline-container-1.3.3" class="outline-4">
<h4 id="sec-1.3.3">동작확인 </h4>
<div class="outline-text-4" id="text-1.3.3">
<p>
<code>M-x android-start-emulator</code> 를 수행하면 현재 이용 가능한 avd list를 보여준다. 
</p>
<div class="figure">
<p><img src="/images/android-start-emulator.png" alt="Android-start-emulator" /></p>
</div>
</div>
</div>
</div>
<div id="outline-container-1.4" class="outline-3">
<h3 id="sec-1.4">Creating an Android Project </h3>
<div class="outline-text-3" id="text-1.4">
</div>
<div id="outline-container-1.4.1" class="outline-4">
<h4 id="sec-1.4.1">Creating new project </h4>
<div class="outline-text-4" id="text-1.4.1">
<pre class="src src-sh">./android create  project <span style="color: #8b2252;">\</span>
      --target 2 <span style="color: #8b2252;">\</span>
      --name HelloAndroid <span style="color: #8b2252;">\</span>
      --path ~/helloAndroid <span style="color: #8b2252;">\</span>
      --activity helloAndroid <span style="color: #8b2252;">\</span>
      --package com.example.helloandroid

Created project directory: /Users/jmjeong/helloAndroid
Created directory /Users/jmjeong/helloAndroid/src/com/example/helloandroid
Added file /Users/jmjeong/helloAndroid/src/com/example/helloandroid/helloAndroid.java
Created directory /Users/jmjeong/helloAndroid/gen/com/example/helloandroid
Created directory /Users/jmjeong/helloAndroid/res
Created directory /Users/jmjeong/helloAndroid/bin
Created directory /Users/jmjeong/helloAndroid/libs
Created directory /Users/jmjeong/helloAndroid/res/values
Added file /Users/jmjeong/helloAndroid/res/values/strings.xml
Created directory /Users/jmjeong/helloAndroid/res/layout
Added file /Users/jmjeong/helloAndroid/res/layout/main.xml
Added file /Users/jmjeong/helloAndroid/AndroidManifest.xml
Added file /Users/jmjeong/helloAndroid/build.xml
Created directory /Users/jmjeong/helloAndroid/tests
Created directory /Users/jmjeong/helloAndroid/tests/src/com/example/helloandroid
Added file /Users/jmjeong/helloAndroid/tests/src/com/example/helloandroid/helloAndroidTest.java
Created directory /Users/jmjeong/helloAndroid/tests/gen/com/example/helloandroid
Created directory /Users/jmjeong/helloAndroid/tests/res
Created directory /Users/jmjeong/helloAndroid/tests/bin
Created directory /Users/jmjeong/helloAndroid/tests/libs
Added file /Users/jmjeong/helloAndroid/tests/AndroidManifest.xml
Added file /Users/jmjeong/helloAndroid/tests/build.xml
</pre>
<p>
<code>android-mode</code>에서 ~/helloAndroid에 있는 파일을 열면 자동으로 android-mode가 활성화된다. 
<code>android-mode</code>에서는 다음과 같은 key가 활성화된다. 
</p>
<pre class="src src-text">C-c C-c c       android-ant-compile
C-c C-c d       android-start-ddms
C-c C-c e       android-start-emulator
C-c C-c i       android-ant-install
C-c C-c l       android-logcat
C-c C-c r       android-ant-reinstall
C-c C-c u       android-ant-uninstall
</pre>
<p>
<code>C-c C-c c</code>를 눌러 compile을 해 보자. 
</p>
<pre class="src src-text">-*- mode: compilation; default-directory: "/Users/jmjeong/helloAndroid/" -*-
Compilation started at Fri Oct 30 15:41:33

ant compile
Buildfile: build.xml
    [setup] Project Target: Android 1.5
    [setup] API level: 3

dirs:
     [echo] Creating output directories if needed...

resource-src:
     [echo] Generating R.java / Manifest.java from the resources...

aidl:
     [echo] Compiling aidl files into Java classes...

compile:
    [javac] Compiling 1 source file to /Users/jmjeong/helloAndroid/bin/classes

BUILD SUCCESSFUL
Total time: 0 seconds

Compilation finished at Fri Oct 30 15:41:34
</pre>
<p>
<code>C-c C-C i</code>를 눌러서 컴파일된 package를 인스톨하여 emulator에서 확인이 가능하다.
</p>
<div class="figure">
<p><img src="/images/helloandroid.png" alt="/images/helloandroid.png" /></p>
</div>
</div>
</div>
</div>
</div>]]></content:encoded>
    </item>
    <item>
      <title>Orgmode를 이용한 Blogging</title>
      <link>http://jmjeong.com/blog/bloggingwithorgmode</link>
      <pubDate>Sat, 22 Aug 2009 15:22:00 KST</pubDate>
      <category><![CDATA[blog]]></category>
      <category><![CDATA[emacs]]></category>
      <guid isPermaLink="true">http://jmjeong.com/blog/bloggingwithorgmode</guid>
      <description><p>Emacs의 <a href="http://orgmode.org">orgmode</a>는 노트, 스케줄 관리, 문서 저작등을 위한 major 모드이다.  Orgmode 기능 중에 하나인
export를 이용하면 작성한 문서를 latex, html, pdf등으로 변환할 수 있다. 개인적으로 회의록이나 일정,
생일, 메일등을 orgmode를 이용하여 관리를 하고 있다. Orgmode를 통해 홈페이지에도 글을 올릴 수 있으면
좋겠다는 생각을 했었고, 관련 solution에 대해서 고민을 해 보았다. 
</p><p>
<del>현재 운영 중인</del> 홈페이지는 wiki로 되어 있다.<sup><a class="footref" name="fnr.1" href="#fn.1">1</a></sup> Wiki는 간단한 문법으로 구성되어 있어 static html파일에
비해 문서 작성이 용이한 장점이 있다. 온라인상으로 페이지를 편집하고 글을 올리기 쉬운 장점과 함께, 
브라우저의 edit 창을 통한 편집하고 올리는 것은 긴 글에는 적합하지 않다. (한동안 firefox의 <a href="https://addons.mozilla.org/en-US/firefox/addon/4125">It's All Text!</a>
plugin을 시도했으나 역시 마우스 클릭 등이 필요해서 불편했다)  
</p><i>Read more...</i></description>
      <content:encoded><![CDATA[
<div id="outline-container-1" class="outline-2">

<div class="outline-text-2" id="text-1">
<ul>
<li>
관련 Link
<ul>
<li>
<a href="/blog/bloggingwithorgmode">Orgmode를 이용한 Blogging</a>
</li>
<li>
<a href="/blog/bloggingwithorgmode2">Orgmode를 이용한 Blogging (2)</a>
</li>
<li>
<a href="/blog/bloggingwithorgmode3">Orgmode를 이용한 Blogging (최종정리)</a>
</li>
</ul>
</li>
</ul>
<p>Emacs의 <a href="http://orgmode.org">orgmode</a>는 노트, 스케줄 관리, 문서 저작등을 위한 major 모드이다.  Orgmode 기능 중에 하나인
export를 이용하면 작성한 문서를 latex, html, pdf등으로 변환할 수 있다. 개인적으로 회의록이나 일정,
생일, 메일등을 orgmode를 이용하여 관리를 하고 있다. Orgmode를 통해 홈페이지에도 글을 올릴 수 있으면
좋겠다는 생각을 했었고, 관련 solution에 대해서 고민을 해 보았다. 
</p>
<p>
<del>현재 운영 중인</del> 홈페이지는 wiki로 되어 있다.<sup><a class="footref" name="fnr.1" href="#fn.1">1</a></sup> Wiki는 간단한 문법으로 구성되어 있어 static html파일에
비해 문서 작성이 용이한 장점이 있다. 온라인상으로 페이지를 편집하고 글을 올리기 쉬운 장점과 함께, 
브라우저의 edit 창을 통한 편집하고 올리는 것은 긴 글에는 적합하지 않다. (한동안 firefox의 <a href="https://addons.mozilla.org/en-US/firefox/addon/4125">It's All Text!</a>
plugin을 시도했으나 역시 마우스 클릭 등이 필요해서 불편했다)  
</p>
<p>
Emacs를 통해서 블로그에 직접 글을 올리는 방법으로 몇가지 solution이 나와 있다(참조: <a href="http://aidi.tistory.com/entry/emacs-weblog-%EC%9D%B4%EC%9A%A9%ED%95%98ê%B8%B0-2%ED%83%84-1">Emacs를 통해서 blog 작성하기</a>) 막상 이런 solution을 사용해보면 뭔가 2% 부족함을 느끼게 된다.  개인적으로는 XML-RPC를
이용한 wiki editing mode중에 가장 완성도 높은 것이 <a href="http://jmjeong.com/index.php?display=Emacs/TracWiki">TracWiki</a>였다.
</p>
<p>
몇 년전부터 todo list에만 올려두고 미뤄왔던 홈페이지 개편 생각이, 최근 github에서 활용되는 <a href="http://github.com/mojombo/jekyll/tree/master">jekyll</a>과 
Ordmode의 <a href="http://orgmode.org/worg/">Worg</a> 프로젝트를 보고 다시 고민을 하게 되었다. 특히 Worg는 git와 orgmode의 export를 통해 
homepage가 운영되고 있다. 모든 페이지는 orgmode의 emacs document로 이루어져 있고, 주기적으로 git 
server로부터 내용을 pull한 다음에, emacs의 batch script를 이용해서 html로 변환하게 된다.
</p>
<p>
Worg가 원하는 기능의 많은 부분을 충족시키고 있지만 orgmode format, version control system을 통한
관리, 자동 index generation, customized page formatting등 부족한 부분이 있다.
</p>
<p>
필요로 하는 기능은 아래와 같다.
</p>
<ul>
<li>
Orgmode format 유지
</li>
<li>
Git나 다른 vcs를 통해서 서버에 submit
</li>
<li>
자동으로 blog 형태로 html로 보여주는 interface
</li>
<li>
Source highligting
</li>
<li>
Category, Tag support
</li>
<li>
web 2.0의 feature를 필요에 따라 사용할 수 있을 것(rss, comment, trackback)

</li>
</ul>
<p>관련 솔루션으로 <a href="http://orgmode.org/worg/blorgit.php">Blorgit</a>, <a href="http://github.com/mojombo/jekyll/tree/master">Jekyll</a>, Hyde, <a href="http://orgmode.org/worg">Worg</a>, <a href="http://blogofile.com">Blogofile</a>등을 검토하다가, 최종적으로 Blogofile에 org-markup
모듈을 추가하는 것으로 결론을 내렸다. 이 블로그는 blogofile을 통해서 orgmode로 작성된 text를 변환하여
만들어진다. 
</p>
<p>
작성된 'orgmode mark up for posts' 기능은 원 저자에게 보내져서 0.5 버젼에 반영이 되었다.<sup><a class="footref" name="fnr.2" href="#fn.2">2</a></sup>
</p>
</div>
<div id="outline-container-1.1" class="outline-3">
<h3 id="sec-1.1">참고로 읽어볼만한 글 </h3>
<div class="outline-text-3" id="text-1.1">
<ul>
<li>
<a href="http://zegoggl.es/2009/05/jekyll-vs-marley.html">http://zegoggl.es/2009/05/jekyll-vs-marley.html</a>
</li>
<li>
<a href="http://metajack.im/2009/01/23/blogging-with-git-emacs-and-jekyll/">http://metajack.im/2009/01/23/blogging-with-git-emacs-and-jekyll/</a>
</li>
<li>
<a href="http://biodegradablegeek.com/2009/03/how-to-maintain-static-sites-with-git-jekyll/">http://biodegradablegeek.com/2009/03/how-to-maintain-static-sites-with-git-jekyll/</a>
</li>
<li>
<a href="http://matflores.com/2009/04/28/using-git-to-maintain-your-blog.html">http://matflores.com/2009/04/28/using-git-to-maintain-your-blog.html</a>
</li>
</ul>
</div>
</div>
<div id="outline-container-1.2" class="outline-3">
<h3 id="sec-1.2">고려할 점 </h3>
<div class="outline-text-3" id="text-1.2">
<ul>
<li>
Syntax highlighting Color 
</li>
<li>
Speed benchmark
</li>
<li>
Embedded Latex fragment 지원
</li>
<li>
Ditta, Gnuplot등 외부 모듈 검토 지원 
</li>
<li>
TODO 관리



</li>
</ul>
</div>
</div>
</div>
<div id="footnotes">
<h2 class="footnotes">Footnotes: </h2>
<div id="text-footnotes">
<p class="footnote"><sup><a class="footnum" name="fn.1" href="#fnr.1">1</a></sup> 홈페이지를 개편하여 예전의 wiki는 <a href="http://jmjeong.com/index.php">http://jmjeong.com/index.php</a> 로 옮겨졌다. 현재 홈페이지는
blogofile로 구성되어 있다.
</p>
<p class="footnote"><sup><a class="footnum" name="fn.2" href="#fnr.2">2</a></sup> Blogofile에서 org 파일을 자동으로 변환하는 시스템은 <a href="/blog/bloggingwithorgmode2">Orgmode를 이용한 Blogging (2)</a>에서 언급한
문제점들로 인해 사용을 안하고, <a href="/blog/bloggingwithorgmode3">Orgmode를 이용한 Blogging (최종정리)</a>로 바뀌었다.
</p>
</div>
</div>]]></content:encoded>
    </item>
    <item>
      <title>Orgmode를 이용한 Blogging (2)</title>
      <link>http://jmjeong.com/blog/bloggingwithorgmode2</link>
      <pubDate>Tue, 15 Sep 2009 16:51:00 KST</pubDate>
      <category><![CDATA[blog]]></category>
      <category><![CDATA[emacs]]></category>
      <guid isPermaLink="true">http://jmjeong.com/blog/bloggingwithorgmode2</guid>
      <description><p>홈페이지 서버를 교체하면서 blogofile+orgmode extension Blogging을 2주 정도 사용 중이다. 
느낀 점을 간단히 정리하자면&hellip;
</p><p>
Blogofile + orgmode extension 자체 solution은 현재로서는 쓸만한데, 글이 좀 많아지는 경우에는
몇가지 문제가 생길 수 있다 
</p><i>Read more...</i></description>
      <content:encoded><![CDATA[
<div id="outline-container-1" class="outline-2">

<div class="outline-text-2" id="text-1">
<ul>
<li>
관련 Link
<ul>
<li>
<a href="/blog/bloggingwithorgmode">Orgmode를 이용한 Blogging</a>
</li>
<li>
<a href="/blog/bloggingwithorgmode2">Orgmode를 이용한 Blogging (2)</a>
</li>
<li>
<a href="/blog/bloggingwithorgmode3">Orgmode를 이용한 Blogging (최종정리)</a>
</li>
</ul>
</li>
</ul>
<p>홈페이지 서버를 교체하면서 blogofile+orgmode extension Blogging을 2주 정도 사용 중이다. 
느낀 점을 간단히 정리하자면&hellip;
</p>
<ul>
<li>
기대했던 것처럼, html browser 대신에 emacs을 사용할 수 있고, 익숙한 orgmode에서 사용할 수 있다는
측면에서 매우 편하다

</li>
</ul>
</div>
<div id="outline-container-1.1" class="outline-4">
<h4 id="sec-1.1">불편한 점 </h4>
<div class="outline-text-4" id="text-1.1">
<p>
Blogofile + orgmode extension 자체 solution은 현재로서는 쓸만한데, 글이 좀 많아지는 경우에는
몇가지 문제가 생길 수 있다 
</p>
<ul>
<li>
Orgmode article -&gt; html 변환 시, emacs와 orgmode의 변환에 따라 다른 결과물이 나온다.  특히
orgmode이 version-up함에 따라 formatting 결과가 다르게 된다. 또한 매번 변환을 emacs launch하여
batch로 처리가 되다보니 글이 많아지면 속도가 문제가 된다. 처음 검토했을때 각 글당 1초 미만으로
걸리고, 서버측에서 자동으로 처리가 되는 부분이니 무시해도 되지 않을까 생각했던 부분이다
</li>
<li>
Syntax highlight 처리 : orgmode에서는 자동으로 처리가 되었는데 batch로 처리를 하니 색 지정이
되지 않고 face 처리가 된다 
</li>
<li>
<a href="http://orgmode.org/worg/org-contrib/babel/org-babel.php">Org babel</a> : latex fragment, ditaa 등을 고려하면 최종적으로 검토를 해야 하는데, 이 부분을
서버측에서 처리를 하다보면 속도나 호환성 쪽에서 문제가 되지 않을까 하는 우려가 있다
</li>
<li>
문서의 update time : Blog article의 lifetime과는 달리 기존의 wiki처럼 문서를 만들어 놓고 계속
수정 또는 첨가 형태로 운영을 하게 되는데, 각 article들의 update time과 페이지 상의 위치는 어떻게
유지할까?
<ul>
<li>
yasnippet와 emacs write hook을 사용하는 대안 :
yasnippet용 script로 <a href="http://github.com/jmjeong/my-dot-emacs/blob/master/snippets/org-mode/yaml">yaml</a>을 정의하고, yaml이 blogofile용 header를 입력하게 하고, org mode에서
파일이 저장될 때 <code>updated:</code> 항목을 갱신하는 방법으로 update를 변경하는 방법 : 페이지 자체에
불필요한 정보가 들어있다 보니 orgmode exporter가 처리가 안 되는 문제가 있다. 



<pre class="src src-elisp">(add-hook 'org-mode-hook
          (<span style="color: #7f007f;">lambda</span> ()
            (org-set-local 'yas/trigger-key  [tab])
            (define-key yas/keymap [tab] 'yas/next-field-group)
            (auto-fill-mode)
            (add-hook 'local-write-file-hooks 'blog-updated-timestamp)
            ))

(<span style="color: #7f007f;">defun</span> <span style="color: #0000ff;">blog-updated-timestamp</span> ()
  <span style="color: #8b2252;">"Upate blog-updated-timestamp"</span>
  (<span style="color: #7f007f;">save-excursion</span>
    (goto-char (point-min))
    (<span style="color: #7f007f;">let</span> ((state buffer-read-only))
      (<span style="color: #7f007f;">when</span> state (setq buffer-read-only nil))
      (<span style="color: #7f007f;">if</span> (search-forward-regexp <span style="color: #8b2252;">"^updated:"</span> nil t)
          (<span style="color: #7f007f;">let</span> ((beg (match-end 0)))
            (end-of-line)
            (delete-region beg (point))
            (goto-char (match-end 0))
            (kill-line)
            (insert (format-time-string <span style="color: #8b2252;">" %Y/%02m/%02d %02H:%02M:%02S\n"</span> (current-time)))
            )
        )
      (<span style="color: #7f007f;">when</span> state (setq buffer-read-only t)))))
</pre>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div id="outline-container-1.1" class="outline-3">
<h3 id="sec-1.1">개선점 </h3>
<div class="outline-text-3" id="text-1.1">
<ul>
<li>
HTML 변환을 org-publish에 의해 처리하고, 변환된 HTML에 yaml header를 붙여서 blogofile로 처리하는
형태로 변환을 완료했다. F5를 눌러 현재 홈페이지에 올려진 각 article들을 살펴보고, 문서를 작성 후,
F6을 누르면 자동으로 org-publish &amp; blogofile 변환 작업을 하도록 작업 프로세스를 변경했다.

</li>
<li>
<a href="/blog/bloggingwithorgmode3">Orgmode를 이용한 Blogging (최종정리)</a>에서 구체적인 시스템 설정에 대해 다루겠다.
</li>
</ul>
</div>
</div>
</div>]]></content:encoded>
    </item>
    <item>
      <title>Orgmode를 이용한 Blogging (최종정리)</title>
      <link>http://jmjeong.com/blog/bloggingwithorgmode3</link>
      <pubDate>Thu, 24 Sep 2009 20:31:00 KST</pubDate>
      <category><![CDATA[blog]]></category>
      <category><![CDATA[emacs]]></category>
      <guid isPermaLink="true">http://jmjeong.com/blog/bloggingwithorgmode3</guid>
      <description><p><a href="http://www.blogofile.com/">Blogofile</a>은 <a href="http://github.com/mojombo/jekyll">Jekyll</a>에 의해 영감을 받아 만들어진 스태틱 파일 블로그 엔진/컴파일러이다. PHP나 PERL등의
CGI script도 필요없고, mysql이나 sqlite3등의 database도 필요하지 않다. 모든 content는 HTML 형태로
서버에 저장이 되기 때문에, HTTP 서버만 있으면 구동이 가능하다. 또한 동적처리가 서버에서 이루어지지
않기 때문에 보안에 상대적으로 안전하다.
</p><p>Orgmode가 html 변환을 담당하기 때문에 6.x 버젼으로 org version의 버젼을 일치시킬 필요가 있다. 
변환된 HTML로부터 title, date, update날짜등을 자동으로 추출해 내는데, 변환된 HTML의 format이 다른
경우에는 오동작을 일으킨다.
</p><i>Read more...</i></description>
      <content:encoded><![CDATA[
<div id="outline-container-1" class="outline-2">

<div class="outline-text-2" id="text-1">
<ul>
<li>
관련 Link
<ul>
<li>
<a href="/blog/bloggingwithorgmode">Orgmode를 이용한 Blogging</a>
</li>
<li>
<a href="/blog/bloggingwithorgmode2">Orgmode를 이용한 Blogging (2)</a>
</li>
<li>
<a href="/blog/bloggingwithorgmode3">Orgmode를 이용한 Blogging (최종정리)</a>
</li>
</ul>
</li>
</ul>
<p><a href="http://www.blogofile.com/">Blogofile</a>은 <a href="http://github.com/mojombo/jekyll">Jekyll</a>에 의해 영감을 받아 만들어진 스태틱 파일 블로그 엔진/컴파일러이다. PHP나 PERL등의
CGI script도 필요없고, mysql이나 sqlite3등의 database도 필요하지 않다. 모든 content는 HTML 형태로
서버에 저장이 되기 때문에, HTTP 서버만 있으면 구동이 가능하다. 또한 동적처리가 서버에서 이루어지지
않기 때문에 보안에 상대적으로 안전하다.
</p>
</div>
<div id="outline-container-1.1" class="outline-3">
<h3 id="sec-1.1">작업 환경 </h3>
<div class="outline-text-3" id="text-1.1">
<ul>
<li>
<a href="http://blogofile.com">Blogofile</a> : static blog generator
</li>
<li>
<a href="http://www.gnu.org/software/emacs/">Emacs</a> : GNU Emacs 23.1.50.1 (i386-apple-darwin9.7.0, NS apple-appkit-949.46)
</li>
<li>
<a href="http://orgmode.org">Org-mode</a> : Org-mode version 6.30trans (release_6.30d.820.g6f96.dirty)

</li>
</ul>
<p>Orgmode가 html 변환을 담당하기 때문에 6.x 버젼으로 org version의 버젼을 일치시킬 필요가 있다. 
변환된 HTML로부터 title, date, update날짜등을 자동으로 추출해 내는데, 변환된 HTML의 format이 다른
경우에는 오동작을 일으킨다.
</p>
</div>
</div>
<div id="outline-container-1.2" class="outline-3">
<h3 id="sec-1.2">인스톨 하는 방법 </h3>
<div class="outline-text-3" id="text-1.2">
<p>
<i>작성 중</i>
</p>
</div>
</div>
<div id="outline-container-1.3" class="outline-3">
<h3 id="sec-1.3">수행 과정 </h3>
<div class="outline-text-3" id="text-1.3">
<p>
<i>작성 중</i>
</p>
</div>
</div>
<div id="outline-container-1.4" class="outline-3">
<h3 id="sec-1.4">얻어지는 장점 </h3>
<div class="outline-text-3" id="text-1.4">
<ul>
<li>
Source include나 highlight에 대해 별다른 고민을 할 필요가 없이, <code>src</code> <code>tab</code>을 누르면 yaml에 의해
확장된 <code>#+BEGIN_SRC</code> &hellip; <code>#+END_SRC</code>가 표시된다 
</li>
<li>
<code>C-c C-x f</code>를 누르면 Footenote mark가 표시되고, 자동으로 footnote를 편집할 수 있는 화면으로 바뀐다
</li>
<li>
Section이나 subsection을 웹으로 publish하고 싶지 않을 때 <code>C-c ;</code>를 누르면 COMMENT mark가 표시되고
웹 publish 여부를 결정할 수 있다
</li>
<li>
Emacs에서 <code>F5</code>를 누르면 현재 blog에 posting된 모든 글이 dired mode로 표시된다. Dired의 목록 list는
최근 update 순으로 sorting되어 표시되어, 최근 수정한 내역을 알아볼 수 있다. 또한 blog post
article은 git에 의해 유지 관리가 되므로 각 file별 수정 내역을 확인할 수 있다
</li>
<li>
Web에 publish하기 전에 대략적인 output formating을 알아보고 싶은 경우에는 <code>C-c C-e b</code>를 통해 html
변환 결과를 확인한다 
</li>
<li>
Emacs에서 <code>F6</code>을 누르면 org -&gt; html 변환, site generation을 수행하고, <code>F7</code>을 누르면 웹 사이트에
자동으로 upload한다. 변환된 local 결과는 <code>http://localhost/8080</code> 으로 확인이 가능하다<sup><a class="footref" name="fnr.1" href="#fn.1">1</a></sup>
</li>
<li>
굳이 web에 접속하지 않아도 local로 blog entry들을 확인 가능하고, 편집이 가능하다
</li>
<li>
테이블 편집에 대해 고민하지 않고, orgmode의 <b>훌륭한</b> 테이블 편집 모드를 사용한다
</li>
<li>
작성된 org 파일은 필요에 따라 txt나 latex format으로 변환하여 출력이 가능하다
</li>
<li>
Category는 orgmode의 tag를 이용하여 구현했다. 작성된 article의 tag를 변경하고 싶은 경우에는
아무데서나 <code>C-c C-q</code>를 눌러 section의 tag를 변경하면 된다
</li>
<li>
최근 수정된 문서는 blog에서 첫 페이지에 올라오고, 문서의 처음 작성일은 문서의 마지막에 표시된다

</li>
</ul>
<p><i>To be continued</i>
</p>
</div>
</div>
</div>
<div id="footnotes">
<h2 class="footnotes">Footnotes: </h2>
<div id="text-footnotes">
<p class="footnote"><sup><a class="footnum" name="fn.1" href="#fnr.1">1</a></sup> Local에 별도 web server 프로그램이 수행되어 있거나, 'blogofile serve 8080'로 blogofile에 있는
server 기능을 활용할 수 있다.  Blogofile serve를 background로 수행 시켜 놓으면 매번 구동할 필요없다.
</p>
</div>
</div>]]></content:encoded>
    </item>
    <item>
      <title>Emacs Configration</title>
      <link>http://jmjeong.com/blog/emacsconfigration</link>
      <pubDate>Fri, 06 Nov 2009 16:52:00 KST</pubDate>
      <category><![CDATA[emacs]]></category>
      <guid isPermaLink="true">http://jmjeong.com/blog/emacsconfigration</guid>
      <description><p>
현재 사용하고 있는 emacs configration이다. <a href="http://github.com/jmjeong/jmjeong-emacs">Github jmjeong-emacs</a>에 최신버젼을 운영 중이다.
</p><p>
각 package 설정마다 <code>.el</code>을 분리하여 파일로 만들었고, <code>init.el</code>에서 필요 <code>elisp</code>을 읽는 구조로 변경했다. 
</p><i>Read more...</i></description>
      <content:encoded><![CDATA[
<div id="outline-container-1" class="outline-2">

<div class="outline-text-2" id="text-1">
<p>
현재 사용하고 있는 emacs configration이다. <a href="http://github.com/jmjeong/jmjeong-emacs">Github jmjeong-emacs</a>에 최신버젼을 운영 중이다.
</p>
<pre class="src src-sh">git clone git://github.com/jmjeong/jmjeong-emacs.git
</pre>
<p>
각 package 설정마다 <code>.el</code>을 분리하여 파일로 만들었고, <code>init.el</code>에서 필요 <code>elisp</code>을 읽는 구조로 변경했다. 
</p>
<dl>
<dt>auto-install/</dt><dd>
<code>auto-install.el</code> 패키지에서 자동으로 install되는 파일이 저장되는
folder이다. Upgrade도 auto-install package에 의해 관리된다.
</dd>
<dt>vendor/</dt><dd>
여러 emacs site에서 받은 package들 저장.
단일 el파일만 저장하고, 나머지는 update.sh에 의해 자동으로 받아오는 구조로 관리하다가
여러 machine을 옮겨갔을때 설정하는 것이 번거로워서 local copy를 유지하는 방식으로
변경했다.  <code>update.sh</code>파일을 통해서 필요한 파일은 자동 upgrade.

</dd>
</dl>
<p><code>init.el</code> 에서 <code>elisp-root-dir</code>를 download한 디렉토리로 변경하여 사용하면 된다.
</p>
<pre class="src src-sh">(defcustom elisp-root-dir <span style="color: #8b2252;">"~/my-dot-emacs"</span>
  <span style="color: #8b2252;">"The root directory where elisp is installed"</span>)
</pre>
<p>
<code>GNU Emacs 23.1.50.1 (i386-apple-darwin9.8.0)</code>에서 사용 중이다.
</p></div>
</div>]]></content:encoded>
    </item>
    <item>
      <title>Emacs Mail</title>
      <link>http://jmjeong.com/blog/emacsmail</link>
      <pubDate>Tue, 27 Oct 2009 07:41:00 KST</pubDate>
      <category><![CDATA[mail]]></category>
      <category><![CDATA[gnus]]></category>
      <category><![CDATA[emacs]]></category>
      <guid isPermaLink="true">http://jmjeong.com/blog/emacsmail</guid>
      <description><p>
KLDP에서 Gnus의 최신버전이 예전버전과는 달리 한글 입출력이 깔끔하게 <a href="http://kldp.org/node/103560">잘 지원된다는 글</a>을 보고,
Thunderbird와 함께 두 달 정도 사용을 했다. Emacs 23의 snapshot에 Gnus v5.13이 들어가 있고, mac에서는
별도의 utility 설정 없이도 gmail이나 회사 IMAP 메일로 접근하여 메일을 읽고 쓰는 것이 큰 문제가 없이
동작을 한다. 
</p><p><img src="/images/gnus.png" alt="Gnus" width="504" /></p><i>Read more...</i></description>
      <content:encoded><![CDATA[
<div id="outline-container-1" class="outline-2">

<div class="outline-text-2" id="text-1">
</div>
<div id="outline-container-1.1" class="outline-3">
<h3 id="sec-1.1">Gnus </h3>
<div class="outline-text-3" id="text-1.1">
<p>
KLDP에서 Gnus의 최신버전이 예전버전과는 달리 한글 입출력이 깔끔하게 <a href="http://kldp.org/node/103560">잘 지원된다는 글</a>을 보고,
Thunderbird와 함께 두 달 정도 사용을 했다. Emacs 23의 snapshot에 Gnus v5.13이 들어가 있고, mac에서는
별도의 utility 설정 없이도 gmail이나 회사 IMAP 메일로 접근하여 메일을 읽고 쓰는 것이 큰 문제가 없이
동작을 한다. 
</p>
<div class="figure">
<p><img src="/images/gnus.png" alt="Gnus" width="504" /></p>
</div>
<pre class="src src-elisp">(setq user-mail-address <span style="color: #8b2252;">"jmjeong@nemustech.com"</span>)
(setq user-full-name <span style="color: #8b2252;">"Jaemok Jeong"</span>)

(setq gnus-select-method '(nnimap <span style="color: #8b2252;">"nemustech"</span>
    (nnimap-address <span style="color: #8b2252;">"mail.nemustech.com"</span>)
    (nnimap-server-port 993)
    <span style="color: #b22222;">; </span><span style="color: #b22222;">&#47196;&#44536;&#51064; &#51221;&#48372; &#54028;&#51068;&#51012; &#49324;&#50857;&#54616;&#50668; &#51088;&#46041; &#47196;&#44536;&#51064; &#54616;&#44256;&#51088; &#54624; &#44221;&#50864; &#49324;&#50857;
</span>    (nnimap-authinfo-file <span style="color: #8b2252;">"~/.imap-authinfo"</span>)   
    (nnimap-stream ssl)))
<span style="color: #b22222;">;; </span><span style="color: #b22222;">.imap-authinfo file format 
</span><span style="color: #b22222;">;;  </span><span style="color: #b22222;">
</span><span style="color: #b22222;">;;  </span><span style="color: #b22222;">machine mail.nemustech.com login MyEmailAddress password MyPassWord port 993
</span><span style="color: #b22222;">;;</span><span style="color: #b22222;">
</span>
(setq gnus-show-threads t)
(setq gnus-thread-indent-level 2)

(<span style="color: #7f007f;">require</span> '<span style="color: #008b8b;">bbdb</span>)                                                       
(bbdb-initialize)                                                     

<span style="color: #b22222;">;</span><span style="color: #b22222;">(add-hook 'message-send-hook 'ispell-message)
</span>(add-hook 'gnus-startup-hook 'bbdb-insinuate-gnus)

(setq bbdb-north-american-phone-numbers-p nil)
(setq bbdb-check-zip-codes-p nil)

(setq message-mode-hook
      (quote (
      (<span style="color: #7f007f;">lambda</span> nil (setq fill-column 72))
      turn-on-auto-fill
      bbdb-define-all-aliases
      )))
</pre>
<p>
<code>gnus-select-method</code>를 이용하여 nnimap으로 설정하고, 매번 passwd를 물어보는 문제는
<code>.nnimap-authinfo</code>  파일에 인증 설정을 하여 해결하였다. <a href="http://www.emacswiki.org/emacs/GnusEncryptedAuthInfo">GnusEncryptedAuthInfo</a>에 인증 암호를
encrypt하는 방법도 설명이 되어 있다. 
</p>
<p>
10년 사이에 "Gnus package도 많이 발전했구나, 여러 open source에서
UTF-8지원이 공식화되다보니 따로 localization에 대해서 고민을 안해도 되는구나" 생각을 하다가
<a href="http://www.emacswiki.org/emacs/GnusSpeed">Gnus의 느린속도</a>에 불만을 갖게 되었다. <a href="http://www.gnu.org/software/emacs/manual/html_node/emacs/Rmail.html">Rmail</a>, <a href="http://www.mew.org/en/">Mew</a>, <a href="http://www.emacswiki.org/emacs/WanderLust">WanderLust</a>, <a href="http://www.emacswiki.org/emacs/CategoryViewMail">VM</a> 등을 고민하다가 내가 왜 예전에
<a href="http://jmjeong.com/index.php?display=LinuxTips">Gnus를 쓰다가 중단</a>했는지를 알게되었다. 
</p>
<ul>
<li>
사용하면서 느끼는 Gnus의 단점 두가지 <span class="timestamp-wrapper"> <span class="timestamp">2009-10-27 Tue</span></span>
<ul>
<li>
<b>느린 속도</b> IMAP으로 online상의 여러 folder에 있는 메일을 읽어올 때나, 큰 첨부파일을 갖는 메일을
읽을 때는 답답하다. 속도 이슈로 매력적인 score 기능을 활성화시킬 수가 없다. Gnus가 thread화 되지
않으면 당분간 해결이 쉽지 않을 것 같다. Offlineimap을 이용하여 local로 imap folder를 sync하여
Gnus를 활용하면 어떨까? Mew에서는 mime parsing을 별도의 C utility로 만들어서 하던데 이런 방법도
concurrent emacs가 아니고도 해결할 수 있는 좋은 방안일 듯 하다.
</li>
<li>
<b>너무 많은 명령어</b> Gnus가 news reader로 제작되다보니, mail client로만 쓰기에는 기능이 너무 많다

</li>
</ul>
</li>
</ul>
</div>
</div>
<div id="outline-container-1.2" class="outline-3">
<h3 id="sec-1.2">Rmail </h3>
<div class="outline-text-3" id="text-1.2">
<p>
Rmail은 Emacs의 기본적으로 내장되어 있는 mail viewer이다. 
</p>
<ul>
<li>
<b>빠른 속도</b> IMAP 데이타를 <code>fetchmail, procmail</code>을 이용하여 local로 옮기고, RMAIL로 읽으니 <code>mail,     mutt</code> 속도로 읽을 수 있었다.
</li>
<li>
<b>MIME Encoding 문제</b> Charset과 MIME decoding을 제대로 못하는 문제가 있다. <a href="http://www.emacswiki.org/emacs/RmailMime">참고 : RmailMime</a>
<div class="figure">
<p><img src="/images/rmail.png" alt="/images/rmail.png" /></p>
</div>
</li>
</ul>
</div>
</div>
<div id="outline-container-1.3" class="outline-3">
<h3 id="sec-1.3">ViewMail </h3>
<div class="outline-text-3" id="text-1.3">
<p>
<a href="http://www.emacswiki.org/emacs/CategoryViewMail">VM</a>은 XEmacs에 내장되어 배포되고 있는 메일 client이다. 현재 VM version 8.0.12 버전까지 나와 있고,
Emacs에서도 문제없이 수행이 된다. Default 설정으로는 한글 encoding과 MIME decoding이 원할하지
않다. 이것저것 설정을 조정해가면서 쓸만큼 매력적이지 않아서 일단 패스.
</p>
<div class="figure">
<p><img src="/images/viewmail.png" alt="/images/viewmail.png" /></p>
</div>
</div>
</div>
<div id="outline-container-1.4" class="outline-3">
<h3 id="sec-1.4">Wanderlust </h3>
<div class="outline-text-3" id="text-1.4">
<p>
<a href="http://www.gohome.org/wl/">Wanderlust Homepage</a>, <a href="http://emacs-fu.blogspot.com/2009/06/e-mail-with-wanderlust.html">email with wanderlust</a>에서 wanderlust에 대한 좋은 평들이 있다.  홈페이지는
몇년동안 수정이 되고 있지 않고, CVS에도 commit log가 꽤 오래전이다. Wiki에 update되어 있는 글들도
2006년 이후로는 올라와 있지 않다. Emacs 23에서 UTF-8을 잘못 encoding한다는 <a href="http://www.emacswiki.org/emacs/WlEmacsTwentyThree">보고</a>도 있다. 좋은 장점에도
불구하고 오래되고, 설정하기 복잡하고, SEMI, APEL, FLIM등 외부 package에 의존성이 있다는 문제점이
있다.
</p>
<div class="figure">
<p><img src="/images/wl.png" alt="ViewMail" width="504" alt="wanderlust" width="504" /></p>
</div>
<p>
Gnus에 빠른 속도와 사용하기 편한 인터페이스, Offline IMAP supoort등의 장점이 많이 있었다. SEMI(Emacs
mime interface)가 상대적으로 예전 버젼이다보니 최신 gnus에 들어있는 것처럼 MS의 비표준 encoding에
대한 예외처리가 되어 있지 않다. <code>ks_c_5601-1987</code>을 <code>euc-kr</code>로 치환하는 것을 찾아보려 했으나, 문서도
많지 않고 해서 사용하지 않기로 했다. Gnus와 wanderlust를 동시에 사용하니, MIME쪽의 의존성 문제인지
Gnus쪽의 메일 처리가 이상해지는 문제도 있었다.
</p>
</div>
</div>
<div id="outline-container-1.5" class="outline-3">
<h3 id="sec-1.5"><a href="http://www.mew.org/">Mew</a> </h3>
<div class="outline-text-3" id="text-1.5">
<div class="figure">
<p><img src="/images/mew.png" alt="Mew" width="504" /></p>
</div>
<p>
일본에서 제작되어 다국어에 대한 고려가 많이 되어 있다. 
Gmail을 pop이나 IMAP을 통해 접근하여 메일을 읽는것이 가능하다. 체감속도는 wanderlust에 비해 약간 느리다.
</p>
<pre class="src src-elisp">(setq mew-pop-size 0)
(setq mew-use-cached-passwd t)
(setq mew-passwd-timer-unit 999)
(setq mew-passwd-lifetime 999)
(set-default 'mew-decode-quoted 't)  
(setq mew-prog-pgp <span style="color: #8b2252;">"gpg"</span>)
(setq mew-pop-delete nil)
(setq mew-config-alist 
<span style="color: #b22222;">;;</span><span style="color: #b22222;">Gmail
</span> '(
  (<span style="color: #8b2252;">"default"</span>
 (<span style="color: #8b2252;">"name"</span>      . <span style="color: #8b2252;">"Jaemok Jeong"</span>)
 (<span style="color: #8b2252;">"user"</span>      . <span style="color: #8b2252;">"jmjeong"</span>)
 (<span style="color: #8b2252;">"mail-domain"</span>   . <span style="color: #8b2252;">"gmail.com"</span>)
 (<span style="color: #8b2252;">"proto"</span> . <span style="color: #8b2252;">"+"</span>)
 (<span style="color: #8b2252;">"pop-ssl"</span>   . t)
 (<span style="color: #8b2252;">"pop-ssl-port"</span>  . <span style="color: #8b2252;">"995"</span>)
 (<span style="color: #8b2252;">"prog-ssl"</span>  . <span style="color: #8b2252;">"/opt/local/bin/stunnel"</span>)
 (<span style="color: #8b2252;">"pop-auth"</span>  . pass)
 (<span style="color: #8b2252;">"pop-user"</span>  . <span style="color: #8b2252;">"jmjeong"</span>)
 (<span style="color: #8b2252;">"pop-server"</span>    . <span style="color: #8b2252;">"pop.gmail.com"</span>)
 (<span style="color: #8b2252;">"smtp-ssl"</span>  . t)
 (<span style="color: #8b2252;">"smtp-ssl-port"</span>. <span style="color: #8b2252;">"465"</span>)
 (<span style="color: #8b2252;">"smtp-auth-list"</span> . (<span style="color: #8b2252;">"PLAIN"</span> <span style="color: #8b2252;">"LOGIN"</span> <span style="color: #8b2252;">"CRAM-MD5"</span>))
 (<span style="color: #8b2252;">"smtp-user"</span> . <span style="color: #8b2252;">"jmjeong"</span>)
 (<span style="color: #8b2252;">"smtp-server"</span>   . <span style="color: #8b2252;">"smtp.gmail.com"</span>)
 )
 ))
(setq mew-summary-form '(type (5 date) <span style="color: #8b2252;">" "</span> (14 from) <span style="color: #8b2252;">" "</span> t (70 subj) ))
</pre>
</div>
</div>
<div id="outline-container-1.6" class="outline-3">
<h3 id="sec-1.6">속도. 속도. 속도. </h3>
<div class="outline-text-3" id="text-1.6">
<ul>
<li>
OfflineImap 프로그램을 이용하여 9G가 넘는 IMAP folder를 Local machine으로 옮겨서 nnmaildir을
이용해서 읽는 것을 시도해 봤는데 만족스럽지가 않다. 생각과는 달리 Gnus의 nnmaildir backend가
nnimap보다 빠르지 않다는 newsgroup의 글들이 검색이 된다. Fetchmail + procmail을 통해 imap에서
메일을 읽어서 local dovecat IMAP 서버로 서비스하게 변경하고 만족한다는 글이 있다. 

</li>
<li>
<a href="http://jmjeong.com/?Emacs/Mew">Mew</a>에서는 maildir folder를 내부 관리용으로는 사용하는데 maildir를 접근할수 없다는 글이 있다. 
maildir folder를 사용하는 것이 대안이 될 수 없는가?  Mew로 IMAP folder 접근하는 것도 체감속도가
빠르지 않다. 

</li>
<li>
Gnus와 Thunderbird, Apple Mail을 잘 조합해서 써야겠다

</li>
</ul>
</div>
</div>
</div>]]></content:encoded>
    </item>
    <item>
      <title>Emacs Tips</title>
      <link>http://jmjeong.com/blog/emacstips</link>
      <pubDate>Tue, 08 Sep 2009 14:24:00 KST</pubDate>
      <category><![CDATA[emacs]]></category>
      <guid isPermaLink="true">http://jmjeong.com/blog/emacstips</guid>
      <description><p>
내장 함수로 있을 것 같은데, 찾아봐도 없다.
</p><p>
<code>C-h i</code>에 prefix를 붙이면 파일 지정이 가능하다 
</p><i>Read more...</i></description>
      <content:encoded><![CDATA[
<div id="outline-container-1" class="outline-2">

<div class="outline-text-2" id="text-1">
</div>
<div id="outline-container-1.1" class="outline-3">
<h3 id="sec-1.1">현재 buffer에 file path를 추가 </h3>
<div class="outline-text-3" id="text-1.1">
<p>
내장 함수로 있을 것 같은데, 찾아봐도 없다.
</p>
<pre class="src src-elisp"><span style="color: #b22222;">;; </span><span style="color: #b22222;">insert-path macro
</span>(<span style="color: #7f007f;">defun</span> <span style="color: #0000ff;">insert-path</span> (file)
  <span style="color: #8b2252;">"Insert a path into the buffer with completion"</span>
  (interactive <span style="color: #8b2252;">"GPath: "</span>)
  (insert (expand-file-name file)))

(global-set-key (kbd <span style="color: #8b2252;">"C-x C-i"</span>) 'insert-path)
</pre>
</div>
</div>
<div id="outline-container-1.2" class="outline-3">
<h3 id="sec-1.2">C-s C-w 커서 아래에 있는 단어 검색 </h3>
<div class="outline-text-3" id="text-1.2">
</div>
</div>
<div id="outline-container-1.3" class="outline-3">
<h3 id="sec-1.3">info 파일을 local browse하기 <span class="timestamp-wrapper"> <span class="timestamp">2009-10-30 Fri</span></span> </h3>
<div class="outline-text-3" id="text-1.3">
<p>
<code>C-h i</code>에 prefix를 붙이면 파일 지정이 가능하다 
</p>
<pre class="src src-block">C-u C-h i common/cedet.info
</pre>
</div>
</div>
<div id="outline-container-1.4" class="outline-3">
<h3 id="sec-1.4">Emacs화면을 full screen화면으로 보기 <span class="timestamp-wrapper"> <span class="timestamp">2009-10-26 Mon</span></span> </h3>
<div class="outline-text-3" id="text-1.4">
<p>
<a href="http://www.emacswiki.org/emacs/FullScreen">- EmacsWiki FullScreen</a>. Windows, X, MacOS에 따라 동작방식이 다르다. maxframe.el을 이용해서
Meta-RET로 toggle 방식으로 처리가 되도록 변경해서 사용했다 
</p>
<pre class="src src-elisp"><span style="color: #b22222;">;; </span><span style="color: #b22222;">maxframe.el [2009-10-22]
</span>(<span style="color: #7f007f;">require</span> '<span style="color: #008b8b;">maxframe</span>)
<span style="color: #b22222;">;</span><span style="color: #b22222;">(add-hook 'window-setup-hook 'maximize-frame t)
</span>
(<span style="color: #7f007f;">defvar</span> <span style="color: #a0522d;">my-fullscreen-p</span> t <span style="color: #8b2252;">"Check if fullscreen is on or off"</span>)

(<span style="color: #7f007f;">defun</span> <span style="color: #0000ff;">my-toggle-fullscreen</span> ()
  (interactive)
  (setq my-fullscreen-p (not my-fullscreen-p))
  (<span style="color: #7f007f;">if</span> my-fullscreen-p
      (restore-frame)
    (maximize-frame)))

(global-set-key (kbd <span style="color: #8b2252;">"M-RET"</span>) 'my-toggle-fullscreen)
</pre>
</div>
</div>
<div id="outline-container-1.5" class="outline-3">
<h3 id="sec-1.5">Emacs Recent file list 관리 <span class="timestamp-wrapper"> <span class="timestamp">2009-10-21 Wed</span></span> </h3>
<div class="outline-text-3" id="text-1.5">
<pre class="src src-elisp"><span style="color: #b22222;">;; </span><span style="color: #b22222;">recentf stuff
</span>(<span style="color: #7f007f;">require</span> '<span style="color: #008b8b;">recentf</span>)
(recentf-mode 1)
(setq recentf-max-menu-items 25)
(global-set-key <span style="color: #8b2252;">"\C-x\ \C-r"</span> 'recentf-open-files)
</pre>
<p>
<code>\C-x \C-r</code>은 <code>find-file-read-only</code>이 default keymapping으로 정의되어 있다. 이를 최근 열린 파일을
여는 명령어로 대치하여 사용하자.<sup><a class="footref" name="fnr.1" href="#fn.1">1</a></sup>
</p>
</div>
</div>
<div id="outline-container-1.6" class="outline-3">
<h3 id="sec-1.6">Emacs CVS version compile <span class="timestamp-wrapper"> <span class="timestamp">2009-10-13 Tue</span></span> </h3>
<div class="outline-text-3" id="text-1.6">
<dl>
<dt>M-x version</dt><dd>
<p>
GNU Emacs 23.1.50.1 (i386-apple-darwin9.8.0, NS apple-appkit-949.54) of 2009-10-13 
</p>
</dd>
</dl>
<pre class="src src-sh">./configure --enable-carbon-app --with-ns
</pre>
<p>
&ndash;enable-carbon-app option이 없어지고, nsterm.h 파일에서 에러 메시지가 났다. 
</p>
<pre class="src src-sh">In file included from nsterm.m:41:
nsterm.h:57: error: cannot find protocol declaration for &#8216;NSWindowDelegate&#8217;
nsterm.h:107: error: cannot find protocol declaration for &#8216;NSMenuDelegate&#8217;
nsterm.h:134: error: cannot find protocol declaration for &#8216;NSToolbarDelegate&#8217;
nsterm.h:177: error: cannot find protocol declaration for &#8216;NSWindowDelegate&#8217;
</pre>
<p>
해당 declaration을 삭제하고, compile하여 테스트 중이다. 아직은 크게 달라진 것을 못 느끼겠다.  
Cedet와 ede, eieio, semantic이 built-in으로 들어갔다. Org-mode의 버젼이 Org-mode version 6.31a으로
올라갔다. Org export중에 에러가 났었는데, 내장된 org-mode로 동작을 하면 아무 이상이 없는 것을
확인했다.
</p>
</div>
</div>
<div id="outline-container-1.7" class="outline-3">
<h3 id="sec-1.7">Emacs lisp expression의 수행 결과를 buffer에 insert할 때 <span class="timestamp-wrapper"> <span class="timestamp">2009-10-12 Mon</span></span> </h3>
<div class="outline-text-3" id="text-1.7">
<dl>
<dt>M-:</dt><dd>
eval-expression
</dd>
<dt>C-X C-e</dt><dd>
eval-last-sexp
</dd>
<dt>C-M-x</dt><dd>
eval-buffer

</dd>
</dl>
<p>명령어에 C-u prefix를 붙이면 수행결과가 현재 current buffer에 insert된다.
문서내에 현재 수행 중인 emacs의 버젼 명을 기록하고 싶을 때 C-u M-x version 하면 된다.
</p>
</div>
</div>
<div id="outline-container-1.8" class="outline-3">
<h3 id="sec-1.8">dired mode에서 directory의 파일을 최근 편집된 순으로 보기 </h3>
<div class="outline-text-3" id="text-1.8">
<p>
Dired-x 모듈을 dired 모드 쓸 때 로딩하고, 원하는 directory에 .dired 파일을 만들어서 local
variable들을 설정하여 사용한다. 홈페이지의 블로깅 article들을 최근 변경한 순서로 보기 위한 용도로
세팅하여 사용 중이다.
</p>
<pre class="src src-elisp">(add-hook 'dired-load-hook
          (<span style="color: #7f007f;">lambda</span> ()
          (load <span style="color: #8b2252;">"dired-x"</span>)
))
</pre>
<p>
.dired 파일 내용 
</p>
<pre class="src src-elisp">Local Variables&#58;
dired-actual-switches: <span style="color: #8b2252;">"-lat"</span>
dired-omit-mode: t
End:
</pre>
</div>
</div>
<div id="outline-container-1.9" class="outline-3">
<h3 id="sec-1.9">현재 창에 보이는 font 크기 조절하기(Emacs 23) <span class="timestamp-wrapper"> <span class="timestamp">2009-09-17 Thu</span></span> </h3>
<div class="outline-text-3" id="text-1.9">
<p>
Presentation 중에서 현재 보이는 창의 글자 크기를 조절할때 유용
</p>
<ul>
<li>
C-X C-= : Increase the default face height by one step (text-scale-adjust inc)
</li>
<li>
C-X C&ndash; : Decrease the default face height by one step
</li>
<li>
C-x 0   : Reset the default face height to the original default

</li>
<li>
<a href="http://groups.google.co.kr/group/gnu.emacs.help/browse_thread/thread/8c8145102dadc34c">http://groups.google.co.kr/group/gnu.emacs.help/browse\_thread/thread/8c8145102dadc34c</a>
</li>
<li>
<a href="http://stackoverflow.com/questions/534307/set-emacs-defaut-font-face-per-buffer-mode">http://stackoverflow.com/questions/534307/set-emacs-defaut-font-face-per-buffer-mode</a>
</li>
</ul>
</div>
</div>
<div id="outline-container-1.10" class="outline-3">
<h3 id="sec-1.10">Dired에서 path 이름 복사 </h3>
<div class="outline-text-3" id="text-1.10">
<ul>
<li>
w : dired-copy-filename-as-kill
</li>
<li>
C-u 0 w : path 이름까지 복사

</li>
</ul>
</div>
</div>
<div id="outline-container-1.11" class="outline-3">
<h3 id="sec-1.11">EmacsW32에서 bell 소리 없애기 </h3>
<div class="outline-text-3" id="text-1.11">
<p>
X 상에서야 xset b off 하면 나오는 삐삐 거리는 벨 소리를 없앨 수가 있지만, Win32상의 emacs에서는
없애는 법이 없나 찾아보았다.  가장 손쉽게 할 수 있는 방법이 (setq visible-bell t) 로 하는 방법인데
화면 frame이 번쩍번쩍 거려서 보기가 싫다.
</p>
<p>
이런 용도로는 set-message-beep를 사용한다.
</p>
<pre class="src src-elisp">(set-message-beep 'silent)
</pre>
</div>
</div>
<div id="outline-container-1.12" class="outline-3">
<h3 id="sec-1.12">모드별로 font 설정 바꾸기 </h3>
<div class="outline-text-3" id="text-1.12">
<p>
Org 모드에서는 fixed with font인 NanumGodicCoding을 사용하는데, mail에는 가변폭 폰트를 사용하고 싶다. 
<code>variable-picth-mode</code> 값을 세팅하면 된다(Emacs 23에서만 가능). <sup><a class="footref" name="fnr.2" href="#fn.2">2</a></sup>
</p>
<pre class="src src-elisp">(setq message-mode-hook
     (quote (
     (<span style="color: #7f007f;">lambda</span> () (variable-pitch-mode nil)) 
     )))
</pre>
</div>
</div>
</div>
<div id="footnotes">
<h2 class="footnotes">Footnotes: </h2>
<div id="text-footnotes">
<p class="footnote"><sup><a class="footnum" name="fn.1" href="#fnr.1">1</a></sup> 막상 자주 접근하는 파일은 전부 shortkey들이 있어서, 자주 쓸 일이 없긴 하다.
</p>
<p class="footnote"><sup><a class="footnum" name="fn.2" href="#fnr.2">2</a></sup> 2009-10-15일자 CVS를
compile해서 사용해 보니 <code>variable-pitch-mode</code> 동작방식이 바뀌었다. 다시 확인을 해 봐야겠다.
</p>
</div>
</div>]]></content:encoded>
    </item>
    <item>
      <title>cal-korean.el</title>
      <link>http://jmjeong.com/blog/cal-korean.el</link>
      <pubDate>Thu, 10 Sep 2009 21:25:00 KST</pubDate>
      <category><![CDATA[emacs]]></category>
      <guid isPermaLink="true">http://jmjeong.com/blog/cal-korean.el</guid>
      <description><p>Emacs의 calendar에 대한민국 음력을 표시해 주는 elisp 파일이다. 
</p><p>
대한민국에서 사용하는 음력은 Emacs에서 기본 제공하는 cal-china.el과 많은 날짜들이 일치하지만,
Timezone 때문에 1시간의 차이가 난다. cal-china.el 파일을 기반으로 대한민국 음력을 지원하는 모듈을
만들었다.
</p><i>Read more...</i></description>
      <content:encoded><![CDATA[
<div id="outline-container-1" class="outline-2">

<div class="outline-text-2" id="text-1">
<ul>
<li>
파일 download link : <a href="http://github.com/jmjeong/my-dot-emacs/blob/130e8d593cc49ca5e5d62d5b4fdb4c79c24aea90/cal-korean.el">Emacs 23용</a>, <a href="http://jmjeong.com/index.php?display=Emacs/Cal-Korea">Emacs 22용</a>
</li>
</ul>
<p>Emacs의 calendar에 대한민국 음력을 표시해 주는 elisp 파일이다. 
</p>
<p>
대한민국에서 사용하는 음력은 Emacs에서 기본 제공하는 cal-china.el과 많은 날짜들이 일치하지만,
Timezone 때문에 1시간의 차이가 난다. cal-china.el 파일을 기반으로 대한민국 음력을 지원하는 모듈을
만들었다.
</p>
<p>
기본적인 사용은 .emacs 파일에 아래와 같은 내용을 추가한다. 
</p>
<pre class="src src-elisp"><span style="color: #b22222;">;; </span><span style="color: #b22222;">calendar korean lunar
</span>(<span style="color: #7f007f;">if</span> (= emacs-major-version 23)
    (<span style="color: #7f007f;">require</span> '<span style="color: #008b8b;">cal-korean</span>)
  (<span style="color: #7f007f;">require</span> '<span style="color: #008b8b;">cal-korea22</span>))

<span style="color: #b22222;">;; </span><span style="color: #b22222;">&#51020;&#47141; &#54364;&#49884;&#54624; &#46412; &#44600;&#44172; &#54364;&#49884;
</span>(<span style="color: #7f007f;">eval-after-load</span> <span style="color: #8b2252;">"cal-korean"</span>
  '(<span style="color: #7f007f;">progn</span>
     (setq calendar-korean-print-long-description t)
     ))
</pre>
<p>
M-x calendar를 구동하여 'p l'을 누르면 오늘 날짜에 해당하는 음력이 출력된다
</p>
<div class="figure">
<p><img src="/images/cal-korean.png" alt="/images/cal-korean.png" /></p>
</div>
<p>
또한 'g l'을 누르면 특정 날짜의 음력날짜를 입력받아서, 그 날에 해당하는 양력 날짜를 출력한다. 
</p>
<pre class="src src-elisp">(setq calendar-korean-print-long-description nil)
</pre>
<p>
long-description 값이 nil일 때는 간단한 포맷으로 출력한다 
</p>
<div class="figure">
<p><img src="/images/cal-korean-brief.png" alt="/images/cal-korean-brief.png" /></p>
</div>
<p>
diary mode나 org-mode를 위한 함수또한 추가되었다. Org-mode의 agenda를 표시할 때 diary항목도 추가하기
원할 때는 아래 변수를 세팅하면 된다. 
</p>
<pre class="src src-elisp"><span style="color: #b22222;">;; </span><span style="color: #b22222;">diary file &#51648;&#51221;
</span>(setq diary-file <span style="color: #8b2252;">"~/diary"</span>)
<span style="color: #b22222;">;; </span><span style="color: #b22222;">diary entry &#54252;&#54632;
</span>(setq org-agenda-include-diary t)
</pre>
<p>
<b>Diary File Format</b>
</p>
<pre class="src src-elisp">%%(diary-anniversary 5 1) &#45432;&#46041;&#51208;
%%(diary-lunar-anniversary 1 1) &#49444; - %s
%%(diary-lunar-anniversary 8 15) &#52628;&#49437; - %s
%%(diary-lunar-anniversary 4 8) &#49437;&#44032;&#53444;&#49888;&#51068; - %s

...

%%(diary-lunar-anniversary 12 4 1970) &#51221;&#51116;&#47785; - %s(%d)
</pre>
<p>
일반적으로 diary 파일에서 사용하는 것처럼 음력에 해당하는 날짜를 calendar에 표시를 해 준다. 
앞의 그림에서 <code>darkred</code> 로 표시된 것이 기념일에 해당하는 날짜이다. '추석'또한 기념일로
세팅이 되어 있어서 해당 날짜가 <code>darkred</code> 로 표시가 되었다. 
</p>
<p>
cal-korean.el 에서 새로 추가 지원되는 함수는 다음과 같다. 
</p>
<ul>
<li>
<code>(diary-korean-date)</code>
<p>
각 날짜에 속하는 음력 날짜를 출력한다. 주로 org-mode agenda에서 양력 날짜와 함께 음력을 출력할 때
사용한다. 
</p>
</li>
<li>
<code>(diary-lunar-date MONTH DAY YEAR &amp;optional LEAP MARK)</code>
<p>
diary-date에 상대되는 음력 함수이다. MONTH, DAY, YEAR 각 항목을 t로 지정하여 무시할 수 있다. 
사용방법으로 '%% (diary-lunar-date 1 1 t) 설날 - %s'와 같이 사용되고 이 중 '%s'는 출력되는 format에 맞는
음력 날짜로 치환된다. 
</p>
</li>
<li>
<code>(diary-lunar-anniversary MONTH DAY &amp;optional YEAR LEAP MARK)</code>
<p>
diary-anniversary에 상대되는 음력함수 이다. YEAR가 입력된 경우에는 해당 기념일이 기념일로부터 
몇 년이 지났는지를 계산하여 출력한다. 
</p>
<p>
사용 방법으로는 '%%(diary-lunar-anniversary 12 4 1970) 정재목 - %s(%d)' 와 같이 되고 %s는 음력
날짜로, %d는 해당하는 음력날짜로부터 몇년이 지났는지에 대한 값이 치환됩니다.  윤달인 경우에는
LEAP에 t를 입력하면 된다.  %s %d가 이 순서대로 나와야 한다.
출력결과는 '정재목 - 음력 12월 4일(37)'이 된다. 
</p></li>
</ul>
</div>
</div>]]></content:encoded>
    </item>
  </channel>
</rss>

