コースター・なまず2007年04月24日 11時28分42秒

コースター・なまず
コースター・なまず


  • サイズ:11×11センチ 
  • 生平麻2枚合わせ
  • 価格 500円 (税込 525 円) 送料別

[mixi] Namazu 友の会2007年04月26日 04時15分48秒

ナマズの画像

そういえば、mixi に Namazu のコミュニティがあったので紹介しておきます。

「Namazu 友の会」 http://mixi.jp/view_community.pl?id=113840

管理人は「シだモん」さん。

ちなみに、コミュニティの画像は、私のナマズの画像が使われています。


mixi(ミクシィ)はソーシャルネットワーキングのサイト(SNS)の一つ。

日記(ブログ)機能があり、写真掲載や、自分や他人の日記にコメントを付けたり付けられたりできます。あしあと機能があり、自分のページにいつ誰がきたかをチェックすることが可能です。

また、趣味等の共通項を持つ人の集まりである「コミュニティ」に参加することが可能です。 「Namazu 友の会」は「コミュニティ」のひとつです。

mixiでは、直接の友人・知人をマイミクシィとして登録することができ、日記の更新やコミュニティの記事の更新等を簡単にチェックすることができます。

mixiは無料で利用することができますが、mixiに登録するためには、既に登録している人からメールで招待状を受け取らなければなりません。 まだ登録されていない方は、友人、知人に招待してもらいましょう。

Search-Namazu を用いた CGI (その1)2007年04月26日 11時15分27秒

Search-Namazu の使用例として、簡易な検索用CGI を作ってみました。

このCGIはあくまでもSearch-Namazu の使用例として作ったものなので、実用的ではありませんが、これをベースにいろいろ機能追加していけば本格的な検索用CGIを作ることは可能でしょう。

  • $index にインデックスの場所を指定してください。
  • 検索結果は、スコア順に上位20件が表示されます。
  • このCGIは最小限の検索機能しかありません。
#!/usr/bin/perl -w

require 5.004;
use strict;
use CGI;
use Search::Namazu 0.96;
use NKF 2.06;

my $VERSION = 0.01;

#
# param
#

my $index = '/usr/local/var/namazu/index';

my $max = 20;

#
#
#
sub print_foot();

my $query = new CGI;

my @nkf_opt_internal = ("-emXZ1");

delete $ENV{'LANGUAGE'};
delete $ENV{'LC_ALL'};
delete $ENV{'LC_MESSAGES'};
delete $ENV{'LC_CTYPE'};
delete $ENV{'LANG'};

my $q = '';
if (defined $query->param('query')) {
    $q = nkf(
        @nkf_opt_internal, 
        $query->param('query')
    );
}

print $query->header(
    -type => 'text/html',
    -charset => 'EUC-JP'
);

print $query->start_html(
    -lang => 'ja',
    -encoding => 'EUC-JP',
    -title => 'Namazu',
    -bgcolor => '#FFFFFF',
);

my @hlists =
    Search::Namazu::Search(
        index => $index,
        query => $q,
        sortMethod => NMZ_SORTBYSCORE,
        sortOrder => NMZ_DESCENDSORT,
        lang => 'ja_JP.eucjp',
    );

if ($#hlists == 0 && !ref($hlists[0])) {
    print "Error: $hlists[0]\n";
    print_foot();
    exit 1;
}

my $docs = $#hlists + 1;

print <<EOF;
<form method="get" action="/cgi-bin/nmz.cgi">
<input type="text" name="query" value="">
<input type="submit" name="" value="Search!">
</form>

<p>
Total $docs documents matching your query.
<br >
</p>
EOF

print "<dl>\n";

my $n = 1;
foreach my $hlist (@hlists) {
    next if (!defined($hlist));

    my $date = localtime($hlist->date);

    printf("<dt>%d. %s (score: %d)", 
        $n, $hlist->title, $hlist->score);
    printf(" (rank: %d)</dt><br >\n", $hlist->rank);
    printf("<dd>\n");
    printf("Author: %s<br >\n", $hlist->author);
    printf("Date: %s<br >\n", $date);
    printf("%s<br >\n", $hlist->summary);
    printf("%s<br >\n", $hlist->uri);
    printf("</dd>\n");
    print "<br >\n";

    last if ($n == $max);
    $n++;
}
print "</dl>\n";

print_foot();

sub print_foot()
{
    print <<EOF;
<hr >
<div align="right">powered by Namazu</div>
EOF

    print $query->end_html;
}

Namazu 2.0.X のインデックスの種類2007年04月28日 21時31分07秒

Namazu 2.0.X のインデックスは大きく分けると次の3種類に分類できます。

  • A. 日本語インデックス (EUC-JP で構成)
  • B. 英語インデックス (US_ASCII のみで構成されたもの)
    • 日本語インデックスの下位互換。
  • C. イリーガルインデックス
    • ISO-8859-1 文字を含むインデックス。
    • 日本語インデックスと互換性がない。未サポート。
    • 現在の 2.3.X の UTF-8 インデックスとは皮肉なことに後方互換となっているが、2.3.X のインデックス形式は将来変更される可能があります。

A は日本語の文書を日本語で言語処理を行ってインデックスを作成したもの。

B は英語(US_ASCII)の文書からインデックスを作成したもの。

C は英語(ISO-8859-1)の文書を日本語以外(英語を含むISO-8859-1の言語)で言語処理を行ってインデックスを作成したもの。

  • 日本語インデックスを用いて検索結果を表示するには、メッセージの表示言語は日本語でなければなりません。(漢字コードについては制限があります。)
  • 英語インデックスを用いて検索結果を表示する場合は、メッセージの表示言語に制限はありません。(デフォルトでサポートしていない言語については、テンプレートおよびメッセージカタログを用意する必要はあります。)
  • イリーガルインデックスを用いて検索結果を表示するには、メッセージの表示言語はISO-8859-1の言語でなければなりません。日本語はISO-8859-1ではありませんので、日本語を選択することはできません。

namazu.cgi におけるメッセージ表示言語の切替機能2007年04月28日 22時52分56秒

namazu.cgi では、検索ページの input タグの lang (CGI変数のlang)により、メッセージ表示言語の切替を可能とする機能があります。

この機能を利用する条件としては、

  • MESSAGES関係の環境変数が未設定であること。 (LANGUAGE, LC_ALL, LC_MESSAGES, LANG)

MacOS X + gettext 0.14.2 以降の場合は、OS の言語環境が未設定であること。(デフォルトで何か設定されている場合は、切替機能を利用することはできいないことになります。)

  • 英語インデックスを使用すること。

となります。

切り替える言語は何でも構いません。(文字コード(エンコード)には制限あり)

  • 英語インデックスを用いて検索結果を表示する場合は、メッセージの表示言語に制限はありません。(デフォルトでサポートしていない言語については、テンプレートおよびメッセージカタログを用意する必要はあります。)
  • イリーガルインデックスを用いて検索結果を表示するには、メッセージの表示言語はISO-8859-1の言語でなければなりません。日本語はISO-8859-1ではありませんので、日本語を選択することはできません。
  • 日本語インデックスを用いて検索結果を表示するには、メッセージの表示言語は日本語でなければなりません。(漢字コードについては制限があります。) つまり、メッセージ表示言語の切替機能を使うことはできません。

これはインデックスに含まれる文字をサポートする言語でなければ、メッセージ表示言語として選択できないためです。

以上のことから、メッセージ表示言語切替機能の主な用途として次のものがあります。 RFC や英文のニュース、メーリングリスト等の英文ドキュメントを検索するシステムで、インターフェイス部分は多数の言語をサポートし、利用者がメッセージ表示言語を選択できるシステム。

備考)

  • メッセージ表示切替機能を利用する目的以外で input タグの lang を使う必要はありません。
  • 固定のメッセージ表示言語を指定する目的には、環境変数か、.namazurc の Lang を使用してください。

全部読める!? 魚文字~手ぬぐい2007年04月29日 08時01分11秒

魚文字~手ぬぐい
魚文字~手ぬぐい

こんなん見つけました。魚へんの漢字の手ぬぐい。
ここで問題です。
この中で「なまず」はどこにあるでしょう。

_purification_lang() バグ修正2007年04月29日 12時43分47秒

_purification_lang() のチェックが厳しすぎて、LANG等の環境変数に数字を含めることができませんでした。

2文字目以降数字を許可するように修正しました。

例) "ja_JP.ISO2022JP" をセットして nmz_get_lang() で取り出すと "ja_JP.ISO" となっていました。