04年
9月
からの





漢數字アクセス・カウンタ

ここでは、《三國演義》に使用した「漢數字アクセス・カウンタ」をご紹介します。

能書き

使い方(基本)

そいでもって「使って見よう」という勇気のある御仁は、以下のようにしてね。
  1. 事前準備として、あなたが契約しているプロバに以下のポイントを確認:
  2. Perlプログラム・ソースを名前をつけて保存。 拡張子は「.txt」になっていますが、気にしないでください。 一応、このソースの日本語は「Shift JIS」で改行コードは「LFのみ」です。
  3. 保存したPerlプログラム・ソースを編集。 編集箇所は全て半角英数字を使います(全角文字は絶対不可)。
    Perlプログラム・ソースの編集はこれで全部です。
  4. 編集後のPerlプログラム・ソースを、1.で確認したプロバ指定のCGIフォルダにFTPします。 この時、FTP後のファイル属性がモード755(またはrwxr-xr-x)になるように設定しときます。 それ以外に、拡張子などプロバが指定しているCGIの約束事がある時はそれに従ってください。
  5. FTPするついでに、CGIフォルダにサブ・フォルダ「accesses」を作成しておきます。 サブ・フォルダのフォルダ属性がモード777(またはrwxrwxrwx)になるように設定を忘れずに。
    なお、このサブ・フォルダが無くても動作するかも知れませんが、その場合カウント結果ファイルなどでCGIフォルダがとり散らかるので、やっぱり作っておいた方が吉です。
  6. 今度はカウント対象のHTML文書の編集です。 HTML文書の中で、アクセス・カウンタを貼り付けたい場所に、
    <SCRIPT TYPE="text/javascript" SRC="1.で確認したCGIのURL"></SCRIPT>
    
    を入れます。 見栄えが良くなるように、外側を「<DIV>」や「<SPAN>」で囲んでスタイル・シートで飾り付けます。
  7. 編集後のHTML文書をアップロードします。 これで準備完了です。 文書を開いて、 結果を確認してみてください。

トラブル・シュート

ウンともスンとも言わないときは、アクセス・カウンタのURL(1.で確認したCGIのURL)をブラウザから手打ちし、次のようなエラーにならないか確かめてください:
HTTP 404 「ページが見つかりません」
プロバ指定のCGIフォルダに正しくFTPできていますか? また、そのファイル属性がモード755になっていますか? その他CGIの約束事にちゃんと合っていますか?
HTTP 500 「Internal Server Error」または「内部エラー」
Perlプログラム・ソースの編集はちゃんと出来ていますか? 間違って全角文字を使っていませんか? ソースの内容が完璧でも、改行コードが「CR+LF」になっているとこのエラーが起こることがあります。 お使いのFTPツールに改行コード変換機能がある場合は、「LFのみ」変換をしてからもう一度試してみてください。
また、カウント結果ではなくエラー・メッセージが出ている時は、それぞれ次のような点を再確認してみてください:
「不正な参照元です」
Perlプログラム・ソースの参照元リストの配列「@Referer」と、カウント対象文書のURLが正しく対応していますか?
「ファイルに書けません」
CGIフォルダにサブ・フォルダ「accesses」を作りましたか? また、そのフォルダ属性がモード777になっていますか?

高度な使い方

自端末からのアクセスをカウントから除外する

  1. 最初に、カウント対象のHTML文書中のアクセス・カウンタ参照部分のURLに「?x」を加えてアップロード。
    <SCRIPT TYPE="text/javascript" SRC="1.で確認したCGIのURL?x"> …
    
  2. 次に、使用中のブラウザがクッキーを受け付ける設定になっていることを確認してから、アクセス・カウンタのURL(1.で確認したCGIのURL)に「?x-cookie」を付けたものをブラウザから手打ちします。 アクセス・カウンタから「クッキーを発行しました」というメッセージが返ってきたら、ブラウザへのクッキーの植え付けは完了。
  3. これ以降、何度リロードしてもカウンタがアップしないことを確認。

「祝」文字のスタイルを変える

そのままだと百アクセス毎の「祝」文字も漢数字と同じスタイルになってしまいます。 「祝」文字だけスタイルを変えて目立たせたくなった時のために、「<SPAN>」で囲んで出力されています。 つまり、
<SPAN CLASS="kaccessCongrat">祝</SPAN>カウント結果
という風になっているので、この「SPAN.kaccessCongrat」に対してスタイルを定義してやればOKです。

漢数字をイメージで出力する

通常は、カウント結果の漢数字は「&#」シーケンスを使用した文字出力となります。 出力される漢字は全部で「零一二三四五六七八九十百千萬億祝」の16種です。 これを「<IMG>」要素や別の漢字(例えば「〇壱弐参四五六七八九拾…」)に置き換えて表示させることができます。 そのやり方は、
  1. 最初に、カウント対象のHTML文書中のアクセス・カウンタ参照部分より前で、JavaScript配列変数(要素数16)を定義しておきます。
    <SCRIPT TYPE="text/javascript">
    var kdigit = new Array(16)
    kdigit[0]  = '<IMG SRC="0.gif">'	// 零
    kdigit[1]  = '<IMG SRC="1.gif">'	// 一
    kdigit[2]  = '<IMG SRC="2.gif">'	// 二
    kdigit[3]  = '<IMG SRC="3.gif">'	// 三
    kdigit[4]  = '<IMG SRC="4.gif">'	// 四
    kdigit[5]  = '<IMG SRC="5.gif">'	// 五
    kdigit[6]  = '<IMG SRC="6.gif">'	// 六
    kdigit[7]  = '<IMG SRC="7.gif">'	// 七
    kdigit[8]  = '<IMG SRC="8.gif">'	// 八
    kdigit[9]  = '<IMG SRC="9.gif">'	// 九
    kdigit[10] = '<IMG SRC="j.gif">'	// 十
    kdigit[11] = '<IMG SRC="h.gif">'	// 百
    kdigit[12] = '<IMG SRC="s.gif">'	// 千
    kdigit[13] = '<IMG SRC="m.gif">'	// 萬
    kdigit[14] = '<IMG SRC="o.gif">'	// 億
    kdigit[15] = '<IMG SRC="i.gif">'	// 祝
    </SCRIPT>
    
    配列変数名(ここでは「kdigit」)は、他のJavaScript変数と重複さえしなければ何でも構いません。 但し、16個の要素全てに値を設定しなければなりません。 面倒ですが、「祝」文字だけ変えるとかはできません…
  2. 次に、アクセス・カウンタ参照部分のURLに「?a=配列変数名」を加えます。
    <SCRIPT TYPE="text/javascript" SRC="1.で確認したCGIのURL?a=kdigit"> …
    
    これでアップロードし、結果を確認します。
  3. 配列変数の値をそのまま出力するだけなので、「<IMG>」の他、何でも出力できます。

その他

その他にもいくつか機能がありますが、Perlの分かる方はソースを色々調べて、何となれば自由に書き換えてみてください。 サブルーチンkNumeric自体を書き換えてローマ数字を出す、なんてのも面白いかもしれません。

最後に

これはPDSです。 一切の権利も責任も放棄します。 であるからして、動かなかったり、何か変な動きをしても、作成者は一切知りません。 悪しからず。

更新日時:
安樂侯・軟體大都督 坂口丈幸