風邪ひいた (13:51)
今年何回目だっけ? 花粉症とのちゃんぽんを含めてもずいぶん多い気がするな。
ということでまた風邪をひいた模様。寝冷えだな。最近夜(暑くて)寝苦しくて半袖短パンで寝ていたのだけど、昨日は微妙に肌寒かった。けど、布団をかけて寝れば大丈夫だろうと思っていたら、中途半端に布団をはいでしまったらしい。頭痛と鼻水。そしてとてもだるい。ああだるい。今日は早く帰ろう。
思いのほかマシンパワーは気にならない (13:51)
この週末をかけて、増設メモリを差すと動かない病(http://mylog.ishinao.net/id/1184)で修理に出すLaVie RXのデータを適当にバックアップし、SRX7を適当に作業用マシンとしてセットアップし、必要そうなデータを適当にコピーした。
なんかもうこれだけデータ量がでかくてファイル構成が複雑だと、まじめにバックアップすることは不可能だな。ひとまず致命的な何か(コピーし忘れ、エクスポートし忘れ)がないことを祈るだけだ。いくつかのオンライン販売レジストリ登録系ソフトが、買い直さないと動かないことはすでに確定しているけど。
これだけ苦労して修理に出した結果、「メモリスロットに問題はない(けど、実際に増設メモリを差しての動作検証はしていない)」とか言われたら、どういうクレーマーに変身すればいいんだろう。NECで動作保証をする増設メモリが(売られて)ないっつーのが大問題だよなー。ひとまず工場で動作したメモリがあったらその型番を教えてくれと書いておいたけど。
ところで久しぶりに使ったSRX7だけど、思いのほかマシンパワーが下がった点は気にならない。っつーか、しょせんWindowsマシンはCPUパワーと体感速度の快適さの間に、分厚い緩衝剤が挟まっているからな。あと、LaVie RXは定期的にマウスカーソルが変に固まったりすることが多かったし、そういう不快な挙動がCPUパワーの足を引っ張っていたんだろう。
ただ、さすがに1400×1050+1280×1024のデュアルディスプレイ環境から、1024×768シングルディスプレイ環境へと落とされたのはあまりにもきつい。デスクトップ領域を贅沢に使うのに慣れすぎてしまったので、何もかもが狭苦しい。あと、キーボードもきついなー。せっかくNECの左下端Fnキー配列に慣れていたのに、また左下端Ctrlキー配列に逆戻りか。ショートカット周りが誤爆しまくりだ。
2004F1サンマリノGP (13:51)
予選
PC修理だしのためのバックアップ作業をしながらみていたんで、何も書けなかったよ。ともかくバトン&BARホンダ初ポールポジションおめでとう。
決勝
すばらしいBARの2台のスタート。
モントーヤもうピットストップですか。よっぽど軽かったのかな。あら、その後もみんなどんどん入ってくるのね。今回は最初のピットまでがみんな早めなのか。
うーん、琢磨はピットストップいまいちだったか。バトンは悪くなかったけれども、ミハエルに作戦負けって感じだな。ミハエルこのままあとは逃げて終わりですか。もう一波乱ないかなー。
今川井ちゃん、「イルモアのトップがこうそうされた」とか言っただろう。「更迭」が読めなかったな、貴様。
あら、琢磨エンジンブローですか。なんかいろんな意味でバトンとの差が目立つなー。
うーん、結局ミハエルの楽勝レースですか。バトンも悪くなかったけど、ミハエルの方が役者が上だってことかなー。あー、それにしても久しぶりのSRX7のキーボードは打ちにくいなー。
Smarty modifier.mbkana.php (13:51)
Smartyのテンプレート上で全角半角変換を行う。pluginsディレクトリにつっこんでおく。Smartyテンプレート内で{$string|mbkana}なんて感じで使う。デフォルトオプションは「半角カナ→全角カナ」「全角英数→半角英数」「全角空白→半角空白」変換。
modifier.mbkana.php
function smarty_modifier_mbkana($string, $option = 'KVas') {
return mb_convert_kana($string, $option);
}
Smarty modifier.mbconvert.php (13:51)
Smartyのテンプレート上でマルチバイト文字コード変換を行う。あんまり使い道はなさそうな気もするけど、あってもいいだろう。pluginsディレクトリにつっこんでおく。Smartyテンプレート内で{$string|mbconvert:"urf-8":"euc-jp"}なんて感じで使う。
modifier.mbconvert.php
function smarty_modifier_mbconvert($string, $charset, $source_charset = 'auto') {
return mb_convert_encoding($string, $charset, $source_charset);
}
Smarty modifier.mbtruncate.php (13:51)
Smartyのtruncateをマルチバイト文字列に対応させたもの。pluginsディレクトリにつっこんでおく。Smartyテンプレート内で{$string|mbtruncate:30}なんて感じで使う。
modifier.mbtruncate.php
function smarty_modifier_mbtruncate($string, $length = 80, $etc = '...') {
if ($length == 0) {return '';}
if (strlen($string) > $length) {
$length -= strlen($etc);
return mb_strcut($string, 0, $length).$etc;
} else {
return $string;
}
}
ああ、日本語ではbreakwordなんか考えたらおかしくなるな。削っておこう。
肉 退職 菱木マッチョリーナ (13:51)
さっき飯を食いに行ったら、歩道に青いビニールカバーが掛けられた箱の載った台車が置いてあって、そのビニールカバーに「肉」「退職」「菱木マッチョリーナ」と書かれていたんだけど、あれはいったい何なんだろう? 「菱木マッチョリーナ」ってどこか「グレコローマンかたぎ」に通ずるものがあるな。あるいは坂本ジュリエッタの友達?
PHPでコードビハインド(@ASP.NET)風に記述してみるテスト (13:51)
ひとまずこのレベルならばふつうに動く。ごついクラスを作ってかぶせれば、もっとASP.NETっぽいこともいろいろできるだろう(簡略化のために以下のサンプルではshort_open_tagをonにしているけれども、個人的にはshort_open_tagをoffにしつつ、phpx側の処理にもう一段ラッピングするアプローチの方がいいと思う。イベントハンドラもどきみたいなこともできるだろうし)。
ただ問題は、コードビハインド風の記述方法がさしてすばらしいとは思えないところにある。コンパイル言語ならば、ロジックをコードビハインドに分離しておいてそっちはコンパイルしつつ、テンプレート的な部分は自由に変更できる、というアプローチもそれなりに有効だろうが。
でもまあ、一般的なテンプレートエンジンを使った記述方法よりも、テンプレートとファイル(URL)とロジックの関係が明確になるという利点は結構捨てがたいかも。一般的なテンプレートエンジンを使うと、パーツのテンプレートファイルと本体のテンプレートファイルの管理がいまいちきれいにできないんだよな。でもその利点のためだけにこれだけのオーバーヘッドを許容できるかなー。
.htaccess
AddType application/x-httpd-php .phpx php_value short_open_tag on php_value auto_prepend_file code_behind_engine.php
code_behind_engine.php
<?php
_CBE_EXECUTE();
function _CBE_EXECUTE() {
$__currentFile = $_SERVER['DOCUMENT_ROOT'].$_SERVER['SCRIPT_NAME'];
$__scriptFile = $__currentFile.'.php';
if (file_exists($__scriptFile)) {
include $__scriptFile;
}
include $__currentFile;
exit;
}
function h($str) {return htmlspecialchars($str);}
?>
test.phpx
<html> <head> <title><?=h($title) ?></title> </head> <body> <h1><?=h($title) ?></h1> <ul> <?php foreach ($hash as $key => $value): ?> <li><?=h($key) ?> is <?=h($value) ?></li> <?php endforeach; ?> </ul> </body> </html>
test.phpx.php
<?php $title = 'テスト'; $hash = array( '123' => 'abc', 'あいう' => 'XYZ', 'http://ishinao.net/' => 'ishinao@ishinao.net', '<b>aaa</b>' => 'bold' ); ?>
実行例
宣伝REFERER付きブラウザ? (13:51)
もしかして、宣伝用のREFERERをブラウザというかProxomitronあたりでセットして、あちこち回っている人とかいるんですか? なんかスクリプトを使った絨毯爆撃系ではない雰囲気を感じるREFERERの足跡を最近見かけるのですが。いわゆる絨毯爆撃系REFERER SPAMみたいには迷惑ではないし、場合によってはそういう宣伝方法もありかなと思ったりしつつも、本来期待される値とは異なる値を偽造して通知してくるという手法はやっぱりだめな気がする。
AirH” 128kオプションに申し込んだ (13:51)
ゴールデンウィーク対策として、AirH"の128kオプションに申し込んでおいた。一昨日の昼にPicnic(https://picnic.ddipocket.co.jp/telmecall/servlet/main)とかいうDDI Pocketユーザー向けWebサイトで申し込み、本日開通。
32k契約中(128kオプション無効)のときには、128k接続用電話番号にはダイアルアップできないのね。128kがだめだったら、自動的に32kで接続してくれたりするかと思っていのに。そうなると、切り替えの前後でダイアルアップ先を意識して切り替える必要があるのか。面倒だな。
ただ、まだほとんど使っていないんだけど、128k接続って32kと比べるとずいぶん不安定っぽいな。粘り腰に欠けるというか、単純に言うと、回線状態が悪くなったらすぐに切断されてしまうっぽい。その印象が本当ならば、普段は32k中心で使って、電波状態がいいときだけ128kを使う、なんて使い分けが必要なのかな?