2 posts categorized "ウェブ・技術"

2010/11/22

開発メモ:slim3 + mixi app

makeRequest の検証

servlet filterにて実施する。
具体的には↓のライブラリを利用 

http://code.google.com/p/opensocial-oauth-filter/

 

slim3での共通処理

Navigator Controller#setUp();
をoverrideしたベースクラスを用意

遷移(redirect etc)を伴う共通処理はservlet filterで行いなされ by @higayasuo とのこと。
http://d.hatena.ne.jp/coolstyle/20090810/1249906393

続く。 

 

setUpで何をするか。というとこですが、
PHP + Kohanaで作ってたときはここで

  • opensocial_viewer_id
  • opensocial_app_id
  • userエンティティ

をセットしていました。

同じでいいかなと。

参考
http://d.hatena.ne.jp/aki-rs/20100513/1273726150 

2010/10/19

KohanaのORMについて徒然

http://gist.github.com/632600

KohanaオリジナルのORMはとってもシンプル。
シンプルすぎてそのまま使うと危険なほど。


いくつか実運用時に気になった点を修正したORMを上げてみました。


1) Column list

テーブル定義を動的にとるのがデフォルトとされています。
これは、Cakeとかでもそうだしまぁ問題ないですね。
ただ、なぜかコレがキャッシュされません。

SQL異常に多いなーと思って中見たら、
毎回show columns クエリー飛ばしているじゃありませんか。
ということでファイルに1日キャッシュ。

alterしたりしたあとはcacheディレクトリ削除すればよし。

2)Has many

デフォルトは、
$user->child->find_all();
のようにもう一回クエリを飛ばしなさいよ!ってことらしい。

Joinして絞り込みたい時もあるでしょうが。使いようだと思います。

なのでwith()を拡張して$user->with('child')でLeft joinさせます。
あまり負荷を考えるとよろしい作法ではないですが、
使いどころ次第かと思います。

3) 透過キャッシュ

せっかくrowオブジェクトを持っているのだから
レコード更新時にキャッシュ更新したり、
参照時にキャッシュからとったりは透過的にできるでしょう。

findはPKで参照している時しか対応しづらかったのでそこまでですが、
アプリ作る際に意識していればこれであらかたキャッシュは回せるかと思います。

save_with_cacheでselectしなおしているのがちょっとダサいが、
たいていの更新はもとのrow objectがloadedなので問題ないはず。