
Dovecotとは直接関係ないかもなんですが、メールサーバを立ててinfoメールアカウントを作成、info@XXX(XXXはドメイン名)にメールを送っても全て特定のユーザに対してメールが届いてしまっていました。
原因を調べてみると/etc/aliasesに「info: postmaster」と記述されていて、こいつが原因でinfo→postmaster->rootで、rootの転送先がその特定のユーザだったから、全て同じユーザに転送されているかのようにみえていたようです。
infoの前に「#」を付けて「newaliases」することで無事解決しました。
便利関数sprintfにてパーセント表記をしたい場合
とすると
と出てエラーになってしまいます。
そんな場合は「%」を重ねて記述して
とすればOK
ちょっと必要だったんで調べてみたら簡単にありました。
ふと疑問に思ったんで。。
なんらかの原因でPHP・プログラムが落ちてしまうような環境を想定して、PHPを長時間動作させたい時、どうすればいいのでしょうか。
結局、「cronで一分ごとに動作確認→動作していなかったら再起動」ってとこで落ち着きそうなんですが、この「動作していなかったら」ってのをどう処理させるのがスマートなのか。
Eclipseが不安定・・・というかSubversionがうまく動作しなくなってきたので久しぶりに開発環境を整備してしてみました。
インストールしたEclipseの環境は以下の通り
PHPの開発に必要最低限のもののみ入れています。ちなみにDB操作は軽くて便利なcseを利用しているのでEclipse上で操作はしません。
CakePHPの標準関数のpr($vars)は
な感じの関数でとても重宝しています。
ただ、pr関数を使いまくっていると「どこで呼び出したっけ?」というのが分からなくなって探す・・・といったことがたまに起きてしまいます。
ってわけでpr関数の呼び出しもとの行数も一緒に出力する新版を書いてみました。
Page2にてMecab Extentionなるものも存在するんですが、こちらなどを参考にしてmorph_analysis関数を作ってみました。
やってる内容は至極簡単。
MeCabプロセスに対して文字列を投げて返ってきた値をパースしているだけ。
気分転換にレーベンシュタイン距離をPHPで書いてみた(研究と全く関係ないんだけど・・・)
レーベンシュタイン距離の説明は「レーベンシュタイン距離 - Wikipedia」が詳しい。
要は「文字列Aを文字列Bに変換するためにどれだけの操作が必要か」ということ。
1. kitten
2. sitten (“k”を“s”に置換)
3. sittin (“e”を“i”に置換)
4. sitting (“g”を挿入して終了)
でレーベンシュタイン距離=3だそうです。
実装してからLevens・・・と書いてEclipseのコードインテリジェンスで関数候補を見たら「levenshtein」という関数を発見・・・
標準関数でした(PHP: levenshtein)
せっかくなんでテストもしてみた。
PHPはこーゆーときの配列処理とかなんか気持ち悪いなと思う。
CakePHP1.2系ではbakeの挙動が大幅に変わっていて、一時期それが理由でCakePHP1.2系を使うのをためらっていました。
複数のプロジェクト(標準はappってことでいいんでしょうか?)を入れることが出来るようになったのはいいのですが、CakePHP1.1系と同じように扱うためのまとめを書いておきます。
CakePHP のおいしい食べ方: [1.2]Easy Bake on Windows
にてすでに書かれてはいるんですが、CakePHP1.1系からもっと簡単に乗り換えるために。