============================================================================== Web 日記帳 CGI「さくら」 (C)雷獣王GRIFFON(griffon@gwits.net) ============================================================================== ■概要 Web ベースの日記帳です. ・FTP が使えなくても日記が書けるので,外出先でブラウザさえ有れば日記の 更新が出来ます. ・書き込み鍵で書き込みを制限できるので,第三者による書き込みは行えませ ん. ・過去日記は表示している日記から逆順・昇順で見て行くことが出来るほか, カレンダーからのダイレクトジャンプも可能です. ・ほぼ全ての HTML タグをサポート,というよりは HTML タグのエンコードを していないので,日記内で書いた HTML タグは全て有効化されます. ・ターミナルベースで書くことも出来るので,メモ間隔で日記を書くことも可 能です. ■注意!! 日記ログのフォーマットが変更になり,Rev-1.x.x との互換性がありません. 付属の convert.cgi を使ってブラウザベースもしくはターミナルベースで旧 ログファイルを新ログファイルに変換してください. 変換するためのディレクトリは誤変換を防ぐためにも必ず新規ディレクトリを 使用してください. 変換方法は,まず旧ログファイルを適当なディレクトリにコピーします. (例) log_new そのログディレクトリはパーミッションを 777 にしておいてください. ディレクトリには convert.cgi をコピーし,パーミッションを 755 に設定し てください. 次に,ターミナルベースの場合は % perl convert.cgi start でディレクトリに存在する旧ログファイルを一括コンバートします. ブラウザベースの場合は下記のように行います. http://hogehoge.foo.bar/~username/nikki/log/convert.cgi?start 誤変換を防ぐために,どちらも小文字の「start」という文字列を与えないと 変換を行いません. 変換対象のファイル名は,初期状態では $logfile_mask = "^.*\\.log\$"; つまり *.log になっていますので,同ディレクトリ内には変換対象でないフ ァイルの拡張子は .log にしておかないでください. ※変換をする場合は,今までの日記ログと変換スクリプトのみを適当なディレ クトリにコピーしておき,変換作業を行った後にそのディレクトリをさくら 日記帳のログディレクトリとして使用すると良いでしょう. 作業が完了したら,旧ディレクトリはリネームして放置するナリばっさり削除 するナリ圧縮してバックアップするナリしてください. その後に先ほど使用したディレクトリをさくら日記帳のログディレクトリとし て使用できるように,ディレクトリ名を変更しておきます. 変換した後の旧ログファイルは,動作確認が終了すれば破棄していただいてか まいません. ■Rev-1.x.x からの主な変更点 ・ログを月別ログから日別ログに変更. ・ログフォーマットを大幅に変更 (ログコンバーター別途用意済み) ・過去日記閲覧方法を変更 ・日記 HTML に表示される日付はファイル名より取得 ・日記 HTML に表示される曜日はファイル名よりツェラーの公式で自動取得 ・日記 HTML に表示される時刻は日別日記ログの更新時刻より取得 ■設置方法 config.pl を自分の環境に合わせて設定します. 必要であれば *.cgi の Perl パスなどを自分の環境に合わせます. (通常,*.cgi は Perl パス以外の設定は必要有りません) password ファイルは makepassword.cgi で生成した暗号化文字列を記述して から鯖に転送してください. password ファイル内に文字列のみを 1行で記述するだけです. 余分なスペース文字などが入らないように気を付けてください. 既存の password.cgi は不要ですので削除してください. *.cgi を ASCII モードで鯖に転送し,パーミッションを 755 にしてください. *.pl を ASCII モードで鯖に転送し,パーミッションを 644 にしてください. password を ASCII モードで鯖に転送し,パーミッションを 644 にしてくだ さい. *.txt を ASCII モードで鯖に転送し,パーミッションを 666 にしてください. *.gif を BINARY モードで鯖に転送し,パーミッションを 644 にしてくださ い. lock,log ディレクトリを作成し,パーミッションを 777 にしてください. ■ディレクトリ構成とパーミッション パーミッションの指定がないものはアップロード時のデフォルトでかまいませ ん. sakura/ 「さくら」格納ディレクトリ (ディレクトリ名は自由です) | +-- sakura.cgi 本体 (755) +-- makepassword.cgi 暗号化パスワード文字列生成ツール (755) +-- sakura.ini 設定記憶ファイル (666) +-- config.pl 固定設定スクリプト (644) +-- count.txt カウンタファイル (666) +-- lastsave.txt 最終書き込みログファイル (666) +-- namelist.txt 単語変換ファイル (666) +-- referer.txt リファら記録ファイル (666) +-- index.html 日記の HTML 出力用ファイル (666) +-- password 管理者パスワード格納ファイル(暗号化済み) (644) +-- lock/ ロックファイル用ディレクトリ (777) +-- log/ 日別ログディレクトリ (777) +-- YYYYMMDD 日別ログ (666) ■お天気アイコン アイコンは各自で自作してもらってかまいません. その際,画像サイズは自由ですが,GIF 型式でファイル名を変更しないでくだ さい. Perl がわかる方はそれ以上に自由に出来ます. お天気アイコンは以下のようなファイル名のアイコンを CGI と同じディレク トリに置いてください. アイコンを使用する設定でアイコンファイルが見つからない場合は,お天気フ ィールドに記述されている文字列がそのまま表示されます. また,エディタなどで直接日記ログファイルを編集する場合,下記の漢字文字 列を使用することで,各お天気アイコンに置換されます. なお,エディタにて天気を漢字で記述した場合,ブラウザによる編集を行う場 合は天気のチェックボックスには反映されません. 晴れ:hare.gif 曇り:kumo.gif 雨 :ame.gif 雪 :yuki.gif 雷 :thunder.gif 台風:taifuu.gif ■使い方 ・パスワードについて 付属の makepassword.cgi で暗号化文字列を取得後,password ファ イル内に 1行で記述してください. 改行はあってもなくてもかまいません. ・新規書き込み 一番下もしくは上にある [新規] リンクをクリックしてください. 書き込みを実行するときに書き込み鍵を入力して Submit ボタンを押 します. ・編集 各記事のタイトルフィールドにある EDIT ボタンを押してください. 書き込みを実行するときに書き込み鍵を入力して Submit ボタンを押 します. ・削除 一番下もしくは上にある [削除] リンクをクリックしてください. すると削除一覧カレンダーが出るので,その中から削除したい日をク リックしてください. 「下記の日記を削除しますか?」と出てきたら,その下にある 1行テ キストボックスに書き込み鍵を入力し,「削除」ボタンを押します. 削除は物理削除ではなく,日別日記ログに拡張子 .del が付く形で削 除されます. ・管理者設定 一番下もしくは上にあるテキストボックスに書き込み鍵を記述し, SUBMIT ボタンを押してください. ■特殊機能 ○過去日記参照時のリバース表示 過去日記を新しい順に読んでいくと,ネタばれや話のつじつまが合わ ないなどで古い順に読んでいくと思われますが,それを簡単にするた めに,過去日記はリバース表示されるようにすることも出来ます. リバースされるのはさくら日記帳から過去日記参照用フォームで呼び 出した場合,もしくは GET オプションで oldlog_reverse=1 とした 場合のみです. 例) http://www.hoge.jp/nikki/sakura.cgi?target=20020927&oldlog_ reverse=1 ○日記レス参照用自動リンク作成 日記レスをする場合,ただ単に日記の URL に対してリンクを張られ るだけではどの日記に対してのレスなのかがわかりにくい場合があり ます. その場合, タグを使うことでさくら日記帳に該当日記への リンクを張って貰うとわかりやすいのですが,日記を書く本人はタグ が長くなるので面倒くさくなり,またリンクを張る側にしてみれば, ソースをいちいち見なくてはならないため非常に面倒なことになりま す. そんな日記レスを「張られる」のをサポートするための特殊タグを使 うことが出来ます. 文中に <*> を入れておくと,CGI で自動的に * というリンクを埋め込みま す. これでリンクを張る側は,ブラウザ上で 右クリック→ショートカッ トのコピー でリンクするためのアドレスをコピーすることが出来ま す. 通し番号と日付は自動割り当てするので,日記を書く本人の負担はほ とんどなくなります. 記述例)
  • <*>ほぇほぇ〜 ○単語置換 namelist.txt を使用すると,単語→Webアドレス変換が行えます. 今のところこの機能はひどく貧弱で,単語に引っかかった物は全て変 換するので,へたをすると HTML タグ内の単語を変換する恐れがあり ます. 設定ファイルの書き方などは namelist.txt のコメントを参照してく ださい. ■ログファイルについて ログファイルの仕様を大幅に変更しました. これにより,ターミナルユーザーでも簡単に見やすい状態で日記ログを編集す ることができます. 改行コードは CR/LF/CRLF で終了するようにしてください. ログファイルフォーマットは以下のようになっています. -------------------- 天気,タイトル 本文 -------------------- 1行目は天気とタイトルを半角カンマで区切っています.ただし天気しか書か ない場合は区切りのカンマはいりません. 1行目は必ず上記フィールドになるので,特に何も書かない場合は 1行開けて おいて下さい. 2行目からは自由に改行が出来ますが,HTML に出力されるときは改行が
    に変換されます. 2行目以降の半角カンマは特にフィールドの区切りなどの意識はないので自由 に使用可能です. 日別日記ログのファイル名は YYYYMMDD 型式で保存すると,自動的に新しい日 付順に並べ替えられて HTML に表示されます. ターミナルベースで日別日記ファイルを作成した場合は,そのファイルのパー ミッションを 666 にしておくことをお勧めします. もし Web ベースで編集しないことが保証されるなら,この限りではありませ ん. ■管理者設定 以下は管理者設定で行える設定の説明です. 色の指定方法は HTML 準拠です. (現在執筆中のため抜け有り) BODY タグ: HTML のBODYタグの属性に準拠しています.各属性の意味は HTML 参 考書などをご覧下さい. フォームのスタイル定義: フォームに対するスタイルシートを定義します. これをうまく活用すると,平面的なフォームを作ることも可能です. 何も記述しない場合はスタイルシートは使用されません. スタイルシート定義ファイル: スタイルシートを定義したファイル名を指定します. 何も記述しない場合はスタイルシートは使用されません. タイトル: Web 日記帳のタイトルを記述します. タイトル色: Web 日記帳のタイトルの文字色を指定します. タイトル文字サイズ: Web 日記帳のタイトルサイズを指定します. 記述は絶対指定 (1〜7),相対指定 (-2〜+0〜+4) が使用可能です. 記事テーブル(タイトル部)背景色: 記事タイトルのテーブル背景色を指定します. 記事タイトル文字色: 記事タイトルの文字色を指定します. 記事テーブル背景色: 記事テーブルの背景色を指定します. 記事テーブル文字色: 記事テーブルの文字色を指定します. テーブル罫線の太さ: 記事テーブルの罫線の太さを指定します. テーブル枠幅の太さ: 記事テーブルの罫線間の間隔を指定します. 引用行文字色: 引用行の文字色を指定します. 引用行は行頭に > がある 1行に限られます. コメント行文字色: コメント行の文字色を指定します. コメント行は行頭に # // ; ' がある 1行もしくは /* と */ でくく られた範囲になります. 最終更新日文字色: 日記最下段に表示される最終更新日の文字色を指定します. 最終更新日文字サイズ: 日記最下段に表示される最終更新日のサイズを指定します. ヘッダ部挿入文: 記事テーブルと Web 日記帳タイトルの間に入る文章を記述します. インフォメーションなどにご活用下さい. カウンタ桁数: カウンタの桁数を指定します. お天気アイコンの使用: お天気アイコンの使用を決定します. 使用しない場合は文字のみが表示されます. 記事テーブルのSUBMITボタンデザイン選択: 記事テーブルにある投稿ボタンのデザインを指定します. 「GIF」を選択した場合は edit_btn.gif が投稿ボタンとして使用さ れます. 「フォームボタン」を指定した場合は,通常のボタンが使用されます. 「現在のGIF→」には edit_btn.gif が表示されています. SUBMIT ボタンをすっきりさせたいときにどうぞ. 過去日記の日付順反転: 過去日記の表示順を,日付の古い順にひっくり返します. これはログを弄らず,見た目のみ反転しています. 当月日記は最新版が一番上で,過去日記は初めから読むという一般的 な手法を取る場合はこれを「する」に設定するとよいでしょう. 最終更新日表示: 日記の最終更新日付の表示を設定します. (日別ごとに一番下に表示されます) 記事修正時パスワード入力タイミング: 書込・修正時に書込鍵を先に入力するか後に入力するかを指定します. 後に入力すると,画面上のフォームボックスがほとんど消えるので, 見た目がすっきりします. よく使うタグリスト: 日記を書くときによく使う,長い HTML 構文をここに書いておくと, 日記編集時にそれをコピー&ペーストで使うことが出来ます. ■捕捉 ・gzip 圧縮転送について このスクリプトは gzip による Web コンテンツの圧縮転送を行えま す. (デフォルトの config.pl では行わないようになっています) config.pl 内の -------------------------------------- $gzip_path = '/usr/bin/gzip'; # gzip コマンドのフルパス $contentcompless_flag = 1; # gzip 圧縮フラグ # (圧縮 する:1 / しない:0) -------------------------------------- を設定することにより,gzip による圧縮転送を行うことが出来ます. これは,Web コンテンツを gzip 型式で圧縮し,データを縮小した形 でブラウザへ届けられます. ブラウザはこれをブラウザ内部で展開して表示します. 転送容量制限のかかっているような Web でご利用下さい. この機能はブラウザの情報を見て,gzip 圧縮を行うかどうかを決定 していますので,ブラウザさえ対応していれば強制的に圧縮転送され ます. ただし,ブラウザが対応していない場合は,たとえ $contentcompless_flag = 1;としていても強制的に圧縮転送を行わな いようになります. ■おまけ Namazu 用フィルタスクリプトを同胞しました. sakura_namazufilter.pl の一部を変更した後,それを /usr/local/share/namazu/filter/ にコピーしてください. 変更箇所は,一番下の方にある $fields->{'author'} = '雷獣王GRIFFON'; # 制作者 の名前を変更します. なお,このフィルタスクリプトは,さくら日記帳のディレクトリ構造が標準構 造であることを念頭に作られています. (log/ ディレクトリのすぐ上に sakura.cgi があるものとしています) ■難しいこと ・本ツールは「Zeny もしくは芋カンパウェア」になりました.(ぉぃ Zeny はオンラインゲーム「RAGNAROK online (http://www.ragnarokonline.com/)」の通貨の単位です. 芋とは同ゲーム内での HP 回復アイテムで,同ゲーム内 HP 回復アイテムの デファクトスタンダードとなっています. もし「カンパしてもいいよ!」という人は,作者にオンライン上で連絡を取 ってください. キャラクタ名「RIWM」でささやいて頂けると,オンラインであればどこでも 通信できます. なお,カンパは強制では【ありません】. また,RAGNAROK online をやっていない人はフリーソフトという扱いになり ます.(ぉぃ ・本ツールを使用する事でいかなる損害が生じても,作者は一切の責任を負い ません. ・作者はいかなる理由があってもバージョンアップ,バグ修正等の責任,義務 は負いません. ・本 Perl スクリプトの再配布は自由に行っていただいてかまいません.ただ し,バージョンアップのことを考えて,1次配布元アドレスを一緒に記載し てください.