2005-01-01から1年間の記事一覧

FrontControllerパターンのURI設計

FrontControllerパターンを使う FrontControllerのファイル名を必ずURIに含まなくてはならない 例えば、/index.php?action=hogeとか 格好悪いので対策を考える PATH_INFOを使う /index/action/hogeとか、/index/hogeにできる ただし、ファイル名の代替文字列…

Smarty-Lightで気になるところ

assignできるのは文字列または配列のみ オブジェクト/クラスをassignできない スピード優先のためサポートされていない模様 PHP4のクラスが重いため DTOのようなオブジェクトは使用不可能 連想配列を使う 多次元配列を使う テンプレートリソースを使用でき…

コード中のコメント作法

コード中にコメントを書く 当たり前のこと 前にいた会社の新人研修でCOBOLを勉強したとき、執拗に書けといわれた 今でもきちんと書くほうだと思う、仕事ではJavadocもかなり書く そういえば自分用のライブラリでもJavadocすごく書いてた 最近、過剰なコメン…

思考の過程の表現方法

だらだらと文章で書くよりも、箇条書きで簡潔に できるだけ短く 頭の中の整理 アウトライン化することで構造的に把握できる 実際の方法は? PCの場合はプレーンなテキストファイル 構造はtabを用いた字下げで表現(自分ルール) テキストならgrepなどの検索…

テンプレートエンジン選択の悩み

Smarty(http://smarty.php.net/) 利点 大勢の人が使っているので情報が豊富 使ったことがある(手馴れている) 欠点 ソースサイズが大きめ 動作がすこし遅い(PHPのネイティブ記述に比べて) Smarty-Light(http://www.paullockaby.com/projects/smarty-li…

Front Controllerパターン

デザインパターンでいうと、MoonyはFront Controllerパターンになるのだろう。PHPではよく見かける手法である。リクエストを1つのスクリプトで受け取って、そこからコントローラクラスを呼び出すような仕組みだ。ただし、そのままだとURIがhoge.php?action=h…

クラス図

頭の整理のためにクラス図を描いてみた。ツールはJude。本来Java用なんだろうけど、UMLのスケッチにはPHPでも十分使える。黄色の部分がMoony側で用意される部分、水色の部分がSmarty-Lightのtemplateクラス、緑色の部分が実際に実装しなければいけない部分。…

Viewクラス

Controllerクラス内でインスタンス生成され、そのインスタンスはActionクラスのクラス変数として保持されます。テンプレート処理に関してはSmarty-Lightを使用します。 class View { var $_template; var $_items; var $_actionName; function View($actionN…

リクエストパスと起動するAction

以下のようにアクションを起動させる。ホームディレクトリへのアクセスがあった場合は無条件にHomeActionが起動するものとする。該当するクラスがなかった場合、Moony側で用意したForwardActionクラスが起動。単純なフォワード処理を行う。 リクエストパス …

配列型の戻り値

今携わっているプロジェクトでの思考の経過。 Strutsベースのフレームワークを作った DAOの検索メソッドの戻り値をjava.util.Listに統一した 内部でCommons DbUtilsのBeanListHandlerを使用 検索結果が0件の場合はnullを返すようにしたが、ループさせるとき…

Smarty-Light使用例

PHP

Smarty-Lightを使ってみた。とても簡単。付属するチュートリアルを見れば大体わかるが、テンプレートの記述方法がSmartyと若干違う。Smartyの場合は{ ... }で置き換える部分を記述するのだが、Smarty-Lightの場合はと記述する。ちょっとASPライクな書き方か…

テンプレート部分

MVCのViewにあたる部分はSmartyでテンプレート化しようと思っていたのだけれど、どうにも動作が遅いしソースサイズも大きいので躊躇する。できるだけ追加インストールが不要な形にしたいので、PEARのライブラリは使いたくない(HTML_Template_Flexyとか)。…

JSON変換クラス

仕事で、Commons CollectionsのMultiKeyをキーにしたMapビューをJSON形式の文字列表現に変換するクラスを書いている。格納されているデータは3階層になっていて、その上に階層ごとに名称が関連付けられている。例えば以下のようなデータを変換する: id: 1, …

フレームワークの自作

PHP

http://d.hatena.ne.jp/katase_n/20051030#1130641777 フレームワークを作るためのフレームワークってのもいいかもなぁ。 というよりフレームワークを作るためのライブラリ集か。 単独でも使えるしいくつか組み合わせるとフレームワークになる、みたいな。 …

きっかけと目的

Moonyを作ろうと思ったきっかけは、自分のサイト(http://catwalker.jp/)をPHPで構築していて、定型的な処理をいちいち記述するのが面倒になったからである。もちろん、既存のフレームワーク(Mojaviなど)を利用することも考えたが、実装が重装備過ぎるの…

俺様フレームワーク

PHP

似たようなことをやろうとしている人を発見!→id:pateoこちらは通常のWebサイト作成用の軽量フレームワークなので、方向性は違うかも。そもそもデータベースを前提としないつもりだし。まあ、お互いにのんびり行きましょう。

開発環境

一応メモ。いろいろ最新版でないものもあるし、Windows環境しか用意してないけど。 Windows XP Professional SP2 Apache 2.0.54 PHP 4.4.0 PEAR::DBとかPEARライブラリもいろいろ Eclipse 3.1.1 PHPeclipse 1.1.6 MySQL 4.0.24

Requestクラス

こんな感じ。 # /moony/core/Request.class.php class Request { var _parameters; function Request() { $this->_store(); } function getParameter($name, $default = NULL) { if (!isset($this->_parameters[$name])) { return $default; } return $this-…

Sessionクラス

とりあえず、セッションに簡単にアクセスするためにSessionクラスを作ってみる。いちいち$_SESSIONの中身をいじるのが面倒なので。 # /moony/core/Session.class.php class Session { function set($key, $value) { $_SESSION[$key] = $value; } function ge…

設定ファイルの書式・その2

(だらだらと考えながら書くので読みづらいですが。)設定ファイルについて書いたけれど、できるだけ単純な構造のほうがいいと思う。その上で、操作する言語にとって扱いやすい形式を選べばいい。今回はPHPだから、iniファイルはそのまま使える(parse_ini_f…

設定ファイルの書式

よくよく考えたら、規約で設定ファイルの代替とするつもりなので、設定ファイルに書くことってそんなにないはず。だとすれば、わざわざSpyc使ってまでYAMLを導入するよりも、単純なiniファイルでいいような気がしてきた。それならばparse_ini_file関数を単純…

Commons Validator

UrlValidator#isValid(String)にバグがあるみたい。確認したのはバージョン1.1.4。例えば、「http://example.com/」がエラーとして扱われる。どうやら「http://example.com/index.html」のような文字列でないとだめな模様。ちなみに、最新のNightly版では直…

mod_rewriteの設定

.htaccessは以下のような感じかな。渡されたパラメータ"action"の内容をdispatcher.phpで解析して、actionNameを組み立ててControllerに渡すイメージ。 DirectoryIndex dispatcher.php RewriteEngine on RewriteRule ^index.(html|htm|php)$ dispatcher.php?…

ディレクトリ構成

Moonyを使ってサイト構築するとしたら、ディレクトリ構成はこんな感じか。(<>で囲まれているのはディレクトリ) HogeAction.class.php (extends Action) ... ForwardAction.class.php (extends Action) config.yml (YAML format, paths settings) Action.cl…

軽量フレームワーク

PHPでフレームワークと言うと、MojaviとかMapleとかEthnaになるのかな。どれも開発には向いているけど、例えば個人サイトのバックグラウンドで動作させるにはちょっと機能過多。データベースなんて使わないかもしれないし(ぼくはストレージ代わりに使うけど…

メモリ追加

自宅で使っているLet's note W2Aにメモリを足しました。今まで512MBだったのを、768MBに。ずいぶんメモリの値段も下がってきてたしね。すこし快適になったような。Web開発とかでApacheとMySQLを動かすとすこし違うかな。あと、Eclipseとか。

とりあえず(でも結構本気)

はてな入りたい!Perlは勉強しなきゃだけど。それにしてもCatalyst面白そうね。このページをどう使うか考えようと思ってまだそんなに深く考えてなかった。それはそれで問題だな。

鱈のオイスターソース煮

材料 生鱈 大根 ねぎ しいたけ しょうが にんにく 作り方 大根は下茹でしておく(米のとぎ汁) 細かく刻んだにんにくと生姜を熱したサラダ油に入れる 香りが出たら大きめに切ったしいたけとねぎを入れて炒める ねぎがしんなりしたら水を加え、鱈と下茹でして…

JavaとかPHPとか

さすがにそろそろJava 5の世界を実際にやってみないとまずいかも。今のプロジェクトはStrutsベースのちょっとしたフレームワークを作ってしまったからな。その都合でJDKは1.4のまま。アノテーションとか使えたら便利なんだろうな、と思う要素が結構あった。S…