なつみかん(NATSU-MICAN)

release ver.3.1(20010206)

設定リファレンス

ここでは、「なつみかん」において設定できる項目・および置換指定子について解説します。
「なつみかん」を初めてご利用の方は、先に「スターティングガイド」で動作することを確認してからこちらの設定をすすめて下さい。

nm.phの設定項目については、それぞれの関数ごとの設定にファイルを切り分けて、関数実行の際その設定を呼び出すようにできます。
ただし、「共通設定」、「info.cgi設定」、「nmp.cgi設定」だけはnm.phファイルに記述してください(info.cgi設定、nmp.cgi設定は、これらのCGIを使用しないときは無くても良いです)。

nm.phの設定項目

共通設定

$nm::cf::????の設定値
「共通設定」は、必ずnm.phファイル内に無いといけません。

$os(書式:UNIX互換環境:「unix」、Windows:「win」、Macintosh:「Mac」)
「なつみかん」を動作させるマシンのOSの種類を入れます。
$url(書式:URL)
「なつみかん」を使ったサイトのURLを入れておきます。
$base(書式:絶対パス)
「なつみかん」の動作の基準となるディレクトリを絶対パスで入れておきます。
ここをきちんと設定しないと正常に動作しないのでご注意下さい。
$bin(書式:パス)
実行ファイル(nm.plなど)、設定ファイル(nm.phやsites.lirsなど)、テンプレートHTML(base.html)などを置いておくディレクトリを指定します。
ここをきちんと設定しないと正常に動作しないのでご注意下さい。
$tmp(書式:パス)
リモートサイトの情報ファイルや一時ファイルを置いておくディレクトリを指定します。
$ext(書式:パス)
HTMLやLIRS、hina.txtファイルなどを出力するディレクトリを指定します。
$localTimeZone(単位:秒)
「なつみかん」を動作させるマシンの時間帯をGMTからの誤差(秒)で指定します。
日本はJST(+0900)なので、「32400」を指定します。
なお、ここを設定するときはサマータイムは考慮に入れないようにします(サマータイムは自動的に認識するため)。
$gzip(書式:絶対パス&ファイル名)
LIRS出力で使うgzipの場所を指定します。
UNIX環境において、場所がわからないときは、コマンドラインで
which gzip
のようにすれば、場所がわかると思います。
また、Windows環境では、http://www.gzip.org/などからダウンロードしたgzip.exeを「なつみかん」実行ファイルディレクトリにコピーした上で、
$gzip = 'gzip.exe';
とします。
$referer(書式:URL)
対象サイトにアクセスしたときに渡される「リファラー(referer)」を指定します。通常は「$nm::cf::url」としておいてください。
$http_proxy(書式:URL)
プロキシーサーバーを通さなければならないときに、そのサーバー名を指定します。
$priority(書式:数値)
「なつみかん」のサーバー上での動作優先度を0(優先度最高:setpriorityを実行しない)〜10(優先度最低)までの数値で指定します(UNIXのみ有効)。
$re(書式:絶対パス&ファイル名)
日記システム側からの更新時刻通知を受け取るCGI「re.cgi」で、受け取った情報をLIRS形式で保存するファイルのファイル名を指定します。 このファイルはdetect::detectに読み込まれるとすぐ削除されます。
@ua(書式:文字列の配列)
日記システム側からの更新時刻通知を受け取るCGI「re.cgi」で、受信する相手プログラムのUser Agentを指定します。
User Agentにこのリストにある文字列を含んでいる通信相手のみを、更新時刻通知対象とします。
なお、何も入力されていない場合は更新時刻通知を受け入れないようになります。
@denyserver(書式:文字列の配列(サーバー名・ドメイン名))
日記システム側からの更新時刻通知を受け取るCGI「re.cgi」で、受信を禁止する相手のサーバー名・ドメイン名を指定します。
@denyserverリストに無くて、@allowserverにあるサーバーからのみ更新時刻通知を受け付けます。
この配列に何も入っていないと、受信を許可するか禁止するかは@allowserverの設定に依存するようになります。
@allowserver(書式:文字列の配列(サーバー名・ドメイン名))
日記システム側からの更新時刻通知を受け取るCGI「re.cgi」で、受信を許可する相手のサーバー名・ドメイン名を指定します。
@denyserverでの指定によりますが、通常@allowserverで指定したサーバー名・ドメイン名を持つサーバーからのみ、更新時刻情報を受け付けます。
@allowserverが空の状態だと、@denyserverチェックで引っかからなかったサーバー全てから更新時刻通知を受け付けます。
@allowserverも@denyserverも空の状態だと、全てのサーバーから更新時刻通知を受け付けるようになります。

info.cgiの設定

$nm::cf::info::????の設定値
「info.cgiの設定」は、必ずnm.phファイル内に無いといけません(使用しないときはかまいません)。

$core(書式:絶対パス&ファイル名)
コアダンプで吐かれたcoreファイルの場所と名前を指定します。
$tgthtml(書式:絶対パス&ファイル名)
きちんとHTMLが出力されたかどうかを判定するHTMLファイルを指定します。また、最終更新日時を判定する元となるHTMLもここで指定します。%htmlで指定したHTMLのいずれかになるでしょう。
$deffsize(単位:バイト)
$tgthtmlで指定したファイルが正常に出力されたと判断できる容量をバイト数で指定します。
$wtwestart(単位:時)
週末における混雑時間帯開始時刻を指定します。
$wtweend(単位:時)
週末における混雑時間帯終了時刻を指定します。
$ftwestart(単位:時)
週末における快適更新時間帯開始時刻を指定します。
$ftweend(単位:時)
週末における快適更新時間帯終了時刻を指定します。
$wtnmstart(単位:時)
平日における混雑時間帯開始時刻を指定します。
$wtnmend(単位:時)
平日における混雑時間帯終了時刻を指定します。
$ftnmstart(単位:時)
平日における快適更新時間帯開始時刻を指定します。
$ftnmend(単位:時)
平日における快適更新時間帯終了時刻を指定します。
これ以降は通常の置換指定子の他に、下記の置換指定子を使うことができます。
%ver%:なつみかんのバージョン
$startmes(書式:文字列)
info.cgiで、一番最初に追加する文字列を指定します。置換指定子を入れておくと、現在時刻を基準として自動的に置換されます。
$lstmod(書式:文字列)
info.cgiで、設置するサイトの最終更新日時を表記する文字列を指定します。「$tgthtml」を参照しますのでこの設定もきちんとしておく必要があります。
通常の置換指定子を入れておくと、最終更新日時を基準として自動的に置換されます。
$antennainfo(書式:文字列)
なつみかんが動作しているときのメッセージを指定します。後述の$updatetimeと排他で表示されます。
通常の置換指定子を入れておくと、なつみかん動作開始日時を基準として自動的に置換されます。
$updatetime(書式:文字列)
なつみかんが更新にかかった時刻を表記します。前述の$antennainfoと排他で表示されます。
通常の置換指定子を入れておくと、なつみかんの更新にかかった時間を基準として自動的に置換されます。
$timeinfonm(書式:文字列)
平日の混雑時間帯の時に表示されるメッセージを指定します。
$timeinfowe(書式:文字列)
週末の混雑時間帯の時に表示されるメッセージを指定します。
$timeinfoft(書式:文字列)
快適時間帯の時に表示されるメッセージを指定します。
$coreinfo(書式:文字列)
コアダンプが発生しcoreファイルが発見されたときに表示されるメッセージです。
通常の置換指定子を入れておくと、コアダンプした時間を基準として自動的に置換されます。
$idcaution(書式:文字列)
HTMLファイルの出力に失敗したときに表示されるメッセージです。
$endmes(書式:文字列)
最後に追記されるメッセージです。

nmp.cgiの設定

$nm::cf::nmp::????の設定値
「nmp.cgiの設定」は、必ずnm.phファイル内に無いといけません(使用しないときはかまいません)。

$nmpdir(書式:絶対パス)
nmp.cgi が生成する個人設定を保存しておくディレクトリです。
セキュリティ確保のため必ずデフォルトから変更してください。
$passwdfile(書式:ファイル名)
nmp.cgiが生成するパスワードファイルのファイル名です。
セキュリティ確保のため必ずデフォルトから変更してください。
@readcfg(書式:ファイル名の配列)
更新時刻取得対象設定ファイルを配列で指定します。ここで指定したファイルは、非購読対象を設定するときに使われます。
入力元は$nm::cf::binの値に従います。
「出力用設定ファイル」(@nm::cf::nmp::cfg)と同じURLリストが取得できるものを指定してください。
@nm::cf::det::cfgのようにURLで指定することはできません。通常はsites.lirsか、出力されたnatsumican.lirsを指定してください。
なお、旬・月・年でURLが変わる取得先を登録している場合は必ずsites.lirsを指定してください。
$rem(書式:ファイル名)
リモートアンテナ設定ファイルを指定します。
入力元は$nm::cf::binの値に従います。
$nm::cf::det::remのようにURLで指定することはできません。通常は「remote.cfg」を指定しておきます。
@cfg(書式:ファイル名の配列)
出力用設定ファイルを配列で指定します。ここで指定したファイルは、実際に購読リストを表示するときに使われます。
入力元は$nm::cf::binの値に従います。
「更新時刻取得対象設定ファイル」(@nm::cf::nmp::readcfg)と同じURLリストが取得できるものを指定してください。
@nm::cf::det::cfgのようにURLで指定することはできません。通常は出力されたnatsumican.lirsを指定してください。
$basefile(書式:絶対パス&ファイル名)
nmp.cgiの出力時にテンプレートとなるHTMLファイルを絶対パス&ファイル名で指定します。
内部の置換指定子はnmp.cgi独自のものしか使えません。そのため、テンプレートとなるベースのHTMLは別途作成してください。
なお、通常はなつみかんによる定時更新の際htmlrender::htmlrenderを通したものを指定してください。
$template(書式:文字列)
nmp.cgiのHTML出力の際の型を指定します。
置換指定子はnm::cf::htmlのものと一緒です。ただし「%etc%」の置換(&etcscript())はnm::cf::htmlが読み出せたときのみ有効です。
$template_select(書式:文字列)
nmp.cgiでサイト選択をするときのHTML出力の型を指定します。
置換指定子はnm::cf::htmlのものと一緒です。ただし「%etc%」の置換(&etcscript())はnm::cf::htmlが読み出せたときのみ有効です。また、%url%、%vurl%、%option%は正常動作しない場合がありますので使わないでください。
なお、購読希望チェックボックスを指定する「%checkbox%」置換指定子を必ず入れてください。
$introduction{"personalized"}(書式:文字列)
nmp.cgiのインフォメーション表示の際、personalizeされている時のメッセージを設定します。
ここはデフォルトではPerlのヒアドキュメントで書かれています。
$introduction{"not_personalized"}(書式:文字列)
nmp.cgiのインフォメーション表示の際、personalizeされていない時のメッセージを設定します。
ここはデフォルトではPerlのヒアドキュメントで書かれています。
$introduction{"select"}(書式:文字列)
nmp.cgiのインフォメーション表示の際、非購読サイトを設定するときのメッセージを設定します。
ここはデフォルトではPerlのヒアドキュメントで書かれています。
$introduction{"regist"}(書式:文字列)
nmp.cgiのインフォメーション表示の際、非購読サイトを登録したあとに表示されるメッセージを設定します。
ここはデフォルトではPerlのヒアドキュメントで書かれています。
$introduction{"illegal_password"}(書式:文字列)
nmp.cgiのインフォメーション表示の際、入力されたパスワードが間違えていたときに表示されるメッセージを設定します。
ここはデフォルトではPerlのヒアドキュメントで書かれています。
$introduction{"noid"}(書式:文字列)
nmp.cgiのインフォメーション表示の際、指定されたユーザー毎の設定ファイルがサーバー側に存在しなかったときに表示されるメッセージを設定します。
ここはデフォルトではPerlのヒアドキュメントで書かれています。

detect::detect関数で使われる設定

$nm::cf::det::????の設定値

$rem(書式:ファイル名かURL)
リモート情報取得元を指定するconfigファイルの名前を指定します。
ここでURL指定することで、他サイトの他アンテナの設定ファイルを取得してそのまま使用することができます(「file://」の項は自動削除されるか正常動作しません)
「$cfg」と同じ物を指定することもできます。この場合、同一ファイルに$remの情報と$cfgの情報を両方書いておくことができます。
@cfg(書式:ファイル名かURLの配列)
更新情報取得ターゲットサイトを指定するconfigファイルの名前を指定します。
ここでURL指定することで、他サイトの他アンテナの設定ファイルを取得してそのまま使用することができます。
「$rem」と同じ物を指定することもできます。この場合、同一ファイルに$remの情報と$cfgの情報を両方書いておくことができます。
$out(書式:ファイル名)
LIRS形式で記述された更新時刻取得結果のファイルの名前を指定します。出力先ディレクトリは$nm::cf::extの値に従います。
ここで指定するファイルがリモート用LIRSファイルの元となったり、更新時刻キャッシュとなったり、HTML出力用の結果ファイルとなったりします。

convert::convert関数で使われる設定

$nm::cf::conv::????の設定値

$in(書式:ファイル名)
他形式に変換する元となるLIRSファイルの名前を指定します。入力元ディレクトリは$nm::cf::extの値に従います。
ここで指定するファイルから、DI形式やhina.txt形式に変換されます。
$hinaout(書式:ファイル名)
朝日奈アンテナのhina.txt形式に変換したファイルの出力先の名前を指定します。
特に使わなければコメントアウトして下さい。コメントアウトされていると出力しません。
$diout(書式:ファイル名)
DI(Document Information)形式に変換したファイルの出力先の名前を指定します。
使用しない場合はコメントアウトして下さい。コメントアウトされていると出力しません。

parseLIRS::parse関数で使われる設定

$nm::cf::ps::????の設定値

$in(書式:ファイル名)
分割する元となるLIRSファイルの名前を指定します。入力元ディレクトリは$nm::cf::extの値に従います。
ここで指定するファイルから、下記の「@options」で指定したオプション指定値ごとのLIRSファイルに切り分けられます。
@options(書式:オプション指定値||出力ファイル名 を一項目とした配列)
「なつみかん」形式LIRSのオプションに指定された値でどのLIRSファイルに切り分けるかを指定します。
LIRSの各レコードで、「||」の左辺で指定したオプションが検出されると、「||」の右辺で指定したLIRSファイルに出力されます。
「||」の左辺に「*」を指定すると、他で指定したどのオプションにも該当しなかったLIRSレコードを書き出すファイルを右辺に指定できます(ここで指定しないと該当しなかったLIRSレコードは破棄されます)。
$exclusive(書式:yesかno)
LIRSファイルを分割する際、オプション指定値が複数指定されていて重複するときに、該当するファイル全てにLIRSレコードを書き出すかどうかを指定します。
なお、書き出される優先度は、@optionで値指定した順番と同じです(前に指定するほど優先される)。

parseLIRS::marge関数で使われる設定

$nm::cf::mg::????の設定値

@input(書式:LIRSファイル名の配列)
結合するLIRSファイルの名前を指定します。入力元ディレクトリは$nm::cf::extの値に従います。
ここで指定するファイルを結合して、下記の「$output」で指定したLIRSファイルに出力します。
$output(書式:ファイル名)
結合したLIRSファイルを出力するファイル名を指定します。出力先ディレクトリは$nm::cf::extの値に従います。

htmlrender::htmlrender関数で使われる設定

$nm::cf::html::????の設定値

$rem(書式:ファイル名かURL)
リモート情報取得元を指定するconfigファイルの名前を指定します。
ここでURL指定することで、他サイトの他アンテナの設定ファイルを取得してそのまま使用することができます。
%html(書式:出力先HTMLファイル名=>ベースになるHTMLファイル名 の連想配列)
HTMLファイルの出力ファイルとその元ファイルを指定します。
出力先は$nm::cf::extの値に、ベースとなるHTMLの入力元は$nm::cf::binの値に従います。
$template(書式:文字列(HTMLなど))
ここの更新時刻情報をこのテンプレートに従って出力します。
ここでは通常の置換指定子の他に、下記の置換指定子を使うことができます。
%url%:URL
%vurl%:実際に時刻情報が取れるURL
%title%:日記名
%author%:日記作者名
%remote%:リモート取得元
%remsrc%:リモート情報源
%getdata%:情報取得方法
%etc%:その他の追記情報
%tz%:そのサイトのタイムゾーン表記
\t:タブ
\n:改行
sub etcscript(書式:Perlサブルーチン)
サイト情報のオプション部分(%etc%)を処理するPerlスクリプトを直に書くことができます。
「$etc」が追記情報の含まれる変数で、これに対してPerlで置換などの処理を指示することができます。
特に何も指定しないときはこの中を空にしてください。ここを削除したりコメントアウトすると誤動作します。

htmlrender::except関数で使われる設定

$nm::cf::ex::????の設定値

@html(書式:ファイル名の配列)
htmlrender::exceptは、ここで指定したHTMLから、リモートアンテナへのリンクや「?mmddhhss」などを取り除きます。
これは、そのHTMLをベースとしてWeb巡回ソフトで利用するときに有効に作用します。

「nm.pl」の設定項目

$headfile(書式:固定)
nm.pl実行時に第一引数として指定する、デフォルト設定ファイル(通常はnm.ph)の値が入っています。第一引数を省略すると、デフォルトのnm.phが代入されます。
他の関数を呼び出すときに、$headfileを引数として設定することができます。
use detect;(書式:固定)
これを指定すると、detectモジュール下の関数(detect::detect)を使用することができるようになります。
&detect::detect('detect用設定ファイル'[, 'option']);(書式:detect用設定ファイル:ファイル名、option:noremote,noget)
これを指定すると、関数「detect::detect」が動作します。
「detect用設定ファイル」は、「nm.ph」の「detect::detect関数で使われる設定」を切り出した設定ファイル、もしくは「nm.ph」自体を指定します。
「option」は省略可能です。「option」に「noremote」を指定すると、リモート情報を使用せず、自力取得で更新時刻を得ようとします。
「option」に「noget」を指定すると、自力取得せずリモート情報のみで更新時刻を得ようとします。
use convert;(書式:固定)
これを指定すると、convertモジュール下の関数(convert::convert)を使用することができるようになります。
&convert::convert('convert用設定ファイル');(書式:convert用設定ファイル:ファイル名)
これを指定すると、関数「convert::convert」が動作します。
「convert用設定ファイル」は、「nm.ph」の「convert::convert関数で使われる設定」を切り出した設定ファイル、もしくは「nm.ph」自体を指定します。
use parseLIRS;(書式:固定)
これを指定すると、parseLIRSモジュール下の関数(parseLIRS::parse)を使用することができるようになります。
&parseLIRS::parse('parse用設定ファイル');(書式:parse用設定ファイル:ファイル名)
これを指定すると、関数「parseLIRS::parse」が動作します。
「parse用設定ファイル」は、「nm.ph」の「parseLIRS::parse関数で使われる設定」を切り出した設定ファイル、もしくは「nm.ph」自体を指定します。
&parseLIRS::marge('marge用設定ファイル');(書式:marge用設定ファイル:ファイル名)
これを指定すると、関数「parseLIRS::marge」が動作します。
「marge用設定ファイル」は、「nm.ph」の「parseLIRS::marge関数で使われる設定」を切り出した設定ファイル、もしくは「nm.ph」自体を指定します。
use htmlrender;(書式:固定)
これを指定すると、htmlrenderモジュール下の関数(htmlrender::htmlrender, htmlrender::except)を使用することができるようになります。
&htmlrender::htmlrender('htmlrender用設定ファイル');(書式:htmlrender用設定ファイル:ファイル名)
これを指定すると、関数「htmlrender::htmlrender」が動作します。
「htmlrender用設定ファイル」は、「nm.ph」の「htmlrender::htmlrender関数で使われる設定」を切り出した設定ファイル、もしくは「nm.ph」自体を指定します。
&htmlrender::except('except用設定ファイル');(書式:except用設定ファイル:ファイル名)
これを指定すると、関数「htmlrender::except」が動作します。
「except用設定ファイル」は、「nm.ph」の「htmlrender::except関数で使われる設定」を切り出した設定ファイル、もしくは「nm.ph」自体を指定します。
use LIRS;(書式:固定)
これを指定すると、LIRS.pm中の関数(&LIRS::cLIRS、&LIRS::xLIRSをはじめとした関数)を使用することができるようになります。
&LIRS::cLIRS('gzipプログラムの場所', '圧縮するファイル');(書式:gzipプログラムの場所:ファイル名 圧縮するファイル:ファイル名)
LIRSファイルをgzip圧縮します。圧縮後のファイル名は「圧縮するファイル名.gz」になり、圧縮元のファイルも保持されます。
&LIRS::xLIRS('gzipプログラムの場所', '解凍するファイル');(書式:gzipプログラムの場所:ファイル名 解凍するファイル:ファイル名)
LIRSファイルをgzipで解凍します。解凍後のファイル名は「解凍するファイル名」から「.gz」を取ったファイル名になります。
なお、解凍元の圧縮されたファイルはgzipにより破棄されます。

「nm_win.bat」の設定項目

PERL(書式:絶対パス)
プログラムファイル「perl.exe」をドライブ名からフルパスで指定します。
DRIVE(書式:絶対パス)
「なつみかん」の動作の基準となるドライブを入力します。
DIR(書式:絶対パス)
「なつみかん」の動作の基準となるディレクトリを絶対パスで入れておきます。先に「nm.ph」で指定した「$basedir」と同じです。

「remote.cfg」の設定項目

リモート情報元サイトの設定は下記のように表記されます。「,」(カンマ)区切りです。情報中の「,」(カンマ)は「\,」のようにエスケープしないと誤動作します。
REMOTE,リモート取得元マーク,リモートサイト名,リモートサイトURL,ローカル保存ファイル名,リモート取得元ファイルURL,誤差/時差(秒)
例:
REMOTE,<A HREF=&quot;http://amano.hauN.org/&quot;>a</A>,天野アンテナ,http://amano.hauN.org/,r_amano.lirs,http://amano.hauN.org/natsumican.lirs.gz,32400,

REMOTE(書式:固定文字列)
設定ファイルの中で、リモートサイトのレコードであることを宣言しているヘッダーです。半角大文字で「REMOTE」と表記しないと認識されません。
リモート取得元マーク(書式:文字列(HTMLなど))
HTMLで出力する際の「$template」(nm.phの項参照)における%remote%に置換される文字列です。「,」以外の記号やHTMLを含んでも構いません。
リモートサイト名(書式:文字列)
そのリモートサイトの名前です。全角文字を使用しても構いません。
リモートサイトURL(書式:URL)
そのリモートサイトのURLです。
ローカル保存ファイル名(書式:ファイル名)
./tmp/下に保存されるファイル名です。LIRSやgzipped DIの場合は解凍後のファイル名です(解凍前は.gzが自動的に後ろに付きます)。
リモート取得元ファイルURL(書式:URL)
実際の情報の在処を示します。
誤差/時差(単位:秒)
リモートサーバーのある場所のタイムゾーンを秒数で指定します。基本的にGMTからの時差で、日本ですと32400、米国ペンシルバニア州ピッツバーグですと-18000です。
ターゲットサイトの設定における誤差/時差と基本的に同じです。

「sites.lirs」の設定項目

更新時刻情報を取得するターゲットサイトの設定は下記のように表記されます。LIRS互換なので「,」(カンマ)区切りです。情報中の「,」(カンマ)は「\,」、「\」(バックスラッシュ・円マーク)は「\\」などのようにエスケープしないと誤動作します。
LIRS,0,0,誤差(秒),0,URL,タイトル,管理者名,0,実際に時刻情報が取れるURL,更新時刻情報を参照できるキー(正規表現使用可),URL後に付ける文字列の形式,その他の情報(必要に応じて),(\r)\n
例:
LIRS,0,0,32400,0,http://aniki.hauN.org/n/,ただよう記憶,ひや,0,,,?%MM%%DD%%HH%%TT%,はう電,

LIRS(書式:固定文字列)
設定ファイルの中で、更新時刻情報を取得するターゲットサイトのレコードであることを宣言しているヘッダーで、LIRSのレコードヘッダーでもあります。半角大文字で「LIRS」と表記しないと認識されません。
時差(単位:秒)
外国にあるサイトを現地の更新時間で表したいときの時差を指定します。単位は秒です。
通常の日本のサイトでは「32400」が指定されます。
リモートサイトの設定における時差と基本的に同じです。
URL(書式:URL)
更新時刻情報を取得するターゲットサイトのURLです。
通常の置換指定子を入れておくと、現在時刻から12時間差し引いた時刻を元に自動的に置換されます。
タイトル(書式:文字列)
更新時刻情報を取得するターゲットサイトのタイトルです。
管理者名(書式:文字列)
更新時刻情報を取得するターゲットサイトの管理者名です。
実際に時刻情報が取れるURL(書式:URL)
「URL」で指定したファイルとは違うファイルから更新時刻情報が取得できるときに、そのファイルを指定します。
リモート情報を利用する場合、ここで指定したURLも、標準のURL同様キーになります。
置換指定子を入れておくと、現在時刻から12時間差し引いた時刻を元に自動的に置換されます。
ここに、「file://」で始まるURLを記入しておく(同サーバーのファイルから直接時刻を取得)と、強制的に自力取得になります。
ターゲットサイトがNIFTYの場合、「実際に時刻情報が取れるURL」に明示的に「index.(s)htm(l)」を入れないと、自力取得の際時刻情報が取れない場合があります。
更新時刻情報を参照できるキー(書式:文字列(正規表現可))
Webページに更新時刻情報が記載されているとき、このキーの前後に時刻情報が記されている、という文字列を指定します(GETリクエスト時のみ)。Perl5に基づいた正規表現も使用可能です。
例:「最終更新時刻:.*?\d\d\d\d-\d*-\d* \d*:\d*」
ただし、なつみかん内部で標準的なキーワードをサポートしているため、情報がどうしても取得できないとき以外は設定する必要はありません。
ここに何らかの値が指定されていると、自力取得の際そのサイトからはGETリクエストで情報を取得しようとします(HEADリクエストによる情報取得を行いません)。また、取得する対象がLIRSやDI等の情報伝達規格に基づいたデータ型である場合などに、ここに適当な文字列(空白文字だけでもかまわない)を入れておくと、GETリクエストで情報を得て、LIRSやDI等の仕様に基づいて解析します。
URL後に付ける文字列の形式(書式:文字列)
URL後に付ける文字列の書式を表します。ここで指定した値は自動的にURLに付与されます。
URLに更新時刻を元にした「?06030129」のような数値を指定しておくと、リンク色の指定により更新後まだ見ていないサイトの色が変わります。
置換指定子を指定すると更新時刻を元に自動的に置換されます。
その他の情報(書式:文字列)
その他の付加的情報を記しておきます。前述の「sub etcscript」でHTML出力時の操作ができます。

他の「0」の部分は、LIRS1.0との整合性を保つためにあるものです。特に何か記載する必要はありませんが、省くと誤動作します。

基準となるテンプレートHTMLに埋め込む置換指定子

「%html」で指定する、書き出す元となる基準のHTMLには、下記の指定子を埋め込むことができます。これは「なつみかん」がhtmlrender::htmlrenderによりHTML出力する際に自動的に置換されます。

「^<!--== (文字列) ==-->(\r|\n)*$」(書式:固定文字列)
「<!--== (文字列) ==-->\n」とだけ記された行は全てコメントとなります。HTML出力の際には出力されません。
「^<!--NATSUMICAN_OUTPUT:/foo/bar/hoge.lirs-->(\r|\n)*$」(書式:固定文字列&ファイル名orURL)
<!--NATSUMICAN_OUTPUT:/foo/bar/hoge.lirs-->とだけ記された行には、全ての更新時刻データが「$template」で設定した書式に従って出力されます。
「:」よりあとの「/foo/bar/hoge.lirs」は、ベースHTMLのその部分に読み込むLIRSファイル(gz圧縮LIRSでも可)を指定します。URL指定も可能で、他サイトの他アンテナの情報をマージすることもできます。
読み込むLIRSファイル指定部分には、次の置換指定子が使えます。
「%ext%」:nm.phで指定した$nm::cf::extのディレクトリ
「%base%」:nm.phで指定した$nm::cf::baseのディレクトリ
「^<!--NATSUMICAN_SORT_OUTPUT:30:/foo/bar/hoge.lirs-->(\r|\n)*$」(書式:固定文字列&ファイル名orURL)
<!--NATSUMICAN_SORT_OUTPUT:30:/foo/bar/hoge.lirs-->とだけ記された行には、全ての更新時刻データが「$template」で設定した書式に従って出力されます。
「:」よりあとの「30」は、次で指定するLIRSをソートした上で、更新時刻が最近のものから上位いくつまでを出力するか指定します(この場合は30サイト分出力される)。未指定の場合は何も入れないでください。
そのあとの「/foo/bar/hoge.lirs」は前述の「<!--NATSUMICAN_OUTPUT:/foo/bar/hoge.lirs-->」と同様です。置換指定子も使えます。
「<!--NATSUMICAN_MODIFIED-->」(書式:固定文字列)
<!--NATSUMICAN_MODIFIED---->と書かれた部分は、このHTMLの更新時刻(RFC822:Thu, 21 Oct 1999 19:11:42 JSTの形式:タイムゾーンは$localTimeZoneを参照して自動的に判断します)に置き換わります。ただし、info.cgiが出力するものに比べて多少の誤差(数秒)が出る場合があります。
「<!--NATSUMICAN_VERSION-->」(書式:固定文字列)
<!--NATSUMICAN_VERSION---->と書かれた部分は、なつみかんのバージョンに置き換わります。
「<!--NATSUMICAN_REMOTESERVER-->」(書式:固定文字列)
<!--NATSUMICAN_REMOTESERVER-->と書かれた部分は、なつみかんが参照したリモート情報元サイトのリストに置き換わります。
「<!--#exec cmd="/home/hoge/public_html/natsu/bin/info.cgi /home/hoge/public_html/natsu/bin/nm.ph"-->」(書式:文字列)
info.cgiを使用する場合は、このようにSSIとして指定します。SSIが使用できない環境では、info.cgiは使用できません。

注意:「^」(行頭)「(\r|\n)」(\r(CR)か\n(LF)のどちらか)「$」(行末)「*」(前の正規表現の0回以上の繰り返し)はエスケープシーケンスや正規表現です。これら文字はHTML中に書き込まないでください。

nmp.cgiで使われるテンプレートHTMLに埋め込む置換指定子

nmp.cgiで使われる基準のHTMLには、下記の指定子を埋め込むことができます。これはnmp.cgiがHTML出力する際に自動的に置換されます。

「^<!--== (文字列) ==-->(\r|\n)*$」(書式:固定文字列)
「<!--== (文字列) ==-->\n」とだけ記された行は全てコメントとなります。HTML出力の際には出力されません。
「^<!--NATSUMICAN_P_OUTPUT-->(\r|\n)*$」(書式:固定文字列)
<!--NATSUMICAN_P_OUTPUT-->とだけ記された行には、全ての更新時刻データが「$template」で設定した書式に従って出力されます。
「^<!--NATSUMICAN_P_SORT_OUTPUT-->(\r|\n)*$」(書式:固定文字列)
<!--NATSUMICAN_P_SORT_OUTPUT-->とだけ記された行には、全ての更新時刻データがソートされて、「$template」で設定した書式に従って出力されます。
「^<!--NATSUMICAN_P_INTRODUCTION-->(\r|\n)*$」(書式:固定文字列)
<!--NATSUMICAN_P_INTRODUCTION-->とだけ記された行には、「なつみかん」パーソナライズのインフォメーションが挿入されます。
「^<!--NATSUMICAN_P_STARTFORM-->(\r|\n)*$」(書式:固定文字列)
<!--NATSUMICAN_P_STARTFORM-->とだけ記された行には、「なつみかん」パーソナライズで使われる入力フォームの開始タグが挿入されます。
これは必ずHTML中に入れておいてください。でないと正常動作しません。
また、必ずNATSUMICAN_P_OUTPUTやNATSUMICAN_P_ENDFORMより前に指定してください。
「^<!--NATSUMICAN_P_ENDFORM-->(\r|\n)*$」(書式:固定文字列)
<!--NATSUMICAN_P_ENDFORM-->とだけ記された行には、「なつみかん」パーソナライズで使われる入力フォームの終了タグが挿入されます。
これは必ずHTML中に入れておいてください。でないと正常動作しません。
また、必ずNATSUMICAN_P_ENDFORMやNATSUMICAN_P_OUTPUTより後に指定してください。

また、実際にnmp.cgiで使われるHTMLは、一度htmlrender::htmlrenderを通したものが用いられるため、「<!--NATSUMICAN_VERSION-->」や「<!--NATSUMICAN_REMOTESERVER-->」、「<!--NATSUMICAN_MODIFIED-->」なども使用可能です。

注意:「^」(行頭)「(\r|\n)」(\r(CR)か\n(LF)のどちらか)「$」(行末)「*」(前の正規表現の0回以上の繰り返し)はエスケープシーケンスや正規表現です。これら文字はHTML中に書き込まないでください。

その他、設定中で通常使われる置換指定子

下記の置換指定子は各設定項目内でよく使われます。これは「なつみかん」ライブラリ「nm::times」の「showdate」関数で標準的に提供されているものです。

%YYYY%
4桁西暦
%YY%
2桁西暦(0補完あり)
%MM%
2桁月
%mm%
2桁月(0補完無し)
%DD%
2桁日
%dd%
2桁日(0補完無し)
%HH%
2桁時
%hh%
2桁時(0補完無し)
%TT%
2桁分
%tt%
2桁分(0補完無し)
%SS%
2桁秒
%ss%
2桁秒(0補完無し)
%WW%
日本語曜日(「月」「火」「水」・・・)
%EE%
英語曜日(長:「Monday」「Tuesday」「Wednesday」・・・)
%ee%
英語曜日(短:「Mon」「Tue」「Wed」・・・)
%NN%
英語月(長:「January」「Febrary」「March」・・・)
%nn%
英語月(短:「Jan」「Feb」「Mar」・・・)
%XX%
1970年1月1日からの秒数(UTC)
%UU%
日付で、1〜10日の初旬を0、11〜20日の中旬を1、21〜31日の下旬を2、とする
%uu%
日付で、1〜10日の初旬を1、11〜20日の中旬を2、21〜31日の下旬を3、とする
%VV%
日付で、1〜10日の初旬をa、11〜20日の中旬をb、21〜31日の下旬をc、とする
%vv%
日付で、1〜10日の初旬をA、11〜20日の中旬をB、21〜31日の下旬をC、とする

設定の荒技

「sites.lirs」を用意しない(設定を空にしておく)でおくと、「remote.cfg」で設定されたリモート情報から得た全ての情報の中で、最新のものを選りすぐり、集約して出力します。
これを、同一サーバーの「子アンテナ」に情報を提供するだけの「親アンテナ」として機能させれば、無駄なトラフィックが防げますし、「子アンテナ=俺アンテナ」の製作も楽になります。

「remote.cfg」を用意しない(nm.phでも「''」に設定)でおくと、全ての情報を自力取得します。また、&detect::detectを呼び出すときに「noremote」オプションを指定しても同様です。
他サーバーの場合はネットワークやサーバーに負荷がかかるためあまりおすすめできません(「なつみかん」は自力取得速度は遅いです)が、同一サーバーの日記の情報を取得するために「file://」を使う場合などには有効です。
ただし、「実際に時刻情報が取れるURL」に「file://」で始まるローカルディレクトリを指定すると、自動的に自力取得になりリモート情報は使いません。

「sites.lirs」にサイトのタイトルや管理者名を全く書かないと、リモート情報や対象サイトから抽出して自動的に補完します。
設定が面倒な場合、あるいはDI・LIRS・対象サイトから得た情報に依存したい場合などに有効です。

時差を設定することで、サーバーは日本だけど米国に在住していて更新しているサイトや、逆に日本にいて更新してるけどサーバーは米国で、更新時刻が米国の時刻でしか取れない、等の際に補整することができます。
ただし更新時刻表記内にタイムゾーン表記がない場合は情報が上手く取れないことがあります。

「sites.lirs」に他アンテナの設定ファイル(LIRS)を指定することで、そのサイトと設定ファイルを共有し、ミラーサイトを簡単に作ることができます。
また、設定ファイルは複数指定できるので、「自己のLIRSファイルと他のサイトの設定ファイルを合わせて利用する」などもできます。

「sites.lirs」のオプションに情報を埋め込み「&parseLIRS::parse」でLIRSを分割して、「&htmlrender::htmlrender」で読み込むベースHTML中にそれらを埋め込むことで、カテゴリーごとに区分けされたHTMLを作ることができます。
このとき、埋め込むLIRSごとにソートするかしないか設定することもできます。

「nm.pl」の中で実行する各関数は、1度しか実行してはいけない、というわけではありません。
設定ファイルを細分化したり、細分化したものを複数用意したりして関数を複数回呼び出し、うまく組み合わせることで様々な形態で出力することができるようになります。

更新時刻が表記されているのに取れない、という場合は、まずHTMLソースを見て(ブラウザー上の見た目では判断しない)、表記されている更新時刻直前の文字やタグを、「sites.lirs」の「時刻情報を参照できるキー」にセットしておきます。
それでダメな場合は、正規表現を使って更新時刻表記を表現(「\d+年\d+月\d+日\(.+?\)\s\d+:\d+:\d+」のように)し、それを「sites.lirs」の「時刻情報を参照できるキー」にセットしておきます。
それでもダメな場合は、ひや に相談して下さい(^^;

注意書きというか仕様というかバグというか

「sites.lirs」を用意しないときや、サイト名称・著者名称を書き入れなかったとき、リモート情報の方から補完しますが、その補完元を特定することはできません。
たとえば、更新時刻が採れたリモート情報からサイト名称なども採り入れられるかというと、そういうわけではありません。常に一定ですがどのリモート情報から採り入れられるかはわかりません。


Copyright (C) 1998-2001 hiya. All Rights Reserved.
Contact : hiya@hauN.org