奥多摩BBQ

ちょっと安めに。。意外とうまかった。

中茶屋キャンプ場です。

フリスビーとかいろいろなくしたため捜索活動。
ちょっと安めに。。意外とうまかった。
中茶屋キャンプ場です。
フリスビーとかいろいろなくしたため捜索活動。
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なので問題ないはず。
誤操作でブログ消してしまいました。。
ということで、Googleのキャッシュより復旧。
時系列ごちゃごちゃだけど、あらかた戻しました。
こわやこわや。
とうとうiMacにもFILCOつないでしまいました。
日々日々、
なんらかのWeb Application Framework (WAF)つかっているわけですが、
なんとなくCakePHPかCatalyst使うことが一番多いので、
言語すら違うのに比較した所感を。
まず、それぞれの概要から。
■Catalyst - Perl
PerlのWAF代表格ですね。
http://www.catalystframework.org/
非常に柔軟な特性を持ち、カスタマイズが簡単です。
その名の通り触媒なので、設定というか一緒に使うモジュールの組み合わせで、
ありがちな処理の殆どを吸収してくれます。
専用モジュールがCPANにガスガスあがっているのが素敵
■CakePHP - PHP
PHP版Ruby on railsですね。
ActiveRecordパターンという縛りを設けることで、
コーディング量を極端にへらしてくれます。
ドキュメントの豊富さが際立っている気がしますね。
とにかく楽したいときに最高です。
で、それぞれ仕事・プライベートで使ってますが、
なんとなく、思うところがあったり。
どちらも似たようなWAFなんですが。
一番大きく違うのは、DB関連というかModelの解釈ですかね。
CatalystはModel用ORマッパーが交換可能です。
好きなORマッパーを当て込めます。
なおかつ、ModelクラスごとにORマッパー変えられたりもします。
これがあるから、アプリレベルでのDBシェーディングなんかも表層で気を使わないですむような実装が簡単にできたり。
コアモジュールをガシガシOverrideとかしないでいいです。
CakePHPはオリジナルのORマッパーしか使えません。
でも、そのかわりにそのORマッパーのルールに従う限りめちゃくちゃ簡単です。
コード量アホかってくらい短くすみます。
なおかつなかなか直感的に使えるAPIを持っているので、
個人的にはソース綺麗になるなーなんて思っています。
Catalyst使ってもごちゃごちゃするのは自分のウデのせいですけどね。
Scaffordとか綺麗だしCakeは手抜き大好きプログラマの味方です。
Catalystはなんでも使える魔法の触媒ですが、柔軟すぎてその分コードが少し増えます。
でもCPANにある無数のモジュールを使えるので、
将来的にめんどくさい(自分で実装したくない)処理が求められそうなときは、こっちがいいかなと思います。
あと、R&D的な何するのかよく分からない自分用アプリ書くときはこれ使ってます。
毎回、アプリ作るときにどのWAF使うか悩みます。
先に言語決めろよという気もしますが。
今更だけどRailsとかも一回ちゃんと使ってみたいですね。
最近はもっぱらKohanaなんですが、
CatalystやCakeなどの歴史あるフレームワークは機能いっぱいで便利ですね。
使いどころと使い方しだいということでしょうか。
Twibbon - http://twibbon.com/
のような、Twitterアイコンになんか載せるアプリを作ろうとしてハマった。
何にはまったかというと、
update_profile_image
というTwitterAPI様が全然画像を更新しれくれないのです。
数々の先人がPHPというかPEARモジュールでハマっているようで
http://d.hatena.ne.jp/Arko/20090508/1241790310
PEARモジュールで作り始めましたが、
Services_Twitter使っても
HTTP::Request使っても
HTTP::Request2使っても
うまくいかず。
引っかかってる箇所は同じだと思うんですが、
Content-Typeと指摘しているかたも多いのでそこら辺をいじってみたりもしつつ
http://d.hatena.ne.jp/abyssluke/20090615/1245062610
これみてやっぱCurlで素直にやろうと。
PHPリコンパイルですがこれしかないですか。
で、↑のCurlのサンプルにしたがって実装できましたとさ。
TwitterAPI側のバリデーションがなんだかなという感じですが、
とりあえず実装は可能なんですねと。
Perl使ってたらはまらかったんだと思います。
ただ、PHPという与件のもとでのフィージビリティー確認でした。
Yes we can.
普段はEclipseとKomodoを利用しているんですが、
Perlやっている人たちの集まりに行くとだいたい皆さんVim || Emacsですね。
みんなつかっているということは便利なツールなんだろう
ということでVimを試しました。
Emacsじゃない理由はキーバインディング覚えればお客のサーバーでも使えるから
まずはvimrcに何を書くかを調べてみまして、
とりあえず▽書いてみたらいい感じ。
set autoindent
set tabstop=4
set number
syntax on
set term=builtin_linux
set ttytype=builtin_linux
colorscheme darkblue
set enc=utf-8
set fenc=utf-8
set fencs=iso-2022-jp,euc-jp,cp932
でもってPerlを書いてみたのですが、
Vim7からはコード補完もやってくれるそうですね
便利そうなので入れてみました。
けっこう大変だったけど
http://mig-ration.blogspot.com/2007/05/mac-vim71.html
で試してみました。
高校のころコピーバンドやってまして、
ますます買い足されたスマートフォン達。
ついでにPSP Goも買ったのでディスプレイ上マージ。
Androidについて言えば、
・HT03A
・NexusOne
・HTC Desire
・Xperia
といろいろいじりましたが、個人的にはDesireが一番好きでしたね。
Xperiaも優秀なんですが、私の小さい手には余ります。
ということで、SIMフリーDesireを購入しました。
写真上段真中がHTC直販のDesireで上段左がSoftbankのDesire。
直販の方が箱がゴージャスだった。
Xperiaはなんでか箱がでかかったですね。
Docomoの端末はおしなべて箱がでかい印象あります。
HTC Magicの時も、GoogleDeveloper'sDayで配っていた箱からくらべてずいぶんでかくなっていましたね。
話は変わってPSP Go。
不人気不人気といわれるだけあって、中古が普通のPSPと変わらないくらいの値段まで下がってきていたので衝動買い。
とりあえずバイオハザードとFF7をアーカイブスで買って遊んでます。
PSPもDSも、カセット持ち歩いたりするのが嫌なんですよね。
なくなったりするし。
ということで、PSP Go。
ただ、電池のもちがいまいっちょ。
音楽とかもマージしようかと思ったんですけど、これはiPodのままですね。
DesireにしろPSP Goにしろ、
最近充電ゲーブルがUSBで提供されるの増えてきましたね。
個人的な思いなんですけど、
USBケーブルが短すぎる!!
のですよ。
とくにPSP Goなんてパソコンの前で使うもんじゃないじゃん。
ベッドの上とかでごろごろ使いたいのに、
充電ケーブルが1メートル程度ってそれはないですよ。
いや、もっと短いか。
300円くらい高くなってもいいから考慮してもらいたいものです。