2008/3/30 日曜日

PHPでmixinsっぽいこととか

Filed under: 技術メモ — dev0000 @ 3:42:22 このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをBuzzurl(バザール)に追加

Ruby-style mixins in PHP
へぇー。

別にこういう形でもよさげだけどどうなんだろ。
確か、MDB2のload_module とか CakePHPでも似たような箇所がある気がする。
(ってかそのへんを参考にした)

個人的にも最近この手のやりかたを複数のテーブルクラス(Model)に同じような機能を持たせたい・・・例えば、createdという作成日時フィールドに対し、年ごと、月ごとなどで検索する機能とか・・・場合に利用してたりしますよ。

PHP:
  1. <?php
  2. class Test {
  3.     var $name;
  4.     var $mixins = array();
  5.     function __call($func, $args) {
  6.         foreach ($this->mixins as $row) {
  7.             if (method_exists($row, $func)) {
  8.                 return call_user_func_array(array($row,$func), $args);
  9.             }
  10.         }
  11.     }
  12.     function mixin($obj) {
  13.         $obj->o = $this;
  14.         $this->mixins[] = $obj;
  15.     }
  16. }
  17.  
  18. class Auau {
  19.     var $o;
  20.     function hello() {
  21.         $o = $this->o;
  22.         echo "hello,{$o->name}\n";
  23.     }
  24.     function goodby() {
  25.         $o = $this->o;
  26.         echo "goodby, {$o->name}\n";
  27.     }
  28. }
  29.  
  30. $test = new Test();
  31. $test->name = 'Taro';
  32. $test->mixin(new Auau());
  33. $test->hello();
  34. $test->goodby();

なんかデザパタにありそうだな、こういうの。
ともかく、メソッドでぼつぼつ追加するより、クラス(インスタンス)単位でごっそり機能追加ができたほうがラクそうな気がするんだが。

auのメール配信って

Filed under: 技術メモ — dev0000 @ 2:19:54 このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをBuzzurl(バザール)に追加

実際に業務で携わるまで分からなかったのだけど、auのメール配信って業者泣かせなのかね。
なにせエラーメールも大して戻ってこない状況ですぐにアクセス拒否されるし、一度拒否くらったらしばらくそのIPからはメールが送れないらしい。
そのルールが他のキャリアに比較すると結構厳しいとか厳しくないとか。

ただ、思ったのだが、もし100通に5通(5%)エラーがあったらアクセス拒否とかそういうルールだとしたら、
1000通送りたいのであれば、24000通分ちゃんと届くものを準備して混ぜて配信すれば(ひとつのアカウントでいいのかも)、
その1000通例え全て不達だとしてもアクセス拒否はされないんじゃないの?とも思ったけど、そんなうまいこといくわけないか。

携帯のテーブルタグ

Filed under: 技術メモ — dev0000 @ 2:11:14 このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをBuzzurl(バザール)に追加

i-modeとか携帯のHTMLのテーブルタグって比較的、最近の仕様なのね。。。

古い機種でも違和感があまりないように対応策。

HTML:
  1. <tr><td>AAA</td><td>BBB</td><td>CCC<br></td></tr>
  2. <tr><td>aaa</td><td>bbb</td><td>ddd<br></td></tr>
  3. </table>

こうすれば最新の機種ではテーブルになるし、古い機種でもちゃんと改行するので見た目の違和感がなくなるはず・・・かな。

HTML convert time: 0.602 sec. Powered by WordPress ME