[トップページ][全文検索ソフト(Perl版)徹底比較][Namazu正規版インストール覚え書き]

ハイパー日記システムでpnamazuを使おう

HNSログカッターTips:昨日のログを見るhnsアクセスログ・ビューワーハイパー日記システム支援マクロxyzzyで日記を書くhnfEditor(ハイパー日記システム簡易エディタ)

このページはハイパー日記システムpnamazuを使う方法を説明しています。具体的にはWindows環境で日記システムのファイル(hnfファイル)から日記用Namazuのインデックスを作る方法です。

ハイパー日記システムは大変使い勝手のいい日記ソフトです(こんな感じ→映画とネットのDIARY)。インストールもそれほど難しくありません。インストールはシェルを開放しているプロバイダが望ましいのですが、シェルが不要なhns-liteもリリースされています。ただし、日記検索にはNamazuのインストールが必要です。正規版NamazuはUNIX初心者には少し敷居が高いですし、プロバイダがNamazuのインストールを許可しない場合もあるようです。そこでNamazuのPerl版検索スクリプトであるpnamazuを使います。

以下はローカルにNamazu for Win32が標準インストール(C:\namazuにインストール)されていることを前提に話を進めます。インストールしていない人は「Namazu(Perl版)設置ノウハウ」を参考にインストールしてください。

hnfファイルは拡張子が.hnfで、普通にNamazuでインデックスを作成しようとしてもできません。mknmzに-aオプションを付けて実行すれば、インデックスの作成自体はできますが、検索結果のリンクがうまくいきません。UNIX用に用意されているnamazu for hnsもそのままではWindowsで使えません。

しかしnamazu for hnsのファイル自体は必要になります。HyperNikkiSystem Project リリースファイル・リストからダウンロードしてください。tar.gzで圧縮されていますから、解凍します。この中で日記用Namazuのインデックスを作るのに必要なのはtemplateフォルダにあるtemplateファイル(NMZ.head.jaなど)とhnf.plです。

templateファイルは適当なフォルダ(C:\namazu2\templateなど)にコピーします。hnf.plはNamazuの文書フィルタのフォルダであるC:\namazu\share\namazu\plにコピーします。

これと日記用Namazuのmknmzrcが必要です。これはNamazu for win32のmknmzrc-sample.win32(C:\namazu\etc\namazuにあります)が使えます。mknmzrc.win32にリネームし、適当なフォルダにコピーしてください(C:\namazu2など。namazu for win32のインストール先とは別のフォルダにした方がいいでしょう)。続いて日記用に必要事項を書き換えます。書き換え例→mknmzrc.win32.txt(これをmknmzrc.win32にリネームして書き換えてもけっこうです)。

日記のhnfファイルはダウンロードしてC:\diaryフォルダに入れておきます。フォルダは以下のような構成になります。

C:\
 ┗namazu(Namazu for win32)
 ┃ ┣share
 ┃ ┃┗namazu
 ┃ ┃  ┗pl(hnf.pl)
 ┃ ┗var
 ┃  ┗namazu
 ┃    ┗index
 ┃      ┗diary(インデックス出力先)
 ┗namazu2(mknmzrc.win32)
 ┃ ┗template(テンプレートファイル=NMZ.head.jaなど)
 ┗diary
   ┣2000(2000年の日記ファイル)
   ┣2001(2001年の日記ファイル)
   ┣2002(2002年の日記ファイル)
   ┣2003(2003年の日記ファイル)
   ┗2004(2004年の日記ファイル)

これで準備OK。mknmzにオプションを付けて実行すると、インデックスが作成されます。

mknmz -O C:\namazu\var\namazu\index\diary --include=C:\namazu2\mknmzrc.win32 --media-type=text/hnf --template-dir=C:\namazu2\template C:\diary

C:\namazu\var\namazu\index\diaryにインデックスファイルができていることを確認してください。-Oオプションはインデックスの出力先フォルダの指定、--includeオプションはカスタマイズ用ファイルを読み込む指定、--media-typeは対象ファイルの文書形式の指定、--template-dirは日記用Namazuのテンプレートファイルの場所を指定しています。

出来上がったインデックスファイルを適当なフォルダに入れ、サーバーにバイナリモードでアップロードします。続いてpnamazu.cgiをnamazu.cgiにリネームし、Perlのパスを書き換えた後、同じフォルダにアップロード。ブラウザからnamazu.cgiにアクセスして日記検索ができることを確認してください。.namazurc(Namazuの設定ファイル)は、インデックスファイルの場所とLang、検索キーワード表示の部分のみ下記のように有効にして、同じフォルダにアップロードしてください。Replaceの記述は必要ありませんので#でコメントアウトします。

Index /home/foo/public_html/namazu
Lang ja_JP.SJIS
#Replace /home/foo/public_html/ http://www.foobar.jp/~foo/
EmphasisTags "<strong class=\"keyword\">" "</strong>"

あとはハイパー日記システムの設定ファイルconfig.phの79〜80行目をnamazu.cgiのURIなどに書き換え、Namazuが使えるようにします。

$UnagiUse = "ON";
$UnagiURL = "http://www.bar.ne.jp/~hoge/namazu/namazu.cgi";

日記にNamazuの検索フォームが表示されていると思いますから、そこで検索してみてください。

【設置例】
pnamazu
Namazu2.0.14

ついでにバッチファイルも作ってしまいましょう。デスクトップなどにショートカットを置いておくと、クリックするだけでインデックスが作成されるので便利です。以下の要領で書くか、コピーしてエディタに貼り付け、例えばdiary.batなど拡張子.batの名前で保存してください。保存先はC:\Windows\system(Win2000の場合はC:\WinNT\system32)です。

perl C:\namazu\bin\mknmz -O C:\namazu\var\namazu\index\diary --include=C:\namazu2\mknmzrc.win32 --media-type=text/hnf --template-dir=C:\namazu2\template C:\diary

Windowsでハイパー日記システム用Namazuのインデックスファイルを作る利点はいくつかあります。まず、個人のパソコンのCPUが十分に高機能となり、多人数が共用しているプロバイダのサーバーのCPUより処理が速いこと。次にサーバーのインデックスファイルが壊れてもローカルで簡単に作り直せること。共用サーバーの場合、他の人に迷惑をかけないこと。それと、最初に書いたように正規版Namazuをサーバーにインストールしなくても検索できることです。
 インデックスファイルのアップロードは面倒ですが、ADSLやFTTHなどのブロードバンドを利用している人なら、Namazuのインデックスファイルが数MBになってもアップロードはすぐに終わるでしょう(ISDNでは数分かかります)。
 星野アンテナを見ると、ハイパー日記システムのユーザーでまだNamazuを使っていない方も多いようです。このページが少しでもお役に立てればと思います。

以上の手順はnamazu for hns-2.0-pl3のhns-index2.inファイルを参考にしました。何か間違いがあったらご指摘いただけると、幸いです。(MAIL to:hiro)


以下は、おまけです(^^ゞ。

HNSログカッター(hns_logcut.cgi)

ハイパー日記システムはさまざまなログを残します。日記を設置したばかりの頃、FTPからmailログを見たら800KBにもなっていて驚きました。放っておくと、ログはどんどん肥大化し、ディスク(ホームページ容量)を圧迫する要因になります。また、アクセスログを見る際にも私が利用している「さくらインターネット」では、ログサイズが300KBほどになると、サーバーエラーを起こしてしまいます(今はサーバーの強化とhnsのlog.cgiの改善で数MBになっても大丈夫です)。

そこでブラウザからログサイズの確認ができるスクリプトを書いてみました。サイズ確認のほか、ログ削除機能もあります。パスワード処理もしていますが、初歩的な処理ですので破られる可能性がないとは言えません。悪意の第三者からアクセスされると、勝手にログを削除される恐れがあることはご了承ください。ま、いずれは自分で削除するログですので大したことはありませんが。
 Cookie処理は行っていませんので、毎回パスワードを入力する必要があります()。パスワードは8文字以上の英数字の組み合わせにしましょう。スクリプトの名前は変えてもらって構いません。

サンプル(ログの削除はできません)。

下のリンクにスクリプトを置きますが、ご利用は自己責任でお願いします。このスクリプトの利用によるいかなる損害も私(hiro)は責任を負いません。

スクリプト(必ずEUCコードで保存し、拡張子.txtを.cgiに変更してください)。

設置場所はCGIが実行でき、ブラウザでアクセスできるところならどこでもけっこうです(適切にパスの設定を行ってください)。admini.cgi(日記管理者用ページ)と同じフォルダがいいでしょう。他のフォルダに入れる場合は空のindex.htmlを置き、内容を見られないようにしてください。
 スクリプトはアスキーモードで転送し、パーミッションを755にしてください。admini.cgiからリンクしておくと便利です。46行目あたりからHTML出力部分があります。

<h2>日記管理用ツール</h2>
<dl>
<dt><a href="log.cgi">ログ解析</a> (log.cgi)
<dd>日記のアクセス・ログ解析レポートを表示します。
<a href="./log.cgi?$today">本日分のみ</a>
 <a href = "hns_logcut.cgi">ログカッター</a>  ←ここを書き加える

バグや改善のアドバイスなどありましたら、ご連絡ください。


:hns_logcut.cgiに引数を付けて呼び出せば、パスワード入力画面を省略できます。

http://www.foo.bar.ne.jp/~hoge/diary/hns_logcut.cgi?pass=pass1234

URIとパスワードpass1234をあなたの設定に変えてください。また、この場合、スクリプトの名前自体も変えた方が安全かもしれません。変える際はスクリプトの設定項目の最初にある

#このスクリプトの名前。
$script = 'hns_logcut.cgi';

も忘れずに変えてください。

※重要な注意
 上の方式でHNSログカッターのページから他の(自分のサイト以外の)ページにジャンプすることは絶対にしてはいけません。そのサイトがアクセスログを取っている場合、HTTP_REFERERからパスワードが知られてしまいます。


Tips:昨日のログを見る

HNSログカッターを作ったのはアクセスログのサイズが大きくなった場合にサーバーエラーを起こすことがあるからです。hnsのlog.cgiは詳細な表示をするので、出力の際に負荷が大きくなるのでしょう。1日分のログの出力なら負荷は小さく、エラーは起こりにくくなります。
 log.cgiはブラウザで見たいログの日を指定すれば見ることができます。本日分を見る際のURLは以下のようになっています。

http://www.foo.bar.ne.jp/~hoge/diary/log.cgi?2002/02/27

昨日のアクセスログを見るには一番最後に2002/02/26のようにブラウザのURLに指定します。いちいち入力するのは面倒なので、admini.cgiに昨日のログが見られるようリンクを張っておきましょう。

admini.cgiの39行目
my $today = sprintf("%04d/%02d/%02d",
        (localtime)[5]+1900,(localtime)[4]+1,(localtime)[3]);
この下に、以下を付け加える。
my ($year, $mon, $mday) = (localtime(time - 24*60*60))[5,4,3];
my $yesterday = sprintf("%04d/%02d/%02d",
        $year+1900,$mon+1,$mday);

以上が昨日の日付、つまり2002/02/26のような日付を生成するスクリプト。で、admini.cgiにリンクを書き加えます。

<h2>日記管理用ツール</h2>
<dl>
<dt><a href="log.cgi">ログ解析</a> (log.cgi)
<dd>日記のアクセス・ログ解析レポートを表示します。
<a href="./log.cgi?$today">本日分のみ</a>
 <a href="./log.cgi?$yesterday">昨日の分のみ</a>←この行を書き加える

admini.cgiにアクセスして「昨日の分のみ」をクリックすると昨日のアクセスログを見ることができます。

※hnsスナップショット(http://www.h14m.org/dist/snapshot/)の2002/02/26以降のバージョンでは昨日のログが見られるようadmini.cgiにリンクが張られています。上のような改造をしなくても、このファイルだけ差し替えればOKです。hns-2.20\tools\admini\admini.cgi.inをadmini.cgiにリネームしてPerlのパスを書けば使えます。


hnsアクセスログ・ビューワー(hns_logview.cgi)

昨日のログだけではまだ不便なので、ついでに日付を指定してログを見るPerlスクリプトを書いてみました。拡張子.txtを.cgiに変えて使ってみてください。EUCコードで保存のこと。もちろん、設置は自己責任で。スクリプトの名前は好きなものに変えてもらって結構です。

サンプル(HTMLファイルですのでログは見られません)

hnsアクセスログ・ビューワー(hns_logview.txt)

設置場所は/home/hoge/public_html/diaryフォルダがベストでしょうが、CGIが実行できるならどこでも構いません。日記とは別のサーバーでも可。スクリプトの処理の都合で、log.cgiの場所はどこに置いても必ずURLで指定する必要があります。

こういうスクリプトは公開して使うものではないでしょうから(第一、log.cgiはCookie処理でアクセス制限が可能なので、他人には見られないでしょう)、エラー処理はそれほど細かく設定していません。
 指定する日付は半角数字で入力するようにしてください。
 例えば、3月3日のログを見る場合には3と3か、03と03を入力します(どちらでもいいです)。
 言うまでもありませんが、ログのない日を指定しても無意味です(log.cgiが困るだけです)。


ハイパー日記システム支援マクロ(hnf作成秀丸マクロ)

ハイパー日記システム(hns)のファイルはd20030627.hnfなど年月日を含むファイルですが、エディタで日記を書く場合、これをいちいち入力するのは面倒です。で、Windows定番のエディタ秀丸で日記を書くためのマクロを書いてみました。使用する前に設定が必要です。

【概要】

hnf.macを起動すると、「日記作成」「hnsコマンドメニュー」「ファイル転送」「日記検索」「日記フォルダを開く」「日付を指定して日記作成」「年を指定せずに日記作成」「終了」の8つのメニューが出てきます(日記フォルダがない場合は作成するかどうかのダイアログが出ます)。
 「日記作成」は指定のフォルダにその日の日記ファイルがあるかどうかを調べ、なかった場合はファイルの新規作成か日記フォルダを開くかの問い合わせダイアログを出します。イエスを選ぶと、d20030627.hnfなどの形式で名前を付けたファイルを新規作成し、OKとNEWを記入した秀丸を起動します。ノーを選ぶと、日記フォルダを開くかどうかのダイアログを出します。
 その日の日記ファイルがあった場合はファイルを開くかどうかのダイアログを出し、ノーを選ぶと日記フォルダを開くかどうかのダイアログを出します。
 「hnsコマンドメニュー」はハイパー日記システムのコマンドのうち、よく使うと思われる11種類のコマンドを挿入できます。閉じタグの必要なものは閉じタグを挿入します。LNEWとLINKコマンドについてはブラウザで開いているページのURLとタイトルを取得して

LNEW http://www.h14m.org/ Hyper NIKKI System Project
LINK http://www.h14m.org/ Hyper NIKKI System Project

の形式で挿入します(ver.1.21からの新機能)。IEとSleipnir、Mozilla、Mozilla Firebirdに対応していますが、IEとMozilla、Mozilla Firebirdは日本語タイトルの場合、文字が化けたりしてうまく挿入できません。これは多分、IEとMozillaの方のバグだと思います。
 「ファイル転送」は編集中の日記ファイルを保存した後、Windows標準のftp.exeを使ってファイルをアップロードします。
 「日記検索」は日記フォルダにgrepをかけます。
 「日記ディレクトリを開く」は日記ファイルの保存先ディレクトリを開きます。
 「日付を指定して日記作成」は書きたい日記の日付を指定して日記ファイルを生成します。
 「年を指定せずに日記作成」は日記フォルダ(デフォルトではC:\diary)にd00000000.hnfというファイルを作成します。下書き用途を考えて追加しました。日記に使うには手動でd20030627.hnfなどのファイル名に書き換えて、年ごとのフォルダ(C:\diary\2003など)に入れるか、文面をその日の日記にコピーする必要があります。
 「終了」は何もせずにマクロを終了します。

最新版スクリプト(ver.1.31)はhnf.mac.txtにあります。sjisで保存してhnf.macなど拡張子を.macに変えてください。hnf.macは秀丸のインストール先に入れるか、指定のマクロフォルダに入れ、マクロ登録すれば動きます。
 スクリプトと説明書を加えたzipファイル(hnfmac131.zip)もあります。秀丸エディタのマクロライブラリからもダウンロードできますが、バージョンが古いです。

作成環境は秀丸ver.3.19。Windows2000とXP、98で動作確認しました。

【設定】

使う前に設定が必要です。

1. OSの選択
WindowsXPと2000の場合は1を記入。WindowsMe、98、95の場合は0。

$win = "1";

2. 日記フォルダ(hnfファイル保存フォルダ)の指定
 秀丸のマクロは\がエスケープ文字になりますから、hnfファイルの保存フォルダがC:\Diaryの場合は、

$hnfdir = "c:\\diary";
のように\を2つ書いてください。

 フォルダは以下のような構成を想定しています。

 C:\
 ┗diary(日記フォルダ)
   ┣2003(2003年の日記ファイルを入れたフォルダ)
   ┣2002(2002年の日記ファイルを入れたフォルダ)
   ┣2001(2001年の日記ファイルを入れたフォルダ)
   ┗2000(2000年の日記ファイルを入れたフォルダ)

diary以下の2003(今年の日記フォルダ)は自動生成します。

3. 接続するサーバー

$server = "foo.bar.ne.jp";

日記のあるサーバーの指定。

4. ユーザー名

$user="hoge"

サーバーにログインするためのユーザー名。

5. パスワード

$passwd="barbar";

ログインに必要なパスワード。

6. アップロードするサーバーの日記ディレクトリ

$ftpdir ="/home/hoge/diary";

日記ファイルを置くサーバーのディレクトリ。

7. その日の日記を翌日の何時までにするかの設定

#sethour=1;

午前1時までの場合は半角数字で1を記入。午前4時までなら4。午前0時以降は翌日の日記を作成したい場合は0。

【注意事項】

hns標準ユーザー変数を記入してファイルを新規作成する場合は一番最後の日記テンプレートサブルーチンを書き換えてください。先頭の//を削除すると、有効になります(//は秀丸マクロではコメント文字になります)。TENKI,TAIJU,SUIMINのみ書いてありますが、ほかに付け加えたい場合は

insert "TENKI\n";
の形式で書いてください。

※hnsのコマンドはhttp://www.h14m.org/docs/hnf-j.htmlを参照してください。
 なお、このマクロを使用したことで、どんな損害があっても当方では関知しません。自己責任でご使用ください。


秀丸でFTPするマクロ(ftp.mac)

hnf.macからFTP機能だけを抽出したマクロです。これを使うと日記だけでなく、普通のファイルのアップロードができます。アップロードするだけでダウンロードはできません。詳しい説明はZIPファイルの中にあります。

ダウンロード(ftp.mac ver.0.2)

xyzzyで日記を書く

シェアウェアの秀丸に4,000円も払うのはもったいないという人にはxyzzyをお勧めします。xyzzyはフリーのエディタですが、Lispの知識があれば、秀丸以上にカスタマイズが可能です。便利なLispプログラムも多数公開されています。LinuxなどUNIX系OSでEmacsに慣れた人やプログラミングをしている人に大変評価の高いエディタです。

xyzzyにFTP機能を追加するにはFTP自動更新アップロードマクロ のftpupdate.lを使います。インストール方法などはreadme.txtに詳しく書かれていますので、省略しますが、私が日記を書くのに設定している~/.xyzzyはこんな感じです。

;F1キーでFTP一発転送
(global-set-key #\F1 'ftpupdate-this-file)
;ftpupdateの設定
(autoload 'ftpupdate "ftpupdate" t)
(autoload 'ftpupdate-this-file "ftpupdate" t)
(autoload 'ftpupdate-all "ftpupdate" t)
(autoload 'ftpupdate-update-time "ftpupdate" t)
; アップロードするサーバ
(setq *ftpupdate-server* "yomogi.sakura.ne.jp")
; ユーザー名
(setq *ftpupdate-user* "hiro")
; パスワード
(setq *ftpupdate-pass* "hogehoge")
; サーバーのアップロードする基準のトップディレクトリ
(setq *ftpupdate-remote-path* "/home/hiro/diary")
; ローカルのアップロードする基準のトップディレクトリ
(setq *ftpupdate-local-path* "C:/diary")

上の設定で、日記ファイルを保存した後、F1キーを押すと、瞬時に日記更新が完了します。また、キーボードマクロを保存しておけば、OKやNEWを挿入することも簡単になります。xyzzyにはファイラ機能もありますが、

;ファイラのデフォルトディレクトリ
(setq *filer-primary-directory* "C:/diary")

としておくと、ファイラのデフォルトのディレクトリを日記ディレクトリにできます。ちなみに秀丸で編集中のファイルは以下のようなマクロでxyzzyに渡せます。

//xyzzyのインストール先
$xyzzy = "c:\\xyzzy\\xyzzy.exe";
if(filename==""){
    endmacro;
    }else{
save;
run $xyzzy + " " + basename;
    if( !result ) {
    message "xyzzyのパスが違います!
    \n設定を確認してください。";
    endmacro;
    }
}
endmacro;

xyzzyは秀丸に比べて敷居が高いですが、使い込むほどに良さが分かるエディタだと思います。


hnfEditor(ハイパー日記システム簡易エディタ)

秀丸はシェアウェアだし、xyzzyは設定などが難しいという人向けに日記ファイル専用のエディタを作ってみました。hnsのコマンド挿入とFTPの機能があります。日記ファイルはすべて文字コードEUC、改行コードLFで保存されます。これまでに日記をSJISで書いている人には向きません。

hnfEditorは日本語プログラム言語「ひまわり」で作成してあります。もちろん無料で、無保証です。動作確認はWindowsXPでしか取っていません。使用は自己責任で。サポートもしませんが、バグはできる限り修正します。バグを見つけられた方はhiroまでメールをいただけると、幸いです。

スクリーンショット

Readme.txt

ダウンロード(hnfEditor.zip)1.01MB バージョン0.3


[TOP][NEXT]