トップ «前月 最新 翌月» 追記

2002|01|02|03|04|05|06|07|08|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|02|03|04|07|

2005-06-01 [長年日記]

_ 広告ツール機能追加 (10:22)

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

  • 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を指定してやれば、サイトで紹介した商品からランダムに選択させることもできます。

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

_ またDBがこけてました (10:55)

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

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

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

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

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

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

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


2005-06-02 [長年日記]

_ Re: 純粋後ろめたさ批判 (11:04)

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

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

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

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

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

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

_ changes.xmlのパース (18:55)

はてなダイアリーの更新時刻情報として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";
}

?>

とか。

Tags: PHP XML

2005-06-03 [長年日記]

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

どこかで誰かが似たようなことを書いてもいるだろうけど、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がオブジェクトだったらオブジェクトダンプしたりとか、出力ごとの時間を出力したりとか、そういう拡張をするとさらに便利。

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

作ってみました 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なんだけどなー。よくわからんけど、最終的には上記のような(ヘッダもちゃんと送る)コードで動いている模様。

その他参考資料

Tags: PHP GPS 携帯

2005-06-04 [長年日記]


2005-06-05 [長年日記]


2005-06-06 [長年日記]


2005-06-07 [長年日記]

_ mod_limitipconn2をインストール (19:53)

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

MaxConnPerIP 3
NoIPLimit image/*

だけ設定しておいた。

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

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

bookmarklet: どう?

Tags: blogmap MM

_ PHPの配列で、 (21:34)

ある配列変数が、

$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>

に展開される感じね。

Tags: PHP

2005-06-08 [長年日記]

_ 似たようなサービスをやっているところに載せて欲しい機能 (16:59)

最近似たようなサービスをやっているところが増えているみたいだし、みんなで同じことをやってもしょうがないんで、独自にやる意味がなさそうな状況になったら、blogmapはやめて別のことをはじめようと思っている。んで、その他のサービスで、blogmapで持っているこの機能も持たせて欲しいなー、という要望をなんとなく書いてみる。

類似ページを自動判別し、グルーピングする機能

blogmapではURLからタイトル等の情報を取得するときに、HTMLドキュメントに含まれるテキスト部分を形態素解析し、URLごとの特徴語群を取得している。で、その特徴語を使って、似たような話題(である可能性が高い)URLを自動判別している。

たとえば「『MacへのIntel製CPU搭載をジョブズCEOが宣言』のネットでの評判 - blogmap」の一番下にある「関連する話題」とかみたいな感じ。

あんまり精度が良くない(十分な語彙が取得できればそれなりの結果が出るけど、ほとんど語彙がない(Flash中心とかの)ページはうまく判別できない)んで、現状では参考情報的にこういう形で掲載しているんだけど、もうちょっと精度を高めることができれば、「同じ話題を扱っているURL群」を自動的にグルーピングして扱うことができるようになる。要は、Google Newsがやっているような感じね。

trackbackセンターとしての機能

自動収集と手動(trackback)収集を透過的に扱うことで、「ある話題に関する情報」に関するポータルを自動的に生成することができる。別にtrackbackじゃなくてもいいんだけど(blogmapでは昔BBSもつけていたし)、現状で一番手軽なインターフェースはtrackbackでしょう。できれば、前に書いた「同じ話題をグルーピングする」機能を持たせた上で、「話題」単位でtrackbackセンターの機能を持っていると一番いいな。

フリーワードによる検索機能

RSSサーチエンジン的な機能なんだけど、検索結果の順位を「話題順」でソートできるというのがポイントになるんで、フリーワードによる検索機能も用意して欲しい。というか、それがないと(現在)ランキング入りしていない話題にたどり着くことができないし。

URL、ASIN以外のキーを使えるように

一番手軽なURL、ASINをキーにデータを収集しているところがほとんどだけど、個人的にはさまざまな店舗に関する情報や、Amazonでは取り扱っていない商品に関する情報に関しても、整理された形で見えるようにして欲しい。

位置情報に関しては、MM/Memoでちょっとテストしてみたけれども、やっぱりむき出しの緯度・経度情報をそのまま使ったんじゃいまいちだ。店舗やイベント会場なんかに対して手軽に使えるIDを振って、それをベースに情報を収集できるようになると便利。

商品情報データベースは、はてなみたいにむき出しのJANコードとかじゃ使いづらいし、やっぱりもうちょっとユーザーフレンドリーな感じのIDがあるといいな。企業コード-商品ID(-オプションコード)とかの形式だったりすると使い勝手がいいだろうか。現在のデファクトスタンダードであるASINとのリンク情報も管理できるとさらに便利。

そういやMM/Memoで実験しているテレビ番組(IEPG)情報もうまく使えるようになると便利だろうな。地方による差異をどう吸収するか、とか、IEPGに含まれている情報はさほど信頼性が高くない、とかの問題があったりするんだけど、この辺をうまく扱える仕組みができたら、現状のテキトーな視聴率データなんか目じゃない、きちんとしたテレビ番組の試聴情報が収集できるようになって、その辺のぬるま湯が一気に沸騰するでしょうね。

なんて独自のID系を広めるためには、そのIDをいろんなblog等で使ってもらえるような利便性(Amazonの「商品情報がわかる」「商品が買える」「Webサービスで自動取得できる」という利便性のように)を提供するところからはじめないといけないけど、その辺は企業パワーで何とかしてけろ。

Tags: blogmap

_ HTMLArea 3.0-rc1のFirefox 1.0.4での挙動 (20:18)

テキストエリアが空の状態でテキストモードに切り替えると、テキスト化された内容が「<br />」になっていて、実際にその状態でsubmitすると「<br />」がPOSTされる。要は、不要な改行が自動挿入され、それがHTMLタグとして解釈されてしまっている。確認画面とかを作って行ったり来たりしていると、どんどん頭に空行(=<br />タグ)が付与されていってしまい、さらにひどいことになる。IEで同じことをやっても、空のテキストエリアは空のまま保持される。

HTMLArea.getHTMLの処理が怪しいんだけど、どの辺が原因なのかよくわからない。ひとまず最低の対症療法として、HTMLArea.getHTMLのreturn html;する前に、

	html = html.replace(/^(<br \/>\n?)+/, '');

とかしてみたけど、副作用も大きいし、よろしくないよなー。

本日のツッコミ(全2件) [ツッコミを入れる]

_ くりす [blogmapのURLランキングがエライことになってます…… 話題の.jpとかTechnoratiの進出によって業者..]

_ ishinao [報告どうもありがとうございます。 ようやくキャッシュから消えてくれました。]


2005-06-09 [長年日記]

_ 携帯電話のアドレス帳が共有できるサービス (14:31)

Life is beautiful: 『恋はブックマーク』−ブックマーク・コメントはシャイな日本人向け?」あたりが元ネタ。というか、ここをブックマークしてコメントを書こうと思ったけど、長くなりすぎたんでこっちにまとめる。

ブックマークするためにはURLに相当するユニークなIDが必要。(ネット以外の)社会生活において、ある人を特定するためのURLに相当するものとしては、現代の日本ならば携帯電話の番号なんかが有望。要は「携帯のアドレス帳に登録」=「ソーシャルブックマークサービスにブックマークする」というアナロジー。アドレス帳に写真とかコメントとかを登録できる携帯もあるし。

ただ、ふつうの携帯電話のアドレス帳は共有はできないから、ソーシャルじゃないわけだけど、もちろんソーシャルにしたっていいわけだ。ってことで、そのうち友達同士で携帯電話のアドレス帳を共有できるサービスをはじめるところが出てくるとみた。キャリアが動けば端末自体にそういう機能を載せられるし、キャリアが動かなければWebベースになるだろうな。

要は、携帯電話向けのSNSなんだけど、「携帯電話のアドレス帳を共有する」「ソーシャルブックマーク的に人をブックマークしていく」というシステムを取ることによって、出会い系臭さを減らし、利便性方面から攻めていくわけだね。どこかのキャリアに持ち込めば結構通りそうな企画な気がしてきたな。ちなみに、セキュリティ対策に自信がないところは手を出さない方がよろしいですよ。

Tags: SBS 携帯

2005-06-10 [長年日記]


2005-06-11 [長年日記]


2005-06-12 [長年日記]


2005-06-13 [長年日記]


2005-06-14 [長年日記]

_ qmail+spamdで (20:26)

ちょっと多めのメールを受信したときに、spamdのプロセスがある程度多くなると、すぐにスラッシングが起きてしまうような場合、tcpwrapper -cでsmtpの接続数を制限するのがいいのかなー。というかひとまずそうしてみた。

というわけで、大量のspam対策でサーバー負荷がかかって、今日は断続的にあちこち死んでいました。なんか最近アフィリエイト系blog spam(同一の宣伝エントリーを大量のblogに投稿しまくる)が激しいな。

_ 今からゲームボーイアドバンス用ゲームを買う場合って (21:09)

甲虫王者ムシキング ~グレイテストチャンピオンへの道~ 子供の誕生日に『甲虫王者ムシキング ~グレイテストチャンピオンへの道~』を買おうと思ったんだけど、うちにはゲームボーイ系はない。んで、中古のゲームボーイアドバンスでも買おうと思っていたら、オクサンに「誕生日に中古はやめろ」とつっこまれた。でも新品のゲームボーイアドバンスってSPよりも高いのね。なんとなく子供が壊しにくそうだから無印アドバンスにしようと思っていたんだけど、高いんだったらSPにした方がましかなー。

ニンテンドーDS グラファイトブラック と思ったら、ニンテンドーDSってゲームボーイアドバンスのソフトが動くのか。通信周りに互換性がないらしいけど、まあどうせ通信機能なんて使わないだろう。ついでにやってみたかった『東北大学未来科学技術共同研究センター 川島隆太教授監修 脳を鍛える大人のDSトレーニング東北大学未来科学技術共同研究センター 川島隆太教授監修 脳を鍛える大人のDSトレーニング も買ってみるか。ningendogsもやってみたかったんだけど、どの犬種を選ぶか決めきれなかったんでやめ。

と、いつのまにかニンテンドーDSとソフトを買ってしまっていたわけだけど、これは見事に任天堂様の見えない手に操られているってことでよろしいでしょうか。


2005-06-15 [長年日記]

_ またDBエラーが出ていました (11:58)

今まで何度か起こったキャッシュ用テーブルのインデックスが壊れるという症状。このテーブル以外はMySQLのテーブルが壊れたことって(更新プロセスを強制終了したとき以外)ないんだけどなー。

で、ひとまずインデックスをmyisamchk -rで修復し、さらにキャッシュ用テーブルを別DBに分けていたのをやめ、メインのDBに統合してみました。あと結構複雑なインデックスを張っていたのをやめて、最低限のインデックスのみに変更。これで(実体としての)ファイルの保存場所も変わるし、他のアプリケーションで共用している部分もなくなるし、インデックス更新負荷も低減されるんで、状況が改善されることを期待。

これでもダメなら、テーブル構造とそれにアクセスするライブラリ部分から見直そう。そういや昨日はいつもの倍近いアクセス数があったみたいだけど、何か絨毯爆撃でも食らっていたのかな? まだ細かいログは見てない。というか見ている暇がねー。

_ 絨毯爆撃 (12:08)

どうやら昨日は、「Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)」を名乗るクローラーっぽいものに絨毯爆撃を食らっていたんだな。接続元IPアドレスは複数あるみたいだけど、UAは統一されている。これってなんだろうなー。

_ default_modifiersが実行される順序 (15:09)

default_modifiersで指定した修正子が実行される順序は、(直接テンプレートで指定した修正子よりも)後だといいなーと思っていたんだけど、

if (!empty($this->default_modifiers) && !preg_match('~(^|\|)smarty:nodefaults($|\|)~',$modifiers)) {
  $_default_mod_string = implode('|',(array)$this->default_modifiers);
  $modifiers = empty($modifiers) ? $_default_mod_string : $_default_mod_string . '|' . $modifiers;
}

あたり を見る限りは最初に挿入されるみたいだなー。

ってことは、default_modifiersにescapeを設定して、自動でエスケープされるようにしておきつつも、ちょっとだけ加工(たとえば文字数切りつめとか)したい場合なんかには、「{$var|smarty:nodefaults|truncate|escape}」みたいなうざいことをしないといけないのか。default_modifiersは一番最後にかかるようにしておいた方が便利なシチュエーションが多い気がするんだけどなー。

Tags: Smarty PHP

_ うげ (15:45)

default_modifiersって、出力する変数だけでなく、各種関数のパラメータとして使用する変数にも自動的にかかるわけ。それはちょっとつかえねーよ。

Tags: Smarty PHP
本日のツッコミ(全2件) [ツッコミを入れる]

_ ceekz [メールアドレス収集ボットだったと思います。Cookie を食わないという特徴が。]

_ ishinao [メール収集ボットでしたか。ググって見たら、その手のたちの悪いボットがよくこのUAを名乗っているみたいですね。UAで弾..]


2005-06-16 [長年日記]

_ 絨毯爆撃再来 (13:25)

昨日の「Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)」なUAの絨毯爆撃機が今日も来ているんで、ひとまずIPアドレスでdeny。本日は222.149.250.10から来られているようです。リアルタイムのURLをたどっているわけじゃなさそうだな。かつてクロールしたときに集めたURLデータベースを使ってアクセスしているのか?

_ 定数で指定したクラス名でnewできない (21:50)

define('DEFINED_CLASS_NAME', 'FooClass');
$foo = new DEFINED_CLASS_NAME;

とかしても、FooClassが生成されないんでおかしいなーと思ったら、上記の文脈ではDEFINED_CLASS_NAMEが定数なのかクラス名なのかが判断つかないんだね。というか、この文脈ではクラス名であるとして評価されるんだね。

で、PHPでは未定義の定数は、その定数名の文字列として評価されるから、DEFINED_CLASS_NAMEというクラスを探しにいって、見つからないから、未定義のクラスを生成しようとしたエラーが出る、と。

回避策としては、

define('DEFINED_CLASS_NAME', 'FooClass');
$className = DEFINED_CLASS_NAME;
$foo = new $className;

とかするのが無難かな。

Tags: PHP
本日のツッコミ(全1件) [ツッコミを入れる]

_ sionne [うーん……ここに書いても(書いた方が)いいのかなぁ? 他に報告するのに適当なところがわかりませんので……。 tex..]


2005-06-17 [長年日記]


2005-06-18 [長年日記]


2005-06-19 [長年日記]


2005-06-20 [長年日記]

_ あほらしいレースでした (05:39)

ミシュラン勢の判断は適切だったとは思うけど。

Tags: F1
本日のツッコミ(全1件) [ツッコミを入れる]

_ まちゅ [せめてバリチェロがもう少し頑張ってくれれば…と思いましたが、チーム戦略上ムリをするわけにもいきませんからね。 とにか..]


2005-06-21 [長年日記]


2005-06-22 [長年日記]

_ タイトル変更 (14:37)

どうしても使ってみたかったんで

Tags: tDiary

2005-06-23 [長年日記]


2005-06-24 [長年日記]

_ DB_sqlrelayのprepareで「?」が使えない (14:13)

SQL Relayを試してみようと、インストールして、PEAR DBの接続先をmysqlからsqlrelayに書き換えてみたところ、単純なqueryは動くんだけど、prepared sqlでエラーが出る。ググってみたら、「bind pear php module」なんてのを見つけた。なるほど、現在のDB_sqlrelayはplaceholderとして「?」は使えない(:1、:2という形式のみサポート)のね。そのうち「?」にも対応するみたいだけど、ひとまずどうしようかなー。

_ 受信確認付きメールをMLに流すと (18:40)

受信確認自動応答に設定した人がたくさん釣れるんだなー。とセキュリティホールmemo MLを見ながら思った。これってメールアドレス収集に使えるんじゃないか。MLレベルでDisposition-Notification-Toフィールドは除去するように設定しておいた方がいいのか。

Tags: ML メール

2005-06-25 [長年日記]


2005-06-26 [長年日記]


2005-06-27 [長年日記]

_ MyApp? (11:58)

さっき1470.netのネットワーク帯域がバカみたいな数値になっているのを発見して調べてみたら、今朝の4時からMyAppとかいうUAで、blogmapのとある1ページを分間20回くらいずつGETし続けている人がいたよ。それだけで3.2Gバイトの転送量かよ。従量制の契約だったら怖いことになってたかも。

@homeのネットワークで何かのプログラムを動かしているあなた、多分それ、巡回ロジックか何かが腐ってますよ!

Tags: blogmap

_ XML-RPCサーバーが腐っていた (16:49)

6/24にPEAR XML-RPCライブラリをアップデート(というかpear upgrade-all)したところ、それ以来1470.netのpingサーバーが腐っていた模様です。XML-RPC 1.3.0からXML-RPC 1.2.2に戻したところ、きちんと受信できるようになりました。PEARの中身まではまだ追いかけてないけど、

require_once 'XML/RPC/Server.php';

function weblogUpdates($msg) {
       $value_maps = array(
               0 => 'title',
               1 => 'url',
               2 => 'change_url',
               3 => 'category'
       );
       $params = array();
       foreach ($value_maps as $index => $key) {
               $param = $msg->getParam($index);
               if (!$param) {break;}
               $params[$key] = $param->getval();
       }

       if (updateWebsiteLastModified($params)/* 情報更新 */) {
               $error = FALSE;
               $error_msg = 'success to recieve your ping!';
       } else {
               $error = TRUE;
               $error_msg = 'fail to recieve your ping!';
       }

       $value = new XML_RPC_Value(
               array(
                       'flerror' => new XML_RPC_Value($error, 'boolean'),
                       'message' => new XML_RPC_Value($error_msg)
               ),
               'struct'
       );

       return new XML_RPC_Response($value);
}

$map = array('weblogUpdates.ping' => array('function' => 'weblogUpdates'));
$server =& new XML_RPC_Server($map);

みたいな感じの、ほとんどPEAR XML-RPCに依存した内容だから、こっちのコードの問題じゃないと思うんだけど。XML-RPC関連はテストがめんどいんだよなー。


2005-06-28 [長年日記]


2005-06-29 [長年日記]


2005-06-30 [長年日記]