snsは私が個人的に日記をつけるために作成したPerlによるCGIスクリプトです。 本当はtDiaryを使いたかったのですが、借りていたレンタルサーバではRubyが使えなかったので自作したというのは内緒の方向で。 実際に運用しながら、自分の使いやすいように改造を続けているため、使い方は難しいかもしれません。 snsには以下のような特徴があります。
サーバにsns用のディレクトリを作成し、アーカイブを解凍して出てきたファイルを以下のように配置します。 CGIスクリプト(diary.cgi)はブラウザから呼び出されて実行されますので、適切にパーミッションを設定しておきます。 また、dataディレクトリ、confディレクトリ、attachディレクトリにはCGIスクリプトから書き込みを行えるよう、 こちらもパーミッションを設定しておきます。ログを出力する場合は出力先のディレクトリにも書き込み権限を与えてください。
root-+- diary.cgi(日記表示用CGIスクリプト) | +- tb.cgi (トラックバック受信用CGIスクリプト) | +- [DIR] data(日記、コメントデータを格納するディレクトリ) | +- [DIR] attach(添付ファイルを格納するディレクトリ) | +- [DIR] theme(スタイルシートを格納するディレクトリ) | | | +- *.css | +- [DIR] conf(設定ファイル群を格納するディレクトリ) | | | +- *.dat | +- [DIR] plugin(プラグインを格納するディレクトリ) | +- *.pl
管理者のパスワードはデフォルトでは「pass」になっています。 diary.cgiの先頭部分の$ADMIN_PASSを変更することでパスワードを変更することができます。
.htaccessなどでconfディレクトリへのアクセスを禁止しておいてください。 また、*.plファイルや*.datファイルへのアクセスも禁止しておいたほうがよいでしょう。
dataディレクトリ、confディレクトリ以外のディレクトリを削除し、新しいバージョンに差し替えてください。 その後、管理画面にログインし設定を保存してください(バージョンアップで設定項目が増えた場合等、 設定を保存しなおさないと動作に不具合が生じる可能性があります)。
どうしてもうまく動かない場合、confディレクトリも同様に差し替えてみてください。 この場合は設定をやり直す必要があります。
diary.cgiで設定されているパスワード(デフォルトではpass)を入力し「更新」ボタンを押すとログインすることができます。 画面上部の「日記を書く」というリンクをクリックすると当日の日記を入力するための画面に遷移します。 テキストエリアに文章を入力し、「保存」ボタンを押すと入力した内容が当日の日記として保存されます。 既に書き込んだ日記は日付の横の「編集」というアンカから編集を行うことができます。
日記の1行目がセクションの見出しとして出力されます。また、改行のみの行があるとセクションの終了と見なされ、 その次の行が新しいセクションの見出しとなります。これはWikiスタイルとHTMLスタイルで共通です。
また、日記にはスクリプトレットによってPerlスクリプトを埋め込むことが可能です。 これを利用して、日記の作成を支援するPerl関数をプラグインとして使用することができます。 詳細はプラグインの項を参照してください。
日記をWiki形式で記述することができます。書式はFreeStyleWikiに準拠しています。 慣れるまでは書きづらいかもしれませんが、リンクやリストなどを少ないタイプ量で記述することができます。 以下に主な書式を示します。
URLは自動的にリンクになります。また、別名をつけてリンクをはることもできます。 下記は「Google」という文字列にhttp://www.google.co.jpというリンクがはられます。
[Google|http://www.google.co.jp]
シングルクォート2つで囲むとイタリックに、シングルクォート3つで囲むとボールドになります。 また、打ち消し線や下線を引くこともできます。
これは''イタリック''です。 これは'''ボールド'''です。 これは==打ち消し線==です。 これは__下線__です。
リストを書く場合は行の先頭に*をつけます。三段階までネストすることができます。
*項目1 *項目2 *項目3
行を+で始めることで番号付きリストにすることもできます、。
*番号付き項目1 *番号付き項目2 *番号付き項目3
行を半角スペースで始めることで整形済テキストとして表示することができます。 また、行を``''で始めることで引用文を書くこともできます。
""これは引用です。 ""これも引用です。
先頭がカンマで始まるCSVを書くとテーブルになります。1行目がヘッダになります。
,1-1,1-2,1-3 ,2-1,2-2,2-3
プラグインは{{と}}で囲むように記述します。
{{プラグイン}}
日記をHTMLで記述することができます。1行ごとにpタグが補完されます。 自由度は高いですが、タイプ量が多くなってしまいます。プラグインはASPのようなスクリプトレットで埋め込みます。
<%= プラグイン %>
日記の編集画面からファイルの添付、削除を行うことができます。 添付したファイルはattach_file、attach_image、attach_textといったプラグインで日記に貼り付けることができます。 詳しくは各プラグインについての説明を参照してください。
セクションの見出し行に
[カテゴリ名]
という形式でカテゴリ名を記述しておくと、そのセクションをカテゴライズすることができます。 日記の閲覧時にはカテゴリ名の部分がアンカとなり、クリックすると同一のカテゴリにカテゴライズ されたセクションを一覧表示することができます。
snsではスクリプトレットによってPerlスクリプトを埋め込むことができます。これを利用して、日記の作成を支援するPerl関数を呼び出すことができます。 プラグインの実体は単にpluginディレクトリに配置されたPerlスクリプトです。 関数を定義したPerlスクリプトをpluginディレクトリに置くだけで、自動的にインクルードされ、スクリプトレットからの呼び出しが可能になります。
なお、スクリプトレットは日記本文でけでなく、ヘッダやフッタにも記述することができます。 snsには標準で以下のプラグインが用意されています。
ログインフォームを出力します。初期状態ではヘッダで使用されています。
<%= login_form %>
日記の存在する年月を選択し、その月の日記を一覧表示するためのコンボボックスを表示します。初期状態ではヘッダで使用されています。
<%= calendar %>
検索用のフォームを表示します。引数に文字列を渡すとフォームの前に表示することができます。
<%= search_form %>
ページ処理用のアンカを表示します。通常はなにも出力を行いませんが、 検索や、月別表示した際に表示件数が多い場合に前のx件、次のx件というアンカを出力します。
<%= page_anchor %>
最新のコメント投稿者と、投稿日時を表示します。マウスカーソルを重ねるとコメント内容がツールチップで表示されます。 引数には何件分の情報を表示するかを指定します。省略した場合は最新3件分の情報が表示されます。
<%= recent_comment(3) %>
最新のトラックバックを一覧表示します。 引数には何件分の情報を表示するかを指定します。省略した場合は最新3件分の情報が表示されます。
<%= recent_tracjback(3) %>
引数に書籍のISBNコードを渡して各種オンライン書店へのリンクを出力します。
<%= isbn("4756142109") %> <%= isbn("4756142109","書籍名") %>
Wikiスタイルの場合は以下のように記述します。
{{isbn("4756142109")}} {{isbn("4756142109","書籍名")}}
引数に書籍のISBNコードを渡して各種オンライン書店へのリンクを出力します。isbnと違い、アンカだけでなく画像も表示します。
<%= isbn_image("4756142109") %> <%= isbn_image("4756142109","書籍名") %>
Wikiスタイルの場合は以下のように記述します。
{{isbn_image("4756142109")}} {{isbn_image("4756142109","書籍名")}}
Amazonの商品管理コードであるASINコードを引数に渡し、Amazonへのリンクを出力します。
<%= asin("4756142109") %> <%= asin("4756142109","リンクテキスト") %>
Wikiスタイルの場合は以下のように記述します。
{{asin("4756142109")}} {{asin("4756142109","リンクテキスト")}}
Amazonの商品管理コードであるASINコードを引数に渡し、Amazonへのリンクを出力します。asinと違い、アンカだけでなく画像も表示します。
{{asin_image("4756142109")}} {{asin_image("4756142109","リンクテキスト")}}
Wikiスタイルの場合は以下のように記述します。
{{asin_image("4756142109")}} {{asin_image("4756142109","リンクテキスト")}}
添付ファイルへのリンクを出力します。
<%= attach_file("ファイル名") %>
Wikiスタイルの場合は以下のように記述します。
{{attach_file("ファイル名")}}
添付したテキストファイルを整形済テキストとして出力します。
<%= attach_text("ファイル名") %>
Wikiスタイルの場合は以下のように記述します。
{{attach_text("ファイル名")}}
添付した画像ファイルを貼り付けます。
<%= attach_image("ファイル名") %>
Wikiスタイルの場合は以下のように記述します。
{{attach_image("ファイル名")}}
指定件数分の過去の日記の見出しを一覧表示します。件数を省略すると30日分を出力します。 サイドバーに入れておくと便利です。
<%= section_list(表示件数) %>
日記入力画面下部の「設定変更」ボタンを押すと設定変更画面に遷移します。ここでは日記の各種設定を行うことができます。 「日記更新」ボタンを押すと日記の入力画面に戻ります。ここでは説明が必要と思われる項目についてのみ触れます。
RSSファイル名を入力するとRSSが生成されるようになります。CGIから書き込み可能かつ、 URLで参照可能なファイル名を相対パスで入力してください。設定後、日記を更新するとRSSファイルが生成され、 画面上部のメニューに「RSS」というアンカが表示されます。
snsは見栄えをtDiary1.5系のテーマ(スタイルシート)でカスタマイズすることができます。 設定画面にはthemeディレクトリに配置されているcssファイルが一覧表示されます。 テーマを追加する場合はこのディレクトリにcss及び必要なファイルを配置してください。
なお、3.11からテーマはthemeディレクトリ直下のCSSファイルだけでなく、 ディレクトリごと配置しても認識するようになりました。
snsではHTMLスタイルとWikiスタイルの2種類の書式が存在し、日記の入力画面でどちらのスタイルを使用するかを選択することができますます。 新しい日記を書く場合、ここで選択したスタイルがデフォルトで選択されるようになります。
スタイルシートは、テーマで定義されているスタイル以外のスタイルを独自に記述することができます。 たとえば、サイドバーに対応していないテーマでサイドバーを使う場合は以下のように記述します。
div.main { margin-left: 25%; } div.sidebar { position: absolute; font-size: 80%; top: 80px; left: 0px; width: 20%; margin-left: 10pt; }
ヘッダ、フッタは自由にHTMLを記述することができます。 サイドバーに対応したテーマでは、ヘッダ、フッタを以下のように設定することでサイドバーを表示することができます。 なお、ヘッダ、フッタにプラグインを記述する場合はHTMLスタイルのスクリプトレット記法で記述します。
<div class="main">
</div> <div class="sidebar"> <!-- サイドバーで表示したい内容 --> </div>
管理画面で「トラックバック機能を利用する」にチェックを入れておくと、 日記の編集画面からトラックバックの送信を行うことができます。 トラックバックを送信するには日記の編集画面で「トラックバックの送信フォームを表示する」というリンクをクリックし、 トラックバックの送信フォームが表示します。この入力フォームでトラックバックタイトルとトラックバック先URL、 要約を入力して日記を保存すると、同時にトラックバックが送信されます。 トラックバックを受信するためにはtb.cgiを実行可能なようパーミッションを設定しておく必要があります。
なお、スパム対策のためにコメントとトラックバックに任意のフィルタリング処理を行うことができます。 plugin/filter.plを適当に編集してください。
Wikiスタイルで日記を書いている場合、FSWikiと連携することが可能です。以下のような機能を利用することができます。
連携機能を利用するにはdiary.cgiの先頭部分で$FSWIKI_URLにFSWikiのURL、$FSWIKI_DATAにFSWikiのデータファイルが格納されているディレクトリのパスを指定します。なお、ダブルブラケットを使用したリンク以外の機能に関しては管理画面でON/OFFを切り替えることができます。また、ページの自動リンクに関しては除外するページを指定することも可能です。
InterWikiNameが有効になっている場合、FSWiki側で登録されているInterWikiNameとは別に以下のInterWikiNameを使用することができます。
[[diary:20060101]] [[diary:20060101#2006010100]]
[[category:sns]]
Copyright 2002-2006 Naoki Takezoe <takezoe@aa.bb-east.ne.jp>