tonextone.com/note/

Last-modified: 2006-09-01 (金)

Copyright ©master_at_tonextone.com All rights reserved.

PHP フレームワーク その1

Posted : 2005-08-11 00:00 / Category : [開発日誌]
PHP のフレームワークを作ろうと思う。その名も GENUIN 。
PHP の言語設計上の特長や、 legacy を尊重した、
「オブジェクト指向」ではなく、
「オブジェクト思考」あるいは「オブジェクト嗜好」なフレームワーク。
Perl のオブジェクト指向の実装を参考にしたい。

特徴:

  • クラスを使わない。命名規約や配列や、その他 genuine な概念を駆使する。
    $_CONFs,$_PARAMs,$_MESSAGEs,$_DB_*,$_SQL_*,...
  • register_globals_securely On.
    リクエスト変数へのグローバルアクセスをセキュアに提供。
  • テンプレートエンジンを使わない。PHP で充分。

    $ less hoge.html
    <?function _head($_){?>
    <html>
      <head>
      </head>
      <body>
        foo
        <?o($_['var_head']);?>
        bar
        <?}?>
    
        <?function _loop($_){?>
        foo
        <?o($_['var_loop']);?>
        bar
        <?}?>
    
        <?function _tail($_){?>
        foo
        <?o($_['var_tail']);?>
        bar
      </body>
    </html>
    <?}?>
    <?
    include_once('path/to/config.php')
    include_once($_CONF['path']['to_controller'].'hoge.php')
    ?>
            

    $ less hoge.php
    <?
    
    // process_any();
    
    $_ = $_PARAMs['head'];
    _head($_);
    unset($_);
    
    foreach ($_PARAMs['loop'] as $var)
    {
      $_ = $var;
      _loop($_);
      unset($_);
    }
    
    $_ = $_PARAMs['tail'];
    _tail($_);
    unset($_);
    ?>
            

トラックバック

(1)

ツッコミ

1: master (08/12 10:37)
「プログラマー日記」さんも同じ事を考えているらしい。
http://www.programmers-paradise.com/tdiary/?date=20050801#p01
http://www.programmers-paradise.com/tdiary/?date=20050808#p02
http://www.programmers-paradise.com/tdiary/?date=20050809#p02
http://www.programmers-paradise.com/tdiary/?date=20050809#p03
2: itoh (09/15 00:18)
p0t.jpの人も同じ事書いてた。
http://p0t.jp/mt/archives/2005/08/2_1.html
1行フレームワークAwesomeFrameworkだって。
命名規則っていうのは多かれ少なかれつかいますなー。
3: master (10/30 16:41)
メモ:

ライブラリはなるべく標準的なものを使う。
PEAR::
DB, DB_DataObject,
HTTP_Client, Mail_Mime,
Auth, XML_Serializer, XML_RPC

PECL の filter も気になる。
( http://pecl.php.net/package/filter )
[ このエントリへはツッコミ出来ません ]

JS::Lib その2

Posted : 2005-07-31 00:00 / Category : [開発日誌]
このエントリの続き。
"There and Back Again"にある Ajax ライブラリを、いろいろ試してみた。

このうち、
PHP の関数 func を、JavaScript の関数 x_func にマッピングして、
someObj.onClick = x_func(args,callback_func);
という使い方ができるやつは、これら

この中にある、Sajax を使っている。
それ以外も全部知ってはいたものの xajax は使ったことが無かったので使ってみた。

Sajax との違い:

・DHTML も PHP でやる方針らしい(content replacement)。
>> クライアントサイドの事をサーバサイドの言語でやるのは、逆にメンドウだよ。

・そのための XML をサーバから返すらしい。
例えば、
<update action="assign">
  <target attribute="$sAttribute">$sTarget</target>
  <data><![CDATA[$sData]]></data>
</update>
>> ふーん。でも、JSON のほうが良いな…。

・配列を翻訳してくれるらしい。
>> へぇ。それは便利。
>> でも、PHPオブジェクト⇔JavaScriptオブジェクトの翻訳を、PHP でやってるんでしょ。
>> 俺は、処理が速いほうが良いからこれ使ってるしな…。

という事で、乗り換えには至らず。

Sajax の更新が滞っている事だけが気になる。

ちなみに、ajax-pagesというのも、試してみた。
これは、テンプレートファイルと、データファイルを、動的にロードしてページを作るというモノ。
テンプレートの書式は、いかにも、スクリプト埋め込み型で、すごく分かりやすい。
ここに HTML
<% ここにJavaScript %>
ここに HTML
でも、今のところ、そういう使い方する予定が無いので、保留。

ツッコミ

1: master (07/31 01:34)
次にやるべき事:
外部サービスからの RSS をそのままブラウザに渡して JavaScript で処理してる部分を、
RSS ->(magpieRSS)->(json-php)-> JSON と変換して、ブラウザに返すようにしてみる。
そのほうが、サーバサイドの処理をカマせ易いし。
2: master (08/12 15:28)
結局、
RSS ->(PEAR::XML_Unserializer)->(php-json)-> JSON
にしました。
[ このエントリへはツッコミ出来ません ]

PHP on Cake

Posted : 2005-07-17 00:00 / Category : [開発日誌]
Ruby の Rails, Perl の Catalyst のデモンストレーションムービーを見て感動した。
(動画:Catalyst, Rails)
で、同様の PHP 版フレームワーク、Cakeを試してみた。
まずは、Tutorial にしたがって、これを作ってみた。
まだ、開発途上っぽいが、ザックリ使えたので、好感触。

以下、手順。

DB 作成して、config/database.php で DB 設定。
PostgreSQL でも問題無さそう。

で、いよいよ bake 。
      $ cd /path/to/cake/;
      $ ./scripts/bake.php controller Post;
      $ ./scripts/bake.php model Post;
      $ ./scripts/bake.php view Post/index Post/detail Post/add Post/edit;
これで、必要なファイルが deploy される。
で、各ファイルを Tutorial 通りに編集したのが、 これ

トラックバック

(1)
[ このエントリへはツッコミ出来ません ]

Bayesian filter その2

Posted : 2005-07-02 00:00 / Category : [開発日誌]
先日のエントリの続き。
とりあえず、POPFile の SQLite を .dump してみた。
単語テーブル(words)と、バケツテーブル(buckets)があって、
「どの単語がどのバケツに何回入ったか」が、
リレーションテーブル(matrix)に記録される。
  1. 単語テーブルのレコードの、登録、更新、削除の条件。
  2. リレーションテーブルのレコードの、登録、更新、削除の条件。
  3. リレーションテーブルから分類の尤もらしさを計算。
この辺のアルゴリズムの調査を進めよう。
[ このエントリへはツッコミ出来ません ]

Bayesian filter その1

Posted : 2005-06-22 00:00 / Category : [開発日誌]
ある確率を計算するシステムを、逐次トレーニングすることによって、
その確率の「主観的な」尤もらしさを高めていくという考え方。 (参考)
結構採用されているのが Bayesian filter で、SPAM フィルタなどで実装されている。
Google でも援用されているらしい。

sparQuery でも、そのうち導入しようかと思います。
実装例が少ない。愛用中の POPFile(perl) でも、参考にするか。あるいは bsfilter(ruby) か。
[ このエントリへはツッコミ出来ません ]