2007年06月29日

PRADOとPHPEdit

今日届いた情報によると、フランスのPHPEditの新版が、PRADOフレームワークのサポートを表明。

PHPEdit
http://www.waterproof.fr/products/PHPEdit/
ドキュメント


う〜ん、でも、Visual Studioのようなものではないなぁ〜。
posted by SDozono at 12:01| 東京 🌁| Comment(0) | TrackBack(0) | PHP Framework | このブログの読者になる | 更新情報をチェックする

redirect()で困ったら〜"Don't redirect directly!"

ログイン認証まわりでつまずいている方が多いようなので、参考情報を書いておきます……。

Cakeには、

「すべてのアクションの前には、親玉app_controller.php の "beforeFilter"が呼ばれる」

というルールがあります。


[追記:各コントローラにbeforeFilterを独自に設定してしまえば、parent::beforeFilter();としないかぎり、app_controller.phpのbeforeFilter()は呼ばれませんね。「すべてのアクションの前には、“コントローラで独自にbeforeFilterを設定していなければ”、親玉app_controller.phpのbeforeFilterが呼ばれる。独自設定していれば、各コントローラの独自beforeFilterが呼ばれる。独自にbeforeFilterを設定していて、それでも親app_controller.phpのbeforeFilterを呼び出したい、という場合には parent::beforeFilter()とする」としたほうが、正確ですネ。]

別のフレームワークでは、アクションチェインなどというのに似ているでしょうか。なので、ここでログインしているかどうかをチェックすれば、門番として立派な役目を果たすと期待できます。

ただ問題はここからです。

1)ログインしていないことが判明
2)ログイン画面へ飛ばす

というこの簡単な流れをだれでも考えますが、1)のアクションで app_controller.phpのbeforeFilter() を通ったあと、単純に 2)に $this->redirect('ログイン画面用アクション')として飛ばしてしまうと、CPU100%になったり、Firefoxに、“リダイレクトがおかしい”と言われて止まったりしてしまいます。

なぜなら、2)に入った時点でも、「もう一度、app_controller.php のbeforeFilter()が呼ばれる」からです。

つまりは何も考えずにコーディングしてしまうと、app_controller.phpのbeforeFilter() から、app_controler.phpのbeforeFilter()へ、同じところをぐるぐると回るだけになってしまいます。

このあたりを解決するには幾つかの方法があります。

(1)そもそも$this->redirectを使わない
  例えば、$this->layout = "login.thtml"なととして、レイアウトを変更してしまうというアイデアです。

いちばん簡単な認証システム
http://cakephp.seesaa.net/article/20317502.html

(2)DBやセッションに、“今、ログイン作業をはじめたよ”と情報を書き込んでおき、その場合にはリダイレクトしない。(この方法だと、3回ログインに失敗したらアウト、などの処理もできます。)

othauth
http://bakery.cakephp.org/tags/view/othauth
☆このコンポーネントがいまのところ、一番、最先端をいっているコンポーネントです。ただbeforeFilter内に置いて設定するだけで、あとはよしなに取り計らってくれます。

YACCA Yet Another Cake Component for Auth
http://bakery.cakephp.org/articles/view/yacca-yet-another-cake-component-for-auth

(3)今現在、ログインアクション中ならば、リダイレクトしない

if($this->action != 'login' && $this->action != 'logout')

でチェックしています。

http://bakery.cakephp.org/articles/view/simple-form-authentication-in-1-2-x-x

では、bakery.cakephp.org自体のソースコードはどうなっているんだろう、と見てみると、(1)から(3)には該当していませんでした。(4)番目の方法です。

(4)user_controller(=ログインをチェックするコントローラ)内に自分がいるかどうかをチェックする


if(($action != null && $this->action === $action) || $this->action === 'edit' || ($this->action === 'add' && $this->params['controller'] != 'users')){


という仕方でチェックしていました。

いろいろありますね!
posted by SDozono at 11:27| 東京 🌁| Comment(0) | TrackBack(0) | CakePHP Tips | このブログの読者になる | 更新情報をチェックする

2007年06月27日

SNSシステムをCakePHP DE

twitter のドイツ語クローン, dukudu.de はCakePHPで作られているそうです。ただ、今回のCakeコミュニティの反応が面白くて、「何でわざわざクローン作るの?」という質問が出ています。オリジナリティはないんじゃないの?と。

http://groups.google.com/group/cake-php/browse_thread/thread/6621e43f73ea5c75

dukudu.png
posted by SDozono at 10:18| 東京 ☀| Comment(0) | TrackBack(0) | CakePHP General | このブログの読者になる | 更新情報をチェックする

2007年06月25日

JoelMoss絶賛のContainable Behavior

CakePHPのActiveRecordを使うと、アソシエーションで各モデル(DBテーブル)の関係を記述している場合、いもづる式に従属しているデータもぞろぞろと引き連れて取り出してきます。

この機能のおかげで、たったの1行書くだけで、まるでテーブルが正規化されていないかのように(エクセルの1列データのように)取り出せるので非常に便利ですが、自分の必要としないデータまで含まれている、という反動があります。

CakePHPの標準機能としては、bindModel(), unbindModel()を使い、「モデル単位で、あとからアソシエーションを設定したり外したりできる」というものがあります。これで、余分なデータはかなりはぶくことが可能です。

でも、ここからさらに進んで、“モデルをまたいで設定して、自分の必要とするフィールドデータだけを取ってこれたら便利なんじゃないんだろうか”ということで始まっている“The Containable Behavior”がちょっと熱くなっているようです。

今のところは、個人プロジェクトです。

Felix Geisendörfer’s Blog
Containable 2.0 BETA
http://www.thinkingphp.org/2007/06/14/containable-20-beta/

しかし、CakePHP Migration作者の JoelMossが絶賛しています。
Contain my excitement!
http://joelmoss.info/switchboard/blog/2522:Contain_my_excitement

これからがちょっと楽しみです。
posted by SDozono at 11:57| 東京 🌁| Comment(0) | TrackBack(0) | CakePHP General | このブログの読者になる | 更新情報をチェックする

シンガポールのCakePHP製サービス

http://ping.sg/
The Community Meta Blog for Singapore Bloggers

これはなんぞやー、というと、コミュニティ型Technorati+Diggというようなサービスのようです。

インタビュー記事:
Interviews with Singapore's Next Gen Hackers: U-Zyn
posted by SDozono at 11:31| 東京 🌁| Comment(0) | TrackBack(0) | CakePHP General | このブログの読者になる | 更新情報をチェックする

2007年06月23日

Ajax Samples for CakePHP

佐久嶋ひろみさんが書かれた「PHPによるJavaScriptを書かないAjax」ですが、紙面のサンプルコードをサイト上で試してみることが可能です。

CakePHPでAjaxを使うサンプルが登録されていますので、関心のある方は試してみるとよいと思います。

ajax.png

下記にAjaxサンプルがいろいろあり、何ができるのか、ということの具体例になっています。

http://sakushima.net/BOOK/AjaxFramework/ajaxSamples/
posted by SDozono at 06:10| 東京 ☁| Comment(3) | TrackBack(0) | CakePHP Helper | このブログの読者になる | 更新情報をチェックする

2007年06月21日

あのidex*ideaでもCakePHP開発記事がスタート

ネットビジネス情報ブログ『百式』さんの個人ブログ“IDEA*IDEA”でも、cakephpによる開発ブログがはじまっています。

CakePHPでSNSっぽいものを作ろうとして挫折するまでのコーディング日記
http://www.ideaxidea.com/archives/cakephp/

ものすごいスピードで記事が投稿されていますね。果たしてサイトは完成するでしょうか……。


とりあえず、CakePHPの概略を知りたい、という方は下記の記事をどうぞ。登録が必要ですが、すぐ見られます。

CakePHPフレームワークによる快速WEB開発
http://codezine.jp/a/article/aid/670.aspx
CakePHP内の処理を理解する
http://codezine.jp/a/article/aid/768.aspx
タグ:cakephp PHP
posted by SDozono at 11:54| 東京 ☀| Comment(0) | TrackBack(1) | CakePHP Tips | このブログの読者になる | 更新情報をチェックする

2007年06月19日

gihyo.jp で連載記事がスタート

「はてブTV」などを世に送り出している、秋田真宏さんが、「CakePHPで高速Webアプリ開発」という連載記事をスタートしたようです。

gihyo.jp » DEVELOPER STAGE » 連載 » CakePHPで高速Webアプリ開発
http://gihyo.jp/dev/serial/01/cakephp

日本語情報がますます増えて、敷居が低くなると思います。
注目の記事です。

ちなみに、佐久嶋 ひろみさんの書かれた、“PHPによるJavaScriptを書かないAjax”にも、Ajaxのみならず、CakePHPのインストール・基本概念・Ajaxヘルパーの使い方などが詳細に書かれていますので、お勧めの一冊です。
posted by SDozono at 12:05| 東京 ☀| Comment(0) | TrackBack(0) | CakePHP General | このブログの読者になる | 更新情報をチェックする

2007年06月11日

PHP_ROUND_FUZZについて

CakePHPと直接関係はありませんが、調べついでに書いときます。

「定数PHP_ROUND_FUZZは0.50000000001なんていう不思議な数に定義されているみたいですよ!こんな見事なマジックナンバーは久々に見ました!」と、下記のブログにありました。

PHPの奇妙なround関数
http://d.hatena.ne.jp/hnw/20070515

が、ためしにGoogleで“0.50000000001”と検索すると、結構出てきます。この数。

あと、この方、
http://bugs.php.net/bug.php?id=24142
に気がついておられますが、rasmusあっとphp.netさん(PHPの前身を世に送り出した人)の"round to even"、"banker's rounding"に関するコメントをすっ飛ばしているように思いますが、いいのかなぁ。

"This is expected behaviour. When rounding on exact halves we round down on evens and up on odds. If you want to always force it in one direction on a .5 (or .05 in your case) add or substract a tiny fuzz factor. The reason behind rounding half the values down and the other half up is to avoid the classical banking problem where if you always rounded down you would be stealing money from your customers, or if you always rounded up you would end up over time losing money. By averaging it out through evens and odds you statistically break even. If you want to learn more, search the web for terms such as "round to even" or "banker's rounding" and you will find that most languages actually do it this way."

日本語で「四捨五入する関数」といったら挙動は間違いになりますが、英語では「丸める関数」(round)です。

下記を見ると、「丸め」方は一通りでないことが書いてあります。PHPにも触れていますね。
http://en.wikipedia.org/wiki/Rounding

What Every Computer Scientist Should Know About Floating-Point Arithmetic
http://docs.sun.com/source/806-3568/ncg_goldberg.html

ちょっとInterrop関連の準備で忙しいのであまり勉強できていないんですが、もう少し突っ込んで調べると面白そうです。カナダブースにいらしても、この話は、なしにしましょう!(笑)

追記:
hnwさんも触れておられますが、
下記のコメント欄には時系列で記録が残っていますね。
http://jp.php.net/manual/ja/function.round.php
タグ:PHP_ROUND_FUZZ
posted by SDozono at 19:05| 東京 ☀| Comment(6) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2007年06月09日

多言語化してゆくCakePHP

そういえば、4月ごろにbakery.cakephp.orgはFriendly URLに変更されていたようですね。SEO対策か?
これまでの数字インデックスでも転送してくれるようなので、過去のリンクが切れないよう配慮してくれているようです。感謝。

最近は、CakePHPに関する記事が多言語化してきています。中国語やインドネシア語の記事もよく見かけますし、最近台頭してきた

LumadCMS
http://cakeforge.org/frs/?group_id=154
なんかはフィリピンのIT企業が開発・公開しています。

今日は、タイで作られている面白いプロジェクトを見つけました。

Basa-Asa is a web-based platform for assisting collaborative manual translation
http://code.google.com/p/basaasa/

ブログ:
http://basa-asa.blogspot.com/2007/06/how-to-install-basa-asa.html

http://cakephp.jp/doc を作るときに、私も同じようなことを考えて簡単な翻訳システムを作ったのですが、結局使わずに通常の翻訳方法で訳してしまいました。でも、GoogleDocsのような仕組みで、翻訳メモリとコメントシステムと辞書の組み合わせがあったら面白いだろうなぁというのは以前から考えています。basaasa,どうなっていくのかちょっと楽しみです。
タグ:cakephp bakery PHP
posted by SDozono at 11:59| 東京 ☁| Comment(0) | TrackBack(0) | CakePHP General | このブログの読者になる | 更新情報をチェックする

2007年06月05日

マニュアル更新

CakePHPマニュアル(英語)が若干、修正されたそうです。

CakePHP Manual rev 154 for CakePHP 1.1
http://groups.google.com/group/cake-php/msg/b0a4a333342d0c87

あと、最近ちらほら名前を見るフレームワークに「Kumbia」があります。おさえる所はおさえているようで。

Kumbia Web Framework
http://www.kumbia.org/site/
kumbia.png

ちなみにスペイン語です。
posted by SDozono at 09:16| 東京 ☀| Comment(0) | TrackBack(0) | CakePHP General | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。