Home

日記
Bフレッツマンションタイプ (12:43)Edit

うちのマンションでBフレッツのマンションタイプが使えるようになったらしい。現状の実効12Mbps/1Mbps程度のADSLでも全然問題ないんだけど、ひかり電話と組みあわせるとトータルの維持費が安くなるみたいだし、切り替えちゃった方がいいんだろうなー。多分ADSL回線のせいで通信がたまにとぎれて、ゲームとかリモート端末とかが切れちゃうのも解消されるかな。

Published At2005-12-12 00:00Updated At2005-12-12 00:00

日記
MM/Memoとblogmapのexists API (12:37)Edit

そういう遊びが流行っているみたいなんで、お手軽APIを用意してみた。

URL: http://1470.net/api/exists.php
パラメータ: url=[URL文字列]
戻り値: [URL]\t[MM/Memoの登録数]\t[blogmapの登録数]\n
リクエストメソッド: GETでもPOSTでもOK。

urlパラメータとして、改行(\n)区切りで複数のURLを渡すと、結果も複数行で返ってくる(POSTリクエスト推奨)。

あと、MM/Memoで、あるURLのrelatedページを表示したい場合は、

http://1470.net/mm/related?webpage=[1470.net内のWebページID]

にしなくても、

http://1470.net/mm/related?url=[URL文字列]

でもいけるんで、わざわざWebページIDを取得しなくてもリンクはできます。

Published At2005-12-13 00:00Updated At2005-12-13 00:00

日記
はてなブックマーク件数取得APIのPHPサンプル (15:18)Edit

<?php
/**
* $Id: HatenaExistsApi.php 107 2005-12-13 06:16:23Z ishinao $
*/
require_once 'PEAR.php';
require_once 'XML/RPC.php'; // PEAR XML_RPC
/**
*
*/
class HatenaExistsApi
{
var $_hatenaExistsApiUrl = 'http://b.hatena.ne.jp/xmlrpc';
var $_hatenaExistsApiMethodName = 'bookmark.getCount';
function call($urls)
{
$parameter = array();
foreach ((array)$urls as $url) {
$parameter[] =& new XML_RPC_Value($url, 'string');
}
$message =& new XML_RPC_Message($this->_hatenaExistsApiMethodName, $parameter);
$urlInfo = parse_url($this->_hatenaExistsApiUrl);
$client =& new XML_RPC_Client(
$urlInfo['path'],
$urlInfo['host'],
isset($urlInfo['port']) ? $urlInfo['port'] : '80'
);
$response = $client->send($message);
if (!$response) {
return new PEAR_Error($client->errstr);
}
if ($response->faultCode()) {
return new PEAR_Error(
'Fault Code: ' . $response->faultCode() .
'Fault Reason: ' . $response->faultString()
);
}
return XML_RPC_Decode($response->value());
}
}
?>
<?php
/**
* $Id: HatenaExistsApiTest.php 107 2005-12-13 06:16:23Z ishinao $
*/
require_once 'HatenaExistsApi.php';
$existsApi =& new HatenaExistsApi();
$testUrls = array(
'http://d.hatena.ne.jp/',
'http://b.hatena.ne.jp/',
'http://www.hatena.ne.jp/',
);
$existsUrlInfo = $existsApi->call($testUrls);
if (PEAR::isError($existsUrlInfo)) {
die($existsUrlInfo->getMessage());
}
foreach ($existsUrlInfo as $url => $count) {
echo "$url => $count\n";
}
?>
#> php HatenaExistsApiTest.php
http://www.hatena.ne.jp/ => 157
http://d.hatena.ne.jp/ => 35
http://b.hatena.ne.jp/ => 196

そのうちこれを使って、はてブ登録件数をMM/Memoにも表示しよう。→表示した。

Published At2005-12-13 00:00Updated At2005-12-13 00:00

日記
はてなブックマークの登録件数を表示 (16:13)Edit

はてなブックマーク件数取得APIを使って、MM/Memoにはてなブックマークの登録件数も表示するようにしました。MM/Memoの登録件数は(テキストでは)表示してないのにね。

既存の実装の関係上、複数URLの情報をまとめて取得できるように書けなかったんで、1件ごと呼び出しているんですが、取得した情報は1時間キャッシュするようにしているんで、トータルではそんなに大きな負荷にはならないんじゃないかと思いつつも、それでも負荷が大きいようでしたら、言っていただければ何とかします。>はてなの方々

B!はブックマーク追加アイコンですよー

修正しましたよー。

ってまだB!のままなんですが…

B!の部分は登録リンク、〜usersが閲覧リンク(ってのがはてブの作法?)にしてますよ。はてブで使われている白紙アイコンは、うちに持ってくると意味的に微妙な気がしたんで使ってません。あそこのアイコンは「ここの情報ははてなから持ってきているんだよ」ということを明示するのが主な目的なんで。

表示する予定は……?

MM/Memoの場合は、

  • トータルユーザー数がさほど多くないので、数値で登録数を出してもあまり面白みがない(ので、現状の虫眼鏡アイコン4パターン+そのtitle属性程度の目立たない表示で十分だと思っている)
  • MM/Memoの場合は、サーバー負荷によって集計系処理のキャッシュ時間を変更しているんで、場合によってはn users系の情報がものすごく古くなることがある。数値で正確に表示すると、キャッシュとリアルタイムデータの誤差が気になる

なんて理由から、現状の表示方法にしています。今のところ変更する予定はありません。

Published At2005-12-13 00:00Updated At2005-12-13 00:00

日記
今日のマリオカート (21:05)Edit

昨日の夕方買った。帰りの電車の中でスーファミ版以来の操作を思い出しそうとしてみたものの、自分1人でやっているとどういう方向に求道するべきなのかがよくわからない。ひたすら最初のコースのタイムアタックだけやり続けて、ようやくスタッフゴーストと対等に走れるようになったけど、ここから先はどのくらいまであるんだろう? タイムアタックの隙間に、遊びで50ccのグランプリをやってみたところ、これはずいぶん難易度低めにしてあるみたいだ。ひどい走りでも一回で全勝できた。えらい人の走りを見てみようとWiFi対戦しようかと思ったら、1分くらい待っても対戦相手が見つからなかったんでやめた。俺はこの手のゲームは猿のようにタイムアタックだけやり続けることが多いんだけど、WiFi対戦だったら対戦をやる気にもなるのかなー。でも1分以上は待ちたくないなー。

Published At2005-12-13 00:00Updated At2005-12-13 00:00

日記
amazon.rbを使うためにtDiary 2.1.3にアップデートしたEdit

amazon.rbを使えるようにしようと、tDiary 2.1.3にアップデート。うちの場合は微妙にいじっているので面倒くさい。

  • rss-recent.rbの改造版とmm_footer.rbは古いものを使用
  • index.rdfも古いものをコピーして使用
  • tb.rbはmisc/plugin/trackback/tb.rbにある
  • amazon.rbにタイトルだけ表示用のisbn_textというメソッドを追加していたんだけど、面倒くさくなったんで、isbn_textはisbnのエイリアスにしてしまった。isbnってcommentはデフォルトnullになったのね。
  • スパムフィルター系はひとまず何も入れていない。ダメそうだったら各種追加していく。

Published At2005-12-13 00:00Updated At2005-12-13 00:00

日記
pingサーバーの不具合を修正しましたEdit

ここ一ヶ月ほど1470.netのpingサーバー(http://1470.net/api/ping)が正常に動作していませんでした。詳しくは、バグトラックの方に書きましたが、PEAR XML_RPCライブラリをアップデートした際に、getParamメソッドの挙動が変わっていたため、省略可能なパラメータを省略したメッセージで受信エラーが発生していたようです。

Published At2005-12-14 00:00Updated At2005-12-14 00:00

日記
XML_RPC_Message::getParamの仕様変更Edit

というわけで、XML/RPC.phpのソースを見てみたところ、

   function getParam($i)
{
global $XML_RPC_err, $XML_RPC_str;
if (isset($this->params[$i])) {
return $this->params[$i];
} else {
$this->raiseError('The submitted request did not contain this parameter',
XML_RPC_ERROR_INCORRECT_PARAMS);
return new XML_RPC_Response(0, $XML_RPC_err['incorrect_params'],
$XML_RPC_str['incorrect_params']);
}
}

という処理になっていたようです。この処理は「@since Returns XML_RPC_Response object on error since Release 1.3.0」なんだそうな。マニュアルが仕様変更に追随していなかったのね。

Published At2005-12-14 00:00Updated At2005-12-14 00:00

日記
12:30から30分ほど落ちてましたEdit

DBがmany connection errorで落ちてました。おかしいなー。想定最大クライアント数(httpdのMaxClients+裏プロセスの数)×1.1くらいの数にしてあるんだけどなー。mod_php経由の接続ってもしかして1プロセスから複数のコネクションを張ったりするんだろうか? 特に指定しない限り同じ引数での接続は1コネクションになるんじゃなかったっけ。PEAR DBのレベルで何かやってたりするのか? あとで見てみよう。ひとまずMySQLのコネクション数を倍にしてみた。これならさすがにあふれないだろう。

Published At2005-12-15 00:00Updated At2005-12-15 00:00

日記
39.5度ですよEdit

朝起きたら上の子が「寒い、具合が悪い」と言っていたんで、念のため体温を測らせたら39.5度もあった。うぎゃー、5歳になってまだ39.5度も出しますか! ひとまず大人用の冷えピタを貼り付けて病院の開院時間にダッシュ。そういやインフルエンザの予防接種は1回目しかまだやってないんだよな。ようやく3週間経ったから2回目を受けようと思っていたのに、間に合わなかったのかー! と思ったらインフルエンザ検査は陰性だった。ただの風邪らしい。ただ最近流行っている風邪は喉+鼻水+高熱というパターンらしいんだけど、うちの子は喉は腫れていないんで病状があわないらしいんだよな。ひとまずその風邪対策の薬と熱冷ましを出してもらって帰宅。今日はすでに出社していたオクサンに代わってもらって出社したけど、今日一日で治るとは思えないし、明日は休まなきゃだめだろうなー。

Published At2005-12-15 00:00Updated At2005-12-15 00:00