ホーム > HTMLに役立つヒント>
ADSLでMACサーバ・実験室 > JAVAscript &
AppleScriptカウンタ
ここでは、JAVAscriptとAppleScriptを組み合わせたカウンタを紹介します。web共有でも動きます。
できあがりは 「ページビュー」 こんな感じです。
考え方は単純で、AppleScriptを使ったCGIでアクセスをカウントしてカウンタファイルに書き出します。
同時にJAVAscriptを吐き出し、それを読み込んで表示します。
次のスクリプトを「スクリプト編集プログラム」にコピー&ペーストして、「別名で保存」→「classicアプリケーション」で保存します。「初期画面の表示をしない」「実行後に自動終了しない」にチェックし、名前は「counter.acgi」とでもします(拡張子が「.acgi」であればなんでもいいです。拡張子は「.cgi」でもいいですが、複数の呼び出しに対して並行処理ができません)。
あ、そだ。なんでperlでなくAppleScriptかというと、MACperlの場合、5分間呼び出されないと終了してしまうので、立ち上がり動作分だけ遅くなるからなんです。AppleScriptのCGIなら「実行後に自動終了しない」オプションで立ち上がりっぱなしになりますので。
|
これらのスクリプトでは高速化のために田中先生のTanaka's OSAX 2.01を使っています。インストールしておいて下さい。これ以前のバージョンのTanaka's OSAXについては試していませんので、動作するかわかりません。作者の田中求之さんに感謝いたします。 Tanaka's OSAX配布場所:http://mtlab.ecn.fpu.ac.jp/tanaka_osax.html |
counter.acgi01 ver0.1 2003/11/30
●特徴
最初のバージョン。単純にカウントアップするだけなのでもっとも動作が軽い。
やっていることは単純で、CGIが呼び出されたらカウンタファイルを読み込んで、+1して書き戻し、新しい値をJAVAscriptでHTMLに書き戻しています。
●設定
「property countFile : "indexCount" -- ★★★ カウントファイル名初期化 ★★★--------------設定必須」の部分はカウントファイル名です。適当に書き換えてください。
counter.acgi02 ver0.2 2003/12/1
●特徴
引数をつけて1つのカウンタで複数のページのカウントができる。
引数の付け方は「埋め込むJAVAscriptの例」を参照。
●設定
「set countFile to "indexCount" -- ★★★ カウントファイル名初期化 ★★★--------------設定必須」の部分はカウントファイル名です。適当に書き換えてください。後述のカウントファイル名の指定がない場合はこのファイル名が使われます。
counter.acgi031 ver0.31 2003/12/2
●特徴
引数をつけて1つのカウンタで複数のページのカウントができる。
引数の付け方は「埋め込むJAVAscriptの例」を参照。
その日にアクセスしてきたIPアドレスを保存し、同じIPからのアクセスはカウントしない。その日のIPファイルかどうか判定し、削除する動作が重いので、速いマシンで使ってください。
●設定
「set countFile to "indexCount" -- ★★★ カウントファイル名初期化 ★★★--------------設定必須」の部分はカウントファイル名です。適当に書き換えてください。後述のカウントファイル名の指定がない場合はこのファイル名が使われます。
「property iplog : "_ip" -- ★★★ IP保存ファイル名。空白にするとIPチェックしない。 ★★★--------------設定必須」の部分はIP保存ファイル名です。「カウントファイル名+IP保存ファイル名」がIP保存ファイル名になります。デフォルトでは「indexCount_ip」です。ここを空にするとIPをはじく機能は動作しません。
counter.acgi032 ver0.32 2006/10/3
・0.31の高速化版。IPリストの有効性判定を改良し、ちょっとだけ速くなった。設定方法は0.31と同じ。
|
次の部分はそのままで動作するはずなんですが、パスのある場所を自動取得できない環境があるようなので、その場合は手動でスクリプトをおいたパスを指定してください。 on run |
|
古いAppleScriptではon handle CGI requestが使えません。次の2箇所を書き換えてください。 ●この部分を ●こう書き換える。 ●閉じタグのこれを ●こう書き換える。 |
カウンタを表示させたいところに次のJAVAscriptを埋め込みます。これでCGIの呼び出しと表示の両方をやってます。赤字はCGI名。ディレクトリが違う場合は「../cgi-bin/counter.acgi」などとしてください。
埋め込むHTMLファイルの拡張子は「.html/.htm」でOKです。「.shtml」である必要はありません。
| <script src="counter.acgi" type="text/javascript"></script> |
ver 0.2からはCGIに引数をつけてカウントファイル名を指定できるようになりました。これによって、ひとつのCGIで複数のカウンタを動かすことができます。引数は「cntFile=ファイル名」となります。「indexCount2」というファイル名の例を示します。
| <script src="../counter.acgi?cntFile=indexCount2" type="text/javascript"></script> |
次のページではこのページと同じカウンタスクリプトが処理しています。
JAVAscript対応ブラウザでないと動作しないという点が欠点。
かわりにcgiの処理工程が少ないので比較的高速に動作します。それに「SSIもどき」と異なり、acgiを呼び出すためのファイルを置く必要もありません。構造がシンプルって事ですね。
ver.0.2からはひとつのCGIで複数のカウンタを置くことができるようになりました。
ver.0.3ではその日にアクセスしてきたIPアドレスはカウントしないようになっていますが、動作が遅いです。
SSIっぽくしたいなら、JAVAscriptでファイルの修正日、日時の表示をやるといいでしょう。JAVAscriptはブラウザ依存なので、表示されないブラウザもありますが<(_ _)>
|
<p>このファイルの修正日2: <p>今日の日付: |
このファイルの修正日:
今日の日付:
ご自由にお使い下さい。改造したり再配布してもOKです。
おっと、例によって万一このソフトを使って被害を被っても、損害はいっさい保証しません。オウンリスクで使ってください。
もしこのCGIをお使いだという奇特な方がいらっしゃったらお知らせください。リンクさせていただきます。
ホーム > HTMLに役立つヒント>
ADSLでMACサーバ・実験室 > JAVAscript &
AppleScriptカウンタ