1 / 14

The Perl Conference Japan ’ 98 朝日奈アンテナによる コンテンツ情報の取得と利用

The Perl Conference Japan ’ 98 朝日奈アンテナによる コンテンツ情報の取得と利用. 平成 10 年 11 月 12 日 岩本 圭司. 朝日奈アンテナとは. “ コンテンツ情報 ” 取得システム Internet 上のコンテンツに関する情報を取得 更新時刻 タイトル、著作者、キーワード等 … 最新版は 1.914 (公式) /1.983 (非公式) http://www.fastwave.gr.jp/%7Emasshy/hina/. 開発経緯. Web Page を効率よく巡回したい 前回参照から更新されているページだけを見たい

Download Presentation

The Perl Conference Japan ’ 98 朝日奈アンテナによる コンテンツ情報の取得と利用

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. The Perl Conference Japan ’98朝日奈アンテナによるコンテンツ情報の取得と利用 平成10年 11月 12日 岩本 圭司 (c) 1998 Keiji Iwamoto

  2. 朝日奈アンテナとは • “コンテンツ情報” 取得システム • Internet上のコンテンツに関する情報を取得 • 更新時刻 • タイトル、著作者、キーワード等… • 最新版は1.914(公式)/1.983(非公式) • http://www.fastwave.gr.jp/%7Emasshy/hina/ (c) 1998 Keiji Iwamoto

  3. 開発経緯 • Web Pageを効率よく巡回したい • 前回参照から更新されているページだけを見たい • “べんりくん” (加内氏)発見 • “べんりくん” 相当プログラムを自作 • “朝日奈アンテナ” と命名 • 最新情報をキャッチする、受信「アンテナ」 • HEADで情報が取れない場合に対応 • アンテナ間通信を実装 • 送信「アンテナ」としても機能 (c) 1998 Keiji Iwamoto

  4. 公開後の進化過程 • V1.x • コンテンツ「更新時刻」取得システム • V1.0x:情報取得対象ページ個別の設定が多い • V1.1x:時刻情報を自動解析し設定項目を簡素化 • V1.2x:キャッシュ実装/設定フォーマット変更 • V1.3x:アンテナ間通信を改良 • V2.x(開発中) • コンテンツ「情報」取得システム • 更新時刻以外にもさまざまな情報を処理 (c) 1998 Keiji Iwamoto

  5. 朝日奈アンテナの動作(単体) (c) 1998 Keiji Iwamoto

  6. Web Clientとしての動作 • PerlでのHTTP通信 • まずはsocket → connect → あとはファイル入出力と同様) • 入力/出力ルーチンで別プロセス化(fork) • alarmでタイムアウト処理 • HTTPリクエストを出力 print SOCKET “HEAD /content.html HTTP/1.1\n”; print SOCKET “Host: gabi-n.hauN.org\n\n”; • コンテンツ情報/内容を取得 while (<SOCKET>) ~ • 日本語対応はnkfと連携 • フィルタつき入出力 (c) 1998 Keiji Iwamoto

  7. HTTPヘッダの解析 • Last-Modified: フィールドから情報取得 • フォーマットが決まっているため解析は容易 • パターンマッチングで該当行を特定 if (/Last\-Modified\:\s+(.*)/o) ~ • splitを用いてフィールドに分離→値を取得 split(“ /:”, $1); • SSI使用等でLast-Modified: が存在しない場合  →コンテンツ内容を解析 (c) 1998 Keiji Iwamoto

  8. コンテンツ内容の解析 • 解析対象行の決定 • URLごとに設定したキーワードとマッチングして特定 • splitでフィールドに分離 • 時刻フォーマットの解析 • 年は00~99 / 1900~2099の数値 • 月は1~12の数値 / 月名を表わす文字列 • 日は1~31の数値 • 時は0~23、分は0~59、秒は0~60の数値 • タイムゾーン文字(GMT, JST, EDT, ...) (c) 1998 Keiji Iwamoto

  9. 時刻フォーマットの解析 • 各フィールドのうち、意味が確定するものを探す • パターンマッチング、数値の範囲 • (例1)数値 “98” は1998年として確定 • (例2)数値 “23” は月、時ではないが…年? 日? 分? 秒? • 意味が確定したフィールドをもとに、さらに推定 • (例)数値 “26” の意味は? • 年、日、秒が既に確定していれば、分であると確定する。 • フィールドの位置関係等も考慮 • 時、分、秒は通常、その順に並べて記述される。 • 時、分を省略し秒は記述するといったことは通常しない。 …など (c) 1998 Keiji Iwamoto

  10. 時刻フォーマット自動解析 • 初期のバージョン(1.0x)では… • フォーマット情報を明示して与える必要があった。 • 第○フィールドは月、第△フィールドは分… • 自動解析の実装、改良により… • フォーマット情報明示の必要はなくなってきた。 • V1.2xの入力仕様ではフォーマット情報明示を廃止。 (c) 1998 Keiji Iwamoto

  11. アンテナ間通信 • アンテナ間通信による協調動作 • 負荷分散 • 情報の補完 • HTTPによる通信は実装済 • データフォーマットは独自(plain text) • HTMLも使用可能(機能に制限あり)  →他の更新時刻取得エージェントとも連携可能 ex. べんりくん、WatchLynxなど多種 (c) 1998 Keiji Iwamoto

  12. 朝日奈アンテナの動作(協調) (c) 1998 Keiji Iwamoto

  13. キャッシュ処理 • アンテナ間通信で得た情報は連想配列に格納 • URLをキーとしてメモリ上にDBを作成。 • より新しい/信頼性の高い情報を洗濯し格納。 • ある程度古い情報は破棄。 • アンテナ間通信の結果が無効なURLに対してのみ直接通信。 • 直接通信して取得した情報も連想配列に格納 • 連想配列をメモリキャッシュとして使用。 • 複数回の情報参照に対し、不要な通信を行わない。 (c) 1998 Keiji Iwamoto

  14. 今後の展望 • 独自プロトコルによるアンテナ間通信 • 中村氏のDIRP(Document Information Relay Protocol)構想 • V3.xで実装予定 • 情報の “PUSH” は? • 通信効率の向上 • Keep-Alive • 複数同時connect (c) 1998 Keiji Iwamoto

More Related