Topお知らせblog > 2005年7月
2005年7月21日

中継君の使用方法

中継君はBlogPeopleリンクリスト等の表示の遅延を避けるため、キャッシュに一旦保存したものを表示するためのツールです。便利そうだと思っていましたが動作や設定方法がいまひとつ分からなかったので(バカ)、BlogPeople を例に Javascript の基本動作から中継君の設定方法まで説明します。
Windows自宅サーバでの利用ですのでパーミッションの設定等もれてましたらお許しください。

2006.10.24 追記簡単な設定で中継君とほぼ同様の機能を実現する「BlogPeople 等のリンクリストによる表示の遅延を解消する(その1:JavaScript編)」を公開しています。

JavaScript の基本的な動作
BlogPeople のリンクリストを取得するタグは、

<script language="javascript" type="text/javascript" src="http://www.blogpeople.net/display/usr/xxx.js"></script>

となっています。当サイトで折りたたみやツリー化等のカスタマイズをされている方には馴染みのあるこの書き方は、<head> ? </head> に挿入している JavaScript 外部ファイルのインクルードと同じで、src 属性に記述されたURLを実行し、その結果を type 属性(MIMEタイプ)に準じた形式で出力します。ここでは "text/javascript" なのでJavaScriptとして認識されます。
つまり、このタグが埋め込まれたページをブラウザで実行すると、

http://www.blogpeople.net/display/usr/xxx.js

が実行され、結果としてリンクリストを表示するためのJavaScript文

document.write('<div class=\'blogpeople-main\'>');
document.write('<a href=\'http://www.blogpeople.net/cgi-bin/click.cgi?u=http%3A%2F%2Fxxx\' target=\'_blank\' title=\'更新日:05年07月21日(Thu) 12時28分 \' >hogehoge1blog</a><br />');
document.write('<a href=\'http://www.blogpeople.net/cgi-bin/click.cgi?u=http%3A%2F%2Fxxx\' target=\'_blank\' title=\'更新日:05年07月21日(Thu) 12時31分 \' >hogehoge2blog</a><br />');
                    :

を取得・表示します(?)。
このタグを実行して BlogPeople リンクリストとして表示するまでの時間は、ほとんど

http://www.blogpeople.net/display/usr/xxx.js

の応答時間に依存します。皆さんのページに埋め込まれた同じようなURLを、ブラウザのアドレスに直接入力して実行すれば、応答時間を体感できると思います。

中継君の役割
中継君は CGIスクリプトで、あるURLの実行結果をキャッシュ(一時的なファイル)に保存して、それを表示するという機能をもっています。
中継君を起動するURLのイメージは下記のようになります。

http://domain/path/to/jc.cgi?<これまでに起動していたURL>

このURLを表示したいページの任意の場所に埋め込みます。
例えば、先の BlogPeople リンクリストの JavaScript のタグであれば、

<script language="javascript" type="text/javascript" src="http://www.blogpeople.net/display/usr/xxx.js"></script>

<script language="javascript" type="text/javascript" src="http://domain/path/to/jc.cgi?http://www.blogpeople.net/display/usr/xxx.js"></script>

と、中継君のCGIスクリプトを実行するURL(青色)を挿入します(他に事前設定がありますがそれは別途)。この設定により、ブラウザがこの行を表示する時、まず

http://domain/path/to/jc.cgi?http://www.blogpeople.net/display/usr/xxx.js

というURL(=CGI)を実行します。これまで設定されていたURLは "?" の後ろに設定された形になっていまして、中継君のプログラムにパラメータ(query)として渡され、内部で起動されます。

内部起動して取得したデータ(?)をキャッシュに一旦保存し、さらにそれををブラウザに表示します。2回目以降(厳密には指定した周期になるまで)はこのキャッシュにあるデータをブラウザに表示するので、httpアクセスによる表示の遅延を削減することができます

中継君は分単位でキャッシュの取得周期を設定できます。例えば10分に設定していれば、最初にキャッシュを取得してから約10分間はキャッシュのデータを使用しますが、10分後には正規のURLにアクセスして新しいデータを取得し、キャッシュに保存します。なお旧バージョンではキャッシュが複数生成されたようですが、現在はひとつのURLに対して1つしか生成されないようになっています(=常に上書き)。

先の記述で「遅延0」ではなく「遅延を削減」としているのは、次の周期には正規のURLでデータを再び取得するため、たまたまその回に当たると表示が遅くなる時があるためです。

設置方法

1.アーカイブのダウンロード
中継君のページより、最新記事の下にある「ダウンロード」をクリック。次のページで「中継君 Ver.1.4.2(この記事の投稿時点)」のリンクをクリックしてダウンロード。ダウンロードしたらアーカイブを解凍します。下記のファイルがあることを確認してください。

jc.cgi
ttl_sample.txt

2.ファイルの修正

Perlのパス
jc.cgi を任意のエディタで開いて、使用しているブログがMovable Type の場合は、1行目の

#!/usr/local/bin/perl -w

#!/usr/bin/perl -w

に変更します。ここを修正せずに実行すると結果が何も返却されません(ブラウザから直接実行すると500 エラーになります)。

ホスト制限
特定のホストからアクセスされた場合だけ中継君を起動したい場合は、次の行の右辺に該当のホストを追加します(追加方法はファイルに記載されています)。

my @url =  ("");

どこからアクセスされても常に起動する場合はデフォルトの状態でOKです。
この機能の動作は、ここに設定されたデータと HTTP_REFERER と比較して、完全一致または部分一致した場合、フィルタリングします。フィルタ対象のホストであれば何も(キャッシュのデータも)返却せずに処理を終了します。

キャッシュ周期
データがキャッシュされてから次にキャッシュするまでの周期を変更したい場合は次の行の右辺を変更します。

my $cache_ttl = 2 * 60;

デフォルトは120分(2*60)でキャッシュを更新する設定になっています。このデータは、キャッシュに対してファイルテスト演算子(-M オプション)を実行し、キャッシュが更新されてからどれだけの時間が経過しているかを調べることで実現しています。

アクセスするURL別に周期を設定したい場合は ttl.txt というファイルを用います。例えば BlogPeople リンクリストと MyBlogList の周期をそれぞれ 3時間・1時間に設定する場合は、ttl.txt に

www.blogpeople.net/display/usr/ 180
list.myblog.jp/list 60

と記述します。このファイルの設定は先の $cache_ttl の設定より優先されます。一律同じ周期でよければ ttl.txt の設定は不要です(ファイル自体不要)。
BlogPeople については ttl_sample.txt にデフォルトで設定されていますので、このファイル名を ttl.txt に変更するだけで使えるようになります。

3.ファイルのアップロード
jc.cgi と、必要に応じて ttl.txt を CGI が実行できるパスにアップロードします。ttl.txt は jc.cgi と同じディレクトリにアップロードしてください。jc.cgi のパーミッションは他の CGIファイルと同じように変更してください(755 とか 777 等)。

4.cache ディレクトリの作成
ファイルをアップロードしたディレクトリの直下に cache というディレクトリを作成します。このディレクトリは中継君が最初に起動された時に自動的に作ってくれますが、パーミッションが誤っていると作成されないので予め作っておいた方が無難です(強制している訳ではありません)。
このディレクトリ配下にキャッシュを自動的に作りますので、cache ディレクトリのパーミッションを 755 や 777 等に変更しておきます(中継君による自動生成では 755 にしているようです)。

5.テンプレートの変更
再掲になりますが、各テンプレートにある BlogPeople リンクリスト等を起動するタグに、中継君のURLを挿入します。

<script language="javascript" type="text/javascript" src="http://www.blogpeople.net/display/usr/xxx.js"></script>

<script language="javascript" type="text/javascript" src="http://domain/path/to/jc.cgi?http://www.blogpeople.net/display/usr/xxx.js"></script>

とします。jc.cgi が mt.cgi や mt-comments.cgi と同じディレクトリにあれば、

<script language="javascript" type="text/javascript" src="<$MTCGIPath$>jc.cgi?http://www.blogpeople.net/display/usr/xxx.js"></script>

とするのが良いでしょう。
挿入したら、保存・再構築します。

6.中継君の実行
挿入したページをブラウザで表示させます。初回はキャッシュがありませんので、キャッシュを作るために正規のURLにアクセスします。正常に動作すれば設定前と同様にリンクリスト等が表示されます。
心配であれば、URLをブラウザに直接入力して実行してみてください(URLに正規のURLを "?" で付けることもお忘れなく)。

http://domain/path/to/jc.cgi?http://www.blogpeople.net/display/usr/xxx.js

正常に動作すればリンクリスト等の結果が表示されます。2回目以降はサクッと表示される筈です。

以上です。なお中継君の実行には Perlモジュールの LWP が必要です(多分主要なレンタルサーバでは大丈夫と思います)。

Comments [4] | Trackbacks [2]
2005年7月14日

トラックバックの言及リンクについて

July 14,2005 11:53 PM
Tag:[, , , ]
Permalink

話題に乗り遅れて「言及リンク」について一言。

「言及リンク、つまり『受信したトラックバックの記事にトラックバック先のリンク』がないと Google の PageRank が下がる」という情報については「問題なし」ということで既に収拾がついているようですので、ここではトラックバック先の情報が元記事に記載されていないトラックバックについての考えを述べたいと思います。

現状は、明らかに記事と無関係な内容のトラックバックスパムはプラグインでフィルタリングしていますが、トラックバック先の記事に当サイトの内容が記載されていないトラックバックやアフィリエイト系のトラックバックはそのままにしています。
残している深い理由は特にありません。そのままにしていても問題ないから、という程度です。その状態を、ここに訪れる方の大半が酷く不愉快に感じ、さらにそれが一定期間継続する、あるいはセキュリティ上の問題が発生するのであれば削除することも選択肢のひとつとして考えられますが、今のところその対象は英語でやってくるトラックバックスパムのみという認識です。

トラックバックスパムは特定の文字列でフィルタリングするようにしていますが、先日本当に普通の英文トラックバックを受信しました。Typekey関連のカスタマイズでお役にたてたようです。

GOODHYUN.COMEven after Typekey authentication, MT requires sign-in again...

もし半角のみのトラックバックを一律フィルタしていたらこの方のサイトがカスタマイズを利用されたことを知ることはなかったと思います。
スパムは色々な単語でやってくるので、相変わらずイタチごっごの日々ですが、(半角のみのトラックバックを)受信できる状態にしておく価値はあるな、と感じた一件でした。

PageRank については意識していません。随分前にペナルティにひっかかったのかひっかかってないのか不明ですが、Google で1~2ページ目に表示されていた検索結果がかなり後方になってしまっているのがその原因かもしれません。それでも何故か毎日結構なPVをいただき、どこから(Yahoo?)か探し当ててテンプレートを取りにこられる方々がいらっしゃるのは本当に嬉しい限りです。

自サイトにとって送信して欲しい(?)トラックバックだけを受信しようと思っても現実的にそううまくはいきません。結局「…削除します」といったサイトルールを設けて運用対処されるケースが少なくないのですが、MT-Moderate プラグインでトラックバックを承認形式するという手もあります。やや面倒であれば言及リンクの話題で利用数が増えた Movable Type で言及リンクのない TrackBack ping を弾くプラグインがお手軽と思います。いずれにしても「受信したトラックバックを表示するのに送信サイトに言及リンクがない」という不公平感からは解消されると思いますし、機械任せである分、精神的な負担も減少するのではないでしょうか。

まとまりのない文章ですいません。まとめると、普通のトラックバックを頂いている方には心の中で感謝していますし、言及リンクのないトラックバックについてはこの新しいインタフェースを活用されているんだな、という気持ちで今後もスルーします。スパム以外で明らかに問題のあると思われるトラックバックは削除致しますが今のところはありません。

Comments [0] | Trackbacks [2]
2005年7月 7日

DynDNS Hostname Expired

July 7,2005 11:50 PM
Tag:[, , ]
Permalink

ダイナミックDNSサービスのDynDNSより本サイトのドメインがExpireされていました。本日午後より12時間ほど接続できない状態が続いてしまい、大変ご迷惑をおかけ致しました。この場をお借りしてお詫び申しあげます。

原因はIPアドレスが30日間アップデートされなかったためで、そのようなホストは静的IPアドレスであり、「本来ダイナミックDNSの対象外ではない」とみなされてしまったようです。現在使っているインターネット接続サービスは固定IPではないので、1ヶ月も同じIPだったとは思いもよりませんでした。
また5日ほど前にメールで警告がきていたのですが、元々英語のメールはほとんどSPAMメールなのでタイトルすら目を通していない状態でした。反省。

Expireされるのを防ぐためには、DynDNSのサイトにログインして該当のホスト情報を強制的に更新するしか手がないようです(以下警告メールより抜粋)。

You can "touch" your hostname and prevent it from being deleted simply by performing a manual, or forced, update.

有料サービス($9.95/年)に登録すればExpire対象から外してくれるそうです。

ということで同じドメインを再取得しました。DynDNSをご利用の皆様、どうぞお気をつけください。

Comments [4] | Trackbacks [0]
Now loading...
ギターに入った猫
掲載広告募集
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

AMN
Categories
Monthly Archives
2020年
2019年
2018年
2017年
2016年
2015年
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
2005年
2004年
2003年
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
Powered by
Movable Type 6.0.3