なつみかん(NATSU-MICAN)

「なつみかん」ドキュメント

設定リファレンス

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

「nm.ph」の設定項目

$baseurl(書式:URLか文字列)
「なつみかん」のサイトのURLを入れておきます。サイトを公開していない場合でも、自分の身分証明を何らかの形でしておくのが礼儀です。
$basedir(書式:絶対パス)
「なつみかん」の動作の基準となるディレクトリを絶対パスで入れておきます。
ここをきちんと設定しないと正常に動作しないのでご注意下さい。
$datadir(書式:パス)
configファイル(natsumican.cfg)、テンプレートHTML(base.html)などを置いておくディレクトリを指定します。
ここをきちんと設定しないと正常に動作しないのでご注意下さい。
$tmpdir(書式:パス)
リモートサイトの情報ファイルや一時ファイルを置いておくディレクトリを指定します。
$outputdir(書式:パス)
HTMLやLIRS、hina.txtファイルなどを出力するディレクトリを指定します。
$remcfg(書式:ファイル名)
リモート情報取得元を指定するconfigファイルの名前を指定します。
ここでURL指定することで、他サイトの他アンテナの設定ファイルを取得してそのまま使用することができます(「file://」の項は自動削除されるか正常動作しません)
「$cfg」と同じ物を指定することもできます。この場合は2.2以下の「なつみかん」の書式の設定ファイルが継続利用できます。
$cfg(書式:ファイル名)
更新情報取得ターゲットサイトを指定するconfigファイルの名前を指定します。
ここでURL指定することで、他サイトの他アンテナの設定ファイルを取得してそのまま使用することができます(「file://」の項は自動削除されるか正常動作しません)
「$remcfg」と同じ物を指定することもできます。この場合は2.2以下の「なつみかん」の書式の設定ファイルが継続利用できます。
$out(書式:ファイル名)
LIRS形式で記述された更新時刻取得結果のファイルの名前を指定します。
ここで指定するファイルがリモート用LIRSファイルの元となったり、更新時刻キャッシュとなったり、HTML出力用の結果ファイルとなったりします。
$hinaout(書式:ファイル名)
朝日奈アンテナのhina.txt形式で記述された更新時刻取得結果のファイルの名前を指定します。
特に使わなければコメントアウトして下さい。コメントアウトされていると出力しません。
$diout(書式:ファイル名)
DI(Document Information)形式で記述された更新時刻取得結果のファイルの名前を指定します。
使用しない場合はコメントアウトして下さい。コメントアウトされていると出力しません。
%html(書式:配列:ファイル名)
HTMLファイルの出力ファイルとその元ファイルを指定します。
Perlの配列と同じ書式になっています。
$core(書式:絶対パス&ファイル名)
コアダンプで吐かれたcoreファイルの場所と名前を指定します。これはnm_info.plで使用します。
$tgthtml(書式:絶対パス&ファイル名)
きちんとHTMLが出力されたかどうかを判定するHTMLファイルを指定します。%htmlで指定したHTMLのいずれかになるでしょう。
これはnm_info.plで使用します。
$gzip(書式:絶対パス&ファイル名)
LIRS出力で使うgzipの場所を指定します。
UNIX環境において、場所がわからないときは、コマンドラインで
which gzip
のようにすれば、場所がわかると思います。
また、Windows環境では、http://www.gzip.org/などからダウンロードしたgzip.exeを「なつみかん」実行ディレクトリにコピーした上で、
$gzip = 'gzip.exe';
とします。
$referer(書式:URL)
対象サイトにアクセスしたときに渡される「リファラー(referer)」を指定します。通常は「$referer=$baseurl」としておいてください。
$http_proxy(書式:URL)
プロキシーサーバーを通さなければならないときに、そのサーバー名を指定します(ちゃんと動くかどうかは不明)
$localTimeZone(単位:秒)
「なつみかん」を設置するサーバーの時間帯をGMTからの誤差(秒)で指定します。
日本はJST+0900なので、「32400」を指定します。
なお、ここを設定するときはサマータイムは考慮に入れないようにします(サマータイムは自動的に対応するため)。
$sortoption(yes/no)
HTML出力の際、出力結果をソートするかしないかをyes/noで選択します。
$wtwestart(単位:時)
週末における混雑時間帯開始時刻を指定します。これはnm_info.plで使用します。
$wtweend(単位:時)
週末における混雑時間帯終了時刻を指定します。これはnm_info.plで使用します。
$ftwestart(単位:時)
週末における快適更新時間帯開始時刻を指定します。これはnm_info.plで使用します。
$ftweend(単位:時)
週末における快適更新時間帯終了時刻を指定します。これはnm_info.plで使用します。
$wtnmstart(単位:時)
平日における混雑時間帯開始時刻を指定します。これはnm_info.plで使用します。
$wtnmend(単位:時)
平日における混雑時間帯終了時刻を指定します。これはnm_info.plで使用します。
$ftnmstart(単位:時)
平日における快適更新時間帯開始時刻を指定します。これはnm_info.plで使用します。
$ftnmend(単位:時)
平日における快適更新時間帯終了時刻を指定します。これはnm_info.plで使用します。
$deffsize(単位:バイト)
きちんとHTMLが出力されたかどうかを判定するHTMLファイルの容量をバイト数で指定します。%htmlで指定したHTMLのいずれかになるでしょう。
これはnm_info.plで使用します。
これ以降は通常の置換指定子の他に、下記の置換指定子を使うことができます。
%tz%:誤差(各情報あるいは$localTimeZone)から割り出したタイムゾーン表記
$template(書式:文字列(HTMLなど))
ここの更新時刻情報をこのテンプレートに従って出力します。
ここでは通常の置換指定子の他に、下記の置換指定子を使うことができます。
%url%:URL
%title%:日記名
%author%:日記作者名
%remote%:リモート取得元
%remsrc%:リモート情報の大元の取得元URL(実際にHEAD/GET/FILEの方法で時刻情報を取得したサイト)
%getdata%:情報取得方法
%etc%:その他の追記情報
\t:タブ
\n:改行
これ以降は通常の置換指定子の他に、下記の置換指定子を使うことができます。
%ver%:なつみかんのバージョン
$startmes(書式:文字列)
nm_info.plで、一番最初に追加する文字列を指定します。置換指定子を入れておくと、現在時刻を基準として自動的に置換されます。
$lstmod(書式:文字列)
nm_info.plで、設置するサイトの最終更新日時を表記する文字列を指定します。「$tgthtml」を参照しますのでこちらの設定もきちんとしておく必要があります。
置換指定子を入れておくと、最終更新日時を基準として自動的に置換されます。
$antennainfo(書式:文字列)
なつみかんが動作しているときのメッセージを指定します。後述の$updatetimeと排他で表示されます。
置換指定子を入れておくと、なつみかん動作開始日時を基準として自動的に置換されます。
$updatetime(書式:文字列)
なつみかんが更新にかかった時刻を表記します。前述の$antennainfoと排他で表示されます。
置換指定子を入れておくと、なつみかんの更新にかかった時間を基準として自動的に置換されます。
$timeinfonm(書式:文字列)
平日の混雑時間帯の時に表示されるメッセージを指定します。
$timeinfowe(書式:文字列)
週末の混雑時間帯の時に表示されるメッセージを指定します。
$timeinfoft(書式:文字列)
快適時間帯の時に表示されるメッセージを指定します。
$coreinfo(書式:文字列)
コアダンプが発生しcoreファイルが発見されたときに表示されるメッセージです。
置換指定子を入れておくと、コアダンプした時間を基準として自動的に置換されます。
$idcaution(書式:文字列)
HTMLファイルの出力に失敗したときに表示されるメッセージです。
$endmes(書式:文字列)
最後に追記されるメッセージです。

「nm.sh」の設定項目

PERL(書式:絶対パス)
Perlの場所を示します。なつみかんはPerl5.005以上対応なので、もしデフォルトのPerl(/usr/local/bin/perl)が5.005以上でない場合は、指定し直して下さい。
DIR(書式:絶対パス)
「なつみかん」の動作の基準となるディレクトリを絶対パスで入れておきます。先に「nm.ph」で指定した「$basedir」と同じです。

「nm_win.bat」の設定項目

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

「remote.cfg」の設定項目

リモート情報元サイトの設定は下記のように表記されます。「,」(カンマ)区切りです。情報中の「,」(カンマ)は「\,」のようにエスケープしないと誤動作します。
REMOTE,リモート先指示記号,リモートサイト名,リモートサイトURL,ローカル保存ファイル名,リモート情報取得元ファイルURL,誤差/時差(秒)
例:
REMOTE,<A HREF="http://amano.hauN.org/">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の場合は解凍後のファイル名です(解凍前は.gzが自動的に後ろに付きます)。
リモート情報取得元ファイルURL(書式:URL)
実際の情報の在処を示します。
誤差/時差(単位:秒)
リモートサーバーのある場所のタイムゾーンを秒数で指定します。基本的にGMTからの時差で、日本ですと32400、米国ペンシルバニア州ピッツバーグですと-18000です。
ターゲットサイトの設定における誤差/時差と基本的に同じです。

「sites.lirs」の設定項目

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

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

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

基準となるHTMLに埋め込む置換指定子

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

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

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

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

下記の置換指定子は各設定項目内でよく使われます。これは「なつみかん」ライブラリ「nm_lib」の「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」を用意しない(nm.phでも「''」に設定)でおくと、「remote.cfg」で設定されたリモート情報から得た全ての情報の中で、最新のものを選りすぐり、集約して出力します。
これを、同一サーバーの「子アンテナ」に情報を提供するだけの「親アンテナ」として機能させれば、無駄なトラフィックが防げますし、「子アンテナ=俺アンテナ」の製作も楽になります。

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

「sites.lirs」にサイトのタイトルや管理者名を全く書かないと、リモート情報から抽出して自動的に補完します。また、なつみかんの出力したLIRS形式のリモート情報からは、時差情報や追加情報なども併せて得ることができます。
設定が面倒な場合、あるいはDIが得たタイトル情報などに依存したい場合などに有効です。

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

「sites.lirs」に他アンテナの設定ファイル(LIRS)を指定することで、そのサイトと設定ファイルを共有し、ミラーサイトを簡単に作ることができます。
このとき、「file://」で指定されている部分は無条件で消去されるので、誤動作はしないと思います。

「nm.sh」で複数の取得サイト設定分のnm_tg.plを実行させ、nm_mf.plでHTML中にそれらを埋め込むことで、カテゴリーごとに区分けされた、「朝日奈葉子のアンテナライフ」のようなHTMLを作ることができます。
このとき、設定ファイルでソートしないように設定することもできます(部分的にソートするなどは難しいですが)。
設定ファイル「nm.ph」は必ずしも一つである必要はありません。その都度使い分けるように複数用意しても構わないのです。
また、「nm.sh」の中で実行する各モジュールも、1度しか実行してはいけない、というわけではありません。

一つの更新時刻取得結果ファイル(natsumican.lirs)を分割するおまけスクリプトが「utilities」ディレクトリに入っています。ちゃちゃっと組んだものなので使い勝手は悪いかも知れませんが、これを元に改造して、自分なりにLIRSファイルを分割しカテゴリーごとに区分することもできるはずです。

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


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