2009-03-01から1ヶ月間の記事一覧
Zend_Cacheのバックエンドmemcachedはとても便利ですね。請負で常駐で入って昨年3月にリリースされたサービスでも使いました。設計からリリースまでほとんどの作業をこなしたのですが、そこでは、会社の方針でPHPセッションは使用禁止*1、スケール目的にフ…
存在しないコントローラーへのリクエストをテストしていたのですが、なぜかエラーコントローラーからのレスポンスが得られなくなっていました。例外が投げられることもなく、画面が更新されないという現象に悩まされました。 同じURLをZend Debuggerに通して…
リクエストに対するフィルタやバリデーションを実施するのに、たとえばZend_Formを使っている分にはZend_Formに設定するフィルタやバリデーションを使えるからよいのですが、それ以外のデータについてはどうでしょうか。 Zend Frameworkでは、リクエストのバ…
成功と失敗 失敗プロジェクトに参加すると「そこは無理筋だったなぁ」とか「ここはあぁすればよかった」とかいう反省が生まれてきます。フリーのエンジニアとしては、サービスの要件定義部分から関与できるケースは少ないので、デスマーチな状況に入ってから…
ZendFrameworkのファイルをバックエンドとしたキャッシュは他のコンポーネントや拡張を必要としないのでお手軽に実施できます。 ただ、キャッシュエントリーが多くなるとキャッシュのクリアーなどで若干問題が発生するかもしれません。 複合的な要因で発生す…
nullを返さないためにgetterで初期化するのはありだけど、初期化するためにgetterを呼ぶのは違う気がする。
既存CMSで構築されたシステムを移植する作業中なのですが、急ぎ負荷問題だけ解消しておきたいサイトがあったので先行してキャッシュだけ導入しておきました。 Zend_Cacheのページキャッシュが適用できるようなサイトならこの作業は数分で済みます。オプショ…
simplexml_load_fileで、ちょっとん?だったのでメモ。ZFのissueに上がっていたのですが、今は見失ってしまいました・・クローズしたのかもしれない。 ほぼ同じ構造のドキュメントですがZend_Config化すると$config->files->file->id等で値を取得しようとし…
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 ここからトライアル版とトライアルライセンスを取得する。※ラ…