雑文発散

最新 追記
過去の日記

2008-02-01 [長年日記]

[] 久しぶりにガムジャタン

突発的に「宋家ガムジャタン」へ行ってきた。久しぶりのお店に久しぶりの人と。

変わらぬ旨さではあったのだが、最後のおじやまで行けなかったのが残念。途中でお腹いっぱいになっちゃった。。。


2008-02-02 [長年日記]

[] Twitterで「餃子が食べたい」というツブヤキが並んだおかげで

1月31日の午後9時25分前後に「頻繁にニュースで見掛けるので餃子が食べたくなった。」というツブヤキと 近所の上海餃子を無性に食べたいな、と。焼と水両方行きたいなと。」というツブヤキが連発で出てきて、思わず笑ってしまった。

で、そのおかげで(?)、今日は餃子の都であるところの宇都宮まで来てみたよ。自宅を出て、首都高経由東北自動車道利用で約2時間ほど。意外と近いんだな、宇都宮。

あんまり調べずに来てしまったので有名店の場所も分からん、、、と思っていたら、長崎屋宇都宮店の地下に「宇都宮餃子 来らっせ」という、いろんな餃子店舗が集まっているテーマパーク的施設があるのを知った。ということで、この施設で食べてみたよ。

まずは「宇都宮みんみん」の「焼餃子」。これはオーソドックスな餃子。イイ感じのコゲ具合の皮はカリカリ。でも中はジューシーで美味しかった。6個で220円は激安。

みんみん 焼餃子

次も「宇都宮みんみん」で、こちらは「水餃子」。先ほどのカリカリとは違ってツルツルとした食感が楽しい。焼餃子を食べ続けて、ちょっと油っぽくなった口の中を水餃子のさっぱりさで緩和できた。こっちも6個で220円。大丈夫なの?こんなに安くて。

みんみん 水餃子

まだまだお腹は余裕だったので、続いて「めんめん」の「ゆで餃子のおろしポン酢」。水餃子じゃなくて、ゆで餃子の所以は、お湯から出しているところなのか?などと考えながら待っていて、出てきたのがコレ。これはヤバイ。うま過ぎて、一気に6個を食いきってしまった。380円。

めんめん ゆで餃子のおろしポン酢

そろそろお腹もいい感じにふくれてきたのだけれど、別のエリアにもお店があったのでメニューを眺めていたところ、何やら怪しげな「餃子カレー丼」を発見。これは食わねばなるまい!と店に入った。

しかーし、これはイマイチ。この状態で出てきても、餃子は餃子で食べるし、カレーはカレーで食べる。一緒になっているメリットがない。カレーは「ひと味抜けたボンカレー」みたいな感じで美味しいとは言い難い。300円なので安いっちゃ安いんだけど、盛りはごはん茶碗だし、他の餃子の美味しさと比較してしまうとリーズナブルとは言い難いかな。

来らっせ カレー餃子

もう一品、一緒に頼んだのが「青源」の「水餃子」。味噌味のスープにちょっと酸味が入っていたのだが、もうちょっと酸味が強くても良いかなと思った。あと味噌も濃い方がオレの好み。420円。

青源 水餃子

今日、食べた中では「ゆで餃子のおろしポン酢」が一番美味しかったし、リピートしたくなる味だったなぁ。

で、今日は宇都宮に泊まる事にしたんだけど、、、明日は雪だとか。初めての雪の中での運転が宇都宮からの帰宅ルートになるとは。。。

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

いし [戸塚ではえらい積もりっぷり。高速道路もそちこち通行止めだが…。宇都宮は果たして?]

すずき [なんとか帰り着きましたよw]


2008-02-03 [長年日記]

[][] スタッドレス、履いてて良かった

昨日、出発前の天気予報では「曇りのち雨」だった気がするのだが、いつの間にか雪の予報。で、朝起きてみたらこの通り。

雪景色

プントちゃんも真っ白け、、、かと思ったら、ボンネットの上の雪はあらかたなかった。勝手に落ちたのか、ホテルの人が落としてくれたのかは不明。絵的には、もっと雪だらけの方が面白かったのにな(笑)

雪色プント

本当は「大谷資料館」あたりに寄ってから帰るつもりだったんだけど、人生初めての雪道運転をしなきゃならないというプレッシャーもあって、真っすぐ帰る事にした。

鹿沼ICから東北道に入った訳だが、走行車線2本はほとんど雪が積もっておらず、割と普通に走れた。1回だけ、先行車を抜かそうとして、薄く雪が残っていた追い越し車線に入ったら、、、怖えぇぇぇ。滑るって訳じゃないけど、ハンドルが取られそうになってビビった。しかし、後戻りできない状況だったので、そのまま走り抜けた。あー、もう二度とあぁいう状態の高速道は走らないようにしよう。と、ビビりながらも走り続けてきた東北道も、結局佐野藤岡ICから先は雪のため通行止で、強制的に下ろされてしまった。

その後は下道でずっと来たのだけれど、板橋あたりで前の車に釣られて首都高に上がってしまった。そのまま本来なら通るはずの無い山手トンネルに入ってしまい、ちょっと遠回りになりながらなんとか帰り着いた。

初の雪道の感想としては、、、高速道はともかく、この位の雪なら幹線道路は割とフツーに走れるなって思った。一番大変だったのは自分トコの車庫入れ。10cmくらい雪が積もってて、バックギアに入れても全然動かず。結構アクセルを踏み込んだらやっと動くという状態に。いや、左右のクルマにぶつけずに入れられて良かった。これ、スタッドレスじゃなくノーマルタイヤだったら全然動かなかっただろうなぁ。


2008-02-04 [長年日記]

[] 段取り悪し

うー、ダメだなぁ>オレ

[] 賃貸契約の更新手続きを行った

今年の3月9日で賃貸契約が切れる。クルマを買った時には「今度は車庫付きの物件へ」なんて思ってたんだけど、結局、今のところの契約を更新する事にして、郵送されてきていた書類にサインした。

日頃から「住みたい街」なんてことを意識していれば、もうちょっと積極的に考えたんだろうけど、そういうコダワリは無いんだよなぁ。


2008-02-05 [長年日記]

[N810] N810 とワイヤレスゲートと Devicescape

このところ話題に出ていた「Devicescape がイイぜ!」という話を「へぇ〜」って感じで聞いていたのだが、そのサイトを見たら、N810 も載っているじゃないか。

という訳で、ワイヤレスゲートのヨドバシカメラオリジナルプランの申し込みと一緒に Devicescape へも登録してみた。

Devicescape のアプリケーションは、N810 のブラウザでサイトへアクセスし、deb パッケージをダウンロードしてインストールした。

N810 devicescape

では、早速試してみようかと、東京メトロの駅構内で N810 を開いてみると、電波があるある。

N810 東京メトロの無線LAN

あれ?でも、ワイヤレスゲートで使える SSID がないじゃん!

ということで、オレの通勤経路ではワイヤレスゲートだけではダメみたい。Flet's とか DoCoMo の Mzone とかの契約もしないとイマイチなのかなー。

[PostgreSQL] PostgreSQL 8.3 がリリースされたので Leopard でも試してみる

PostgreSQL 8.3 がリリースされた。記念として(?) Leopard でもコンパイルしてみたよ。

$ ./configure --prefix="/Users/suzuki/work/pgsql" 
checking build system type... i386-apple-darwin9.1.0
checking host system type... i386-apple-darwin9.1.0
checking which template to use... darwin
【中略】
config.status: linking ./src/backend/port/dynloader/darwin.h to src/include/dynloader.h
config.status: linking ./src/include/port/darwin.h to src/include/pg_config_os.h
config.status: linking ./src/makefiles/Makefile.darwin to src/Makefile.port

configure のオプションは、とりあえず --prefix のみで。んで、make を実行。

$ make
make -C doc all
gzip -d -c man.tar.gz | /usr/bin/tar xf -
/usr/bin/tar: Read 1536 bytes from -
【中略】
make -C config all
make[1]: Nothing to be done for `all'.
All of PostgreSQL successfully made. Ready to install.

何事も無くコンパイルできたので、続いて make install を実行。

$ make install
make -C doc install
gzip -d -c ./postgres.tar.gz | ( cd /Users/suzuki/work/pgsql/doc/html && /usr/bin/tar xf - )
【中略】
/bin/sh ../config/install-sh -c -m 755 ./mkinstalldirs  /Users/suzuki/work/pgsql/lib/pgxs/config/mkinstalldirs'
PostgreSQL installation complete.

そして、initdb コマンドでデータ領域の初期化。

$ cd /Users/suzuki/work/pgsql/bin
$ ./initdb -D /Users/suzuki/work/pgsql/data
The files belonging to this database system will be owned by user "suzuki".
This user must also own the server process.
 
The database cluster will be initialized with locale C.
The default database encoding has accordingly been set to SQL_ASCII.
The default text search configuration will be set to "english".
 
creating directory /Users/suzuki/work/pgsql/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 20
selecting default shared_buffers/max_fsm_pages ... 2400kB/20000
creating configuration files ... ok
creating template1 database in /Users/suzuki/work/pgsql/data/base/1 ... ok
initializing pg_authid ... ok
initializing dependencies ... ok
creating system views ... ok
loading system objects' descriptions ... ok
creating conversions ... ok
creating dictionaries ... ok
setting privileges on built-in objects ... ok
creating information schema ... ok
vacuuming database template1 ... ok
copying template1 to template0 ... ok
copying template1 to postgres ... ok
 
WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the -A option the
next time you run initdb.
 
Success. You can now start the database server using:
 
    ./postgres -D /Users/suzuki/work/pgsql/data
or
    ./pg_ctl -D /Users/suzuki/work/pgsql/data -l logfile start
 

Tiger & PostgreSQL 8.2 系だと、initdb で失敗していた気がするが、今回は問題なく初期化完了。でもって、postmaster を起動してみる。

$ mkdir -p /Users/suzuki/work/pgsql/data/var/log
$ ./pg_ctl -D /Users/suzuki/work/pgsql/data -l ../var/log/pg.log start
server starting

スタートしたようなので、psql コマンドで template1 へ接続してみる。

$ ./psql template1Welcome to psql 8.3.0, the PostgreSQL interactive terminal.
 
Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit
 
template1=# 

あまりにもあっさりインストールできたなー。

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

ただただし [mobilepointとlivedoorは店舗にあることが多いねぇ。駅はほとんどダメ。]

すずき [結局、今日もまだ Devicespace の恩恵にあずかれていません。 つーか、ワイヤレスゲートも使ってないという。..]


2008-02-06 [長年日記]

[N810] N810 の GPS をようやく使う事ができた

N810 には GPS が載っているのだけれど、本体を窓際に置いて30分以上経っても現在位置を取得してくれず、「これはもしかして不良品?」と思っていたのだけれど、なかなか測位してくれなかったのは、GPS 機能のバグが原因だったようだ。

NOKIA N810内蔵GPSの測位が遅い問題を改善するgpsd関連のパッケージが登場」によると、

2008年1月1日から2008年2月28日まで、タイムスタンプが86,400秒進んでしまうというもので、これが原因で、前回の測位情報が参照されないということが起こっているようです。

だそうで。ソフトウェアのバグの可能性は考えてなかった。さっそくバグ修正されたパッケージをインストールしてみたところ、ものの数分で測位してくれた!

本体にプリインストールされている Map というアプリには日本の地図データが提供されていないようなので、Maemo Mapper をインストール。Auto Download にチェックを入れてたら、日本の地図も勝手に落としてきてくれたようだ。

N810 Maemo Mapper

「Oumekaido」なんて文字は見えるが、かなりアバウトだな、この地図。。。もうちょっと詳細の地図が手に入るのかは、情報収集中。

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

kimitake [Maemo Mapper は確かデフォで OpenStreet という地図を使ってたと思うんですが、設定すれば他にも..]

すずき [情報ありがとうございます! Google Maps でうまく行きました!]


2008-02-07 [長年日記]

[N810] Maemo Mapper で Google Maps

昨日のツッコミで教えて頂いた通り、Maemo Mapper で Google Maps のデータを利用できることが分かった。

Maemo Maps のメニューにある「Maps > Maage Repositories...」で Google Maps の URL をセットしてやれば OK。指定する URL は Internet Tablet Talk Forums 内の「Maemo Mapper Repositories」で発見できた。

フツーの地図表示は「http://mt.google.com/mt?x=%d&y=%d&zoom=%d」を設定するとこんな感じに。

N810 Maemo Mapper / Google Maps Street

衛星写真版は「http://kh.google.com/kh?v=999&t=%s」を設定する。

N810 Maemo Mapper / Google Maps Satellite

地図のスクロールは軽快。スクロール先の地図のダウンロードも WiFi であればストレスはない。地図データは N810 本体にキャッシュされるので、ネットワーク接続が無くなっても既に表示した事のあるエリアであれば表示ができる。どのくらいの容量をキャッシュしてくれるのかは不明だけど。

数回使ってみた感じだと、昨日のバグ修正版をインストールしたとしても GPS の感度が悪い時があるような気がする。ただ、FOMA SO905i で GPS + 地図アプリを使うよりは遥かに快適。どこでもネットワーク接続(特に WiFi)環境があれば、これはなかなか使えそうなアプリだなぁ。


2008-02-08 [長年日記]

[N810] GPS のうるう年問題のパッチに問題

NOKIA N810内蔵GPS問題を改善するパッケージに副作用があった」とのことなので、さっそくアップデートされていたパッケージを適用した。

新しいものでも GPS の測位は速いままのようではある。先ほど一度だけ試しただけなので、あんまり確かな情報でもないけれど。。。とりあえず、このまましばらく使ってみよう。


2008-02-09 [長年日記]

[] 寒いし連休だしということで

ひさびさに圧力鍋を使って、カレーを作った。

チキンカレー

具材は、じゃがいも、たまねぎ、人参、マッシュルーム、エリンギ、そして鶏肉。チキンの柔らかさがいい具合になってたよ。圧力鍋さまさまだね。


2008-02-10 [長年日記]

[N810] Nokia Internet Tablet で Newton OS が動く?

アップルの「Newton」と言えば、(ちょっと歳がいった)ガジェット好きには憧れの逸品なハズ。オレもそんな中のひとり。当時はお金が無くて買えなかったのだけれど、手書き文字を認識して、自分の書き癖を学習してくれて、どんどん「自分だけのツール」として成長していくなんて、すげーツールなんだ!と、ワクワクしていた記憶がある。

その OS であるところの Newton OS を別のプラットフォームで動かしちゃえという試みが「Open Einstein」で続けられている。以上、説明モード終了。

Open Einstein 自体は以前にも聞いた事があったはずなのだが、正直なところすっかり忘れていた。何かの N810 情報を検索していて、偶然発見したのが「OpenEinstein build 48 for Nokia 770」という記事。記事中のリンクから N770 用の Open Einstein (OS2006用)をダウンロードできるようになっていた。無理だろうと思いつつも、そのバイナリをオレの N810 で実行してみところ、やっぱりうまく動かなかった。「libXau.so.0 が無い」ってエラーが出てしまったんだけど、OS2006 と OS2008 だと X 周りに変更があるのかいな? この辺はまだ良く分かっていない。

N810 Open Einstein

しかし、まー、そもそも Open Einstein を動かすには、Newton 本体から ROM を抽出しなきゃいけないなどのハードルもある訳で、なかなか簡単にはいかないかもなー。

[] 効率が10倍アップする新・知的生産術―自分をグーグル化する方法

Weboo! Returns. での書評に「最初のカラー見開きページがいきなりガジェットだらけ」という記述があって、気になって購入してみた。本筋とは別のところがきっかけだけど、まぁいいだろ。

効率が10倍アップする新・知的生産術―自分をグーグル化する方法

著者の勝間和代氏については、「無理なく続けられる 年収10倍アップ勉強法」あたりで名前は知っていたけれど、その著書を読むのは初めて。

「19歳で公認会計士試験に合格」や「世界の最も注目すべき女性50人に選出」などと言った経歴を見て、「すげー人はすげーなぁ」と、どこか凄く遠くの人のような感想を持っていたのだけれど、本書を読んでみたら「私はいま38歳ですが…」と書いてあった。「いま」というのは、この本が出た2007年だろうから、、、オレと同年代じゃないか!

いきなり親近感が湧くと共に、「なんでこんなに違うんだ?」とその違いに愕然とした。この事で、この本への興味が大きくなり、一気に読み切ってしまった。

文中で紹介されている各種のインプット・アウトプット方法については、いくつかは自分でも行っていた方法だったのだが、それを意識してやっていたか?と言われるとそうではなく、たまたま同じだったという程度。この部分を意識して行うようにすると、また違ってくるだろうと思わされた。

逆に全くできていなかった・把握できていなかった部分としては、次のような記述があった。

どうやったら集中力が続くのかというのはみなが悩むことですが、集中力を続かせる一番簡単な方法は体力を付けることです。

体力、、、ないなぁ。特に最近は全然ダメで、やたら疲れやすい。

知的生産を持続するために、できることから生活習慣を改善する

という記述もあることだし、買ったままほとんど使っていない Wii Fit をまずは使い続けようかと思う日曜日の夜なのであった。


2008-02-11 [長年日記]

[] いちげんさん推奨

比較的近所に「上島珈琲店」(音アリ注意)ができたので、このところ良く行っている。ちなみにお気に入りは黒糖ミルク珈琲。

で、実は今日も朝から行ってきた訳なのだが、ちょっと気がついたことがあった。

オレの場合、(1)注文して、(2)お金払って、(3)コーヒー受け取って、(4)ハイ終了な訳なのだが、他のお客さんには、(2)の辺りで「ポイントカードお持ちですか?」とか「お作りしますか?」とかって会話が入るようなのだ。

ポイントカードと言えば、お客をリピートさせる為の施策である。ということは、ソレを勧めない相手というのは、あまり来て欲しくない客なのか?と思って、ちょっとヘコんだりして。。。

まぁ、ノートパソコンを広げてコーヒー1杯で長居するような客にはリピートして欲しくないってことかなぁ(笑)

[] かるた小町

なんとなく「かるた小町」を観てしまったのだが、意外と面白かった。富士山萌えなので、あのロケ地に結構惹かれたってのもあるけど(笑)

ドラマが盛り上がったところで、ピコピコ音楽が鳴ってたんだけど、あれはオリジナルなのかなぁ? もうちょっと聴いてみたいなと思ったんだけど。。。

[] ひさびさに robot を買った

だってさ、『人気の「お宅訪問」は、冬目景とSABEを直撃』とか書いてある訳だよ。買わずにはいられないだろうてさ。

robot 10

肝心のお宅訪問は、カラーとは言え1ページだけだった。。。しかし、まぁ、冬目景っぽいお宅だこと。

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

犬っコ [今日行ったので気をつけてみたのだけど、レジカウンターの横に「ご自由にお取り下さい」ってなってたよ。>ポイントカード ..]

すずき [あー、そういうものなの? 今度行った時にチェックしてみるよ。]


2008-02-12 [長年日記]

[PHP][Perl][Ruby] PHP / Perl / Ruby での正規表現の挙動の違い

あるデータが「数字のみの文字列」であるかどうかのチェックに「/^[0-9]+$/」を使っていたところ、行末に「\n」が入っていた場合に、期待通りに動かないというワナにはまった。 具体的には、こんな感じ。

#!/usr/bin/php
<?php
    $str = "1234\n";
 
    if (preg_match('/^[0-9]+$/',$str)) {
        print "ok";
    } else {
        print "ng";
    }
?>

/^[0-9]+$/ は、「0から9の文字だけで構成された1文字以上の文字列」という意味なので、改行コードが入っている文字列 $str は「ng」になってくれそうな気がするのだが、現実は「ok」になる(常識?)

これ、PHP だけがこんな挙動なのかな?と思って、Perl / Ruby も調べてみたが同じ挙動だった。これはこれで正解ってことなんだろう、きっと。

それとは別のところで、PHP / Perl と Ruby とで挙動が違うモノがあったので、ちょっと書いてみる事にする。

まずは PHP のコード。test.php とする。

#!/usr/bin/php
<?php
 
$array = array('1234',
               '1234' . "\n",
               '1234' . "\n" . '5678');
 
for ($i = 0; $i < count($array); ++$i) {
    if (preg_match('/^[0-9]+$/',$array[$i])) {
        print "ok\n";
    } else {
        print "ng\n";
    }
}
?>

次は Perl のコード。test.pl とする。

#!/usr/bin/perl
 
@array = ('1234',
          '1234' . "\n",
          '1234' . "\n" . '5678');
 
for ($i = 0; $i < @array; $i++) {
    if ($array[$i] =~ /^[0-9]+$/) {
        print "ok\n";
    } else {
        print "ng\n";
    }
}

最後は Ruby のコード。test.rb とする。

#!/usr/bin/ruby
 
array = ['1234',
         '1234' + "\n",
         '1224' + "\n" + '5678'];
 
array.each { |tmp|
   if /^[0-9]+$/ =~ tmp then
      print "ok\n"
   else
      print "ng\n"
   end
}

これを実行すると、次のようになる。

$ ./test.php 
ok
ok
ng
$ ./test.pl  
ok
ok
ng
$ ./test.rb
ok
ok
ok

Ruby だけ、最後の "1234\n5678" という文字列も /^[0-9]+$/ でヒットする。PHP / Perl と Ruby のどちらが「正しい」のかは良く分からんけど、直感的には PHP / Perl の方を期待するなぁ。

ちなみに PHP にはいくつかの正規表現系があるのだけど、今回は(オレの趣味で)Perl 互換の正規表現を利用している。なので、Perl と動きが同じになっている(のだと思う)。他の正規表現系は試していない。

テストは Mac OS X Leopard 上で実施した。それぞれの言語系のバージョンは以下の通り。

$ /usr/bin/php --version
PHP 5.2.4 (cli) (built: Sep 23 2007 22:34:35) 
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
 
$ /usr/bin/perl --version
 
This is perl, v5.8.8 built for darwin-thread-multi-2level
(with 1 registered patch, see perl -V for more detail)
 
Copyright 1987-2006, Larry Wall
 
Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.
 
Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.
 
$ /usr/bin/ruby --version
ruby 1.8.6 (2007-09-24 patchlevel 111) [universal-darwin9.0]

[] スター・ウォーズ クローン大戦の公開日が決定したそうだ!

ジャパン スター・ウォーズ ドットコムの情報によると、テレビシリーズとして予定されていた「スター・ウォーズ クローン大戦」のファーストエピソード(第一話ってこと?)が劇場公開される事になったらしい。

北米での公開が今年の8月15日。日本を含む他国での公開日は近日発表との事。3ヶ月遅れくらいかなぁ。。。

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

hnw [こんにちは。/^([0-9]+)$/として$1を見てみると改行が含まれていないのではないかと思います。]


2008-02-13 [長年日記]

[PHP][Perl][Ruby] PHP / Perl / Ruby での正規表現の挙動の違い #2

hnw さんからツッコミを貰ったので、昨日のコードをちょっと改造して、マッチしている部分をチェックしてみた。

PHP のコード。test.php。

#!/usr/bin/php
<?php
 
$array = array('1234',
               '1234' . "\n",
               '1234' . "\n" . '5678');
 
for ($i = 0; $i < count($array); ++$i) {
    if (preg_match('/^([0-9]+)$/',$array[$i],$match)) {
        print "ok: " . $match[1] . "\n";
    } else {
        print "ng\n";
    }
}
?>

Perl 版。test.pl。

#!/usr/bin/perl
  
@array = ('1234',
          '1234' . "\n",
          '1234' . "\n" . '5678');
 
for ($i = 0; $i < @array; $i++) {
    if ($array[$i] =~ /^([0-9]+)$/) {
        print "ok: " . $1 . "\n";
    } else {
        print "ng\n";
    }
}

Ruby 版。test.rb。

#!/usr/bin/ruby
 
array = ['1234',
         '1234' + "\n",
         '1224' + "\n" + '5678'];
 
array.each { |tmp|
   if /^([0-9]+)$/ =~ tmp then
      print "ok: " + $1 + "\n"
   else
      print "ng\n"
   end
}

で、実行結果。

$ ./test.php 
ok: 1234
ok: 1234
ng
$ ./test.pl  
ok: 1234
ok: 1234
ng
$ ./test.rb
ok: 1234
ok: 1234
ok: 1224

PHP / Perl / Ruby とも文字列の末尾に「\n」が入っているいないに関わらず同じ結果になった。文字列中に「\n」が入っている場合、Ruby だけが 1234 にマッチしていた。

これはつまり、Ruby における正規表現は PHP / Perl での m オプション付きと同じ動きなのかしら?

ということで、オプションを付けて実行してみた。

#!/usr/bin/php
<?php
 
$array = array('1234',
               '1234' . "\n",
               '1234' . "\n" . '5678');
 
for ($i = 0; $i < count($array); ++$i) {
    if (preg_match('/^([0-9]+)$/m',$array[$i],$match)) {
        print "ok: " . $match[1] . "\n";
    } else {
        print "ng\n";
    }
}
?>

#!/usr/bin/perl
 
@array = ('1234',
          '1234' . "\n",
          '1234' . "\n" . '5678');
 
for ($i = 0; $i < @array; $i++) {
    if ($array[$i] =~ /^([0-9]+)$/m) {
        print "ok: " . $1 . "\n";
    } else {
        print "ng\n";
    }
}

$ ./test.php
ok: 1234
ok: 1234
ok: 1234
$ ./test.pl
ok: 1234
ok: 1234
ok: 1234

この結果だけみると、PHP / Perl と Ruby とで同じ状態にはなったんだが、「Ruby の正規表現は Perl における m オプション付きがデフォルト動作」という認識は正しいのだろうか?

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

たかはし [えー、Perlのmオプションについては良く知らないのですが、Rubyでは$は行末にマッチであり、文字列末尾ではありま..]

hnw [思いつきレベルでコメントさせて頂いたんですが、解決したみたいですね。 \zはPerl 5.005から導入されている..]

hnw [すみません、誤解してました。やっぱり$はいつでも0文字マッチなんですね。普段は最後の文字の次の0文字にマッチ、文字列..]


2008-02-14 [長年日記]

[PHP][Perl][Ruby] PHP / Perl / Ruby での正規表現の挙動の違い #3

たかはしさんからツッコミを受け、るびまの正規表現関係の記述を読んでみると、Ruby に関しては「標準添付ライブラリ紹介 【第 12 回】 正規表現 (1)」にそのものズバリが書いてあった。

文字列先頭や文字列末尾の意味で「^」や「$」を使ってはいけません。Perl などの他の言語の正規表現とは意味が違うので気をつけてください。 たとえば、CGI の入力のチェックで間違って「^\d+$」のように使ってしまうと、「数字だけからなる文字列」を受け付けたつもりでも「数字のみの行」を含む文字列を受け付けることになってしまいます。
「\Z」も普通は使うことはないでしょう。「\A」とセットで文字列全体をチェックするのなら「\z」を使うべきです。「\Z」は「^」に対応する「$」のように「\A」に対応するものとして存在するだけで、普通は使うものではないと思います。行を意識して処理をしたいのなら、「\A」と「\Z」ではなく「^」と「$」が向いていることの方が多いはずです。

hnw さんと同じく、オレも \z と \Z の存在を知らなかったのが今回の(オレの)混乱の原因か。ということで、\z を使ったコードを試してみた。

まずは PHP 版。

#!/usr/bin/php
<?php
 
$array = array('1234',
               '1234' . "\n",
               '1234' . "\n" . '5678');
 
for ($i = 0; $i < count($array); ++$i) {
    if (preg_match('/^([0-9]+)\z/',$array[$i],$match)) {
        print "ok: " . $match[1] . "\n";
    } else {
        print "ng\n";
    }
}
?>

次に Perl 版。

#!/usr/bin/perl
 
@array = ('1234',
          '1234' . "\n",
          '1234' . "\n" . '5678');
 
for ($i = 0; $i < @array; $i++) {
    if ($array[$i] =~ /^([0-9]+)\z/) {
        print "ok: " . $1 . "\n";
    } else {
        print "ng\n";
    }
}

最後は Ruby 版。

#!/usr/bin/ruby
 
array = ['1234',
         '1234' + "\n",
         '1224' + "\n" + '5678'];
 
array.each { |tmp|
   if /\A([0-9]+)\z/ =~ tmp then
      print "ok: " + $1 + "\n"
   else
      print "ng\n"
   end
}

実行結果はコレ。

$ ./test.php
ok: 1234
ng
ng
$ ./test.pl 
ok: 1234
ng
ng
$ ./test.rb
ok: 1234
ng
ng

この結果を見ると、ようやく全ての言語で期待通りの結果になった。Ruby の場合は、PHP / Perl と同じ /^[0-9]+\z/ では、これがまた違う結果になるので、上記の通り /\A[0-9]+\z/ としている。PHP / Perl で使っていた正規表現を Ruby に移行しようとするときには、この辺に気をつけないといけなさそうだなー。

ところで、Ruby が Perl と似た表記での正規表現を採用したのに、この部分の動作を変えた理由はなんなのだろう? 何かメリットがあって Perl とは違う道を選んだのだと思うのだが、それがどんな時なのかが思いつかない。「すげー便利」って何かがあるんだろうか。。。


2008-02-15 [長年日記]


2008-02-16 [長年日記]

[] 僕ゲーミィはイケメンに変身したんだ!

今日は アミューズメント EXPO 2008 の日なんだねぇ。昔は「AOU エキスポ行きてー! でも一般公開日は混むなー」って思って、ゲーム会社勤務の友人に「招待券ないの?」とか聞きまくってたなぁ。

しかし、なぜ URL が「2004」?、EXPO 2008 なのに。。。

AOU エキスポ

まぁ、それは良いとして、EXPO のページやら、AOU のトップページには(オレが)見慣れないキャラがいた。

誰よこの虎パンツ?と調べてみると、分かりにくい階層に説明ページがあった。

このキャラクターはネコでもイヌでもありません。この世には存在しない動物です。目はフクロウ、耳はロバ、尻尾はリス、そして天使の羽です。

ふむふむ、なるほどね。で、名前は「ゲーミィ君」なんだ。と分かったところで、

<ゲーミィ君>ハンサムに変身!!
この程「僕ゲーミィはイケメンに変身したんだ」

という記述を発見。イケメンに変身って(笑)

で、イケメンになる前の彼を探してみたけど、見当たらない。きっと圧力をかけて、過去の画像を検索サイトから消したんだな(笑)

その代わり(?)、ゲーミィ君のコスプレダンス画像を発見した。AOU としては、結構がんばって使ってるのね>ゲーミィ君

[] 水妖日にご用心 / 田中芳樹

手に取った時に「あれ?いつもより薄い?」と思っていたんだけど、内容も薄かった。

水妖日にご用心

知らなかったんだけど、薬師寺涼子シリーズはアニメ化されるんだね。その宣伝のためにとりあえず書いたって感じの一冊なのかな?

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

ゲー○ィの女家 [ウェブアーカイバというサイトに見たいサイトのURLを打ち込むと、過去の画像等が復元できたりしますよ(文章は文字化けし..]

すずき [おー、その手がありましたね。 で、見てみたところ、今よりちょっとワイルドな感じだったんですね(笑)>ゲーミィ]


2008-02-17 [長年日記]

[] 成子天神梅まつり

昼メシを食うところを探して、青梅街道を歩いていたら「成子天神梅まつり」なるものが開催されているのを見つけた。

成子天神梅まつり #1

何件かの屋台が出ていたのだけれど、ほとんどお客さんがいない。お腹は空いていたものの、なんだか買いにくくて、結局何も買わずに通り過ぎた。「東京の地酒展」もやっていたようなのだが、酒を飲まないオレなので、こちらもスルー。

成子天神梅まつり #2

で、肝心の梅はというと、ごく一部が咲いているといった程度で、まだまだ見頃ではなかった。このところ寒い日が続いていたので、開花が遅れているのかも。

成子天神梅まつり #3

ここの他にも、そろそろ各所で梅まつりが始まってるみたいだなー。どっか行ってみようかな。


2008-02-18 [長年日記]

[PostgreSQL] JPUG の開発者支援委員会に参加してきた

ここで言う「開発者」とは、「PostgreSQL そのものを開発をする人」であり、「PostgreSQL を使って開発をする人」ではない。

日本 PostgreSQL ユーザ会(JPUG)では、そういった開発者への支援を行うべきなのか?、行うとしたらどのようか形があるのか?ということを検討する「開発者支援委員会」を昨年から設置し、活動を始めたそうだ。実は、そういった委員会が設置されたことも知らなかったのだが、今回、縁あってその会議に参加させて頂いた。

ちょっとトンチンカンな事を話したような気もするが、日頃思っていた事も伝えられたので、多少はお役に立てたのではないかと思う。

この委員会で話し合われた内容を元に、JPUG の理事会に報告がされるとのこと。いずれ議事録などで公開されると思われるので、お楽しみ(?)に。


2008-02-19 [長年日記]

[] リハーサル

10分の持ち時間なのだが、かなり早口にしても14分弱かかってしまう。途中、言いよどんだ部分があったので、そこがクリアすればマシになるのだが、そもそも分量を間違った気がするなぁ(笑)


2008-02-20 [長年日記]

[PHP] 第2回 CakePHP 勉強会に参加してきた

第2回 CakePHP 勉強会に参加した。なにげに Lighting Talk で発表したりもしたので、なにげに資料もアップしてみたり。HandsOut を初めて使ってみたけど、なかなか良い感じだね(と勝手に宣伝モード)。

yando さん発表の addons.mozilla.org の事例とニフティさんのトピックイットの事例という、双方とも大規模なサイトでの構築事例話は、CakePHP での負荷ポイントを聞けたので勉強になったなー。

特に addons〜 の方でのスレーブ DB の取り扱い方がうまくて、なるほどな、と。ただ、オレは PostgreSQL なヒトなので、あの方式はうまく使えそうにないんだけど(笑)

ということで、同じく Oracle もなかなか使う機会がなさそうなのだけれど、s-yo-ko さんの発表によると、Cake の 1.2 の pre-beta で動いて、beta で動かなくなっているそうなんだけど、良く分からん動きだなぁ。ヤバイコードが混ざってしまったのだろうか?

ちなみに CakePHP 1.2.0.6311-beta + PostgreSQL 8.3 も、ちょっと動きが怪しそうな部分があるような気がしている。ただ、PostgreSQL 8.3 での変更点を把握していないのと、CakePHP 1.2 にも慣れていないので、どちらがどうなのかはまだ全然追えていない。

たぐちさんの修行話も面白かった。挫折した時はデザインだ!ってのは「そうそう、そうだよねー」と(笑)

あと、最後に p4life さんが、FastLadder を CakePHP に移植してみたという話は、所用であまり聞けなかったのが残念。しかし、そのネタの選択からして面白さが分かるというのがスゴイな。


2008-02-21 [長年日記]

[PHP] 第2回 CakePHP 勉強会に参加してきた

日付間違ったので、移動しました。前も同じ間違いしたな、オレ。。。

[] 夜の炭酸飲料

コンビニでこんなの見つけた。

夜の炭酸飲料

案の定おいしくない。


2008-02-22 [長年日記]

[] ものすごく

gdgdになる予定。


2008-02-23 [長年日記]

[][PostgreSQL] JPUG2007年度合宿 #1

昨年の秋田に引き続き、今年は佐賀でのJPUG2007年度合宿に参加。ということで、ただいま羽田空港より更新しとります。

画像の説明

MacBook + ワイヤレスゲート(mobilepoint)+ devicespace で、WiFi の自動ログインも成功。

[][PostgreSQL] JPUG2007年度合宿 #2

ホテルに着いた。「日本POSTGRESSQL」になってたけど。

JPUG合宿 ホテル桜

今回、チューニング大会用のマシンは、サン・マイクロシステムズさんより Sun Fire を用意して頂きました。

JPUG合宿 会議室

Solaris 使うの初めてだー! uname だとこんな感じのマシン。

 # uname -a
 SunOS pghost2 5.10 Generic_127112-07 i86pc i386 i86pc

[][PostgreSQL] JPUG2007年度合宿 #3

A〜C の3チームに分かれてチューニング大会開催中。オレは B チーム。PostgreSQL 8.3.0 のコンパイルが完了し、お題のデータをどうしようかというところ。どうもお題のデータサイズが大き過ぎて、データロードに時間がかかりそうな気配。とは言え、データが小さすぎるとチューニングによる差が出にくいということで、いろいろ検討中。

ちなみにこんな場所で行っているよ。

JPUG合宿

[][PostgreSQL] JPUG2007年度合宿 #4

夕飯食べた。オレは伊勢海老会席。

JPUG合宿

そして食後のチューニング大会。

JPUG合宿


2008-02-24 [長年日記]

[][PostgeSQL] JPUG2007年度合宿 2日目 #1

JPUG2007年度合宿(佐賀:嬉野温泉)」でちょっとした発表をしたので、ここにさらす。

[][PostgreSQL] JPUG2007年度合宿 2日目 #2

合宿2日目は、まず LT 的なオレに言わせろ大会から開始。その一環で上の発表をした訳だが、CakePHP 勉強会で「時間が足りなくて早口で発表した」件の影響が残ったままだったので、今回もやたら早口で焦りながら発表したのは反省ポイント。持ち時間はあったので、もっとゆっくり話せれば良かったな。

他の発表では、Skype の pgbouncerPLProxy は全く知らなかったので、ちょっともう少し調べてみたくなったのと、HeartBeat による HA 構成の運用事例を聞けたのが良かった。雑誌とかで「こういうことができる」というのを読むより、生で「こういうことをやってる」と聞くことのなんと重要なことか。

それから、PostgreSQL Conference 2008 開催概要の発表。今年も開催するそうだ! 去年は参加できなかったのだけれど、今年は行くよ。

その後、チューニング大会の結果発表。オレの所属したBチームは、残念ながら優勝を逃した。残念ながらと言うものの、今回はあまりチューニングには参加できていなかった。上記の発表用の実演環境がうまく設定できておらず、その準備に追われてしまっていたので。結局、完全な状態には持って行けなかったし。。。

まー、それでも断片的にチューニングポイントの話はできたし、Solaris に初めて触れる事もできたし、なかなか良い経験になったと思う。何より、またいろいろな方といろいろなお話しができたのが楽しかったなー。

[][PostgreSQL] JPUG2007年度合宿 2日目 #3

合宿後は、JPUG 九州支部の方々に案内され、太宰府天満宮へ。そういえば梅の名所だったような?と思いながら行ってみると、やっぱりいっぱい咲いていた。

JPUG 太宰府 梅

で、梅が枝餅販促員の言葉を思い出しつつ、梅が枝餅を食べ歩きして「うめー」とか思っていた訳だけど、今回の太宰府で一番「うまー」と思ったのが、寺子屋本舗の「串ぬれおかき 七味」だったりして。

JPUG 太宰府 ぬれおかき

これはうまい。

しかし、「寺子屋本舗」を検索してみて愕然。これって、別に太宰府の名物って訳じゃないのかー。

それにしても、今回の合宿は、JPUG 九州支部のみなさんにいろいろとお世話に、、、というか、いろいろとおもてなしをして頂いた。細やかな心遣いはステキだなぁ。機会があったら、何かをお返ししたいな。


2008-02-25 [長年日記]

[] 既存とは

「きぞん」ではなく「きそん」。ずっと「きぞん」と言っていた。。。

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

犬っコ [げ。私もだ。教えてくれてありがとう。涙]

すずき [めざましで大塚さんが「きそん」って言っててアレ?って思って調べたらこれだった。]

犬っコ [さすが元えぬえちけー。]

すずき [オレもそう思った(笑)>元NHK]


2008-02-26 [長年日記]

[] SO905i のソフトウェア更新

ふとケータイを見たら、見慣れないアイコンがあったのでクリックしてみると、、、

SO905i ソフトウェア更新

ソフトウェア更新の予告通知だった。こんな機能があるんだねぇ。これで、電池がギリギリだった場合はどうなるんだろう。。。

[N810] Mac OS X で N810 の OS バージョンアップ

N810 の OS であるところの OS2008 の新バージョン(OS 2008 Ver.2.2007.51-3)をインストールしたよ!という記事を「やへー@チラシの裏 - OS 2008 Ver.2.2007.51-3」や「okashumのgadget漂流記 in 南の島♪ - OSをアップデート♪」あたりで見かけて、こりゃやらねば!と思ったものの、Nokia のサポートページには、

You can update the software on your Nokia Internet Tablet using your Windows PC.

と書いてある。Windows 環境がないとダメなのかよ。。。と落ち込みそうになったところで、念のためググってみたら、どうやら Mac OS X でもアップデートできるようだったので、試してみたよ。

まず、Nokia 純正の flasher-2.0.macosx というコマンドラインツールを見つけたのだが、どうやら PPC なバイナリらしくて、こんな風に文句を言われて実行できなかった。

 $ ./flasher-2.0.macosx 
 -bash: ./flasher-2.0.macosx: Bad CPU type in executable

次に「Nokia N800 & N810: How to update the N800 & N810 firmware, how to back up data and settings, how to upgrade the N800 to OS 2008」というページで「770Flasher.app」というアプリケーションが紹介されていたので、こちらを試してみたところうまくいった。

ということで、ここから手順を紹介してみよう。

まずは、OS2008 新バージョンのイメージデータをイメージ提供ページからダウンロードして適当なところへ置いておく。

次に 770Flasher.app を起動する。

770Flasher.app

起動すると、このようなウインドウが表示される。「Nokia 提供じゃねーし、何があっても保証しないよ」的な意味なので、自分で責任が取れる場合のみ OK を押す。

770Flasher.app

すると、ファイル選択のウインドウが出てくるので、先ほどダウンロードした OS2008 のイメージファイルを選択する。

770Flasher.app

またしても注意書き的なウインドウが出てくる。今度は「Mac から N770(N810) を外して、電源切ってよ。あとバックアップも忘れずにな」と出てくるので、その通りにし、OK を押す。

770Flasher.app

すると、wait 画面が出てくる(キャプチャをし忘れたので掲載できない)。この状態で、電源を切ったままの N810 を USB ケーブルで Mac と接続する。そして、N810 の電源を入れると、プログラム側でデバイスを認識し、自動的にアップデートが開始される。

770Flasher.app

このまましばらく待っていればアップデートは終了。

すでに情報は得ていたけど、今までにインストールしていたソフトは丸ごと消えるんだね。まぁ、最近なんだか不安定で、初期化しようかなと思っていたところだったのでちょうど良かった(笑)

早速 Maemo CJK Support を入れ直したけど、ちゃんと動いている様子。このままチマチマと復活させて行こう。


2008-02-27 [長年日記]

[tDiary] 第三サーバが停止していました

tDiary.Net のお知らせにも書きましたが、本日10時45分頃から19時05分頃まで第三サーバが停止していました。

対応に遅れてしまい、長時間のダウンとなってしまいました。関係者のみなさんにはご迷惑をおかけしました。申し訳ありませんでした。

なお、ハードウェアに問題があるかも知れないとのことで、マザーボードなどの交換を予定しています。こちらについては、日時が決まり次第ご連絡致します。

【追記】

ハードウェア交換は、2月29日14時から30分程度の予定で実施することになりました。作業時間中は第三 tDiary.Net へのアクセスができなくなります。ご不便をおかけしますが、ご了承下さい。


2008-02-29 [長年日記]

[tDiary] 第三サーバのメンテナンスが終了しました

tDiary.Net のお知らせにも書きましたが、第三 tDiary.Net のメンテナンスが終了しました。当初の予定よりも時間がかかってしまい*1、ご迷惑をおかけしました。

特にないとは思いますが、不具合等がありましたら、この日記にツッコミを下さい。

なお、ハードウェアを交換した結果、Celeron 2.5GHz から Pentium4 2.8GHz へと CPU スペックが上がりましたので、多少レスポンスが良くなったような気がしています。

*1 遅れた理由はコレです。