院生エンジニアのにっき

  • Change style to Blue
  • Change style to Red
  • Change style to Green
  • Change style to Pink

2011-02-04 Dovecot利用時にinfo@XXX当てのメールが全部特定のユーザに転送されていた

Dovecotとは直接関係ないかもなんですが、メールサーバを立ててinfoメールアカウントを作成、info@XXX(XXXはドメイン名)にメールを送っても全て特定のユーザに対してメールが届いてしまっていました。

原因を調べてみると/etc/aliasesに「info: postmaster」と記述されていて、こいつが原因でinfo→postmaster->rootで、rootの転送先がその特定のユーザだったから、全て同じユーザに転送されているかのようにみえていたようです。

infoの前に「#」を付けて「newaliases」することで無事解決しました。


コメント(0)

2009-02-13 修士論文執筆中・・・・

地名と語の関連度を抽出してみた結果、厳しめの条件下で関連語を抽出して関連度の高い順にソートしてみたところ・・・


  続きを読む

コメント(0)

2009-01-08 phpのsprintf(printf)で%を出力する

便利関数sprintfにてパーセント表記をしたい場合

echo sprintf('%0.2f%', $num);

とすると

Warning: sprintf(): Too few arguments

と出てエラーになってしまいます。

そんな場合は「%」を重ねて記述して

echo sprintf('%0.2f%%', $num);

とすればOK

PHP: sprintf - Manual

コメント(0)

2009-01-04 windowsのコンソール(コマンドプロンプト)でUTF-8を使う方法

ちょっと必要だったんで調べてみたら簡単にありました。

Windowsのcmdでコードページを変更 - グニャラくんのグニャグニャ備忘録@はてな

typeコマンドで文字列変換 - エンジニアの魂


  続きを読む

コメント(0)

2008-12-05 サーバーとしてのPHPとcron処理

ふと疑問に思ったんで。。


なんらかの原因でPHP・プログラムが落ちてしまうような環境を想定して、PHPを長時間動作させたい時、どうすればいいのでしょうか。

結局、「cronで一分ごとに動作確認→動作していなかったら再起動」ってとこで落ち着きそうなんですが、この「動作していなかったら」ってのをどう処理させるのがスマートなのか。


  続きを読む

コメント(0)

2008-12-05 久しぶりに開発環境を一新(Eclipse Ganymede)

Eclipseが不安定・・・というかSubversionがうまく動作しなくなってきたので久しぶりに開発環境を整備してしてみました。

インストールしたEclipseの環境は以下の通り

  • PHPEclipse
  • Sublipse
  • Eclipse日本語化

PHPの開発に必要最低限のもののみ入れています。ちなみにDB操作は軽くて便利なcseを利用しているのでEclipse上で操作はしません。


  続きを読む

コメント(0)

2008-11-14 pr関数(preタグ付きdump関数)をもうちょっと便利に

CakePHPの標準関数のpr($vars)は

  1. function pr($vars) {
  2.   echo '<pre>';
  3.   print_r($vars);
  4.   echo '</pre>';
  5. }

な感じの関数でとても重宝しています。

ただ、pr関数を使いまくっていると「どこで呼び出したっけ?」というのが分からなくなって探す・・・といったことがたまに起きてしまいます。

ってわけでpr関数の呼び出しもとの行数も一緒に出力する新版を書いてみました。


  続きを読む

コメント(0)

2008-11-12 PHPで直接MeCabの結果を利用する

Page2にてMecab Extentionなるものも存在するんですが、こちらなどを参考にしてmorph_analysis関数を作ってみました。

やってる内容は至極簡単。

MeCabプロセスに対して文字列を投げて返ってきた値をパースしているだけ。


  続きを読む

コメント(0)

2008-11-11 レーベンシュタイン距離(編集距離)をPHPで

気分転換にレーベンシュタイン距離をPHPで書いてみた(研究と全く関係ないんだけど・・・)

レーベンシュタイン距離の説明は「レーベンシュタイン距離 - Wikipedia」が詳しい。

要は「文字列Aを文字列Bに変換するためにどれだけの操作が必要か」ということ。

1. kitten
2. sitten (“k”を“s”に置換)
3. sittin (“e”を“i”に置換)
4. sitting (“g”を挿入して終了)

でレーベンシュタイン距離=3だそうです。


実装してからLevens・・・と書いてEclipseのコードインテリジェンスで関数候補を見たら「levenshtein」という関数を発見・・・

標準関数でした(PHP: levenshtein


せっかくなんでテストもしてみた。

  1. function LevenshteinDistance($str1, $str2) {
  2.   $d = array ();
  3.   $len1 = strlen($str1);
  4.   $len2 = strlen($str2);
  5.   for ($i1 = 0; $i1 <= $len1; $i1++) {
  6.     $d[$i1] = array ();
  7.     $d[$i1][0] = $i1;
  8.   }
  9.  
  10.   for ($i2 = 0; $i2 <= $len2; $i2++) {
  11.     $d[0][$i2] = $i2;
  12.   }
  13.  
  14.   for ($i1 = 1; $i1 <= $len1; $i1++) {
  15.     for ($i2 = 1; $i2 <= $len2; $i2++) {
  16.       $cost = ($str1[$i1 - 1] == $str2[$i2 - 1]) ? 0 : 1;
  17.       $d[$i1][$i2] = min(
  18.                 $d[$i1 - 1][$i2    ] + 1, //挿入
  19.                 $d[$i1    ][$i2 - 1] + 1, //削除
  20.                 $d[$i1 - 1][$i2 - 1] + $cost //置換
  21.       );
  22.     }
  23.   }
  24.   return $d[$len1][$len2];
  25. }
  26. $test = array(
  27.   array('abc', 'abc'), //0
  28.   array('kitten', 'sitting'), //3
  29.   array('aaaaa', 'bbbbb'),//5
  30.   array('abc', 'bca'),//
  31.   array('12345', '234'),
  32. );
  33. foreach($test as $row) {
  34.   echo levenshtein($row[0], $row[1]);
  35.   echo ' = ';
  36.   echo LevenshteinDistance($row[0], $row[1]);
  37.   echo '<br/>';
  38. }

PHPはこーゆーときの配列処理とかなんか気持ち悪いなと思う。

コメント(0)

2008-11-11 Cakephp 1.2系でのbakeについて(Windows)

CakePHP1.2系ではbakeの挙動が大幅に変わっていて、一時期それが理由でCakePHP1.2系を使うのをためらっていました。

複数のプロジェクト(標準はappってことでいいんでしょうか?)を入れることが出来るようになったのはいいのですが、CakePHP1.1系と同じように扱うためのまとめを書いておきます。

CakePHP のおいしい食べ方: [1.2]Easy Bake on Windows

にてすでに書かれてはいるんですが、CakePHP1.1系からもっと簡単に乗り換えるために。


  続きを読む

コメント(0)


<< previous
 | next >>