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

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|

2007-04-01 [長年日記]


2007-04-02 [長年日記]


2007-04-03 [長年日記]


2007-04-05 [長年日記]


2007-04-06 [長年日記]

_ colinux/debianからVMWare Player/CentOSに乗換

設定が壊れているcolinux/debianをだましだまし使っていたんだけど、そろそろテスト環境として使い物にならなくなってきたんで、「VMWare PlayerでCentOSを動かす」を参考にしつつ、VMWare Player/CentOS 4.4をセットアップし、旧colinux環境から各種データを移行。colinuxよりもVMWare Playerの方が扱いが楽でいいかも。

_ Zend_Config_Yaml野良版

Zend Frameworkの最新状況に追随しようとして、コードを見ているんだけど、なぜかいまだにZend_Config_Yamlがないみたいなんで、試しに書いてみた(つっても、ほとんどのコードはZend_Config_Xml/Iniのものを流用)。

YAMLのパースにSpycかSyckを使っているんで、どちらかが必要。一応Zend_Config_Xml相当のテストは通るようにしておいたけど、それ以外のテストはしていない。

あと、テストパターンの中で、空の要素をarray_mergeしているんで、Warningが出ているんだけど、これはコードレベルで対応しておくべきなのか、それともWarningとして残しておくべきなのか、Zend_Configの思想がよく分かってないんで放置中。

純血主義のZend Framework的には、こういう外部ライブラリを利用したコンポーネントはダメで、たぶんまだproposal段階のZend_Yamlあたりができあがってから、正式版のZend_Config_Yamlが作られるんだろうなー。


2007-04-10 [長年日記]

_ 入学式の日にインフルエンザ

やってくれましたよ。上の子は今年小学校に入学するんで、昨日入学式だったんだけど、朝起きたら39度台の発熱。病院に行ったらインフルエンザだと。入学式に出られない+入学後最初の一週間休まなければならないっつーのは、かなり出遅れる感じだよなー。俺も中学入学のタイミングで引っ越しがあったせいで、入学式+最初の数日出遅れてビミョーな出だしを体験したことがあるからなー。まあ小学生の方が影響は少ないだろうけど。っつーか、今週一週間どうするべ。


2007-04-11 [長年日記]


2007-04-12 [長年日記]

_ PHPでクラスに特定のメソッドがあるかどうかを調べる方法

っつーか普通に、

$foo = new Foo();
if (is_callable(array($foo, 'bar')) {echo "Foo::bar() exists"}

っていけるかなーと思っていたんだけど、問題は__callを使ったときにどうなるのか。試してみたところ、__callが存在するだけで、あらゆるメソッドが存在することになってしまうらしい(っつー言い方は不正確だな。callableかどうかを返す関数なんだから。正確には「あらゆるメソッドが呼べることになってしまう」ね)

class Foo
{
  function __call($methodName, $args)
  {
    throw new Exception()
  }
}

とかでも、Foo::bar()だろうがFoo::baz()だろうがis_callableはtrueを返してしまう。

試しにis_callableの第3引数を使って、

$methodName = null;
is_callable(array($foo, 'bar'), true, $methodName);

とかしてみたら、存在しないときには$methodNameで識別できるんじゃないかと期待してみたんだけど、期待も空しくFoo::barが返ってきてしまった。

Reflection APIを使って、

$reflection = new ReflectionClass('Foo');
$reflection->hasMedhot('bar');

とすればいけるんだけど、この程度のことにReflection APIを使うのはなんだか大げさなような気がしてならない。今のところそれしか方法が見つからないから、使うんだけど。

追記

以上の文章は、method_exists()を使えば簡単にできることなのに、その関数の存在をすっかり忘れて試行錯誤した記述です。メソッドの存在確認をしたい場合は、

method_exists($foo, 'bar')

を、そのメソッド名での呼び出しが可能かどうか(__callも含めて)が知りたい場合は、

is_callable($foo, 'bar')

を使うのが正解でした。

ご指摘ありがとうございました>wtnabe様。

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

_ wtnabe [おおぼけかましているかもしれないんですけど、method_exists() でダメな理由ってなんでしょうか? イン..]

_ ishinao [おお、method_existsなんてものもありましたっけ。すっかり忘れてました。というわけで、私がおおぼけかまして..]

_ wtnabe [おぉ、お役に立てましたか。最近 DI を意識して書くことが多くて、is_a() と method_exists() ..]


2007-04-13 [長年日記]


2007-04-16 [長年日記]


2007-04-17 [長年日記]


2007-04-18 [長年日記]


2007-04-23 [長年日記]

_ 社員旅行

先週、金曜土曜と社員旅行で河口湖方面に行ってきた。

初日は富士急ハイランドでドドンパFUJIYAMAええじゃないかの3連発。ジェットコースター系に乗るのは子供の頃以来で、ドドンパ程度ならばともかく、FUJIYAMA(最高地点たけーよ&後半のアップダウン&横揺れがしつこいよ)、ええじゃないか(後ろ向き上り→真下を向いて垂直落下はかなりえぐい)はきつかった。っつーか、最近のジェットコースターは、ポケットの中のものとかメガネとか(場合によっては靴まで)全部乗る前に外していくんだね。せっかくXactiでムービーを撮りたかったのに乗っている映像は撮れなかった。っつっても、実際には乗りながら撮影する余力はなかったと思うけど。んで、宿に行って風呂に入って宴会やって麻雀やって終了。

翌日は朝飯食って、テニスコートを借りてテニスをやって、レンタカーでプリウスを借りてそのまま帰宅。プリウスは楽しーなー。空いている高速+ちょっと混んでいる環八で100kmちょっとの道のりを、32km/lくらいの燃費で走れたよ。燃費走行のテクニックもいろいろ工夫しがいがあるし。ただ、標準のナビがしょぼかったのと、ナビ画面と詳細な燃費(エンジン+モーター情報)画面とが両立しないのはいまいちだなー。エンジン+モーター情報はメーター周りに標準で表示してくれればいいのに。あと、結構視界も悪い車だった。特に後方視界なんてムーヴとかモビリオとかに乗り慣れた身には、ほとんど何にも見えねーよって感じだった。まあ運転に支障があるわけじゃーないんだけど。

ええじゃないかの映像

はじめてYouTubeにムービーをアップロードしてみたけど、せっかくHD画質のムービーをアップロードしたのに、こんなに品質を落とされちゃうのか。特に縦横比を維持してくれないのは厳しーなー。

Tags: 旅行 会社
本日のツッコミ(全2件) [ツッコミを入れる]

_ ただただし [高画質なビデオ共有ならStage6ですよ]

_ ishinao [Stage6を試してみたんですけど、あそこはXactiで撮影したmpeg4データには対応してないんですね。 いった..]


2007-04-24 [長年日記]


2007-04-25 [長年日記]