Home

日記
広告ツール機能追加 (10:22)Edit

昨日紹介した広告ツール機能強化版に、ランダム表示モードを追加しました。

  • random - 1に指定すると、表示順序をランダムソートする。省略時は従来通りのソート順。

たとえば、

<script type="text/javascript" charset="euc-jp" src="http://1470.net/api/asin_cms.php?limit=5;random=1;mode=js;associate=your-associate-id"></script>

なんてやると、

なんて感じになります。要はblogmapのランキング入りしている中から適当に5個の商品を抽出して表示しているわけですね。もちろんwebsiteを指定してやれば、サイトで紹介した商品からランダムに選択させることもできます。

表示内容は一定期間キャッシングされますが、キャッシュが切れると自動的に更新(表示内容が差し変わる)されます。キャッシュ時間はサーバー負荷を見つつ適当に変更しています。

Published At2005-06-01 00:00Updated At2005-06-01 00:00

日記
またDBがこけてました (10:55)Edit

前とまったく同じコケ方をしてました。これはもしかしたらディスクかなー。やばいなー。もう一個ディスクを載せているんで、そのうちそっちのディスクにDB領域を移動するか。でもこけているのはOSが載っている方のディスクなんで、ディスクが死んだらOSが死ぬんだよなー。

データ自体はもう1台のサーバーにレプリケーションがあるんで、(レプリケーションタイムラグの分以外は)失われることはないんだけど、サーバー自体がこけるとバックエンドを動かせなくなるんで、できれば死なないで欲しいのう。さすがに代替サーバーを用意するコストはかけられないし。

Published At2005-06-01 00:00Updated At2005-06-01 00:00

日記
はてな 各種wiki記法とはてなダイアリー記法の違いを一覧できるページ。yukiwiki, pukiwiki, wikimedia(wikipedia)などwikiの各記法、ならびにtDiaryのwiki記・・ (15:39)Edit

おもだった(日本製)Wiki記法の対照表。tDiary WikiスタイルはHikiと同じ。

はてなダイアリー記法は、Wiki記法的部分はYukiWikiベースだろうけど、Wiki記法の延長として作られたものではなく、HTML中に補助的にWiki的な簡易表現を使えるようにしたもの、って感じ。

Wiki記法的な部分についても、はてな全体のサービスとの連動に特化した機能や、他のWikiにはあまりない(日記/blogサイト向けの)独自拡張が多いんで、他の記法とは比較しにくいと思う。対照表的に表現するとはみ出す部分が多すぎる。

って、初めてはてなで回答を書いてみようかと思ったけど、はてなで書くよりも自分のページに残しておきたいんで、こっちに書いてtrackbackを送ることにしよう。

Published At2005-06-01 00:00Updated At2005-06-01 00:00

日記
Re: 純粋後ろめたさ批判 (11:04)Edit

純粋後ろめたさ批判で書かれている話は気持ちはよくわかるけど、この手の公憤・思想に属する行動原理は、なかなか実際(直接的)には取りにくい。というか、俺の中での優先順位的には、「結果を出すこと」が優先で、「理想を追うこと」は二の次だ。

この手の活動をしていて一番コスト(特に精神的な)がかかるのは、今回のような人間関係・感情的なものに対応する部分であり、モチベーションを維持するためには、そこにかけるコストを最小にするアプローチが、戦略的に有効だと考えている。もちろん商売でやっているなら話は違ってくるけど(あらかじめ十分な準備を行うべきだし、何か起きたときの対策のコストを惜しんではいけない。逆に言うと、商売じゃないからこそ、その手の部分に手を抜いてもある程度は許されると思っている)。

ちなみに、アフィリエイト系サイトからのクレームってのは今までも何件か(メール等の非公開窓口経由で)来ているんで、BigBangさんが初めてというわけではない。ただ、今までのクレームは「要件のみ」といった感じで、具体的に何をどう考えているのかさっぱりわからなかったんで、その点BigBangさんのように公開で何をどう考えているのか表明してくれると、問題点が明確化するし、情報の共有・公知もできるんでありがたい。

で、自分にとって「結果を出す」ための一番いい方法が現状の対応(一番クレームの原因となると思われるポイントを、機能性を損なわずにつぶしておく)であり、「インターネットにおける意識改革・環境整備のために戦う」という選択肢は、割に合わなすぎて取る気になれない。まあ現時点ではそっち方向のモチベーションも余力もないってだけなんで、そのうちそういうのがやりたくなったらやるかもしれないけど(ただ俺は、議論(バトル)ならやってもいいけど、政治は趣味じゃない。政治的な議論ならばまあ範疇か)。

自分の(基本的な立ち位置としての)思想は主に行動で示しているつもりなんで、そういう間接的な表現+今回のhankakueisuuさんの発言とか関連するいろんな人の発言によって、世の中(インターネット)が(俺にとって)過ごしやすい方向になるといいなー、程度には思っている。現在俺がその手の活動にかけられるモチベーションは、せいぜいその程度のもの。

とか書くと、せっかくのhankakueisuuさんの政治的な発言の効果が薄れちゃうかもしれないけど、ああいう表現で書かれちゃうと、それを放置しておくよりはつつき返した方が俺的には気が楽なんで、できるだけ穏当な表現を使って書いてみた。

Published At2005-06-02 00:00Updated At2005-06-02 00:00

日記
changes.xmlのパース (18:55)Edit

はてなダイアリーの更新時刻情報としてchanges.xmlが用意されたんで、従来のRSSからこっちに切り替えるべきだろうなー。はてなダイアリーの規模だと更新が激しすぎてRSSだといろいろ問題があったし。

でもchanges.xmlのパース処理って用意してないんで書かないと。XMLとして処理せず、単にパターンマッチで処理した方が効率が良さそうだな。

<?php
mb_internal_encoding('sjis');
$srcUrl = 'http://d.hatena.ne.jp/changes.xml';
$xml = mb_convert_encoding(file_get_contents($srcUrl), mb_internal_encoding(), 'utf-8');
if (!preg_match('|updated="(.*?)"\s+count="(.*?)"|i', $xml, $matches)) {die;}
$baseTime = strtotime($matches[1]);
$count = intval($matches[2]);
if (!preg_match_all('|<weblog\s+name="(.*?)"\s+url="(.*?)"\s+when="(.*?)"\s*/>|', $xml, $matches, PREG_SET_ORDER)) {die;}
foreach ($matches as $item) {
$title = $item[1];
$url = $item[2];
$lastmodified = $baseTime - intval($item[3]);
echo $title . ' ' . $url . ' ' . date('Y-m-d H:i:s', $lastmodified) . "\n";
}
?>

とか。

Published At2005-06-02 00:00Updated At2005-06-02 00:00

日記
前にどこかに書いた気がするし (16:22)Edit

どこかで誰かが似たようなことを書いてもいるだろうけど、JavaScriptでprintデバッグしたい場合は、

<script language="javascript">
var debugWindow;
function h(str) {
return str.replace('&', '&amp;').replace('<', '&lt;').replace('>', '&gt;').replace('"', '&quot;');
}
function debugInit() {
if (debugWindow != undefined && debugWindow.document != undefined) {return;}
debugWindow = window.open('about:blank');
}
function debugPrint(str) {
debugInit();
debugWindow.document.write(h(str) + '<br>');
}
</script>

とかした方が、メインのウィンドウを汚染しなくていいよね。strがオブジェクトだったらオブジェクトダンプしたりとか、出力ごとの時間を出力したりとか、そういう拡張をするとさらに便利。

Published At2005-06-03 00:00Updated At2005-06-03 00:00

日記
au携帯GPSで位置情報を連続取得する (20:09)Edit

作ってみました hvsGpsMail」でサービスが紹介されていたんだけど、自分でいろいろいじってみたかったんで、自分版のひな形PHPスクリプトを作ってみた。

<?php
$interval = 60 * 10;  //refresh interval(sec)
$scriptUrl = 'http://server/location.cgi';  //this script url
$subscriberId = NULL; //your subscriber id or NULL
if (isset($subscriberId) && $subscriberId != $_SERVER['HTTP_X_UP_SUBNO']) {
die('invalid subscriber-id');
}
$now = time();
if (isset($_GET['lat'])) {
$lat = $_GET['lat'];
$lon = $_GET['lon'];
// メールで送るなりファイルやDBに保存するなり
}
header('content-type: text/x-hdml;charset=shift_jis');
?>
<HDML VERSION=3.1 MARKABLE=TRUE TTL=0>
<DISPLAY TIMERDEFAULT=<?php echo $interval * 10 ?>>
<ACTION TYPE=ONTIMER TASK=GO DEST="device:gpsone?url=<?php echo $scriptUrl ?>&ver=1&datum=0&unit=0">
NOW: <?php echo date('Y-m-d H:i:s', $now); ?><BR>
LAT: <?php echo isset($lat) ? $lat : 'UNKNOWN' ?><BR>
LON: <?php echo isset($lon) ? $lon : 'UNKNOWN' ?><BR>
<a href="device:gpsone?url=<?php echo $scriptUrl ?>&ver=1&datum=0&unit=0">REFRESH!</a>
</DISPLAY>
</HDML>

で、何をしようかなー。旅行とかツーリングとかの移動記録の自動化なんかには使えそうだけど。

修正

なんか俺のサーバーだとtext/x-hdmlヘッダをつけるとうまく動かないな。つけない(=text/html)とうまく動いている模様。ひとまずヘッダ出力部分はコメントアウトしておこう。

あとMARKABLE=TRUEをつけておかないと、このページをブックマークできないみたいなんで追加。そんな指定があったんだっけ。もう二度とHDMLなんて書かないと思っていたのになー。

さらに修正@6/6

結局text/x-hdmlヘッダをつけないとうまく動かなかった。EZWebのキャッシュが悪さをしていたのか? でもTTL=0なんだけどなー。よくわからんけど、最終的には上記のような(ヘッダもちゃんと送る)コードで動いている模様。

その他参考資料

Published At2005-06-03 00:00Updated At2005-06-03 00:00

日記
mod_limitipconn2をインストール (19:53)Edit

久しぶりにblogmapに重い絨毯爆撃を食らったんで、mod_limitipconn2をインストール。ひとまずサンプル通り、

MaxConnPerIP 3
NoIPLimit image/*

だけ設定しておいた。

Published At2005-06-07 00:00Updated At2005-06-07 00:00

日記
このページに関連した情報 (20:59)Edit

そういえば作ってなかったっけ。現在表示しているページや商品(Amazon)のMM/Memoとblogmapにおける言及状況を表示するbookmarklet。

bookmarklet: どう?

Published At2005-06-07 00:00Updated At2005-06-07 00:00

日記
PHPの配列で、 (21:34)Edit

ある配列変数が、

$val = array(1, 2, 3);

として与えられたのか

$val = array(0 => 1, 1 => 2, 2 => 3);

として与えられたのかを判別する方法ってないんだろうか? 多分代入されてしまったあとは判別がつかないとは思うんだけど、もしかしたら明示的に配列のキーが与えられたかどうかを判別する手段が存在しないかなー。

どういう時に使いたいのかというと、HTMLのselect-optionなんかのvalue(内部値)とcaption(表示文字列)の組み合わせを連想配列で渡すときに、前者ならばvalueもcaptionも同じものとして扱い、後者ならばキーがvalue、値がcaptionとして扱う、なんて使い分けれないかなーと思った次第。

前者ならば、

<select>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>

に展開されて、後者ならば、

<select>
<option value="0">1</option>
<option value="1">2</option>
<option value="2">3</option>
</select>

に展開される感じね。

Published At2005-06-07 00:00Updated At2005-06-07 00:00