<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ダメ出し日記</title>
	<atom:link href="http://www.sfo.jp/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://www.sfo.jp/blog</link>
	<description>自称・独立&#38;OSS系(?) SE、さとうふみやすの日記。OSS テクノロジ(株)に勤務。</description>
	<lastBuildDate>Fri, 23 Oct 2009 08:10:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>ついったー</title>
		<link>http://www.sfo.jp/blog/archives/2009/10/twitte.html</link>
		<comments>http://www.sfo.jp/blog/archives/2009/10/twitte.html#comments</comments>
		<pubDate>Fri, 16 Oct 2009 00:46:40 +0000</pubDate>
		<dc:creator>fumiyas</dc:creator>
				<category><![CDATA[出来事]]></category>

		<guid isPermaLink="false">http://www.sfo.jp/blog/?p=493</guid>
		<description><![CDATA[http://twitter.com/satoh_fumiyasu

クライアントは何がいいのかな?
Firefox の拡張で済ますか?
]]></description>
			<content:encoded><![CDATA[<p><a href="http://twitter.com/satoh_fumiyasu">http://twitter.com/satoh_fumiyasu</a></p>

<p>クライアントは何がいいのかな?
Firefox の拡張で済ますか?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfo.jp/blog/archives/2009/10/twitte.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XEmacs: 気がついたら migemo が動いていなかった (解決)</title>
		<link>http://www.sfo.jp/blog/archives/2009/10/migemo-on-xemacs-and-locale.html</link>
		<comments>http://www.sfo.jp/blog/archives/2009/10/migemo-on-xemacs-and-locale.html#comments</comments>
		<pubDate>Wed, 14 Oct 2009 13:09:46 +0000</pubDate>
		<dc:creator>fumiyas</dc:creator>
				<category><![CDATA[UNIX]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[locale]]></category>
		<category><![CDATA[migemo]]></category>

		<guid isPermaLink="false">http://www.sfo.jp/blog/?p=477</guid>
		<description><![CDATA[いつの間にやら XEmacs 上で migemo によるインクリメンタルサーチが機能しなくなっていた。elisp はよくわからないのでしばらく日本語の検索を我慢してきた(アホだな >俺) が、さすがに我慢ならなくなったの [...]]]></description>
			<content:encoded><![CDATA[<p>いつの間にやら XEmacs 上で migemo によるインクリメンタルサーチが機能しなくなっていた。elisp はよくわからないのでしばらく日本語の検索を我慢してきた(アホだな >俺) が、さすがに我慢ならなくなったので調べてみた。</p>

<p>Google で適当に検索。
→
該当する話題は見つからなかったが、migemo は EUC-JP なことを思いだす。
→
そういえば xemacs のロケールを C から ja_JP.UTF-8 に変更した時期と
migemo が機能しなくなった時期が近いような。
→
ロケール C で xemacs を起動してみた。
→
おお、動くじゃん!
→
migemo.el を斜め読みしてみると、ロケールを見てゴニョゴニョとエンコーディング設定をやっているみたい。
じゃあ明示的に設定してみよう。
→
解決!</p>

<p>ということで、~/.emacs に以下を追加して解決。</p>

<p><code>(setq migemo-coding-system 'utf-8)</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfo.jp/blog/archives/2009/10/migemo-on-xemacs-and-locale.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>初キャリーバッグ</title>
		<link>http://www.sfo.jp/blog/archives/2009/06/bermas-function-gear.html</link>
		<comments>http://www.sfo.jp/blog/archives/2009/06/bermas-function-gear.html#comments</comments>
		<pubDate>Mon, 22 Jun 2009 03:06:02 +0000</pubDate>
		<dc:creator>fumiyas</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[仕事]]></category>
		<category><![CDATA[出来事]]></category>

		<guid isPermaLink="false">http://www.sfo.jp/blog/?p=462</guid>
		<description><![CDATA[先月の大分出張のとき、
カミさんの親父さんからキャリーバッグ (スーツケース?) を借りてみた。
ナイロン製のソフトタイプで、サイズは約 H53 x W35 x D22、
キャスターは 2輪、メーカー不明。
初めてキャリ [...]]]></description>
			<content:encoded><![CDATA[<p>先月の大分出張のとき、
カミさんの親父さんからキャリーバッグ (スーツケース?) を借りてみた。
ナイロン製のソフトタイプで、サイズは約 H53 x W35 x D22、
キャスターは 2輪、メーカー不明。
初めてキャリーバッグなるものを使ってみたのだけど、
そもそも何で借りてみようと思ったんだっけ?
何はともあれ、重さを気にせず取り回せるので、非常に楽だった。
旅行は車で行く質なのでこれまで必要になることはなかったけど、
たまにある出張に便利だし、今月末は社員旅行に行く予定になっているので、
一つ購入してみることにした。</p>

<p>散々悩んだ挙句、
<a href="http://www.bermas.co.jp/">BERMAS FUNCTION GEAR 60122</a> に決定。
ポイントは:</p>

<ul>
<li>列車に乗ったときにあまり邪魔にならないサイズ。
飛行機内に持ち込み可能なサイズなんだけど、重要なのかなぁ?
飛行機は面倒という印象があって高知も大分も電車で行ったし、
海外旅行にも行かないので、どっちでもいいけど。</li>
<li>キャスターは 2輪。4輪で 360°回転できるタイプだと、
ちょっとでも傾斜があると手を離して置けないし(横にするのも面倒だし)、
2輪で苦労を感じなかったので。</li>
<li>前面に大きなポケットがあり、ノート PC や小物を入れるのに便利。</li>
<li>そこそこ有名なメーカーらしく、信頼できそうな印象。
生産は中国だけど、たぶん大丈夫でしょう。食い物じゃないから死なないし。</li>
</ul>

<p>定価は￥16,800-、安い店でも￥16,000- と、値引きほとんどなし…。
キャリーバッグの相場を知らないけど、こんなもの?
ちょっと高い印象だが長く使うつもりなので、まあいいか。
通販サイトは軒並在庫なしだったので、これから東急ハンズで買ってきます。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfo.jp/blog/archives/2009/06/bermas-function-gear.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ksh: パイプライン前段のプロセスを看取るタイミング</title>
		<link>http://www.sfo.jp/blog/archives/2009/06/ksh-pipeline.html</link>
		<comments>http://www.sfo.jp/blog/archives/2009/06/ksh-pipeline.html#comments</comments>
		<pubDate>Thu, 04 Jun 2009 00:51:40 +0000</pubDate>
		<dc:creator>fumiyas</dc:creator>
				<category><![CDATA[Samba]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[仕事]]></category>

		<guid isPermaLink="false">http://www.sfo.jp/blog/?p=449</guid>
		<description><![CDATA[会社のソフトウェア製品のうち、
Samba 等のデーモン類は、
daemontools (supervise)
で管理するようにしている (一部例外あり)。

Samba の smbd 用の /service/smbd/ [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.osstech.co.jp/">会社</a>のソフトウェア製品のうち、
Samba 等のデーモン類は、
<a href="http://cr.yp.to/daemontools.html">daemontools</a> (<code>supervise</code>)
で管理するようにしている (一部例外あり)。</p>

<p>Samba の <code>smbd</code> 用の <code>/service/smbd/run</code> スクリプトは、
当初は次のようになっていた。
Linux, Solaris ではこれで何も問題なかった:</p>

<pre class="brush: shell; auto-links: false;">
#!/bin/sh
exec 2&gt;&amp;1
exec envdir ./env sh -c &#039;
  echo &quot;PID: $$&quot;
  env |sort |sed &quot;s/^/Environment: /&quot;
  set -- \
    argv0 \
    &quot;$COMMAND&quot; \
    &quot;${ARGV0:-sv:`pwd`}&quot; \
    --daemon \
    --foreground \
    ${CONFIGFILE:+&quot;--configfile=$CONFIGFILE&quot;} \
    ${PORT:+&quot;--port=$PORT&quot;} \
    ${LOGLEVEL:+&quot;--debuglevel=$LOGLEVEL&quot;} \
    ${LOGDIR:+&quot;--log-basename=$LOGDIR&quot;} \
    ;
  echo &quot;Execute: $@&quot;
  exec &quot;$@&quot;
&#039;
</pre>

<p>ところが、某お客さんから、
AIX 6 上で smbd の子プロセスが defunct (ゾンビ) 化するという問題が報告された。
会社の AIX 環境で試したところ、数回に一回程度しか発生しないが、
<code>smbd</code> を起動した直後に発生することがわかった。
発生したときの状態は次のような感じ:</p>

<pre><code># /opt/osstech/sbin/service osstech-smb status
/opt/osstech/etc/svscan/smbd (pid 270496) is running...
# ps -ef |grep 270496 |grep -v grep
    root 270496 258182   0 13:07:27      -  0:00 sv:/var/opt/osstech/lib/sv/smbd --daemon --foreground
    root 282806 270496   0 13:07:27      -  0:00 sv:/var/opt/osstech/lib/sv/smbd --daemon --foreground
    root 295074 270496   0                  0:00 &lt;defunct&gt;
</code></pre>

<p><code>smbd</code> は起動直後にプリンタキュー監視用の子プロセスを生成するので、
これ関連のバグかと思ったが、
<code>ps</code> で見たときちゃんと 2つの <code>smbd</code> が存在するので問題ないように見えた。
<code>smbd</code> を手動で直接起動すると発生しないし、
<code>truss</code> でシステムコールを見たところ、ほかに子プロセスを生成している様子はない。</p>

<p><code>suerpvise</code> か <code>run</code> スクリプトが怪しいと思い、<code>run</code> スクリプトを色々変更してみたところ、
「<code>env |sort |sed 's/^/Environment: /'</code>」
の行をコメントアウトすると再現しないことがわかった。
ということは、パイプライン中のプロセスのいずれかが看取られずに残っているらしい。</p>

<p>また、/bin/sh ではなく bash, zsh, zsh の ksh 互換モードでは再現しないことがわかった。
ちなみに、AIX 6 の <code>/bin/sh</code> は AT&amp;T 由来の Korn Shell (ksh93)。</p>

<p>パイプラインの実行後にそのプロセスが残るのが問題であると推測し、
試行錯誤した結果、次のようなスクリプトで再現することに成功した。
これで、パイプライン実行後に、
実行中の ksh の子プロセスがゾンビ化していることが確認できる:</p>

<pre><code>$ while :;do /bin/ksh -c '/bin/true|/bin/true; ps -f -u $LOGNAME"';done |grep '[d]efunct'
    root 688354 712836   0                  0:00 &lt;defunct&gt;
    ...
</code></pre>

<p>Linux の /bin/ksh (ksh93)、Solaris 10 の /bin/ksh (ksh88) でも再現した。
bash, zsh, ash はもちろん、Linux 上の pdksh (バブリックドメイン版の ksh 実装)
でも再現しなかった。AT&amp;T ksh の仕様らしい。</p>

<p>つまり、こういうこと:</p>

<ol>
<li>ksh は「<code>env |sort |sed "s/^/Environment: /"</code>」を実行したとき、
 パイプラインの最後のプロセス (<code>sed</code>) が終了した時点で以降のスクリプトの実行に進む。
 パイプライン前段のプロセス (<code>env</code>, <code>sort</code>) の終了は待たない。</li>
<li>その後のスクリプト実行中、以前実行したパイプライン前段のプロセスが終了した場合、
 ksh はそれを wait(2) して看取る。</li>
<li>ksh は <code>smbd</code> に exec(2) する。</li>
<li><code>smbd</code> になった時点で以前実行したパイプライン前段のプロセスが残っていた場合、
 それが終了したとき、wait(2) で看取るのは親プロセスである
 <code>smbd</code> プロセスの役目となる。
 しかし <code>smbd</code> はそのことを知らないので wait(2) することはなく、
 結果、子プロセスはゾンビ化する。</li>
</ol>

<p>ksh がパイプライン前段のプロセス終了をどのようなタイミングで、
どのように処理するかまでは確認していないけど、だいたいこんな感じだと思う。</p>

<p>というわけで、<code>run</code> スクリプトは次のようになった。
違いは <code>exec</code> の前に <code>wait</code> を挿入しただけ:</p>

<pre class="brush: shell; auto-links: false;">
#!/bin/sh
exec 2&gt;&amp;1
exec envdir ./env sh -c &#039;
  echo &quot;PID: $$&quot;
  env |sort |sed &quot;s/^/Environment: /&quot;
  set -- \
    argv0 \
    &quot;$COMMAND&quot; \
    &quot;${ARGV0:-sv:`pwd`}&quot; \
    --daemon \
    --foreground \
    ${CONFIGFILE:+&quot;--configfile=$CONFIGFILE&quot;} \
    ${PORT:+&quot;--port=$PORT&quot;} \
    ${LOGLEVEL:+&quot;--debuglevel=$LOGLEVEL&quot;} \
    ${LOGDIR:+&quot;--log-basename=$LOGDIR&quot;} \
    ;
  ## ksh: Ensure that all commands in the pipeline are terminated
  wait
  echo &quot;Execute: $@&quot;
  exec &quot;$@&quot;
&#039;
</pre>

<p>これで無事に問題解決。</p>

<p>シェルスクリプト中ではパイプラインはもちろん、
<code>exec</code> も常用するたちなので、これは困った仕様だなぁ。
<code>exec</code> 前に <code>wait</code> すべし…なんて、バッドノウハウもいいところ。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfo.jp/blog/archives/2009/06/ksh-pipeline.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows: Samba 共有上で sparse file 作成</title>
		<link>http://www.sfo.jp/blog/archives/2009/06/windows-sparse-file-on-samba.html</link>
		<comments>http://www.sfo.jp/blog/archives/2009/06/windows-sparse-file-on-samba.html#comments</comments>
		<pubDate>Wed, 03 Jun 2009 13:01:57 +0000</pubDate>
		<dc:creator>fumiyas</dc:creator>
				<category><![CDATA[Samba]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[仕事]]></category>

		<guid isPermaLink="false">http://www.sfo.jp/blog/?p=441</guid>
		<description><![CDATA[Windows では、fsutil コマンドで sparse file を作れるということを知ったので、
Samba による CIFS 共有上で試してみた。

まずは Windows 上での操作。試したのは Window [...]]]></description>
			<content:encoded><![CDATA[<p>Windows では、fsutil コマンドで sparse file を作れるということを知ったので、
Samba による CIFS 共有上で試してみた。</p>

<p>まずは Windows 上での操作。試したのは Windows Server 2003R2 と Windows 3.2.8。</p>

<pre><code>C:\&gt; net use \\samba\share /user:fumiyas
...
C:\&gt; fsutil file createnew \\samba\share\file.txt 1000000000
ファイル \\samba\share\file.txt が作成されました
</code></pre>

<p>Samba ホスト上で確認してみる。見た目のサイズは 1GB だが、実際のサイズは 0。</p>

<pre><code>$ ls -l /srv/share/file.txt
-rw-rw-r-- 1 fumiyas Domain Users 1000000000 2009-06-03 20:52 /srv/share/file.txt
$ du -sk /srv/share/file.txt
0       /srv/share/file.txt
</code></pre>

<p>Windows からファイルに追記してみる。</p>

<pre><code>C:\&gt; echo foo &gt;&gt;\\samba\share\file.txt
</code></pre>

<p>再び Samba ホスト上で確認してみる。</p>

<pre><code>$ ls -l /srv/share/file.txt
-rw-rw-r-- 1 fumiyas Domain Users 1000000006 2009-06-03 20:52 /srv/share/file.txt
$ du -sk /srv/share/file.txt
12      /srv/share/file.txt
</code></pre>

<p>2009-06-11 追記:
smb.conf で strict allocate = yes (デフォルト: no) を設定して追試したところ、
sparse file にならなかった。うーん。
fsutil の sparse サブコマンドでどうにかするのだろうか?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfo.jp/blog/archives/2009/06/windows-sparse-file-on-samba.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LPIC 101, 102, 202, 303 合格</title>
		<link>http://www.sfo.jp/blog/archives/2009/03/lpic-101-102-202-303-%e5%90%88%e6%a0%bc.html</link>
		<comments>http://www.sfo.jp/blog/archives/2009/03/lpic-101-102-202-303-%e5%90%88%e6%a0%bc.html#comments</comments>
		<pubDate>Thu, 12 Mar 2009 01:40:39 +0000</pubDate>
		<dc:creator>fumiyas</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[出来事]]></category>

		<guid isPermaLink="false">http://www.sfo.jp/blog/?p=429</guid>
		<description><![CDATA[去年末に LPIC 303 ベータ試験を受け、ギリギリ合格した。
LPIC 301, 302 ベータ試験は選択肢に正解がない問題がちらほらあったりして完成度が低い印象だったけど、303 はそうでもなかった。

以下がスコ [...]]]></description>
			<content:encoded><![CDATA[<p>去年末に LPIC 303 ベータ試験を受け、ギリギリ合格した。
LPIC 301, 302 ベータ試験は選択肢に正解がない問題がちらほらあったりして完成度が低い印象だったけど、303 はそうでもなかった。</p>

<p>以下がスコア (200〜800 の範囲) と正解率。
試験勉強は試験開始前 30分くらいなので、こんなもんかな。</p>

<pre><code>Your Score: 550
Required Passing Score: 500
Status: Pass

Test Section Information
Percent Correct Section
54%            Cryptography
60%            Access Control
83%            Application Security
50%            Operations Security
60%            Network Security
</code></pre>

<p>この時点で LPIC レベル 1, 2 認定未取得なので、レベル 3 も未認定状態。
LPIC 201, 301, 302 も合格しているし、せっかくなので、LPIC 101, 102, 202 を受けてきた。
念の為マクドナルドで 1時間くらい試験勉強してから、3試験ぶっとおしで受験。</p>

<p>LPIC 101 の結果:</p>

<pre><code>スコア: 700
必修合格点: 500
結果: 合格

セクション                                          正解率
Hardware &amp; Architecture                              57%
Linux Installation &amp; Package Management             100%
GNU &amp; Unix Commands                                  93%
Devices, Linux Filesystems, FHS                      81%
The X Window System                                  71%
</code></pre>

<p>LPIC 102 の結果:</p>

<pre><code>スコア: 720
必修合格点: 500
結果: 合格

セクション                                          正解率
Kernel                                               75%
Boot, Initialization, Shutdown and Runlevels        100%
Printing                                            100%
Documentation                                        60%
Shells, Scripting, Programming and Compiling        100%
Administrative Tasks                                100%
Networking Fundamentals                              75%
Networking Services                                  92%
Security                                            100%
</code></pre>

<p>LPIC 202 の結果:</p>

<pre><code>スコア: 670
必修合格点: 500
結果: 合格

セクション                                          正解率
Networking Configuration                             76%
Mail &amp; News                                          60%
DNS                                                  84%
Web Services                                         90%
Network Client Management                            77%
System Security                                      70%
</code></pre>

<p>あわよくば満点とってやるぜーなどと思っていたが、結果は散々。
ISA PnP とか INN なんて、使ったことあるけど覚えてないよ…。
ふつうの人なら 2009年4月の問題改訂 (バージョン 3.0) を待ったほうが、
簡単だと思う。</p>

<p>これで目出度く(?) LPIC 制覇したけど、特にご褒美等はなし。
会社から受験料が出るくらい…。一度くらい役に立つことあるかなぁ。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfo.jp/blog/archives/2009/03/lpic-101-102-202-303-%e5%90%88%e6%a0%bc.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Movable Type から WordPress に移行</title>
		<link>http://www.sfo.jp/blog/archives/2009/03/wordpress.html</link>
		<comments>http://www.sfo.jp/blog/archives/2009/03/wordpress.html#comments</comments>
		<pubDate>Wed, 04 Mar 2009 17:05:21 +0000</pubDate>
		<dc:creator>fumiyas</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[blog]]></category>

		<guid isPermaLink="false">http://www.sfo.jp/blog/?p=393</guid>
		<description><![CDATA[いつだったか
Movable Type を 4.2.3 にアップデートしたところ、ブログの投稿ページが文字化け。
以来、ネタがあっても投稿できず放置していた。
原因がよくわからないし、調べるのが面倒なので、
この際、評判 [...]]]></description>
			<content:encoded><![CDATA[<p>いつだったか
Movable Type を 4.2.3 にアップデートしたところ、ブログの投稿ページが文字化け。
以来、ネタがあっても投稿できず放置していた。
原因がよくわからないし、調べるのが面倒なので、
この際、評判のよさげな WordPress に移行することにした。
PHP ってところが気に入らないが、
Movable Type は先がなさそうだし、ほかにめぼしい選択肢もないし…。</p>

<p>以下、移行手順。
環境は Ubuntu 8.10、
移行元は Movable Type 4.2.3 (movalbetype-opensouce 4.2.3-1)、
移行先は WordPress 2.7.1 (wordpress 2.7.1-2)、
移行対象のデーターは投稿記事の内容だけでなく、
固定リンク (パーマリンク) の URI も移行する。
WordPress は Ubuntu 8.10 の wordpress 2.5.1-8ubuntu1.1 ではなく、
Debian unstable の最新版を利用した。(apt-pin の設定は省略)</p>

<h3>Movable Type からデーターのエクスポート</h3>

<p>Movable Type のインポート/エクスポートモジュール
<code>/usr/share/perl5/MT/ImportExport.pm</code> を書き換え、
エクスポートしたデータに記事の ID と固定リンク先が含まれるようにする。
書き換える場所はサブルーチン <code>export()</code> 内のヒアドキュメント <code>TEXT</code> 内で、
以下はパッチ:
<pre class="brush: patch; auto-links: false;">
--- ImportExport.pm.dist    2008-11-08 22:50:54.000000000 +0900
+++ ImportExport.pm 2009-03-05 02:32:40.000000000 +0900
@@ -492,6 +492,8 @@ PRIMARY CATEGORY: &lt;$MTEntryCategory$&gt;&lt;/M
  CATEGORY: &lt;$MTCategoryLabel$&gt;&lt;/MTEntryCategories&gt;
  DATE: &lt;$MTEntryDate format=&quot;%m/%d/%Y %I:%M:%S %p&quot;$&gt;&lt;MTEntryIfTagged&gt;
  TAGS: &lt;MTEntryTags include_private=&quot;1&quot; glue=&quot;,&quot;&gt;&lt;$MTTagName quote=&quot;1&quot;$&gt;&lt;/MTEntryTags&gt;&lt;/MTEntryIfTagged&gt;
+ID: &lt;$MTEntryID$&gt;
+PERMALINK: &lt;$MTEntryPermalink$&gt;</p>

<hr />

<p>BODY:
  &lt;$MTEntryBody convert_breaks=&quot;0&quot;$&gt;
</pre></p>

<p>Movable Type から通常の手順でブログデーターをエクスポートする。
ファイル名は <code>export-ブログID-西暦年月日時分秒.txt</code> となる。</p>

<p>必要であれば、
Movable Type のデータベース、
生成したページ、
ブログにアップロードしたファイルを適宜バックアップしておく。</p>

<h3>WordPress のインストール</h3>

<p>WordPress のバックエンド DB である MySQL サーバーの
管理者パスワードを適当に決める。</p>

<pre><code># ps -ef |sha1sum
適当なパスワード -
</code></pre>

<p>WordPress と MySQL サーバーをインストールする。
MySQL サーバーの管理者 root に割り当てるパスワードを聞かれるので、適宜入力する。</p>

<pre><code># apt-get install wordpress mysql-server-5.0
</code></pre>

<p>MySQL サーバー管理者のユーザー名とパスワードを
~root/.my.cnf ファイルに保存しておく。内容は以下。
<pre class="brush: plain; auto-links: false;">
[mysql]
user = root
password = 適当なパスワード
</pre></p>

<p>WordPress と MySQL データベースを初期化する。
WordPress 付属の setup-mysql スクリプトに
MySQL ユーザー名兼データベース名と WordPress サイトのドメイン名を指定する。</p>

<pre><code># sh /usr/share/doc/wordpress/examples/setup-mysql -n sfo_wordpress www.sfo.jp
</code></pre>

<p>WordPress 用の Apache2 の設定は…省略。</p>

<h3>Movable Type データーのインポート</h3>

<p>WordPress の Movable Type 用インポートモジュール
<code>/usr/share/wordpress/wp-admin/import/mt.php</code> を書き換え、
記事の ID と固定リンクをインポートできるようにする。
書き換える場所はクラス <code>MT_Import</code> のメソッド <code>process_posts()</code> の
<code>while ( $line = $this-&gt;fgets($handle) )</code> ループ内。
以下はパッチ:
<pre class="brush: patch; auto-links: false;">
--- mt.php.dist 2009-01-24 21:24:16.000000000 +0900
+++ mt.php  2009-03-04 02:51:07.000000000 +0900
@@ -363,6 +363,13 @@ class MT<em>Import {
                            $context = &#039;comment&#039;;
                    } else if ( &#039;PING:&#039; == $line ) {
                            $context = &#039;ping&#039;;
+           } else if ( 0 === strpos($line, &quot;ID:&quot;) ) {
+               $import</em>id = trim( substr($line, strlen(&quot;ID:&quot;)) );
+               $post-&gt;import<em>id = $import</em>id;
+           } else if ( 0 === strpos($line, &quot;PERMALINK:&quot;) ) {
+               $permalink = trim( substr($line, strlen(&quot;PERMALINK:&quot;)) );
+               $post<em>name = basename( $permalink, &quot;.html&quot; );
+               $post-&gt;post</em>name = $post_name;
                    } else if ( 0 === strpos($line, &quot;AUTHOR:&quot;) ) {
                            $author = trim( substr($line, strlen(&quot;AUTHOR:&quot;)) );
                            if ( &#039;&#039; == $context )
</pre></p>

<p>WordPress の Web ページにアクセスして、インストール作業後、
管理画面の [設定] &#8211; [パーマリンク設定] で、URL 構造を「その他」にチェックし、
「<code>/archives/%year%/%monthnum%/%postname%.html</code>」に設定する。</p>

<p>これで準備 OK! あとはインポートするだけ!
…ならいいんだけど、微調整が必要なところもいくつかある。省略。
(アップロードしたファイルの移行など)</p>

<h3>リンク</h3>

<p>以下、参考にしたページ。</p>

<ul>
<li>MovableType から WordPress への移行 &#8211; レジデント初期研修用資料<br />
<a href="http://medt00lz.s59.xrea.com/wp/archives/180">http://medt00lz.s59.xrea.com/wp/archives/180</a></li>
<li>固定リンクを変えずにスムーズにMovableTypeからWordPressに移行するまでの作業ログ &#8211; IDEA * IDEA<br />
<a href="http://www.ideaxidea.com/archives/2008/12/movabletypewordpress.html">http://www.ideaxidea.com/archives/2008/12/movabletypewordpress.html</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.sfo.jp/blog/archives/2009/03/wordpress.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>組込みデビュー? (キメラ・サーチ on ARM)</title>
		<link>http://www.sfo.jp/blog/archives/2008/10/on-arm.html</link>
		<comments>http://www.sfo.jp/blog/archives/2008/10/on-arm.html#comments</comments>
		<pubDate>Fri, 24 Oct 2008 08:23:39 +0000</pubDate>
		<dc:creator>fumiyas</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[仕事]]></category>

		<guid isPermaLink="false">http://www.sfo.jp/blog/archives/2008/10/on-arm.html</guid>
		<description><![CDATA[こんな環境にキメラ・サーチを入れてみた。

# uname -a
Linux foobar 2.6.22.7 #7 Tue Oct 21 22:36:39 JST 2008 armv5tejl unknown
# cat [...]]]></description>
			<content:encoded><![CDATA[<p>こんな環境に<a href="http://www.osstech.co.jp/product/chimera">キメラ・サーチ</a>を入れてみた。</p>

<pre><code># uname -a
Linux foobar 2.6.22.7 #7 Tue Oct 21 22:36:39 JST 2008 armv5tejl unknown
# cat /proc/cpuinfo
Processor       : ARM926EJ-S rev 0 (v5l)
BogoMIPS        : 266.24
Features        : swp half thumb fastmult edsp
CPU implementer : 0x41
CPU architecture: 5TEJ
CPU variant     : 0x0
CPU part        : 0x926
CPU revision    : 0
Cache type      : write-back
Cache clean     : cp15 c7 ops
Cache lockdown  : format C
Cache format    : Harvard
I size          : 32768
I assoc         : 1
I line length   : 32
I sets          : 1024
D size          : 32768
D assoc         : 1
D line length   : 32
D sets          : 1024
Hardware        : Feroceon
Revision        : 0000
Serial          : 0000000000000000
# free
total         used         free       shared      buffers
Mem:       125780       101916        23864            0           52
Swap:      1004020            0      1004020
Total:      1129800       101916      1027884
# fdisk -l
Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot      Start         End      Blocks  Id System
/dev/sda1               1         125     1004031  83 Linux
/dev/sda2             126         748     5004247+ 83 Linux
/dev/sda4             749       60801   482375722+  5 Extended
/dev/sda5             749         873     1004031  82 Linux swap
/dev/sda6             874       60690   480480021  83 Linux
</code></pre>

<p>ハードディスクもあるし、
普段との違いは CPU アーキテクチャくらい?
ということで、全然組込みプログラミングじゃないです。</p>

<p>クロスコンパイルとかに少々悩みつつ、
Scratchbox 2 + QEMU に寄り道したりして、
ようやく場当たり的パッケージングとインストールが完了。
今後 Scratchbox を使ったクロスコンパイル環境作りには力を入れたいが、暇があるかどうか。</p>

<p>何はともあれ、キメラ・サーチを初実行 on ARM。</p>

<pre><code># time /opt/osstech/bin/chimera-crawler
real    0m28.299s
user    0m24.310s
sys     0m2.570s
</code></pre>

<p>&#8230;遅い!
メモリ 128MB も心許ない。大丈夫か?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfo.jp/blog/archives/2008/10/on-arm.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BASH: en_US.UTF-8 で [A-Z] の glob が変?</title>
		<link>http://www.sfo.jp/blog/archives/2008/10/bash-glob.html</link>
		<comments>http://www.sfo.jp/blog/archives/2008/10/bash-glob.html#comments</comments>
		<pubDate>Thu, 16 Oct 2008 13:56:11 +0000</pubDate>
		<dc:creator>fumiyas</dc:creator>
				<category><![CDATA[UNIX]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[ダメ出し]]></category>

		<guid isPermaLink="false">http://www.sfo.jp/blog/archives/2008/10/bash-glob.html</guid>
		<description><![CDATA[
某 CentOS 5 環境で RPM パッケージのビルドが失敗するなぁ〜と思って調べてみた。


$ bash --version
GNU bash, version 3.2.25(1)-release (i686-r [...]]]></description>
			<content:encoded><![CDATA[<p>
某 CentOS 5 環境で RPM パッケージのビルドが失敗するなぁ〜と思って調べてみた。
</p>

<p><pre class="term"><code>$ <kbd>bash --version</kbd>
GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
$ <kbd>touch a b c X Y Z</kbd>
$ <kbd>ls</kbd>
X  Y  Z  a  b  c
$ <kbd>LC<em>ALL=C bash -c 'echo [A-Z]'</kbd>
X Y Z
$ <kbd>LC</em>ALL=ja<em>JP.UTF-8 bash -c 'echo [A-Z]'</kbd>
X Y Z
$ <kbd>LC</em>ALL=en<em>US.UTF-8 bash -c 'echo [A-Z]'</kbd>
b c X Y Z
</code></pre>
<p>
なんじゃこりゃ?
Debian の
GNU bash, version 3.2.39(1)-release (x86</em>64-pc-linux-gnu)
でも同じ挙動だった。
</p>
<p>
やはり<a href="/blog/archives/2007/05/cleanroom.html">クリーンルーム作りは重要</a>だなぁ&#8230;。
</p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfo.jp/blog/archives/2008/10/bash-glob.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>japanesenkf.py for Python 2.5</title>
		<link>http://www.sfo.jp/blog/archives/2008/09/python-japanesenkf-25.html</link>
		<comments>http://www.sfo.jp/blog/archives/2008/09/python-japanesenkf-25.html#comments</comments>
		<pubDate>Fri, 19 Sep 2008 14:34:45 +0000</pubDate>
		<dc:creator>fumiyas</dc:creator>
				<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.sfo.jp/blog/archives/2008/09/python-japanesenkf-25.html</guid>
		<description><![CDATA[以前作成した japanesenkf.py
は Python 2.4 (まで?) にしか対応していなかったが、
先月の忙しい最中、
現実逃避の一環で Python 2.5 に対応したので公開しておく。


japanes [...]]]></description>
			<content:encoded><![CDATA[<p><a href="/blog/archives/2007/01/python-japanesenkf-codec-and-mailman.html">以前作成した japanesenkf.py</a>
は Python 2.4 (まで?) にしか対応していなかったが、
先月の忙しい最中、
現実逃避の一環で Python 2.5 に対応したので公開しておく。</p>

<ul>
<li><a href="/blog/download/python/2.5/japanesenkf.py">japanesenkf.py</a></li>
</ul>

<p>前回と同じく、仕様書等は読んでおらず、Web を検索したり
Python 2.5 付属の *.py を読んだだけの知識でハックしたので、
コーディングが妥当かどうかは自信なし。悪しからず。</p>

<p>2009-05-15 更新:
「iso-2022-jp」などハイフンが含まれているエンコーディング名に効果がなかった問題を修正。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfo.jp/blog/archives/2008/09/python-japanesenkf-25.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
