wiki/html_assets/lirs/2000-10-13.html

309 lines
14 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
<META HTTP-EQUIV="Content-Language" CONTENT="ja">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<META HTTP-EQUIV="Content-Script-Type" CONTENT="text/javascript">
<META NAME="author" CONTENT="hiya">
<META NAME="copyright" CONTENT="Copyright (C) 1999-2000 hiya All Rights Reserved.">
<STYLE TYPE="text/css">
<!--
BODY{
color: #000000;
background-color: #FFFFFF;
font-family: Helvetica, Arial, ' ゴシック', Osaka;
text-align: left;
margin: 4px 12px;
}
A{
text-decoration: none;
}
A:hover{
color: #00CC00;
text-decoration: underline;
}
H1{
font-size: 150%;
font-weight: 700;
margin: 5px 0px 0px 0px;
}
H2{
font-size: 140%;
font-weight: 700;
margin: 5px 0px 0px 0px;
}
H3{
font-size: 130%;
font-weight: 700;
margin: 5px 0px 0px 0px;
}
H4{
font-size: 120%;
font-weight: 700;
margin: 5px 0px 0px 0px;
}
H5{
font-size: 110%;
font-weight: 700;
margin: 5px 0px 0px 0px;
}
P{
margin: 0px 0px 10px 30px;
}
EM{
font-weight: 700;
font-style: normal;
}
PRE{
color: #000000;
background-color: #CCCCCC;
margin: 0px 0px 10px 30px;
padding: 4px;
}
LI{
margin: 0px 0px 0px 20px;
}
DT{
margin: 0px 0px 0px 0px;
}
DD{
margin: 0px 0px 10px 15px;
}
DL{
margin: 0px 0px 10px 30px;
}
UL{
margin: 0px 0px 10px 30px;
}
OL{
margin: 0px 0px 10px 30px;
}
HR{
color: #000000;
text-align: center;
width: 100%;
height: 1px;
margin: 10px 0px;
}
ADDRESS{
font-size: 90%;
text-align: center;
padding: 0px 0px 20px 0px;
}
-->
</STYLE>
<TITLE LANG="ja">Last modified Information Relaying Specification</TITLE>
</HEAD>
<BODY LANG="ja">
<!--#exec cmd="/home/hiya/public_html/ctlgssi.pl ./LIRS.ph"-->
<H1>
Last modified Information Relaying Specification<BR>
更新時刻情報受け渡しデータ仕様(LIRS)仕様書<BR>
</H1>
<P STYLE="text-align: right;">
作成日時1999/10/13 18:00<BR>
更新日時2000/10/13 15:20<BR>
ver.2.1<BR>
</P>
<H2>LIRSとは</H2>
<UL>
<LI>LIRSとは、更新時刻取得エージェント(アンテナ)間で交換される有益な更新時刻取得情報の中で、もっとも必要である最小最低限の情報を選りすぐって、円滑に交換しあうために定義されたデータ形式および交換手段である。</LI>
<LI>LIRSでは、更新時刻を取得する対象のサイトに、更新時刻を取得するための最低限のこと以外の負担をかけないことを前提としている。</LI>
<LI>LIRSに関するすべての仕様の取り決めは、情報の散乱を防ぐために、立案者であるひや(mailto:hiya@hauN.org)が専任して執り行う。</LI>
</UL>
<H2>注意事項</H2>
<UL>
<LI>LIRSでは内部情報を全てGMTの1970年1月1日0時0分0秒からの秒数(UTC)で表す。</LI>
<LI>LIRSは原則として、UNIXのサーバーにおいて運用される更新時刻取得アンテナで用いることを前提として定義されており、これ以外の環境は想定していない。</LI>
<LI>LIRSの内部漢字コードは、EUC限定である。改行コードはLFを推奨するが、LIRS.pmはCRLFにも対応している。なお、CRのみは推奨されない。</LI>
<LI>「#」で始まる行はコメントとする。</LI>
</UL>
<H2>データ書式</H2>
<P>
LIRSは、ヘッダ部「LIRS,」と、「,」で区切られるデータ部、そしてレコード区切り(フッタ部)「,(\015)\012」をひとつのデータレコードとして構成される。<BR>
</P>
<P>
データの書式は下記のようになっている。<BR>
</P>
<PRE>LIRS,938779260,938781002,32400,49383,http://aniki.hauN.org/i/,ただよう記憶,ひや,http://amano.hauN.org/,(etc.etc...),(\015)\012</PRE>
<P>
左より、<BR>
</P>
<PRE>LIRSレコードヘッダ,更新時刻(Last-ModifiedGMT),更新時刻を取得した時刻(Last-DetectedGMT),対象サイトのGMTとの誤差(秒),対象サイトの容量(Content-Lengthバイト),対象サイトのURL,対象サイトのタイトル,対象サイトの管理者名,情報取得元サイトのURL,(拡張部...),(\015)\012</PRE>
<UL>
<LI>データは全て「,」一つで区切られる。末尾には独自拡張の情報を付け加えることができるが、行末には必ず区切り文字を一つ余分に入れておくこと。</LI>
<LI>データには、「,」を含めてはならない。通常、「,」を使わなければならない、という事例はあまり無いと思われるが、「,」を含める場合は「\,」としてエスケープすること。また、それに伴って「\」も「\\」としてエスケープしなければならない。</LI>
<LI>レコード区切り(フッタ部)が改行コードになるため、データには改行コード(\015,\012いずれも)を含めてはならない。</LI>
<LI>全ての項において、値無しの場合は「0」が入る。原則として値無し(空欄)ということはない(拡張部に関しては例外)。</LI>
<LI>更新時刻取得に失敗したサイトは、更新時刻「0」、取得時刻「0」とし、事実上使えない情報として記載される。</LI>
</UL>
<H3>更新時刻(Last-ModifiedGMT)</H3>
<P>
そのサイトが更新された時刻。LIRSでは内部情報を全てGMTの1970年1月1日0時0分0秒からの秒数(UTC)で表すため、ここの秒数もGMTである。<BR>
この項は、0-9以外の文字は使用できない。<BR>
</P>
<H3>更新時刻を取得した時刻(Last-DetectedGMT)</H3>
<P>
そのサイトの更新時刻を最後に直接(自力で)得た時刻。更新されたことを最初に検知した時刻ではない。これはHEAD/GETリクエスト、もしくはファイルのタイムスタンプからの取得、などの自力取得の場合にのみ書き換えることができるが、リモート取得の時はリモート情報から受けたLast-Detectedを継承する。<BR>
Last-Detectedはその情報の鮮度を表すために必要である。LIRSにおいては、自力取得してからどれぐらい時間が経過したかを、その情報の新しさ(古さ)として考えているからである。<BR>
内部処理としては、現在時刻からLast-Detectedを差し引いた値(経過した時間)が大きければ大きいほど、この情報の優先度が下がっていき、それが情報を破棄する指標「expiresCount」(下記参照)に指定されている時刻(秒)を越えると、この情報は無視されるようになる。<BR>
この項は、0-9以外の文字は使用できない。<BR>
</P>
<H3>対象サイトのGMTとの時差(秒)</H3>
<P>
前述の通り、LIRSでは内部情報を全てGMTの1970年1月1日0時0分0秒からの秒数(UTC)で表すため、対象サイトの更新時刻をローカルタイムで表すための、GMTからの時差の情報を必要とする。<BR>
日本国内で使う場合は常に(+)32400固定と思って良い。<BR>
この項は、0-9と、+と-以外の文字は使用できない。<BR>
</P>
<H3>対象サイトの容量(Content-Lengthバイト)</H3>
<P>
対象サイトの容量を表す。これはエージェントにより異なるが、対象サイトの容量から更新時刻を取得するエージェントのために用意されている。<BR>
内部処理としては、キャッシュに保存されたLIRSの容量情報と比較し、このサイズと異なった場合に「更新された」と認識する。<BR>
この情報が取得できなかった場合は0に設定する。<BR>
なお、この方法による更新時刻取得は、現段階ではLast-Detectedの対象外とする。<BR>
この項は、0-9以外の文字は使用できない。<BR>
</P>
<H3>対象サイトのURL</H3>
<P>
対象サイトのURLは、LIRS形式においてユニークなキーとして扱われる。<BR>
URLは、大小文字の判定はしないこととする。<BR>
また、末尾のindex.htmlは原則として内部では消去して扱われる。<BR>
この項は、URLとして使用できる文字以外は使用できない。<BR>
</P>
<H3>対象サイトのタイトル</H3>
<P>
対象サイトのタイトルは、タイトルや管理者名を記さなくても更新できるエージェントに提供される情報として用意されている。<BR>
</P>
<H3>対象サイトの管理者名</H3>
<P>
対象サイトの管理者名は、タイトルや管理者名を記さなくても更新できるエージェントに提供される情報として用意されている。<BR>
</P>
<H3>情報取得元サイトのURL</H3>
<P>
このレコードの情報を取得した元のサイトのURLを記しておく。原則として、自力取得したサイトを指す。<BR>
これの利用法は各エージェントに委ねられる。<BR>
</P>
<H3>独自情報の追記</H3>
<P>
上記情報以外の、エージェント独自の情報は、これらの情報を書き出した後に追記することができる。<BR>
ただし、一行につき一サイトの原則は守らなければならず、行末に区切り文字を含めなければならない。<BR>
</P>
<H2>LIRS形式のデータを扱うエージェントで、設定に追加していただきたい項目</H2>
<P>
LIRS形式のデータを扱うエージェントは、下記の設定項目を追加すること。<BR>
</P>
<UL>
<LI>サーバーの時刻帯(GMTよりの誤差を秒で日本は-32400)<BR>
<EM>localTimeZone = -32400;</EM><BR>
</LI>
<LI>gzipの場所<BR>
<EM>gzip = '/usr/bin/gzip';</EM><BR>
</LI>
</UL>
<H2>LIRS形式のデータを出力するエージェントに必要なことがら</H2>
<P>
LIRS形式のデータを扱うエージェントは、下記の要項に従うこと。<BR>
</P>
<UL>
<LI>内部で利用するキャッシュ情報を、LIRS形式で保存しておく必要がある。<BR>
</LI>
<LI>LIRSのファイルは、出力完了後UNIX gzipで圧縮して保管しておく必要がある。この際、元のLIRSファイルを削除しないようにする。<BR>
また、LIRSファイルを受けるときはHTTPを用い、gzipで展開した上で用いる。<BR>
</LI>
<LI>更新時刻取得時刻から換算して更新時刻情報を無視するまでの時間を、ユーザーが設定ファイルで更新できない場所で設定する必要がある。<BR>
<EM>expiresCount = 28800;</EM><BR>
この値は28800固定である。<BR>
</LI>
</UL>
<H2>転送方法</H2>
<P>
LIRS形式のデータを送受信する際は、下記の要項に従うこと。<BR>
</P>
<UL>
<LI>転送は、HTTPで行う。この際、データはgzipで圧縮されている必要がある。受け取った後、gzipで展開後読み込む。<BR>
</LI>
</UL>
<H2>LIRSにおける「情報の鮮度」の概念</H2>
<P>
LIRSにおいて、情報の鮮度の計測方法は、そのサイトに対して直に情報を取得して(Last-Detected)からどれだけの時間が経過しているか、を基準としている。<BR>
時間が経過するごとに、その情報の価値がどんどん下がっていき、ある一定の値(expiresCount)を越えたところで、その情報は破棄される。<BR>
</P>
<P>
また、LIRSにおいては、情報がリモートで渡ってきたときに、そこに記載されている更新時刻取得時刻の情報を元にして、Last-Detectedを指定し出力する。エージェントによるが、必ずしも継承される必要はない。<BR>
</P>
<H2>LIRSにおける「時差(誤差)」の概念</H2>
<P>
LIRSにおける「時差(誤差)」の概念は、一般的に「プログラムが動作するサーバーのGMTを基準」として、それぞれのサーバー(あるいはAuthor)所在地との時差(誤差)を指す。<BR>
この「時差(誤差)」は、それがタイムゾーンを越えた時差であるのか、サーバーごとの時間設定の誤差であるのか、どちらでも構わないが、LIRS内の全ての情報をどちらか一方に揃える必要がある。<BR>
</P>
<H2>その他</H2>
<UL>
<LI>LIRS ver.2.0のデータ構造・圧縮展開処理を扱いやすくするPerl5のモジュールを下記にて提供している。<BR>
オブジェクト指向Perlプログラミングのメソッドとしても、従来通りのサブルーチンとしても使用可能である。<BR>
<EM><A HREF="http://amano.hauN.org/LIRS.pm">http://amano.hauN.org/LIRS.pm</A></EM><BR>
</LI>
<LI>LIRS形式のデータを扱うRubyのモジュールをTAKAHASHI 'Maki' Masayoshiさんが提供して下さっています。<BR>
<EM><A HREF="http://www.open-news.com/~maki/di/lirs.rb">http://www.open-news.com/~maki/di/lirs.rb</A></EM><BR>
</LI>
</UL>
<H2>改版履歴他</H2>
<DL>
<DT>2000/10/13 15:20<BR></DT>
<DD>LIRS.pmにおけるgzipの用法に誤りがあったので修正。<BR>
</DD>
<DT>2000/06/23 13:52<BR></DT>
<DD>データ内における改行コード(\015,\012)の扱いについての説明を追加。<BR>
</DD>
<DT>2000/06/16 13:47<BR></DT>
<DD>lirs.rbへのリンクを追加<BR>
</DD>
<DT>2000/05/31 20:00<BR></DT>
<DD>LIRSデータ内で「\」を「\\」にエスケープしなければならない旨を新たに仕様に追加。<BR>
LIRS.pmのバージョンアップに伴い微修正。<BR>
</DD>
<DT>1999/11/11 19:41<BR></DT>
<DD>HTML化と、それにともない微修正。<BR>
</DD>
<DT>1999/11/03 03:25<BR></DT>
<DD>DIに関する議論のなかで出てきた事柄などを考慮に入れ、微修正。<BR>
「LIRSとは」などを追加。<BR>
</DD>
<DT>1999/10/13 18:00<BR></DT>
<DD>原文作成。<BR>
</DD>
</DL>
<HR>
<ADDRESS>
<A HREF="http://aniki.hauN.org/copyright.html">Copyright (C) 1999-2000 <EM>hiya</EM>. All Rights Reserved.</A><BR>
Contact : <A HREF="mailto:hiya@hauN.org">hiya@hauN.org</A><BR>
</ADDRESS>
</BODY>
</HTML>