Back

日記C Ver.0.1

(2001/2/26最終更新)

特徴 / Sample / ダウンロード / 設置方法 / その他/

特 徴
  1. 内容(入力必須)の他は入力欄が二つ(ともに入力は任意)しかないシンプル日記。内容以外の項目名は自由に設定できる。
  2. 1日に複数の記事を書くことができる。
  3. Web上で内容を編集・削除できる。
  4. 過去ログをボタン一つで生成する。過去ログへは自動リンク。
  5. 作成された過去ログもタブ区切りのデータファイルで、過去ログの編集・削除の他、過去ログに新規記事を書きこむこともできる。
  6. 日記の日付を変更できる。記事は自動的に日付順に並べ替えられる。
  7. ログをWeb上でダウンロードできる。(HTMLファイルかタブ区切りのデータファイルか選択可)
  8. 検索機能があり、過去ログも含めて検索できる。
  9. 記事を書き込むと、最新の日記ログを元にHTMLファイルを生成する。
  10. アンカータグがつくので、記事を指定してリンクさせることができる。
  11. 日記のデザインはHTMLスキンで自由に作成できる。

Sample
よしなしごと
サンプルです。みさおが実際に日記として使用しています。
パスワードmasterで、管理・編集画面を見ることができます。テストはできません。
スキンファイル

サンプル2
サンプル2です。項目2を”天気”にして、画像で表示させた例。時間表示も変更。
(時間表示を変更する方法はこちら。)
パスワードはmasterです。テストできますが、制限があります。
スキンファイル

ダウンロード
↓指定された名前で保存してください。
  • diaryc.txt-----日記Cのスクリプト本体。ファイル名をdiaryc.cgiにしてください。
  • jcode.pl------日本語変換ライブラリ。ファイル名をjcode.plにしてください。
  • skin.html-------------HTMLスキン(サンプル)。(サンプルを参考に自作してください。作り方はこちら。)
  • diaryc.dat---------ログファイル。(空ファイル)
  • loglistc.dat--------過去ログファイル一覧ファイル。(空ファイル)

設置方法

  1. あなたのサーバーでCGIが使えるかどうか確認する。
  2. 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行目の行頭に#をつける。

  3. スキンファイルを作成する。
    •  スキンファイルをCGIが取り込んで使用するので、画像やリンクのURLはCGIから見た相対パスか、http://から始まるURLで記述すること。
       詳しくはスキンファイルの作り方をご覧ください。サンプルをそのまま使う場合も、ご覧くださいね。

  4. アップロード、パーミッション変更。
    • サーバーに日記用のディレクトリを作り、 その中にFTPソフトで、diaryc.cgi, jcode.pl, diaryc.dat, loglistc.dat, skin.htmlをアップロードする。 そのとき、必ずアスキーモード(テキストモード)にすること。
    • 背景画像などがあれば、同じくアップロードする。ただしこちらはバイナリモードで。
    • diaryc.cgiのパーミッションを755に変更する。
    • 日記用ディレクトリのパーミッションを777に変更する。
    • (パーミッションは一般的な場合です。プロバイダの設定に従ってください。)
    • もし別にディレクトリを作成できないのであれば、 ディレクトリの中のファイルの名前と、日記用ファイルの名前(データファイルやスキンファイル、通常表示用に生成するHTMLファイルなど)と 名前がダブらないように注意してください。

  5. 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日(土)のようにしたい場合。
    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;
    }
    
    $yearが年を、$monthが月を、$dayが日を、$wdayが曜日を表します。
    この部分を訂正すると、表示される日付がすべてここで設定した表示方法に統一されます。


もどる