All - May 2005
ˆ TOP2005-05-29
Fancy URLs環境下のトラックバックで送られるリンクURLに含まれる二重スラッシュの回避
いまさら何を、という話なんだけど。
NP_TrackBack(Ver.1.23bj7)プラグインを使用してFancy URLsモードでTrackBackを打つと、Ping先のトラックバック元へのリンクURLに二重のスラッシュが含まれてしまう場合がある。Blog URLがスラッシュで終わっていると、この現象が発生する。
この原因は、NucleusJPForumでのだいぶ前のまみおさんの指摘のように、NP_TrackBack.phpのevent_PostAddItem関数およびevent_PreUpdateItem関数で、グローバル変数$CONF['ItemURL']にBlog URLを代入してからcreateItemLink関数を呼び出しているためだ。現在ご覧のブログでは、Blog URLが 'http://www.tyada.com/computing/'と指定されているので、この文字列が$CONF['ItemURL']に渡される。
一方でcreateItemLink関数は以下の引用のように、Fancy URLsモードでは$CONF['ItemURL']の値に、単純に'/item/'と$itemidを連結して返してくれる。
function createItemLink($itemid, $extra = '') {
global $CONF;
if ($CONF['URLMode'] == 'pathinfo')
$link = $CONF['ItemURL'] . '/item/' . $itemid;
else
$link = $CONF['ItemURL'] . '?itemid=' . $itemid;
return addLinkParams($link, $extra);
}
かくして、'http://www.tyada.com/computing//item/266'というスラッシュを2個含んだURLがPingされてしまう。
それなら、Blog URLを 'http://www.tyada.com/computing'などとスラッシュで終わらないように指定すればいいんだけど、Blog URLを使用するのはNP_TrackBackだけじゃないからね。新しく作ったblogならともかく、既存のblogだと他にどのような影響が出るのか評価するのが大変だ。
createItemLink関数は'/item/'をつけてリンクURLを返してくれることが上記のように分かっているので、createItemLink関数を呼ぶ前に$CONF['ItemURL']の末尾にスラッシュが付いている場合にはそれを削ればよい。
event_PostAddItem関数およびevent_PreUpdateItem関数の最後の方、createItemLink関数を呼ぶ前に、以下のコードの3〜5行目を追加する。
if (!$CONF['ItemURL']) $CONF['ItemURL'] = $blog->getURL(); if ($CONF['URLMode'] == 'pathinfo' && substr($CONF['ItemURL'], strlen($CONF['ItemURL']) - 1) == '/') $CONF['ItemURL'] = substr($CONF['ItemURL'], 0, strlen($CONF['ItemURL']) - 1); $url = createItemLink($itemid);
これで他への影響を心配することなく、汎用的に修正できると思う。
ˆ TOP2005-05-14
FancyURLsモードで新しいblogをサブディレクトリに置いた場合のitemlink
FancyURLsモードで新しいblogをサブディレクトリに設置すると、デフォルトではテンプレート変数<%itemlink%>の返す値は、
http://www.tyada.com/music/index.php?itemid=253
のようになってFancyURLsしてくれない。できれば、
http://www.tyada.com/music/item/253
でアクセスしたいのが人情ってもんだ。
# と言いつつ、長い間放っていたが。
<%itemlink%>の値を正しくFancyURLsさせるには、/music/index.phpの中の$CONF['Self']の値を以下のように変更する。
$CONF['Self'] = '/music';
もしくは相対パスなら、
$CONF['Self'] = '.';
また、上記のリンクをアクセスすると 404 Error - Not found になってしまうので、サブディレクトリmusicの中に以下のitemファイルを作っておく。
<?
include('../fancyurls.config.php');
include('../config.php');
$data = explode("/",serverVar('PATH_INFO'));
$itemid = intval($data[1]);
selectBlog('music');
selector();
?>
ˆ TOP2005-05-03
Coyote Linux - 入手とインストール
入手
Coyote Linuxの開発元であるVortech Consultingから、Coyote Linux Floppy Editionが入手できる。floppyfwなど、他の1FD Linuxディストリビューションではディスクイメージの形で配布される場合が多いが、Coyote Linuxの場合はFDを作成するウィザード・プログラムが配布されている。
Windows上でFDを作成したいので、Windows Disk Creation Wizard v2.22.0を入手する。
Coyote Linux
今まで、自宅のルーター(ファイアウォール)にはfloppyfwを使用しており、現在も活発に開発が続けられている点で満足していたのだが、どうしてもルーター上でsshdを動作させる必要が発生したために、見直すことにした。
- floppyfw
- keroppy - floppyfwから派生
- IPnuts4.0 Mosquito
- Coyote Linux Floppy Firewall
以上を比較検討した結果、sshはいずれのディストリビューションでも採用、もしくは追加できることが分かったが、ルーターに使用している機材(CPU: 486DX 100MHz)で使用でき、情報が豊富に提供されているCoyote Linuxを試してみることにした。IPnuts4.0もそそられたが、Pentium以上が必要ということだったので。
(いつまで486DXを鞭打って使うつもりなんだ?)










