特徴 / Sample / ダウンロード / 設置方法 / その他/
▲
特 徴
- 内容(入力必須)の他は入力欄が二つ(ともに入力は任意)しかないシンプル日記。内容以外の項目名は自由に設定できる。
- 1日に複数の記事を書くことができる。
- Web上で内容を編集・削除できる。
- 過去ログをボタン一つで生成する。過去ログへは自動リンク。
- 作成された過去ログもタブ区切りのデータファイルで、過去ログの編集・削除の他、過去ログに新規記事を書きこむこともできる。
- 日記の日付を変更できる。記事は自動的に日付順に並べ替えられる。
- ログをWeb上でダウンロードできる。(HTMLファイルかタブ区切りのデータファイルか選択可)
- 検索機能があり、過去ログも含めて検索できる。
- 記事を書き込むと、最新の日記ログを元にHTMLファイルを生成する。
- アンカータグがつくので、記事を指定してリンクさせることができる。
- 日記のデザインはHTMLスキンで自由に作成できる。
▲
Sample ▲
ダウンロード ↓指定された名前で保存してください。
- diaryc.txt-----日記Cのスクリプト本体。ファイル名をdiaryc.cgiにしてください。
- jcode.pl------日本語変換ライブラリ。ファイル名をjcode.plにしてください。
- skin.html-------------HTMLスキン(サンプル)。(サンプルを参考に自作してください。作り方はこちら。)
- diaryc.dat---------ログファイル。(空ファイル)
- loglistc.dat--------過去ログファイル一覧ファイル。(空ファイル)
▲
設置方法
- あなたのサーバーでCGIが使えるかどうか確認する。
- CGIの設定を変更する。
- 日記用のディレクトリを作り、その中に全てのファイルを入れるようにしてください。
- テキストエディタで、diaryc.cgiを開き、初期設定の部分を修正します。
- 基本的に、
$変数名 = "値";
という形式なので、この値の部分を変更してください。"(ダブルクォーティション)や'(シングルクォーティション)、;(セミコロン)を消したりしないように気をつけてください。
また、""で囲まれた部分では、"を使わない、''で囲まれた部分では'を使わないでください。数値は半角で。
- 値を日本語で書く場合、ある漢字を使うと文字化けするかもしれません。 そのときは、文字化けしている字の後に半角の\マークをつけてみてください。
- 1行目以外は、#からその行の最後まではコメントになります。変数を無効にしたい場合は行頭に#をつけます。
太字は変更必須。
diaryc.cgi初期設定部分 #!/usr/local/bin/perl #↑perlのパス。プロバイダに尋ねること。 #------------------------------------# #日記C Ver.0.1 2001/1/24作成。 2001/2/22最終更新。# #------------------------------------# #-----------初期設定-------------# require 'jcode.pl'; #日本語変換ライブラリの呼び出し $email = 'xxx@xxx.ne.jp'; #管理者E-mail $kanri = "あなたの名前"; #管理者名 $password = "master"; #管理用パスワード $basepage = "index.html"; #現在の日記として生成するHTMLファイル。 $title = "よしなしごと"; #日記タイトル $home = "../index.html"; #HOMEのURL。相対パスでも、http://からのURLでもどちらでも。 $skinfile = "skin.html"; #スキンファイル $koumoku1 = "タイトル"; #項目1の名前 $koumoku2 = "天気"; #項目2の名前 $select = "on"; #項目2は選択肢を用意して、その中から選ぶ。"off"にすると、テキスト欄。 @k2index = ('晴れ','雨','曇','雪','台風'); #$selectをonにしたときの$koumoku2の選択肢。 @k2fact = ('hare.gif','ame.gif','kumori.gif','yuki.gif','taihuu.gif'); #項目2を表示のときに変換する。@k2indexと順番を対応させておくこと。 $hyouji = 20; #検索時の記事表示件数(ここで設定した値を最大とする。) $filename = "diaryc.dat"; #データファイル名(過去ログは数_$filenameという名前のファイルになる。) $loglistfile = "loglistc.dat"; #過去ログリストファイル $cgi = "diaryc.cgi"; #CGI名 $method = "POST"; #禁止するタグ $forb = '!--|BODY|META|ISINDEX|HR|NOBR|XMP|BASEFONT|FORM|TABLE|FRAME|EMBED|BGSOUND|APPLET|SCRIPT|TR|TD';
- 項目1,2は名前を設定できる。また、日記の記入フォームで、 項目1はテキスト入力欄だが、項目2はテキスト入力欄にするか、選択制にするか選択できる。
- 項目2を選択制にする場合は、19行目を、
$select = "on";
とする。そして、20行目の@k2index に、その選択肢を記入する。''(シングルクォーティション)で囲んで,(コンマ)で区切って、いくつでも選択肢を増やすことができる。- 項目2を表示のときに変換したい場合、21行目の@k2factを使う。@k2indexと対応させておくと、HTML表示のときに、@k2factの中の要素に置き換わる。
↑の例の場合、データの項目2が’雨’となっていたら、’雨’は@k2index中の2番目の要素だから、HTMLで表示するときは、@k2factの2番目の要素’ame.gif’という画像ファイル名に置き換わる。
- HTML表示のときに@k2factの要素と置換しない場合は、@k2factの前に半角の#をつけること。
- 項目2を選択制ではなくて、テキスト記入欄にして、自由に記入したい場合は19行目は
$select = "off";
とする。そして、20,21行目の行頭に#をつける。
- スキンファイルを作成する。
スキンファイルをCGIが取り込んで使用するので、画像やリンクのURLはCGIから見た相対パスか、http://から始まるURLで記述すること。
詳しくはスキンファイルの作り方をご覧ください。サンプルをそのまま使う場合も、ご覧くださいね。- アップロード、パーミッション変更。
- サーバーに日記用のディレクトリを作り、 その中にFTPソフトで、diaryc.cgi, jcode.pl, diaryc.dat, loglistc.dat, skin.htmlをアップロードする。 そのとき、必ずアスキーモード(テキストモード)にすること。
- 背景画像などがあれば、同じくアップロードする。ただしこちらはバイナリモードで。
- diaryc.cgiのパーミッションを755に変更する。
- 日記用ディレクトリのパーミッションを777に変更する。
- (パーミッションは一般的な場合です。プロバイダの設定に従ってください。)
- もし別にディレクトリを作成できないのであれば、 ディレクトリの中のファイルの名前と、日記用ファイルの名前(データファイルやスキンファイル、通常表示用に生成するHTMLファイルなど)と 名前がダブらないように注意してください。
- webページから呼び出す。(日記を書いて、リンクを貼る)
http://(diaryc.cgiのあるフォルダまでのパス)/diaryc.cgi
で呼び出すことができます。
日記を入力し、生成されたindex.html(または初期設定で$basepageの値として設定したファイル名)へのリンクをwebページに貼ります。▲
その他 更新履歴。
雑記。
- ◆Ver.0.1-----2001/1/24作成開始、2/26公開。
- 私の日記の方にぐだぐだ書いていますが、当初は、自分用だからできるだけシンプルに、と作っていたのに、 あとから、「こんな機能があるとおもしろいかも」なんて考えて、いろいろ付け足しました。 おかげで入力項目などはシンプルですが、スクリプトは全然シンプルじゃありません・・・。
- けっこう多機能になったので、汎用性あるかな、と公開してみました。
アンカーの利用方法。
- 各記事にアンカーをつけることができるので、生成されたHTMLファイルだけでなく、過去ログの記事へもリンクをはることができます。 その際は、
CGI名?data=過去ログファイルナンバー#年月日
という形になります。年月日は、年が4桁、月と日が各2桁、の計8桁の半角数字で記事の日時を指定します。
たとえば、
diaryc.cgi?data=1#20010117
とすれば、過去ログファイル1を表示するだけでなく、その中の2001年1月17日の記事の部分へジャンプするわけです。日付の表示方法変更。
日付は2001/2/24(Sat.)のように表示されます。
これを変えたい、という人はdiaryc.cgiのずっと下の方に、次のような箇所があります。
sub get_datenow{ local($time) = @_; ($sec, $min, $hour, $day, $month, $year, $wday) = localtime($time); $wday = ('Sun.', 'Mon.','Tue.', 'Wed.', 'Thu.', 'Fri.', 'Sat.')[$wday]; $year += 1900; ++$month; $time = "$year/$month/$day($wday)"; return $time; }
これを手直しすれば、お好きな日付表示になります。例えば、
- 2001年2月24日(土)のようにしたい場合。
$yearが年を、$monthが月を、$dayが日を、$wdayが曜日を表します。
sub get_datenow{ local($time) = @_; ($sec, $min, $hour, $day, $month, $year, $wday) = localtime($time); $wday = ('日', '月.','火', '水', '木', '金', '土')[$wday]; $year += 1900; ++$month; $time = "$year年$month月$day日($wday)"; return $time; }
この部分を訂正すると、表示される日付がすべてここで設定した表示方法に統一されます。