2009-02-01から1ヶ月間の記事一覧
MLでの話を斜め読みしていると、パラメーターの引き渡しにZend_Registryを使うっていうアドバイスが乱発されているような気がする。 確かに、global変数にほいほい入れてしまうよりはマシなんだけど。そうは言っても、≒グローバルなZend_Registryを多用する…
どうも、そこはcompositeパターンでしょってところで微妙なaggregateになってるともろもろ苦しい。インターフェースが似通っているのに肝心なところで食い違いがあって、拡張実装がバッティングする。なんか、うーん・・・ いや、拡張するなってことなのかも…
fizzbuzzの話が何年か前に流行した時には、1linerでかっこよくってのが中心だったような気がする。マイナーな言語で書くっていうのもあった。 ここでは、冗長な言語 PHPで、肥満コードwを書いてみた。
某所でグループ分けのクイズが出ていたので反応してみた。 2人以上のn人を3人グループと2人グループに分け、それぞれのグループ数を出すにはどうしたら良いですか? なるべく3人グループが多くできるようにし、余りが出ないようにします。分類できないケース…
DOMDocumentを使うのにCSSセレクタが使えるというので、Server Side Dom Scriptingに使ってみた。 処理の流れとしては、 XMLもしくはHTMLの文字列 をZend_Dom_Queryにセットする。 CSSセレクタで検索して結果を取得する。 結果はZend_Dom_Query_Resultオブジ…
http://d.hatena.ne.jp/noopable/20090224/1235429939 昨日、プラグインローダーでモデルをロードするっていう話を書いたばかりだけれど、MLで、ZF1.8に入るのか入らないのか、Zend_Application_Module_Autoloaderの話題が出ていた。 これを使うと getModel(…
モデルをロードする一番てっとり速い方法は、直接require_onceする方法かもしれない。 しかし、コントローラーを跨いだ処理だったり、コントローラーやビューを抽象化しながらモデルを扱いたい場合、個別に検索パスをハードコーディングする方法はできれば避…
オープンソースのCMSやフレームワークもいろいろあるけれど、それを業務ニーズにマッチさせようとすると何かと拡張が必要になる。 CMSの変更は黒魔術的 その時、それらのシステムが用意した拡張ポイント、プラグインやらコンポーネントやらで回避的に目的…
一つのモジュールを複製して使いたいというニーズがあったので、エイリアスディレクトリにディスパッチできる機能を作ってみた。モジュールをコピペしたりsymlinkしたりするのではなく、たとえばビュースクリプトの一部だけ上書きするような使い方を可能にす…
ちょっとわかりにくいところがあったのでメモ Controller_FrontのdispatchからController_Dispatcher_Standardのdispatchが呼ばれる。クラスのロードはloadClassなのだが、その際、_curModuleがセット済みであることが必要になる。_curModuleと_curDirectory…
PHPでこんなことをやるのは邪道かもしれないが、オレオレFWの設計指針には関数型ライクな考え方を盛り込みたい。成果物の評価法は開発工数と機能性に偏りがちだけれども、自前のサービスに利用する場合なら、内面的なクオリティを高めておくことは意味がある…
http://www.yiiframework.com/doc/blog/ を読んだ ポートレット このチュートリアルででてくるポートレットだが、ブログのサイドカラム等に表示する、タグクラウドやログインメニューその他、システムによってはウィジェットと読んだりしているパーツ群のこ…
http://d.hatena.ne.jp/noopable/20090212/1234388931 ここで書いた、コントローラー間のメッセージキューだが、Zend_Queueがincubatorに入っているので、少し意識して改造した方がいいかもしれないと思った。 Zend_Queueを読んだ Zend_QueueはアマゾンのSQS…
実はこれ http://framework.zend.com/community/contribute 企業でも近頃いろんなオープンソースを扱うようになってきたけれど、納品物にOSSを含む時、ライセンスの問題を本当にクリーンにしたかったらこういう手だろうなぁっていう。たとえば、このブログで…
大概のフレームワークにはcacheコンポーネントがある。 効果的に導入できればパフォーマンスはかなり改善される。しかし、キャッシュのベストプラクティスはアプリケーション毎、対象にしているクライアントによって異なる。一般に、キャッシュを効果的に利…
現在のルーターの仕様は、ルートをハッシュ配列に入れて、順に一致をチェックしながら決定する仕組み。あらゆるルートは検索を開始する前に登録するのが基本。URLのassemble時に名前指定でルートを特定してURLに変換するため、名前付きで登録されていないル…
ActionStackとViewRendererとZend_Layoutを組み合わせると、ページ構成を決定するコントローラーから任意のコントローラー経由で収集したコンテンツをレイアウトの各セグメントで利用できるようになる。 たとえば、メニューに投入するコンテンツは$this->lay…
http://framework.zend.com/wiki/display/ZFDEV/Zend_Controller+2.0#Zend_Controller2.0-IntegratethePageControllerpattern Zend_Controllerのロードマップにページコントローラーパターンがある。 # wikiが古いだけで、ページコントローラーパターンって…
あるアクションコントローラーから、複数の別のコントローラーに情報を伝達しながら処理を渡したいというニーズがあったので、既存の転送とは別にメッセージキューを利用して計画的な処理チェーンを作成できるようにしてみました。 このアイデアは、Presenta…
View関連 ViewRendererを使っていると、特別な処理をしないかぎり、どのアクションコントローラーでも同じviewインスタンスを使用する。ViewRendererのinitViewの最後の処理でセットされている。 Viewに対して参照でモデルを投入する際は、コントローラー間…
フレームワークの機能では素直に実現できない要件があるとき、 バッドノウハウ的に回避方法を編み出して実装する。 フレームワークをオーバーラップして要件にマッチするアーキテクチャを持ち込む。 希望としては、より少ないカスタマイズでありながら、バッ…
Presentation-Abstract-ControllerとModel-View-Controllerについてさらっと言及 MVCアーキテクチャはある程度の規模になると限界が訪れる。 http://c2.com/cgi/wiki?RecursiveModelViewController http://d.hatena.ne.jp/noopable/20090127/1233014697 この…
http://d.hatena.ne.jp/noopable/20090207/1233957428 これの続きで 要件 コントローラーの出力内容についてはViewRendererで作成 Zend_DojoのcontentPaneでラップ、その後タブコンテナでラップ レイアウトにはdojoソースを出せるものを使用 以上の要件を ht…
dojoのレイアウト機能を利用する場合、レイアウトの最小単位をcontentPaneとし、tabContainerやaccordionContainerなどのレイアウト用コンテナーに格納する。 フレームワーク的にはZend_DojoのcontentPaneでコンテンツを包むことになる。 ただし、Ajaxで動的…
Zend_View_Filterというのは、Zend_View_Abstract内の記述。実際には、プラグインパスを与えてる際のクラスプレフィックスとしてZend_View_Filter_がデフォルトになっているだけで、Zend_Viewのディレクトリにはフィルターは登録されていない。(いずれ、登…
アクションコントローラーの保存を多階層化して、多数のコントローラーを整理できるようにした。 Zend_Controller_Dispatcher_Standardのコントローラー名解決でサブディレクトリ仕様にしてみた。 Zend_Controller_Dispatcher_Standardを継承したクラスを作…
アクションコントローラーを量産すると管理が難しくなるので、ネストされた子アクションを呼ぶ形に構造化しようとアクションコントローラーと連動して作用させるサブコントローラーで実装したシステムがあった。 まぁ、結構ガシっと組んであったので、もし代…
「表層系のページ構成部分と、オブジェクトモデルの処理系を区分したい。」 http://d.hatena.ne.jp/noopable/20090201/1233445916 これを実現したいとする。 コントローラーを識別するのにどういう方法がいいのかを検討してみた。 モジュラーディレクトリ構…
個人的にはdojoの指定はコントローラーの基底にこんな感じで作ってある view); $this->view->dojo()->setLocalPath('/externals/dojo/dojo/dojo.js') ->registerModulePath('flower', '../../flower') ->requireModule('flower.Tools') //->requireModule('d…
Zend_Dojoを使ったレイアウトをこなすには、ViewRendererがビュースクリプトをレンダリングした後、かつレイアウトスクリプトでヘッダを吐く前に、Dojoベースのレイアウトはすべて準備しておく必要があり、それを解決する方法は・・・ってことで。この解決を…