futomi's CGI Cafe

RevoCounter (アニメーションカウンター) Ver 1.3

カウントアップする際に、数字がぐるりと回るカウンターです。i-modeにも対応! Perlで作成されたカウンターで、CGIとして動作します。このサイトのトップページにも使っています。カウンターのイメージはBitmapで簡単に作れますので、あなただけのカウンターも作れます!

i-modeのサンプルは、http://www.futomi.com/i/revo.html でご覧いただけます。



■ 特徴
  • カウントアップするときに、数字が前の数字から新しい数字に、ぐるっと回転するアニメーションをします。
  • i-modeにも対応
  • アニメーションの速さを指定できます。
  • カウンターのイメージは、256色のビットマップで、簡単に自由に作成できます。
  • Cookieにより、同じ人がブラウザーで再読込みしたり、他のページから戻ってきたとしても、カウントアップしないように設定できます。
  • カウンターはアニメーションGIFで出力しますが、UNISYS社が特許をとっているLZW圧縮を使っておりません。
  • 一つのCGI設置で、複数のページに別々にカウンターを設定することができます。
  • カウンターの桁は、自由に設定することができます。また、指定した桁をオーバーした場合、0からスタートするようにしたり、もしくは一桁増やしてカウントアップしつづけるようにもできます。
  • 透過色を設定することができます。
  • 他人がRevoCounterを使えないようにURLで制限するガード機能付き
  • P3P(The Platform for Privacy Preferences)1.0 のCompact Policies に対応。

※ アニメーションGIFに対応した機種に限ります。(209i, 502i 以上)

 


■ CGI利用規定の同意

CGI利用規定をご覧になり、同意した上で、ダウンロードしてください。


■ ファイルの一覧と機能

CGIをダウンロードし、解凍してください。それぞれのファイルについて解説します。

ファイル名 転送モード パーミッション パーミッション2 ファイルの機能
 revocount/
変更不要 707 本CGI用ディレクトリ
 revocount.cgi
[ASCII] 704 705 カウンターCGI(本体)
 revoconfig.cgi
[ASCII] 変更不要 変更不要 設定スクリプト
 data/
変更不要 707 カウンター値データ格納ディレクトリ
 default.dat
{ASCII] 変更不要 606 カウンター値データ(デフォルト用)
 base/
変更不要 変更不要 ベースイメージ格納ディレクトリ
 default.bmp
[BINARY] 変更不要 変更不要 ベースイメージ(デフォルト用)
 sample1.bmp
[BINARY] 変更不要 変更不要 ベースイメージ(サンプル)
 sample2.bmp
[BINARY] 変更不要 変更不要 ベースイメージ(サンプル)
 sample3.bmp
[BINARY] 変更不要 変更不要 ベースイメージ(サンプル)
 sample4.bmp
[BINARY] 変更不要 変更不要 ベースイメージ(サンプル)
 sample5.bmp
[BINARY] 変更不要 変更不要 ベースイメージ(サンプル)
 sample6.bmp
[BINARY] 変更不要 変更不要 ベースイメージ(サンプル)
 sample7.bmp
[BINARY] 変更不要 変更不要 ベースイメージ(サンプル)
 sample8.bmp
[BINARY] 変更不要 変更不要 ベースイメージ(サンプル)
 sample9.bmp
[BINARY] 変更不要 変更不要 ベースイメージ(サンプル)
 Readme/
ReadMe
HTML形式のReadMeファイルです。このホームページが入っています。このフォルダは、サーバへアップロードする必要がありません。

■ 転送先

フォルダ「revocount」を、転送モードも注意して、プロバイダー指定の場所にアップロードしてください。

■ パーミッション

これらパーミッションは、あくまでも例です。お使いのプロバイダー、レンタルサーバ業者の指示に従ってください。

上表には、パーミッションの指定が 2 種類指定しております。CGI がオーナー権限で実行されるサーバをお使いの場合には、パーミッション1の設定を使ってください。CGI が ohter 権限で実行されるサーバをお使いの場合には、パーミッション2の設定を使ってください。

CGI がオーナー権限で実行されるか、other 権限で実行されるかは、お使いのプロバイダーもしくはレンタルサーバ業者に確認してください。おおむね、CGI ファイルのパーミッションが、704 でも動作する場合には、オーナー権限で実行されると考えても結構です。CGI ファイルのパーミッションが、705 もしくは 707 でないと動作しない場合には、other 権限で実行されているとお考えください。

「変更不要」と指定しているファイルは、サーバにアップロードするだけで OK です。あえてパーミッションを変更しないでください。


■ Perlパスの編集

プロバイダーによって、Perlパスが異なります。デフォルトでは「#!/usr/local/bin/perl」と設定しております。プロバイダーの指示に従い、以下のファイルのPerlパスを書き換えてください。

  • revocount.cgi

■ 設定内容

お使いになる環境に合わせて、またお好みに合わせて、設定を変更してください。設定の変更は、すべて「revoconfig.cgi」を編集することにより実現します。

#----------------------------------------------------------------
# ● 表示桁数の設定
# 設定桁数にカウント値が満たない場合には、左から0が表示されます。
# たとえば、桁数設定が「6」で、カウント値が「1234」の場合には、
# 「001234」と表示されます。
#----------------------------------------------------------------

$Figures = 6;


#----------------------------------------------------------------
# ● 表示桁数固定・非固定の設定
# 表示桁数を、カウント値が超えた場合に、表示桁数を自動的に増やすか
# もしくは固定にするかを指定します。
# たとえば、表示桁数設定が「6」で、カウント値が「999999」から
# 「1000000」にアップする際に、
# 非固定であれば、「1000000」と7桁で表示され、
# 固定であれば、「000000」と6桁で表示されます。
# 非固定の場合には、「0」、固定の場合には、「1」を指定してください。
#----------------------------------------------------------------

$FiguresFixFlag = 0;


#----------------------------------------------------------------
# ● アニメーションの時間指定[ms]
# カウント値がアップする際の、アニメーションの時間を指定できます。
# ミリ秒単位で、指定してください。2秒の場合には、「200」と指定します。
# 【注意】ここでの指定はあくまでも目安です。通信速度やパソコンの
# スペックなどの諸条件により、指定どおりとはならない場合が
# ありえます。
#----------------------------------------------------------------

$AniTime = 200;


#----------------------------------------------------------------
# ● 透過色指定(16進数)
# アニメーションカウンターは、透過GIFにすることができます。
# 透過色を16進数(6桁)で指定してください。
# 【例】
# $TransparentColor = 'FFFFFF';
# 透過色を指定しない場合には、
# $TransparentColor = '';
#----------------------------------------------------------------

$TransparentColor = '';


#----------------------------------------------------------------
# ● Cookieによるカウントアップ防止機能(使わない:0, 使う:1)
# 同じ人がアクセスしたり、ブラウザーで再読込をしても、カウンター
# の値をアップしないようにできます。
# この防止機能を使わない場合には、「0」を
# 使う場合には、「1」を指定して下さい。
# 【注意】 ここの設定を有効にしても、Cookieを無効にしている
# ブラウザーに対しては、効きません。
#----------------------------------------------------------------

$CookieFlag = 1;


#----------------------------------------------------------------
# ● カウントしないガード時間
# 以前サイトにアクセスしてから、ここで指定したガード時間を超え
# ずに、再度アクセスした場合には、カウンター値がアップしません。
# 逆に、超えている場合には、カウンター値はアップします。
# この設定は、Cookieによるカウントアップ防止機能が有効になっている
# 場合に、有効となります。
# 単位は、時間です。
# $GuardTime = 6;
# と指定すれば、6時間を意味します。
#----------------------------------------------------------------

$GuardTime = 6;


#----------------------------------------------------------------
# ● URLガードフラグ(使わない:0, 使う:1)
# あなたが設定したこのCGIを、他人に勝手に使われないようにするため
# の機能です。
# この機能を無効にする場合には「0」を、有効にする場合には、「1」
# を指定して下さい。他人にカウンターを悪用されないためにも、有効に
# することをお勧めします。有効にした場合には、下の「あなたのホーム
# ページのURLを正しく設定してください。
# 【注意】この機能は、ブラウザーが送信する環境変数「HTTP_REFERER」
# を使います。したがって、「HTTP_REFERER」を送信しない
# クライアント(i-mode端末等)に対しては、カウンターが表示
# されなくなります。
#----------------------------------------------------------------

$UrlGuardFlag = 0;


#----------------------------------------------------------------
# ● あなたのホームページのURL
# URLガードフラグが有効になっている場合に、ここで指定したサイト
# からのみ、このCGIが動作するようになります。ここで指定したサイト
# 以外からは、このCGIが使えません。
# ここで指定したサイトの配下のページでは、すべてこのCGIを使うことが
# できます。
# たとえば、あなたのサイトのURLが http://www.hoge.co.jp/foo/
# であれば、
# $YourSiteUrl = 'http://www.hoge.co.jp/foo';
# と指定します。
#----------------------------------------------------------------

$YourSiteUrl = 'http://www.hoge.co.jp/foo';




■ カウンター設置ページ(HTML)の編集

カウンターをつけたいページに、以下に説明するタグを埋め込む必要があります。

● IDの指定

このRevoCounter CGI「revocount.cgi」のURLが

http://www.hoge.com/foo/revocount/revocount.cgi

だとします。カウンターを設置したいページに以下のタグを追加してください。

<img src="http://www.hoge.com/foo/revocount/revocount.cgi?id=top">

top」の部分は、ページを識別するIDです。このIDの名前は、何でもかまいませんが、半角アルファベットのみで指定してください。複数のページにカウンターを設置した場合には、別の名前を付与してください。同じ名前を指定すると、各ページのアクセス合計がカウンターに反映されてしまいますので、ご注意ください。
ここで指定したIDのカウント値データファイルは、ディレクトリ「data」の中に格納されます。そのファイル名は、IDに拡張子「.dat」を付け加えたものです。たとえば、IDが「top」の場合、データファイル名は、「top.dat」で保存されます。
IDの指定が無い場合には、ディレクトリ「data」内に、「default.dat」というファイルにカウンター値が格納されます。

● ベースイメージ(ビットマップ)ファイルの指定

ベースとなるカウンターイメージ(ビットマップ)ファイルを指定することができます。ベースイメージのファイルは、ディレクトリ「base」内に存在している必要があります。ベースイメージのファイル名が「sample1.bmp」の場合には、以下のようにHTMLタグを記述してください。

<img src="http://www.hoge.com/foo/revocount/revocount.cgi?base=sample1.bmp">

指定が無い場合には、「default.bmp」が適応されます。

IDの指定とともに指定したい場合には、「&」で区切って記述してください。

<img src="http://www.hoge.com/foo/revocount/revocount.cgi?id=top&base=sample1.bmp">

このページや、トップページにも、本CGIが組み込まれていますので、ご参考ください。

● i-mode 指定

i-modeに対応するには、以下のように、CGIのURLの後ろに「?」を加えた後、「imode=1」を加えてください。

<img src="http://www.hoge.com/foo/revocount/revocount.cgi?imode=1">

他のオプションと組み合わせる場合には、それぞれを「&」で区切ってください。たとえば、IDが「top」で、ベースイメージファイルが「sample1.bmp」の場合には、以下のとおりです。

<img src="http://www.hoge.com/foo/revocount/revocount.cgi?id=top&base=sample1.bmp&imode=1">


■ ベースイメージのサンプル

本CGIには、ベースイメージのサンプルがディレクトリ「base」内に同梱されていますので、どうぞご利用ください。ここで表示しているイメージはGIFですので使えません。必ず同梱のビットマップファイルをご利用ください。

ファイル名 イメージ
default.bmp
sample1.bmp
sample2.bmp
sample3.bmp
sample4.bmp
sample5.bmp
sample6.bmp
sample7.bmp(i-mode対応)
sample8.bmp (i-mode対応)
sample9.bmp (i-mode対応)

 


■ カウンターイメージの作成

カウンターのイメージは、簡単に作成することができます。ご自分で作成する場合には、以下の条件でイメージを作成してください。

  • ファイル形式は、ビットマップのみ。
  • イメージのサイズは、幅500以内、高さ50以内で作成してください。
  • イメージサイズの幅は、10の倍数にしてください。
  • 256色(8ビット)で保存してください。
  • 0から9までの数字は、かならず等幅で作成してください。CGIでは、ベースとなるビットマップイメージを、左から等幅で10に分割して、カウンターイメージを作成します。
  • 作成したビットマップファイルをディレクトリ「base」内にアップロードしてください。
  • i-modeに対応するためには、上記条件に加えて、以下の条件が加わります。
  • イメージサイズの高さは、4の倍数にして下さい。
  • 指定桁数分のイメージのサイズが、5KBを超えないよう注意してください。

【計算例】
表示サイズの計算は、概算ですが、以下の計算式から算出できます。

(イメージサイズ ÷ 10 ) × 表示桁数 × 5

上の計算は、全桁が変わる場合です。たとえば、4桁固定で設定してある場合に、9999から次に代わる場合には、0000となります。この場合には、4桁分の領域すべてのアニメーションが作成されます。i-modeの場合には、5コマ分となりますので、5倍するわけです。しかし、一桁だけが変わる場合には、その部分だけがアニメーションとしてデータ化されますので、サイズは小さくなります。
具体的に例を挙げると、まず、指定桁数が4桁固定だとします。そしてイメージファイルサイズが、5KBだとします。このとき、カウンターとして表示されるイメージのサイズは、全桁が変わる場合で、(5 / 10) * 4 * 5 = 10KBとなります。5KBを超えてしまっていますので、この例では、i-modeで表示できません。もし、ビットマップファイルのサイズが2KBであれば、カウンターとして表示されるイメージのサイズは、(2 / 10) * 4 *5 = 4KBとなります。5KBを超えませんので、i-modeで表示可能です。
上記計算例は、あくまでも概算です。実際にカウンターとして出力されるイメージは、計算値よりも若干大きくなります。できる限り余裕を持ってイメージファイルを作成してください。もしくは、表示桁数を少なめに設定してください。

 


■ 制限事項
  • アニメーションGIFに対応していないブラウザーで見ると、一つ少ない数が表示されることとなります。
  • アニメーションGIFに対応していない i-mode 端末では、表示できません。
  • URLガードをかけた場合、環境変数 HTTP_REFERER を返さないブラウザーでカウンターを表示できません。(i-mode端末も同様)
  • Cookieによるカウントアップ防止機能を有効にしても、Cookieを受け付けなかった場合には、カウントアップしてしまいます。
  • アニメーションの時間指定は、あくまでも目安です。通信速度、クライアントのスペック等、さまざまな条件で、指定の時間でアニメーションを終了できない場合があります。

■ カウンターが表示されない場合には

もし、カウンターが表示されない場合には、直接ブラウザーに、IMGタグに設定したCGIのURLを入れてアクセスしてみてください。何かしらエラーが表示されますので、そのメッセージを参考にして下さい。

エラー内容 対策
ビットマップファイルではありません : bfType[$bfType] base=xxxxx で指定したベースイメージファイルは、ビットマップ形式ではありません。ビットマップファイルを用意してください。
イメージサイズが大きすぎます。500×50以内にして下さい。 : $biWidth × $biHeight base=xxxxx で指定したベースイメージファイルのサイズが大きすぎます。500×50以内のサイズにして下さい。
OS/2フォーマットは変換できません。: biSize[$biSize] base=xxxxx で指定したベースイメージファイルが、OS/2フォーマットのビットマップです。Windowsフォーマットのビットマップにして下さい。
256色以外のビットマップはGIFに変換できません。: $ColorCount色 base=xxxxx で指定したベースイメージファイルを256色(8bit Color)に変換して下さい。
指定外のサイトからは利用できません。 revoconfig.cgi の設定で、URLガードフラグが有効になっています。あなたのホームページのURLの指定が間違っている可能性があります。もしくは、環境変数HTTP_REFERERを送信しないブラウザーでアクセスしている可能性があります。この場合には、revocounfig.pl で、URLガードフラグを無効にして下さい。
IDには、半角アルファベットもしくは数字で指定してください : xxxxx IDの指定に誤りがあります。「id=xxxxx」の「xxxxx」を半角アルファベットもしくは、数字で指定して下さい。
ベースイメージ(ビットマップ)ファイル名には、半角アルファベットもしくは数字で指定してください。: xxxxx ベースイメージの指定を修正してください。もしくはディレクトリ「base」にアップロードしてあるビットマップのファイル名を修正し、base=xxxxxの指定もそれに合わせて変更してください。
ベースイメージ(ビットマップ)ファイルの読込みに失敗しました。 : xxxxx ディレクトリ「baes」内に、指定されたビットマップファイルが存在しない可能性があります。
ビットマップイメージの幅は、10の倍数でなければいけません。: biWidth[xxxxx] ベースイメージのビットマップの幅が、10の倍数ではありません。幅が10の倍数になるようにビットマップを作成し直してください。
i-mode対応の場合、ビットマップイメージの高さは、4の倍数でなければいけません。: biHeight[xxxxx] ベースイメージのビットマップの高さが、4の倍数ではありません。高さが4の倍数になるようにビットマップを作成し直してください。
データファイル xxxxx.dat をオープンできませんでした。 データファイルが格納されているディレクトリ「data」のパーミッションを確認してください。
データファイル xxxxx.dat を作成できませんでした。「data」ディレクトリがあるかどうか確認してください。 データファイルが格納されているディレクトリ「data」が、CGIファイルと同じディレクトリ内に存在するかを確認してください。もしくは、ディレクトリ「data」のパーミッションを確認してください。

もし、InternalServerErrorと表示される場合には、revocount.cgiのパーミッション設定の誤りや、サーバへ転送の際、バイナリーモードで転送している可能性が考えられます。また、revoconfig.cgi の記述ミスの可能性が考えられます。

 
■ バージョンアップ履歴

【Ver1.2 → Ver1.3】 2002/03/20

  • 「Cookieによるカウントアップ防止機能」を ON にすると、複数の カウンターを設置している場合、すべてのカウンターでカウントアップが防止されてしまうバグを改修。

【Ver1.1 → Ver1.2】 2001/10/08

  • Internet Explorer 6 のプライバシー設定「中-高」「高」においても正しくCookieがセットされるよう、P3P(The Platform for Privacy Preferences)1.0 のCompact Policies に対応。前バージョンまでは、IE6でプライバシー設定が「高」の場合、IE6がCookieを受け付けないため、「Cookieによるカウントアップ防止機能」が機能しなかった。それをHTTPヘッダーにCompact Policiesを適応することで、回避した。
  • 「Cookieによるカウントアップ防止機能」がオフの場合、おもにNetscapeにおいて、一度アクセスしたカウンターイメージがキャッシュされ、再度ページを訪れた際にカウントアップすべきところがカウントアップされなかった。それをキャッシュされないように改善した。

 

【Ver 1.0 → Ver 1.1】 2001/08/15

  • 透明色指定において、小文字で指定しないと反映されなかったバグを改修。
  • 設定スクリプトのファイル名を「revoconfig.pl」から「revoconfig.cgi」に変更

 

futomi's CGI Cafe