namazu UTF-8 + apache EUC-JP

さくらインターネットスタンダードプランを利用しているのですが、全文検索をサイトに組み込み時に填ったので、記録しておく。

会社のWEBサイトは、さくらインターネットでスペースを借りているわけですが、apacheでEUC-JPな設定になっておりまして、UTF-8を使ったページを全文検索の対象になるようnamazuをユーザーフォルダにインストールしました。

mknmzを動かしインデックスを作成し、index.cgiを設置、全文検索出来ると確認したわけです。が、mknmzで作成されるテンプレートの文字コードは、EUC+LFになっておりまして、全く問題ないわけです。当たり前ですが・・・

namazuが動く事を確認したあと、既存のページに検索フォームを設置し確認したところ、文字化けで日本語が一切検索対象に出来ない事が判明。

ググった結果、文書の文字コードがUTF-8の場合、NKFのバージョンを2.0.4以上にすればOKとのこと。

NKFは2.0.4からUTF-8に対応

phpで検索語句をラッピングしてnamazu.cgiに渡すようにすればOKとのことで、

post.php

<blockquote><?php
$url = 'http://MySiteDomain/namazu.cgi';
$query = $_POST['query'];
$whence = '0';
$lang = 'ja';
$max = '20';
$query = rawurlencode(mb_convert_encoding($query, 'EUC-JP', 'auto'));
header("Location: $url?query=$query&whence=$whence&max=$max&lang=$lang");
exit;
?>

検索フォーム

<blockquote><form method="post" action="./post.php">
<p><label>サイト内Namazu検索
<input type="text" name="query" accesskey="q" tabindex="1" size="20" value="" /></label>
<input type="submit" name="submit" tabindex="2" accesskey="s" value="検索" />
</p>
</form>

改訂 Namazuシステムの構築と活用

Lightweight Google Map

WordPressをインストールをakismetなどPluginの準備を始めた。

WordPressをインストールした後は、いろいろPluginやらThemeやらを設定しなくてはいけないが、まずはGooGleMap関連の PluginであるLightweight Google Mapをインストールする。Lightweight Google Map Pluginは、GeoTag(GPS)を利用して、GoolgeMapとの連携が可能になるPlugin(Lightweight Google Maps)です。

インストールについては、基本的にここで説明されているとおりで利用可能になりました。

  1. Pluginをwp-content/plugins/以下にインストール(コピー)
  2. Pluginを有効にする前に、サイトのGoogleMapAPIをlw_googlemaps.phpに書き込む
  3. フッターテンプレートに<?php wp_footer(); ?>が含まれているか確認する。
  4. Pluginを有効にする。

これだけで、地図を挿入する準備が整うわけだ。

いざ、画像をUPLOADして地図が表示されるか確認してみる。

dsc_01213

このように、きちんとGoogleMapが挿入されました。

ちなみに、私はNIKON D700を使っており、これに対応した純正Nikon GPSユニット GP-1でGeoTagを取得しております。

Nikon GPSユニット GP-1

club535 xoopsからwordpressに移行しました。

ようやく 重い腰を上げて、club535サイトの再構築を決意しました。

かなり長い間 メンテナンスしていなかったのですが、外部から管理が楽なwordpressに。

主立った昔の記事を読み返してみましたが使えるような記事が殆どありません。

参考にはなるでしょうが、記事が古すぎて(汗

最近のLinux/OpenSolaris/FreeBSDでは、デフォルトで対応しているような機能を一生懸命拡張していたものですね。

私がUnix系のOSを触りだして、ほぼ10年ですが技術の進歩は恐ろしいもので、当時 最新鋭マシンを使っていたのが、すでに数世代前の骨董品ですから。

当時 IDE HDD 640MBとかでしたし4GBのHDDなんて、5〜6万円はしていました。

一番記憶に残っているマシンで、自作ですが

CPU PentiumII 400MHz SMP
Memory 1024GB(256MBx4)
CD-R/W Driver
MO Drive

という構成で50万円はしてたと思います。

Partition Imageを使ってバックアップ

OUR OWN RISK

Partition Imageはハードディスクのパーティションの内容を丸ごとバックアップするためのソフトです。ファイルコピーによる方法とは異なり、パーティションの内 容をそのままイメージファイルで作成します。LinuxだけでなくWindowsやOS/2などのパーティションにも対応しているため、Windowsの バックアップにも利用することができます。

Partition Imageは、ハードディスクのパーティションの内容を1つのイメージファイルに書き出す。ファイルをコピーするのではなく、ハードディスク上に存在するデータの並びをそのままファイルにするソフトです。対応しているファイルシステムは、

  • Linux ext2
  • Windows FAT/FAT32
  • OS/2 HPFS など

Linux に同様な機能をであるddコマンドがあるが、Partition Imageではデータが書き込まれている部分だけをファイルに書き出すため、資源を有効に使うことが可能です。パーティションの大きさが大きくても、使用 容量が少なければ、Parttion Imageを使って作ったイメージファイルは小さく、また処理時間を短縮することが可能です。さらに、gzipまたはbzip2で圧縮可能で、ファイルを より小さなイメージで作成可能です。ddコマンドでは使用/未使用に関係なくすべてのデータをファイルイメージとして書き出し、圧縮もサポートされていま せん。

同じ設定の複数のPCを簡単に作成可能

Partition Imageは、通常バックアップにはもちろん、それ以外にも使い道があります。たとえば、学校や会社、研究機関等、同じ設定のPCをたくさん用意しなけれ ばならない場合です。一台には通常の方法でインストール設定する必要はありますが、残りはハードディスクの中身をそのままイメージでコピーすれば簡単に、 しかも短時間で作成可能になります。ハードディスクイメージを作成する際は保存媒体の容量に合わせてイメージファイルを分割可能です。例えば、CD-Rに保存するなら、650MBに分割するといいでしょう。MOに保存するなら、その媒体に合わせて230MB、640BM、1.3GBに分割すればよい。

注意点として、kernelのバージョンを確認する必要がある。

kernel2.2では、1つのファイルの最大容量が2GBという制限がある。そのため、少なくとも2GBごとにファイルを分割しなければなりません。

Kernel2.4系ではその制限がなくなりました。

boot diskの作成

用意されているLinux Kernel 2.2.16またはLinux Kernel 2.4.2のboot diskと、Partition Image用のroot diskを使う。また、CD-Rを持っているならCD-Imageを落として焼くとよい。

Parttion Imageのホームページでイメージが公開されています。

Partition Image配布元

作成するには、windowsならRAWRITE.EXEを、Linuxならddで作成する。

Windows

各イメージファイルの名前をbootdisk.raw,rootdisk.rawに変えます。dosの仕様のため。
変更後、RAWRITE.EXEで各ディスクを作成します。作成方法は、Linux install diskを作成するときの要領で作成します。

Linux

  • # dd if=partimage-bootdisk-2.4.9-1.raw of=/dev/fd0
  • # dd if=partimage-0.3.6-rootdisk-2.raw of=/dev/fd0

イメージが作成できたら、フロッピー またはCD-ROMをセットして起動します。フロッピーの場合は画面に「VFS:Insert root floppy disk to be loaded into RAM disk and press ENTER」というメッセージが出たら、root diskに差し替えEnterキーを押します。
システムが起動するとloginが出ます。

  • rootでパスワードは不要です。
  • キーマップの読み込み。
         # loadkeys jp
         101キーボードの場合は設定不要ですね。
  • 作成するイメージファイルを保存するためのパーティションをマウントする。

    使用例1

    /dev/hda1のext2をファイルシステムイメージを/dev/hda2のvfatパーティションに保存するには、

         # mount -t vfat /dev/hda2 /mnt
         # partimage -od -f1 -z1 save /dev/hda2 /mnt/hda2.partimg.gz

こ れは、/dev/hda2の内容を/mnt/hda2.partimg.gzファイルに書き出します。-odオプションは既に同盟のイメージファイルがあ る場合、上書きとなる。-flオプションは処理が終了したら、PCをshutdownする。-zlオプションはgzipで圧縮する。各オプションは、

     # partimage --help

で表示されます。

使用例2

CUIの画面に従いメニュー形式でオプションを選択する方法があります。これは、partimageをオプションなしで起動すると、このモードになります。

     # partimage

こ のモードでは、最初に新たにイメージファイルを作成するか、あるいはイメージファイルからパーティションに書き戻すかを画面下端の[Action to be done:]で指定します。ここでは、「save partition into a new image file」を指定して、新たにファイルを作成するモードを選択します。そして、画面上端のパーティション一覧「Partition to save/restore」でイメージファイルを作るパーティションを指定します。次に、作成するイメージファイル名を画面中央の「Image file to create/use」に指定します。各項目はTabキーを押すことで移動します。

「>」を押して次に進むと、ここでは圧縮形式などのオプションを選択する。作業終了後の処理などを指定して「」を押すと実際にイメージファイルを作り始める。リストア時も作業手順は同じです。

注意点

Partition Imageを使って、イメージファイルにするパーティション、あるいはイメージファイルを書き戻すパーティションは、Linuxの表現方法で指定する必要 がある。例えば、IDEプライマリバスに接続したマスタードライブ内の1つめの基本パーティションは/dev/hda1となります。各パーティションを確 認するには、procファイルシステムを確認します。

     # cat /proc/partitions

次に、作成したイメージファイルをハードディスクに書き戻す際。現時点ではfdiskのようなパーティション作成はサポートできていない。つまり、書き戻すときは、先にfdiskでパーティションを切っておく必要がある。
また、バックアップしたパーティションの容量と書き戻すパーティションの容量を同じにしておく。

namazu UTF-8 + apache EUC-JP

ちょいと全文検索をサイトに組み込み時に填ったので、記録しておく。

会社のWEBサイトは、さくらインターネットでスペースを借りているわけですが、apacheでEUC-JPな設定になっておりまして、UTF-8を使ったページを全文検索の対象になるようnamazuをユーザーフォルダにインストールしました。

mknmzを動かしインデックスを作成し、index.cgiを設置、全文検索出来ると確認したわけです。が、mknmzで作成されるテンプレートの文字コードは、EUC+LFになっておりまして、全く問題ないわけです。当たり前ですが・・・

namazuが動く事を確認したあと、既存のページに検索フォームを設置し確認したところ、文字化けで日本語が一切検索対象に出来ない事が判明。

ググった結果、文書の文字コードがUTF-8の場合、NKFのバージョンを2.0.4以上にすればOKとのこと。
<blockquote>NKFは2.0.4からUTF-8に対応</blockquote>
phpで検索語句をラッピングしてnamazu.cgiに渡すようにすればOKとのことで、

<strong>post.php</strong>
<blockquote>&lt;?php
$url = ‘http://MySiteDomain/namazu.cgi’;
$query = $_POST[‘query’];
$whence = ‘0’;
$lang = ‘ja’;
$max = ’20’;
$query = rawurlencode(mb_convert_encoding($query, ‘EUC-JP’, ‘auto’));
header(“Location: $url?query=$query&amp;whence=$whence&amp;max=$max&amp;lang=$lang”);
exit;
?&gt;</blockquote>
<strong>検索フォーム</strong>
<blockquote>&lt;form method=”post” action=”./post.php”&gt;
&lt;p&gt;&lt;label&gt;サイト内Namazu検索
&lt;input type=”text” name=”query” accesskey=”q” tabindex=”1″ size=”20″ value=”” /&gt;&lt;/label&gt;
&lt;input type=”submit” name=”submit” tabindex=”2″ accesskey=”s” value=”検索” /&gt;
&lt;/p&gt;
&lt;/form&gt;</blockquote>