2009年 4月 の投稿一覧

最近読んだ本

本の中で取り上げられていたけど、仏教の教えで「無財の七施」というのがある。

  • 和顔施(笑顔で笑うこと)
  • 眼施(相手と目を合わせて声にならない声を受け止めること)
  • 言施(言葉を尽くして相手を安心させること)
  • 牀座施(席をひとに譲ること)
  • 身施(自分の体を使って奉仕すること)
  • 心施(他人を思いやること)
  • 房舎施(人に寝場所を提供すること)

お金を使わなくても、誰かにできることがこれだけありますという教えですね。
ごく当たり前のことなのだけど、当たり前な事を宗教は教えないといけない。と、個人的には思う。
当たり前のことを言わない宗教は、ん?である。

今と昔。

しばし、「何歳ですか?」と真顔で質問される訳ですが…。
顔だと年齢不詳なのかな。

最近、自分がよく見聞きしている音楽。
相変わらずシンセサイザーの音*1は大好きです。
おそらく会場は北九州市スペースワールドの模様。今も残ってるんですかね。実物大のスペースシャトル
演奏はそのスペースシャトル模型(?)の前です。

浅倉大介メインの場合は次の様になります。やっぱりかっこいい。

あと、CHAGE&ASKAはファン歴長いですが、聞き続けてる訳です。
小学生後半からずっと聞いてる気がする。

あと、フォークの名曲といえば、「あみん」なのであります。
シンセサイザーからフォークギターまで。PHPからVHDLまで。これが、私の売りなのかもしれない。

*1:JD-800の音というべきかもしれない

Ethna_Filterを継承したfilterでログを取る

ささやかにメモ。
Ethnaのフィルタクラスでログを取る場合、Ethna_Filterが継承されており、メンバに$loggerってのがいるので、それを使えばよい。
postFilterメソッドの中とかで $this->backend->getLogger() などとうっかりやってしまった。

共振

近所で深夜の道路工事を少し行っている様だが、その振動(騒音?)が振動がかなり絶妙な周波数らしく、私が住むアパートのどこが共振している。
なんとも気分の悪い低い周波数の音が響き渡っている。

…。これ、今夜寝れるのか?

この土日

少しいろいろとあって疲れたので旅に出ます。
連絡が取りにくい可能性があります。ご了承ください。
f:id:hideack:20090404071428j:image

iモード用メールアドレスの仕様の話

以前は@直前のドットや連続したドットを許容し、実際にトラブルの原因となるなどRFC的によろしくない状態だったドコモのiモードメールアドレスだが、4月以降新規取得(変更)するアドレスについてはこれらを許容しないこととなった

そういえば、大学時代、スパム防止のために

  • あえて@マークの前に.(ドット)を入れる
  • 英単語は使わない

というポリシーで友達がメールアドレスを換えたのを横で見ていたのを思い出した。
確か何かのホームページで見て参照したのであった。

PEAR::Cache_Lite_Function

以前も書いたPEARライブラリに登録されているキャッシュ処理のクラスに関数の呼び出し結果をそのままキャッシュできるものも含まれている事に気づいたので使ってみた。
メモリベースのキャッシュ機構がメジャーなのだろうけど、いま仕事で扱っている程度であればディスクキャッシュでも十分ということで。
とある箇所で、操作していると"つっかかる感"があって、その場所を調べていくとDBと連動してごにょごにょしているところであるので導入したが、結構効果があった。
メソッドの呼び出し方を変えるだけなので比較的楽に使えてみんなハッピー。

詳細はPEARのドキュメントを見てもらう事にしてメモがてら、サンプルを書いておく。*1

<?php
require_once('Cache/Lite/Function.php');
class CacheTest{
var $_cacheopts;
function CacheTest(){
$this->_cacheopts = array(
"lifeTime"               => 3600,// cacheの有効時間(秒)
"hashedDirectoryLevel"   => 2,  // cache階層
"debugCacheLiteFunction" => true,// デバッグ出力 (標準出力に "Hit" or "fail"表示)
);
}
function test($param = 0){
$cache  =& new Cache_Lite_Function($this->_cacheopts);
// 自身のメソッド"process"を呼び出す。引数は$param
$result = $cache->call(array(&$this, "process"), $param);
return $result;
}
/**
  * 比較的重い処理 (1度呼び出した結果を保管したい対象の処理)
  * @param $init 
  */
function process($init){
$resp = $init;
for($i=0; $i<5000000; $i++){
$resp++;
}
return $resp;
}
}
$cachetest = new CacheTest();
// 開始時間メモ
$stime = explode(' ', microtime());
$stime = $stime[1] + $stime[0];
print "start = ".$stime."\n";
// 処理実行
$resp = $cachetest->test($argv[1]);
// 終了時間から実行時間算出
$etime = explode(' ', microtime());
$etime = $etime[1] + $etime[0];
$time   = round(($etime - $stime), 4);
printf("%f seconds\n", $time);
printf("CacheTest::test response = %s\n", $resp);
?>

な具合である。
ここでは例として、コマンドライン引数で渡した値を初期値としてそこから500万回インクリメントするという重い処理の結果をキャッシュさせている。
で、これを実行すると1回目はキャッシュが効かないので普通に実行される。

/Users/hideack/tmp% php -q test.php 10
start = 1238689332.75
Cache missed !
1.634000 seconds
CacheTest::test response = 5000010

次にもう一度同じことを実行してみる

/Users/hideack/tmp% php -q test.php 10
start = 1238689377.62
Cache hit !
0.001300 seconds
CacheTest::test response = 5000010

今度はキャッシュから引かれたので実行時間が大幅に短くなっている。
こんな具合。

あぁ、久しぶりに技術的なこと書いた。

*1:もっともサンプルを書いて一番役に立てているのは自分かもしれない...。良く忘れてここを見て振り返る。