2009-01-01から1年間の記事一覧
Webアプリを構築するためにフレームワークや既存CMSを使うケースがありますが、それぞれに適したアーキテクチャがあります。通常、小さなシステムでは一つのアーキテクチャで貫徹できますが、その分、他のアーキテクチャを組み入れる余地が少なく、大型のフ…
エレベータの要求仕様 第2回で紹介したように、分科会では一度モデリングに行き詰まり、概念モデルからやり直しを行いました。従って以下の要求仕様を参照すると分かりますが、「キャビンが呼び出され」→「移動階に移動して」→「ドアが開いて降りる」といっ…
Viewでの処理結果をシームレスにキャッシュするため、レスポンスオブジェクトに追加するデータを文字列データではなく、__toString可能なオブジェクトにしてみました。PHP的には文字列で格納してゴリゴリ追加していくというのも悪くはないのですが、個人的に…
このへんの続き。 http://d.hatena.ne.jp/noopable/20090201/1233445916 http://d.hatena.ne.jp/noopable/20090201/1233528374 これを実現したいとする。 処理の流れを再確認 ルーティング ページクラス(ページコントローラーを起動) どんなページにするの…
と言われても仕方がないと、404の人が書いてらっしゃいます。 実を言うと、私も正規表現は苦手です。正直言って、いろんな勘違いをそのまま公開している口なので、もうそこは「ごめんなさい」としか言えません。*1 個人差のある問題なのに、PHPerはと言われ…
C++などは()をオーバーロードして関数オブジェクトを作るらしいですが、PHPでも配列記法やアロー演算子のオーバーロードが可能なので、似たような関数オブジェクトは作れそうです。 http://d.hatena.ne.jp/noopable/20090316/1237166080 ここでやった手法は…
ちょっとでもフレームワークの流儀や対象範囲から外れたことをやろうとすると、 とてつもなく手間がかかるか、全く出来ないかのどちらかで、 適切でないフレームワークを使うくらいなら、個別にスクラッチで書いた方がよっぽどマシという状況が起こりうる。 …
フレームワークの性能を向上させる手掛かりとして、キャッシュについて考えてみます。 フレームワークによるパフォーマンス低下 フレームワークを利用する場合、パフォーマンスが犠牲になることはよくあります。フレームワークを設計する側からすると抽象化…
PHPで関数オブジェクトを作ってみました。Webフレームワークでのキャッシュコントロールを正確に行うのが目的なのですが、作ってみると関数型言語との手法に違いがあることがわかりました。 関数オブジェクトAbstract*1 関数型の手法を几帳面にエミュレート…
イテレーターって、要素をunsetしたら無効になるもんだと思ってましたが、unsetしても動作するのが普通なんでしょうか。Zend_Configがunsetしてもnextが有効になるような実装に変わるようです。
Zend_View周辺(ViewRenderer、Zend_Layout、Zend_Controller_Action)の仕様にもやっとしてます。 ViewRenderer http://d.hatena.ne.jp/noopable/20090211/1234300771 ここでも書きましたが、ViewRendererを有効にすると、基本的にViewRendererのビューオブジ…
フロントコントローラーに安全かつ柔軟な設定レジストリを作ってみました。 上書き禁止なfrontControllerのZend_Config フロントコントローラーを拡張して、ReadOnlyなZend_Configオブジェクトを持たせます。 たとえば、フロントコントローラーで _config; }…
Zend FrameworkベースでZend Frameworkに積極的なフィードバックを行っているZym Framework。そのzym.appがZend_Applicationとしてリリース準備されているようです。 zymのApplicationについては、下記のドキュメントを流し読みしてみました。 http://www.zy…
アクションコントローラーの再利用性を考慮するとViewRendererはなるべく使いたい。でも便利なものほど内部はブラックボックスになっていて微妙にわかりにくいことがあるのでメモ。 検討課題 アクションコントローラーを_forwardまたはActionStack等で使いま…
ちょうど、7日頃からxampp環境からZend Server環境への移行テストをしていたんですが、10日にも関連テストをしこしこやってました。なぜかlocalhostのZend Serverが応答しなくなり、しばらく悩みましたが・・・hostsの改竄に気づいてビビりました・・・ い…
http://d.hatena.ne.jp/noopable/20090308/1236483530 http://d.hatena.ne.jp/noopable/20090309/1236570981 まとめると、Zend ServerでphpUnitを使うときは Zend Extensionとxdebugは共用できない。(vistaの場合かつ標準のバイナリ) Zend Extensionを使う…
フレームワークはカップリングを減らし、コンポーネントのメンテナンス性と品質の向上を考えるべきだと思う。 アプリケーションは疎結合なフレームワークを「結合」させて組み上げます。結合仕様がアプリケーションの骨組みになり、目的に合致したアプリケー…
http://d.hatena.ne.jp/noopable/20090308/1236483530 でxdebugのロードが確認できたので、設定を確認してやりなおしてみました。 php.iniでZendExtensionManager.dllのロードを抑止した時の動作ですが、ローカルユーザー(管理権限あり)で通常通り起動する…
いままで、テストにはSimpleTestを使っていました。 CakePHPやethnaだとSimpleTestを使っていると思います。 ethna http://ethna.jp/ethna-document-dev_guide-misc-unittest.html CakePHP http://bakery.cakephp.org/articles/view/testing-models-with-cak…
Zend Studio for Eclipseを使っている場合、ローカルにインストールしたZend Serverとの間でデバッグセッションを開くために必要は設定はない。 インストールしたら、そのまんま使えるっぽい。Zend Studio 4の時は結構いろいろ設定したと思うが、ローカルで…
Zend ServerをローカルSVNリポジトリのアクセス用に使う時は、Subversionに添付されてくるmod_authz_svn.soとmod_dav_svn.soをC:\Program Files\Zend\Apache2\modulesにコピーする。実際には、コピーせずにインクルードするディレクトリを指定するだけでもい…
Zend Serverがβリリースされているので、ローカルで試してみることにした。xamppと比べてみるのもいいかなと。 ダウンロードとライセンスの取得 http://www.zend.com/products/server/downloads ここからトライアル版とトライアルライセンスを取得する。※ラ…
Windows 7のリリース間近で影の薄いVISTAでの話。VISTA使いはUACオンが前提として。 ZendServer環境でpearを使うには C:\Program Files\Zend\ZendServer\bin\go-pear.bat を起動すればいいんだけど、UACオンのばあいはそのまま起動してもダメ。管理者で実行…
ZendFrameworkでは、リクエストオブジェクトにはリクエストが格納されており、これの一部をルーターに投入することで、ディスパッチすべき情報をリクエストオブジェクトに格納させてディスパッチする。 逆に考えてみる。ルーターおよびルートは単なるツール…
部分一致ルールと再帰ルーターを実装したので、もう一つ、スタティックなルートを集約して扱うルートを作成した。 主にCMSなどでサイト内のセグメントを分割したり、独立ページを自由に配置したいときなどに利用する。 Zend_Controllrer_Router_Route_Static…
オレオレ用の公開リポジトリを作った。まだ、wikiに1ページ追加しただけ。 http://code.google.com/p/zflower/ SVNの連携のうまい手は? 通常だと、社内ローカルSVNで作業するんだけど、公開用にアップするときはどうするのが正解なんだろう。 MercurialやGI…
ZendのMVCで単純にデフォルトのモジュールルートを使っている分には特に困ることはないのだが、CMSライクにURLをフルカスタマイズして利用する場合、逆引きの使い方にやや不安が・・・ リンク先はどのルートに格納されている? たとえば、あるページから別の…
simpleXMLでShift_JISの日本語タグも扱えるらしい、とのことで。 シフトJISでマルチバイトなタグで構成されたXMLファイルがsimplexmlで扱えるのか試してみた。結果からいうと「すごい!」「使える!」。 http://php.tekmemo.net/?p=967 DOMでも使えるか確認…
http://d.hatena.ne.jp/noopable/20090215/1234653729 ここでも書いたが、Zend_Controller_Router_Rewriteの実装は、すべてのルートをグローバル的に保存し、順にチェックする。 それでもいいが、ルーティングのルールを組み合わせたり、遅延登録をさせたい…
前記事で、Zend_Registryの多用には要注意とだけ書いて、自分なりの使い方を書いてなかったのでメモ http://d.hatena.ne.jp/noopable/20090228/1235784269 とりあえず、基本パターンのおさらい 実行時設定はフロントコントローラーに登録する http://d.haten…