声のかけら。の設置マニュアルです。 このマニュアルと同じ内容が、配布されているアーカイブにも同梱されています。 最新版は、 最新版の設置マニュアルにあります。
What did I dream? I do not know:
The fragments fly like chaff.
Yet, strange, my mind was tickled so
I cannot help but laugh.
-- Nursery Rhymes
いったい どんな ゆめだっけ?
しらない しらない おぼえていない
ゆめのかけらが とんでいる
でもおかしいな こころのなかが
なんだか とっても くすぐったくて
おもわず くすくす わらっちゃう
―― マザーグース
こんにちは、結城浩です。
「声のかけら。」は、何気ない一言を書き込んだり、 誰かの一言にふと別の一言を添えてみたりすることで、 発想を広げたりのんびりしたりするための掲示板です。
「声のかけら。」では、みなさんが書き込んだ文章を「かけら」と呼んでいます。 誰かが文章(かけら)を書き込むと、 それはすぐにみんなから読めるようになります。 でも、掲示板の記事とはちがい「かけら」は何度でも書き換えたり、追記したりできます。 そして、ブログのように、更新した時間順にかけらが並んで表示されます。
「声のかけら。」では、Wikiのように誰でも自由に文章を書き込んだり、編集したりできます。 でも、Wikiのような整形ルールは何もありません。
こんな掲示板、あなたなら何に使うでしょう。
「声のかけら。」は、 Yuki::Kakera (かけらエンジン)というモジュールをベースに作られています。 Perlで作ったCGIを動かしたことがある人なら、きっとすぐに設置できるでしょう。 かけらエンジンを元に、あなた好みのやわらか掲示板を作ってみませんか?
Enjoy!
この「声のかけら。設置マニュアル」は声のかけら。をインストールするためのマニュアルです。 自作CGIをサーバに設置したことが一度はある方を対象としていますので、 パーミッションや転送モードなどの用語については解説を省略しています。 ご了承ください。
声のかけら。の最新情報は、以下のページで入手できます。 スクリプトのダウンロードもこちらから行うことができます。
以下は、作者のサイトで実際に運営されている「声のかけら。」です。
このソフトウェアはPerlと同じ条件でライセンスします。
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Copyright (C) 2000-2004 by Hiroshi Yuki. 結城浩
以下では「声のかけら。」の設置手順を簡単に示します。
クローバー版やニュースサイト版についてもこれに準じますので、 説明を省略します。
サーバ別の設置メモも参考にしてください。
配布ファイルを展開します。
配布ファイル一覧と見比べて、どのファイルが何であるかを把握してください。
配布しているアーカイブを展開すると、 index.cgiというファイルがあります。 これが「声のかけら。」本体です。
index.cgiの1行目を、 あなたのサーバのPerl処理系のパスに合わせて修正します。
例1:デフォルトのパス指定
#!/usr/bin/perl
例2:WindowsのActivePerlの場合のパス指定
#!perl
配布しているアーカイブを展開すると、 libディレクトリ以下にライブラリが展開されます。 このlibディレクトリの場所を、index.cgi内部でuse libを使って指定する必要があります。
展開したままで使用するなら修正は不要ですが、ライブラリの場所を移動したり、 ライブラリの場所をフルパスで設定する必要のあるプロバイダでは 修正が必要になります。
index.cgiのuse libの行を、 あなたの設定に合わせて変更します。
例1:デフォルトの指定
use lib "./lib";
例2:ライブラリを/usr/alice/local/libにおいた場合の指定
use lib "/usr/alice/local/lib";
index.cgiのはじめの方にある、変数$modifier_...の値を修正します。
$modifier_profile
設置者を示す文字列。
一般には、あなたのホームページへリンクし、名前を出すとよい。
例)
'<a href="http://www.example.com/your/home/page/">Your Name</a>'
$modifier_mail
管理者メールアドレス。
"でくくるときには@の前に\が必要なので注意すること。
例)
'you@example.com'
"you\@example.com"
$modifier_site_name
設置したCGIの名前。
例)
'声のかけら。'
'わいわい掲示板'
$modifier_site_url
設置したCGIの絶対URL。
.htaccessをサーバに転送しない場合には、
最後のindex.cgiを忘れないようにしてください。
例)
'http://www.example.com/kakera/'
'http://www.example.com/kakera/index.cgi'
$modifier_sendmail
書き込み時に管理者にメールを送るためのsendmailのコマンドライン。
空文字列なら、メールは送らない。
例)
''
'/usr/sbin/sendmail -t'
'/usr/sbin/sendmail -t -n'
注意: sendmailの実体がqmailの場合には、オプションは-tのみにしたほうがよいという報告をいただいています。
sendmailが使えるサーバで、
'/usr/sbin/sendmail -t -n'
がうまくいかないときには、
'/usr/sbin/sendmail -t'
を試してみるとよいかもしれません。
$modifier_theme_dir
「テーマ」を置くディレクトリ。フルパスが望ましい。
例)
"/usr/you/kakera/theme/default"
$modifier_theme_base_url
「テーマ」を置いたディレクトリのURL。絶対URLが望ましい。
これはCSSの場所として使うことを想定している。
theme/default/header.txtも参照のこと。
例)
"http://www.example.com/kakera/theme/default"
$modifier_data_dir
「かけら」を置くディレクトリ。フルパスが望ましい。
例)
"/usr/you/kakera/files"
$modifier_image_dir
アップロードした画像を置くディレクトリ。
例)
"/usr/you/kakera/images"
$modifier_image_base_url
画像のベースURL。絶対URLが望ましい。
例)
"http://www.example.com/kakera/images"
$modifier_touch_file
書き込みがあったときに更新されるファイル。フルパスが望ましい。
例)
"/usr/you/kakera/files/touched.txt"
$modifier_charset
「かけら」の文字コード。この文字コードでファイルが作られる。
例)
'sjis'
もしも、設置する声のかけら。を公開するならば、 theme/default/do_about.txt を適切に修正してください。 このファイルにはサイトの説明が書かれています。
FTPソフトなどを用いて、ファイルをサーバに転送します。 .htaccessは転送する必要がない(転送してはいけない)サイトもありますのでご注意ください。
拡張子 転送モード .png バイナリ .cgi テキスト .txt テキスト .pm テキスト .htaccess テキスト
配布ファイル一覧の記述にしたがって パーミッションを適切に設定します。
Webブラウザで設置した「声のかけら。」にアクセスしてください。 トップ画面が表示されればOKです。
配布されているアーカイブには、 以下の3種類のCGIに関するファイルが含まれています。 必要に応じて取捨選択してご利用ください。
ファイル末尾の数字644や755はパーミッションを表します。 この指定はサーバによって異なる場合がありますので、 サーバの管理者やCGI設置マニュアルなどの指示に従ってください。
index.cgi rwxr-xr-x (755) 実行するCGI本体 files/ rwxrwxrwx (777) 作られるかけらを保存する場所 images/ rwxrwxrwx (777) アップロードした画像を保存する場所 変更ファイル rw-rw-rw- (666) touched.txt、書き込まれるファイルなど そのほか rw-r--r-- (644)
すべてに共通するファイルです。
readme.html
ドキュメント。転送不要
tools/simple_theme_converter.pl
テーマの特殊タグ簡略化ツール。転送不要。
.htaccess (644)
必要に応じて転送。
.htaccessを設置するとCGIが動作しないプロバイダもあるので注意。
index.cgi (755)
CGI本体。
設置するときに修正が必要。
files/ (777)
かけらのファイルを書く場所なので、
書き込み可能にしておくこと。
files/touched.txt (666)
書き込みがあると更新されるファイル。
lib/HTML/Template.pm (644)
lib/Jcode/Constants.pm (644)
lib/Jcode/H2Z.pm (644)
lib/Jcode/Tr.pm (644)
lib/Jcode/Unicode/Constants.pm (644)
lib/Jcode/Unicode/NoXS.pm (644)
lib/Jcode.pm (644)
lib/Yuki/SingleFileDB.pm (644)
lib/Yuki/FileDB.pm (644)
lib/Yuki/Kakera.pm (644)
以上すべてライブラリ。
files/recent_changes.txt (666)
更新した「かけら」のIDの列が保存されるファイル。
自動的に作られるので転送不要。
files/search.txt (666)
最近検索した語句を保存するファイル。エスケープ済み。
自動的に作られるので転送不要。
theme/default/style.css (644)
スタイルシート。
theme/default/header.txtから参照されている。
theme/default/do_about.txt (644)
theme/default/do_date.txt (644)
theme/default/do_edit.txt (644)
theme/default/do_index.txt (644)
theme/default/do_read.txt (644)
theme/default/do_recent.txt (644)
theme/default/do_rss.txt (644)
theme/default/do_search.txt (644)
theme/default/do_top.txt (644)
theme/default/header.txt (644)
theme/default/footer.txt (644)
theme/default/item.txt (644)
theme/default/create.txt (644)
theme/default/localjump.txt (644)
テンプレートファイル。
do_がついているのが画面全体に対応するテンプレート。
それ以外は他から参照されているテンプレート。
以下のファイルは、 クローバー版声のかけら。が不要なら設置の必要はありません。
クローバー版声のかけら。とは、 Web日記システム tDiary ( http://www.tdiary.org/) 1.5の 「クローバー」テーマに対応させた声のかけら。です。 tDiaryのテーマを利用する際の参考にどうぞ。
clover.cgi (755) theme/clover/clover.css (644) tDiary由来。 theme/clover/clover_anchor.png (644) tDiary由来。バイナリモードで転送。 theme/clover/clover_anchor2.png (644) tDiary由来。バイナリモードで転送。 theme/clover/clover_h1.png (644) tDiary由来。バイナリモードで転送。 theme/clover/do_about.txt (644) theme/clover/do_date.txt (644) theme/clover/do_edit.txt (644) theme/clover/do_index.txt (644) theme/clover/do_read.txt (644) theme/clover/do_recent.txt (644) theme/clover/do_rss.txt (644) theme/clover/do_search.txt (644) theme/clover/do_top.txt (644) theme/clover/footer.txt (644) theme/clover/header.txt (644) theme/clover/item.txt (644) theme/clover/create.txt (644)
以下のファイルは、 ニュースサイト版声のかけら。 が不要なら設置の必要はありません。
Yuki::KakeraとYuki::SingleFileDBを使って、 簡易ニュースサイトを構築できます。
news.cgi (755) files/news.txt (644) これを書き換える。 theme/news/create.txt (644) theme/news/do_about.txt (644) theme/news/do_date.txt (644) theme/news/do_edit.txt (644) theme/news/do_index.txt (644) theme/news/do_read.txt (644) theme/news/do_recent.txt (644) theme/news/do_rss.txt (644) theme/news/do_search.txt (644) theme/news/do_top.txt (644) theme/news/footer.txt (644) theme/news/header.txt (644) theme/news/item.txt (644) theme/news/localjump.txt (644) theme/news/style.css (644)
files/news.txtを書き換えてサーバに置くと、 自動的に日付ごとに分けられて表示されます。 Webからの編集はできません。 入力ファイルは、news.cgiの中の$modifier_data_fileで指定します。
ここでは「声のかけら。」の基本的使い方を示します。 クローバー版声のかけら。およびニュースサイト版声のかけら。については省略します。
声のかけら。のトップページ にはテキストを書くエリアがあります。 ここに掲示板のような感覚で好きなことを書き込んでください。 新しい「かけら」(トピック)が作られます。
一行目は見出しになります。
かけらの下に追記フォームがあります。 そこにテキストを入力して追記ボタンを押すと、 現在のかけらにテキストを追加することができます。
editというリンクをたどると編集画面に移り、かけら全体を自由に編集できます。 誰が作った「かけら」でも編集できます。 書き換えた「かけら」はトップページで最上位に移動します。
かけらの色を変えることもできます。
誰でも編集できるという点で「声のかけら。」はWikiに似ています。 ただし、Wikiのような表記方法(整形ルール)は特にありません。 改行は改行になり、URLはリンクになるだけです。
検索フォームを使って、指定した文字列を含む「かけら」を検索することができます。
検索履歴は表示されていますが、削除することもできます。
permalinkというリンクをたどると、 その「かけら」全体を表示することができます。
「かけら」の周りの色を変えることができます。
editというリンクをたどった編集画面で、色を選択してください。
1つの「かけら」には、1つずつ画像をアップロードすることができます。
editというリンクをたどった編集画面で、参照...というボタンを押し、 画像ファイルを指定します。そして画像を送信するボタンを押すと、 その「かけら」に画像ファイルがくっついて表示されるようになります。
編集画面で画像を削除するというボタンを押すと、 その画像ファイルは削除されます。
いうまでもないことですが、公開されている「声のかけら。」に、 あなたが公開する権利をもたない画像をアップロードしてはいけません。
サーバごとの設置に関するメモです。 内容は古いかもしれません。 以下に示すサーバ以外に設置した方がいらっしゃいましたら、 フィードバックのフォームから情報をお寄せください。
Free Prohostingへの設置例です(2004年4月現在)。
.htaccessは転送しないでください。
パーミッションの設定は不要です。
index.cgiを以下のように修正してください。XXXの部分はユーザごとによって異なります。
my $modifier_site_url = "http://XXX.prohosting.com/~XXX/kakera/index.cgi"; my $modifier_theme_dir = "./theme/default"; my $modifier_theme_base_url = "http://XXX.prohosting.com/~XXX/kakera/theme/default"; my $modifier_data_dir = "./files"; my $modifier_image_dir = "./images"; my $modifier_image_base_url = "http://XXX.prohosting.com/~XXX/kakera/images/"; my $modifier_touch_file = "./files/touched.txt";
AAA!CAFEへの設置例です(2004年4月現在)。
.htaccessは転送しないでください。
index.cgiのパーミッションは705にします。
index.cgiを以下のように修正してください。XXXの部分はユーザごとによって異なります。
my $modifier_site_url = "http://cgi.XXX.aaacafe.ne.jp/~XXXXX/kakera/index.cgi"; my $modifier_theme_dir = "/usr/home/free/home/XXXXX/public_html/kakera/theme/default"; my $modifier_theme_base_url = "http://cgi.XXX.aaacafe.ne.jp/~XXXXX/kakera/theme/default"; my $modifier_data_dir = "/usr/home/free/home/XXXXX/public_html/kakera/files"; my $modifier_image_dir = "/usr/home/free/home/XXXXX/public_html/kakera/images"; my $modifier_image_base_url = "http://cgi.XXX.aaacafe.ne.jp/~XXXXX/kakera/images/";
lib/HTML/Template.pmの2174行近辺を以下のように修正してください。 原因は不明ですが、AAA!CAFEのFile::Specが古いのかもしれません。
修正前:
$filepath = $self->_find_file($filename,
[File::Spec->splitdir($fstack[-1][0])]
);
修正後:
$filepath = $self->_find_file($filename,
[ split(/\//, $fstack[-1][0]) ]
);
AAA!CAFEのバナーが出てしまうため、RSSはうまく機能しません。
iswebへの設置例です(2004年4月現在)。
.htaccessは転送しないでください。
index.cgiはkakera.cgiなどとしてcgi-binに格納し、パーミッションは755にします。
kakeraとlibは、ホームディレクトリ直下に格納します。
kakera/filesとkakera/imagesのパーミッションは777とします。
kakera.cgiをたとえば以下のように修正してください。 XXXの部分はユーザごとによって異なります。
my $modifier_site_url = "http://XXX.hp.infoseek.co.jp/cgi-bin/kakera.cgi" my $modifier_theme_dir = "../kakera/theme/default"; my $modifier_theme_base_url = "http://XXX.hp.infoseek.co.jp/kakera/theme/default"; my $modifier_data_dir = ../kakera/files"; my $modifier_image_dir = "../kakera/images"; my $modifier_image_base_url = "http://XXX.hp.infoseek.co.jp/kakera/images/";
Referer: によって閲覧を制限しているので注意してください。 つまり外部からリンクが張ってある場合、クリックしても表示されないことがあります。
情報提供は、 FukTommyさんです。 ありがとうございます。
XREAへの設置メモです。
基本的には問題なく動作するとのことです。
ただし、書き込み直後にトップページに戻る処理が正しく動作するために、 以下の記述を.htaccessに追加します。
LayoutIgnoreURI .cgi
その際には、theme/*/header.txtあたりに広告を手動でいれるようにしてください。
sendmailを使う場合には、以下のように指定します。
$modifier_sendmail = "/usr/sbin/sendmail -t";
以上の情報は、声のかけら。へ書き込んでくださった方によります。 情報提供ありがとうございます。
ロリポップへの設置例です(2004年5月現在)。
.htaccessは転送する必要はありません。
index.cgiのパーミッションは700にします。
設定マニュアルに表記されている「絶対 URL」は http: で始まる URI、 「フルパス」は /home/sites/.... で始まるパスです。 フルパスはレンタル契約時に送られるメール「アカウント情報のご案内」と、 ユーザー専用ページで確認できます。
書き込みをメール通知する機能を動かせません。 qmail のオプションを指定してもだめでした。 書き込み通知機能は RSS 購読で補えると思います。
index.cgiの文字コードはShift_JIS、改行コードはLFで動作確認しました。 改行コードはテキストエディタで制御してください。
以下はパーミッション設定です。
index.cgi を配置するディレクトリは手動で作成することをおすすめします。lib や theme などのディレクトリは一括アップロードで大丈夫だと思います。
以上の情報は、 声のかけら。ロリポップ設置例を元に、許可を得て転載・編集しました。感謝します。
plala への設置メモです(2004年7月現在)。
パーミッションは以下のようにしました。
kakera/ 705
index.cgi 704
files/ 705
touched.txt 604
images/ 705
lib/ 705(中のフォルダも同じ)
*.pm 604
theme/ 705
default/ 705
*.txt 604
.htaccessも使用可能ですが、特に使いませんでした。
sendmailは使用設定しませんでした。
Perlのパスは/usr/local/bin/perlでした。
#!/usr/local/bin/perl
フルパス指定のところは、すべて/home/XXXX/を使いました。 use libの行でもフルパスを使っていることに注意してください。
以下のXXやXXXXにはユーザ固有の情報が入ります。 ぷららではサイトのURLとCGIのURLがサーバ名の部分から違うので注意が必要です。
############################## # Libraries. use strict; use lib "/home/XXXX/kakera/lib"; use CGI::Carp qw(fatalsToBrowser); use Jcode; use Data::Dumper; use Yuki::Kakera; ############################## my $modifier_profile = '<a href="http://wwwXX.plala.or.jp/XXXX/">XXXX</a>'; my $modifier_mail = ''; my $modifier_sendmail = ""; my $modifier_site_name = 'XXXX'; my $modifier_site_url = "http://cgiXX.plala.or.jp/XXXX/kakera/index.cgi"; my $modifier_theme_dir = "/home/XXXX/kakera/theme/default"; my $modifier_theme_base_url = "http://cgiXX.plala.or.jp/XXXX/kakera/theme/default"; my $modifier_data_dir = "/home/XXXX/kakera/files"; my $modifier_image_dir = "/home/XXXX/kakera/images"; my $modifier_image_base_url = "http://cgiXX.plala.or.jp/XXXX/kakera/images/"; my $modifier_touch_file = "/home/XXXX/kakera/files/touched.txt"; my $modifier_charset = "sjis";
声のかけら。はプログラミングの知識を持たない人にもカスタマイズがしやすいように構成されています。
たとえば、見た目やページの構成は、 Perlでプログラミングしなくても HTMLやCSSの知識があれば修正することができます。
色やフォントなど、 画面の見た目を変えたいときには、スタイルシートを修正します。 スタイルシートの知識が必要です。
たとえば、theme/default/style.cssを修正します。
タイトルや表示する要素の場所など、 画面の構成そのものを変えたいときには、テーマを修正します。 HTMLの知識が必要です。
たとえば、theme/default/*.txtを修正します。
テーマを修正する際には、 テーマ作成のための特殊タグも参考にしてください。
トップ画面で表示される「かけら」の個数など、 主な設定を変更したいときには、index.cgiを修正します。 Perlの知識がちょっぴり必要です。
プログラムに機能を追加したいときには、 lib/Yuki/Kakera.pmを修正します。 Perlの知識が必要です。
デフォルトの.htaccessでは、 mod_rewriteを使っています。 これは、 http://www.example.com/kakera/20040420070958.html というHTML風のURLで、 http://www.example.com/kakera/?20040420070958 へアクセスするためです。
Apacheでmod_rewriteが使えるようになっている必要があります。 自分でhttpd.confを触れる人はhttpd.confの中を以下のように修正します。
#LoadModule rewrite_module modules/mod_rewrite.so ↓ LoadModule rewrite_module modules/mod_rewrite.so
mod_rewriteを使う場合(デフォルト)
Options ExecCGI FollowSymLinks AddType application/x-httpd-cgi .cgi DirectoryIndex index.cgi RewriteEngine on RewriteRule ^([0-9]+)\.html$ ?$1
mod_rewriteを使わない(使えない)場合
Options ExecCGI AddType application/x-httpd-cgi .cgi DirectoryIndex index.cgi
.htaccessによる制御ができないサーバで URLに'?'を含めたくない場合には、 次のようにindex.cgiを修正します。
$modifier_site_urlにCGI名まで含める
my $modifier_site_url = 'http://www.example.com/kakera/index.cgi';
use_html_permalinkを1にする
my $cgi = new Yuki::Kakera(
...
use_html_permalink => 1,
...
);
このようにすると、かけらのpermalinkは、 http://www.example.com/kakera/index.cgi/20040417141503.html のようになります。
files, images以下のファイルに 直接アクセスさせたくない場合には、 以下のような内容の、 files/.htaccessおよびimages/.htaccessというファイルを作るとよいでしょう。
Deny from all
声のかけら。では、 テーマを修正することで、サイトデザインを自由に変更できます。
themeディレクトリ以下に自分のテーマディレクトリを作り、 そこに theme/default の内容をすべてコピーし、 自分なりのテーマを作るとよいでしょう。
CGIが使用するテーマの場所は、 index.cgiの$modifier_theme_dirで指定します。 またスタイルシートの場所は$modifier_theme_base_urlで指定します。
テーマを作る際に利用できる特殊タグを以下に示します。 声のかけら。を動作させると、このタグが自動的に置換されます。
(技術的な詳細) Yuki::Kakeraのコンストラクタに渡すオプションのハッシュのうち、 大文字と_からなる名前のものは、 自動的にテーマで使える名前になります。 つまり、Yuki::Kakeraを修正しなくても、 index.cgiとテーマを修正するだけであなたが必要な置換を行わせることが可能です。
(Version 1.0.0以降) タグにはHTML::Template標準の、TMPL_... がついたものとつかないものがあります。 以下の解説ではTMPL_...がついたものはかっこでくくって示します。 どちらを使ってもかまいません。
tools/simple_theme_converter.plを用いると、 自動的に特殊タグを簡略化することができます。 simple_theme_converter.plの使い方は、
perldoc simple_theme_converter.pl
を参照してください。
<VERSION>
Yuki::Kakeraのバージョン番号。
(<TMPL_VAR NAME=VERSION>)
<PROFILE>
設置者のプロフィール。
ホームページへのリンクになっていることが期待される。
(<TMPL_VAR NAME=PROFILE>)
<SITE_URL>
サイトのURL。
これは非常によく使われる。
(<TMPL_VAR NAME=SITE_URL>)
<SITE_NAME>
サイトの名前。
(<TMPL_VAR NAME=SITE_NAME>)
<THEME_BASE_URL>
テーマのベースURL。
CSSファイルの場所を指定する際に利用する。
(<TMPL_VAR NAME=THEME_BASE_URL>)
<ITEM_TITLE>
現在の「かけら」のタイトル。
(<TMPL_VAR NAME=ITEM_TITLE>)
<ITEM_STYLE>
現在の「かけら」のスタイル。数字です。
(<TMPL_VAR NAME=ITEM_STYLE>)
<ITEM_BODY>
現在の「かけら」の内容。
(<TMPL_VAR NAME=ITEM_BODY>)
<IF ITEM_SUMMARIZED> A <ELSE> B </IF>
「かけら」が中略されているときにはA、さもなくばB。
(<TMPL_IF NAME=ITEM_SUMMARIZED> A <TMPL_ELSE> B </TMPL_IF>)
<ITEM_SUMMARY_HEAD>
「かけら」が中略されているときの、省略されていないはじめの部分。
(<TMPL_VAR NAME=ITEM_SUMMARY_HEAD>)
<ITEM_SUMMARY_TAIL>
「かけら」が中略されているときの、省略されていない終わりの部分。
(<TMPL_VAR NAME=ITEM_SUMMARY_TAIL>)
<IF ITEM_STYLE_d> A <ELSE> B </IF>
「かけら」のスタイルがdのときにはA、さもなくばB。
(<TMPL_IF NAME=ITEM_STYLE_d> A <TMPL_ELSE> B </TMPL_IF>)
<ITEM_DATE>
現在の「かけら」の日付。
(<TMPL_VAR NAME=ITEM_DATE>)
<ITEM_URL>
現在の「かけら」のpermalinkのURL。
use_html_permalink => 1のときには URL/$id.htmlという形式になり、
それ以外のときには URL?$id という形式になる。
(<TMPL_VAR NAME=ITEM_URL>)
<ITEM_IMAGE_URL>
現在の「かけら」の画像へのURL。
(<TMPL_VAR NAME=ITEM_IMAGE_URL>)
<ITEM_IMAGE_URL> A <ELSE> B </IF>
画像があるときはA、さもなくばB。
(<TMPL_IF NAME=ITEM_IMAGE_URL> A <TMPL_ELSE> B </TMPL_IF>)
<ITEM_EDIT_URL>
現在の「かけら」の編集用URL。
(<TMPL_VAR NAME=ITEM_EDIT_URL>)
<ITEM_NUM>
ページ内での「かけら」一覧にふられる番号。
(<TMPL_VAR NAME=ITEM_NUM>)
<IF ITEM_ALMOST_FULL> A </IF>
もうちょっとで、この「かけら」がいっぱいになるときにはA。
(<TMPL_IF NAME=ITEM_ALMOST_FULL> A </TMPL_IF>)
<LOOP ITEM_LIST>...</LOOP>
「かけら」の一覧。かけらごとに...を展開。
(<TMPL_LOOP NAME=ITEM_LIST>...</TMPL_LOOP>)
<EDIT_ID>
編集する「かけら」のID。
(<TMPL_VAR NAME=EDIT_ID>)
<EDIT_BODY>
編集する「かけら」の内容。
(<TMPL_VAR NAME=EDIT_BODY>)
<IF ERROR_TOOLONG> A </IF>
書き込みが長すぎるときにはA。
(<TMPL_IF NAME=ERROR_TOOLONG> A </TMPL_IF>)
<SEARCH_WORD>
エンコードされていない現在の検索文字列。
(<TMPL_VAR NAME=SEARCH_WORD>)
<SEARCH_ENCODED_WORD>
エンコードされている現在の検索文字列
(<TMPL_VAR NAME=SEARCH_ENCODED_WORD>)
<LOOP RSS_ITEM_LIST>...</LOOP>
RSSの項目一覧。
(<TMPL_LOOP NAME=RSS_ITEM_LIST>...</TMPL_LOOP>)
<RSS_ITEM_LINK>
「かけら」のURL。
(<TMPL_VAR NAME=RSS_ITEM_LINK>)
<RSS_ITEM_ABOUT>
「かけら」のURL。
(<TMPL_VAR NAME=RSS_ITEM_ABOUT>)
<RSS_ITEM_TITLE>
「かけら」のタイトル。
(<TMPL_VAR NAME=RSS_ITEM_TITLE>)
<RSS_ITEM_DESCRIPTION>
「かけら」の説明文。本文の一行目
(<TMPL_VAR NAME=RSS_ITEM_DESCRIPTION>)。
<RSS_ITEM_DATE>
「かけら」の更新日時。いまは機械的に日本時間にしている。
(<TMPL_VAR NAME=RSS_ITEM_DATE>)
<RSS_ITEM_CONTENT>
「かけら」の本文全体。
(<TMPL_VAR NAME=RSS_ITEM_CONTENT>)
主に開発者向けの技術情報です。
「かけら」はfilesディレクトリ以下に作られ、 ファイル名は、YYYYMMDDhhmmss.txtという形式になります。
たとえば、2004年4月25日16時40分12秒に作られたファイルは、 20040425164012.txtという名前になります。
1行目は最終更新日時とスタイルをコロンで区切ったもの、 2行目はタイトル、 3行目以降が本文になります。
「かけら」の一例を示します。 この「かけら」は、2004年3月30日18時50分7秒に作られました(すなわちファイル名は20040330185007.txt)。
この時点での最終更新日時は2004年4月1日14時49分59秒で、 タイトルは「気軽に腰掛けられるベンチ」、 そしてスタイルは3です。
20040401144959:3 気軽に腰掛けられるベンチ 先日、etoさんのテキスト「情報空間に街角や路地はどう生成されるか」 http://eto.com/1994/space/index.html を読んで、気になった箇所があった。 イギリスの大学の中には (中略)あちこちに座る事ができるような場所がある。 結局のところ、イギリスの大学のような空間は話をするための空間なのだ。 現在のInternetの空間の中では、そのような会話のできる空間というのは、ほとんどない。 こうして、誰でも気軽にcreate, editできる空間ってそんなイギリスの大学のベンチ的かも。 ---- なるほどね。 ---- 書いた人:(^^) ---- のんびりしている雰囲気がよいかも。 ---- ということは、あまりがちゃがちゃリンクがないほうがよいかもね。 ---- いまのままでも十分きれいだと思いますよ。
index.cgiではYuki::Kakeraのコンストラクタ(new)に必要なオプションを渡して CGIの振る舞いを制御します。
index.cgiの中の$modifier_...変数は、 このコンストラクタに情報を渡すため、 もしくはフック関数の中で使うためにあります。
my $cgi = new Yuki::Kakera(%option);
オプションには必須のものとそうではないものがあります。 また、/^[A-Z_]+$/にマッチするオプション名は、その値が <TMPL_VAR NAME=オプション名>としてテーマで使用することができます。
(Version 1.0.0以降) DATA_FILEは使われなくなりました。
PROFILE (必須)
設置者のプロフィール。
SITE_NAME (必須)
サイト名。
SITE_URL (必須)
サイトのURL。
THEME_DIR (必須)
テーマのディレクトリ。
THEME_BASE_URL (必須)
テーマのディレクトリに対応したURL。
DATA_DIR (hook_tie_methodのいずれか必須)
Yuki::FileDBを用いるときのディレクトリ名。
IMAGE_DIR
画像のアップロードを行うディレクトリ名。
IMAGE_BASE_URL
画像のアップロードを行った場所に対応するURL。
テーマとして展開されないオプション。
use_html_permalink
mod_rewriteを使うときには1にする。デフォルトは1。
max_summary_length
中略を行うバイト数の単位。デフォルトは500。
max_msg_length
かけらの最大バイト数。デフォルトは5000。
max_recent_changes
トップで表示するかけらの数。デフォルトは20。
max_search_count
保存する最近の検索語の個数。デフォルトは20。
max_post_length
アップロードできる1個の画像サイズ。0にするとアップロード不可。デフォルトは0。
debug
Yuki::Kakeraのインスタンスの内容をダンプしてみせるオプション。デフォルトは0。
実際の運用では0にするのがよい。
フック関数群。 Yuki::Kakeraの内部からindex.cgiを呼び出すための関数群。 すべて未定義でもかまわない。
hook_send_mail
書き込みがあったときにメールを送るためのフック関数。
未定義ならメールは送られない。
hook_touch
書き込みがあったときに呼び出されるフック関数。
更新ファイルをtouchするために用いる。
未定義なら何も行わない。
hook_code_convert
ユーザからのデータ送信で文字コードを変換するフック関数。
ここで変換した後の文字コードでファイルに保存される。
theme/default/header.txtの中にも文字コードに依存した部分があるので確認すること。
未定義なら文字コード変換は行わない。
hook_rss_code_convert
RSS出力用に文字コードを変換するフック関数。
ファイルにはShift_JISで保存し、RSSではrtf-8で出力したいときなどに用いる。
theme/default/do_rss.txtの中にも文字コードに依存した部分があるので確認すること。
未定義ならRSS用に文字コード変換は行わない。
hook_tie_method
デフォルトのデータベースYuki::FileDBを用いないときに使う。
未定義ならYuki::FileDBを用いる。
利用例はnews.cgiにある。
hook_untie_method
デフォルトのデータベースYuki::FileDBを用いないときに使う。
利用例はnews.cgiにある。
Yuki::Kakeraを制御するmycmdの一覧です。
mycmd=top トップ画面表示(do_top.txt) mycmd=read アイテム表示(do_read.txt) mycmd=edit 編集画面表示(do_edit.txt) mycmd=search 検索結果表示(do_search.txt) mycmd=recent 更新順の表示(do_recent.txt) mycmd=index 作成順の表示(do_index.txt) mycmd=about 解説文の表示(do_about.txt) mycmd=rss RSSの表示(do_rss.txt) mycmd=date 指定範囲日付のかけら表示(do_date.txt) mycmd=write 編集の実行 mycmd=create 新規作成 mycmd=delsearch 検索履歴の削除 mycmd=add 追記の実行 mycmd=random ランダムなかけらの表示 mycmd=upload 画像アップロードの実行
以下は声のかけら。の今後に関するメモです。
>8 (ハサミ)という行があったらそこでトピックを二分割する機能。ただし、トピックが長いときにしか使えないように。→これはやめる方向で。
以下のツール・サイトに影響を受けています。ここに感謝します。 特にninjinさんのRandomNoteには多大なインスピレーションをいただきました。 ありがとうございます。
なお、 ファイルの内容の「かけら」の作成者はshinoさんです。 当時作り始めていたCGIに対するこの書き込みが「声のかけら。」の方向性――ふわふわ気軽に――を定めました。 「なるほどね。」という返事は結城が書いたものです。 shinoさん、それから引用文を書かれたetoさんに感謝します。
声のかけら。およびYuki::Kakera(かけらエンジン)の更新履歴です。
diff -Nru kakera.orig/lib/Yuki/Kakera.pm kakera/lib/Yuki/Kakera.pm
--- kakera.orig/lib/Yuki/Kakera.pm 2004-05-19 16:56:50.000000000 +0900
+++ kakera/lib/Yuki/Kakera.pm 2007-07-03 22:18:04.000000000 +0900
@@ -800,6 +800,8 @@
if (defined($self->{form}->{myid})) {
return if $self->{form}->{myid} =~ /^$id_pattern$/;
$self->{form}->{myid} = _create_id();
+ } elsif (defined($self->{form}->{mymsg})) {
+ $self->{form}->{myid} = _create_id();
}
}
(^_^; はこの版をどうぞ。
このソフトウェアに関してのご意見やバグ報告、 それから「設置しましたよ報告」は大歓迎です。
サポート用の掲示板やメーリングリストはありませんので、 何かありましたら、 声のかけら。に書き込むか、 フィードバックのフォームをご利用ください(でも、返事は期待しないでくださいね)。