| info freako's factory | [p i n o] [hichat] [INDEX] |
「 h i c h a t 」
info freako's HIgh performance chat ver 2.0
info freako's HIgh performance chat「 h i c h a t 」は、Perlで記述された、HTMLベースで動作する高速・軽快なチャットスクリプトです。
- ログファイルをHTMLで持ちCGIを介さずに自動リロードを行うので、軽く、サーバにも負担をかけません。
- 発言窓のサイズを発言者が動的に変更可能。高さを1行にすればENTERキーだけで軽快に発言ができます。複数行にすれば、発言が長文になりがちな議論の場として有効です。
- 名前の色も発言者が入室したまま動的に変えられます。
- 名前、名前の色、発言窓の大きさはクッキーを使って保存されるので毎回入力し直す必要がありません。
- ID発行方式による入室者管理を行い、堅牢なセキュリティを実現しています。
- 様々な文字修飾用のタグが使用可能です。
- JavaScriptによる、発言の自動消去が可能です。
- 一定時間発言のない参加者を自動的に退去。また、それぞれの参加者がどれだけの時間発言していないかを色の変化と「zzZZZ」マークによって表します。
- 設定ファイル、HTMLのテンプレートファイルをシステムから分離することで、Perlの知識がなくとも容易にシステムをカスタマイズできます。
こちらになります
「h i c h a t」はフリーウェアです。ご利用にあたっては以下の条項を遵守して下さい。
- このスクリプトに関する全ての著作権は作者に属します。
- このスクリプトを使用した結果生じたいかなる損害についても作者は責任を負いません。また、不具合や仕様の不備があったとしても、作者はそれを修正する責任を負いません。
- 原則としてメール等による個別のユーザサポートは行っておりません。
- 有料・無料・改変の有無を問わず、作者へ許可なく再配布あるいはレンタルを行なうことは出来ません。
- スクリプトの改変は作者へ許可なく自由に行って頂いて構いません。ただし、フッタに記載されている著作表示及び「info freako」へのリンク表示を改竄あるいは削除することは禁止します。表現を変更することは(大きさや表示位置等)構いません。
- これらの条項は事前の通告なく変更・削除等される場合があります。
EMAILアドレスを入力して、「download」ボタンを押して下さい。
EMAILアドレスは必須ではありませんが、なるべく入力するようにしてください。改訂やバグ報告等のアナウンスも届きます。
また、もし実際に設置されましたら、その旨を webmaster@infofreako.com の方までご一報頂ければ幸いです。
ファイルを解凍したら、まずファイル一覧を参照し、ファイルが揃っているかを確かめて下さい。その後、ディレクトリ構成を参考にしながら、以下の手順に従ってアップロードして下さい。これで動きます。
- CGI実行可能なディレクトリの下に、適当な名前のディレクトリを作り、パーミッションを755に設定する
- 1.のディレクトリの下に、「data」という名前のディレクトリを作り、パーミッションを777に設定する
- 「index.cgi」「hichat.cgi」の1行目の「#!/usr/local/bin/perl」を、それぞれのサーバの設定に変更する。大抵のサーバではこのままで大丈夫だと思いますが、必ず確認して下さい。
- ファイルを全て1.のディレクトリにアップロードする
- 「index.cgi」「hichat.cgi」の2つのファイルのパーミッションを755に設定する
カスタマイズの具体的な方法をいろいろ載せました。これらを参考に、ご自分のサイトに合わせてカスタマイズして下さい。
- カスタマイズにあたっての基本的な注意
- 背景に画像を貼ったり文字の色を変えたりしたい
- ログの行数を変えたい
- 自動リロードの間隔を変えたい
- 自動退室までの時間を変えたい
- ウィンドウに表示されるタイトルを変えたい
- 発言していない人の名前の色がだんだん変わっていくが、その色を変えたい
- 発言窓の方に、タイトル画像などを入れたい
- ログファイルの見かけを変更したい
- 発言に使用できるタグを変更したい
- 入室ページを変更したい
- 過去ログを残したい
- カスタマイズにあたっての基本的な注意
カスタマイズをするにあたって、前提条件として気を付けなければいけないことがいくつかあります。
- UNIXサーバの場合は、改行コードを「LF」にする
行末の改行コードは、Windowsでは「CRLF」、Macintoshでは「CR」ですが、大抵のWEBサーバが稼動しているUNIX上では「LF」です。このため、カスタマイズしてファイルをセーブした時に改行コードが変わってしまうと、行末の検出等の処理を行っている部分でエラーになる可能性があります。秀丸等、改行コードを設定できるエディタを用いて、必ず改行コードが「LF」になるよう気を付けて下さい。また、大抵のFTPソフトでは転送モードに「ASCIIモード」を指定することで自動的に改行コードを変換してくれます。
- 背景に画像を貼ったり文字の色を変えたりしたい
init.cgiの「HTML Preference」の項に、共通で使うBODYタグが「$TAG_BODY = '<body text="#000000">'」と定義されてます。これがログファイルや入室ページで使われるBODYタグそのものになりますので、普通にHTMLファイルで設定するようにTEXT、LINK等のパラメタの値を変更して下さい。
- ログの行数を変えたい
init.cgiの「HTML Preference」の項の「$MAX_LOG = 40」の値を変更して下さい。ログの行数は、全利用者共通の値となりますので、チャットの利用頻度に合わせて適当な値を設定してください。ただ、あまり多くするとロードが重くなりますのでご注意下さい。最大でも50行以内に抑えておいてください。
- 自動リロードの間隔を変えたい
init.cgiの「HTML Preference」の項の「$REFRESH_RATE = 30」の値を変更して下さい。これもログ行数と同じく全利用者共通の値となりますので、チャットの利用頻度に合わせて適当な値を設定してください。ただ、あまり短くすると、サーバに負担をかけますのでご注意下さい。最低でも20秒以上に設定して下さい。
- 自動退室までの時間を変えたい
init.cgiの「HTML Preference」の項の「$OVERDUE_LIMIT = 1800」の値を変更して下さい。この値は秒単位で指定します。デフォルトの「1800」は、つまり30分です。あまり長くすると「ゴースト」(落ちたけど名前だけ残っている人)がなかなか消えませんのでご注意下さい。
- ウィンドウに表示されるタイトルを変えたい
init.cgiの「HTML Preference」の項の「$TITLE = 'hichat'」を変更して下さい。また、「$COOKIENAME = 'hichat'」で設定されているクッキーの登録名も変えておくほうが良いです。ただし、$COOKIENAMEの方には日本語は使えませんのでご注意下さい。
- 発言していない人の名前の色がだんだん変わっていくが、その色を変えたい
init.cgiの「HTML Preference」の項の「$COL_FROM = '303020'」「$COL_TO = 'f0f0e0'」を変更して下さい。$COL_FROMから$COL_TOに色が変化するようになっています。
これらの色指定は、RGBを6桁の16進数で記述するHTML方式の表記で行って下さい。ただし、<font>タグの色指定と完全に同等ではありませんのでご注意。つまり、「#ff5555」という具合に先頭に「#」を付けたり「red」といった具合に色名で指定したりといった表記は無効です。あくまで16進数6桁の表記のみが有効です。
例)赤=「FF0000」 黄色=「FFFF00」等
- 発言窓の方に、タイトル画像などを入れたい
発言窓は、postpage.tmpl.htmlにHTMLとしてそのまま書かれていますので、それを直接変更して下さい。
その際に注意する点として、等がありますのでご留意ください。
- 1行目の「$HTML = <<__HTML__ ;」と最終行の「__HTML__」は絶対変更しない。これを変えてしまうと、プログラムが動かなくなります
- HTMLの中で、「$MAINSCRIPT」という具合に「$」で始まっている単語は、プログラムで置き換える変数ですのでこの名前を変更したり削除したりしない。これも下手に改変を加えてしまうとプログラムが動かなくなる可能性があります
- <form>タグのパラメタ(name、targetなど)を変更してもシステムが上手く動作しなくなります。位置を移動させる場合でも、パラメタの値が改変されないよう注意して行って下さい
- 初期状態では、発言用の<textarea>の高さを利用者が変更する度に、フレームの高さを動的に変更しています。タイトル画像等を足すと、自動調整で切られるフレーム高さが足りなくなる可能性があります。その場合には、init.cgiの「HTML Preference」の項の「$NN_MARGIN」「$IE_MARGIN」の値を適当に変更して調節して下さい。
- ログファイルの見かけを変更したい
ログファイルはlog.tmpl.htmlをテンプレートとして生成されています。この内容を直接変更すればそれがそのままログファイルに反映されます。
気を付けるべき点は発言窓の場合と同様という2点です。
- 1行目の「$HTML = <<__HTML__ ;」と最終行の「__HTML__」を変更しない
- 「$」で始まる単語を不用意に変更しない
また、ログファイルの末尾には、著作権表示とinfofreakoへのリンクが記述されています。この部分はなるべく改変しないで下さい。雰囲気にそぐわないのでどうしても変えたい、という場合でも、最低限「h i c h a t」の名称の表示とinfofreakoへのリンク部分は必ず残しておいて下さい。例えば「<a href="http://www.infofreako.com/">h i c h a t</a>」などとでもして頂ければ結構です。
- 発言に使用できるタグを変更したい
h i c h a tは初期状態では「A」「FONT」「B」「I」「U」「S」「SUP」「SUB」「BR」「P」「DIV」「PRE」の各HTMLタグが発言の装飾用に使用できるようになっています。
これに更に使用できるタグを追加したい、あるいは制限したいという場合には、init.cgiの「HTML Preference」の項の「@VALIDTAGS = ('a','font','b','i','u','s','sup','sub','br','p','div','pre') ;」で設定されているリストを変更して下さい。そこにシングルクオーテーションで囲われて並んでいるタグが、h i c h a tで使用を許可されるタグになります。
ただ、OBJECTやIMGといった類のタグはセキュリティの面からも許可しないようにする方が無難です。
- 入室ページを変更したい
入室ページはentry.tmpl.htmlをテンプレートとして生成されています。この内容を直接変更すればそれがそのまま入室ページに反映されます。
気を付けるべき点は発言窓の場合と同様という3点です。
- 1行目の「$HTML = <<__HTML__ ;」と最終行の「__HTML__」を変更しない
- 「$」で始まる単語を不用意に変更しない
- フォームの名前等を変更しない
また、初期状態の入室ページには「現在のログの状況」が表示されるようになっています。ここが不要という方は、
<!--================ LOG PART =================-->
から
<!--================ FOOTER PART =================-->
までの部分を削除して下さい。
- 過去ログを残したい
Hichatは軽快な動作を最優先して設計してあるため、初期状態では$MAX_LOG行以上のログはどこにも保存されません。
もし「過去ログを残したい」という場合には、init.cgiの「$F_LOGBACKUP = 0;」となっている部分を「$F_LOGBACKUP = 1;」という具合に設定すれば、data/logbackup.htmlというファイルに発言内容がどんどん蓄積されていくようになります。
但し、このログファイルは存在する限り永久に肥大し続けていきます。ディスクスペースを圧迫する原因にもなりかねませんので、適時ご自分で削除(必要ならばバックアップを取って)して頂けるようお願いいたします。
実行スクリプト
実際にブラウザから呼ばれるスクリプトファイルです。これらのファイルはすべてパーミッションが755になっている必要がありますhichat.cgi メインスクリプト index.cgi 入室ページ表示スクリプト サブルーチン
実行スクリプトに取り込まれて機能する、各種サブルーチンです。これらのファイルは通常パーミッションの変更は必要ありません(644でOKです)hichatsubs.cgi hichat用サブルーチン集 toolbox.pl 汎用ライブラリ集 jcode.pl 日本語処理ライブラリ 設定ファイル
h i c h a t の動作についての様々な設定が記述されていますinit.cgi 基本設定ファイル テンプレートファイル
表示画面の元となるHTMLのテンプレートですentry.tmpl.html 入室ページ error.tmpl.html エラー画面 frame.tmpl.html チャットのフレーム log.tmpl.html ログファイル postpage.tmpl.html 発言画面
【hichat】[755]---------------- 任意の名前。パーミッションは755(CGI実行可能)
│
├ hichat.cgi[755] これら2つが実際にブラウザから呼ばれるCGI。
├ index.cgi[755] パーミッションを755にしておく必要がある
│
├ hichatsubs.cgi[644] 上の2つのファイル以外は全てパーミッションは
├ toolbox.pl[644] 初期値(通常644、-rw-r--r--)で構わない
├ jcode.pl[644]
│
├ entry.tmpl.html[644]
├ error.tmpl.html[644]
├ frame.tmpl.html[644]
├ log.tmpl.html[644]
├ postpage.tmpl.html[644]
│
│
└【data】[777]--------------- init.cgi内で「$_datadir」で指定されている
ディレクトリ。初期値は「data」
- 「ログファイルを直接HTMLで持ち、リロードにCGIを介さない」という基本コンセプトに基づいた原形が完成。
- 発言窓サイズ&名前の色をユーザ設定可能に。
- 上記設定を入室後も自由に変更可能に。
- 発言窓サイズに従って、フレームの切り幅を動的に変更するように。
- Acha!の「zzZZZ」機能に代えて、「だんだん影が薄くなる」機能搭載。思ったより面白いぞこの機能。
- 入室ページに「現在のログの状況」表示機能追加。ログファイルは単なるHTMLなので、誰でもいつでもROM可能なんだけど、まあ利便を考えて。
- 不許可タグの消去方法をマイナーチェンジ。多少エレガントな処理になった。詳しくは逆引きPerl小技集を参照
- PROXYの先のリモートホストを(なるべく)取得するように変更。
- ログの履歴を残すように機能追加。ただ、無限にログが追加され続けていくので、古くなったのは自分で消去して下さいね。
- テンプレートファイルの拡張子を「.tmpl」から「.html」に変更。一般的なFTPソフトによるアップロード時に自動的にASCIIモードで転送されるようにするため。
- PROXY先リモートホスト取得ルーチンを更に改良。
- Acha!の「zzZZZ」機能を移植追加。
- ログが消えるバグを修正。(2000/07/06)
- 2.0にメジャーバージョンアップ。スクリプトを全て書き直し、バグの温床となっていたグローバルとローカルの変数の取り扱いの混在を徹底。postpage.cgiをhichat.cgiに統合してファイルをひとつ減らす。(2000/07/10)