「なつみかん(NATSU-MICAN)」オフィシャルサイト
release ver.3.1b(20010312)
old ver.2.3(20000120)
「なつみかん」最新情報
2003/12/24(水)
- 「なつみかん」の開発・保守・運用を凍結します。
今後のバージョンアップ・フォロー等は、気が向かない限り無いと思います。
「なつみかん」とは
「なつみかん(NATSU-MICAN)」とは、ある(複数)サイトの更新された時間を、様々な方法を用いてそれぞれ取得し、これをリスト化してHTMLとして書き出す、俗に言う「アンテナシステム」です。
同様のシステムとして「朝日奈アンテナ」や「WDB」が有名ですね。
「なつみかん(NATSU-MICAN)」は、ふるふるさんが「ぽぽぽ」で用いるために開発した「みかん(MICAN)」というシステムをひやが改造して作ったもので、「天野アンテナ」のために開発されました。
ちなみに、なぜ「なつみかん」かというと、ひやが夏が好きだからです。天野みどりも夏のキャラだし(謎)
「朝日奈系」に対抗して「柑橘系」とでも呼んであげてください(笑)
「なつみかん」でできること
- 他の更新時刻取得サイトが書き出す情報からの更新時刻取得(リモート情報取得)を主としており、LIRS形式、hina.txt(朝日奈アンテナ旧形式)形式、DI(hina.di)形式(gzip圧縮DIも読み込み可能)など様々な形式から情報取得できます。
- リモート取得で更新時刻を得られなかった場合、自動的にHTTP/1.1のHEADリクエストによる取得に切り替えて試み、更新時刻が得られなかった場合、HTTP/1.0のGETリクエストに切り替えて、そのコンテンツ内に表記してある更新時刻を取得しようとします。
それでも情報が取得できなかった場合は、ファイルサイズに変更があったかどうか判断して更新されたかチェックします。
そして、最終的にネットワーク障害などで更新時刻が取得できない場合には、過去に得た情報を利用します。
- 自力取得時でも、HTTPヘッダーのif-modified-sinceを活用することで、相手先のファイルが更新されていなかったとき余計なアクセスをしません。
- 他のリモートサイトに情報を提供できるように、LIRS(更新時刻情報伝達仕様)形式で情報を出力できます。また、hina.txt(朝日奈アンテナ形式)、DI(hina.di)形式で情報を出力することもできます。
- 得た更新時刻情報は、LIRSやDIなどの仕様に基づき、自力取得後一定時間後に破棄されます。そのため、誤情報がアンテナ間でループするのを防げます。
- LIRS形式を標準とし、時差情報やファイルサイズの保持、所有情報の鮮度による情報の取捨選択をしています。
- 他サイトを含め複数のLIRSファイル(もちろん自サイトの出力も)をHTMLに併出力することが可能です。
- 取得した情報を全て新しい順に自動的にソートしてHTMLに書き出せます。また、ソートする場合、最新何サイトの情報を出力するかを、読み込むLIRSファイルごとに設定することができます。また、ソートしないで出力することもできます。
- 取得するサイトや参照するリモートサイトの情報は、LIRS形式に準拠したカンマ区切りのテキストデータベースとしてまとまっているので、サイトの追加や削除、整理、スクリプトにかける、Microsoft Excelへ持っていく、などが容易です。
- 旬ごと・月ごと・年ごとなどでURLが替わる場合にも、ある程度自動対応できます。
- 自力取得時、対象ファイルがDI(hina.di)やLIRS形式だった場合でも、それぞれの形式の仕様に基づいて正しく情報が取得できます。
- 国際化に対応しており、自サーバー設置箇所や更新時刻を得たいサイトなどのローカルタイムに柔軟に対応できます。また、サマータイムにもある程度対応しています。
- 指定したリモート情報元から得た全ての情報を集約して出力することができます。この機能を用いて「子アンテナ」に情報を提供するだけの「親アンテナ」として機能させることも可能です。
- 取得対象サイト、リモートアンテナサイトの設定をHTTP越しに取得して利用することができます。全く同一の情報に基づいたミラーサイトを他サーバーに簡単に作ることができます。
- 取得対象サイトの設定を複数指定し、マージして使用することができます。他サーバーのものを持ってくることもできます。
- HTMLとして出力する際、テンプレートやベースとなるHTMLを自由に編集できます(HTMLの知識が必要)。
- データベース中に追加情報を埋め込むことができ、それも併せてHTML出力できます(Perlの知識が多少必要な場合もあります)。
- スクリプトの現在の動作状況を、動作と連携して表示するSSIがコンポーネントに含まれています(使用するにはSSIの知識とPerlの知識が多少必要)。
- UNIX以外の環境・Windows上のPerlでも正常動作することが確認されています。(Windows、MS-DOSのバッチファイルの知識が多少必要)
- 情報取得方法を限定することができます。たとえば、リモート情報のみ使用する・自力取得のみ使用するなどが可能です。
- 日時でURLが変わるサイトの更新時刻も自動追従して取得することができます。
- 「古今東西」をはじめとする日記システム側からの更新時刻通知に対応しています。
「なつみかん」の弱点
- HTTP/1.1の「Transfer-Encoding: chunked」を理解できません。よってGETリクエストはHTTP/1.0にて行っています。対応する予定も今のところありません。
- 更新時刻取得対象サイト、リモート情報参照サイトの情報をメモリに保存しておくため、メモリを使います(天野アンテナぐらいのサイトで約5MB)。
- 複数同時接続には対応していません。対応する予定も今のところありません。
- WWWサーバーソフト名を理解できません。対応する予定も今のところありません。
- 認証のかかったサイトの更新時刻を得ることができません。対応する予定も今のところありません(Yu Ooasaさん制作の修正パッチで対応可能)。
- DI(hina.di)形式出力は完全にはDI(hina.di)仕様に準拠していません。
- サイトの更新時刻が絶対取れる、というほど高度なシステムではありません。更新時刻が取得できるように努力していますが、どうしても取れないサイトがあるのはやむを得ないところです。
- 作者がわがままです:-)
「なつみかん」使用上の注意
- 「なつみかん」を利用するには、UNIXやUNIXサーバーの知識及びPerlの知識、HTMLの知識が必要です。HTTP/1.0以上、クライアントサーバー通信などの概念が解れば尚良いです。
- 「なつみかん」は、Windows上のPerl(ActivePerl 522)でも動作することが確認されています。この場合設定などが多少UNIXのものと違います(このマニュアルはUNIXのものをベースに書かれています)
- 「なつみかん」ご利用の際には、Perl5.004以上が必要です(おすすめは5.005以上です)。
perl -v
とするとちょっとだけ幸せになれるかもしれません。
また、いろいろとモジュールを使っています(TimeとかIOとかFileとか)。通常Perl5.004以上がインストールされていれば大丈夫だと思いますが・・・
なお、(私はLinux詳しくないので違うかも知れませんけど)「Red Hat Linux」で最初からインストールされているPerlを用いると、ネットワークのタイムアウト処理ができないためか暴走するらしいです(原因不明)。
- それから、「NKF.pm」「Jcode.pm」「jcode.pl」のいずれかが、ライブラリディレクトリに入っている必要があります(無いと動作しません)。これらは添付していませんので、ご自身で用意してください。
「NKF.pm」は、UNIXでnkfに添付されています。nkfもインストールされていないと動作しません。
「Jcode.pm」は、
http://openlab.ring.gr.jp/Jcode/index-j.html
などにあります。
「jcode.pl」は
ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl/
などにあります。
- さらに、LIRS入出力のためにgzip(とその場所)が必要です。gzipの場所は、
which gzip
とするといい感じです。
Windows上のPerlで動作させるには、http://www.gzip.org/などから、Windowsで動作するgzip.exeをダウンロードする必要があります(gzip124xN.zipなど)。
- このアーカイブの中のファイルは、全て漢字コードEUC、改行コードLFになっています(Windows関連ファイルなど一部除く)。また、必ず「なつみかん」で使われる全てのファイルは漢字コードEUC、改行コードLFに統一して下さい。これを変えた場合の動作は保証しません。
- 「なつみかん」設置の際の、FAQに類するご質問等には一切お答えしません。ここにあるものだけで自力で何とかする、というやる気のある方のみご使用下さい。
- 「なつみかん」のバグ修正やプログラムの改良の義務は作者のひやにはありません。ただ、実現するか否かはさておいて、ご報告やご提案は大歓迎です。
- 「なつみかん」ご利用におけるいかなる事故・損害にも、当方は責任を負いかねます。
- アンテナと言うモノは、毎時毎時サーバーやネットワークに大きな負荷をかけて情報を取得します。また、リモート取得でしたら一つの情報取得で数十サイトの更新時刻を同時に得ることができますが、自力取得となると、更新時刻を取るためだけに無駄なネットワークトラフィックが発生することになります。それを考慮に入れた上で、アンテナ新規構築を心がけて下さい。
「なつみかん」リリース最新版ダウンロード
- 「なつみかん」ver.3.1b(20010312)
→ natsu3.1b.tar.gz(tarball)、natsu3.1b.lzh(LHA圧縮)
- 現在の最新版です。また、内容はtarballもLHA圧縮も同じです(漢字コードEUC改行コードLF)。
「なつみかん」ver3.1に対するプログラムアップデート
拡張子に「.txt」が付いているものは、差し替えるときに拡張子を削除して下さい。
- 「https.pm」(200010312) → https.pm
- 「なつみかん」ver3.1、3.1aのバグ修正版で、下記「detect.pm」と併せるとver3.1b相当になります。
natsu/lib/nm/https.pmと差し替えてください(文字コードEUC、改行コードLFにする必要があります)
- 「detect.pm」(200010219) → detect.pm
- 「なつみかん」ver3.1のバグ修正版で、ver3.1a相当になります。
natsu/lib/detect.pmと差し替えてください(文字コードEUC、改行コードLFにする必要があります)
「なつみかん」ver.2.xからのバージョンアップについて
「なつみかん」 ver.3.1は、ver.2.xから内部コードの大幅な書き直しをしています。そのため、ver.2.3以前の「なつみかん」とは設定方法が大幅に異なっています。
ver.2.xから移行される場合は、下記のことに注意してください。
(ver.2.xからのバージョンアップ用の「バージョンアップの手引き」は同梱されません)
- 実行ファイル・設定ファイルは全て、「なつみかん」ディレクトリ下の「./bin/」ディレクトリ内に移動しました。
- 「nm.ph」は大幅に書式が変更になっています。旧バージョンのものを参考にしつつ新しいものを書き直してください。
- 「nm.sh」は廃止になりました。代わりに、「nm.pl」内で、動作するモジュールなどを設定するようになりました。
- 「nm_tg.pl」「nm_op.pl」「nm_mf.pl」「nm_lib.pl」は廃止になり、同様の機能を持つモジュールが「なつみかん」ディレクトリ下の「./lib/」ディレクトリ内に入りました。
- 「nm_mf.pl」で設定していた「&etcscript」というサブルーチンは「nm.ph」に移動しました。
- 「nm_info.pl」は「info.cgi」に名称変更しました。
- テンプレートとなるHTMLに埋め込む指定子で、「<!--NATSUMICAN_OUTPUT:/dir-->」の利用法、書式が変わりました。また、「<!--NATSUMICAN_SORT_OUTPUT:n:/dir-->」が追加されました。
- 時刻取得対象サイトを指定するファイル(sites.lirs)、リモート情報利用対象サイトを指定するファイル(remote.cfg)の書式は変わりません。これらは、「なつみかん」実行ファイルと同じディレクトリ(./bin/)に入れてください。
- jcode.plが実行ファイルと同一のディレクトリになくても、@INCに指定されているディレクトリにあれば利用できるようになりました。また、jcode.pl以外にもJcode.pm、NKF.pmが利用可能です。
- UNIX環境では、setpriorityを使うことでnise値を指定(+10してあります)し、他のプロセスと協調動作するようになりました。
「なつみかん」関連ソフトウェア・パッチ等
- 基本認証対応修正パッチ(「なつみかん」ver.3.0a(20001023)用) by Yu Ooasa
→ patch-auth-3.0a.tar.gz(tarball)
- 「なつみかん」ver.3.0aで、基本認証のかかったサイトの更新時刻をチェックできるように修正するパッチです。詳細は同梱されているドキュメントを参照してください。
このパッチの著作権はYu Ooasaさんにあります。また、このパッチをご利用の際は、「なつみかん」の正規サポート対象外とします。ご質問等はYu Ooasaさんの方へお願いします。
- 機能追加パッチ(「なつみかん」ver3.0a, 3.1(a)用 by 平田 泰行
→ 詳細はこちら。
- 「なつみかん」ver3.xに機能を追加します。
このパッチの著作権は平田 泰行さんにあります。また、このパッチをご利用の際は、「なつみかん」の正規サポート対象外とします。ご質問等は平田 泰行さんの方へお願いします。
- IPv6対応モジュール(「なつみかん」ver3.x用 by 平田 泰行
→ 詳細はこちら。
- 「なつみかん」ver3.xでIPv6が使えるようになります。
このパッチの著作権は平田 泰行さんにあります。また、このパッチをご利用の際は、「なつみかん」の正規サポート対象外とします。ご質問等は平田 泰行さんの方へお願いします。
「なつみかん」旧版ダウンロード
- 「なつみかん」ver.2.3(20000120)
→ natsu2.3.tar.gz(tarball)、natsu2.3.exe(Windows自己解凍)
- 一つ前のバージョンです。3.0から大きな変更が加えられたので別々に公開しています。
内容はtarballもWindows自己解凍も同じです。
「なつみかん2.3」に対するプログラムアップデート
拡張子に「.txt」が付いているものは、差し替えるときに拡張子を削除して下さい。
- 「nm_lib.pl」ver.2.3.5(20021201) → nm_lib.pl
- 不正な日付を受け取ったとき、強制終了してしまうバグを修正しました。
上記の物を、文字コードEUC・改行コードLFにして、差し替えて下さい。
- 「nm_tg.pl」ver.2.3.2(20000401) → nm_tg.pl
- HTMLの1行目に書かれた更新時刻のGET取得ができないバグを修正しました。
上記の物を、文字コードEUC・改行コードLFにして、差し替えて下さい。
- 「nm_op.pl」ver.2.3.1(20000306) → nm_op.pl
- DI出力をする際、DI仕様に基づいた出力ができていなかったので修正しました。
上記の物を、文字コードEUC・改行コードLFにして、差し替えて下さい。
現在報告されている支障リスト
「なつみかん」ver.3.x全般の支障
- 一部環境のPerl5.005(RedHat LinuxやFreeBSDで報告有り)で、HTTPアクセス時に長時間相手先サーバから応答が無い場合、ネットワークタイムアウトを正確に判定・検出できず、固まったりエラーで落ちてしまう。
※Perl標準のIOモジュールにバグがあるための問題なので、「なつみかん」側では対処できません。PerlのIOモジュールを入れ替えるか、最新版のPerlに5.6.0に入れ替えるなどして対処してください。
「なつみかん」ver.3.1a(20010219)のバグ
- 一部のWebサーバーソフトとの交信に失敗してしまうバグ。←3.1b(or アップデート)で修正済み。
「なつみかん」ver.3.1(20010206)のバグ
- リモート情報など更新日時解析時、URLに正規表現メタキャラクターが含まれているとPerlが落ちるバグ。←3.1a(or アップデート)で修正済み。
- 一部のWebサーバーとの交信に失敗してしまうバグ。←3.1b(or アップデート)で修正済み。
「なつみかん」ver.3.0a(20001023)のバグ
- URLの日時追尾機能で、本来なら12時間遅れて時刻切り替えを行うところが、21時間遅れて日時が切り替わるバグ。←3.1で修正済み。
- nmp.cgiでPUSH更新時の表記が「0」になってしまうバグ。←3.1で修正済み。
- PUSH更新時刻受信の受け口のセキュリティホール。←3.1である程度対応。
- Last-Detectedが0以下でも情報が通ることがあるバグ。←3.1で修正済み。
- 一部のWebサーバーとの交信に失敗してしまうバグ。←3.1b(or アップデート)で修正済み。
「なつみかん」ver.3.0(20001019)のバグ
- Proxyを使用するとバーチャルホストのサーバーとHTTP交信ができない。←Proxyはサポート外です。
- DIの出力がDI仕様にそぐわない。←仕様にそぐわない情報の出力をしないようにしました。
- &detect::detect()でnoremote指定したとき、指定したURLと「実際に時刻情報が取れるURL」の両方の更新時刻を取得しようとしてしまうバグ←3.0aで修正済み。
- nmp.cgiで非購読サイト登録時に、URLが動的に(月・日ごとに)変わるサイトのチェックボックスが外れてしまうバグ←3.0aで修正済み。
- 一部のWebサーバーとの交信に失敗してしまうバグ。←3.1b(or アップデート)で修正済み。
「なつみかん」ver.2.3(20000120)のバグ
- ネットワークタイムアウトを正確に判定・検出できず、更新時刻をLength判定してしまう。 ← 新アーカイブ・アップデートプログラムで修正済
- DI形式の出力の際、ある項目で値がnullの時、「0」と出力してしまう(DI仕様ではnullの時はその項目は出力しない) ← アップデートプログラムで修正済
- HTMLの一行目に書かれた更新時刻情報がGET取得できない。 ← アップデートプログラムで修正済
- 一部のWebサーバーとの交信に失敗してしまうバグ。←3.1b(or アップデート)で修正済み。
「なつみかん」オンラインドキュメント
ver3.1b
ver2.3
「なつみかん」導入実績(笑)
「なつみかん」をご使用いただいているサイトのリストです。
これからは、ここの登録は自己申告制にさせていただきます(←めんどくさがり(^^;)。「なつみかん」によるコンテンツを立てていて、ここに掲載されていない箇所・あるいは「なつみかんを使ってコンテンツ作ったよー」という事例がありましたら、ひや までお知らせ下さい。
「なつみかん」についてあれこれ
製作のいきさつ:
- はうンサーバーに林立する各種アンテナサイトの情報を利用するなどして、天野アンテナのはうンサーバーにおける負荷を減らしたかった
- 朝日奈2000が私の手元でどうしても動かなかった
- 取得サイトの設定ファイルをデータベース化したかった
- 朝日奈アンテナが得る情報は根底にDI作成というのがあるのですが、天野アンテナではDIのような高度な情報を生かしていない(生かすつもりもない)のに、高度な情報を時間とマシンパワーをかけて得ようとする朝日奈の挙動に不満があった
主義主張(^^;:
- 取得対象サイトにはなるべくよけいなお願いをしないで、更新時刻が取れるようにしたかった。
- リモート情報を有効活用して、なるべくネットワークやマシンに負荷をかけないようにしたかった<けど際限なくメモリを使うのでダメダメかも(苦笑)
- このソフトを使う(あるいは使おうとする)ことで、UNIXやサーバーやネットワークなどについて、多少でも知識を得たり、興味が湧いたりしてほしかった。
そのためにも、よけいなところで詰まったりする事がないように、巣立つ(「へ〜、おもしろいな〜、さあいろいろ設定してみようか」と思うぐらい)まではすんなり動くようにしたかった。手取り足取りのガイドもそうだし、それ以前にバグなどで微妙におかしな動きすらしないようにしたい。
ただし、インストーラーなどは使わず、一から十まですべて自分でやることで、サイト全てを見渡すことができるようになってほしい。
- 主目的(更新時刻を得て出力する)がいろんな用途に活用できるように、機能をいろいろ増やしていく。「あること」をやるときに、なるべく他のソフトの力を借りないようにしたいかな。
- わたし自身の技術力の向上に、このソフトの開発が役に立ってくれたら嬉しいなぁ(^^;
すぺしゃるさんくす:
(順不同です、抜けていたらごめんなさい)
「みかん」のソースを快く提供して下さった、こにしふるふるさん
外国サーバー環境をお貸しくださったり、DI論争におつきあい下さった、世界のネタベンダーぐっさー
情報を提供していただいたほか、なつみかんパーソナライズシステムを開発し提供してくださったariさん
「なつみかん」をハックし情報を提供して下さった、やあ3さん、arkさん、ふぁるさん、Chinさん、Yu Ooasa さん、平田 泰行さん、吉田英樹さん、とがわさん、LCRさん
バグ情報やご意見を下さった、武井 伸光 さん、きぃさん、みゃけさん、NOZさん、いぬ さん、川上 正人さん、けいさん、みやけんさん、とくみっ。さん、Hidetoさん、片桐紀長さん、ぬまりんさん
DI論争におつきあい下さった、あづみん、janusさん
「なつみかん」をご利用いただいている管理者の方々、「なつみかん」のアンテナをご利用いただいているユーザーの皆さん。
本当にありがとうございます。
「なつみかん」著作権表示など
- 「なつみかん」はフリーソフトウェアです。ただし著作権は放棄しません。「なつみかん」の著作権は ひや にあります。
- 「なつみかん」ご利用に際し、 ひや が金銭の要求をすることは一切ありません。
- 「なつみかん」に関連する一切のトラブルについて、 ひや は責任を負いません。
- 「なつみかん」の動作・配布等における商用利用(動作・配布に伴う直接的な金銭収受があるとみとめられる場合)をなされる場合には、事前に ひや にご連絡ください。ただ、ご自身の責任に基づいてそれが行われれば、制限をするつもりはありません。
- 「なつみかん」の改造は、自己の責任に基づいてご自由に。ただし、プログラムに多少でも手を加えた場合、改造している旨をどこかに記載するか、あるいは「なつみかん」を使用していることを明記しないようにしてください。
- バグ修正やプログラムの改良の義務は作者の ひや にはありません。
"NATSU-MICAN" Copyright (C) 1998, 2003, 2020 hiya All Rights Reserved.