【PHP】フレームワーク CakePHP 3ホール目【本命】

このエントリーをはてなブックマークに追加
1nobodyさん
http://www.cakephp.org/

10分で作るCakePHPアプリ for Windows
http://p4life.jp/cake/

マニュアル日本語化
http://www.cakephp.jp/doc/

日本語フォーラム
http://cakephp.jp/modules/newbb/

あとこのへんとか(初心者向けTIPS)
http://www.avatarfinancial.com/pages/cake/

CakePHP入門リンク集
ttp://pub.studio15.jp/2007/11/13/cakephp-links/

【PHP】フレームワーク CakePHP 2ホール目
http://pc11.2ch.net/test/read.cgi/php/1194976228/
【PHP】フレームワーク CakePHP
http://pc11.2ch.net/test/read.cgi/php/1163850802/
2nobodyさん:2008/03/14(金) 15:46:16 ID:???
>1

乙。
3nobodyさん:2008/03/14(金) 18:11:15 ID:???
アソシエーションしたモデルをfindAllなどで持ってくると、
いろんな構造のデータになるけど、どんなパターンがあるのかな?
ちょっと見にくいだろうけど、ありそうなのを組み合わせてみた。

この結果から、配列.Model.・・・、Model.Model.・・・、Model.field、Model.配列.field の
パターンに大別できると思っている。 Model.配列.配列.field なんてのは無い。

そしてキーの先頭が大文字ならモデル名、数値なら配列、
先頭が小文字ならフィールド名と判別できると思っている。

Model::aliasとかあまり使ってないんだけど、これであってる?

何の為にこれを調べているかというと、アソシエーションでごっそり取ってきた
全データの中で、特定モデルの特定の型(たとえば日付)のフィールドだけ変換したいっていう場合に
array_walk_recursiveみたいなのがあればやりやすくない?という話
その下調べ
43:2008/03/14(金) 18:11:43 ID:???
array(
  'Model1' => array(
    'model1_field1' => '値1', 'model1_field2' => '値2',
  ),

  'Model2' => array(
    '0' => array(
      'model2_field1' => '値1', 'model2_field2' => '値2',
    ),
    '1' => array(
      'model2_field1' => '値1', 'model2_field2' => '値2',
    ),
  ),

  'Model3' => array(
    '0' => array(
      'model3_field1' => '値1', 'model3_field2' => '値2',
      'Model4' => array(
        'model4_field1' => '値1', 'model4_field2' => '値2',
      )
    ),
    '1' => array(
      'model3_field1' => '値1', 'model3_field2' => '値2',
      'Model4' => array(
        'model4_field1' => '値1', 'model4_field2' => '値2',
      )
    ),
  ),
)
これに加えて一番上が配列で始まる事もある。
5nobodyさん:2008/03/15(土) 03:10:39 ID:???
こういう学習コストを考慮しても、ありがたみがあるの?
6nobodyさん:2008/03/15(土) 04:05:03 ID:???
学習コスト < 自分で考え設計し開発するコスト

長くやっている人は、すでに自分で考え設計し開発しているから、
学習コストのほうが高いように錯覚するかもしれないが
本来は、自分でやるほうがコストは大きい。
7nobodyさん:2008/03/15(土) 04:29:13 ID:???
仕様書に機能追加や修正するだけの作業で1日が費やされた
最終的にこれをコードで処理してやらなければならないんだが
どんだけ時間かかるんだろ怖いよ
8nobodyさん:2008/03/15(土) 04:31:23 ID:???
貧乏暇無しや、この蟻地獄からなかなか抜け出せへん
気晴らしにコーラでも買いに行く
9nobodyさん:2008/03/15(土) 08:17:47 ID:4Bb0W2wl
で、結局どれほどの負荷がかかるとメモリ食い潰す訳?
アクセス数と処理内容は?
10nobodyさん:2008/03/15(土) 09:48:29 ID:???
>>9
うるさいなぁ。
CakePHPはメモリ不足で落ちる。何をやっても落ちる。
それだけだよ。ソースはぐぐれ。
11nobodyさん:2008/03/15(土) 10:04:27 ID:???
>>9

アクセス数とかじゃなくて、モデルのオブジェクトにしこたま
データを溜め込んだりする仕様になってるから、データ量が増えて
閾値をこえると落ちるって感じかなぁ。

初めはそんなこと考えなくてもいいと思うけど・・・
12nobodyさん:2008/03/15(土) 12:47:39 ID:???
メモリの8Mリミットオーバーのエラーを見たのは
ぶっちゃけCakePHPがはじめてw
13nobodyさん:2008/03/15(土) 12:49:38 ID:???
こんな高負荷なものは自社で運営は間違ってもしない
やるならCIを負荷を考慮して拡張していく
14nobodyさん:2008/03/15(土) 12:53:15 ID:???
>>11
アソシエーションしまくるとやばいやんw
15nobodyさん:2008/03/15(土) 12:57:52 ID:???
なんでこんな不完全なフレームワーク流行してんだよ。
流行て何でも肯定されちまうから怖いよな。
流行についていかねば、食えないから仕方ないけどな
16nobodyさん:2008/03/15(土) 14:20:17 ID:???
で、結局、どういうコードを書けば落ちるんだよ。
その具体的がまったくないよね。

これじゃウソだと思われるのが当然だし、
仕方が無い話だよね。
17nobodyさん:2008/03/15(土) 14:21:14 ID:???
>>15
> なんでこんな不完全なフレームワーク流行してんだよ。

世の中に完全なフレームワークは無い。
もしあったとしたら、そのフレームワークは
バージョンアップしない。
18nobodyさん:2008/03/15(土) 14:25:44 ID:???
なんでメモリ不足で落ちるということを
信じてもらえないのだろう?

俺、何もしてないのに・・・
19nobodyさん:2008/03/15(土) 14:47:28 ID:???
笑い殺すきかw 何もしていないから信じてもらえないんだろw

メモリ不足で落ちるということを証明する義務があるのに、
それを証明しない、何もしないから信じてもらえない。
20nobodyさん:2008/03/15(土) 15:39:59 ID:???
>>19
他人の作ったプログラム内でHello word書いて落ちるんだから
そう簡単には証明できねーよ、素人発言にも度が過ぎる
21nobodyさん:2008/03/15(土) 15:44:29 ID:???
メモリオーバーのエラー文が出てるんだから
証明てエラー画面のキャプチャー画像とれってことか?w
22nobodyさん:2008/03/15(土) 15:47:01 ID:???
20に同意
19はPHPのことあまり知らなさそうな感じが・・・
23nobodyさん:2008/03/15(土) 15:48:52 ID:???
たしかにwの数と頭の悪さは比例するからな
24nobodyさん:2008/03/15(土) 16:33:57 ID:???
自演ワロタw

>>20
そう簡単に証明できない?

なぜ? 簡単にメモリ不足になるんじゃなかったのか?

自分で言っていて矛盾に気づかない?
25nobodyさん:2008/03/15(土) 16:43:49 ID:???
>>21
証明とは、他人がやっても再現できるだけの
コードや環境設定に決まっている。

Hello worldぐらいなら君でも掲示板にもかけるはずだが?
26nobodyさん:2008/03/15(土) 17:14:17 ID:???
とりあえずphpinfo()と問題のコントローラだけ貼ってみ
27nobodyさん:2008/03/15(土) 17:23:01 ID:???
>>25
常識の観点がずれてる
28nobodyさん:2008/03/15(土) 17:24:29 ID:???
>>24
激しく意味不明なんですが。。。
29nobodyさん:2008/03/15(土) 17:26:40 ID:???
「落ちる」を「俺は空を飛べる」に置き換えてみるとどうだろう。
30nobodyさん:2008/03/15(土) 17:28:21 ID:???
>>25
証明とか言葉の使い方がおかしい
技術者の使う言葉じゃねーな
31nobodyさん:2008/03/15(土) 17:29:55 ID:???
小学生がよく証明しろとか証拠みせろとかよくいうけど
そのレベルだろうな
32nobodyさん:2008/03/15(土) 17:31:24 ID:???
>>29
どんななぞなぞですか?
33nobodyさん:2008/03/15(土) 17:32:16 ID:???
他人に作ってくれと言われるサイトだと、すんなりできあがるのに。

自分のサイトを作ろうと思うとこだわりすぎてなかなか開発が進まない。

大工さんは自分の家を建てようとするとこだわりすぎて会社がつぶれるってこともあるらしいけど。

わかりますかね?この気持ち。
34nobodyさん:2008/03/15(土) 17:33:07 ID:???
遠まわし表現すぎてコミュニケーションレベルが激しく低いんですが
35nobodyさん:2008/03/15(土) 17:39:44 ID:???
なんかめんどくさいから別の話して↓
36nobodyさん:2008/03/15(土) 17:44:25 ID:???
インターバル2分以内わろた
37nobodyさん:2008/03/15(土) 18:11:15 ID:???
PHP4でメモリ8MB(デフォルト)で作っているけど、
メモリ不足になったこと無いんだが?

作り方が悪いんじゃね?
38nobodyさん:2008/03/15(土) 18:17:57 ID:???
すごいなこれw で、今は書き込みすぎですサルさん
とか言うのが出て書き込めない?

27 :nobodyさん:2008/03/15(土) 17:23:01 ID:???
28 :nobodyさん:2008/03/15(土) 17:24:29 ID:???
29 :nobodyさん:2008/03/15(土) 17:26:40 ID:???
30 :nobodyさん:2008/03/15(土) 17:28:21 ID:???
31 :nobodyさん:2008/03/15(土) 17:29:55 ID:???
32 :nobodyさん:2008/03/15(土) 17:31:24 ID:???
33 :nobodyさん:2008/03/15(土) 17:32:16 ID:???
34 :nobodyさん:2008/03/15(土) 17:33:07 ID:???
39nobodyさん:2008/03/15(土) 19:16:04 ID:???
そんな糞フレームワークなら、公開すらされなそうなもんだが、なんで世に出てるの?
開発元は認識してないバグなの?
40nobodyさん:2008/03/15(土) 19:21:27 ID:???
symfonyでよくメモリ不足に陥ってこのページ見つけた。
http://www.sooey.com/journal/2007/04/10/641/

memory_get_peak_usageでメモリ使用料を調べられるが、
それでCakePHPを調べたら、使用量は4M程度だったよ。

symfonyよりは少ないね。
41nobodyさん:2008/03/15(土) 19:59:52 ID:???
セットアップして空のアクション実行してview(+layout)を表示する。

php 5.2.5
cake 467.5KB, symfony 674.6KB

フレームワークとしてはデフォルトでこんなもんなんだから
メモリ不足というのはアプリケーションの実装の問題だと思うのだが。
DB周りとか、大抵使われるアドオン・プラグインとかも含めないとなんとも言えないってのはあるけど。
42nobodyさん:2008/03/15(土) 21:05:39 ID:???
フレームワークが糞なんじゃなくてメモリ不足云々言ってるやつが糞
メモリ不足とか言ってる香具師はどんな糞コード書いてるの?w
43nobodyさん:2008/03/15(土) 21:06:39 ID:???
>>41
その数字はデバッグ出してんの?説明不足すぎやで
44nobodyさん:2008/03/15(土) 21:11:12 ID:???
他人の書いたコード利用するくらいだから
42も含めて、みんな糞コードくレベルやろ
CakePHPで糞コード書くとメモリ不足になる確率は高いわな

45nobodyさん:2008/03/15(土) 21:13:30 ID:???
どう考えてもフレームワークが糞としか考えられん
相当に意識して糞コード書かないと8Mオーバーはむずいよ
46nobodyさん:2008/03/15(土) 21:16:24 ID:???
メモリ不足ならんやつはレンタルサーバーでデフォでメモリ無制限なってんの気づけよw
47nobodyさん:2008/03/15(土) 21:17:54 ID:???
そんなシビアに実装しないとメモリ不足になるんか
ろくでもないフレームワークやな
48nobodyさん:2008/03/15(土) 21:19:20 ID:???
初心者が無限ループ書きまくっても8M越えはむずいで
49nobodyさん:2008/03/15(土) 21:24:48 ID:???
PHP5あたりからメモリ食うような仕様になってんか
てことはPHP4つかってるやつだなメモリ不足おきんのは
50nobodyさん:2008/03/15(土) 21:26:39 ID:???
PHP 5.2.1ではさらにリミットが128Mまで引き上げらたんだってよ!
リミット8MのままPHP 5.2.1使えばメモリ不足になる可能性は高いわな
51nobodyさん:2008/03/15(土) 21:34:35 ID:???
>>45
> 相当に意識して糞コード書かないと8Mオーバーはむずいよ
簡単だよ。

たとえば、8Mを超えるようなファイルを受信したり、
また出力すればいいだけ。

っていうか、もうすでに8Mにはならないという結論がでている
話なんかどうでもいいんだがね。
52nobodyさん:2008/03/15(土) 21:36:48 ID:???
>>50
それが答えだろう。PHP5でメモリ使用量が大幅に増えて
それに伴って、デフォルトのリミット値も増えているのに、

PHP4からアップグレードしたとかでPHP4の設定のまま使っている奴が
メモリ不足と出ているだけ。

フレームワークではなく、PHPの問題。
53nobodyさん:2008/03/15(土) 21:37:19 ID:???
> PHPの問題
ただしくは、PHPとそれを使っているユーザーの問題。
54nobodyさん:2008/03/15(土) 21:38:08 ID:???
どうやら頭の中のメモリが不足してるヴォケが多いようだなw
55nobodyさん:2008/03/15(土) 21:38:50 ID:???
43 :nobodyさん:2008/03/15(土) 21:06:39 ID:???
44 :nobodyさん:2008/03/15(土) 21:11:12 ID:???
45 :nobodyさん:2008/03/15(土) 21:13:30 ID:???
46 :nobodyさん:2008/03/15(土) 21:16:24 ID:???
47 :nobodyさん:2008/03/15(土) 21:17:54 ID:???
48 :nobodyさん:2008/03/15(土) 21:19:20 ID:???
49 :nobodyさん:2008/03/15(土) 21:24:48 ID:???
50 :nobodyさん:2008/03/15(土) 21:26:39 ID:???

またこいつかw
56nobodyさん:2008/03/15(土) 21:40:39 ID:???
あはは、どういうコードでメモリ不足と出るということを
記憶する脳のメモリもないということか。うまいなぁ。

メモリ不足にるというのなら、そのコードを覚えてここで書けよw
57nobodyさん:2008/03/15(土) 21:41:32 ID:???
メモリ使用量で言えばsymfonyのほうが圧倒的に多い
そしてsymfonyは処理速度も最悪
58nobodyさん:2008/03/15(土) 21:44:17 ID:???
>>48
> 初心者が無限ループ書きまくっても8M越えはむずいで

お前はプログラミング素人だな。

そもそも無限ループじゃメモリ使用量は増えないだろ。

ループの中にメモリを消費していくコードが含まれていれば
メモリ使用量は増えるが、それだと難しいという話にはならない。
時間がたてばいずれ8Mを超える。
59nobodyさん:2008/03/15(土) 21:45:25 ID:???
>>57
symfonyはCakePHPだと配列のデータが
オブジェクトになっているからね。
それは仕方が無い話。
60nobodyさん:2008/03/15(土) 21:52:56 ID:???
>>54のカキコが的を突いていてオモロス
61nobodyさん:2008/03/15(土) 21:58:18 ID:???
脳内メモリが不足している人におすすめのフレームワーク
http://pc11.2ch.net/test/read.cgi/php/1122105465/
62nobodyさん:2008/03/15(土) 22:01:51 ID:???
>>59
オブジェクトの方がメモリ食わんよ
63nobodyさん:2008/03/15(土) 22:02:57 ID:???
アホしか書き込みせんから、時間の無駄じゃこのスレ
64nobodyさん:2008/03/15(土) 22:03:54 ID:???
フレームワークが糞だから住人も糞が集まる
これは仕方のないこと
65nobodyさん:2008/03/15(土) 22:07:39 ID:???
CakePHPは使ってるやつは
脳内のメモリが不足してるという結論になりました
66nobodyさん:2008/03/15(土) 22:10:56 ID:???
こんなメモリ食うフレームワークを採用してる有名サイトあるの?www
どうでもいいクライアント用のフレームワークだろwww
67nobodyさん:2008/03/15(土) 22:12:26 ID:???
>>65
CakePHPは使ってるやつは    ×
CakePHPを使ってるやつは     △
CakePHPを糞と言ってるやつは  ○

脳内メモリが不足してくると日本語もおかしくなっているという法則
68nobodyさん:2008/03/15(土) 22:12:32 ID:???
CakePHPて小規模フレームワークのくせに
なんでsymfonyとメモリ不足量の競い合いしてんだよw
69nobodyさん:2008/03/15(土) 22:15:21 ID:???
>>66
つ p://cakephp.seesaa.net/article/30805902.html
70nobodyさん:2008/03/15(土) 22:16:09 ID:???
どうでもいいクライアントには丁度いいフレームワークだよ

71nobodyさん:2008/03/15(土) 22:22:04 ID:???
すぐメモリ不足おこすのはCakePHPの問題だ
どんな糞コード書いてても
CakePHP以外でこんなこと今までおきなかった
72nobodyさん:2008/03/15(土) 22:26:10 ID:???
脳内メモリが不足してる香具師は何でも他人の所為にする事しか出来ないようだな

>>71
じゃあそのCakePHPの場合だけ落ちるっていう糞コードをさっさと書けよボンクラ
73nobodyさん:2008/03/15(土) 22:31:54 ID:???
どんだけ最低最悪な糞コード書いてても
symfony,CI,mojaviは落ちなかったけど
CakePHPだけはどんなコード書いてもすぐ落ちる
最悪なフレームワークです
74nobodyさん:2008/03/15(土) 22:34:03 ID:???
>>73
脳内メモリが著しく枯渇してるモマエにはすぐ上に書いてある文章も読めないのか?(藁
75nobodyさん:2008/03/15(土) 22:35:35 ID:???
CakePHPの採用サイトみたけど有名なとこはないな
信用の無いフレームワークですね
76nobodyさん:2008/03/15(土) 22:37:25 ID:???
ひとりごとにやけにかみつくメモリ不足の方がおられますね
77nobodyさん:2008/03/15(土) 22:39:22 ID:???
CakePHPだと小規模向けのサイトじゃないと無理か
だったらCI使ってた方がいいやん
何なのCakePHPの存在意義て?
78nobodyさん:2008/03/15(土) 23:01:27 ID:???
CI使ってみたいんだけどどんな感じ?
79nobodyさん:2008/03/15(土) 23:10:48 ID:???
>>76
全世界の人間に見えるように書いてるもんに独り言も糞もあるかよw
さっさとCakePHPの場合だけ落ちるコードを書いてみろや
80nobodyさん:2008/03/16(日) 00:28:57 ID:???
>>78
激しく糞。


つーか、ここでCIのことを語りだすやつは、
CakePHPがメモリ不足になりやすいとデマ流している奴だから。
81nobodyさん:2008/03/16(日) 00:29:46 ID:???
CI厨、CakePHPに激しく嫉妬(笑)
82nobodyさん:2008/03/16(日) 00:33:53 ID:???
CakePHPのメモリ不足をまだデマだと思ってるやつがいるなんて信じられん
83nobodyさん:2008/03/16(日) 00:37:26 ID:???
デマという言葉がいやなら、

メモリ不足になるというコードがでていないのに、
メモリ不足になるというコードが存在すると主張している
と言い換えてもいいけど?

こっちなら間違ってないでしょ?
84nobodyさん:2008/03/16(日) 00:41:22 ID:???
CI厨 必死(笑)
85nobodyさん:2008/03/16(日) 00:42:48 ID:???
>>73
> どんだけ最低最悪な糞コード書いてても
> symfony,CI,mojaviは落ちなかったけど

常識で考えて、ありえない話。
メモリ制限8Mで10Mのデータをメモリに読み込むような
プログラムを書けば絶対落ちる。

マジレスしたらだめなのか?w
86nobodyさん:2008/03/16(日) 00:49:54 ID:???
結論

Q : cakephp メモリ不足になるんですが

・他のフレームワークを使う
・フレームワークを使わずコーディングする
・ticket 投げてメモリを喰わないように cakephp を作ってもらう

どれかを選らんで下さい。
87nobodyさん:2008/03/16(日) 00:52:50 ID:???
>>86
必死wwwwwwwww
88nobodyさん:2008/03/16(日) 00:54:42 ID:???
ticketを投げようにも、再現コードがでていないから
投げようがないな。デマといわれて終わるだけだ。

悔しいなぁ。

なんで、なんでメモリ不足になるという
証拠がないんだよ! ありえない。

これじゃCakePHPを叩けない!
89nobodyさん:2008/03/16(日) 00:58:35 ID:???
ticketだしますから、
メモリ不足になるという
再現コードお願いします。

それがないと信用してもらえません><
90nobodyさん:2008/03/16(日) 01:10:03 ID:???
なんか必死に書き込んでるのがいるwww
91nobodyさん:2008/03/16(日) 01:11:43 ID:???
再現コード厨きてんねw
92nobodyさん:2008/03/16(日) 01:15:35 ID:???
はやく再現コードかきこんでねw
93nobodyさん:2008/03/16(日) 01:15:51 ID:???
hello wordでもメモリ不足でおちる
CakePHPはそういうフレームワーク
94nobodyさん:2008/03/16(日) 01:17:05 ID:???
hello worldって何かしってるのかな?
知っていれば落ちるはずがないことがわかるはずなんだが。
それがわからないってことは馬鹿ということだよ。
95nobodyさん:2008/03/16(日) 01:18:12 ID:???

大きすぎるうそは逆効果だと思うんだが(笑)
96nobodyさん:2008/03/16(日) 01:18:14 ID:???
echo"92の必死ぶりがイタイデス";
これでメモリ不足で落ちます
CakePHPはこんなフレームワークです
使うのはやめましょう。クライアントがかわいそうです
97nobodyさん:2008/03/16(日) 01:19:44 ID:???
echo"92の必死ぶりがイタイデス";

ためしたけど落ちなかったよ。
98nobodyさん:2008/03/16(日) 01:20:34 ID:???
だから何も書いてなくてもデバッグ出力すると落ちるんだよボケ!!
99nobodyさん:2008/03/16(日) 01:20:46 ID:???
ためしたのかよw

やる前から落ちないってわかるwww
100nobodyさん:2008/03/16(日) 01:21:56 ID:???
レンタルサーバーで落ちるわけねーだろうがよ
101nobodyさん:2008/03/16(日) 01:22:13 ID:???
何も書かないで、どうやってデバッグ出力なんかするの???

っていうかデバッグ出力するってどういうこと?

他のフレームワークと勘違いしてね?
きっとそのフレームワークだよ。メモリ不足で落ちるというのは。
102nobodyさん:2008/03/16(日) 01:22:44 ID:???
落ちないように業者が設定してくれてんの、わからんの?
103nobodyさん:2008/03/16(日) 01:24:23 ID:EXDzIJ8M
あー。なんか面白いことになっているな。
メモリ不足で落ちるとはじめに言ったのは俺なんだが、
あれ勘違い。俺のバグだった。

で、それに便乗して落ちる落ちる言っている奴がいるのか?
104nobodyさん:2008/03/16(日) 01:24:44 ID:???
だからCakePHPは使いものにならないんだよ
105nobodyさん:2008/03/16(日) 01:25:25 ID:???
106nobodyさん:2008/03/16(日) 01:26:34 ID:???
メモリ不足でよく落ちるから使いものにならんてこと
107nobodyさん:2008/03/16(日) 01:27:00 ID:???
落ちないよ?
108nobodyさん:2008/03/16(日) 01:27:46 ID:???
落ちなければこんなとこ書き込めねーよ
109nobodyさん:2008/03/16(日) 01:28:08 ID:???
落ちてないけど、書き込めるよ?
110nobodyさん:2008/03/16(日) 01:28:27 ID:???
おまえが落ちなくても俺は落ちてんだよ
111nobodyさん:2008/03/16(日) 01:28:49 ID:???
お前も落ちてないよ
112nobodyさん:2008/03/16(日) 01:29:14 ID:???
なんでこんなに糞なんだよ、メモリやけに使いやがって
113nobodyさん:2008/03/16(日) 01:29:31 ID:???
糞じゃないよ。メモリも使わないよ。
114nobodyさん:2008/03/16(日) 01:30:21 ID:???
hello word書いてメモリオーバーになったのは
CakePHPがはじめてだよ
115nobodyさん:2008/03/16(日) 01:30:42 ID:???
なんでこんなことになるん?
116nobodyさん:2008/03/16(日) 01:30:53 ID:???
お前、メモリオーバーになってないよ。
117nobodyさん:2008/03/16(日) 01:31:19 ID:???
>>115
CI厨のデマだからという結論らしいです。
118nobodyさん:2008/03/16(日) 01:33:07 ID:???
CakePHP重いと思わんの?サクサクしてる?w
119nobodyさん:2008/03/16(日) 01:33:16 ID:???
これで落ちなかったら俺の負けでいいよ。

class TestController extends AppController {
  var $name = 'Test';

 function index() {
  echo 'Hello World';
 }
}
120nobodyさん:2008/03/16(日) 01:33:58 ID:EXDzIJ8M
>>119
マジ落ちたwwww
121nobodyさん:2008/03/16(日) 01:34:19 ID:???
俺も落ちたね。
122nobodyさん:2008/03/16(日) 01:34:23 ID:???
落ちなかった
123nobodyさん:2008/03/16(日) 01:35:06 ID:???
墓穴?

103 名前:nobodyさん[] 投稿日:2008/03/16(日) 01:24:23 ID:EXDzIJ8M
あー。なんか面白いことになっているな。
メモリ不足で落ちるとはじめに言ったのは俺なんだが、
あれ勘違い。俺のバグだった。

で、それに便乗して落ちる落ちる言っている奴がいるのか?

120 名前:nobodyさん[] 投稿日:2008/03/16(日) 01:33:58 ID:EXDzIJ8M
>>119
マジ落ちたwwww
124nobodyさん:2008/03/16(日) 01:36:23 ID:???
>>119
メモリ1GBのLinuxにPHP4.5を入れているが、落ちたよ。
125nobodyさん:2008/03/16(日) 01:36:34 ID:???
とにかくhello wordだけでメモリ不足で落ちるのはホントだからな
126nobodyさん:2008/03/16(日) 01:36:55 ID:???
絶対信じろよ
127nobodyさん:2008/03/16(日) 01:38:20 ID:???
CakePHPはこんな糞フレームワークなんですよ!
結論がでたね
128nobodyさん:2008/03/16(日) 01:38:32 ID:???
で、それにかわるフレームワークなんだが、
CodeIgnitor なんてどうかな?
129nobodyさん:2008/03/16(日) 01:39:10 ID:???
CodeIgnitor。いいよね!
130nobodyさん:2008/03/16(日) 01:41:35 ID:???
いいんだよ!!ね!ねって!
131nobodyさん:2008/03/16(日) 01:43:44 ID:???
↓次の質問どうぞ
132nobodyさん:2008/03/16(日) 08:13:02 ID:???
何この流れ。くだらねえ。
133nobodyさん:2008/03/16(日) 12:34:32 ID:???
話し戻していいですか?

アソシエーションしたモデルをfindAllなどで持ってくると、
いろんな構造のデータになるけど、どんなパターンがあるのかな?
ちょっと見にくいだろうけど、ありそうなのを組み合わせてみた。

この結果から、配列.Model.・・・、Model.Model.・・・、Model.field、Model.配列.field の
パターンに大別できると思っている。 Model.配列.配列.field なんてのは無い。

そしてキーの先頭が大文字ならモデル名、数値なら配列、
先頭が小文字ならフィールド名と判別できると思っている。

Model::aliasとかあまり使ってないんだけど、これであってる?

何の為にこれを調べているかというと、アソシエーションでごっそり取ってきた
全データの中で、特定モデルの特定の型(たとえば日付)のフィールドだけ変換したいっていう場合に
array_walk_recursiveみたいなのがあればやりやすくない?という話
その下調べ
134nobodyさん:2008/03/16(日) 12:34:56 ID:???
array(
  'Model1' => array(
    'model1_field1' => '値1', 'model1_field2' => '値2',
  ),

  'Model2' => array(
    '0' => array(
      'model2_field1' => '値1', 'model2_field2' => '値2',
    ),
    '1' => array(
      'model2_field1' => '値1', 'model2_field2' => '値2',
    ),
  ),

  'Model3' => array(
    '0' => array(
      'model3_field1' => '値1', 'model3_field2' => '値2',
      'Model4' => array(
        'model4_field1' => '値1', 'model4_field2' => '値2',
      )
    ),
    '1' => array(
      'model3_field1' => '値1', 'model3_field2' => '値2',
      'Model4' => array(
        'model4_field1' => '値1', 'model4_field2' => '値2',
      )
    ),
  ),
)
これに加えて一番上が配列で始まる事もある。
135nobodyさん:2008/03/16(日) 14:39:55 ID:???
落ちる落ちるってデマ情報流してるやつは何なの?

>>119-121
それで落ちるってphp.iniにどんな設定しとるんや?
まずは脳内メモリを増設したほうがいいんじゃね?(プ
136nobodyさん:2008/03/16(日) 16:55:47 ID:???
>>135
脳内メモリ増設したいんやが、空きが無いんや
137nobodyさん:2008/03/16(日) 17:21:50 ID:???
>>136
すでについとる容量の低いやつを全部外して
デュアルチャネル対応の容量大きいやつを増設したらええんや

そしたらCakeもサクサク、オマエの小汚い脳内もサックサク〜(* ^ー゚)
138nobodyさん:2008/03/16(日) 17:40:40 ID:???
>>137
おまえはCPU変えた方がよさそうだなw
139nobodyさん:2008/03/16(日) 22:05:49 ID:???
>>138
ツマンネー
140nobodyさん:2008/03/16(日) 22:11:05 ID:???
先輩方、マジ質問なんですが、自分はdreamweaver を使ってます。

ecripse って最近よく聞くんですが、 dreamweaver よりも開発効率いいんでしょうか。

よろしくお願いします。
141nobodyさん:2008/03/16(日) 22:46:20 ID:???
142nobodyさん:2008/03/16(日) 22:54:10 ID:???
Javaならエクリプス必須だけどPHPは秀丸で充分じゃね?関数少ないし。
143nobodyさん:2008/03/16(日) 23:03:52 ID:???
PHPフレームワークのCakePHPに相次ぐ批判の声
http://news24.2ch.net/test/read.cgi/news2/1193936653/

とりあえず「脳内メモリがや〜」とか言ってる人は読んどいたら?
144nobodyさん:2008/03/17(月) 00:45:30 ID:???
>>119
私もこのコードを書いたら、彼女が出来ました!
145nobodyさん:2008/03/17(月) 01:02:50 ID:???
ここいる住人は全員初心者ばっかりくせーw
146nobodyさん:2008/03/17(月) 01:03:05 ID:BkHzbTOg
gzipの方のアーカイブって変なフォルダ入ってね?あれ何に使うの?
147nobodyさん:2008/03/17(月) 01:06:46 ID:BkHzbTOg
>>119
落ちなくて困っているんだけど、どうすればいい?
148nobodyさん:2008/03/17(月) 01:23:22 ID:???
結局CakePHPは糞フレームワークという結論でよろしいですね!
149nobodyさん:2008/03/17(月) 01:23:58 ID:???
>>148
ノープロブレム
150nobodyさん:2008/03/17(月) 01:25:35 ID:???
よろしいから、どっか行け、な。使わなくていいから。マジで。
151nobodyさん:2008/03/17(月) 01:27:02 ID:???
このスレを見てたら大手が採用しない理由がわかってきたw
152nobodyさん:2008/03/17(月) 01:34:16 ID:???
とりあえずCakePHPはよく落ちる糞フレームワークということを
みんなで中小企業にアピールしようぜ。
そしてもう二度と同じ被害者を生まないためにも
153nobodyさん:2008/03/17(月) 01:44:22 ID:???
嫉妬乙
154nobodyさん:2008/03/17(月) 01:59:39 ID:???
いや、マジで駄目だから使わないほうがいい。
使うのは駄目な俺だけでいい。
155nobodyさん:2008/03/17(月) 02:09:58 ID:???
この流れで落ちるとかいっても逆効果だろw
誰も信用してないよ。
156nobodyさん:2008/03/17(月) 06:47:17 ID:???
モデルにバリデーションとアソシエーションをがっつり入れた
超みにくいよw
157nobodyさん:2008/03/17(月) 07:00:18 ID:???
あぁ。だから俺はバリデーションをYAMLに書いて、
それを読み込むようにしている。
158nobodyさん:2008/03/17(月) 15:09:42 ID:???
フォームでURLの入力補助として
デフォルト値にhttp://をつけると
バリデーションで他の項目がひかかったときに
http://yahoo.co.jpと入力していても
またhttp://のデフォルト値がはいる
デフォルト値は最初の画面だけ挿入したい場合はどうすればいいのですか

$form->input('TestUser.url', array('value'=>'http://')
159nobodyさん:2008/03/17(月) 15:29:54 ID:???
>>141
>>142

ありがとうございます!
160nobodyさん:2008/03/17(月) 16:22:23 ID:???
たった3日で150レスだと…?
161nobodyさん:2008/03/17(月) 16:39:49 ID:???
>>158
その辺て自動でやってくれないんだっけ?
再編集のときの話だったら、データ構造を見て本来はDBから持ってくるデータを用意しておいてあげればいい
またはデータが無いと判断したときだけ、value入れればいいんじゃね
162nobodyさん:2008/03/17(月) 18:22:09 ID:???
>>158
タイムリーだなw
俺も今同じようなことをやっていた。

最初はそのように、$form->inputに書いていたが、
同じようにダメだと気づいて、

コントローラで、(↓こんな感じ。適当に書く)
if(!empty($this->data)) {
 if($this->Model->save($data)) {
  ・・・
 } else {
  ・・・
 }
} else {
 $this->data['Model']['url'] = 'http://';
}

本当についさっき書いたコードなので、これで問題ないか深く考えていない。
163nobodyさん:2008/03/17(月) 20:25:58 ID:???
コントローラでやることじゃないなー
164nobodyさん:2008/03/17(月) 21:47:14 ID:???
>>163
プログラマならコードで示してね。
165nobodyさん:2008/03/17(月) 22:07:27 ID:6Wsl0FQ6
scaffoldでエラーが出るのですが、何が原因か教えてもらいたいです。

エラーの内容は
Warning: Invalid argument supplied for foreach() in /home/~~/htdocs/cake/cake/libs/controller/controller.php on line 666
Warning: Invalid argument supplied for foreach() in /home/~~/htdocs/cake/cake/libs/controller/controller.php on line 801

コントローラとモデルはscaffoldのみのシンプルなものです。
166nobodyさん:2008/03/17(月) 22:16:46 ID:???
>>165
まず該当箇所を見てみればいいと思うが
167nobodyさん:2008/03/17(月) 22:21:02 ID:???
>>162
Viewにこう書くのはどう?

if(empty($this->data['TestUser']['url'])) $this->data['TestUser']['url']='http://';
echo $form->input('TestUser.url', array('label'=>'*URL','size'=>50,'value'=>$this->data['TestUser']['url']));
168nobodyさん:2008/03/17(月) 22:28:21 ID:6Wsl0FQ6
666:foreach ($objRegistryModel->_tableInfo->value as $tabl) {
801:foreach ($objRegistryModel->hasAndBelongsToMany as $relation => $relData) {
でした。何なんでしょうか。アソシエーションでしょうか。
169nobodyさん:2008/03/17(月) 22:52:12 ID:???
>>157
この辺りの辺、サンプルある?
もしあったら見せて欲しい。

昨日あたりからcakePHPを使い初めたのだけど、たしかにWebにあった
チュートリアルに沿って作ると、モデルがヴァリデーションだらけに
なりそうなので。
170nobodyさん:2008/03/18(火) 00:22:51 ID:???
>>169
YAMLの使い方ググれよ
171nobodyさん:2008/03/18(火) 00:52:36 ID:???
>>164
いちいちコード書かないとわからんのか
設計とかパターンとか学べ
172nobodyさん:2008/03/18(火) 03:38:03 ID:???
>>164
一行レスとか煽りに一々反応すんなよ
荒れるだけだよ
173nobodyさん:2008/03/18(火) 04:22:49 ID:???
つーかこんで良いんじゃねぇの?

controler
$url = ''http://;
$data = $this->Model->ほげほげ();
if (unko) {
 $url = $data["url"]
}
$this->set('url',$url);

view
$form->input('TestUser.url', array('value'=>$url)
174nobodyさん:2008/03/18(火) 09:45:05 ID:LdGu1qpa
>168のscaffoldの奴です。
bakeでいろんなテーブルを焼いてみると、まともにscaffoldが働くものもありました。
焼かれたVIEWのIndex.thtmlを見てみると、テーブルの値を表示する所で、配列の添え字が記入されていませんでした。
おそらくテーブルの定義の仕方に問題があるように思います。
テーブルの定義は、まず成功した方が
Table "public.users"
Column | Type | Modifiers
------------+------------------------+-----------
id | integer | not null
username | character varying(255) | not null
password | character varying(32) | not null
first_name | character varying(255) | not null
last_name | character varying(255) | not null

次に失敗した方が
Table "public.flash_tests"
Column | Type | Modifiers
--------+---------+----------------------------------------------------------
id | integer | not null default nextval('flash_tests_id_seq'::regclass)
count | integer | not null

です。fefaultの所は削除しても変わりませんでした。
心当たりのある方、助言お願いします。
175nobodyさん:2008/03/18(火) 09:53:20 ID:???
>>173
なにその汚ねーコードw
176nobodyさん:2008/03/18(火) 09:54:14 ID:???
>>173
それだけはありえん
177nobodyさん:2008/03/18(火) 13:01:47 ID:???
ありえんとかいってないで、
自分のコードをかけよ。
178nobodyさん:2008/03/18(火) 13:03:45 ID:???
初期値の設定は、前回入力値の設定と同じことなんだから
コントローラで設定すべきだよな。

ビューはただ表示するだけ。
179nobodyさん:2008/03/18(火) 15:07:02 ID:???
>>178
根拠の無い理由は自分の心の中でしまっとけな
180nobodyさん:2008/03/18(火) 15:09:23 ID:???
>>177
167に書いたよ、この美しいコードに反論あるんか?
181nobodyさん:2008/03/18(火) 15:11:30 ID:???
>>173
こんなコード書く奴がこのスレにいるとは
CakePHPの住人レベルて・・・
182nobodyさん:2008/03/18(火) 15:13:24 ID:???
明らかにPHP初心者がCakePHPから始めましたみたいなのが多いな
>>173を見て確信した
183nobodyさん:2008/03/18(火) 15:20:33 ID:???
ああ。ガチだな。
184nobodyさん:2008/03/18(火) 15:59:35 ID:???
最近10分以内に似たようなレスが連続で湧くな
185nobodyさん:2008/03/18(火) 16:06:00 ID:???
じゃあアンケートとります。

フォームの初期値はどこで設定すべきでしょう。

1.コントローラ
2.ビュー
3.モデル
4.モデルに初期値情報が有り、それをコントローラが取得してビューに渡す

俺は4。面倒だとか、フォームによって初期値が違う場合は1
186nobodyさん:2008/03/18(火) 16:45:53 ID:???
>>185
俺はビューかな。
187nobodyさん:2008/03/18(火) 16:51:14 ID:???
>>185
俺もビュー
管理するのが楽
コントローラーに書くとみにくくなる
ビューだと全くみにくくない、それどころか見通しがよくなる
188nobodyさん:2008/03/18(火) 16:53:16 ID:???
>>185
モデルをこれ以上見にくくするのはよくないよ
バリデータ
アソシエーション
バリデータ関数
これだけでもずいぶん見にくいのに
189nobodyさん:2008/03/18(火) 16:54:16 ID:???
コードの見渡しがよくなって
変更が楽な場所がベスト
190nobodyさん:2008/03/18(火) 16:55:18 ID:???
>>185
初心者の多いここでアンケートとっても意味が無いけどなw
191nobodyさん:2008/03/18(火) 17:06:20 ID:???
常識的に考えればビューだけど
ここは初心者が多いからね
192nobodyさん:2008/03/18(火) 18:10:04 ID:???
>>188
お前、まさか、それだけしかないんじゃないだろうな・・・
モデルは設定ファイルじゃないぞ。

ビジネスロジックを書く所がモデルだぞ。
193nobodyさん:2008/03/18(火) 18:11:06 ID:???
ビューは基本的に表示のみを行う場所。
初期値をビューで設定するのは変。
194173:2008/03/18(火) 19:04:45 ID:???
確かにてきとーに書いた部分はあるが
何でダメなの?因みにcakeは1週間ぐらいしかやってない
あとコントローラに初期値は
ロジックとviewの分離等から考えると微妙だが
めんどくさかったんだそこはごめんw
195nobodyさん:2008/03/18(火) 19:29:58 ID:5PAxNly0
なんでここって初心者しかいないの?
196nobodyさん:2008/03/18(火) 19:38:40 ID:???
なんでここって猿みたいに同じ事しか書けない人が多いの?
197nobodyさん:2008/03/18(火) 20:28:19 ID:???
>>193
smartyだってテンプレート側で初期値いれらるようになってる
おまえの頭が変
198nobodyさん:2008/03/18(火) 21:23:10 ID:???
>>193

携帯用サイト作るとわかると思うけどあんまりガンガン表示する内容まで
コントローラーで固めない方がいいよ。

携帯用サイト用の コントローラーまで作る羽目になるから。
199nobodyさん:2008/03/18(火) 22:59:49 ID:???
セッションって

$_SESSION[''][''] を直接使った方が早い感じがすんだけど、みんなどうしてます?

やっぱり $this->Session->read を使った方がいいんですかね。
200nobodyさん:2008/03/18(火) 23:48:37 ID:???
>>197
> smartyだってテンプレート側で初期値いれらるようになってる
入れられるようになっているからって、入れるべきということにはならないだろ?
モデルやコントローラ側で初期値入れられるようになっているんだしさ。

> 携帯用サイト用の コントローラーまで作る羽目になるから。
その理屈がよくわからん。初期値の話をしているのに
なんでもコントローラでやると拡大解釈してしてないか?

それにビューに書く場合、携帯用サイトとPC用サイトで分けるもんだから、
ビューに初期値を書いたら、コードが重複するじゃん。
だからビューだけはありえない。そう思わないか?

ちなみに、おれは初期値はモデルに書くもんだと思っているが。
201nobodyさん:2008/03/19(水) 01:30:55 ID:???
>>199
オブジェクトで呼んだ方がオーバーライドもできるし
後から制御するのが楽
202nobodyさん:2008/03/19(水) 01:36:20 ID:???
柔軟な制御をするためにデータはオブジェクト経由で呼ぶべき
オブジェクトで呼ぶことに意味がある
それは、オブジェクトにはいってるデータを
外から制御できるからだ
203nobodyさん:2008/03/19(水) 07:53:45 ID:???
>>201
>>202

cakephp やってて

「意味あるのかな・・・」と思ってましたけど、やっぱり意味があったんですね。

勉強になります。ありがとうございます。
204nobodyさん:2008/03/19(水) 12:54:14 ID:???
例えばCakePHPでブログシステムを作るとして、
ユーザ(usersテーブル)、投稿(commentsテーブル)が一対多の
関係にある時、あるviewで、
 ユーザ1
  コメント1-1
  コメント1-2
  コメント1-3
 ユーザ2
  コメント2-1
  コメント2-2
  コメント2-3
   ・
   ・

という表示をさせたいのですが、view、controllerをどう書いてよいか悩んでいます。
modelで、hasManyリレーションを貼るところ迄は合っていますか?

どこか、参考になるページがあれば教えて下さい。
205nobodyさん:2008/03/19(水) 19:47:56 ID:???
UserモデルにはhasManyプロパティを作ってcommentsを持っていることを示す。
CommentモデルにはbelongsToプロパティを作って、usersに依存していることを示す。

コントローラのアクションでUserモデルからデータを引っ張ってくる
アソシエーションによりCommentもくっついてくる。

コントローラのアクションで、引っ張ってきたデータを
ビューに詰め替える。

ビューは渡されたデータをぐるぐるして表示する。
206nobodyさん:2008/03/19(水) 21:42:10 ID:???
表示するユーザ数+1のクエリが発行されるからアクセス数の多い中規模〜大規模なサービスでは使えない。
この辺言及する人が少ないのはcakeユーザのレベルが低いからだろうか。
207nobodyさん:2008/03/19(水) 22:11:32 ID:???
> 表示するユーザ数+1のクエリが発行されるから
何を言っているんだ?

自分のレベルが低いと告白しているのか?
208nobodyさん:2008/03/19(水) 22:21:01 ID:???
>>206
だって、表示するユーザ数+1のクエリが発行されないから。
誰も指摘しないのは当たり前。
209nobodyさん:2008/03/19(水) 23:03:06 ID:XOo5uLlV
>>205
返信ありがとうございます。

> コントローラのアクションでUserモデルからデータを引っ張ってくる
> アソシエーションによりCommentもくっついてくる。

なるほど。
きちんとリレーションを設定すれば、コントローラ側ではUserモデル
からデータを引っ張るだけで、芋づる式にcommentsを取れるんですね。

> ビューは渡されたデータをぐるぐるして表示する。

今、$usersをforeachで回してる状態なんですが、これを$usersと
$commentsの二重ループにすればオッケーですかね。
ちょっとやってみます。


>>206
論点がずれてませんか?

そもそも、具体的なアクセス数、H/Wの規模を示さないと意味のない
指摘じゃないでしょうか。
この方法だと中規模以上に向かないから、この方法を使うといいよ、
と言うのならまだ分かるのですが。
210nobodyさん:2008/03/19(水) 23:13:10 ID:???
>>207
>>208
お前らのcakeはこの時どういったクエリが発行されんの?

select ... from users ... (id 1,3,5のユーザがヒットする)
select ... from comments where user_id in (1) ...
select ... from comments where user_id in (3) ...
select ... from comments where user_id in (5) ...
211nobodyさん:2008/03/19(水) 23:28:29 ID:???
http://72.14.235.104/search?q=cache:frA0R04esqgJ:ameblo.jp/lamp777/entry-10072229261.html+cakephp+%E3%82%A2%E3%82%BD%E3%82%B7%E3%82%A8%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3+left+join&hl=ja&ct=clnk&cd=10&gl=jp

そして、この findAll() で実行された SQL は以下の通り。

SELECT `Job`.`id`, `Job`.`com_id`, `Job`.`name`
FROM `jobs` AS `Job` LEFT JOIN `coms` AS `Com` ON `Job`.`com_id` = `Com`.`id`
WHERE 1 = 1 ORDER BY `Job`.`id` ASC LIMIT 10;

212nobodyさん:2008/03/19(水) 23:42:19 ID:???
belongsToじゃなくてhasManyのこと言ってるんだけど。
参照の方向が違う。
213nobodyさん:2008/03/20(木) 00:12:41 ID:???
といわれてもなぁ、

hasmanyとかconditionsにどういうSQLで
JOINするかをSQLの断片で書いているしなぁ。
JOINしているとわかりそうなものだがなぁ。
214nobodyさん:2008/03/20(木) 00:28:36 ID:???
子はJOINできないじゃん。
結局「表示するユーザ数+1のクエリが発行される」が間違ってることは示せないんでしょ。
実際やってみてクエリログ見ればすぐ分かるはずなんだが。
215nobodyさん:2008/03/20(木) 00:37:04 ID:???
>>210
素人乙!
観点がずれてるよPHPの基礎からやりなおしてね
216nobodyさん:2008/03/20(木) 00:40:19 ID:???
1回のクエリで全てが補えることに超したことはない
その代わり複雑なSQL文を書かないといけないから
CakePHPの負荷よりも生産性というスタイルに合わないがな
ループの中でクエリをぐるぐる発行しまくると負荷が高くなる
217nobodyさん:2008/03/20(木) 00:43:11 ID:???
>>215
結局こういうのが出てくるのか・・・
ほんとバカばっかだなー

それじゃ論点がどうずれてるか説明もらってもいい?
210での発言にphpの基礎は全く関係ないから、それのほうが論点ずれてると思うのだが。
んで、実際お前のcakeではこの処理でどういうクエリが発行されんの?
218nobodyさん:2008/03/20(木) 00:47:43 ID:???
>>209
よほどのことがない限り
ループの中にループは入れない方がいいよ
負荷がかかるからね。
219nobodyさん:2008/03/20(木) 00:52:19 ID:???
CakePHPのおかげで
とてつもなく負荷の高いシステムがたくさん世に出そうだな
こりゃサーバー会社が儲かるな
sakuraインターネット株でも買うか!
220nobodyさん:2008/03/20(木) 05:31:17 ID:???
1.2のpaginate機能はつかえねーな
柔軟な制御ができん、
ページリンクに検索項目のパラメーター付加できない、というか
できるけど、面倒なことしないとダメくさい
ソート項目のパラメータは標準で付加できるようだが
221209:2008/03/20(木) 10:56:59 ID:mwRuCB98
>>218

私の技術力だと、二重ループ以外に実現する方法が思いつかないのですが、
他によい方法があったら教えてもらえますか?

ユーザ毎のコメントを表示する機能はパスするにしても、
同様にmasManyリレーションのテーブルを親子両方とも表示したい
機会はあると思うので。


負荷という意味では、masManyの定義でlimit=>10とする事で大量の子を
取得しないように、というのは心がけています。
222nobodyさん:2008/03/20(木) 11:48:27 ID:???
>>219
もっと負荷の高いsymfonyもありますぜw
223nobodyさん:2008/03/20(木) 12:36:12 ID:???
というか、プライマリーキーで
データを取得することが
負荷が高いと思っているのかな?

JOINの方がよっぽど負荷高いですぜ。
224nobodyさん:2008/03/20(木) 12:40:34 ID:???
DB周りじゃないだろ多分
225nobodyさん:2008/03/20(木) 12:58:50 ID:???
>>210
> お前らのcakeはこの時どういったクエリが発行されんの?

こういうクエリが発行されますがなにか?

select ... from users ... (id 1,3,5のユーザがヒットする)
select ... from comments where user_id in (1, 3, 5 ) ...
226nobodyさん:2008/03/20(木) 13:35:31 ID:???
CakePHPのどんどん負荷をかけて生産性を上げなさいというスタイルが
自分の性格に合わない気がしてきた
227nobodyさん:2008/03/20(木) 13:39:58 ID:???
まだ、例のアンチが常駐しているのかw

CakePHPはメモリも食わないし、負荷も高くない。
生産性は高い。
228nobodyさん:2008/03/20(木) 13:40:43 ID:???
アンケート

1.ページ送りの絞り込み条件パラメータをセッションで持たせている
2.ページ送りの絞り込み条件パラメータをURLの後ろに繋げてる(CakePHP1.1 paginate)
3.ページ送りの絞り込み条件パラメータをURLの後ろに繋げてる(CakePHP1.2 pagination)
229nobodyさん:2008/03/20(木) 13:45:28 ID:???
>>228

4. 基本は3と同じだが、場合によってpagination等をオーバーライドして独自の条件を追加している。
230nobodyさん:2008/03/20(木) 13:45:45 ID:???
>>227
矛盾してるな。それらは反比例の関係にあるからな
231nobodyさん:2008/03/20(木) 13:45:54 ID:???
>>226
たしかに、
●自分の用途に合わせて、全てのコードとHTMLを一から作成したシステム
●作り込み部分は最小限にして、大半のコードはcakePHP任せにしたシステム
を比べると、負荷は、一から作成したシステムの方が、余分なものがない分、
軽くできるかもね。

まあそこはトレードオフの部分だから、自分に向いてないと思ったら、
cakePHP以外のやり方を模索すればいいと思うよ。
232nobodyさん:2008/03/20(木) 13:47:58 ID:???
>>230
よくわからんが、いまどき生産性の悪いほうを
選びたいのか?
233nobodyさん:2008/03/20(木) 13:49:21 ID:???
負荷が高いシステムを作っているところは
どこでもフレームワークを使っている。
234nobodyさん:2008/03/20(木) 13:50:32 ID:???
>>229

View側で
$paginator->prev()
$paginator->next()

の第2引数に絞り込み条件を配列で入れてやら無いと
URLの後ろにパラメーターが付加されてなくない?

http://localhost/cake/test/index/page:1/parameta:hogehoge
みたいなかんじ
235nobodyさん:2008/03/20(木) 13:55:14 ID:???
>>234
いまソースが手元に無くて忘れたが、CakePHP1.2でかなり改善された。
そういえば、そういうパラメータを”コントローラ”側で追加していたきもする。
コントローラーのpagination変数だったっけ?
pagination[モデル名]だっけ?
まあわすれた。
236nobodyさん:2008/03/20(木) 13:55:53 ID:???
>>233
どちらかと言うと、「負荷が高いシステム」と言うより、
「大規模なシステム」はフレームワークを使ってるという感じじゃない?

そうしないと、コーディングや保守が大変だもんなあ。
237nobodyさん:2008/03/20(木) 14:03:35 ID:???
結局は、昔からある速度重視でアセンブラ(生PHP)で書くか、
生産性重視で高級言語(フレームワーク)で書くかの話でしかないな
238nobodyさん:2008/03/20(木) 14:07:42 ID:???
小規模フレームワークはCIが一番だと思うんだよね
CakePHPは小規模フレームワークのクセにsymfonyと同レベルくらい負荷かかりすぎ
239nobodyさん:2008/03/20(木) 14:12:16 ID:???
>>238
宿題。

それをデータで示してください。

つーか、何をもって小規模といっているのかわからん。
240nobodyさん:2008/03/20(木) 14:15:07 ID:???
機能が少ないほうが早い。 機能と速度どっちをとるかだ。
241nobodyさん:2008/03/20(木) 14:15:17 ID:???
>>239
10万stepまで 小規模
データは「CakePHP CodeIgniter ベンチマーク」でググれ
242nobodyさん:2008/03/20(木) 14:18:04 ID:???
243nobodyさん:2008/03/20(木) 14:20:54 ID:???
だめだな。CodeIgniter は小規模でしか使えない。
一番重要なモデルが貧弱すぎる。中規模以上ならCakePHPだな。
http://blogs.atanaka.biz/tanaka/index.php?itemid=691

・フレームワークにありがちな、あまり使わない機能が削がれている
・フレームワークにありがちな、よく使う機能もけっこう削がれている。
・だから、ステップ数が他のPHPフレームワークと比べて格段に少ない。
・だから、実行速度が速い。(ベンチマークはこちら)
・フレームワーク自体が複雑なことをしようとしていないので、潜在バグの深刻さも小さい。(たぶん)
・マニュアルがかなり読みやすく、取っつきやすい。
・cakePHPには名前のインパクトには負ける。
・ZendFramework には格式の高さで負ける。
・MVCというよりは、VCだ。モデルはあくまでもおまけ的。
・PHPがそもそもテンプレート的なんだからテンプレートエンジンいらない、と考えているふしあり。(だから速い、と)
・でも、簡単な変数置き換えの簡易テンプレートはデフォルトでついてるし、Smartyとの連携もできる。
244nobodyさん:2008/03/20(木) 14:22:14 ID:???
流行らないフレームワーク。そっちで盛り上げてくださいw

[PHP][フレームワーク]CodeIgniterスレ
http://pc11.2ch.net/test/read.cgi/php/1177683436/
245nobodyさん:2008/03/20(木) 14:25:59 ID:???
>>243
モデルはCIベースでオレオレ的に拡張した方がいい。
CakePHPの既存モデルにしっくり来ないから
まずコードが凄く見難い状態になる
結局バリデートにYAML使ったりと拡張しないいけない
246nobodyさん:2008/03/20(木) 14:27:28 ID:???
小規模 CodeIgniter
中規模 CakePHP
大規模 Symfony

これでいいじゃん
247nobodyさん:2008/03/20(木) 14:29:19 ID:???
小規模 CI
中規模 CI
大規模 ここまできたらCIでいいや
248nobodyさん:2008/03/20(木) 14:31:12 ID:???
CIのサクサク感を味わうと他のFWは使えない
249nobodyさん:2008/03/20(木) 14:36:26 ID:???
>>225
それバージョンいくつ?
250nobodyさん:2008/03/20(木) 14:36:52 ID:???
viewの先頭でoptions()を使って追加文字列をセットしておけば、prev()やsort()等で追加の指定する必要なくなる
$paginator->options(array('url'=>'hogehoge'))

controllerでpaginate(モデル)した後のoptionsにセットしてもurlに展開される
$this->params['paging'][モデル]['options']['hogeoge_key']='hogeoge_value'
*この方法は裏技的な気がするけど、、、
251nobodyさん:2008/03/20(木) 14:39:31 ID:???
>>249
1.2ですが?
252nobodyさん:2008/03/20(木) 14:40:57 ID:???
痛いCI厨は自分のスレを盛り上げてこいよw
わざわざCakePHPスレを盛り上げて乙
253nobodyさん:2008/03/20(木) 14:46:46 ID:???
経験から言うと、どんなものでも「軽い!」という触れ込みでデビューしたものは、
最初は機能が少なくて、バージョンがあがるにつれて機能が追加され最終的には重くなるんだよな。
で、ほかと同等の機能を備えたときには、ほかと同等の重さになっている。
254nobodyさん:2008/03/20(木) 15:00:55 ID:???
CIスレですが、今週の日曜以降、書き込みがありません。
使ってる方、どうぞ書き込んで下さい。

http://pc11.2ch.net/test/read.cgi/php/1177683436/l50
255nobodyさん:2008/03/20(木) 15:11:51 ID:???
akelosスレなんてもっと(ry
256nobodyさん:2008/03/20(木) 15:33:39 ID:???
>>251
hasManyアソシエーションでlimitを指定しないと確かに225のクエリになる。
ソース読んだらそのためのif文があった。これは知らなかった。サンクス

limit指定しないのが普通なのか・・・あと、なんでそういう実装にしてるんだろう。
limitでUserの件数絞るとしてもwhere user_id (1,3,5)はできると思うのだが。
257nobodyさん:2008/03/20(木) 15:35:10 ID:???
間違えた。
> limitでUserの件数絞るとしても
limitでCommentの件数絞るとしても
258nobodyさん:2008/03/20(木) 15:42:11 ID:???
>>256
>>257
面倒ならカスタムsqlでやれば早いじゃん
259nobodyさん:2008/03/20(木) 15:42:19 ID:???
んー、Commentに対するlimitがある場合はそう実装するしかないのか。
バカじゃん俺。この振る舞いについてのドキュメントはどっかにあったのかな。
連投スマソ。
260nobodyさん:2008/03/21(金) 01:06:38 ID:???
Cakeとは関係ないんですが、複数のモデルの処理(全部更新)を1個のトランザクションにするときってどう書いたらいいですか?
コントローラーにこんな感じで書こうと思うのですがどうでしょうか。

start transaction

$resultA = $modelA ->method();

if($resultA == 'error')
{
rollback
return;
}

$resultB = $modelB ->method();

if($resultB == 'error')
{
rollback
return;
}

$resultC = $modelC ->method();

if($resultC == 'error')
{
rollback
return;
}

commit
261nobodyさん:2008/03/21(金) 04:01:36 ID:???
>>260
スレ違いだと思うんだけど・・・
262nobodyさん:2008/03/21(金) 11:15:08 ID:???
confirmぺルパー作成完了
263nobodyさん:2008/03/21(金) 11:28:48 ID:???
ぺルパーについてkwsk
264nobodyさん:2008/03/21(金) 22:38:30 ID:???
バリデートのyaml化作業開始
265nobodyさん:2008/03/22(土) 02:17:57 ID:rTbTxKR5
コンポーネントの中でモデルって使えるよね、$this->モデル名とかで。
コントローラにはあまり詳細な処理は書きたくない(つまり、大まかな流れだけ)ので、
具体的な処理はコンポーネントをこさえて、そちらで処理したいんだけど考え方あってるかな?
たとえば、会員登録処理をするアプリを例にすると、UserRegisterComponentみたいなのを作って
identify()やregister()、update()といったモデルを扱う処理を記述して、
コントローラーからはフォームの値の受け取りとコンポーネントをコネコネ使うこと、結果によって
ビューを表示しわけるようなイメージです。
ソース書いて晒した方が早い?
266nobodyさん:2008/03/22(土) 03:46:35 ID:???
>>265
> コントローラにはあまり詳細な処理は書きたくない
> 具体的な処理はコンポーネントをこさえて、そちらで処理したい

大事なのはこれらの明確な理由が何なのかってことだと思う。
その会員登録処理がシステムの他の部分からも必要になるならコンポーネントにした方がいいと思うよ。
もしくは他のアプリでも(ほぼ)そのまま使用できるなら。
あとはコントローラとモデル(DAO層)を分離することでテスタビリティを向上させたいとかかなぁ
例えばテストの時はモックコンポーネント使うようにすればデータベースがなくてもコントローラのテストができる。
267265:2008/03/22(土) 05:08:43 ID:rTbTxKR5
>>266
なるほど。コンポーネントで会員登録処理と思いついた理由は指摘のとおり他のアプリで
いつも同様のことを実装してるのでコンポーネント化してしまおうというのが一番の理由。
それにコントローラ内に細かい条件分岐や処理を書き始めるとものすごくコードが肥大して
メンテナンスがし難いし、もし今後会員登録のフローを同アプリケーションの別箇所でも使い
たいって仕様変更があっても対応しやすいかと。

でも、「会員登録(管理)コンポーネント」なんて作っちゃうとモデルやDBテーブルの構造が
かなり固定化&依存してしまうのがいやだなだ、と…(AuthComponentみたいにね)
それならばpluginにしちゃえば?って考えることもあるけど、pluginってあんまり使われてないし。
うーむ。
268nobodyさん:2008/03/22(土) 10:11:22 ID:???
>>267
そんな恐ろしいほどにコードが肥大する。かつそれら共通利用する機会が多いなら
コンポーネント化しちゃいなよ
269nobodyさん:2008/03/22(土) 10:19:47 ID:???
>>267
DBテーブルの構造がかなり固定化&依存

これ内容が会員登録だったらテーブル構造に依存しちゃうのやばいだろ?
会員認証なら固定依存しても、それほど問題ないけど
コンポーネントてそもそもDBテーブルの構造がかなり固定化&依存してしまうものなんだね
270nobodyさん:2008/03/22(土) 10:52:32 ID:???
>>267
コンポーネント設計のポイントは、Plug-and-Playを可能にすることであり、独立性を高めることにある
重要となる設計要素は、インターフェースであり、注目すべきは設計要素間の依存関係だと思う
内部実装に依存しない形でコラボレーションをモデル化できるインターフェースが重要じゃないかな

コンポーネント化するということは、結局クラスをグループ化することだからね
クラス間の関連(集合-部分、汎化-特化)と依存関係を意識して設計しないと
物理的にはコンポーネント化したが、論理的にはひとつのシステム全体
ひとつの再利用単位として使わざるを得ないという状況が現れるから
この点で、依存関係の設計はかなり重要
271nobodyさん:2008/03/22(土) 11:26:27 ID:???
>>266
モックコンポーネント

あまり聞かない、組み合わせだけどw
モックとコンポーネント入れ替えするものじゃないの?
272nobodyさん:2008/03/22(土) 11:49:52 ID:???
モックンがどうかしたって?
273nobodyさん:2008/03/22(土) 19:56:20 ID:rTbTxKR5
ちなみにCakePHPのプラグインを配布してるサイトをご存知ですか?
「配布できる」と書いてあるくせに、プラグイン配布サイトって見たことないやと思って。
「会員登録プラグイン」とかあるといいのになー

会員登録コンポーネントの件、結局ユーザーテーブルを分けて(users:ログインIDとパスワードだけ、user_profiles:その他のプロフィール項目)
コンポーネントで固定化するのはusersテーブルを主にして、user_profilesの方はアプリケーション毎に
自由に定義できるような仕様でコンポーネントを書いてみようかと思っています。
274nobodyさん:2008/03/22(土) 20:52:09 ID:???
>>271
そういうこと。テストの時はモックを使うようにする。
「コンポーネントのモック」って意味でモックコンポーネントって言った。
275nobodyさん:2008/03/22(土) 21:01:00 ID:???
>>273
会員登録プラグイン

何度も使うような処理でも無いし面倒な処理でもないからなあ

個人的には確認画面やらページ送りやら何度も使う場面のあるプラグインもしくは
コンポーネントが欲しい
276nobodyさん:2008/03/23(日) 01:31:09 ID:???
バリデートのyaml化作業完了
yamlの空白に少しはまった
277nobodyさん:2008/03/23(日) 02:03:00 ID:???
>>276
おつかれっす
278nobodyさん:2008/03/23(日) 12:24:28 ID:???
findのような感じで、IDを指定してDBデータの更新を
ファンクションはありますか? イメージとしてはこんな感じで。
$this->Post->hogehoge($id, 'Address'->'Hokkaido');


Model classのファンクションを一通り眺めてみたのですが、
それらしきファンクションを見つける事ができませんでした。

http://api.cakephp.org/class_model.html#d25735e5d69a1c55c58de6df8c06bd9e
279nobodyさん:2008/03/23(日) 13:03:51 ID:???
>>278
ファンクションて何ですか?素人は書き込まないで下さい
280278:2008/03/23(日) 13:46:28 ID:9wMqWTzf
>>279
先に挙げたURLで、「Public Member Functions」と記述されていたので、
ファンクションと書かせてもらいました。

methodと言えばいいですか?
既存のものでいうと、findAllやsaveなどの事です。

ご存じでしたらお教え下さい。
281nobodyさん:2008/03/23(日) 14:00:59 ID:???
>>280
こんなとこで聞くよりも自分でソース見た方が早くね?
282nobodyさん:2008/03/23(日) 21:00:13 ID:xiSCrZA7
>>275
会員登録プラグイン、完成したら俺にくれ
283nobodyさん:2008/03/23(日) 22:20:17 ID:???
>>282
いらねー。たぶん需要ない
会員登録なんてすぐ作れるやんwww
284nobodyさん:2008/03/23(日) 23:07:41 ID:???
>>278
カラム単位の更新でいいなら、saveField。

$this->Post->id = $id;
$this->Post->saveField('Address', 'Hokkaido');
285nobodyさん:2008/03/23(日) 23:25:30 ID:???
いらなきゃ使わなきゃいいじゃん。
小さい車輪だろうが再開発をしなくて済むなら助かる。
286nobodyさん:2008/03/24(月) 00:14:26 ID:???
再開発する機会が少ない。激しく無駄
そうじゃなければ、すでに作ってる人たくさんいるよ
287nobodyさん:2008/03/24(月) 00:19:02 ID:???
ほんとにいらなければ何もコメントしないので、たぶん荒らし。
スルー推奨。

しばらく前、本やWebを参考にRoRを使っていたが、cakePHPの方が
使いやすい。
ひょっとしたら、RoRでActiveRecordとかに若干慣れたので、
馴染みやすかっただけかもしんないけど。
288nobodyさん:2008/03/24(月) 00:22:17 ID:gAnd/HKb
Cakeのプラグインって、なにか有名なのってあったっけ
なんのためにプラ銀機能なんて実装されてんの?
289nobodyさん:2008/03/24(月) 03:29:33 ID:???
都道府県データどこにいれてる?
290nobodyさん:2008/03/24(月) 03:37:25 ID:???
コントローラ全体じゃなくてメソッド単位でヘルパー、コンポーネント呼び出すにはどうすればいい?
会員登録ページのメソッドにアクセスしてるにもかかわらず
コントローラでPaginationコンポーネントを定義していれば
ページ処理の関わるクラスがnewされるんでしょ
291nobodyさん:2008/03/24(月) 13:06:37 ID:???
ヘルパーは細かく考えずにコントローラ単位で呼び出すのがCake流
コンポーネントやモデルはヘルパーに比べればメソッド単位で呼び出しやすいけど
こっちも深く考えずにコントローラ単位で呼び出すんだ
多分
292nobodyさん:2008/03/24(月) 13:16:08 ID:???
例えばググレカスアクションでほげヘルパーを呼び出す場合

function gugurekasu() {
    App::import('Helper', 'Hoge');
    $ajax = new HogeHelper();
}
293nobodyさん:2008/03/24(月) 20:55:32 ID:???
まあ、そんなに特定のアクションでだけ
ヘルパーとか呼び出したいのなら、
そういうコンポーネントを作ればいいんじゃないのかな?

コンストラクタあたりで、url見てごにゃごちゃすれば出来るでしょう?
294nobodyさん:2008/03/25(火) 00:59:47 ID:???
>>292
ネーミングが中途半端だな
HogeHelperだけ普通やん
295nobodyさん:2008/03/25(火) 01:51:15 ID:???
>>294
むしろ$ajaxに突っ込んで欲しかったな
296nobodyさん:2008/03/25(火) 10:30:40 ID:Qe2AafnS
モデルってあんまりごちゃごちゃ書きたくないよな、dbdesigner2cakeとか使ってるとメンテナンスの面からとく。
だからといってコントローラにごちゃごちゃとロジックを書き並べたくないので
コンポーネントにすべてモデルを操作するカスタムメソッドを記述してます。

これって俺だけ?
297nobodyさん:2008/03/25(火) 10:37:30 ID:???
だからコントローラにいろいろ書くのは
まずいケーキだってケーキ様が言っている。

http://cakephp.org/files/OCPHP.pdf
298nobodyさん:2008/03/25(火) 10:46:51 ID:???
>>297
ケーキがどうのこうのいおうが
自分の見やすい書き方が一番

たとえば1万step以下のコードなら
全部コントローラに書いた方がいい、みたいなね!

299nobodyさん:2008/03/25(火) 10:55:58 ID:Qe2AafnS
>>297 
3ページ目? こんなにモデルに書くもんかね…
俺だったらcとmの間のコンポーネントをずっしり書くな。別のプロジェクトにも使いまわしできるし。
コントローラだとほぼ、使いまわせないしな。
300nobodyさん:2008/03/25(火) 11:02:26 ID:???
1万ステップコントローラにべた書きとかすごいね
301nobodyさん:2008/03/25(火) 11:05:24 ID:???
>>296
コントローラに関する再利用性の高いメソッドはコンポーネント
モデルに関する再利用性の高いメソッドはビヘイビア

再利用性が高いロジックじゃないとダメ
そのロジックがコントローラ側かモデル側かどっちに属するかを間違えるとダメ
302nobodyさん:2008/03/25(火) 11:07:56 ID:???
>>300
再利用性が無いなら
10万stepsでもコントローラにベタ書きするしかないよ
303nobodyさん:2008/03/25(火) 11:08:52 ID:???
>>299
コンポーネントはコントローラとモデルの仲介役じゃねーよwww
304nobodyさん:2008/03/25(火) 11:12:12 ID:???
>>299みたいに再利用性の低いものまでコンポーネントはダメだろな
305nobodyさん:2008/03/25(火) 11:13:20 ID:Qe2AafnS
ビヘイビヤって1.2からのやつだよね?
306nobodyさん:2008/03/25(火) 11:14:25 ID:???
>>296
コンポーネントにすべてモデルを操作するカスタムメソッドを記述してます

これダメだろ?再利用性の高さとか無視してるやん
307nobodyさん:2008/03/25(火) 11:17:23 ID:???
1.1てバリデーションのyaml化できないんでしょ
それだけでもオワッテルw
308nobodyさん:2008/03/25(火) 11:22:06 ID:???
都道府県データとか
男性・女性・オカマとか
こういうセレクトに必要な初期データはどこへ入れるの?
309nobodyさん:2008/03/25(火) 11:38:31 ID:???
>>307
spyc重くね?

>>308
とりあえずモデル作ってfind('list')呼んでセレクトボックスへ流す。
都道府県データなんてほぼ100%変更出ないからデータの中身は定数でもいいし
郵便番号検索とか使うアテがあるならデータベース使う。
中で何やってるかは置いといて、ともかくモデルから呼べる事が大事。
310nobodyさん:2008/03/25(火) 11:42:07 ID:???
>>309
モデルのメソッドの中に都道府県データをいれて
呼び出してもOK?
もしくはDBからひっぱる、それ以外に方法はわからない
311nobodyさん:2008/03/25(火) 11:44:21 ID:???
データ量の多い定数なら、別ファイルにして
呼び出すときにモデル経由でincludeして呼び出すのがいいのかな
312nobodyさん:2008/03/25(火) 12:29:56 ID:???
>>309
> spyc重くね?
書くのはYAMLでもキャッシュとしてPHPのシリアライズデータに
変換してそれを読み込むから重くない。
313nobodyさん:2008/03/25(火) 12:34:26 ID:???
>>298
ケーキを使っている以上ケーキ様の言うことは絶対です。

コンポーネントにいろいろ書くとどれだけテストが大変になるか。
314nobodyさん:2008/03/25(火) 12:38:32 ID:???
>>308
> 男性・女性・オカマとか
これじゃ足りないな。

現在の肉体的性別 男・女
生まれたときの肉体的性別 男・女

現在の精神的性別 男・女
生まれたときの精神的性別 男・女

好きな性別 男・女・両方・肉体が男・肉体が女

まだ足りないかもな!
315nobodyさん:2008/03/25(火) 13:04:07 ID:???
>>313
再利用できないものは
コントローラーにいろいろ書くしかない
ケーク様が何も用意してくれてないから
316nobodyさん:2008/03/25(火) 13:06:05 ID:???
>>298の言ってる事はともかく
>>313はAuthComponentのソース見た事あるのかな
317nobodyさん:2008/03/25(火) 16:31:35 ID:???
コンストラクタでぐにょぐにょしたいときは
コンストラクタ内で先に
parent::__construct();
を呼ばないとダメだよ
なぜ?て
それは>>318が答えてくれるはず
318nobodyさん:2008/03/25(火) 17:10:42 ID:???
うんこちんちん
319nobodyさん:2008/03/25(火) 17:42:53 ID:???
こんなに、解釈によって作り方が変わって来ちゃうなら、フレームワークの「良い意味での縛り」のメリットが無いね。
それぞれが間違いとも正解とも言えないから余計めんどくさい。
もっと縛りがキツければ良いのに。
320nobodyさん:2008/03/25(火) 18:12:31 ID:???
>>319
バカがルールを勘違いしてるだけwww
321nobodyさん:2008/03/25(火) 18:24:02 ID:Qe2AafnS
ビヘイビアのうまい使い分けがわかんないー

Emailコンポーネントと連携して"emailable=1"を判別してメールするビヘイビアだとか、
ソフトデリート(=削除フラグ=1を削除)を実装したビヘイビアとかのサンプルは目にした
んだけど、もっと実践に役立つ使い道ってどんな風なの??
322nobodyさん:2008/03/26(水) 01:26:50 ID:???
俺が作っているやつでは、「自動入力フィールド」をビヘイビアでやっている。
ユーザーが入力した情報を加工したものを別フィールドに自動的に保存する。
データベースのセオリーからいえば計算で求められる物なのでビューやトリガーを使うところだが、
パフォーマンスを重視&汎用性を高めるためにこうしている。

あとどこかでぐぐって見つけた画像を保存するビヘイビア。

あるテーブルに保存したら、自動的にほかのテーブルにメタ情報を保存するビヘイビア
つまりトリガーの代わりだね。

文字コード変換ビヘイビア

仕様が変わって使っていないが、一つのフィールドに複数の値を入れられる配列型フィールドを作るビヘイビア。
(一対多のテーブルを作れというなよ?そんなJOINが発生する重い処理を作りたくないこともあるんだ。
SQL99 で標準規格化されたしね。)それの応用でオブジェクト(シリアライズ)型

それともうひとつあるのだが、これはちょっとアイデア賞物だと思うので自分のブログで書きたいw

結構いろいろ使っているなw 総論としてデータベースの機能を拡張したいときに使っている。
323nobodyさん:2008/03/26(水) 02:10:48 ID:???
>>322
日本語でおk
あいかわらず文章下手糞やなw
単純なことをわかりにくい表現するの好きやな
前スレから全く変わってねーな
324nobodyさん:2008/03/26(水) 02:19:26 ID:???
>>322
結局cakeライブラリのモデルで実装されてる機能を少し拡張したいときに
ビヘイビアにいれてるんでしょ?
325nobodyさん:2008/03/26(水) 02:29:03 ID:???
>>322
ユーザーが入力した情報を加工したものを別フィールドに自動的に保存する。

この自動的て具体的にどういう意味?
326nobodyさん:2008/03/26(水) 02:34:57 ID:???
>>322
ユーザーが入力した情報を加工したものを別フィールドに自動的に保存する。

これは前スレで自作ヘルパーでやってなかったか?
パフォーマンスを重視&汎用性を高めるというのに具体的内容が欲しい
327nobodyさん:2008/03/26(水) 02:40:36 ID:???
>>322
一つのフィールドに複数の値を入れられる配列型フィールド

SNSのような大規模サイトでもこれ使う機会なんて滅多にないんだが、何作ってんの?
328nobodyさん:2008/03/26(水) 03:04:09 ID:???
>>322
配列型フィールドて
mysqlでも検索や集計はできるの?
329nobodyさん:2008/03/26(水) 03:06:22 ID:???
>>322
配列型フィールドを使わない人にとっては
激しく必要のないビヘイビアじゃね?
330nobodyさん:2008/03/26(水) 03:12:41 ID:???
>>322
それともうひとつあるのだが、これはちょっとアイデア賞物だと思うので自分のブログで書きたいw

恒例自慢きたこれw
331nobodyさん:2008/03/26(水) 03:36:11 ID:???

なんだこの過剰反応ぶりw

みるからに同一人物のようだが、
ただの使用例に必死すぎだろw
332nobodyさん:2008/03/26(水) 03:41:59 ID:???
○○○を使わない人にとっては
激しく必要のない○○○じゃね?

なんにでも当てはまるなw
無理やり反論しようとして滑ってる。
333nobodyさん:2008/03/26(水) 03:47:41 ID:???
>>331
>>332
同一人物乙
334nobodyさん:2008/03/26(水) 03:51:47 ID:???
確かに同一人物だが、それが何か?
335nobodyさん:2008/03/26(水) 04:15:24 ID:???
>>333
cakephpとは外れたこと書くな
336nobodyさん:2008/03/26(水) 04:38:16 ID:pkIggipT
CakePHPで開発するアプリを設計する際にUMLで書いてる人いる?
シーケンス図やクラス図なんかどんな風に記述してるかとか見せてもらえると
参考になります。
337nobodyさん:2008/03/26(水) 04:51:55 ID:???
>>336
UMLを使うと従来の方法より効率が落ちる時もある。
なぜなら、従来なら手書きで適当に書いてきた図をUMLでどうやって書けばいいのか調べなければならないから。
書き方が全部頭の中に入った後でなら従来よりスムーズに開発ができるようになるかもしれない
が、しかし、それまでは相当の苦労が必要w
オブジェクト指向開発とUMLとはまた別の話でUMLはオブジェクト指向開発の道具にすぎない
338nobodyさん:2008/03/26(水) 04:59:22 ID:???
>>336
UML?時間の無駄だろ。そんなん書いてたら
工数オーバーするしで誰も喜ぶもんおらんで
339nobodyさん:2008/03/26(水) 05:04:03 ID:???
C#やJAVAならわかるけどPHPでUMLて
そんなクラスが複雑じゃないやん
340nobodyさん:2008/03/26(水) 05:24:25 ID:???
そういう問題じゃねーだろw
341nobodyさん:2008/03/26(水) 10:28:27 ID:???
>>339
確かにphpでUMLてぐぐったけどあまり無いな
342nobodyさん:2008/03/26(水) 10:50:05 ID:???
そりゃぐぐったことが無いという人もいるだろう。
だがそれは個人の話であって統計的な意味は無い。

検索結果のほうがまだ意味があるな

PHP UML の検索結果 約 957,000 件中 1 - 10 件目 (0.03 秒)
Java UML の検索結果 約 593,000 件中 1 - 10 件目 (0.04 秒)
C# UML の検索結果 約 404,000 件中 1 - 10 件目 (0.04 秒)
343nobodyさん:2008/03/26(水) 11:29:28 ID:???
Cakephpと関係ない話すんなやボケどもが
344nobodyさん:2008/03/26(水) 11:31:39 ID:???
なんでCakePHPにUMLの話が出るのかわからんw
345nobodyさん:2008/03/26(水) 11:37:41 ID:???
>>340
そういう問題だろw
346nobodyさん:2008/03/26(水) 11:58:29 ID:???
俺はJavaをメインでやってるけどUMLは
複雑になってくるクラス間の関連性の構造の手助けとしてUMLを活用することが多い
だから>>339のいってるように複雑なクラスで無ければ必ずしもUMLが必要とは思わない
347nobodyさん:2008/03/26(水) 12:17:07 ID:???
ユースケースは必ず書くけど、シーケンスみたいな実装よりの奴は
実装者が未熟な場合か、処理が複雑なときだけかな。
クラスダイアグラムはモデル限定でこれもテーブル構成が複雑なときだけ。

ユースケースは文書に起こして仕様書にするので必須。

PHPのクラスを自動生成してくれる奴なかったっけ?
あれでCakeのモデルを自動的に管理してくれると楽かも...楽じゃないかw
348nobodyさん:2008/03/26(水) 12:24:40 ID:???
UMLのクラス図ってようするに継承関係と関数定義(実装コード無し)を
書いているだけでしかないからなぁ。

それならコードで書いてコードからクラス図を自動生成したほうが楽。
349nobodyさん:2008/03/26(水) 12:38:45 ID:???
Javaだとクラスが複雑になってしまうんだよね。
正確にはEJBを使った場合だが、同じものを作るにしても
無意味に複雑になりすぎる。
あれじゃあ、UMLが必要になるのもわかる。
350nobodyさん:2008/03/26(水) 13:44:26 ID:ktIW9Uv7
ちょwww おまえら設計書も書かずに開発しちゃってるのかよ、涙がでるな。
それだから「できました」とかいいながらテストしたらバグ出まくりのプログラムなんか量産しちゃうんだよwwww

UMLじゃなくてもいいが、実装前に詳細なロジックを書き起こしてからコードつくるのは常識だろ。
時間がかかる、めんどくさい、頭の中にもう仕様書書いてあるから、という奴に限ってたいした技術力じゃないんだよな。
設計書ってのはコーディング作業が楽になるだけでなく、チーム関係者との意識共有や、リリース後しばらくたってメンテが必要になった時に効果がでるもんだぜ。
プロとして仕事でやってるならば当たり前だと思ってるが、ここにはプロはいないのか?
351nobodyさん:2008/03/26(水) 14:32:19 ID:???
楽譜の読めないミュージシャンもいるしな。
352nobodyさん:2008/03/26(水) 15:25:48 ID:???
>>350
実装前に詳細なロジックを書き起こしてからコードつくるのは常識だろ

それお前だけの常識乙w
CakePHPのような小規模案件に無理があるぞお前w
353nobodyさん:2008/03/26(水) 15:29:27 ID:???
>>350
どこの大手で働いてんだよCakePHPさわってる分際でw
354nobodyさん:2008/03/26(水) 15:34:17 ID:???
>>350
CakePHPでいくらも稼げてねーくせにw
355nobodyさん:2008/03/26(水) 15:37:50 ID:???
短納期で回転させるのがCakePHPのメリットなのに
わざわざUMLとか工数伸びるだけやんけ
そんなんで、ほんまに黒字になってんのかw
356nobodyさん:2008/03/26(水) 15:41:14 ID:???
>>350
スレ違いながら言わせてもらうと・・

実際、開発しながら見えてくる事って多いよね。
キチンと設計や仕様固めが出来ないまま、見切りスタートを切ってしまうことも多々。
問題は、その仕様の追加、変更に対応出来るように設計する事だよ。
357nobodyさん:2008/03/26(水) 16:12:51 ID:???
そうなんだーUMLって書かないんだ。
俺は書き方すら知らないけど。

作る前に一応メモに何をどうするかを書き出して、その通りに作ってくね。
あまりに自分の頭の中だけで作ると変数とか何を使ったかわからなくなったり。

イラレで仕様書とか作るのが激しくめんどい。
よって手書きで自分はやってます。
358nobodyさん:2008/03/26(水) 16:15:44 ID:???
>ここにはプロはいないのか?
w
359nobodyさん:2008/03/26(水) 17:32:25 ID:???
え…設計フェーズ飛ばしていきなりコーディングに入るの?ギャグだろ?
最低限、要求定義書とユースケースとビジネスロジック(=モデル)の関係図とそれを基にしたスキーマ設計位は必要じゃねーの
打ち合わせ段階で作りまくるじゃん、そんなの
どやってクライアントのイチャモンに対応してるの?

>>357
イラレで仕様書とか正気?
360nobodyさん:2008/03/26(水) 17:56:28 ID:???
パワポが激しくめんどくさい。
よって俺もexcel&イラレだな。
361nobodyさん:2008/03/26(水) 17:58:19 ID:???
まあ、コーディング前の設計は
概要みたいなもんだからね。

たとえば関数をすべてコーディング前に列挙できるかといったらまず不可能

プロのプログラマはコードで設計するんだよ。
鉛筆で図を書くか、キーボードでコードで書くかの違い。
362nobodyさん:2008/03/26(水) 18:01:13 ID:???
プロはソースにたくさんコメントを残す。
363nobodyさん:2008/03/26(水) 19:04:34 ID:???
×プロはソースにたくさんコメントを残す。
○プロはソースに意味のあるコメントを残す。
364nobodyさん:2008/03/26(水) 20:37:18 ID:???
>>359
もっとプログラマと交流深めた方がいいよ
365nobodyさん:2008/03/26(水) 20:39:13 ID:???
>>359
どんだけ狭い世界観なんだよ
366nobodyさん:2008/03/26(水) 21:07:55 ID:???
10分以内( ´,_ゝ`)
367nobodyさん:2008/03/26(水) 21:55:41 ID:???
>>364
この人、確実に嫌われてるだろうな、プログラマに。
368336:2008/03/27(木) 00:00:03 ID:d9lPRB8S
>>336です
意外と盛り上がっててびっくり…
369nobodyさん:2008/03/27(木) 01:42:38 ID:???
>>359

イラレで仕様書は普通。
370336:2008/03/27(木) 02:53:28 ID:d9lPRB8S
>>369
マジかよ。それなんてイラレ?
371nobodyさん:2008/03/27(木) 11:48:14 ID:???
たとえばフォームにある省略可能な数値型の項目に
値を省略して(空文字で)データベースに保存した場合空文字でINSERTされる。

このときのどう保存されるか動作はデータベース依存であり
MySQLは0になり、PostgreSQLはエラーになる。

https://trac.cakephp.org/ticket/4233
チケットが出ていたみたいだが、修正無しでクローズ?

これ直る見込みないんかいな。確かに空文字とNULLは違うものだが
「データベースの省略可能な数値フィールド」ってのは
数値とNULLしか入れられないんだよね。

どうせNULLが入ったフィールドをModelから読み込むと
空文字になるんだし(あってるよね?)
NULLに変換して保存したほうが実用的だと思うんだけどなぁ。

データベース間の違いも吸収したほうがいいし。

beforeSaveあたりで書き換えるか・・・
372nobodyさん:2008/03/27(木) 15:25:42 ID:???
>>371
それはCakePHPに限ったことでは無いから死んでこい
373nobodyさん:2008/03/27(木) 15:27:34 ID:???
>>371
そんなどうでもいい作業するくらいなら
コンビニでバイトするよ
374nobodyさん:2008/03/27(木) 17:50:07 ID:???
CakePHPのアソシエーションでBelongsToやhasOneを渡り歩いて
広範囲のテーブルから値を持ってくるにはどうすればいいんでしょうか

SQLならLEFTJOINを繋げて行けば済むのですが
単純にrecursiveを増やしていくとクエリの量が異常に増えて困っています
375nobodyさん:2008/03/27(木) 19:31:16 ID:???
最近低レベルの煽りしか返さない奴がいるなウザイ。
どうせ同一人物だろうからトリップつけてくれ。削除すっからさ。
376nobodyさん:2008/03/27(木) 19:48:23 ID:???
>>375
低レベルの質問しかないから仕方ないこと
377nobodyさん:2008/03/27(木) 19:51:40 ID:???
>>374
リファレンスみろよ
こんなとこで聞くなカス
378nobodyさん:2008/03/27(木) 20:14:15 ID:???
>>376-377 だからトリップつけろってw
379nobodyさん:2008/03/27(木) 21:54:01 ID:???
>>377
アソシエーションが直接繋がっている関係なら資料は山ほどあるのですが
例えば4テーブル先まで繋がっているデータを手繰り寄せてくる場合、デバッグ情報を見ると
一旦findで取得してきた配列をforeachで回して一つ一つまたfindを使っているように見えます
結果、データ自体は取ってこれるもののSQLの発行数が異常な量になってしまいとても使う気になれません

SQLの発行を抑えつつもアソシエーションを柔軟に広げるためには、自前でqueryを使うしかないのでしょうか?
380nobodyさん:2008/03/27(木) 22:01:13 ID:???
ユニットテストでfixturesの機能使っている人いる?

var $fixtures = array(〜〜〜);

こんな感じでfixturesをしているわけだけどさ、
なんかテーブルの生成のタイミングとか変じゃない?

テストを単体で実行すると問題なく動くんだけど、
すべて実行するとテーブルが無いとか言われることがある。

381nobodyさん:2008/03/27(木) 23:06:17 ID:???
>>370
adobe社のイラレだと思うけど。

>>375

わかる。人をバカにしてばっかだよな。あおってるやつ。
見てて気分悪い。

>>376 >>377
リファレンス見てわかるならそのURL教えてあげようよ。
しかも、聞いてる 374 はある程度知識あると思うよ。
もうちょっと人を思いやる気持ちを持とうよ。
382nobodyさん:2008/03/27(木) 23:10:00 ID:???
>>372
まず、おまえがシネ
383nobodyさん:2008/03/27(木) 23:23:59 ID:???
>>379
質問の内容があまりにも素人すぎ
CakePHPばかにしてんのか?


384nobodyさん:2008/03/27(木) 23:25:34 ID:???
誰も馬鹿にしてないから答えろよw
385nobodyさん:2008/03/28(金) 00:13:02 ID:???
人をバカにすることで自分が上に立ったような感覚を味わいたいんだろうな
残念なやつが多い

>>379
その4テーブルはどんなリレーションなの?
で、今はどんなアソシエーションを記述してんの?
もしかしたらDB設計が悪いという可能性もある。
386nobodyさん:2008/03/28(金) 00:51:53 ID:???
>>385
各フレームワークの評価目的でプロトタイプを作っていますので
特定のテーブルの再設計で問題を解決するアプローチでは応用範囲が非常に限られてしまいます
申し訳ありませんがCakePHP側での解決を求めています

例えばごく単純にモデルが
A→B→C→D
とbelongsToで数珠繋ぎにアソシエーションが設定されている場合
AのリストにB〜Dのデータを動的に付加して取得したいとすると
どのような指定をすればよいのでしょうか

SQLならJOINをただ書き連ねていけばいいのですが
387nobodyさん:2008/03/28(金) 01:28:45 ID:???
>>386
CakePHPさわってどれくらい?
あまりにも初心者的な質問やめてくれる
388nobodyさん:2008/03/28(金) 01:30:56 ID:???
スレ分けて欲しいな。CakePHP初心者スレ作ってよ
389nobodyさん:2008/03/28(金) 01:42:40 ID:???
>>386
初心者が他人の力借りて簡単にCakePHP評価しようなんて
CakePHPなめすぎだろ?
自分で死ぬ思いでググれボケ
390nobodyさん:2008/03/28(金) 02:37:39 ID:???
>>386
できそうにない。

https://trac.cakephp.org/ticket/2931
上で同じようなこと言ってたけど対応なしにcloseされた模様。
https://trac.cakephp.org/ticket/4277
上も同様のことを言ってる。3週間ほど前。

>>377 >>383 >>387 >>388 >>389
俺もこれの具体的な解決方法を知りたいです。どうか教えてください。
391nobodyさん:2008/03/28(金) 02:57:36 ID:???
>>390
CakePHPの知識全くないくせに英語力を自慢がしたいの?
392nobodyさん:2008/03/28(金) 03:06:49 ID:???
>>390
>>371
ここにいる馬鹿どもが、みんな英語わかると思ってんのか?w
さりげなくバカにしてるだろ
393nobodyさん:2008/03/28(金) 03:20:48 ID:???
>>390
今調べて出来そうにないって。こういうケースはじめてなの?
経験浅すぎじゃね。1つのサイトをCakePHPで完成させたことないやろ
394nobodyさん:2008/03/28(金) 03:22:38 ID:???
>>391
いや、これに関しての日本語の情報がなかなか見つからなかったから英語の記事を探さざるを得なかっただけ。
で、CakePHPの知識がある人はこれをどうやって解決してるんでしょうか?
395nobodyさん:2008/03/28(金) 03:31:35 ID:???
>>390
どうして、できそうにないか具体的に日本語で説明しろ。わかったな命令だ
396nobodyさん:2008/03/28(金) 03:56:27 ID:???
このスレ、なんか冗談だと思えるくらい殺伐としてんな w
397nobodyさん:2008/03/28(金) 06:59:33 ID:???
>>396
何でだかアンチが混じっている。
で、cakePHPは重いとか、質問者を叩いたり。
無視推奨。

つか、アンチしてる人、cakePHPを無視すればいいのにね。
398nobodyさん:2008/03/28(金) 08:46:16 ID:???
英語のサイト貼りつけて叩かれるのは初めて見たw
日本のサイトで分からなければ、海外サイトくらい見るだろ。

分からなければWeb翻訳すればいいんだしな
399nobodyさん:2008/03/28(金) 09:18:10 ID:???
粘着気質で知性もないとか救いようがないな。
トリップの付け方も知らないらしいし、ほんと終わってんな。w
400nobodyさん:2008/03/28(金) 09:20:55 ID:???
なんだこの流れ
とてつもないバカが何人かいるな
401nobodyさん:2008/03/28(金) 09:29:46 ID:???
>>390
まさしくそのtickets通りです
CakePHPは隣り合ったアソシエーション間ではJOINを繋いでSQLワンコールに最適化してくれますが
それ以上のテーブルをまたいだ関係を持とうとすると途端にクエリ量が増えてしまいます

個人的にrecursiveでアソシエーションの深度を指定する考え方は
好感が持てるのですが、負荷の高さを考えると使用をためらわざるを得ません

サブクエリをインテリジェントに挿入しろとは言いませんが
今回の様な使用頻度の高いと思われる(かつ、割と実装の想像しやすい)処理ならば
既に解決された方がいらっしゃるのかと質問に至りました

--
先ほどContainableBehaviorを試してみましたがクエリ量は変わりませんでした
やはりコアに直接手を加えないといけないようですね(´・ω・`)
402nobodyさん:2008/03/28(金) 10:01:46 ID:???
A→Bのクエリ発行したときに
モデルにB→Aのアソシエーションも記述してあると
B→Aのクエリも発行される
だから
A→B→C→D のようなのをそのままやっちゃうと
えらいことになる

だから、いらいないアソシエーションはunbindModelでぶった切る

あと、1.2だと発行クエリが1.1より最適化されている
(つまり、少なくなってるってこと)
403nobodyさん:2008/03/28(金) 10:11:39 ID:???
>>397
明らかにアンチじゃない奴のほうがたち悪いぞ。質問者叩いてるのもそう。

>>402
>>401の問題解決にはならないんじゃない。B->Aのアソシエーションがなくても起こるから。

>>401
DBにview作れば早いと思うよ。
404nobodyさん:2008/03/28(金) 10:15:32 ID:???
質問があまりにもバカすぎて・・・
レベル低いよな。
ここでアフォみたいな質問してるやつは
CakePHPでサイト構築したことあるのかと聞きたいよ

405nobodyさん:2008/03/28(金) 10:19:27 ID:???
あまりにもバカみたいな質問にバカみたいな回答が多すぎ
もっと常識レベルでの会話して欲しいな
駄文ばっかで何の役にも立たないよ
406nobodyさん:2008/03/28(金) 10:27:40 ID:???
>>405
それそのまま>>405に当てはまるのわかる?
407nobodyさん:2008/03/28(金) 10:30:15 ID:???
もっと常識的な質問たのむ
408nobodyさん:2008/03/28(金) 10:36:03 ID:???
かわいそうに
409nobodyさん:2008/03/28(金) 10:57:56 ID:???
バッチ処理で長くかかる処理をやるのなら話は別だけど
ウェブアプリなんて画面に表示する少ないデータを
表示するだけなんだからJOINしなくてもいいと思うんだけどね。
どうせ複雑なJOINならJOINするのにも負荷かかるわけだし。

ま、パフォーマンスと開発効率のトレードオフ。
どうしても必要なら、モデルに専用の検索メソッドでも作って
自分でクエリー書けばいいんじゃない?
410nobodyさん:2008/03/28(金) 11:00:25 ID:???
もっと常識的な質問たのむ
411nobodyさん:2008/03/28(金) 11:03:37 ID:q/btZ3WH
アンチがしつこくネガティブキャンペーンするのも
CakePHPが人気になって普及してきた証拠かなぁw

アンチじゃない人はIDだすようにするか?
そうすればID出していない人はアンチってわかるし。
出したら出したで削除できるしw
412nobodyさん:2008/03/28(金) 11:10:07 ID:???
アンチを勘違いしてると思うが
いい質問には、マナーをもって接するが
ろくでもないレスばっかりだからな
413nobodyさん:2008/03/28(金) 11:13:12 ID:???
>>411
自治厨乙。
だいたいにして、IDなんていつでも変えれるんだから意味ないじゃん。
414nobodyさん:2008/03/28(金) 11:14:01 ID:???
ろくでもないレスは無視するかマナーをもって
訂正を促すのが良い返答の仕方だよ。
415nobodyさん:2008/03/28(金) 11:14:44 ID:q/btZ3WH
>>413
やってみなきゃわからないじゃんw
416nobodyさん:2008/03/28(金) 11:17:51 ID:???
>>415
どんだけ必死なんだよw
417nobodyさん:2008/03/28(金) 11:57:59 ID:anJTbKap
>>409
もちろん速度を重視しなくてはならない場面ならば専用メソッド内でSQLを書きます
しかし、上記の様にシンプルなアソシエーションすら動作が怪しいとなると
フレームワーク自体に手を出して最適化させた方がコスト的にベターかなと思います

>>403
複雑なアソシエーションのパターンが出来上がってる時はView使った方がいいですね
今ふと考え付いたのですが、結合済みの仮想テーブルを作って、それを元に
CakePHP側のモデルを構築するアプローチは面白いかもしれません

#仮想テーブルへの更新作業はDB依存のため怪しい臭いはしますが
418nobodyさん:2008/03/28(金) 12:20:53 ID:???
>>417
負荷を考えるならフレームワークやめろ
CakePHPなんてのは、どうでもいいクライアントに高速納品するための道具てことに気づけよバカ
419nobodyさん:2008/03/28(金) 12:26:48 ID:???
>>417
今頃フレームワークの評価とか手を出すとか、どんだけ遅れてんだよ
この業界は進歩が早いの知ってる?
420nobodyさん:2008/03/28(金) 12:43:39 ID:???
>>417
> 結合済みの仮想テーブルを作って、それを元にCakePHP側のモデルを構築する
view作ればって言ったのはそういうこと。
面白いかどうかはおいといて、現状の打開策としてはアリかなと思うわけです。

> 仮想テーブルへの更新作業はDB依存のため怪しい臭いはしますが
このDB依存は仕方ないと割り切ればいいんじゃないかな。割り切れるところだと思うし。
421nobodyさん:2008/03/28(金) 12:49:51 ID:???
>>417
やる前にあれこれ聞かずにやってみろよ
こんなとこで解決できれば苦労しねーよクソが
422nobodyさん:2008/03/28(金) 12:53:20 ID:???
評価なんてソース解析して自分で実際にサイト構築しないとわからねーよ
やってくうちに想像しない難点が沢山でてくるよ

423nobodyさん:2008/03/28(金) 13:01:42 ID:???
>>417
速度重視とか柔軟性考えるならCIにしろや
424nobodyさん:2008/03/28(金) 13:04:47 ID:???
CakePHPを最適化させにくいフレームワーク
最適化したいならCIスレにいって、このスレからでていけや
425nobodyさん:2008/03/28(金) 13:28:19 ID:???
426nobodyさん:2008/03/28(金) 13:34:05 ID:???
っていうかJOINにならないというのは
どのフレームワークでも同じこと。
CIでもSymfonyでもRubyOnRailsでも同じだよ。

特にCIは最悪だね。いろんな意味で。
ここではすれ違いだから言わないけど。
427nobodyさん:2008/03/28(金) 13:40:13 ID:???
>>426
どのフレームワークも同じなら軽量でサクサク動作するCIの方がマシ
428nobodyさん:2008/03/28(金) 13:44:02 ID:???
>>417
> しかし、上記の様にシンプルなアソシエーションすら動作が怪しいとなると

シンプルではないよ。

CakePHPでもその他でもそうだけどO/Rマッピングというのは
従来の表形式の使いづらいリレーショナルデータベースを
高レベルに扱いやすく使えるようにするもの。

リレーショナルデータベースを基本に設計されたものではなく
より理想的なオブジェクト指向風なデータ構造をもとに設計されたもの。
だからいろんな取り出し方ができる出来る柔軟性がある。

たとえば、behaviorでデータ挿入・取り出し時に色んな処理をかませられる。

そういう柔軟性を持たせながらシンプルなSQLに置き換えるのは容易ではない。
不可能な場合すらある。

なんでもかんでもパフォーマンスを気にして無駄なものを作るのは
初心者のやること。一日働いて3万円人件費をかけるのなら、
その3万円でスペックをあげたほうが総合的に考えてメリットが
高いという時代だから、今は。
429nobodyさん:2008/03/28(金) 13:50:03 ID:???
CIはデータベースを使わない。使う頻度が少ない場合にはいいけど、
データベースを使う場合、貧弱だよな。

あれならSQL直書きした方がいいってほどメソッドがアホらしいしw
なによりビヘイビアが無いのが一番痛い。
430nobodyさん:2008/03/28(金) 13:50:47 ID:???
>>428
なんでもかんでもパフォーマンスを気にして無駄なものを作るのは
初心者のやること

サイトリニューアルなど
既存ユーザーが多数いる自社製品ならパフォーマンスを意識する

431nobodyさん:2008/03/28(金) 13:52:21 ID:???
> 既存ユーザーが多数いる自社製品ならパフォーマンスを意識する
マシンスペックを上げろ
432nobodyさん:2008/03/28(金) 13:54:32 ID:???
>>429
複雑なアソシエーションはSQL直書きになるんならCIが理にかなってる

433nobodyさん:2008/03/28(金) 13:55:17 ID:???
複雑なものじゃなくてシンプルにしようと考えような。
434nobodyさん:2008/03/28(金) 13:55:42 ID:???
>>426
symfony(というかpropel)はJOINになる
435nobodyさん:2008/03/28(金) 13:56:08 ID:???
>>431
ユーザーが増えるたびに、どんだけマシンが必要になるんだよ
436nobodyさん:2008/03/28(金) 13:56:12 ID:???
JOIN使わないで一回一回よんでも
パフォーマンスはたいして変わんないんだけどなw
437nobodyさん:2008/03/28(金) 13:57:04 ID:???
>>435
ユーザーが増えると重くなるのはどれでも一緒ですが?

働いていない人は、人件費というコストを計算に入れないからなぁw
まあ、がんばれやw
438nobodyさん:2008/03/28(金) 13:57:54 ID:???
>>436
変わるよ あほか
439nobodyさん:2008/03/28(金) 13:57:57 ID:???
SQL直書きになる機会が多いならCIがいい
440nobodyさん:2008/03/28(金) 13:58:21 ID:???
O/Rというのはリレーショナルデータベースからの
脱却に意味があるというのに、今時SQLなんて低レベルなことやるかよw
441nobodyさん:2008/03/28(金) 13:58:54 ID:???
>>437
ずっと開発してるわけじゃねーからw
人件費とか1回ぽっきりやん
442nobodyさん:2008/03/28(金) 14:00:15 ID:???
複雑なSQLならO/Rマッピング使えないじゃん
今のCakePHPなら
だったらCIでSQL直書きが最高よ
443nobodyさん:2008/03/28(金) 14:03:25 ID:???
>>437
重くなりかたが異なってくるんですが?

1回で済む処理を2回のクエリで行ってるとアクセス数が増えたときにクエリ発行数が大きく変わることがわかんない?
ほんとにプログラマなのか?まぁ、がんばれや
444nobodyさん:2008/03/28(金) 14:05:37 ID:???
ぷw 頭固いな。mixiの話とかしらんのかいな

mixiでは”高負荷に耐えるためにJOINを使っていない”んだよ。

http://www.google.co.jp/search?hl=ja&rlz=1T4GGIH_jaJP221JP221&q=MIXI+MYSQL+JOIN+%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3&lr=

445nobodyさん:2008/03/28(金) 14:07:29 ID:???
>>442
使えていますが? JOINが使われないってだけでしょうが。

パフォーマンスに問題が無い場所で、
複雑なSQLを、SQLを書かずに作れる(買いても作れる)CakePHPと、
SQLを書くのと同等の手間をかけなければならないCIでは
どちらが優れているかは言うまでも無く、CakePHPですね。
446nobodyさん:2008/03/28(金) 14:08:18 ID:???
>>441
マシンスペックを上げるのも一回ぽっきりですが?
447nobodyさん:2008/03/28(金) 14:09:13 ID:???
ビヘイビアがない時点でCIは糞w
448nobodyさん:2008/03/28(金) 14:11:24 ID:???
>>445
複雑なSQLを、SQLを書かずに作れる(買いても作れる)CakePHP

group byとかどうやんの?
449nobodyさん:2008/03/28(金) 14:12:45 ID:???
>>445
複雑なSQLを、SQLを書かずに作れる(買いても作れる)CakePHP

この発言無理がありすぎやろw
450nobodyさん:2008/03/28(金) 14:13:42 ID:???
>>444
あのさ、読解力なさすぎ。
「高負荷に耐えるためにJOINを使っていない」とは書いてない。
451nobodyさん:2008/03/28(金) 14:14:14 ID:???
結局アンチはいつものCI厨だったなw
452nobodyさん:2008/03/28(金) 14:15:24 ID:???
>>450
ではJOINを使わない理由になんて書いていますか?言ってみてください。
453nobodyさん:2008/03/28(金) 14:17:30 ID:???
>>452
スケールするためにデータベースを分割し、JOINが使用できなくなったから。
454nobodyさん:2008/03/28(金) 14:20:13 ID:???
スケールとはパフォーマンスをあげるということです。
455nobodyさん:2008/03/28(金) 14:21:44 ID:???
うん。だから?
456nobodyさん:2008/03/28(金) 14:22:38 ID:???
>>455
おまえの負けてことだよ
457nobodyさん:2008/03/28(金) 14:24:15 ID:???
>>456
あからさまにバカだな。論理的に考えられないんだな。
458nobodyさん:2008/03/28(金) 14:24:38 ID:???
>>447
1.1使ってる人は真性なる糞ですね
459nobodyさん:2008/03/28(金) 14:25:14 ID:???
高負荷に耐えられるパフォーマンスを作り出す為に、
データベースを分割してJOINが使用できなくなった。

負荷を考えるのなら、JOINなんかするより、
マシンに投資してデータベースを分割(当然マシンも増えているはず)して
アプリケーションで行ったほうがいいということです。
460nobodyさん:2008/03/28(金) 14:28:55 ID:???
>>457
さっきまでパフォーマンスの話してたやろうが
論理的な会話してないのお前だろw
461nobodyさん:2008/03/28(金) 14:31:33 ID:???
結局CIが最強てことじゃんか
462nobodyさん:2008/03/28(金) 14:37:17 ID:???
CIはフレームワークを使っているとは思えないほど開発工数がかかる。

データベース部分は、SQLの単語(selectやfromやwhere)を
それぞれメソッドに置き換えて実行しないといけない。
なんとビックリw

だから糞。
463nobodyさん:2008/03/28(金) 14:38:23 ID:???
わろたw

$this->db->select('title')->from('mytable')->where('id', $id)->limit(10, 20);

$query = $this->db->get();
464nobodyさん:2008/03/28(金) 14:38:41 ID:???
>>459
ただ、「マシンに投資してデータベースを分割(当然マシンも増えているはず)して」が始めからできるわけじゃないんだよね。
だからSQL発行数も含め、パフォーマンスには常に気を遣うわけで。
mixiが今はソフトウェア側でパフォーマンスを気にしてないかっていったらそんなことはないし。

>>460
パフォーマンスの話してるよ。何言ってんの?
もう面倒だからお前いいよ。
465nobodyさん:2008/03/28(金) 14:40:13 ID:???
だからパフォーマンスを重視するところだけ
最適化して、あとは楽で速いコーディングをすればいいじゃんか。

パフォーマンスの基礎だよ?
466nobodyさん:2008/03/28(金) 14:41:27 ID:???
>>463
これいいね。わかりやすい構文だ
CakePHPの
find(null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,)
これに比べれば天と地に差
467nobodyさん:2008/03/28(金) 14:42:45 ID:???
>>466
引数の数を勝手に増やすなw

最後の引数の意味言ってみろよ。
いえなければ赤っ恥だなw
468nobodyさん:2008/03/28(金) 14:42:48 ID:???
>>464
おまえ誰だよ?トリップでも番号でもいいから付けろよw
469nobodyさん:2008/03/28(金) 14:44:26 ID:???
>>463はPHP4だと
$this->db->select('title');
$this->db->from('mytable');
$this->db->where('id', $id)
$this->db->limit(10, 20);
こうなります。
470nobodyさん:2008/03/28(金) 14:45:17 ID:???
>>464
名無しで必死にレスしてるようだが
名前に番号でもつけてくれないと
今までどんな発言してんかわかんないんだがw
471nobodyさん:2008/03/28(金) 14:46:08 ID:???
>>468
どうせトリップつけさせて削除しようって魂胆だろ。
そんな手に引っかかるか。ばーかw
472nobodyさん:2008/03/28(金) 14:46:42 ID:???
>>469
わかりやすくていいね、さすがCI
ヌルヌルフレームワークとは大違い
473sage:2008/03/28(金) 14:50:37 ID:JUQ1v1x2
$this->flash で出てくるはずのページがIE6だと表示されん。ソースは吐かれてる。
ってことはUTF関係か。
474nobodyさん:2008/03/28(金) 14:50:44 ID:???
アンチレス繰り返してたら、えらい盛り上がってきた
475425:2008/03/28(金) 14:54:55 ID:???
すみません、途中投稿しました

>>420
その通りですね。同一アプリケーション内でDBをスイッチする事はありえないので
リスクとしては小さいため十分検討できます(一応、PostgreSQL使ってる方は注意です)

>>424
CodeIgniterもとてもいいフレームワークだと思います
ぜひその情熱で当該スレッドを活性化させて盛り上げて欲しいですね

>>428
確かにアソシエーションの自動判別が面倒(無理)という事情は分かります
面倒なSQLを叩かずオブジェクティブにデータセットを取得できる機能が
すでに実装されていているのですからそれを使うに越した事はありません
この辺りの実装はアプリケーション全体のパフォーマンスに影響するため
サーバ増設前の改良を十分に検討できる部分だと思います
476nobodyさん:2008/03/28(金) 14:54:59 ID:???
実はアンチを煽って盛り上げさせているというのはナイショだw
見ろ他フレームワーク(特にCI)の静けさを!
477nobodyさん:2008/03/28(金) 14:56:44 ID:???
>>469みたいなコードを書くぐらいなら
SQLをそのまま書いたほうがいいな。
478nobodyさん:2008/03/28(金) 15:06:18 ID:???
>>428
すみません
>>475の説明はちょっと意味不明ですね、スルー推奨です
479nobodyさん:2008/03/28(金) 15:45:01 ID:???
Cakeは糞
480nobodyさん:2008/03/28(金) 15:54:32 ID:???
aki(ryが本出してるから糞
481nobodyさん:2008/03/29(土) 07:40:57 ID:???
あの本は確かに糞だったな
482nobodyさん:2008/03/29(土) 09:07:16 ID:???
あれは本当に酷かった
483nobodyさん:2008/03/29(土) 15:28:58 ID:???
文句だけは達者だな
484nobodyさん:2008/03/29(土) 15:56:30 ID:???
達者?
485nobodyさん:2008/03/29(土) 16:10:19 ID:???
このスレはいつも無駄に盛り上がるよな
486nobodyさん:2008/03/29(土) 16:54:04 ID:???
>>484
ゆとり乙
487nobodyさん:2008/03/29(土) 17:43:56 ID:???
>>486
ゆとり乙
488nobodyさん:2008/03/29(土) 20:03:50 ID:???
>>486
ゆとり乙
489nobodyさん:2008/03/29(土) 22:04:16 ID:t2qvxoud
CakePHPっていいフレームワークだよな
490nobodyさん:2008/03/29(土) 22:08:25 ID:???
ソース汚いけどな
491nobodyさん:2008/03/29(土) 22:15:25 ID:???
最高のフレームワークだね
完璧すぎる
492nobodyさん:2008/03/29(土) 22:29:55 ID:???
おまいらマインドマップ使ってる?
493nobodyさん:2008/03/29(土) 22:57:31 ID:???
30才過ぎるとマインドマップ使わないと
トイレ行った後とか今まで何考えてたかさえ忘れる
494nobodyさん:2008/03/29(土) 23:43:43 ID:VJRoSuRr
なんでマインドマップの話になったか分からないけど、自宅と会社のPCに
FreeMindインストール済み。

自宅ではCakePHPのシステム設計に使ってる。
ひとつずつやる事片付けて、終わったブランチに「レ」のアイコン付けるのが
楽しい。
495nobodyさん:2008/03/30(日) 02:14:14 ID:???
UMLはルール化した図解表現
マインドマップは自由な図解表現
496nobodyさん:2008/03/30(日) 02:16:24 ID:???
マインドマップで設計し形になったものをUML化する
497nobodyさん:2008/03/30(日) 02:17:48 ID:xhO/sY7i
んで、UMLで書いた仕様書を投げ捨ててウンコする
498nobodyさん:2008/03/30(日) 02:19:35 ID:???
CakePHP使ってればUMLもマインドマップも必要ない
499nobodyさん:2008/03/30(日) 02:26:47 ID:???
作業途中に仕様的にやばい匂いがしたらマインドマップ使ってる
500nobodyさん:2008/03/30(日) 02:31:49 ID:???
問題を解決しやすい方法として
思ったことを、どんどん言葉として書き出す
わかってるからと頭の中でしまいこむと、全体的な解決図を結び付きにくくする
501nobodyさん:2008/03/30(日) 02:45:33 ID:???
難しい状況を言語化する能力がコミュニケーション能力での重要ポイントだと思う。
もっと言語化するクセつければ、コミュニケーション能力向上になるんじゃないかな
502nobodyさん:2008/03/30(日) 17:27:12 ID:???
render呼んだ後
すぐexit();
してる?
503nobodyさん:2008/03/30(日) 20:27:27 ID:3z+xm+ln
>>473
遅レスだが、ソースの頭にBOMを付けたら表示されるようになた。
が、viewのファイルは8Nで保存しておかないと、たまに悪さをするようだ。
504nobodyさん:2008/03/30(日) 22:06:44 ID:???
>>502
もっと常識的な質問たのむ
505nobodyさん:2008/03/31(月) 10:30:36 ID:???
>>502
してないよ
506nobodyさん:2008/03/31(月) 10:59:21 ID:???
>>505
コンポーネントでrenderを呼んだときは
exitしないとデフォルトのrenderが最後に読み込まれるよ
507nobodyさん:2008/03/31(月) 11:00:31 ID:???
cakePHPのテスト環境だけど
SeleniumとSimpleTestの組み合わせが最強?
508nobodyさん:2008/04/01(火) 01:26:52 ID:j0Vrw1hD
>>507
そっちのテストなら、セレニウムだろうと手作業だろうとなんだって良くね?

ユニットテストをするのなら1.2から正式対応したSimpleTestって言うだろうけど。

ていうか、テスト駆動開発って面倒ですよね、時間がかかるけど出来上がり安定するのは確かだけど。
509nobodyさん:2008/04/01(火) 01:34:29 ID:???
正確にはテスト駆動じゃないけど、
ある程度の規模になったら、ユニットテストをやらないなんて
考えられないよ。

修正があるたびに同じテストなんてやってられない。
それこそ時間がかかる。
510nobodyさん:2008/04/01(火) 02:09:46 ID:???
Selenium IDE これいいね。これだけでも同じテストする必要がないし
なんといってもテストが楽
511nobodyさん:2008/04/01(火) 12:33:08 ID:???
Yahooが占いコンテンツ制作にCakePHPを採用
512nobodyさん:2008/04/01(火) 20:20:10 ID:???
なにこの寂びれぶり
513nobodyさん:2008/04/02(水) 00:32:30 ID:Ldo05SB7
んじゃ、おれがこのスレを潤わせてやるぜ
ビヘイビアって使ってる?
514nobodyさん:2008/04/02(水) 00:38:10 ID:???
>>512
荒らしが去ったので落ち着いただけ。

CakePHPを使って、ようやくサイトを公開できた。
思ったより使いやすいね、CakePHP。
515nobodyさん:2008/04/02(水) 03:09:53 ID:???
コンポーネント、ビヘイビア、ヘルパーの中では
ビヘイビアを一番使うな。

よくよく考えると、ソフトウェアの中心はモデル。
その中心の共通処理なんだからよく使うのは当たり前か。
516nobodyさん:2008/04/02(水) 11:07:25 ID:???
>>515
ソフトウェアの中心はコントローラー
なぜならコントローラーはモデルとビューにも指令を出すが
モデルは、たいていコントローラを介してのやりとりになるから

そういう考えで行けば、よく使うのはコンポーネントじゃないとおかしい
517nobodyさん:2008/04/02(水) 11:18:11 ID:Ldo05SB7
>>516
アフォがあらわれた
518nobodyさん:2008/04/02(水) 11:57:50 ID:KzinrGTW
findCount()で count(distinct hoge) を指定したいのですが
それは、findAll() でやるべきなのでしょうか?
519nobodyさん:2008/04/02(水) 12:05:53 ID:???
うん。アフォだ。ワロタw

コントローラなんて所詮インターフェースに過ぎんよ。
実際の処理じゃなくて、ブラウザから引数を受け取って
それを少々加工してモデルに渡す。
またモデルから受け取ったデータを少々加工してビューに渡す。

流れとしてはこんな感じだね。

「ブラウザ」→「コントローラ(加工)」→「モデル(実際の処理)」→「コントローラ(加工)」→「ビュー(HTML出力)」

っていうか、このように作らないとテストがしづらいったらありゃしない。

SeleniumやCakeWebTestCaseがあるとはいえ、
コントローラを操作してのテストでは範囲が大きすぎる。
もっと小さな範囲でテストできるようにしないといけない。

一番重要な処理を最小限の大きさ(なるべく他に依存しない)で
テストすること考えれば、自然とこうなるはず。
520nobodyさん:2008/04/02(水) 15:46:57 ID:???
ガソリン安いな〜
これほど自民党の一党独裁の問題点が分かりやすい現象は無いなw
521nobodyさん:2008/04/02(水) 16:07:32 ID:???
>>519
そうなんだ。だから本にもモデルのテストの方法しか書いてなかったんだ。
モデルよりコントローラーをテストしたいんだけど・・・ってずっと思ってた。

ということは、僕のプログラムの組み方がよくないんでしょうか。
522516:2008/04/02(水) 16:33:04 ID:Ldo05SB7
>>515,>>121
さきほどはアフォと一言で片付けてしまって申し訳ない、2ch流の愛情表現だと思ってくれ

で、>>519のいうとおりアプリケーションの中心となるビジネスロジックについてはコントローラなどでは
なくモデル内で実装するべき。一番大切なテストはビジネスロジックであるわけだし、モデルに集約して
(かつコントローラとのインタフェースも疎結合にして)コアロジックを実装することでコアロジックを別システムに
再利用しやすくなるというメリットも受けられる。

なので、コントローラはある意味、テストをしなくても問題ないくらい「薄い」実装にするべきだし、コントローラ
内で繰り返しよく使う処理についてはコンポーネント化してあげたほうが、ユニットテストで品質を保証できるので
良いかと。

こんな感じで考えていますが、どうでしょう?
523nobodyさん:2008/04/02(水) 16:44:10 ID:???
>>519
Seleniumこれだけあれば、全く十分なんだが
これ以外でテストしようとすればコストかかるだけやろ
どんくさい作業してんな、赤字やろ?
524nobodyさん:2008/04/02(水) 16:50:49 ID:???
>>522
だから何ってかんじだが、それがどうしたんだよ
リファレンスに書いてあるようなこと、なんで必死に訴えてるのwww

525nobodyさん:2008/04/02(水) 16:52:59 ID:???
自演厨きたー。うぜえええ
526nobodyさん:2008/04/02(水) 16:56:38 ID:???
Seleniumなんかでテストしたら時間(=コスト)がかかるよ。
ブラウザを起動する為、そもそも動作が遅いってのもあるが、

Seleniumだといくつものモジュールが組み合わさった状態で
テストするしかないから、どこのバグがあるのか見つけにくい。

またデータの初期化などが出来ない。
途中で内部のデータを調べることも出来ない。

CakePHPにはSimpleTestでブラウザをエミュレートした状態の
テストもできるので基本はそれを使ったほうが良い。

Seleniumを使うとしたら、SimpleTestではできない
JavaScriptが絡んだ処理のテストぐらいだな。
527nobodyさん:2008/04/02(水) 16:58:43 ID:???
リファレンスに書いてあるようなことなのだから、
間違いではないということだなw
528nobodyさん:2008/04/02(水) 17:01:36 ID:???
>>522
アプリケーションの中心となるビジネスロジックて何?
どんなロジック?

一番大切なテストてどんなテスト?

>>モデルに集約して
(かつコントローラとのインタフェースも疎結合にして)コアロジックを実装

プラグインと違うの?

>>なので、コントローラはある意味、テストをしなくても問題ないくらい「薄い」実装にするべき

モデルとビューに命令出すのに薄い実装なんて物理的に無理
モデルはカラッポでOK
529nobodyさん:2008/04/02(水) 17:04:44 ID:???
>>526
ブラウザ上でテストするだけなのにモジュールとか関係ないしwww
JavaScriptテストやるなら加工しないと出来ないだろwww
530nobodyさん:2008/04/02(水) 17:05:56 ID:???
>>526
Selenium使ったことないやろ?正直にいえ
531nobodyさん:2008/04/02(水) 17:08:00 ID:???
SimpleTestの方が時間かかるよ
532nobodyさん:2008/04/02(水) 17:08:48 ID:???
内部のデータを調べるようなテスト時間かかるに決まってるやろ
533nobodyさん:2008/04/02(水) 17:09:00 ID:???
また、例の嵐だな。
534nobodyさん:2008/04/02(水) 17:09:39 ID:???
とりあえず言っておくけど、CIは糞だから、
糞スレでやってねw
535nobodyさん:2008/04/02(水) 17:13:49 ID:???
>>532
たしかに!
536nobodyさん:2008/04/02(水) 17:16:18 ID:???
>>522
日本語でおk
537nobodyさん:2008/04/02(水) 17:18:56 ID:???
なんか、CI普及の為(?)にわざとアフォなことを言っている気がする。
いや、まて、わざと悪い例を出しているのか?

まあ、訂正している俺は考えをまとめられていいけどな。
(そして訂正している文を見て学習する人もいるだろう)

> モデルとビューに命令出すのに薄い実装なんて物理的に無理
> モデルはカラッポでOK

コントローラが出す命令はすごく小さなものだよ。
モデルに対して、「データ取って来い!」「書き込め!」「削除しろ!」
そして、「複雑な一連の処理をしろ!」

前三つは、CakePHPの自動生成コードでも書いてあるから
簡単にわかると思うけど最後の「複雑な一連の処理をしろ!」を
モデルに書くべきってことをわかってない人が多いんだよね。
複雑な一連の処理をコントローラに書いてしまう。悪い例だ。
538nobodyさん:2008/04/02(水) 17:27:44 ID:???
>>537
テストのことを考えていってんの?俺はテストはブラウザでしかしないからw
539nobodyさん:2008/04/02(水) 17:29:17 ID:???
テスト中心に設計するならモデルに詰め込めるだけ詰め込めばいいんじゃね
540nobodyさん:2008/04/02(水) 17:30:57 ID:???
>>537
複雑な一連の処理を具体的に述べよ
はなしはそれからだ
541nobodyさん:2008/04/02(水) 17:32:26 ID:???
where が入るような条件文はモデルに書けばいいの?
542nobodyさん:2008/04/02(水) 17:33:42 ID:???
>>537
モデルにもっていっていいのは
どこからどこまで?
543nobodyさん:2008/04/02(水) 17:45:27 ID:???
>>537
いくら給料もらってんだよ
俺はPHPプログラマで36万円
544nobodyさん:2008/04/02(水) 17:53:38 ID:???
 
 
 
モデル上で別のモデルのデータ取得できなくね?
 
 
 
545nobodyさん:2008/04/02(水) 17:55:24 ID:???
>>542
どこまでをモデルでやるかは結局設計しだいだけど、

>>541
ユーザーがフォームからの条件入力。URL形式での条件入力
、つまりコントローラのアクション関数の引数に入る場合。

その引数をもとにモデルを呼び出すわけだけど、
このときのモデルの関数は汎用的なfind関数でもいいし、
もっと簡単に扱いたければ、モデルに専用の関数を作って呼び出す。

汎用的なfind関数を使う場合には、array('key' => '= ' . $value)なんて
条件データに加工しないといけないよね? これがコントローラの処理。

モデルに専用の関数を作る場合、もっと簡単に使える関数にするね。
もちろんその場合、モデル内部でfind関数を使うことになるだろうし、
そのための条件の加工もモデルに書く。

ユーザーの入力した条件が、POSTでくる場合は、
$this->dataから条件を作り出す所までもうちょっと
コントローラでやる仕事が増えるだろう。

それでもコントローラの処理(モデルを呼び出すところまで)はこれだけ。
俺ならこのように作るよ。

あとモデルから戻ってきたデータを、ビューで使いやすいように
単純化するのもコントローラの仕事だね。
546nobodyさん:2008/04/02(水) 17:59:00 ID:???
>>544

> モデル上で別のモデルのデータ取得できなくね?

モデル上で別のモデルのデータを使用したいと思ったとき、
その二つのモデル間には関連性がある。

つまりアソシエーションを定義している。
アソシエーションを定義しているのなら、
モデル内で、別のモデルを呼び出すことが出来る。

Model1の中から、$this->Model2->findAll(); 感じで呼び出せる。
547nobodyさん:2008/04/02(水) 18:01:31 ID:???
>>545
モデルから戻ってきたデータを、ビューで使いやすいように単純化

数字にコンマ付けたりとか?
548nobodyさん:2008/04/02(水) 18:02:43 ID:???
>>546
そのやり方はCakePHPで推奨されてる方法なの?
549nobodyさん:2008/04/02(水) 18:05:48 ID:???
>>546
わざわざアソシエーションするの?
いつも結合されて重くなるじゃん
550nobodyさん:2008/04/02(水) 18:06:46 ID:???
>>547
それは見た目を変えるだけだからビューの仕事だろうね。

モデルから戻ってきたデータとは、汎用的なfind関数の場合、

$data => array(
 モデル名 => array(
  フィールド名1 => 値1,
  フィールド名2 => 値2,
  フィールド名3 => 値3,
 )
)

こんな値が返ってくる。もちろん、これをそのまま
ビューに渡してもいいんだけど、これじゃあビューで使いにくい!
って言う場合加工する。

そんな場合あるのかって? 余り無いだろう。
そう、だからコントローラの仕事は少ない。

モデルから取得した値をビューに渡す$this->set(・・・) は
コントローラの仕事ね。
551nobodyさん:2008/04/02(水) 18:07:42 ID:???
>>549
必要なときにつけたりはずしたりする方法は、何度も既出
552nobodyさん:2008/04/02(水) 18:11:37 ID:???
>>548

だめなのか?
553nobodyさん:2008/04/02(水) 18:12:12 ID:???
>>546
なんでモデルでやるの?そのメリットは?
554nobodyさん:2008/04/02(水) 18:21:49 ID:???
>>553
もちろん、直接関係が無いモデルは別々に
アクセスするよ。

モデルというか処理の内容から考えて
一つであるべきと思う場合は一つのモデルでやる。

あと、トランザクションの為のメソッドが
モデルにあることも興味深いよね。

一連関係ある処理は一つのモデル内で完結させるものと
考えると、なるほどと思わない?
555nobodyさん:2008/04/02(水) 18:23:17 ID:???
>>546
モデルは複雑にすべきじゃないよ。な中規模設計したとき
アソシエーションで必ず問題起きそう

556nobodyさん:2008/04/02(水) 18:27:56 ID:???
>>555
その意見はわからないでもないが、

普通にRDBMSを正規化したとき
そういう関連(リレーション)は出来るもんなんだが・・・

RDMSを正規化すると複雑になってしまう。それがいやだから
それを解決する為に、O/Rがあるんだと思うぞ!
557nobodyさん:2008/04/02(水) 18:28:26 ID:???
×RDBMSを正規化したとき
○RDBMSでテーブルを正規化したとき
558nobodyさん:2008/04/02(水) 18:32:44 ID:???
>>546
ページ数が増えたとき、コントローラを増やすことができるけど
コントローラが増えた分モデルを増やすこと出来ないよ。
ひとつのモデルに書くコードが恐ろしく増えるね
559nobodyさん:2008/04/02(水) 18:34:17 ID:???
また例の馬鹿か?
560nobodyさん:2008/04/02(水) 18:35:56 ID:???
> コントローラが増えた分モデルを増やすこと出来ないよ。

言っている意味が、よくわからないんだが・・・

例えコントローラが無くてもモデルは作れるし、
一つのコントローラで複数モデルを扱うことも出来るんだが?
561nobodyさん:2008/04/02(水) 18:43:36 ID:???
全てはコントローラに処理を詰め込み過ぎたscaffoldが悪い。
あれがアフォに勘違いを植え込む。
562nobodyさん:2008/04/02(水) 18:49:12 ID:???
うーん、自動生成のコードとしては、これしかやりようがない所もあるのだろうけど、
コントローラに処理を詰め込みすぎというか、モデルに処理が何も無いのが
いけないんじゃないかな?

あれじゃ、単にテーブルに直接アクセスするネイティブな関数の
代わりのクラスにしか見えない。

一番、プログラマがいろいろ書くべきなのはモデルなのに。
逆に言えば、いろいろ書かないといけないものだからこそ
自動生成ではモデルに何もないんだろうね。
でもサンプル程度はほしいかも。
563nobodyさん:2008/04/02(水) 18:53:30 ID:KzinrGTW
debugを1以上にするとHTMLの一番最後に
<!-- 0.0012s -->
みたいに、生成時間?のコメントがつくんですけど
これを付けないようにするにはどうすれば良いんでしょうか?
debugは1にしておきたいです。
564563:2008/04/02(水) 18:58:51 ID:???
あ、webroot/index.php にありました。
565nobodyさん:2008/04/02(水) 19:00:37 ID:???
cakephpで作られたオープンソースみても
モデルで書かれてる処理はバリデータ関係の関数しかないんだけど

http://code.google.com/p/openflp/
566nobodyさん:2008/04/02(水) 19:00:38 ID:???
>>564
Do not changeって書いてあるけどねw
567516,522:2008/04/02(水) 19:01:23 ID:Ldo05SB7
ん?なんかいろいろゴチャゴチャしてきたけど、結局俺が主張してたことは正しかったのか・

「複雑な一連の処理」とかビジネスロジックとかって、たとえば俺の場合は
 ・@日足の株価を取得してRSIを計算する
 ・A与えられた条件引数に該当する銘柄の証券コード配列を取得(スクリーニング)
 ・B現在の株価を受け取り、あらかじめ計算しておいた目標価格の条件を満たすか判別
   ⇒・更に条件を満たしていれば、買い/売り注文をWEBサービスに投げる処理も「証券会社モデル」(仮称)というDBと連携しないモデルを作成して、HTTP(S)で注文するメソッドを書いてる。
 ・C現在の株価を取得する(楽天証券のRSSをDDE接続経由で呼び出すモジュールを別途使用)
みたいなアプリが持つほとんどの主要処理を言ってて、これらをモデル(またはビヘイビア)に記述するべきと思うのです。

逆に言えばコントローラは、
 ・Cの「現在の株価を取得する」メソッドからの返し値をそのままB「株価と目標を評価し、注文する」メソッドに引渡し仲介する
 ・ビューからリクエストがあった@などの計算処理をモデルメソッド@に引き渡す
 ・スクリーニング対象銘柄の証券コードリストを取得し、そのままAのスクリーニングメソッドに引き渡す。
くらいのことしかしていない。人間の世界でいうと「仲介人」かと。
568nobodyさん:2008/04/02(水) 19:06:54 ID:???
>>565
お前の目は節穴か・・・

ってかこのソースあまりいいとは思えないな
569nobodyさん:2008/04/02(水) 19:08:08 ID:???
OpenFLP
Rails 製のオープンソース版 Fastladder

モデル 382steps
コントローラー 910steps

コントローラーに処理書きまくってるんですが。。。
570nobodyさん:2008/04/02(水) 19:09:00 ID:???
じゃあ本家railsのソースコードみせてやる
571nobodyさん:2008/04/02(水) 19:11:13 ID:???
コントローラに処理を詰め込みが正論か非か
オープンソース見れば、すぐわかることだからな
572nobodyさん:2008/04/02(水) 19:15:29 ID:???
オープンソースといってもその質はピンキリだから

> じゃあ本家railsのソースコードみせてやる
おいっ! railsはフレームワークだ。
もともとビジネスロジックは含まれてない!
573nobodyさん:2008/04/02(水) 19:18:52 ID:???
>>567
全部コントローラで出来るし
それをCakePHPでやる意味がわからんw
574516,522:2008/04/02(水) 19:46:05 ID:Ldo05SB7
>>573
あー、「全部コントローラで出来るし」って言ってる時点でプロフェッショなるじゃないことが確定www
議論しても理解できないんだろうな、「できる/できない」ということと「(プロとして)やるべき/べからず」
といった本質的な点をwww

コントローラでも全部やろうと思えばできることくらいわかっとるわいwww
575nobodyさん:2008/04/02(水) 19:58:32 ID:???
>>574
CakePHPでやることじゃないことは確かwww
576nobodyさん:2008/04/02(水) 21:14:45 ID:???
ビジネスロジックはモデルに集約すべき
議論としては面白い
俺もその辺気になってた


まあ俺はbakeしたコードの拡張から入ったクチだから全部controllerに書いちゃうけどなwww
577nobodyさん:2008/04/02(水) 21:37:43 ID:???
>>576
俺もコントローラに書いてしまったけど、
作り続けていくうちに、なんか無理が出てくるんだよ。

なんでこんなに作りづらいんだ?って思っていたときに
このスレにあった、ケーキの絵。あれで悟りを開けた気がする。
あぁモデル中心でやればいいんだって。
578nobodyさん:2008/04/02(水) 21:58:22 ID:???
>>577
その絵ってどれ?
579nobodyさん:2008/04/02(水) 21:58:46 ID:???
>>562
モデルに書けって言うけど、何を書くの?
関数で書けばいいの?モデル内のメソッドとして?

>>565
の言うとおり、実例も無いし具体的なメリットが分からない。
今のところテストが楽って事はなんとなく分かった。
580nobodyさん:2008/04/02(水) 22:16:06 ID:???
>>578
これの3ページ目
http://cakephp.org/files/OCPHP.pdf
581nobodyさん:2008/04/02(水) 22:19:41 ID:???
> 関数で書けばいいの?モデル内のメソッドとして?

モデル = ビジネスロジック用のクラス
なんだから、言うまでも無くメソッドだろ
582nobodyさん:2008/04/02(水) 22:22:03 ID:???
>>580
ありがとう,でもコントローラーよりモデルに重点おけよという一言で済む話かw
583nobodyさん:2008/04/02(水) 22:26:19 ID:???
>>581
そうすると、どう幸せになれるわけ?
584nobodyさん:2008/04/02(水) 22:27:49 ID:???
>>583
どう幸せになるかではなく、
どう幸せになりたいか。

貴方はプログラミングする上で、どうなったら幸せだと感じる?
585nobodyさん:2008/04/02(水) 22:57:59 ID:???
railsはコントローラーに重点を置くようになってるのではなぜ?
586nobodyさん:2008/04/02(水) 23:14:04 ID:???
>>574
自分の安価間違ってね?516と522で筋が通ってない
587nobodyさん:2008/04/02(水) 23:53:19 ID:???
>>585
railsでもモデルが一番重要なものですよ。
588nobodyさん:2008/04/03(木) 00:17:09 ID:???
モデルが一番重要なんてCakePHPだけの話
松本に話したら鼻で笑われたよ
589nobodyさん:2008/04/03(木) 00:38:13 ID:???
松本といっても鼻の長いゾウをキャラクターにしている会社の松本だけどなw
590nobodyさん:2008/04/03(木) 00:48:42 ID:???
でもキリンさんも好きなんだろ?
591nobodyさん:2008/04/03(木) 10:10:52 ID:Z1Ohe4yI
ビヘイバ話はおわったのか?
592nobodyさん:2008/04/03(木) 11:26:08 ID:???
Model は特定の環境に依存しない処理を行う部分である。
593nobodyさん:2008/04/03(木) 12:10:16 ID:???
たとえばの話なんですが、
1.フォームから画像ファイルをアップロード
2.アップロード結果・画像ファイルの不正検知
3.2が成功時、元画像名をmd5したものをuploadsフォルダに保存
4.3のファイル名をimage_fileカラムに格納
という一連の処理があったばあい、
今現在はコントロールとコンポーネントに書いてますが、
モデルとビヘイビアに書くとしたら、
2->バリデータに記述
3->ビヘイビア
4->モデル
という感じなんでしょうか?
594nobodyさん:2008/04/03(木) 12:26:23 ID:???
ビヘイビアて1.2からだろ、
最初から無いってことは必要性が薄いてことだよな
595nobodyさん:2008/04/03(木) 12:32:04 ID:???
ソースが読みやすければコントローラーで全部書いてもいいし
モデルに書いて読みにくくなるなら、書かない方がいい
結局はソースを読みやすくするために分けてるだけの話
596nobodyさん:2008/04/03(木) 12:32:23 ID:???
画像アップロードできるビヘイビアあるよ。
正確には画像を保存できるビヘイビアだけどね
http://bakery.cakephp.org/articles/view/actas-image-column-behavior
597nobodyさん:2008/04/03(木) 12:50:28 ID:???
結局はソースを見やすくする為にある。
一番見やすいソースとは、なるべく何も書かないこと。

画像をアップロードして保存というのは、本質的には
テーブルに画像フィールドを作ってそこに格納することと変わらない。

だからフィールド追加作業以外は、一切処理を変更しないで
作れるというのが一番理想的。

ビヘイビアを使えば、>>596のようにActsAsにわずかなフィールド情報を
設定して終わりだけど、その他の方法でここまでスマートに作れるかな?
598593:2008/04/03(木) 13:32:44 ID:???
>>596-597
ありがとうございます。
こりゃ1.2にチャレンジしなきゃだな
599nobodyさん:2008/04/03(木) 13:49:15 ID:Z1Ohe4yI
>ビヘイビアて1.2からだろ、
>最初から無いってことは必要性が薄いてことだよな

正確には1.1の頃からビヘイビアのディレクトリは用意されてたんだよな。
おそらく必要性はあったのだけど、1.1.xのステイブル版までに実装できなかっただけなのでは?
600nobodyさん:2008/04/03(木) 14:22:02 ID:???
railsにはビヘイビア相当になるものが無いんだが、どうして
601nobodyさん:2008/04/03(木) 15:14:18 ID:???
ビヘイビアてベネズエラにいる俺の愛人と同じ名前だ
602nobodyさん:2008/04/03(木) 15:38:42 ID:???
>>600
Rubyではmixinという言語機能でビヘイビア相当のことが出来るから。
603nobodyさん:2008/04/03(木) 17:41:48 ID:???
マニュアル»CakePHPによる開発»Models»Introduction
http://book.cakephp.org/ja/view/67/introduction

> Model behaviors provide a way to mix in functionality

へぇ、behaviorsはmix-in的な機能を提供するものだったんだ。なるほど。
604nobodyさん:2008/04/03(木) 18:10:28 ID:???
>>603
きちんとした日本語訳サイトあるのに。。。
605nobodyさん:2008/04/03(木) 18:23:11 ID:???
>>604
どこに?

606nobodyさん:2008/04/04(金) 20:03:22 ID:GG6uDHIa
わっふるわっふる
607nobodyさん:2008/04/05(土) 04:54:50 ID:???
cakeでのMC棲み分け例としては以下がありますよね。
個人的にはいい感じだと思いましたが、どうでしょう?

CakePHPを使ったMVC設計のベストプラクティス
ttp://www.sooey.com/journal/2008/03/26/717/
608nobodyさん:2008/04/05(土) 05:21:49 ID:???
MVCモデルのMが重要なのはデータ加工の多いWEBだけのはなしであって
MVCモデル全般的な考えではない
609nobodyさん:2008/04/05(土) 05:24:58 ID:???
データをあまり使う必要のないWINアプリを
MVCモデルでわけた場合はCが中心となる
610nobodyさん:2008/04/05(土) 09:45:41 ID:???
Web用のフレームワークのスレで何言ってんだこいつw
611nobodyさん:2008/04/05(土) 15:00:48 ID:???
MVCのVが重点となるソフトをあげてみよ
612nobodyさん:2008/04/05(土) 15:07:51 ID:???
rails発のMVCモデルはMがDBと密接な関係であるが
最強のモデルとは思っていない。
最適なモデル構造というには、まだまだ完成度が低いとrails作者は言っている
613nobodyさん:2008/04/05(土) 15:49:00 ID:???
>>607
面白いけど
これ通りに書いたら一覧性下がりそうだな
大規模なら修正には強くなりそうだね

まずは体に叩き込んでみるのがいいのか
614nobodyさん:2008/04/05(土) 20:57:16 ID:???
>>611
> MVCのVが重点となるソフトをあげてみよ

静的なウェブページ
615nobodyさん:2008/04/07(月) 17:32:08 ID:???
ゆくゆくはcake使いたいけどあと8時間くらいしか時間ないし
今は勉強してる暇も無いからとりあえず平で書く
ってときに、最低限これだけ守ってコード書いとけば
あとでcakephpを使いたくなってもまあなんとかなるよ という
ポイントを教えて
616nobodyさん:2008/04/07(月) 17:50:23 ID:???
Cake同様のライブラリが揃ってるってなら、そんな事も可能だと思うが・・。
無理じゃね
617nobodyさん:2008/04/07(月) 18:06:48 ID:???
データベースの主キーはIDだけにしておく
618nobodyさん:2008/04/07(月) 18:28:13 ID:???
それはコードなんだろうか
とにかく規約ぐらい把握しないと無理だよね
結局出来るのはDBの設計ぐらいじゃないかと

コードも処理部分は多少使いまわせるだろうけど
619nobodyさん:2008/04/09(水) 22:36:27 ID:0zi6cM/k
CakePHP内でfindAll、findAllByを使っていますが、重いのでチューニングできないかと
考えています。

それで、実際に発行されているSQLと、可能であればアクセスパスを確認したいの
ですが、なにか方法がありますでしょうか。
620nobodyさん:2008/04/09(水) 23:44:43 ID:???
デバッグモードを2に変更。実行したsqlが見れます
621619:2008/04/10(木) 00:04:23 ID:ysAxvq3P
>>620
確認できました! ありがとうございます。
622nobodyさん:2008/04/10(木) 10:23:53 ID:???
Model->query()で以下のようなSQLを発行すると
$sql = <<<EOF
  SELECT
    `Foo`.`id`,
    SUM(`Bar`.`hoge`)
  FROM `bars` AS `Bar`
  LEFT JOIN `foos` AS `Foo` ON (`Bar`.`foo_id` = `Foo`.`id`)
  WHERE `Foo`.`id` IN (1, 2, 3, 4, 5)
  GROUP BY `Foo`.`id`
EOF;

連想配列の添字がおかしくなるのですが、回避はできないのでしょうか

array(
  '0' => array(
    'Foo' => array('id' => ***)
    '0' => array('SUM(`Bar`.`hoge`)' => ***) ←ここ
  )
  .
  .
  .
)
623nobodyさん:2008/04/10(木) 10:42:01 ID:???
>>622
なんかqueryなんか使わないで、find()で出来そうな気がするんだが?
queryだとRDBMSごとの違いを吸収できないことがあるのでお勧めしない。

んで、試してないんで間違っている可能性が高いんだが
$sql = <<<EOF
  SELECT
    `Foo`.`id`,
    SUM(`Bar`.`hoge`) as `Bar`.`hoge`
以下同じ

じゃだめかな?

内部的には帰ってくるデータのフィールド名がどうなっているかを判断して
連想配列に入れているようだから、SUM関数とか使うとフィールド名が
CakePHP的に想定外になる。それが原因じゃないかな?

ちなみに、この、 as `Bar`.`hoge`の文字列の部分がRDBMSによって違うので
考えなしに使ってしまうと、RDBMSごとの違いを吸収できなくなる。
(たしかPostgreSQLだとas Model__Field)
もちろん、MySQLにだけ対応していればいいのなら、問題ないけどね。
624nobodyさん:2008/04/10(木) 11:29:33 ID:???
>>623
レスありがとうございます
alias噛ませる方法は私も試してみたのですが
FROM `bars` AS `Bar`の宣言と被っているためエラーが返ってきます。

hasManyで繋がっている集計先テーブルの条件指定なども追加したい場合
CakePHPの作法だとどのようにするべきなのでしょうか?
625nobodyさん:2008/04/10(木) 11:53:32 ID:??? BE:39571564-2BP(2)
参照の参照がうまくいかない。
たとえば、PostのViewにユーザ名だけでなく、そのユーザが所属するグループ名を表示したい場合、どうすればいいんだろう?
Post.id
Post.user_id−参照→User.id
      ←取得−User.username
          User.group_id−参照→Group.id
      ←取得−−−−−−−−−−− Group.groupname

User.usernameを表示する場合は、$post['User']['username']でいけるっぽいけど、
じゃあ、そのユーザのグループ名はどうやって取得すればいいんだろう?

他にも、グループ名のリンクをクリックしたときに、そのグループに所属するユーザ
(User.group_idの値がGroup.idの値と等しいユーザ)User.usernameの一覧を作成するときとか
どのように書けば良いんだろうか?

MVCにしろ、SQLにしろ始めたばっかで全然わからないや。
626nobodyさん:2008/04/10(木) 15:04:31 ID:???
>>625
Post -> User -> Group という順番に適切なアソシエーションが設定されていれば、芋づる式にデータは取ってこれる。

やってるけど分からないなら>>620が書いているように、デバッグモードをonにしたほうがいい。

その質問の仕方だと、何をどこまでやって分からないのか分からない。
627nobodyさん:2008/04/10(木) 22:22:07 ID:???
>>624
とりあえず、
SUM(`Bar`.`hoge`) as `sumhoge`
これだと、
Array([0] => Array([0] => Array([sumhoge] => 6)))
となるよ。


まとめて書くなら、
$query = array(
'conditions'=>array(
'Foo.id'=>array(1,2,3,4,5),
'1=1 GROUP BY Foo.id'
),
'fields'=>array('Foo.id','SUM(Bar.hoge) as sumhoge')
)

$this->Bar->find('all',$query);

って感じかな
628nobodyさん:2008/04/10(木) 22:25:44 ID:???
まあ、SUMつかったせいで、
どこのモデルのデータかという情報が消えてしまい、
0という名前のモデル名になるってだけで
おかしいわけじゃないんだけどな。

今回はBar.hogeのSUMだからモデル名はBarになるべきだと
思うかもしれないけど、SUM(`Foo`.`hoge` + `Bar`.`hoge`) という
書き方だって出来るわけだし。
629nobodyさん:2008/04/11(金) 00:29:36 ID:???
なるほどなんで0になるんだとか悩んでた
しかし、扱いにくいのはたしかなんだよね
630nobodyさん:2008/04/11(金) 01:18:44 ID:???
BakeとかBakeryとかCheeseCakeなんていう、楽しげな製菓製パン用語の中にあって、
Scaffoldなんていう土建屋みたいなネーミングはいかがなものかねぇ。
いくらRoRのパクリとはいえ、違う名前でもよかったんじゃないかな。
なぁんて、チラシの裏w。
631nobodyさん:2008/04/11(金) 01:32:12 ID:???
じゃあスポンジケーキ?
632nobodyさん:2008/04/11(金) 01:40:16 ID:???
>>625

私も初心者ですが、私の場合はVIEWの最後に、

<?php print_r($post); ?>

というデバッグ出力を出して確認しながらやってます。

あ、確認は「ソースの表示」をした方が分かり易いかも。
秀丸など、UTF8等のキャラクタセットに対応するエディタが必要ですが。
633nobodyさん:2008/04/11(金) 02:27:45 ID:???
Vista以降はもう
NET Framework 3.0がWEBサイト最強のフレームワークになるな
PCのWEBサイトはC#じゃないと追いつけないわ
そしてPHPなどの下級言語は携帯サイトでしか使用されなくなる
634nobodyさん:2008/04/11(金) 02:39:04 ID:???
Windows Server 2008の発売で
asp.netの注目度がかなり上がってる
どう考えてもPHPから3Dにも強いasp.net(C#)に移行するだろうな
635nobodyさん:2008/04/11(金) 02:40:09 ID:???
CakePHPなんてやってる場合じゃないぞ
時代遅れ君たち
636nobodyさん:2008/04/11(金) 04:43:59 ID:???
なんだ? いきなりこいつは? 話ズレまくりで滑ってるな。
637nobodyさん:2008/04/11(金) 04:57:27 ID:OBoZ/5C8
>>635
代わりに、なにがいま時代の最先端なの?
638nobodyさん:2008/04/11(金) 13:47:57 ID:???
世間で何が流行ろうと、CakePHPはCakePHPでいいじゃん。

別に、すでにCakePHPで作ったものをC#に置き換える必要は
ないんだし。
639nobodyさん:2008/04/11(金) 15:17:40 ID:???
C#で作ったって動かないサーバーが多いしな。
640nobodyさん:2008/04/11(金) 17:09:12 ID:???
先輩がた教えて下さい。

mysql の max 関数を使うには cakephp ではどのようにすればよいでしょうか。
よろしくお願いします。
641nobodyさん:2008/04/11(金) 22:44:28 ID:???
$this->モデル名->クエリ(SQL文、false);
642nobodyさん:2008/04/11(金) 23:41:35 ID:???
queryは普通使わないだろw
findといえ
643nobodyさん:2008/04/12(土) 13:37:27 ID:???
>>642
自分も、するんだったらクエリ発行するしかないと思ってたんだけど、
使った事がないので書かなかった。

findでmax関数ってできるの?
644nobodyさん:2008/04/12(土) 14:39:58 ID:???
>>632

<?php echo pr($post) ?> がおすすめ
645nobodyさん:2008/04/12(土) 15:57:22 ID:???
>>643
$this->Model->find('all',array('fields'=>array('MAX(id)')));


>>644
<?php pr($post) ?>でいいよ
646nobodyさん:2008/04/12(土) 16:42:32 ID:???
cakeって、queryを使ったら死刑!くらいの気持ちが無いと駄目なの?
647nobodyさん:2008/04/12(土) 19:44:31 ID:???
だってqueryってSQL直で発行だよ?
せっかく、CakePHPのデータベース用ドライバが、
RDBMS間の差を吸収しているのに
フレームワーク使っている意味半減するじゃん。
648nobodyさん:2008/04/12(土) 21:28:23 ID:???
>>635
ある意味正解!だがまだ時代が追いついてきていない。

やっぱO/Rマッピングでは無理があるということだ
C#も3.0の言語仕様拡張で突き抜けた感があるしね
LINQとかラムダ式とかJavaの真似っこでない次元に到達した。

でも現状は糞言語PHPで本当に馬鹿みたいなコーディングするしかないけどな。
649nobodyさん:2008/04/12(土) 21:50:24 ID:???
>>648
中身がまったくない。知っている用語を羅列しただけ
自作自演の可能盛大。0点。出直しましょう。
650nobodyさん:2008/04/12(土) 21:53:16 ID:???
>>647
>> RDBMS間の差を吸収しているのに

一つのシステムに複数のRDBMSを跨ぐ様な事なんて殆どないけどな。
まぁ、極力queryを使わないほうがいいのは同意。
651nobodyさん:2008/04/12(土) 21:55:24 ID:???
同じコードで、いろんなデータベースに
対応できるってことを言っているんだろ。馬鹿か。
652nobodyさん:2008/04/12(土) 22:14:35 ID:???
素直にRailsつかったらいいのに
653nobodyさん:2008/04/12(土) 22:22:03 ID:???
railsかぁ。二年ぐらい前なら、それだけの価値はあったかもしれないが。
654nobodyさん:2008/04/12(土) 23:15:20 ID:???
DBにべったりガッツリ依存しまくってるフレームワークってないのかな
割り切った設計で可能な限り使いやすさと速度の両立を目指すという
655nobodyさん:2008/04/12(土) 23:24:15 ID:???
そのRailsだって難しい事はSQL直発行しろってスタンスだろ
Zendに至ってはプレースホルダのSQL直発行がメイン

findごときで収まるクエリだけなら世話ねーの
656nobodyさん:2008/04/13(日) 00:28:23 ID:???
だからむずかしいことだけSQL発行すればいいんだよ。

Zendの場合、O/Rマッパーそのものがない。
あれはフレームワークというよりライブラリだから。
657nobodyさん:2008/04/13(日) 11:48:16 ID:???
なんかCakePHP以前の事をお聞きするのですが・・・。

前々スレ744を参考に、$html->formTagでformタグを実装しようとしています。
ただ、検索文字列(this.search.valueの部分)に全角文字が入るため、エンコード(?)する必要が
あると思うのですが、その方法が分かりません。

やり方、もしくは、この単語でググればよい、というのを教えて下さい。


744 :nobodyさん:2007/09/15(土) 12:14:57 ID:???
> >>740
> こうですか?わかりません><
>
> $html->formTag('/post','get',array('onsubmit'=>'location.href=\'/post/\'+this.search.value;return false;'));
658nobodyさん:2008/04/13(日) 13:07:44 ID:???
<form action="/コントロール名/アクション名/" method="POST">

<input type="submit" value="検索">

入力欄は$html->inputなどを使う事
659658:2008/04/13(日) 13:18:37 ID:???
action="<?= $html->url('/コントローラ名/コントローラメソッド名')"

だった。すいません
660657:2008/04/13(日) 14:18:45 ID:???
>>659

ありがとうございます。
ただ、method=getなので、やりたかった事とはちょっと違うようで・・・。


いろいろ試したのですが、けっきょく、VIEW側は

<?php echo $html->formTag('/post/', 'get'); ?>
<input type="text" name="search" size="15">
<?php echo $html->submit('検索'); ?>

として、コントローラー側で

function search()
{
$keyword = $this->params['url']['search'];
(以下略)


として対処する事にしました。
661nobodyさん:2008/04/13(日) 19:11:09 ID:???
>>651
同じコードで、いろんなデータベースに対応できるから極力queryを使わないほうがいいって言ってんだろ。馬鹿か。
662nobodyさん:2008/04/14(月) 02:08:03 ID:???
CakePHP1.2を昨日から使い始めました。
それで、$formがまだよくわかっていないのですが、$form->radioで
1つ目にcheckedをつける場合、どのように指定すればいいのでしょうか?


<?php echo $form->radio('Bookmark.access',
array(1=>'公開','非公開'),
array('legend'=>false, 'separator'=>' ')); ?>
663nobodyさん:2008/04/14(月) 11:45:13 ID:???
>>662
inputだとこんな感じ
<?php echo $form->input('Bookmark.access', array(
'options'=>array('1'=>'public','2'=>'private','3'=>'text'),
'type'=>'radio',
'legend'=>false,
'separator'=>' ',
'value'=>'3')); ?>

たぶん、radioでもvalueをつけるといけると思う。
664nobodyさん:2008/04/14(月) 17:25:15 ID:???
radioでvalueつけると、二つ目にチェック入れて
入力エラーで戻ってきたときに、
また一つ目がチェックされるのよね。
665nobodyさん:2008/04/15(火) 00:36:29 ID:kB0aZEdA
Cake1.2でのAuthComponentの使い方などで、なにか良いチュートリアルがあれば教えていただけませんかー?
もし可能であれば、ACLのうまい活用の仕方もわかると嬉しいです
ペコリ
666662:2008/04/15(火) 01:18:18 ID:???
>>663
inputの例を参考に、2つ目のarrayに'value'=>'1'を追加して、うまく行きました。
ありがとうございます。
667nobodyさん:2008/04/16(水) 13:10:23 ID:???
Ver1.2でshellsの中でコンポーネント使うにはどすればいいの?
668nobodyさん:2008/04/16(水) 16:28:26 ID:???
App::importでなんでもござれだが、
そもそもshellsの中でコンポーネントを使うのが問題ではないのか?

コンポーネント = コントローラの汎用的処理、
つまり処理の内容はコントローラそのものなわけで、
シェルの中からコントローラを呼び出すというのがちょっと疑問な処理。

コントローラの処理にリダイレクトするという考えでrequestActionを
呼び出すという考えもありとは思うが、
そもそもそれはモデルにおくべき処理なのかも知れないぞ。
ちなみにシェルからモデルを扱うには、usesプロパティを使用するだけでOKだ!
669nobodyさん:2008/04/17(木) 18:54:40 ID:YR2rN8Sk
ところでみんなはShellsはどんな使い方してるの?
俺の場合は、定期的にcronで叩いて、指定ディレクトリに生成された大量の一次データをDBに取り込む作業、とか。

670nobodyさん:2008/04/17(木) 19:48:58 ID:???
今日はじめてcakeつかったけどさ、mysqlのセキュリティを下げないとつかえないじゃん
オワタ
671nobodyさん:2008/04/17(木) 21:32:22 ID:???
釣りに嘲笑レスだが、セキュリティを下げるって何したの?w
672nobodyさん:2008/04/17(木) 21:35:44 ID:???
>>669
旧システム(フレームワーク未使用)から新システム(CakePHP)への
データコンバートに使った。

あとは簡易なツールかな。たとえば入力した単語の単数形⇔複数形 などをするツール。
673nobodyさん:2008/04/17(木) 21:42:54 ID:???
>>671
これが釣りに見えるとは・・
おまえの知識がよくわかるわ
#sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
674nobodyさん:2008/04/17(木) 22:03:43 ID:???
知識うんぬん以前に、お前何も言ってないじゃん。
セキュリティを下げるというだけで、それ以外のまともな情報が何もない。
だから馬鹿にされるんだよ。

で、それのどこがセキュリティ下げてることになると思ってんの?w
互換性とセキュリティの違い、理解しようね。
675nobodyさん:2008/04/17(木) 22:25:09 ID:???
>>674
( ゚д゚)ポカーン
676nobodyさん:2008/04/17(木) 23:10:06 ID:???
>>673

どういう意味?
sql-modeをこれに設定したって事?
677nobodyさん:2008/04/18(金) 00:13:14 ID:???
>>676に書いてあることがコメントされずに初期設定されている
これをコメントアウトすることによってセキュリティを甘くせざるを得ないわけよ
このモードをはずさないとcakeのコードからワーニングがでる。
cakeに潜んでるバグで作者は修正予定らしい
678nobodyさん:2008/04/18(金) 00:16:50 ID:???
>>676
横レスですまんが、すっげぇ要するにMySQL5系の設定で
STRICT_TRANS_TABLESを指定していると、SQLの構文チェックを
厳密にするんだけど、このままだとCakePHPの吐くSQL自体でエラーが出るんよ。

んだから今の所は構文チェックを緩くしないとCakePHPが動作しないって事。

>>670の説明で分かった奴はエスパー。
679676:2008/04/18(金) 00:24:11 ID:???
>>678
の説明でようやく分かったw
680nobodyさん:2008/04/18(金) 00:33:10 ID:???
名無しのままでいいからもっといじったほうがいいよ676さんは
681nobodyさん:2008/04/18(金) 00:34:11 ID:???
1.挨拶を自分からしない・できない・やろうと思わない
2.リアルではおとなしいのにネット上では態度がでかい。
3.自分の意見で地球が動いてると思ってる。自分の意見はみんなの意見。
4.自分に非があってもスグ言い訳、逆切れ。他人を攻撃する。威嚇することで自分の弱さを隠している。
682nobodyさん:2008/04/18(金) 01:17:05 ID:???
>>678
つまり、セキュリティの問題じゃないってこと?
683nobodyさん:2008/04/18(金) 01:18:01 ID:???
>>682
つまり、日本語わかるか?
684nobodyさん:2008/04/18(金) 01:18:11 ID:???
っていうか、MySQLの仕様変更だし。
CakePHPのバグでもセキュリティの問題でもない。
685nobodyさん:2008/04/18(金) 01:27:47 ID:UgH30Z6m
アホが大量発生しとりますな。
CakePHPとはスレ違いだし
686nobodyさん:2008/04/18(金) 01:28:35 ID:???
まあ、>>670がアフォってことでいいじゃんかw
687nobodyさん:2008/04/18(金) 01:46:12 ID:???
>>673のsql-modeの値がデフォルトになっているのは、
Windows板でインストーラーを使ってインストールした場合のみ。
本当のデフォルトの値は厳密モードじゃありません。

いい加減Windowsは卒業しろよw
688nobodyさん:2008/04/18(金) 02:46:06 ID:???
>>682
んーと、SQLインジェクションとか攻撃者が故意に行うものとは違うんだけど、
まぁ広義の意味でセキュリティの問題だとは思うよ。

つーのも、MySQL4系ってあれなのよ、予め決めたカラムの型よりデカいデータ食わせると
勝手に型に合わせてデータ削って無理やり挿入してくれちゃうのよ。
例えばvarchar(4)でカラム作ってそこに"unkotintin"ってデータ突っ込んでも、うんこしか保存されないわけ。

他にも''をNULLと解釈してくれたり、2008-02-31を許容してくれたりと
入力データに対して大変大らかな実装なんよね。

で、それってちょっとマズいだろ、入力データが型に合ってない=異常事態なんだから
強制保存すんな!ロールバックしろヴォケ!と思う人も当然いる訳で
そんな感じの背景があってMySQL5系から型チェックを厳しくするモードが実装されたと。

CakePHPの場合だと、INSERTする時にidの数字をauto_incrementに任せる訳だけど、
そこで発行されるSQLがid = ''って指定されてるから「そこ文字列入れる所じゃねーよ!」って怒られる。
んだからセキュリティホールよろしく第三者に直接叩かれるって心配はないよ。

余談だけど、STRICT_TRANS_TABLESはInnoDBとかトランザクションをサポートしてねーと使えねーべ。
MyISAMで構文チェックさせる時はSTRICT_ALL_TABLESなー。
689nobodyさん:2008/04/18(金) 04:25:34 ID:???
それってセキュリティとは言わないと思う
690nobodyさん:2008/04/18(金) 04:45:08 ID:???
.thtml 派? .ctp派?

今でもぼくは

.thtml 派。
691nobodyさん:2008/04/18(金) 08:30:04 ID:???
>>690
1.1系から乗り換えた当初は.thtmlにこだわってたけど(てか気づかなかった…)
.ctpに切り替えたら1日で慣れた

やっぱり5文字の拡張子は長すぎるよね
692nobodyさん:2008/04/18(金) 08:37:15 ID:???
>>689
だから広義の意味っつってんじゃん。日本語理解できてる?
Perlでコードの安全性を高めるためにuse strict;するのと一緒だよ
693nobodyさん:2008/04/18(金) 09:07:33 ID:???
>>691
レスまんくす!

では、僕も次のサイト作りから ctp 派 になります♪
694nobodyさん:2008/04/18(金) 09:12:53 ID:???
>>692
広義の意味でもセキュリティの問題じゃない。
俺俺定義すんなw
695nobodyさん:2008/04/18(金) 09:15:03 ID:???
>>692
広義といえばどんな主張でも通ると思ってる厨房発見。
696nobodyさん:2008/04/18(金) 15:39:38 ID:???
メールフォームとかで

//入力画面
function form(){
}
//確認画面
function confirm(){
//バリデーションでエラーの場合、フォームに戻す
if(!$this->Form->validates($this->data)){
$this->set('data',$this->data);
$this->render('form');
}
}
//完了画面
function send(){
}

form.thtml
<?php echo $html->input('Form/name',array('value' => $data['Form']['name'])); ?>

の構成の場合、最初に form にアクセスすると $data['Form']['name'] がない!
とNoticeエラーが出てしまいます。
これって、 form() で初期化した $data を与えるしかないのでしょうか?
入力項目がいっぱいあるとめちゃくちゃ大変な気がするのですが…。
697nobodyさん:2008/04/18(金) 16:19:29 ID:???
findByなどで、hasManyでくっついてきたレコード数をカウントしたい場合、
どのようにすればよいのでしょうか?
698nobodyさん:2008/04/18(金) 18:21:08 ID:???
1.1系でmode内でorderとかconditionを設定できないの?

class Post extends AppModel {

protected $order = "Post.created DESC";

とかでfindしても駄目なんです。
699698:2008/04/18(金) 18:21:29 ID:???
すいませんmodel内でです
700698:2008/04/18(金) 19:03:12 ID:???
もう少し分かりやすく言うと、モデル内でSQLの検索条件(where句)に縛りを入れたいです。
701nobodyさん:2008/04/18(金) 19:27:37 ID:???
うっ・・・だめ。もう・・もう・・・もうでる。 モデル
702nobodyさん:2008/04/18(金) 19:50:15 ID:???
モデル内に

function find_name_only($cond = "name like '%tarou%'"){
return $this->findAll($cond);
}
を書いてごまかしてみました。
ほかにいい方法があるのでしょうか?
703nobodyさん:2008/04/18(金) 20:00:26 ID:???
>>696
まだ始めて2週間しかたってないけど。

form.thtml
<?php echo $html->input('Form/name'); ?>
で、どう?

あと、$this->set('data',$this->data); は、要らないとおも
704nobodyさん:2008/04/18(金) 20:05:29 ID:???
>>697
count( $model['Model']['HasManyModel'] )
かな?
705697:2008/04/18(金) 21:22:22 ID:???
>>704
これは取り出した後で、PHPのcount関数で配列の要素数をカウント、ということでしょうか?

そうではなくて、
たとえばfindAllするときに取得順などにHasManyModelのカウント数を使いたいのですが。
質問の文章がわかりづらくて申し訳ありません;
よろしくお願いします。
706nobodyさん:2008/04/18(金) 21:42:58 ID:???
>>705

おそらく、自分でクエリを書かないといけないでしょうね。
707697:2008/04/18(金) 21:47:07 ID:???
>>705
やはりそうですか;
せっかくフレームワークを使っているのでできればクエリは書きたくないですね・・・

UsersをPostsの多い順に並べ替える、など、結構よく登場すると思うのですが;
708nobodyさん:2008/04/19(土) 01:00:18 ID:???
> UsersをPostsの多い順に並べ替える、

やってないけど、これは、findAllの条件にexistsなんたらって書いて
countだせばいいとだろうから、一応findAllは使えるな。
半分ぐらいしか意味ないけど。
709nobodyさん:2008/04/19(土) 01:16:45 ID:???
>>707

それか、1回データを取り出した後で件数をキーにした連想配列に入れかえるのはどうでしょうか。
配列の添え字を、

$array[$count .' - ' .$id]

こんな感じにして配列をソートしたら出来そうですが。
710nobodyさん:2008/04/19(土) 10:26:43 ID:???
>>707
> UsersをPostsの多い順に並べ替える、など、結構よく登場すると思うのですが;

ちょうど同じような事例を考えていた。

顧客とその顧客の取引データが一対多でつながっている場合に
取引が多い顧客を見たいと。

で、いろいろ考えたんだが、顧客数や取引が多くなると重くなりそうなので、
(だって内部的には顧客ごとにデータ数えて、その数でソートするんだろう!?)
非正規化することになるが、顧客データの中に取引数フィールドを作ることにした。

あとは取引データ保存時、つまりモデルのafterSave時に、
顧客テーブルの取引数フィールドをいじればいいと。

フレームワークを使っているとこういうトリガー的なことを
データベースに依存せずにやれるから良いね。
711697:2008/04/19(土) 11:37:16 ID:???
>>ちょうど同じような事例を考えていた。

奇遇です!

なるほど・・・あえて非正規化する、と。
手元にある参考書に
「処理効率を考えて、あえて非正規化することもある」
と書いてあった意味がわかりました。

たしかに、毎回自分でクエリ書くのに比べたら、
冗長なデータを持っておくくらい、なんてことないですね!
目からウロコでした!
712nobodyさん:2008/04/19(土) 11:39:14 ID:???
DB使ってる意味ねぇw
713697:2008/04/19(土) 11:50:08 ID:???
>>712
では、他に何かいいアイデアがあるのですか?
714nobodyさん:2008/04/19(土) 12:22:29 ID:???
俺は自分でクエリを書いたほうが断然面白い。
715nobodyさん:2008/04/19(土) 12:31:41 ID:???
1.2を入れてみたのですが、

function index() {
$data = "テスト";
$this->set('data', $data);
}

とやっただけで

Allowed memory size of xxx bytes exhausted ...

が出てしまいます;

CakePHP叩きではなく、本当に困っています。
対処法を教えてください。
716nobodyさん:2008/04/19(土) 12:38:01 ID:???
>>715
その程度のコードで、そのエラーが出るときは、
基本的にバグだと思ったほうが良い。

まあ環境のせいもあるからとりあえず聞くけど、
OSとPHPのバージョンと、php.iniの設定(もしくはini_get('memory_limit'))の値)

function index() {
echo 'aaa';exit;
}
とやるとどうなるか。

index()以外のコードはどうなっているか。
717nobodyさん:2008/04/19(土) 12:42:21 ID:???
>>712
> DB使ってる意味ねぇw

DB使うことが目的じゃないからね。
DBは所詮データの保存先に過ぎないし。

718715:2008/04/19(土) 12:47:34 ID:???
>>716
レスありがとうございます。

どうやらbakeで生成したビューをそのまま使っていたことが原因だったようです;
スレを汚してしまってすみません;;
719nobodyさん:2008/04/19(土) 13:08:09 ID:???
>>717
じゃファイルベースでやりゃいいじゃん。やらない理由は?
720nobodyさん:2008/04/19(土) 14:35:19 ID:???
CakePHP でPEARを使うとき
依存PEARがうまく発見できないのですが、
どうすればよいのでしょうか?
php.iniのinclude_pathには
app/vendorsを追加してあります。
721nobodyさん:2008/04/19(土) 17:44:54 ID:???
>>719
> じゃファイルベースでやりゃいいじゃん。やらない理由は?

フレームワークがファイルベースに対応していないから。
(読み書きできないということではなく、モデルが対応していないということ)
722720:2008/04/19(土) 18:05:22 ID:???
すんません;
事故解決しました。
723nobodyさん:2008/04/19(土) 19:37:01 ID:???
>フレームワークがファイルベースに対応していないから。
ユーザが自由に選択することもできないってこと?
強制的にDB使用?
CakePHP糞FWすぎるwwwww
724nobodyさん:2008/04/19(土) 20:20:16 ID:???
流れ読まずにすみません。

CakePHPで作られてるサイトで有名なところを見てみたいのですが、
教えていただけませんか?
たしかNiftyのなんかがCakeだと聞きましたが・・・
725nobodyさん:2008/04/19(土) 21:00:48 ID:???
mozillaのサイトとか
726nobodyさん:2008/04/19(土) 23:46:04 ID:???
>>723

君頭大丈夫かね?

CakePHPは別にデータベースを使用する必要は無い。
ただデータベースを使ったほうが効率がいいだけだ。
それがファイルベースでやらない理由。

どうやら君は素人なのだろう。
727nobodyさん:2008/04/20(日) 00:01:18 ID:???
>>711
非正規化は、一般的な業務システムでもよくやるな。

ただ、明らかに正規化をさぼってて、テーブルのカラム数が100個超えているのを
「性能を考えて非正規化している」と言い張る人はカンベンしてほしい。
あぁごめん。cakePHPの話から逸脱した。

>>723
どこか忘れたけど、コントローラあたりの設定で、DBを使わないようにもできたはず。
だれか補足頼むw
特殊な使い方でもしない限り、あんましメリットはなさそうだね。
728nobodyさん:2008/04/20(日) 00:32:54 ID:???
>>726
相手を見下さないと精神を保てない糞FWユーザ涙目www
729nobodyさん:2008/04/20(日) 00:33:33 ID:???
図星だったのか? その反応は。
730nobodyさん:2008/04/20(日) 00:34:22 ID:???
モデルが貧弱なCodeIgnitorよりは
CakePHPの方が実用的に見て優れているな。
731nobodyさん:2008/04/20(日) 00:46:44 ID:???
>>728
フレームワークに問題が無い話をしているのに
糞FWとか言っているようじゃ
説得力皆無だゾ
732nobodyさん:2008/04/20(日) 01:31:23 ID:???
>>723
だからDB使わない事もできるって。
デフォルト設定がDB使用になってるだけで、全然強制じゃない。

ttp://www.1x1.jp/blog/2007/08/cakephp_no_db.html

ファイルベースの設定方法は、わざわざ書かなくてもいいよね?


>730
CodeIgnitorを使いたい人は使えばいいし、CakePHPを使いたい人は
使えばいいし、それだけの事。
CodeIgnitorは機能が少ない分、実装がシンプルで軽いのが特徴なんだから、
機能的に足りていれば、そっちでもいいでしょ。
733nobodyさん:2008/04/20(日) 01:35:00 ID:???
ちいたん最強
734nobodyさん:2008/04/21(月) 16:11:05 ID:Hc1e0Bqc
追加の検証が必要な不確実な情報
俺のコードに問題がある可能性もあり。

1.2.0.6311-beta のデフォルトのセッション管理(ファイルベース?)

Configure::write('Session.save', 'cake');

のとき、同時に複数のアクセスがあるとロックされるかもしれない。
つまり、一つの目のアクセスで長い処理を行っていると
二つ目のアクセスがロックされ一つ目が終わるまで実行されない。

Session->read()で待たされる。

Configure::write('Session.save', 'database');にして
DBベースのセッションにするととりあえず回避できる。

関係ないとは思うがPostgreSQLの場合。
735nobodyさん:2008/04/21(月) 16:34:17 ID:???
PhpNutいなくなっちゃったの?
736734:2008/04/21(月) 19:37:53 ID:???
よく考えたら、ロックされるほうが正しいのか。

アクセスしたユーザーはロックされるが
他の人(ようするにセッションファイルが違う人)は
ロックされないようだ
737nobodyさん:2008/04/22(火) 13:08:38 ID:???
初歩的な質問で申し訳ありません。

bakeで作ったコントローラをみると

$this->Session->setFlash(__('hogehoge.', true));

のようなコードがありますが

この__() や後ろのtrueは何を意味しているのでしょうか?
もしかするとcakePHPに限ったことではないかもしれませんが、
よろしくお願いします。
738nobodyさん:2008/04/22(火) 15:52:58 ID:???
>>737
多言語化機能。

/app/locale/jpn/LC_MESSAGE とその周辺あたりに言語ファイル
.po や .mo を置くと、hogehogeが翻訳される。

多くはビューで使われるため、<?php __('hogehoge') ?> と簡便に書くことが出来るようになっている。
この場合、言語ファイルがあると、hogehogeが翻訳されて”出力”される。
第二引数にtrueを指定すると出力せずに戻り値として返すという意味。

これと似たやり方は、CakePHPだけでなく、PHP以外でも良く使われ
多くは _('hogehoge')という書き方をする。

PHPではgettext関数の別名として_()関数が使用できる。
http://jp.php.net/manual/ja/function.gettext.php

CakePHPではこのやり方を独自に拡張しており、
関数名がアンダーバー二つになっている。
739nobodyさん:2008/04/22(火) 15:54:09 ID:???
おまけ。翻訳手順。poeditを使った場合。

1.ソースコードやビューの中の翻訳したい文字列を__('hogehoge')という書き方にする。
2.cake i18n extractツールを使うと、ソースコードの中から__()の部分を抽出、.potファイルを生成してくれる。
3.poeditなどのツールを使い、.potファイルを取り込み、.poを作る。
4..poを編集して翻訳リストを作っていく。
5.最後に.poを.moにコンパイルする。.moが最終的な翻訳ファイル。poeditの場合.poを保存したら.moも出来る。

6.新たに単語が増えたときは、2の手順で再度.potファイルを生成する。
7.poeditで今使っている.poに.potファイルを追加取り込みをする。ちゃんと差分だけが取り込まれる。削除された単語も.poファイルに残っている。
8.再度翻訳して保存。.moを作る。


ファイルの意味をまとめると、
.pot・・・単語のリスト(今現在使用している単語を抽出するテキストファイル)
.po・・・作業ファイル(過去に使用して、今は削除している単語の翻訳情報なども残っているテキストファイル)
.mo・・・翻訳ファイル(作業ファイルに残っているいろいろな無駄が取り除かれたバイナリファイル)

※ 実はCakePHPは .mo が無くても .po を直接翻訳ファイルとして使える。
740nobodyさん:2008/04/22(火) 18:29:42 ID:???
>>737

いい質問。俺も初めてしった。

>>738,739

素敵だわぁ
741737:2008/04/22(火) 18:43:22 ID:???
>>738-9

丁寧なレスをありがとうございます。

CakePHPにはまだまだ知らない機能があるんですね。
いろいろ楽しみです。
742737:2008/04/22(火) 18:44:53 ID:???
アンカーの付け方間違えました・・・
マウスオーバーしないようにお願いします;;
743739:2008/04/22(火) 18:56:32 ID:???
一つ言い忘れた。.pot .po .mo とかの .で始まるやつは
ドットで始まるファイルではなく、拡張子という意味で書いた。

デフォルトではdefault.poやdefault.mo になる。
それぞれのファイルのdefaultの部分を変更することも可能。

abc.mo の場合、その場合、__d('abc', 'hogehoge') という書き方で
出来ると思うがやったこと無いので/cake/basics.phpでもよんどくれ。
744新参者:2008/04/23(水) 05:59:57 ID:???
ブラクラするんだけど、俺だけ?
メニューを選んで、表示し終わる前にサイト内検索する。(Specialofferとか)
http://www.islandcruises.com/

OS: WinXP sp2
Browser: IE7
CPU: Core2 6300
Memory: 2G
Service: xampp

CakePHP 1.2で開発中なので、こういうの見るとビビっちまう・・・
745744:2008/04/23(水) 06:23:11 ID:???
追記:
キャッシュクリア後とかに、
zeroで検索するとハングしやすい。

firefoxだと大丈夫なので、IE7の仕業くさいな。
調べてくるか・・・
746702:2008/04/24(木) 18:22:26 ID:???
>>698-702
の流れから結局、model内でfindAllをオーバライドしてみたがなんかアソシエーション組んでるほかのモデルまで影響しているような気がする・・。

function findAll($conditions=null, $fields=null, $order=null, $limit=null, $page=1, $recursive=null){

if(isset($conditions) && is_array($conditions)){
array_unshift($conditions,"name like '%" . USER_NAME . "%'");
}else{
$conditions = array("name like '%" . USER_NAME . "%'");
}

return parent::findAll($conditions, $fields, $order, $limit, $page, $recursive);
}
747nobodyさん:2008/04/24(木) 22:39:06 ID:???
>>746
1.1ってbeforeFindなかったっけ?
748702:2008/04/25(金) 12:38:51 ID:???
>>747
ありがとう、まじでありがとう
749nobodyさん:2008/04/26(土) 13:26:12 ID:???
URLを読み込む以外に、CakePHP外部から
CakePHPの関数とか呼ぶ方法内ですかね?

具体的に言うと、もともとウェブサイトがCMSで構築されており、
新たにCakePHPを使ったウェブシステムを追加したわけですが、
そのCMSのページ上にCakePHPシステムの情報・・・会員ユーザー名などを
表示させたいのです。
750nobodyさん:2008/04/26(土) 13:30:26 ID:???
好きなようにDB叩けばいいんじゃまいか?
751nobodyさん:2008/04/26(土) 14:52:38 ID:CCA4AGBq
Shellsでしょう
752nobodyさん:2008/04/26(土) 21:38:26 ID:Uwx0xpWG
セッションがクリアされてしまってハマった。
ネットで検索すると、存在していないcssや画像ファイルがあると消え、
htaccessでの設定で回避できるということだった。

css、画像ファイルのパスと存在が正しいことを確認、
htaccessファイルの設定も修正してみたが、セッションはクリアされたまま。

たすけて。
753nobodyさん:2008/04/26(土) 22:33:41 ID:???
754753:2008/04/26(土) 22:35:08 ID:???
ごめん。よくみると全然関係なさそうだね。
755nobodyさん:2008/04/26(土) 22:37:46 ID:???
>>753は読まずに答えてみる。的外れかも。

えーと、core.phpだっけ? セキュリティレベルを設定するところ。
あそこが一番高いと、接続するたびに、セッションIDが変更される。

だから途中でエラー?とかあると、サーバー側ではセッションIDの情報が変わっているのに
クライアントでは新しいセッションIDをもらきれておらず、セッションIDが切断=クリアされてしまう。

だから俺はセキュリティレベルを中にした。
756755:2008/04/26(土) 22:41:33 ID:???
ttp://cakephp.jp/modules/newbb/viewtopic.php?topic_id=817&forum=9

> slywalker 投稿日時: 2007-11-5 12:58

この人と同じこと。
757nobodyさん:2008/04/26(土) 23:10:06 ID:Uwx0xpWG
CAKE_SECURITYを、'medium'にしてやってみたけどダメでした。

セションをwriteした直後にreadしてみたら、ちゃんと設定されてるのは確認できたんですけどね。
次の画面でreadすると空になってる。ん〜困った。
758nobodyさん:2008/04/26(土) 23:38:17 ID:???
まさかブラウザ側の問題ってことは・・・
セキュリティソフトとか。
759nobodyさん:2008/04/26(土) 23:42:15 ID:???
writeした直後にreadしてちゃんと設定されていると
確認するのはあまり意味無いよ。

なぜなら、情報が実際にセットされるのは
ブラウザにクッキー情報が返ってからだから。

ieHTTPHeadersやLive Http headers
ブラウザのクッキー情報を見るツールを使って
調べてみよう。
760nobodyさん:2008/04/27(日) 00:07:57 ID:???
あっそうだ。セッションの方式にはどれを使っている? cakephp、php、database?
自分の使い方の問題もあるだろうけど、databaseがなんかうまくいかなかった。
761nobodyさん:2008/04/27(日) 00:41:14 ID:DD3/O3h6
セッション方式(CAKE_SESSION_SAVE)は、"php"です。

いま↓を見てるんだけど、aタグによるリンクで画面遷移させるので、
セッションIDを付加しないといけないことがわかった。
ttp://cakephp.jp/modules/newbb/viewtopic.php?topic_id=840&forum=3&post_id=1579

これからやってみます。
762nobodyさん:2008/04/27(日) 02:40:18 ID:???
cake1.2.0.6311使ってますが、
sqlのCASEはquery対処なんかなあ。$optionsでいけたりする?
763761:2008/04/28(月) 00:00:23 ID:???
自己レスだけど、携帯サイトの場合、Cookieが使えない携帯端末があるから
URLにセッションIDを付加する方法でやるしかない。
PCサイトの場合は、セッションハイジャックの危険性があるからURLへのセッションID付加は使えない。

結局、セッションを使わずcookieで運用する方法で実装しました。
本来の意味でのセッションではなく、単なるデータの引き継ぎ用途なので、cookieでよいかと。
764nobodyさん:2008/04/28(月) 20:32:23 ID:???
「セッションハイジャックが毎日行われています」

ttp://pc11.2ch.net/test/read.cgi/php/1207863515/236-249
765nobodyさん:2008/04/29(火) 00:30:20 ID:???
一週間いじってみたがこんな致命的バグの潜んだFWは使う気になれん
766nobodyさん:2008/04/29(火) 00:50:53 ID:???
>>765
何かバグにぶち当たったのかもしれんけど、こんな風にいい逃げする
荒らしもいるしなぁ。

本当に困ってるのなら、具体的なバグ例を挙げてみるといいよ。
そしたら対処方法も出るかもしれないし。


話は変わるけど、前のレスでも出てたし、みんな知ってるのかもしれないけど、
このサイトいいね。参考になる。
テンプレに載せてもいいんじゃない?

ttp://bakery.cakephp.org
767nobodyさん:2008/04/29(火) 02:39:08 ID:???
お決まりですので・・・

宣伝乙^^
768nobodyさん:2008/05/01(木) 10:47:29 ID:oWWm9vMD
hasMany定義しているModelで、子のデータが更新されたら、そのmodifiedで
親のmodifiedを更新したいのですが、どのようにすればいいでしょうか?

子のデータ更新をするcontrollerでいっしょに更新しようとしたのですが、
上手くいきませんでした。

32 function edit($id = null)
33 {
34 $this->Response->id = $id;
35 $thread_id = $this->Response->field('thread_id');
36
37 if ($this->Response->saveField('cooking_name',$this->data['Response']['cooking_name']))
38 {
39 $this->Thread->saveField('modified',$this->data['Response']['modified']);
40 $this->redirect( '/responses/view/'. $thread_id . '#' . $id);
41 }
42 }


modelはこの通りです。

7 var $belongsTo = array('Thread' =>
8 array('className' => 'Thread',
9 'conditions' => '',
10 'order' => '',
11 'foreignKey' => 'thread_id'));
769nobodyさん:2008/05/01(木) 13:48:12 ID:???
>>768
39行目はupdateじゃなくて、insertされてない?
770nobodyさん:2008/05/01(木) 14:08:31 ID:???
>>766
参考になる以前に公式じゃんw
771768:2008/05/02(金) 02:37:54 ID:???
すみません自己解決しました。

39行の手前で、親の方にidを設定したところ、きちんと更新されました。
$this->Thread->id = $thread_id;
772nobodyさん:2008/05/06(火) 17:41:37 ID:???
>>771
報告乙です
参考にさせて頂きます。
773nobodyさん:2008/05/07(水) 00:15:31 ID:ehDEto56
app/views/layouts/default.thtml にて、あるModelのデータを
展開したいのですが、どうすればいいでしょうか?

対応するコントローラもなさそうだし・・・。
774nobodyさん:2008/05/07(水) 00:21:12 ID:???
>>773
モデルからコントローラに値を渡してsetしてviewで使えばいいだけですよ。
775773:2008/05/07(水) 00:29:55 ID:???
>>774
というと、複数のviewで使いたい場合は、各コントローラ、各アクションで
setするという事でしょうか?

あるいは、全てのコントローラの前に読み込まれる、共通コントローラみたいのが
あったりするのでしょうか。
776nobodyさん:2008/05/07(水) 00:37:17 ID:???
>>775
そう

ある
777nobodyさん:2008/05/07(水) 14:32:05 ID:???
そうあるよ
778nobodyさん:2008/05/07(水) 14:48:46 ID:???
>>775
チートシート手に入れるべし
779773:2008/05/08(木) 01:09:40 ID:???
結局レスの内容はよく分かりませんでしたが、下記ページを参考に、
requestActionで取得する事にしました。

http://cakephp.jp/doc/ch07s02.html

/views/layouts/default.thtml
<?php echo $this->set('users', $this->requestAction('/users/getUserList'), array('return')); ?>
<p><?php $user_numbert = array_rand($this->viewVars['users']);
echo $this->viewVars['users'][$user_numbert]['User']['name']; ?></p>
780nobodyさん:2008/05/08(木) 01:42:10 ID:???
>>779
ちょwwwww志村上上
781nobodyさん:2008/05/08(木) 09:23:20 ID:???
app_controller.php
function beforeRender() {
 # ここに/users/getUserListの中身とかを
 $this->set('user_numbert' , $user_numbert);
}

default.thtml
<?php e(h($user_numbert['User']['name'])) ?>
782nobodyさん:2008/05/08(木) 09:34:15 ID:???
ちょwwwww志村上上下下右左右左BA
783nobodyさん:2008/05/08(木) 19:24:13 ID:???
以前にもこんな話題があったような気がするのですが、

フォームの画面遷移のときのデータの持ち回り方について・・・

1.普通にhiddenで埋め込む
2.serializeしてbase64_encodeしたものをhiddenで埋め込む
3.serializeしてbase64_encodeしたものをセッションに書き込む

などが考えられますが、
CakePHP的には、どの方法がベターでしょうか?
784773:2008/05/09(金) 01:55:42 ID:???
サンプルコードまでご提示下さり、ありがとうございます。おかげでフル装備
じゃないや、スマートな実装ができました。

どうもありがとうございました。
785nobodyさん:2008/05/09(金) 09:23:43 ID:???
>>783
質問だけど。
3でbase64_encodeする意味合いって何があるの?
786nobodyさん:2008/05/09(金) 18:49:37 ID:???
>>783

自分は 1。

セキュリティがどうこうっていうプログラマーさんがいるでしょうけど・・・。
787783:2008/05/09(金) 18:55:31 ID:???
>>785
すみません。よくわからないで書いてしまいました;;
シリアライズだけで十分ですか?

>>786
最終的にsaveするまえにしっかりバリデートすれば、それでも問題ないのかもしれませんね・・・
でもやっぱりソース見たときに、パスワードとかメールアドレスがもろに書いてあると、
このサイト大丈夫か??って気になりますが・・・

ちょっと気になったのですが、PEARのHTML_QuickForm_Controllerなんかは
どの方法なんでしょうか??
788nobodyさん:2008/05/09(金) 20:19:38 ID:???
貧乏人は贅沢だ
不満を言う余裕はあるくせに
戦争する暇もある
789nobodyさん:2008/05/10(土) 00:11:55 ID:???
>>787
ソース見られたらっていうのは確かにある。
しかもそれを無理矢理改ざんして入力不可の文字を入力される可能性もある。

しかし、よほどのサイトじゃないとそこまでハッカーも暇じゃないから攻撃しないのでは?
と思います。

現に、ここ 5年ほど、何も問題ありませんでした。
790nobodyさん:2008/05/10(土) 16:35:26 ID:???
>>789
問題があってからじゃ遅いんだぞ!
と思いつつも、もりもりhiddenに入れ込んでしまう。。
791nobodyさん:2008/05/10(土) 17:55:53 ID:???
>>787
セキュリティ目的ならbase64_encodeは用をなさないという認識。

>>789
データはhiddenで埋め込んでおいて、$this->dataをserialize後saltつけてハッシュ化したやつを別でhiddenに埋め込む
↑のふたつを比較して整合性チェックとか?
792nobodyさん:2008/05/10(土) 18:59:59 ID:???
今、ここを覗いている筑波大学へ

ばれてるぞ!
793nobodyさん:2008/05/10(土) 19:29:59 ID:???
別に半角文字列板とかじゃないんだからバレたっていいだろうに。
794nobodyさん:2008/05/11(日) 11:28:50 ID:qWqUPYxD
日本語フォーラムと2ちゃん、どっちの方がコメントもらえるのかな?

と言いつつ、いつもこっちに書くのだけど・・・。


下の記事を参考に、携帯用ページを作っています。
ttp://www.1x1.jp/blog/2008/04/cakephp_12_routing_prefix.html

で、paginateでページングされているのですが、ひとつ問題が。

pagineateの結果、下のようにURLが生成されるのですが、
携帯エミュレータ(P1エミュレータを使用)で確認したところ、
どうやら「page:2」のセミコロンが、有効な値ではないとエラーになるっぽいです。

<a href="/~recipe/m/responses/view/page:2">2</a>


これって、どう対応すればいいのでしょう?
795nobodyさん:2008/05/11(日) 12:01:33 ID:???
app/config/routes.phpにRoute::connectNamed(array(),array('argSeparator'=>'=')); を追加
796794:2008/05/11(日) 13:42:34 ID:???
>>795
Router::connectですね。

ふぉぉ、すぐに答えていただきありがとうございます!
PC側の方もちょっと調整が入りますが、おかげで解決しました!
797nobodyさん:2008/05/12(月) 02:29:40 ID:8yg2YXGe
CakePHP1.2のバリデーションについてよく整理されたマニュアルとかってないかな

バリデーションルールが多様になったほかに、create時update時それぞれに有効無効に
できるなんてこと知ったのだけど、その他含めてちゃんとまとまった情報ってないかな
798nobodyさん:2008/05/12(月) 18:22:39 ID:???
AuthComponentsで、ユーザー情報を取得し直したいとき、どのようにすればよいでしょうか?

たとえば、
ログイン後にユーザーメニューからユーザ名の変更などを行った場合、
セッションには変更前のユーザ名が格納されているため、
ヘッダーなどに表示されている
「ようこそxxさん」のような表示が変わらない、ということになってしまいます。

いちおうの解決策としては、
セッションにはIDのみを格納しておいて、
app_controllerで
毎回、$this->User->findByIdしてセッションに記憶させるという方法をとっていますが、
あまりスマートではありません;

ユーザ名の変更処理の直後のみユーザ情報を取得しなおしたいのですが、
なにかよいアイデアはないでしょうか?
799nobodyさん:2008/05/12(月) 20:51:58 ID:???
>>798
なんとなくでレスしてるが変更と同時にセッション内容も書き換えればいいんじゃないの?
800nobodyさん:2008/05/12(月) 22:27:51 ID:???
公開用Webサイトに1.2系使ってる人っている?
DBからデータをviewで表示するだけなら1.2でも大丈夫かな?

現在は1.1で運用中。
多言語対応が1.2でやりやすいのなら、1.2で作りかえるんだけど。
801nobodyさん:2008/05/12(月) 22:35:05 ID:???
>>800
俺はやっちゃったw

半年ぐらいCakePHP使っていて、コアの中まで見てると
大丈夫なんじゃないかなぁと思う。

バグではないが、ベータ版だから仕様が変わるのが
ちょっとネック。
802794:2008/05/13(火) 00:21:01 ID:???
>>800
いま、2ちゃんねるのレシピ集のサイトをCakePHP1.2で作ってます。
paginatorなどが使いたかったのと、バグっても差し支えないので。


で、ひとつバグらしきのに当たりました。

先に書いた通りのページを参考に、URLルーティングのprefixを使って
携帯用とPC用のページを作り分けしたのですが、この状態でpaginatorを使うと、
PC側のページで、$paginator->prev、nextで何故か携帯用のURL
(/m/:controller・・・)へ飛ばされる事象が。

prefixを設定する前は発生していませんでした。


原因は不明ですが、これまた何故か$paginator->optionsの設定次第で
事象が発生したりしなかったりするので、発生したPC用ぺージでは、

$paginator->options(array('url'=>array("test" => 'test')))

と、ダミーのURLオプションを追加してごまかしています。
803nobodyさん:2008/05/13(火) 02:42:36 ID:???
1.2の正式バージョンていつごろ出るのかな?
乗り換えるべきかどうか迷う・・・
804nobodyさん:2008/05/13(火) 13:48:12 ID:???
>>800

cakephp 1.1 も 1.2 も両方開発してアップしてますけど両方問題ないですよ。

ただ、モバイルサイトも作ろうと思えば 1.1 の wevservices が便利です。
805nobodyさん:2008/05/13(火) 18:13:48 ID:???
1.2じゃなきゃ使いたくないズラ
806nobodyさん:2008/05/13(火) 19:48:08 ID:???
画像表示系のコンポーネントを作って使うとき、
最後にheaderでContent-typeなどを指定するわけですが、
controller.phpのheader(”location...とかぶってしまって、エラーが出てしまいます。

みなさんはどのように処理しているのでしょうか?

わかりずらくてすみません・・・;
807nobodyさん:2008/05/13(火) 19:56:04 ID:???
>>806
わかるわかる。
<img src="hoge.php?=">

みたいなので読み出すやつでしょ?
僕はギブアップしましたね。

ttp://www.hideblog.net/thumbnails/

を使ってます。
808806:2008/05/13(火) 20:02:52 ID:???
>>807
それです!
わかってもらえて安心しました。

リンク先のものは、キャッシュに保存してそれを表示する、というものでしょうか?
これはこれで便利ですが、やはりできればストレートに表示したいですね・・・
809nobodyさん:2008/05/13(火) 22:25:09 ID:Akbr9Dkj
>>806
ob_clean()はどうでしょう。
810nobodyさん:2008/05/13(火) 22:27:45 ID:???
>>807
まったくもって意味がわかりませんが
たぶんこれで解決でしょう。

http://www.ideaxidea.com/archives/2008/01/cakephpcsv.html
811nobodyさん:2008/05/14(水) 09:31:44 ID:???
CakePHPの話題ではないかもしれませんが・・・

たとえばタスクをステータス別に表示する場合


コントローラ側で、
$this->set('yet_tasks', $this->Task->findAllByStatus('yet'));
$this->set('done_tasks', $this->Task->findAllByStatus('done'));
のように二度取得するのと、

$this->set('tasks', $this->Task->findAll());
として、

ビューで

foreach ($tasks as $task) {
if ($task['Task']['status'] == 'yet') {
echo ....

とするのでは、
どちらのほうがパフォーマンスが優れているのでしょうか?

ご教授お願いします。
812nobodyさん:2008/05/14(水) 09:48:17 ID:???
どっちもだめ
813nobodyさん:2008/05/14(水) 09:49:25 ID:XltYBCAy
前者のほうが毎回DBアクセスが発生するため速度という点でのパフォーマンスは悪いでしょうね。

後者のほうは、、ビューにあまりそこまで複雑なロジックを記述することによるコードの効率の悪さ
という点でパフォーマンス難ありかも。

対象となるデータ量次第だけど、そこまでデータが多くなくてサーバのスペックが十分であれば前者の方が
コーディングは早いんじゃね?個人的な意見だけど。
814nobodyさん:2008/05/14(水) 13:49:50 ID:???
806です。
>>809>>810

その方法は試してませんでした。
次回やってみようと思います。
ありがとうございます。
815nobodyさん:2008/05/14(水) 14:46:18 ID:???
デザイナーの要望に応えてちょちょっと変更するときなんて、
viewいじった方が早かったりするんで、
ついついやっちゃうんだよなぁ。
んで、気づいたらviewがえらいことにw
816nobodyさん:2008/05/15(木) 00:40:28 ID:???
CakePHPかRuby on Railsかで迷ってます。

サーバー関連の知識が全くないのですが、
アプリ完成後の公開寸前で困らないためには、
CakePHPを選んでおいたほうが、すんなり公開できるでしょうか?
817nobodyさん:2008/05/15(木) 00:57:18 ID:???
>>816
どっちも自分で試したほうがいいと思う。
俺は慣れてるからCake好きだけど。

最低限のアプリ作って鯖置くまで試してみる事をオススメする。
818816:2008/05/15(木) 01:04:37 ID:???
>>817
レスありがとうございます。

Cakeならば格安のレンタルサーバで試してみることもできるのですが、
Rubyとなるとそこそこ値の張るところでないとダメみたいで、
それだけのお金を出して、設置できなかったとなると・・・

1.2の安定版ももうすぐみたいですし、
やっぱり初心者にはCakeなんですかねぇ・・・
819nobodyさん:2008/05/15(木) 01:14:45 ID:???
>>818
つ仮想サーバ または 適当な空きマシンでlinux
820nobodyさん:2008/05/15(木) 17:54:14 ID:???
レンタルサーバーで問題なのはお金よりも
むしろサーバーを管理できるかどうか。

http://www.fs-virtual.jp/spec/hikaku.html 945円/月〜
http://www.tsukaeru.net/plans/vps/ 2480円/月〜
http://www.ymc.ne.jp/service/managed/plan/index.html 4950円/月
821nobodyさん:2008/05/15(木) 21:43:23 ID:???
  ☆ チン

        ☆ チン  〃  ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ ___\(\・∀・)<  1.2まだー?
             \_/⊂ ⊂_)_ \_______
           / ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
        |  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :|
        |           .|/
822nobodyさん:2008/05/19(月) 16:23:52 ID:???
MediaView(/cake/lib/view/media.php)ってどう使うんだろう?
http://dsi.vozibrale.com/articles/view/mediaview-is-a-bleeding-bastard
http://bin.cakephp.org/view/1026359650
を読む限り、特殊なファイルをダウンロードさせたいときとかに使うみたいだけど、
適当に読む限りファイルを出力するヘッダー情報の段階のことしか書かれていない。(あ、Viewの部分だから当然か)

おそらく、データーベースからグラフをGDとかでスクリプト側で作ったものを表示する場合なんかで
使うんだろうけど、このスクリプトで合成した画像のバイナリデーターはどのタイミングで、どこの関数に格納すればいいのやら?
823877:2008/05/20(火) 09:40:48 ID:xs/omlLe
http://IP/controller/
にアクセスするとhttp://IP/controller/indexが
デフォルトで実行されますけど、このアクションを変えるには
どうしたらいいですか?
824nobodyさん:2008/05/20(火) 11:01:51 ID:???
825nobodyさん:2008/05/20(火) 11:16:01 ID:???
CakePHP 1.2 stable coming soon と言ってるから、そろそろ 1.1 -> 1.2 移行手順をまとめたいな

絶対に手を入れるところ
推奨されているところ
とか
はまりポイント
とか
826nobodyさん:2008/05/20(火) 11:38:08 ID:???
ttp://puyo2.upper.jp/cake/ のPDFを中心に

■絶対に手を入れるところ
・設定ファイルの変更(Warning出しながら動くけど)
# /app/config/core.php
define('DEBUG', 1);
→ Configure::Write('debug', 2);

→ Configure::write('Security.salt', 'your original string'); # add

・ヘルパー変更に伴い、view全般
非推奨または廃止されたもの
$html->input
$html->submit
$html->tagErrorMsg etc...
新たに強化・追加されたもの
FormHelper
PaginatorHelper
XMLHelper

■推奨されている
・validatesに引数を渡さない
$this->ModelName->validates($this->data);
→ $this->ModelName->data = $this->data['ModelName'];
→ $this->ModelName->validates();
・viewの拡張子
action_name.thtml
→ action_name.ctp

間違いあったら訂正よろしく
827nobodyさん:2008/05/20(火) 13:22:09 ID:???
find系もなんか修正あったんじゃなったけ?
828nobodyさん:2008/05/20(火) 19:13:39 ID:???
検索してもうまく見つけられなかったので、教えてください。
SELECT * from `Model` WHERE ( `Model`.`field_1` like '%xxx%' OR `Model`.`field_2` like '%xxx%' ) AND `field_3` = 'yyy';
みたいなSQLを発行したい場合の$conditionsの指定はどうしたら良いのでしょう?

また、
SELECT * from `Model` WHERE concat( `Model`.`field_1` , `Model`.`field_2` ) like '%xxx%';
というのも知りたいです。
829nobodyさん:2008/05/20(火) 19:19:52 ID:wZOYKZBI
バージョン1.2のAuthComponentでの認証で二重ログインを防ぎたいんだけど、
良い方法か参考ページがあったら教えて下さい。
830nobodyさん:2008/05/21(水) 01:03:54 ID:+T6Kz2/1
CakePHPってDBのカラム名まで縛るのね。
その時点で候補から外れたね。
831nobodyさん:2008/05/21(水) 01:16:01 ID:???
>>830
さようなら。
その縛りなしで行こうと思えば行けるんだけどな。
じゃぁの。
832nobodyさん:2008/05/21(水) 01:57:45 ID:???
>>830
そんなに大変?
たしか、RoRでもあったと思うけど。

idとcreatedとmodifiedくらいしか意識した事ないけど、
他にもあるのかな?
833nobodyさん:2008/05/21(水) 02:29:51 ID:???
というかしばるから便利なわけですが
834nobodyさん:2008/05/21(水) 10:27:32 ID:???
>>832
name or title フィールドでgenarateListが自動的にidと配列を返す
あとは、xxx_id とか xxx_yyy とかのアソシエーション系かな?

いずれにせよCoCの理念に同調できない人はRoRをはじめとしたフレームワークは無理だわな。
RoRではなく、Cakeスレに書き込む>>830に乾杯
835nobodyさん:2008/05/21(水) 12:50:06 ID:???
> name or title フィールドでgenarateListが自動的にidと配列を返す
そういえばそんなものもあったね。1.2では
find('list')にかわるわけだけど。

ソース見たけど、1.2betaの段階では、フィールド名指定する方法
無かった気がする。なんでだろうね。

結局は、genarateListを1.2で動かしたときの警告の通り
find('all')の検索結果をSet::combine($results, $keyPath, $valuePath);
しているだけなんで、自分でやればいいんだけどね

> あとは、xxx_id とか xxx_yyy とかのアソシエーション系かな?
これはなぁ・・・みんな同じような名前のつけ方しない?
○○テーブルのIDなんだから○○_idって。
836nobodyさん:2008/05/21(水) 18:07:50 ID:???
カラム名とか考えるの苦手なんで縛られてた方が楽だな俺は。
コントローラ名とかメソッドの名前とか考えるのホント嫌。かっこいい名前考えるセンス無くて。
837nobodyさん:2008/05/21(水) 18:10:51 ID:???
スペル調べたりするのも面倒だから、ローマ字とかw
838nobodyさん:2008/05/21(水) 18:29:28 ID:???
たしかに項目全部のスペル調べるのって時間かかるよなw
非英語圏の俺涙目
839nobodyさん:2008/05/21(水) 22:53:45 ID:???
>>838
あれ、こんなところに俺がいるぞ?w


最近、アルクで調べるようになって、ちょっと楽になった。
ttp://www.alc.co.jp/


カラム名は適当な英語でいいが、テーブル名はきちんとした英単語になってないと、
単複の変化がねぇ。。。
840nobodyさん:2008/05/21(水) 22:58:34 ID:???
ローカルに辞書ソフト入れておいたほうがいいぞ。
どうもウェブだと時間がかかる。

おれはMS Officeについていたbookshelfを使っている。
841839:2008/05/21(水) 23:38:50 ID:???
>>840
Bookshelfか。懐かしいなぁ。

Bookshelfもいいんだけど、アルクは例文がいろいろ出てくるので、
そこがおすすめ。
たしかにローカルの方が速いけどね。
842nobodyさん:2008/05/22(木) 00:42:45 ID:???
>>839

俺発見!
843nobodyさん:2008/05/22(木) 09:57:07 ID:???
□cake.phpがapp/webroot以下のsqliteファイルを見てない?

sqliteファイル(app/webroot/cake.sqlite)を用意してから
cake.phpを実行しているけどエラーメッセージが出て怒られる。

sqliteファイル(app/webroot/cake.sqlite)を
./cake.sqliteに移動してやると「Bake All complete」。

□エラーメッセージ
$ php cake/console/cake.php bake all Post
...
Error: Missing database table 'posts' for model 'Post'

□app/config/database.php
<?php
class DATABASE_CONFIG {

var $default = array(
'driver' => 'sqlite',
'persistent' => false,
'host' => 'localhost',
'port' => '',
'login' => '',
'password' => '',
'database' => 'cake.sqlite',
'schema' => '',
'prefix' => '',
'encoding' => ''
);
}
?>
844nobodyさん:2008/05/22(木) 13:44:12 ID:???
英語の豆知識
Data : 複数形
Datum : Dataの単数形

CakePHPやるまで知らんかった。。。
845始めるっす さん:2008/05/23(金) 16:47:14 ID:b0nY9q6k
教えてください。
CAKEを使う際、一番いい、IDEは?

http://www.asial.co.jp/vsphp/

↑は、どうですか? よろしくお願いしまっす(@^^)/~~~
846nobodyさん:2008/05/23(金) 16:57:32 ID:???
これは分かりやすい駄目な宣伝の例ね
847nobodyさん:2008/05/23(金) 17:01:19 ID:???
>>844
なにそれマジで?
848nobodyさん:2008/05/23(金) 17:10:31 ID:???
受験英語でも覚えたことだろ。
ここは中2以下ばかりだったのか。

まあ、あおりはともかくとして、
この業界、Allow をアロー、Denyをデニーと発音する低脳が異常に多いよな。
ここまで自然言語の才能が乏しいと、プログラム言語をいくらがんばっても限界が低いだろうね。
849nobodyさん:2008/05/23(金) 17:21:39 ID:???
>>848
じゃあなんて読むの?
まぁ seo をセオって読むやつは問題外。
850始めるっす さん:2008/05/23(金) 17:35:52 ID:b0nY9q6k
>>846

いえ、業者の者ではありません(~_~;)
エクリプスのジャバーでしたが、CAKEを使うことになりました…

PDTとかも良いかなーと思いましたが、
ちと、芸が浅い(@_@。

何か良い、ツールを教えてくださいっす(^^)/~~~
851nobodyさん:2008/05/23(金) 19:09:24 ID:???
>>849
セオはリスク管理できないから、
ダメーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー!!!!!!!!!
852nobodyさん:2008/05/23(金) 22:56:00 ID:???
853nobodyさん:2008/05/24(土) 01:49:40 ID:UmgGcxR0
CakePHPに限らない話だけど、PHP系のフレームワークで
DBのトランザクション管理とかってどうやってる?
SpringとかのDI/AOPに代わる画期的な方法とかあるの?
854nobodyさん:2008/05/24(土) 09:43:12 ID:???
DBのトランザクション管理 と DI/AOP が どう関係があるのか?
855nobodyさん:2008/05/24(土) 11:08:39 ID:???
>>854
※ちょっとスレ違いでゴメン。

DI/AOPを使えば、ロジック層の前後で自動的にトランザクションの
開始とコミットを行うように設定できる。
だからロジック層では特にトランザクションを意識しないで
純粋にロジックだけを記述できる。
もし、ロジック層で例外が発生した場合は自動でロールバックもしてくれる。

他にもログの記述とかオブジェクト指向では対応できない
横断的な処理はAOPの機能を使ってメソッドの呼び出しの前後で
自動的に挟み込んでくれたりできる。

ってな感じでやってるとDI/AOP無しのアプリはきついなーと
思うんだけど、そこら辺はうまいやり方があるのかね?
856nobodyさん:2008/05/24(土) 21:23:01 ID:???
社会科学:Data->Datas
自然科学:Datum->Data
857nobodyさん:2008/05/25(日) 00:56:50 ID:???
>>855
できるかどうかという話と、
実際にやるのかという話は別問題。

たしかにAOPを使えば、そういうことが言語レベルで出来るだろう。

だが、オブジェクト指向で作られていても
実際には、トランザクションやログなど、よく使われる場所で
処理を割り込ませることができるような設計になっているから問題ない。
858nobodyさん:2008/05/25(日) 22:20:48 ID:???
cakephp でサイトを一つつくります。
そのcakephpってどうする?

1.プラグインとかコンポーネントとか残したまま再利用。
2.もっかい新しくcakephpをダウンロードして、プラグインとか入れ直す。

1だと、コードがどんどんぐちゃぐちゃになりそうだし、使わないコンポーネントとかも残る可能性がある。

2だとプラグインとか入れ直すのが面倒下さい。

僕的には1ですが、みなさんいかがでしょうか。
859nobodyさん:2008/05/25(日) 22:21:40 ID:???
>>858
追記

一個サイトをつくったあと、さらにもう一つの新しいサイトを作る場合。です。
860nobodyさん:2008/05/25(日) 23:45:46 ID:???
好きにすりゃいいよ。
861nobodyさん:2008/05/26(月) 09:21:10 ID:???
掲示板のシステムを CakePHP で作ろうと思っています。
モデルは Post(記事) と Comment(コメント) です。
そして Post 一覧表示で Post 毎の Comment の数も同時に表示したいと思います。

この時、Comment の数はどのように算出するものなのでしょうか?
自分で思いつく範囲は次の通りでした。

1. Post 1つ毎に select count() from Comment where 〜 を発行する。
2. select * from Comment で全ての Comment を取得し、アプリ側で Post 毎に数をカウントする。
3. Post テーブルに count 列を用意し Comment 登録時にインクリメントする(非正規化)。
4. 3.の動作をトリガーで実現する。

このようなケースはよくあると思うのですが、一般的にはどのような方法が使われている
ものなのでしょうか?
862nobodyさん:2008/05/26(月) 15:22:28 ID:???
>>861
それってアソシエーションを知った上での質問?
863nobodyさん:2008/05/26(月) 16:03:07 ID:7/wrhW70
>>862
ああ…突っ込んじゃったよ。ほっときゃいいのに。
864nobodyさん:2008/05/26(月) 16:09:39 ID:???
アソシエーションは Post hasMany Comment の関係で Post を1つ取得すると
自動的に任意の Comment が取得できるという、CakePHP 独自の仕様程度
にしか理解していませんでした。

もっと理解すれば上記の話はうまく解決できるという指摘でしょうか?できるだけ
データベースの負荷はかからないように設計したいと思っています。
もう少し調べてみます。ご指摘ありがとうございます。
865nobodyさん:2008/05/26(月) 16:29:06 ID:7/wrhW70
>>864
>Post を1つ取得すると 自動的に任意の Comment が取得できるという、

ヒント:
$ret = $MyPost->find($id);
echo count($ret['Comment']);
866nobodyさん:2008/05/26(月) 16:44:00 ID:???
>>865
ヒント、ありがとうございます!

>>862 で「ほっときゃいい」と言われるので、何か失礼なことを書いてしまったのか
と心配になっていました。

> $ret = $MyPost->find($id);
> echo count($ret['Comment']);

はい、上記で Comment の数が取得できるのは理解できます。ただ、この方法だと
総数だけを取得するのにその他のデータまで同時に取得してしまうため、データベース
への負荷が余計にかかるのではないかと心配だったのです。

また、1つの Post だけを取得するのなら上記の方法を採用するのですが、今回は
Post の一覧なのでその数が数百以上になることも考えられ、できるだけデータベースに
負荷のかからない方法を採用したいと思っています。

非正規系になってしまいますが、posts テーブルに count 列を持てば、たった一つの
SQL で実現できるなとは思ったのですが、これが一般的な方法なのかどうか判断が
つきませんでした。

これは CakePHP のお話ではなく SQL のスレの方が適切だったのでしょうか…。
867nobodyさん:2008/05/26(月) 17:15:08 ID:7/wrhW70
>>866
つ echo $Count->findCount($hogehoge)

ただし、コードが多くて読みにくくなってもよいならば。
サーバのリソース次第だろうけど、>>865にしたところで速度的に雲泥の差があるとは思えないけどね。>>865の方が投げるSQLは一つで済んでるはずだし。
実際にコード書いてテストデータ突っ込んでみて、検証してみれば?
868nobodyさん:2008/05/26(月) 17:45:04 ID:???
>>867
ありがとうございます。

そして了解しました。不慣れな初心者なもので時間はかかるかもしれませんが、
考えられうる全ての方法を実際に検証してみようと思います。

確かに Comment のような小さなデータの場合、find($id) で総数をアプリ側でカウント
するのと、findCount() でデータベースにカウントさせるのではそんなに変わらないかも
しれませんね。ただ、Comment がカラム数 100 もあるようなデータの場合で、常に Post
に対して数百も付属しているような場合だと結果は変わるような気がします。そのあたり
も含めて検証してみようと思います。
869nobodyさん:2008/05/26(月) 18:37:58 ID:???
要するにcakephpのmodelにカウンタキャッシュはあるのかって質問か。

あるの?
870nobodyさん:2008/05/26(月) 18:49:48 ID:???
あるんじゃね?こんな書き込みあるぐらいなんだから。

https://trac.cakephp.org/ticket/4652
871nobodyさん:2008/05/26(月) 19:38:42 ID:???
ありがとうございます!

RORから使われているカウンターキャッシュという一般的な用語があったのですね。
ここをみて理解できました。

http://blog.matsimitsu.nl/code/163/cakephp-countercache

behaviorを使ってカウントをインクリメントするのですね。この方法が一般的な方法で
あるとわかっただけでも安心して使えそうです。色々とありがとうございました。
872nobodyさん:2008/05/26(月) 20:20:41 ID:???
要するに、cakephpのリレーションはデータ無駄にとってくるけどなんなの?って質問か。
cakephp recursiveとかでググれ。変だから。

873nobodyさん:2008/05/27(火) 01:20:24 ID:Dti8RTlW
そういえば毎回、findやfinallするときに引数$recursive指定するのってメンドイよな。
クラス化してメソッドを細分化したときなんてとくに、recursiveのパターン数でメソッドを
さらに分解してしまうと大変なことになってしまう。
getPostWithComments() とかgetPostWithoutComments()とか。
874nobodyさん:2008/05/27(火) 03:10:59 ID:???
なんかその設計が悪いんじゃないの・・
875nobodyさん:2008/05/27(火) 03:42:15 ID:???
ビジネスロジックを律儀にmodelに入れてる悪寒
適度で良いんだよそんなの。細分化うざい。Controllerでやれ。

それでもやっぱりビジネスロジックまとめたいというなら
modelとcontrollerの間にservice層入れる。

が、そんな規模のものはcakephpは想定してないんじゃないかね。
876nobodyさん:2008/05/27(火) 13:21:52 ID:???
>>875
そういう問題じゃない。

getPostWithComments() とかgetPostWithoutComments()という
メソッドが出来てしまう問題はロジックを置く場所を変えても
どっちみち出来てしまうだろ。

これはrecursiveの違いでメソッドを作るか、
引数(プロパティ設定も含む)で指定するかの違いだよ。

関数作るのが嫌なら、getPost(withiCommentsを意味する引数);とするか
$this->プロパティ = withiCommentsを意味する値; getPost();
とするしかないんじゃね?

ビジネスロジックではなく、どこまでデータを拾ってビューに渡すかの処理と
考えれば、コントローラーで取得するデータの範囲を決めるのもまずくは無い。
877nobodyさん:2008/05/27(火) 13:44:51 ID:???
その通りだと思う。悪寒の憶測で話したからずれたんだな。

CakeのModel拡張して、Withで同時に拾ってくるようなマジック関数入れると
もっと綺麗かなと思った。findBy的な。

878nobodyさん:2008/05/27(火) 14:40:04 ID:Dti8RTlW
先ほどの質問>>873を同僚に話したところ、ビヘイビア使えば?と言われてしまいました
879nobodyさん:2008/05/27(火) 18:20:37 ID:???
behaviorって1.2から導入されたのか。
1.1しかいじってなかったのでピンとこなかったよ。
880nobodyさん:2008/05/27(火) 23:04:56 ID:???
>>878
ビヘイビアですか・・・?

出来ないことは無いとは思うけど、
でもそれ、なんて名前のビヘイビアになるんだろう。

(名前がわかれば、ビヘイビアにするのが妥当か判断できる)
881nobodyさん:2008/05/30(金) 15:00:54 ID:xGH68yw0
■PostgreSQLを使ったときのバグ 1.2.0.6311 beta(と最新のブランチ)で確認

$model->create();
$model->save(data)
をしたとき、以下の二つのSQL文が発行される

1 INSERT INTO "models" (〜〜) VALUES (〜〜)
2 SELECT last_value AS max FROM "models_id_seq"

問題は、2行目、データをインサートしてから、シーケンスの最大値を取得している。
これは新たに作成された $model->id を取得する為だが、
この処理が二つのセッション(AとBとする)で同時に実行された場合、

A-1 INSERT INTO "models" (〜〜) VALUES (〜〜) //シーケンスの値が1になる
B-1 INSERT INTO "models" (〜〜) VALUES (〜〜) //シーケンスの値が2になる
A-2 SELECT last_value AS max FROM "models_id_seq" //本来は1であるはずが2を取得
B-2 SELECT last_value AS max FROM "models_id_seq" //2を取得

となる場合が発生し、A-2で取得される値が正しくない。

一日に数回しか注文が無いのに、たまたま同時刻の注文とその明細が一つずれたorz
(ベータ使っている俺が悪いんで、別に恨みませんけど。自社システムだし。)

これどうすればいいのかな? 単純にcurval()を使えばいいのかな?

MySQLに関しては、SELECT LAST_INSERT_ID() AS insertIDを使っているので
問題は無いはず。その他のデータベースまでは見ていない。

えーと、それからアカウント持っている人
だれか公式に英語で伝えてください。お願いします。

あと、説明これで間違って無いと思うけど自信は無い・・・
882nobodyさん:2008/05/30(金) 15:33:24 ID:???
こんなのがあった。おかしいなぁ?昔はcurrvalを使っているのに・・・?

どういうこと? なんか別の問題でもある?

https://trac.cakephp.org/ticket/381 currval()になっている。

https://trac.cakephp.org/ticket/598 このパッチでmax()になった?
883nobodyさん:2008/06/02(月) 22:09:13 ID:???
1.2 stable キターーーーーーー!!!











という夢を見たw
884nobodyさん:2008/06/03(火) 15:08:24 ID:s/VzyqcV
データベースからboolean型の値を取得したとき
取得できる値は、0と1である・・・という仕様なんでしょうかね?

データベースが、PostgreSQLの場合、't'が返ってきたり、
ソース見ると'TRUE'とかいう文字があったり、
ぜんぜん仕様がわからんのですが。
885nobodyさん:2008/06/03(火) 17:13:31 ID:???
dreamweaver cs3 なんだけど、空の ctp ファイル作ると確実に
内部エンコーディングを sjis にしちゃうから文字化けするよね。

いつも新規作成 → 秀丸でutf-8変換 でやってんだけど。

で、現在、 あ とか 人文字だけ残したファイルをコピペしてんだけど。
なんかいい方法ない?
886nobodyさん:2008/06/03(火) 17:44:40 ID:???
>>885
dreamweaverにデフォルトでUTF8と認識するってオプション無いの?

まあ、文字数が少なかったらどっちみち文字化けは
避けられないので、UTF8と認識するような文字をコメントで入れて
おくのが確実だと思うけど。
887886:2008/06/03(火) 17:45:48 ID:???
で、俺は何を聞こうと思ってここに来たんだっけ・・・?
888nobodyさん:2008/06/03(火) 17:54:36 ID:???
>>885
俺もそれが原因でコーディングだけeclipseに乗り換えた。
ほんとは全部DWでやりたいのだけど・・・
889nobodyさん:2008/06/03(火) 18:59:53 ID:???
>>886
ありがと!やっぱりそれしかなさそうだね。

>>888
仲間だ〜

で、教えてほしいんだけど、 eclipse と dw どっちが cakehp の開発効率あがりますか?
例えば、デザインは dw がいいけど、 PHPコーディングは eclips のが圧倒的にいいよ!

みたいな。

教えて頂ければ、幸いです。
890nobodyさん:2008/06/03(火) 19:07:00 ID:Mx/TsVoL
>>889
そんなの人生いろいろ、人それぞれだろ。
891884:2008/06/03(火) 19:11:03 ID:???
PostgreSQLというか、データベースの扱いの仕様そのものがわかんね。

Boolean型を保存するときは、1やtrueなんかを適当に変換して保存。
呼び出すときは、データベースに入っているもの・・・というか
ネイティブなデータベースAPIで取得した値をそのまま返すってのが
今の動きなんだろうか?(PostgreSQLの場合、tとf)

正式版になったら、統一されるのかな?
データベースごとに戻ってくる値が違っていたりすると
ややこしいなぁ
892nobodyさん:2008/06/03(火) 19:51:40 ID:???
それはSQLがリテラルじゃないから、とかじゃなくて?
893nobodyさん:2008/06/03(火) 21:14:16 ID:???
>>892
ごめん、言っている意味がよくわからない。

とりあえず、findAllして戻ってきた値が、
MySQLとPostgreSQLで違うんだ。

そしてPostgreSQLの仕様では
http://itbtech.itboost.co.jp/man/postgres_man/datatype-boolean.html
> Example 3-1から見てお分かり頂けるように、
> boolean値の出力はtまたは fとなります。

PostgreSQLは頭悪いとしか思えない・・・
894nobodyさん:2008/06/03(火) 21:45:23 ID:7GPFTIgo
Grails使ってる俺には実感が沸かない話だ
model内にbooleanで定義されてたらboolean入るもんじゃないのか?
http://grails.org/doc/1.0.x/ref/Domain%20Classes/findAllBy.html
895nobodyさん:2008/06/03(火) 21:46:11 ID:???
>>894
くるな
896nobodyさん:2008/06/03(火) 22:05:07 ID:7GPFTIgo
そもそもGrailsではテーブルがmodelに合わせて自動生成されるので型の不一致は起こり得ない
897nobodyさん:2008/06/03(火) 22:08:23 ID:???
くるなっていったよね?
898nobodyさん:2008/06/04(水) 07:01:51 ID:???
とりあえずGrailsの話はGroovyスレで。

Java系スクリプト言語Groovy
http://pc11.2ch.net/test/read.cgi/tech/1080052050/
899nobodyさん:2008/06/04(水) 18:11:13 ID:???
コントローラでの処理に応じて、Viewを切り替える事は出来ますか?
900899:2008/06/04(水) 18:17:38 ID:???
>>899
ちなみにフォルダ切り替えっぽいのは発見しました。
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=309&forum=12
901nobodyさん:2008/06/04(水) 18:36:13 ID:???
普通に$this->render()だろ?
902nobodyさん:2008/06/04(水) 18:51:36 ID:???
>>901
ありがとうございます、一回も使ったことがありませんでした ><
903nobodyさん:2008/06/05(木) 10:53:07 ID:???
1.2 RC出たのに静かですね。
904nobodyさん:2008/06/05(木) 11:16:40 ID:???
stableではないのね
905nobodyさん:2008/06/05(木) 12:19:28 ID:???
初期の1.2から相当変化したらしいけど、どれくらい変わったんだろ。
まとめサイトきぼん
906nobodyさん:2008/06/05(木) 12:22:58 ID:???
セキュリティコンポーネントが扱いやすくなってるといいなぁ・・・
907nobodyさん:2008/06/05(木) 19:52:47 ID:GvsgA2Ue

良い、IDE、エディタは、何ですか?
908nobodyさん:2008/06/05(木) 20:39:37 ID:???
TextMateじゃないでしょうか?
909nobodyさん:2008/06/06(金) 09:50:14 ID:???
IDEなんて重いから使わない。
とりあえずeclipse触っとけば?
910nobodyさん:2008/06/06(金) 09:54:17 ID:???
emacs + php-mode + yahtml-mode + mmm-mode
911nobodyさん:2008/06/06(金) 15:12:33 ID:ejUDGIWK
CakePHP 1.2RCを入れてみて、bakeを使ってみようと思ったんだけど、
array_intersect_key()が使えないとかいうエラーで動きません。
PHP4の環境なので確かにそんな関数は無いんですけど、PHP5にするしか無いんでしょうか?
912nobodyさん:2008/06/06(金) 15:34:17 ID:???
おかしいね。見たところarray_intersect_keyは
cake/basics.phpに書いてあるようだけど。

CakePHPはPHP4でもPHP5の関数が使えるように独自で互換関数を実装している。
それがbasics.phpに書いてあるわけだけど。バグかな?


本来はCakePHPはPHP4で動くはずだと思うけど、こういうものもある。
CakePHPに限らず、PHP4でPHP5の関数を使いたいとき便利。

PHP 4.xでPHP 5.2/6.0の機能を実現する互換キット
http://phpspot.org/blog/archives/2007/08/php_4xphp_5260.html
http://upgradephp.berlios.de/


話変わるけど、1.2 RCは1.2.0.7119が出た後で1.2.0.7125がでているので注意ね。
詳細読んで無いけど。ちょっとミスっていたっぽい?
913nobodyさん:2008/06/06(金) 16:29:33 ID:???
>>912
どうもです。なるほどそういう仕組みなんですね。バージョンは7125でした。

console/cake.phpからbasics.phpは呼ばれてはいるのでパスの設定とかは問題ないようです。

とりあえず、cake.phpの中にfunction array_intersect_key()をコピーしたら動きましたけど、
何なんだろ。
914nobodyさん:2008/06/06(金) 20:44:57 ID:???
console\libs\cake.phpでbasics.phpを呼ぶ前に関数を使ってるっぽい。

console\cake.php
156行:追加 require_once( CORE_PATH . 'cake' . DS . 'basics.php');
226行:変更 if (!require($inc)) { -> if (!require_once($inc)) {
でとりあえずbakeが起動した。
915nobodyさん:2008/06/06(金) 23:24:32 ID:???
バグ報告だなw
916nobodyさん:2008/06/07(土) 18:20:03 ID:???
テーブル作るとき、通常はプリフィックス無し、
テストはtest_suite_付とかで二重にテーブル定義必要じゃん。
めんどくせー。あっcake schemaってのがあるじゃんって
cake schema使ってテーブル作ろうと思ったら、
PostgreSQLはまだちゃんと実装されてないのな・・・(´・ω・`)ショボーン

かろうじてテーブルの作成は出来るみたいだけど、
データベースからschema.phpの生成でプライマリキーの取得がおかしいわ
alter table系が動かないわ。
917nobodyさん:2008/06/09(月) 09:35:03 ID:???
cakeからテーブル作成する需要ってあるの?
918nobodyさん:2008/06/09(月) 11:50:00 ID:???
>>916で書いたつもりだけど?

テーブルの作成を何度もやるのって面倒なんだよね。

prefixが変わるとテーブル名も変わる。
テストではprefixが変わるから違うテーブルで再作成。
DBMSが変わるとcreate文も微妙に変わる。
919nobodyさん:2008/06/10(火) 16:59:11 ID:???
名前付きパラメータ(?)の正しい書き方ってありますか?
今は

<?php echo $html->link('カテゴリー2', array('controller' => 'posts', 'action' => 'index', 'category:2')); ?>

のように書いているのですが・・・
920nobodyさん:2008/06/11(水) 01:07:33 ID:???
名前付きパラメータってなんだ??
921nobodyさん:2008/06/11(水) 23:19:17 ID:Ox0RFxzt
>>919
<?php echo $html->link('カテゴリー2', '/posts/index/category:2') ?>

じゃ、ダメなの?
922nobodyさん:2008/06/12(木) 10:51:48 ID:???
>>919
<?php echo $html->link('カテゴリー2', array('controller' => 'posts', 'action' => 'index', 'category'=>'2')); ?>

じゃ、ダメなの?
923nobodyさん:2008/06/12(木) 13:48:51 ID:UzdM2zrv
おい、お前。そうお前だよ。
仕事でMySQL使って納品したのに、
MySQLのライセンス料払ってないだろ o9m
924nobodyさん:2008/06/12(木) 13:58:17 ID:???
質問させてください。

特定のときだけ、
validateの特定のルールをスルーさせたい場合、
どのように指定すれば良いのでしょうか?
925nobodyさん:2008/06/12(木) 14:10:17 ID:???
if ( 特定のとき ) {
  validateの特定のルールをスルー
}
926nobodyさん:2008/06/12(木) 14:36:22 ID:???
>>924
ひとまずmodelのチェックはスルーさせて、コントローラでチェックすればいい
927nobodyさん:2008/06/12(木) 21:34:19 ID:???
>>923
GPLを適用すれば、MySQLのライセンス料は不要。

仕事で使っても商用ライセンスは強制じゃない
928nobodyさん:2008/06/12(木) 22:22:00 ID:???
>>927
ライセンスも理解できないアホは相手しなくていいよw
929nobodyさん:2008/06/13(金) 00:03:46 ID:VdaxJKXn
ヒント:Community Server
930nobodyさん:2008/06/13(金) 03:03:15 ID:???
気持ち悪いから調べてみた。
ttp://dev.mysql.com/doc/refman/4.1/ja/using-the-mysql-software-for-free-under-gpl.html
>MySQL データベースソフトウェアを Web サーバとともに使用する場合(提供する製品でない限り)、商用ライセンスは不要である。MySQL サーバを使用する市販の Web サーバを実行する場合も、同様である。

つまり、Webサーバにインストールして使ってるMySQLに対して、CakePHPで作ったWebアプリ動作させるなら、MySQLはGPLでいいんじゃねぇの。

ttp://www-jp.mysql.com/about/legal/licensing/foss-exception.html
で、FLOSS。MySQLは、X11ライセンスで使えるのでCakePHPも問題なく使えるんじゃないのかね。

ついでに、Webサービスの場合、バイナリを配布しているわけじゃないので、サービスを利用する人間に対して
ソースコードの公開義務は発生しないんじゃない、なんてのは各所で書かれてる期がするけど。
931nobodyさん:2008/06/13(金) 03:09:01 ID:???
PHPでつくったシステムを納品するところには、PHPのソースコードを渡さないとだめだよ!
932nobodyさん:2008/06/13(金) 03:17:58 ID:???
>>931
納品するところにはソースコード渡すね。
まぁ、ソースコードだし、見て改変するのは自由だけど、
その改変されたプログラムを保守/サポートするかしないかは、契約書とかで別途記載することになるんじゃねーの。
933nobodyさん:2008/06/13(金) 03:37:02 ID:???
>>931
はギャグで言ってんだろw
934nobodyさん:2008/06/13(金) 06:06:54 ID:???
んなもん契約次第。
935nobodyさん:2008/06/13(金) 07:18:43 ID:n3lmnd89
質問なのですが、
たとえば、
PostとTagがhasAndBelongsToManyの関係にあるとして、
各々のTagが、それぞれ何回使用されているかを調べたいのですが、
どのような処理が考えられますでしょうか?

つまり、posts_tagsテーブルをtag_idでGROUP BYしてCOUNT(*)したような結果がほしいのですが・・・
(わかりづらくてすみません・・・)

よろしくお願いします。
936nobodyさん:2008/06/13(金) 11:35:00 ID:AIRweHgS
>>927
GPLライセンスだったらソースコードは無償で提供しなければいけないんですが。
937nobodyさん:2008/06/13(金) 11:59:03 ID:???
ポケットリファレンス、予約しちゃったけど、
1.2への対応は大丈夫なんだろうか?

だいぶ仕様かわってるけど・・・
938nobodyさん:2008/06/13(金) 13:50:59 ID:???
>>936
PHPで作ったアプリ納品するときに、ソースコードを提供しろって
自分言っていることの意味わかっているか?

PHPはバイナリというものが無く、ソースコードそのものが
実行ファイル繩稚で、そもそもソースコードで
提供することしか出来ませんからw

ウェブサービスのように、バイナリ(=ソースコード)を
利用者に提供していないのなら、ウェブサービスの利用者に
ソースコードを提供する義務が無いのは常識。

それがいやってんで、GPLv3が出来たんだよ。MySQLはGPLv2な。

ちなみにGPLに”無償”で提供するという決まりは無い。
939nobodyさん:2008/06/13(金) 13:57:50 ID:???
GPLを読まずに人からの伝聞だけでなんか言ってる>>936とかは一回ちゃんとGPLをチェックしなよ
940nobodyさん:2008/06/13(金) 20:06:46 ID:???
使用するコンポーネントを動的に変えたいのですが、
各コントローラのbeforeFilterで

$this->components = array('hogehoge');

のようにしても、すでにコンポーネントの処理が終了しているらしく、
意味がありませんでした。

このような場合、どういう処理を書けばよいのでしょうか?
941nobodyさん:2008/06/13(金) 20:29:49 ID:???
>>940
コンストラクタで設定する
942940:2008/06/13(金) 21:19:57 ID:???
>>941
レスありがとうございます。

それは各々のコントローラ(app_controllerでない)の__constructでいいのでしょうか?

ためしにPostControllerで

function __construct() {
parent::__construct();
$this->components = array();
}

として、
$this->componentsを見ると、ちゃんと空になっているのですが、

その後、

function beforeFilter() {
parent::beforeFilter();
pr($this);
}

とすると、
var $componentsで指定したコンポーネントのインスタンスが生成されてしまっています。

どうしてでしょうか・・・?
よろしくお願いします。
943nobodyさん:2008/06/13(金) 21:35:55 ID:???
詰んだ…
MAMP (10.4)でsql5.0、php5
以下のメッセージが出ます。
index.ctpはシェルからもOSからも該当の場所に存在することを確認しています。
document routesは/Users/hoge/Sites/です。

同じようなトラブルがあったことがあれば教えてください。


Missing View
Error: The view for ItemsController::index() was not found.

Error: Confirm you have created the file: /Users/hoge/Sites/gotcha/app/views/items/index.ctp

Notice: If you want to customize this error message, create app/views/errors/missing_view.ctp
944nobodyさん:2008/06/13(金) 21:37:33 ID:???
補足

Cake1.2です。
テーブルはitems(フィールドはid,contentのみ)
コントローラはItemsControllerのみ
モデルはItemのみ
チュートリアルに沿ってやっています。
945nobodyさん:2008/06/13(金) 21:49:56 ID:???
大文字小文字のチェック クラス名の複数形と単数形チェック
946nobodyさん:2008/06/13(金) 21:55:03 ID:???
>>945
今しがたやりました。
何なんでしょうね…
947nobodyさん:2008/06/13(金) 22:13:10 ID:???
解決しました。
MacOSX君の優秀な"拡張子を表示しない"オプションのおかげで
"index.ctp.html" -> "index.ctp"と表示されていただけでした。

お騒がせしました。
948nobodyさん:2008/06/14(土) 00:19:58 ID:???
Winだったら罵倒されてるところだけどねw
949nobodyさん:2008/06/14(土) 00:30:13 ID:???
>>942

たしか、CakePHPはすばらしくも(おせっかい?)
AppControllerで指定したComponentsの値と
そのサブクラスで指定したComponents値を
マージしているのです。

普通はサブクラスのComponentsの値のみ
有効と考えるのが普通ですが、なんとCakePHPは
AppControllerのComponentsを取得してあわせるのです。
950nobodyさん:2008/06/14(土) 03:51:42 ID:???
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1213&forum=6
>
> 試さずにレスしますが、1.2RCからは比較演算子はカラム名の方に付けるようになったんじゃないかと。
>
> $conds = array('id =' => $user_id);


えー。cake_1.2.0.6311-beta では前のままだよねぇ?
理由はなんとなくわかるが、すごい変更だw
951nobodyさん:2008/06/14(土) 13:39:47 ID:???
RC1に移行してからsaveができなくって大変困ってます。
ちょっとお尋ねしますけど、
/cake/libs/model/model.phpのgetColumnTypeメソッド(881行目付近から)で、
if (strpos($column, '.')) {
list($model, $column) = explode('.', $column);
}
if ($model != $this->alias && isset($this->{$model})) {
return $this->{$model}->getColumnType($column);
}
という部分がありますが、これだと$columnに'.'がない場合、$modelはNullのままですよね?
で、$modelがNullのまま if ($model != $this->alias && isset($this->{$model})) { を通ると、
$this->Null ってことになるからエラーになりますよね?
Cannot access empty propertyて叱られます。
これって私がおかしなことをしているから、
$modelがNullになってしまうんでしょうか?
普通にやっていれば$modelはNullにならない?
もしNullがありえるならisset($this->{$model})は、
isset($model)とするべきだと思うんですが…。
どうか教えてください。エロい殿方。。
952nobodyさん:2008/06/14(土) 16:08:54 ID:???
質問させてください!

データベースを使わないモデルで
$form->createを実行すると

Fatal error: Call to a member function schema() on a non-object in
〜cake\libs\view\helpers\form.php on line 127

というエラーが発生してしまうのですが、
なにか対処法はないでしょうか?
953nobodyさん:2008/06/15(日) 02:05:22 ID:???
フォームからGETで送信したとき

sample?foo=1&bar=2

ではなくて、

sample/foo:1/bar:2

のようにしたいのですが、
何かよい方法はないでしょうか?
954953:2008/06/15(日) 02:20:24 ID:???
いまはredirectで書き換えているのですが、
できればredirect以外の方法がいいです。

よろしくお願いします。
955nobodyさん:2008/06/15(日) 03:23:38 ID:???
>>953
リダイレクトするしかないんじゃね?
?〜&〜 で送られるのはブラウザの仕様だからどうしようもないし。

いや、?〜&〜 で送られてきたのを /〜/〜で送られたように
アクションの引数に入れる方法もあるのか?
ややこしくなりそうだけど。

自分は、GETで?〜=〜とかがあれば、/〜/〜に変換してリダイレクトする
コンポーネントを作ってAppControllerに入れている。

あと個人的な趣味だけど URL に : を入れたくなかったので、
:の代わりに=を使っている。sample/foo=1/bar=2
956954:2008/06/15(日) 06:49:31 ID:???
>>955
なるほど、、あれは仕様だったんですね。
コンポーネント化するというのはいいアイデアですね。

それから、たしかに、パラメータの区切り文字に「コロン」って見かけませんね。

Cake標準のpaginateのページ送り用パラメータは「コロン」で区切られますが、
あの区切り文字を変更する方法はありますか?
957nobodyさん:2008/06/15(日) 08:35:39 ID:???
ヘルパだかコンポーネントだかに書いてあったとおもうよ。paginate.
958nobodyさん:2008/06/15(日) 21:04:05 ID:???
"モデルAのid:Bのレコードと関連している"という条件でモデルCのレコードをfindAllしたいのですが、第一変数を"A.id = B"としても検索できません。。。

queryを打つしかないのでしょうか。
959nobodyさん:2008/06/15(日) 21:05:34 ID:???
追記:関連はHABTMです。
960nobodyさん:2008/06/16(月) 09:21:00 ID:???
とりあえず切り分けていこうや。
引数なしでfindAllしたら、ちゃんとモデルCの内容は取れるかい?
961nobodyさん:2008/06/16(月) 10:22:21 ID:1xj3bjFo
>>938
なこたわかってるよ。
システム開発の仕事って、そのソースコードを売って儲けてるんだろ?
962nobodyさん:2008/06/16(月) 16:03:58 ID:???
>>961
>システム開発の仕事って、そのソースコードを売って儲けてるんだろ?
だから、どうだと言うのかと・・
自分でちょっとは調べて考える頭が無いんだったら帰ってくれ

あとMYSQLのライセンスについて議論したいんだったらMYSQLスレ行けばいいかと、皆さん簡潔に答えてくださりますよ。
http://pc11.2ch.net/test/read.cgi/db/1213319883/
963nobodyさん:2008/06/16(月) 19:05:51 ID:???
>>961
> システム開発の仕事って、そのソースコードを売って儲けてるんだろ?

そうとは限りません。MySQLはどうやって儲けていると思う?w
964nobodyさん:2008/06/16(月) 21:07:51 ID:???
>>960
取れます。
findAllすると、まずCをSELECTし、そのあとAをCとJOINしてSELECTしているようです
965nobodyさん:2008/06/16(月) 23:13:47 ID:???
これだからPHP界隈は困る、という流れだな。
966nobodyさん:2008/06/17(火) 03:18:46 ID:???
「これだからPHPは・・」という使い古されたパターンですね、分かります。
967nobodyさん:2008/06/17(火) 09:03:45 ID:???
>>964

Cが取れるならアソシエーション設定はクリアできてると思うけど、
「まずCをSELECTし、そのあとAをCとJOINしてSELECT」するのが妙?
ウチだと

SELECT (略) FROM [Aのテーブル名] WHERE `A`.id`=1 (略)
SELECT (略) FROM [Cのテーブル名] JOIN [Bのテーブル名] ON ((略))

A→B→Cの順になる。

一応初心に戻ってjoinテーブルと外部キーの命名規則の確認を。
http://cakephp.jp/doc/ch06s04.html#id4803164

あとはfindAllの引数でrecursiveを明示してみるとか?
968nobodyさん:2008/06/17(火) 12:29:54 ID:???
symfonyは本まで買って、設置に苦労したのに。

CakePHPは、設置が簡単過ぎてワロタ。
でも、いい本が無いね。
969nobodyさん:2008/06/17(火) 12:42:49 ID:???
簡単なんだから本は必要ないだわさ。

         ,、-──────-、  
       /           `ヽ、
      /●     .●        \ 
    / ⌒ ▼ ⌒           \
   / 彡 ∵人∵ ミ            \
   /   ミ     ミ              ,r-ト-、
  ,'                       f /⌒ヽ!
  ,'                       i L、-、ヽ\
970nobodyさん:2008/06/17(火) 15:00:09 ID:???
1.2正式リリースまだ〜?
これから勉強しようと思うけど正式版で仕様変わったら萎える
971nobodyさん:2008/06/17(火) 15:08:04 ID:???
もうそんなに大きく変わるとこはない・・・といいけど。
972nobodyさん:2008/06/17(火) 15:28:14 ID:???
しかし、RC1での変更っぷりを見るとstableまで待ちたくなるw
973nobodyさん:2008/06/17(火) 16:08:37 ID:???
1.2.0.6311 betaから1.2.0.7125 RC1にしたら
$this->requestActionでadmin routingにできなくなったんだけど
こういう仕様になっちゃったのかな
困った
974nobodyさん:2008/06/17(火) 16:42:12 ID:???
>>972
俺も俺も。一旦はRC入れたんだが戻したw
975nobodyさん:2008/06/17(火) 16:48:38 ID:???
そうなると、明日発売予定のポケットリファレンスは
完全に時期がおかしいよね。


・・・まぁ、予約したけどw
976nobodyさん:2008/06/17(火) 20:26:43 ID:???
質問させてください。
Model内の$displayFieldに$belongsToで設定した別テーブルのカラムを
設定するにはどういう風に記述すれば良いでしょうか?
977nobodyさん:2008/06/17(火) 21:14:24 ID:???
>>975 初心者?
978nobodyさん:2008/06/17(火) 22:25:25 ID:???
私は初心者ですが。
これから新しい安定版が出るって時に、
わざわざ古い方の解説書は買いたくない。

本棚にあるPHP4関連の本は、もはや軒並み時代遅れ。
979nobodyさん:2008/06/17(火) 22:43:58 ID:???
>>978
フレームワークのコードは、varに::みたいなPHP4ばかりだろ。本当に意図不明だけどな。どこにPHP4の需要があるのか訊いてみたい。
980nobodyさん:2008/06/17(火) 22:59:30 ID:???
>>979
ちょっと古めのサーバとかのサービスの追加更新とか?
レン鯖でPHP4まだ使ってるところもあるからそういうのにも対応できるとか?

まぁ、フレームワークも海外産のものばかりだし、海外の事情はどんななってんのか分からないから、
なんともいえないんじゃ。

開発開始もPHP4のサポート切れる話が出る前だったから、互換考えて作ったんじゃないの。
ある程度下位互換するし。

バージョンの違いすらも柔軟に対応できるってのもフレームワークとして、コンセプトが間違ってるとは思わないなぁ。
981nobodyさん:2008/06/17(火) 23:00:00 ID:???
PHP4の需要 = 長く使われているソフトは、まだまだ使われる。
982nobodyさん:2008/06/18(水) 00:56:10 ID:???
>>980
>バージョンの違いすらも柔軟に対応できる
いや、逆に、5に対応できてないからw
PHP5環境でPHP4の文法にトリッキーな小手先の技をちりばめたフレームワークを使うのがどれほど負担になってるか知らないだろw
983nobodyさん:2008/06/18(水) 01:23:47 ID:???
それで、どれほど負担になっているのですか?
984nobodyさん:2008/06/18(水) 12:47:15 ID:???
フレームワークを使う側の人間からすれば
別にぜんぜん負担になってないけどな。

自分で書く部分に関してはPHP5で書いて問題ないし。


さて、俺は、その「トリッキーな小手先の技」というものが
何を指しているのか知りたいわけだが。
985nobodyさん:2008/06/18(水) 16:17:58 ID:???
中身のないレスをした人が、そのあと中身のあるレスをした試しはほとんど無い
986nobodyさん:2008/06/19(木) 10:27:34 ID:???
リファレンス本、どうだった?
987nobodyさん:2008/06/19(木) 12:03:58 ID:???
Cakeを使い始めて二日目。
ファイルのアップロードをするプログラムを書いているのだけれど、
アップロードされたファイルをDBではなくてストレージに(永続的に)保存する場合、
cakeのディレクトリ構造のどの中に入れるのが正しいのでしょうか?

それらのファイルはそのまま表示しないファイルなので、
外から見えないようにwebroot/files以外の場所で保管したいと考えています。
988nobodyさん:2008/06/19(木) 12:55:35 ID:???
looks like RC2 might have to wait for the weekend

英語読めない・・・
989nobodyさん:2008/06/19(木) 13:45:45 ID:???
>>988
リリース候補第2版は週末になりそうです
990nobodyさん:2008/06/19(木) 14:21:27 ID:???
RCっていくつまであるの?
991nobodyさん:2008/06/19(木) 14:22:26 ID:???
>>989
ありがと。

・・・って、もうRC2がでるのか!
stableはいつになるんだろう・・・
992nobodyさん:2008/06/19(木) 19:54:00 ID:???
>>986
使いやすそうな感じ。
1.1と1.2でどっちで使えるかがアイコンで表示されてるから分かりやすいかな。
993nobodyさん:2008/06/19(木) 19:56:47 ID:???
堂々と1.2対応って書いてあるけど・・
まだ気が早いのでは
994nobodyさん:2008/06/19(木) 21:48:59 ID:???
リファレンス本買ってきたよ。
けっこういい感じ。

お〜こんな関数もあるか。って感じ。
少なくとも今まで出てきたcakephpの本よりは 1.2に対応している。

おすすめです。
995nobodyさん:2008/06/19(木) 22:36:59 ID:1PdTbWbl
漏れsymfonyユーザーだけどCakePHPの良さが知りたいんだ
おまいら教えて
996nobodyさん:2008/06/19(木) 23:05:00 ID:???
>>994
>>少なくとも今まで出てきたcakephpの本よりは 1.2に対応している。
そりゃそうだろ・・
997nobodyさん:2008/06/20(金) 00:56:15 ID:???
初心者でCakePHPからはじめようとする奴が多いな
本買って覚えるレベルの奴しかおらんからホッとした
どういう関数が使われてるかソース解析する方が
長い目で見れば早道だよ。
998nobodyさん:2008/06/20(金) 00:57:58 ID:???
いい本でも1年後振り返ると何という糞コードなんだということは
PHPにはよくある
999nobodyさん:2008/06/20(金) 01:01:10 ID:???
PHPは経験じゃなくて、集中力といっても過言ではない
過去の経験よりも、直近2年くらい死ぬほど努力してる奴が
はるかにレベルが上になる
1000nobodyさん:2008/06/20(金) 01:05:39 ID:???
PHPは3年前の努力の成果は、あまり役に立たない
それなら素人レベルからCakePHPを2年くらい
みっちり努力した方がはるかにレベルの高い技術者になる
なので、結局は毎日努力できる集中力だよな
今レベルが高くても、努力維持できなければ
2年後には金にならん技術者だ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。