Archive for July, 2008

運転免許の更新をしたらICチップが付いていた

Jul 23 2008 Published by funaki under 感動する

すっかりペーパードライバーだが、身分証明書として使っている運転免許証を更新してきた。
ちょっと驚いたのがICチップ付になっていたこと。電球に透かすと小さな四角い影が見える。
Wikipediaによると去年辺りかららしい。
運転免許証 – Wikipedia

この記事が詳しい。
本籍地の記載が消えたIC運転免許証を取得して思ったこと – 日経エレクトロニクス – Tech-On!

個人情報保護の観点で本籍が無記載になったというわけだが、最近不動産屋でも免許証のコピーを取るときに本籍部分をマーカーで消したりしたなぁ、と思い出した。

リーダーはNECが作っているのか。利便性が上がったとは思えないが、結構な額のお金が動いているのだと思う。
NECネッツエスアイ | IC免許証ICチップ記載内容確認パッケージ

講習の際に見る20分の番組はこんな会社が作っていた。
◆交通安全創出企業◆ -株式会社電脳-

免許更新センター内の、廊下に赤いテープで順路を示すナビゲーションは秀逸だと思った。ダサさ爆発だが誰も間違えない。

No responses yet

今まで使ったことのなかったPHPのassert関数

Jul 15 2008 Published by funaki under いじる

何の気なしに

function assert(

とvimで書いたらassertの文字の色が変わった(PHPのネイティブ関数は色分けされる)のであれ?と思い、調べてみたらあった。
simpletestについてくるassertTrue()は使ったことがあったが、純正assertは初めて。まだまだ使ったことのない関数があるものだ。。
PHP: assert – Manual

C言語のassertとは違って引数に文字列を渡すことで便利な動作を期待できる。

assert("strlen($str) == 10");

デフォルトだと、引数の文字列をevalした結果がfalseだとWarningが出る。

assert(strlen($str) == 10);

これでも普通に動く。

assert_options(ASSERT_ACTIVE, 0);

とするとassertは何もしなくなる。このときassertの引数を文字列で渡しているおかげで、オーバーヘッドが少ない、とマニュアルに書いてある。どういう意味かな、と試してみた。

assert(sleep(10));

だとASSERT_ACTIVEに関わらずsleepは実行されるが(よく考えてみればPHPがシーケンシャルに実行される以上当然か)、

assert("sleep(10)");

ならsleepは実行されずにassertがそのまま終了する。

ちょっとしたテストスクリプトで使えるかもしれない。

No responses yet

あなたのサイトはYahoo! JAPANで何位?のリファクタリング

Jul 11 2008 Published by funaki under いじる

ついで、というわけでコメントをいただいていたこちらも修正。

あなたのサイトはYahoo! JAPANで何位?
zuzara : Yahoo! JAPANのAPIリリース:「あなたのサイトはYahoo!で何位?」なるアプリをつくった

IEで動かないバグがなぜか発生していたのですが、どうせだったのでjQueryを使ってコードは全面的に修正。JavaScriptも2年半前のコードはひどく古めかしい。

ちょっとはまったのが、
jQuery Plugin: jQuery Timers
これを使おうとしたらIEで動かなかったこと。

あとeachから抜けるのにreturn false; だとIEで動かない模様。throw true; を使った。

Yseo.search()の再帰を
jQueryの再帰呼び出しはとってもトリッキー at HouseTect
これで実装したかったが、Ajaxのsuccess(コールバック)から呼び出そうにも無名ではsuccess自身になってしまうので断念。

Yahoo!の検索結果へのリンクをつけたり若干変更した。
Firefox3, IE6, IE7, Opera9.5で動作確認済み。

One response so far

My はてなブックマークランキングのチューニング

Jul 11 2008 Published by funaki under いじる

ロリポップさんから

お客様ご利用のファイルによりデータベースサーバー【mysql*.lolipop.jp】に負荷がかかっております。

とお叱りのメールが。
前にもいただいたことがある、3日以内に対応しないとアカウント停止しちゃうよ、というちょっと恐い通告である。
丁寧にボトルネックになっているSQL文が付記されているので助かる。

で、2年前につくったこのサービスが重くなっているらしい。
My はてなブックマークランキング
zuzara : My はてなブックマークランキング
久々にコードを見ると、ドッグイヤー換算で14年も経っているので書き方が古い。

問題の箇所はインデックスの張り方が怪しげだったのと、SQLがsubqueryを使って複雑だったのでシンプルに直したら速くなったようだ。

全然メンテナンスしていなかったサービスだが、ログを見ると案外使ってくださっている方がいてうれしい限り。ありがとうございます。

No responses yet

Windowsキー+Lでスクリーンロック

Jul 10 2008 Published by funaki under 感動する

し、知らなかった。。WindowsXPで動きました。ログオフするわけではなく、単にパスワードを聞く画面が出てくれるのでちょっと席を外すときなどに便利。

以下で紹介されているやり方も便利そうですが単にスクリーンセーバーが起動するだけでパスワードは聞かれません。スクリーンセーバーに「パスワードによる保護」のチェックを入れていても関係ないようです。
スクリーンセーバーをワンタッチで起動する – 日経トレンディネット

にしてもショートカットファイルにはプロパティからCtrl+Shift+sとかショートカットキーを割り当てられることも知らなかった。。

関連:
zuzara : かな漢字変換の確定をキャンセルできるとは!

One response so far

Livelyで嵌る

Jul 10 2008 Published by funaki under 感動する


Livelyを試してみたのだが、早速嵌った。。
操作性は全然よくない。
チャットの吹き出しは遠くからでも伸びてくる。

5年とか6年前にやった3Dのチャットルーム(名前失念)の方が完成度高かった気がする。
とはいえ、アバターのアニメーションはかわいい。突然他のアバターにビンタされたりハグされたりしてびっくりした。相手のアバターをクリックしてAnimationsからDanceとかいろいろ選べる。

あとwhere are you from?なんて質問に銘々がim from …と都市名を答えるとなんだかちょっとインターネットだなぁ、という気分に浸れる。

Livelyはブラウザの中で完結しているわけだが、今のところウェブページとは独立している感じ。今後、HTMLで組み立てられたサイトとシームレスにつながってくることがありうるだろうか。改めて3D空間上をマウスで操作してみると、メッセンジャーはアバターでバーチャル空間上を漂っていてもいいかなぁ、と思った。

ひとつ感心したのは、Livelyにログインすると音楽の鳴っている場所が結構多いが、Firefoxで別のタブに移動すると音が消えてくれる。


iframeで埋め込んでみた。

No responses yet

JavaScriptでgフラグを使った正規表現で部分文字列を抜き出す

Jul 08 2008 Published by funaki under いじる

JavaScriptの正規表現でつまづいたときのメモ。

gフラグに関しては
Core JavaScript 1.5 Reference:Global Objects:RegExp – MDC
に書いてある。

var match = str.match(new RegExp(reg, "gi"));

でてっきりmatchには多重配列が代入されるのかと思っていたがどうやら違うらしい。
ちなみにregを変数にしているのは正規表現がダイナミックに変化するケースを扱っていたため。RegExp.$nもダイナミックにnを変えて呼び出せないので使わない。

検証コード。Firefox2、IE6、Opera9.5で試して同じ結果。

<script type="text/javascript">
var reg = "t(\\w+)";
var str = 'No, try not. Do, or do not. There is no try.';

var match = str.match(new RegExp(reg, "gi"));
print(match);

document.write("<hr />");
var match = str.match(new RegExp(reg, "i"));
print(match);

document.write("<hr />");
var regObj = new RegExp(reg, "gi");
do {
    var match = regObj.exec(str);
    print(match);
} while (regObj.lastIndex != 0);

function print(obj) {
    if (!obj) {
        return;
    }
    for (var i = 0; i < obj.length; i++) {
        document.write(i + ": " + obj[i] + "<br />");
    }
}
</script>

出力例:
0: try
1: There
2: try
—-
0: try
1: ry
—-
0: try
1: ry
0: There
1: here
0: try
1: ry

matchには正規表現中の()で括った部分文字列の配列が入っている、つもりなのだがString.matchを使ってgフラグを立てると部分文字列が取得できなくなってしまう。gフラグがなければ意図通り。

PHPのpreg_match_allで言うところの

preg_match_all('@t(\w+)@', $str, $match);

で$match[0]しかない、$match[1]がない、状態になる。

長々と苦悶した末に
JavaScript 第5版 – 11章 正規表現パターンマッチング – (DxD)∞
このページにヒントがあって3番目のexecを使ったコードにしたら意図した通りの動きになった。

仕様?

No responses yet

fstabをいじっていたら起動しなくなったときの対処

Jul 02 2008 Published by funaki under いじる

CentOS5にて。

memo: fstabの修正
最終的にはこのサイトの手順で直った。

# mount -o remount,rw /dev/VolGroup00/LogVol00 /
# vi /etc/fstab
# exit

ReadOnly FileSystemになっていてシングルモードにして起動してもfstabを書き換えられず。
UbuntuのCDで起動してもmountできず(/dev/にVolGroup00がない)、CentOSのLiveCDはvmlinuzのloadingに失敗して起動せず(i386用のCDをamdで起動させようとしたせいだったかも)インストールCDでbootして linux rescue でもmountできず、ほとほと困っていたがシングルモードで起動した後、マウントし直せるとは!助かりました。

シングルモードは
FC4/FAQ/シングルモードで動作させるには? – Pocketstudio.jp Linux Wiki
に書いてある手順のkernelの行にsを付け足すだけでOK。以前の手順とは違うような気がする。

No responses yet