[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 07/03 16:30 / Filesize : 202 KB / Number-of Response : 839
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【PHP】フレームワーク CakePHP 17ホール目【v2.4】



1 名前:nobodyさん [2014/03/01(土) 17:03:24.57 ID:8AJ9GD6E]
CakePHPは、Ruby on Railsの概念の多くを取り入れた、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークです
CakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう

※他フレームワークとの比較等はスレ違いです

■本家
www.cakephp.org/
APIドキュメント
api.cakephp.org/
github - cakephp
github.com/cakephp
the Bakery
bakery.cakephp.org/
Issue
cakephp.lighthouseapp.com/dashboard
CheatSheet[1.2] (PDF)
cakephp.org/files/Resources/CakePHP-1.2-Cheatsheet.pdf

■日本語公式
cakephp.jp/
フォーラム
cakephp.jp/modules/newbb/
cookbook(マニュアル)
[2.x] book.cakephp.org/2.0/ja/index.html
[1.3] book.cakephp.org/ja

※前スレ
kohada.2ch.net/test/read.cgi/php/1378659370/

545 名前:nobodyさん mailto:sage [2014/05/17(土) 12:16:13.55 ID:???]
WordPressが記事URLのルーティングを管理画面から変えられるけど、
あんな感じにできれば便利だなとは思う

546 名前:nobodyさん mailto:sage [2014/05/17(土) 12:21:13.08 ID:???]
確かにそうだよな。
もっと初期段階でモデルにアクセスできる仕組みのほうがいい気がする。
他のFWとかのプロセスってこの辺りどうなってんのかな。
俺はCakeしか知らないから。

547 名前:nobodyさん mailto:sage [2014/05/17(土) 12:58:47.14 ID:???]
>>546
全体のローダーとルーティングで制限がかかるローダーはタイミングが別なものが多いよ
前者でモデルの読み出しができれば使える感じ

548 名前:nobodyさん mailto:sage [2014/05/17(土) 13:17:23.08 ID:???]
で、結局何が問題なの?

App::uses('ClassRegistry', 'Utility'); で初期段階でモデルにアクセスも出来たし、
あとはカスタムルートクラスで好きなようにパースして返せば、
良い書き方かはおいといて、動きそうな感じはしてるんだけど。

549 名前:nobodyさん mailto:sage [2014/05/17(土) 13:46:47.18 ID:???]
うん、行ける気がする

で、>>548 こそ何が問題なの?

550 名前:nobodyさん mailto:sage [2014/05/18(日) 01:51:53.74 ID:???]
>>549
質問に対してこれでできんじゃね?って方法を書いただけだから、
こっちに問題はないけど。

551 名前:nobodyさん mailto:sage [2014/05/18(日) 02:42:01.29 ID:???]
この板、IDでないから誰が何喋ってんのか全く分からんw

552 名前:nobodyさん mailto:sage [2014/05/18(日) 04:33:21.19 ID:???]
ところで、ClassRegistryが出てきたからついでに聞きたいんだけど、
new Hoge()じゃなくてClassRegistry::init('Hoge')が推奨されるのってなんで?

昔コントローラーじゃないところでモデル使うことがある時、
new Hoge()してるって言ったら、だめって言われたことあるんだけど、
まだ初心者だったら理由までは教えてもらえなかったんだよね。
よくわからないまま、ClassRegistry::init()を使うようにだけしてるんだけど、
理由知りたい。

553 名前:nobodyさん mailto:sage [2014/05/18(日) 11:39:16.13 ID:???]
newしたら初期化されるじゃん



554 名前:nobodyさん mailto:sage [2014/05/18(日) 12:23:32.63 ID:???]
phpunitのテスト駆動開発について。
テストを先に書くということですが、
メソッドを先に書く場合もありますか?

555 名前:nobodyさん mailto:sage [2014/05/18(日) 12:34:06.68 ID:???]
また、掲示板サイトを作る場合、
記事を書く
記事を見る
記事を削除

の3つのケースを先に書いてテストし実装する
もしくは一つの機能ごとにテストを書く実装する、のどちらが良いのでしょうか。

556 名前:nobodyさん mailto:sage [2014/05/18(日) 18:19:05.82 ID:???]
>>554
テストを先に書くことがテスト駆動開発の必須条件の一つだと思うんだけど、
別に原理原則にこたわることもないと思われ。
ただ、教科書的にはまずテストを書いて赤色から発進するのが通則。

>>555
テスト駆動開発は、一般的にはアジャイル開発の一部とされている
(たぶん、そうじゃない場合もあるはずなんだけどあまり記憶に無い)ので
単純なテストからだんだん複雑にして行くことを前提に、
最初は簡単な「記事を書く」テストを書いて実装して
簡単な「記事を見る」テストを書いて実装して、
簡単な「記事を削除」テストを書いて実装して・・・ってことなんじゃないかな?

だけどそれも程度によるだろうから、最初はざっくりアウトライン的に
全体を作って、作りこむに従って単体テストを増やしていったりテスト自体を
詳細にコーディングするってことでいいんじゃないかな?

557 名前:nobodyさん mailto:sage [2014/05/18(日) 18:27:15.17 ID:???]
>>556
ありがとうございます!
勉強になります。

558 名前:nobodyさん mailto:sage [2014/05/18(日) 23:31:40.02 ID:???]
まぁ自分で書いておいてこんなこと言うのもあれだけど、
TDDに限らず、ここで聞くより専門の書籍を一冊買って
それを読んで体系から身につけたほうがいい。

559 名前:nobodyさん mailto:sage [2014/05/19(月) 16:50:44.06 ID:???]
画像のバリデーションで、画像をアップロードしていない場合は
バリデーション自体を中止したいのですが、良い方法はないでしょうか?
以下のようなルールをモデルに書いています。

'image' => array(
 array(
  'rule' => array('extension', array('jpg', 'jpeg', 'gif', 'png')),
  'message' => '拡張子が違います',
  'allowEmpty' => true,
 )
)

560 名前:nobodyさん [2014/05/20(火) 15:39:04.32 ID:RIYxfxGy]
hasManyとfindについて質問です。

営業 1−多 顧客
というリレーションがあったとします。
営業 hasMany 顧客 と営業モデルに書いています。

そこで営業コントローラから 「顧客を一件ももっていない営業」をfindする方法がどうしても
思い浮かびません。 

どうかヒントをいただけませんでしょうか。

561 名前:nobodyさん mailto:sage [2014/05/20(火) 15:56:13.36 ID:???]
営業 hasOne 顧客 というアソシエーションを一時的に張って、
検索条件を
'顧客.id' => null
とすれば行ける気がするのだがどうだろう。

あと、カウンターキャッシュという裏ワザもあるが、
アプリケーション依存になるんで一長一短。

562 名前:nobodyさん mailto:sage [2014/05/20(火) 16:02:52.95 ID:???]
>>561
なるほど!試してみます。ありがとうございます。

563 名前:nobodyさん mailto:sage [2014/05/21(水) 16:47:46.18 ID:???]
クックパッドってCake使ってるのかな?
なんかURLのルールが似てる気がする



564 名前:nobodyさん mailto:sage [2014/05/21(水) 18:35:00.58 ID:???]
>>563
Railsじゃなかった?今は知らんけど

565 名前:nobodyさん mailto:sage [2014/05/21(水) 19:54:17.38 ID:???]
ああ、Railsだから似てると感じるのか

566 名前:nobodyさん mailto:sage [2014/05/25(日) 12:26:20.21 ID:???]
cakeとciのActiveRecordって
PofEAAのActiveRecordと違うと思うんだけど。何を元にしてるの?

567 名前:nobodyさん mailto:sage [2014/05/25(日) 13:21:00.24 ID:???]
CakePHPにActiveRecordは実装されていない

568 名前:nobodyさん mailto:sage [2014/05/25(日) 14:22:54.54 ID:???]
AppControllerを継承したクラスを継承したコントローラで
AppControllerに書かれた$uses、$componentsが使えない(マージされない)問題は
Cake2では直ってるんだっけ?
今確認できないのでどなたか教えてください

569 名前:nobodyさん mailto:sage [2014/05/25(日) 16:32:17.75 ID:???]
>>568
Dispatcher でリフレクション呼び出してあれこれゴニョゴニョしてるんで、
多分大丈夫。
正式なアナウンスは知らん。

570 名前:nobodyさん mailto:sage [2014/05/26(月) 20:03:50.85 ID:???]
>>568
その問題、今初めて知ったわ。

571 名前:nobodyさん mailto:sage [2014/05/26(月) 21:17:51.86 ID:???]
久しぶりに自分が作った1.3のソース触ったけど、糞すぎて情けなくなる・・・

572 名前:nobodyさん mailto:sage [2014/05/26(月) 21:34:55.75 ID:???]
オレの1.2のコードをやるから、その汚い糞を拭き取れ。

573 名前:nobodyさん mailto:sage [2014/05/28(水) 12:20:55.53 ID:???]
カテゴリの状態を維持したまま別のコントローラーを実行するための
ルーティングってどう書けばいいですかね?

/hoge/ →Categoryモデルのname「hoge」
/hoge/news/ →Newsモデルのcategory_nameが「hoge」
/hoge/news/detail/1 →Newsモデルのidが1でcategory_nameが「hoge」

こういう場合、hogeの箇所(カテゴリ名)が不特定文字列なので
どういう書き方をすればいいか悩んでいます。cake2系です。



574 名前:nobodyさん mailto:sage [2014/05/28(水) 12:29:00.97 ID:???]
Router::routes(array('/:category/'), array('controller' => 'categories'));

Router::routes(array('/:category/:controller/'));

Router::routes(array('/:category/:controller/detail/:id'));

でどう?

575 名前:nobodyさん mailto:sage [2014/05/28(水) 12:33:07.08 ID:???]
あと、第三パラメータで正規表現でのフィルタリングができるんで、
3つ目のURLパターンにおいてIDは数値と決まっているなら

Router::routes(array('/:category/:controller/:id'), array(), array('id' => '[0-9]+'));

とすることで

/hoge/news/1

をマッチさせることが出来ると思う。

576 名前:573 mailto:sage [2014/05/28(水) 13:36:48.07 ID:???]
>>574-575
ありがとうございます。この方法ですが、
他のコントローラーと共存させたい場合はどうなるのでしょうか?

/contacts/ お問い合せ用のコントローラー
/faqs/ FAQ用のコントローラー

などがサイトに存在する場合、おかしくなるような気が・・。
そういう場合は、固定のコントローラーを
ルーティングに書いていけばいいんですかね?
Router::routes(array('/contacts/:action'), array('controller' => 'contacts'));

577 名前:nobodyさん mailto:sage [2014/05/28(水) 13:55:25.16 ID:???]
問題ない。
ルーティングは単純な正規表現を先頭からマッチさせていくだけ。
で、最後の最後に通常のマッチングがコアの方に用意されている。

578 名前:nobodyさん mailto:sage [2014/05/28(水) 13:56:01.83 ID:???]
あ、問題あるわ。すまんw

579 名前:nobodyさん mailto:sage [2014/05/28(水) 13:56:49.69 ID:???]
>そういう場合は、固定のコントローラーを
>ルーティングに書いていけばいいんですかね?
>Router::routes(array('/contacts/:action'), array('controller' => 'contacts'));

そうですね。

580 名前:573 mailto:sage [2014/05/28(水) 15:29:39.46 ID:???]
>>579
ということは、固定のコントローラーは全てルーティングに書く必要があるんですね。
そうなるとあまり利便性が良くないですね。

581 名前:nobodyさん mailto:sage [2014/05/28(水) 17:12:42.77 ID:???]
TreeBehaviorのleftとrightってなんなん…これ見ると存在しないid指定してるみたいでわけが分かんないよ…
book.cakephp.org/2.0/en/core-libraries/behaviors/tree.html

582 名前:nobodyさん mailto:sage [2014/05/28(水) 20:12:28.98 ID:???]
>>580
カテゴリ名を自由にするってことは、特定の文字を禁止にするんだろうから、
それを表現できるパターンを第3パラメータに書けば良いと思うよ。
たとえば ["member", "user"] というコントローラを作るんなら

$route = '/:controller/:action/*';
$default = array();
$options = array('controller' => '(member|user)');
Router::connect(compact('route', 'default', 'options'));

あと、アクションを設定しない場合に index を適用させるなら

$route = '/:controller';
$default = array('action' => 'index');
Router::connect(compact('route', 'default'));

を最初に加えておく。

あとすまん、
上で Router::routes() っていうのは Router::connect() の間違いだった。すまん。

583 名前:nobodyさん mailto:sage [2014/05/28(水) 20:13:54.99 ID:???]
>>581
lft, rght はIDじゃないよ。

TreeBehavior のアルゴリズムを理解するのにとっておきの記事
blog.xao.jp/blog/cakephp/understanding-of-nested-sets-model-for-treebehavior-of-cakeph/



584 名前:573 mailto:sage [2014/05/28(水) 20:20:05.04 ID:???]
>>582
ありがとうございます。色々工夫してやってみます。

585 名前:nobodyさん mailto:sage [2014/05/28(水) 22:03:01.32 ID:???]
>>583
ありがとうマジで助かった!

586 名前:nobodyさん mailto:sage [2014/05/29(木) 01:00:35.02 ID:???]
RailsとCakeでMVCを覚えたせいで見事に騙され、モデルはテーブルに紐付くもんと思ってたわ
テーブル関係ないビジネスロジックをどこに書くか迷って、コンポーネントに書いてたけど
モデルに書いた方がいいんだろうか?

587 名前:nobodyさん mailto:sage [2014/05/29(木) 01:27:10.16 ID:???]
>>586
ビジネスロジックをモデルに書くのは常識だ。
コンポーネントに書いたほうが良いなんて聞いたこと無い。
Rails も Cake もその点においては何も騙してねーと思うよ?

588 名前:nobodyさん mailto:sage [2014/05/29(木) 08:11:31.86 ID:???]
テーブルをまたがる共通処理や、似て非なるテーブルに同じ処理をしたい場合に、ロジックを置く場所がないて話だと思うけど。
そういう場合にRailsの1モデル-1テーブル形式は破綻してるのは確か。

589 名前:nobodyさん mailto:sage [2014/05/29(木) 08:25:24.09 ID:???]
「具体的に言うと、モデルはデータベースのテーブルを表しますが」
book.cakephp.org/2.0/ja/models.html
とあるせいで、モデル=テーブルに紐付く(原則として)と思ってたよ
市販の解説書も同じような感じで書いてる

590 名前:nobodyさん mailto:sage [2014/05/29(木) 08:44:24.60 ID:???]
>>587
モデルの中で他のモデルをClassRegistry::initとかやりたくないんだよ
コントローラに書きたくなければコンポーネントになる

591 名前:nobodyさん [2014/05/29(木) 10:03:02.00 ID:veg5U4SW]
じゃあLibに作れよ

Modelじゃだめって理由でComponentに置く発想がおかしい

592 名前:nobodyさん mailto:sage [2014/05/29(木) 10:04:39.91 ID:???]
は?LibよりComponentの方が使いやすいじゃん
Controllerの冒頭で配列に入れるだけで$thisで使えるんだから

593 名前:nobodyさん mailto:sage [2014/05/29(木) 10:18:58.89 ID:???]
RailsにしてもCakeにしてもActive RecordないしTable Data Gatewayパターンを利用するクラスをModelと命名して
データベーステーブルと(さらにはコントローラとも)1対1対応しなきゃいけないように見えるから勘違いしやすいんだよな

Railsは1つのモデルに関するロジックは"モデル"クラスに書けるけど
Table Data GatewayのCakeはこれすらコントローラやヘルパーに溢れ出やすい印象

複数"モデル"が絡むときに簡易サービス層として利用されやすいのがコンポーネントなのかな
コントローラから呼びやすいしファットコントローラの一番楽な回避策だろうし


初心者でも(本来の広い意味での)モデルの中にサービス層を作りやすい実装や解説にしておいてくれるとありがたいんだけど



594 名前:nobodyさん [2014/05/29(木) 10:27:52.09 ID:veg5U4SW]
>>592
なんだその理由ww

595 名前:nobodyさん mailto:sage [2014/05/29(木) 11:21:59.06 ID:???]
>>594
何がおかしいんだ?

596 名前:nobodyさん [2014/05/29(木) 11:35:25.87 ID:Kdl2SKiZ]
>>588

>似て非なるテーブルに同じ処理をしたい場合
これはビヘイビアがいい気がする。

597 名前:nobodyさん mailto:sage [2014/05/29(木) 13:26:17.97 ID:???]
前もこの話題出たよな
結論は出なかった

598 名前:nobodyさん mailto:sage [2014/05/29(木) 13:48:42.54 ID:???]
作るものの規模とかで最適な構成は変わるしね。
>>593 のいうサービス層が必要になる規模は、CakePHPではちょっと対象外なんじゃないかと思ってる。
CakePHPの中の人がどう思って作ってるかはしらんけど。

599 名前:nobodyさん mailto:sage [2014/05/29(木) 15:11:21.10 ID:???]
複数モデルにまたがる処理をコンポーネントに書いている人は
$useTable = false の別のモデルを作った方がずっと楽だと思うんだが。

コントローラから直接参照できる点は一緒。
データのセット、バリデーション、フォーム値の復元。
使うモデルを $hasOne とか入れとけば ClassRegisry::init も呼ぶ必要ない。

600 名前:nobodyさん mailto:sage [2014/05/29(木) 15:24:59.72 ID:???]
俺はコンポーネントでやる方が楽だけどな

601 名前:nobodyさん mailto:sage [2014/05/29(木) 15:34:31.80 ID:???]
おれも >>599 と同じだな。
Modelの下にサブディレクトリ切ってAppでパス通すのもありだと思う。

Lib は他で作ったライブラリを置く場所にしてる。

コンポーネントはコントローラの処理を助けることが限定されている場合しか書く意味ない。
もちろん、そういうロジックだけならコンポーネントはすれば良い。

602 名前:nobodyさん mailto:sage [2014/05/29(木) 16:13:20.58 ID:???]
複数ページにまつわる処理といえば、削除はどうしてる?
会員制サイトだと、以下のような構成がよくあるが、

会員
└日記
└お気に入り
└掲示板の作成や投稿

会員を削除すると、その下の投稿内容も削除しないとおかしい(と俺は思う)
だから俺は、管理画面で会員を削除したら、user_idがあるモデルは全て削除している。
削除はコントローラーに書いてる。

603 名前:nobodyさん mailto:sage [2014/05/29(木) 16:24:33.64 ID:???]
>>602
会員モデルの削除を呼んだら消えるようにする



604 名前:nobodyさん mailto:sage [2014/05/29(木) 16:37:36.60 ID:???]
>>603
hasManyでdependentをtrueだな。

俺も基本はそうしてるんだけど、>>602のに「画像」がある場合は困る。
各テーブルを参照して画像情報を取得し、削除していく必要がある。

605 名前:nobodyさん mailto:sage [2014/05/29(木) 16:50:52.43 ID:???]
beforeDelete,afterDeleteでいいんじゃない

606 名前:nobodyさん mailto:sage [2014/05/29(木) 18:18:39.64 ID:???]
そうすると、Userモデル内で他のモデルも呼ぶことになるぞ?

607 名前:nobodyさん mailto:sage [2014/05/29(木) 18:23:19.16 ID:???]
>>606
画像に関して言ったんだけど

dependentで消せないものに関して、Userモデル内から他のモデル呼んでも問題ないと思うけどな

608 名前:nobodyさん mailto:sage [2014/05/29(木) 20:03:02.45 ID:???]
deleteAll のコールバックって無いんだよね?

あれば Image モデルの afterDelete に
アセットを削除する処理を書いておけば良いのだろうけど。

saveMany や saveAll はコールバック効くのに
deleteAll は効かないってのもおかしな設計ではあるな。

609 名前:nobodyさん mailto:sage [2014/05/29(木) 23:57:26.91 ID:???]
deleteAll はコールバックあるよ。
ないのは updateAll

610 名前:nobodyさん mailto:sage [2014/05/30(金) 01:36:47.29 ID:???]
>>609
あ、そうなのか!
deleteAll の第3パラメータを true にするんだな。
今初めて気づいたわ。

じゃぁ、アセットの削除をそこに書けば良いわけか。

611 名前:nobodyさん mailto:sage [2014/05/30(金) 10:22:00.45 ID:???]
つまり、どういう設計になるの?

612 名前:nobodyさん mailto:sage [2014/05/31(土) 17:06:44.83 ID:???]
gitでcakephp管理する時、丸ごと全ファイルを管理するの?
それともビヘイビアとかプラグインとかだけ?
教えてください。お願いします!

613 名前:nobodyさん mailto:sage [2014/05/31(土) 18:14:11.40 ID:???]
全部



614 名前:nobodyさん mailto:sage [2014/05/31(土) 18:28:27.72 ID:???]
cakephpってまだcomposerに対応しきれてない?

cakephp2でcakephp/appみたいなの探してるんだけどないかな?

615 名前:nobodyさん mailto:sage [2014/05/31(土) 18:39:11.86 ID:???]
>>614
composer 使ってるけど、対応しきれてないと思ったのはどの辺り?

616 名前:nobodyさん mailto:sage [2014/05/31(土) 18:49:51.57 ID:???]
>>615
bakeでプロジェクト作らないといけないのに
ハードコーディングを直さなきゃいけないところとかかな

617 名前:nobodyさん mailto:sage [2014/05/31(土) 19:51:01.39 ID:???]
それは composer というか bake project の仕様だなー。
include_path 通しておけばハードコーディングされなくなるけど。

618 名前:nobodyさん mailto:sage [2014/05/31(土) 20:57:15.14 ID:???]
>>613
ありがとうございます!

619 名前:nobodyさん mailto:sage [2014/05/31(土) 23:23:49.38 ID:???]
今日俺がセルフHABTM方式というのを発明したんだが
何のことだかわかる?正式な名前とかある?

620 名前:nobodyさん mailto:sage [2014/06/01(日) 12:20:08.01 ID:???]
そういうプラグインがあった気がする

621 名前:nobodyさん mailto:sage [2014/06/02(月) 00:43:40.92 ID:???]
>>619

class Entity extends Model {

 public $hasAndBelongsToMany = array(
  'RelatedEntity' => array(
   'className' => 'Entity',
   'foreignKey' => 'relational_id',
  ),
 );

}

こういうこと?

622 名前:nobodyさん [2014/06/05(木) 11:57:49.53 ID:+YUe8hGX]
メール送信するコマンド作って実行したら
「コマンド ラインが長すぎます」
というエラーが出るのですが、何かわかる方いらっしゃいますか?

環境は以下の通りです。
Windows 7
CakePHP 2.3.10
PHP 5.3.5

ファイル:app/Console/Command/ApprovalShell

<?php
App::uses('CakeEmail', 'Network/Email');

class ApprovalShell extends AppShell {
public function main() {
$Email = new CakeEmail();
$Email->config('default');
$Email->from(array('hogehoge@aaaaaaa.jp' => 'ほげほげ'));
$Email->to('hogehoge@aaaaaaa.jp');
$Email->subject('お願い');
$Email->send();
}
}

623 名前:nobodyさん mailto:sage [2014/06/05(木) 14:05:40.48 ID:???]
>>622
Windowsで開発するのやめれたらいいと思うよ。

よく知らんけど、Cakeのエラーメッセージは英語。
てことは、おそらくコマンドプロンプトか、代わりに使ってるターミナル系アプリの出してるエラー。
エラーメッセージから、cakeコマンドへのファイルパスや引数も含め、
実行しようとしたコマンドの文字数が多すぎた。
てことが予想出来る。



624 名前:nobodyさん [2014/06/05(木) 16:25:42.75 ID:+YUe8hGX]
>>623
ありがとうございます。
おっしゃるとおりかもしれません。

625 名前:nobodyさん mailto:sage [2014/06/05(木) 19:12:08.87 ID:???]
自分はローカル用のアプリをCakePHPで作ってコマンドライン多用してるけど
「コマンド ラインが長すぎます」
なんてエラーは出たこと無いな。

原文はなんて書いてんの?

626 名前:nobodyさん mailto:sage [2014/06/05(木) 19:12:52.47 ID:???]
あ、もちろん Windows のクライアントね。

627 名前:nobodyさん mailto:sage [2014/06/05(木) 20:29:33.26 ID:???]
みんなwindowsじゃないん?

628 名前:nobodyさん mailto:sage [2014/06/05(木) 22:14:09.51 ID:???]
本番機はレンタルサーバでlinux系だけど社内にあるマシンは全部windowsなんで
普段はwindowsで開発、最終的なテストだけ本番機で行っているわ
PHPはわりと環境依存大きいけどcake使ってると依存度がかなり軽減されると思う

629 名前:nobodyさん mailto:sage [2014/06/05(木) 22:23:36.19 ID:???]
俺はVM立てるな
その方がお手軽だし

630 名前:nobodyさん mailto:sage [2014/06/05(木) 22:26:03.50 ID:???]
windowsで開発してるけど
phpとかmysqlはwindows上で動かすのは無駄だからやってない
vagrantで簡単に作れるしさ

631 名前:nobodyさん [2014/06/05(木) 22:29:27.33 ID:d26v3tZW]
>>628
開発用のサクラ鯖に直結して開発してるぞ。
リモートプロジェクト

632 名前:622 [2014/06/05(木) 23:27:51.32 ID:+YUe8hGX]
解決しました。
おさわがせしました。
PHPのメール設定がおかしかったみたいです。

633 名前:nobodyさん mailto:sage [2014/06/06(金) 00:56:33.55 ID:???]
そうやってなんでもWindowsのせいにすればいいニダ…



634 名前:nobodyさん mailto:sage [2014/06/06(金) 01:07:28.95 ID:???]
XAMPP使ってるのは俺だけのようだな

635 名前:nobodyさん mailto:sage [2014/06/06(金) 01:37:12.74 ID:???]
だって、Windowsで開発してなければ起こらないトラブルや、
しなくていい苦労って多いもの。

636 名前:nobodyさん mailto:sage [2014/06/06(金) 02:32:32.38 ID:???]
windowsだと実行が困難なのってcronぐらいじゃね?
画面系で動作が変わるとしたらソース自体に問題がありそう

637 名前:nobodyさん mailto:sage [2014/06/06(金) 03:44:03.22 ID:???]
システムコールとかメール送信とかOSの絶対パスみなきゃいけない時とか

638 名前:nobodyさん mailto:sage [2014/06/06(金) 06:32:05.95 ID:???]
開発マシンで実行しないとbakeした時面倒なんだよ

639 名前:nobodyさん mailto:sage [2014/06/06(金) 11:48:12.37 ID:???]
>>637 はわかるけど、>>638 は何で?

Windows と Mac 混在して bake してて問題ないんだが、
気づいてないだけかな

640 名前:nobodyさん mailto:sage [2014/06/06(金) 12:18:51.00 ID:???]
知らないだけだろ

641 名前:nobodyさん mailto:sage [2014/06/06(金) 13:35:54.13 ID:???]
>>640
今試しに同じデータベースを元にして Mac と Windows で bake したのを
git で比較したけど差分なかったぞ?

642 名前:nobodyさん mailto:sage [2014/06/06(金) 13:45:08.57 ID:???]
>>641
バージョンは?

CAKE_CORE_INCLUDE_PATHって何定義してる?

643 名前:nobodyさん mailto:sage [2014/06/06(金) 15:39:44.51 ID:???]
>>642
2.5.1
CAKE_CORE_INCLUDE_PATH はコアの Cake ディレクトリを格納している
ディレクトリのパス。



644 名前:nobodyさん mailto:sage [2014/06/06(金) 15:59:39.81 ID:???]
>>643
CAKE_CORE_INCLUDE_PATHに差があるんじゃない?

645 名前:nobodyさん mailto:sage [2014/06/06(金) 17:22:45.98 ID:???]
>>644
そりゃ絶対パスだから違うわけだけど、
bake して生成された結果には影響ないよ?

ちなみに今の論点はあくまでも
>bakeした時面倒なんだよ
に対する疑問ね。

646 名前:nobodyさん mailto:sage [2014/06/07(土) 13:17:32.00 ID:???]
composerについて
これは、phpファイルのみしか管理できないのですか?
例えばjqueryとか、画像も管理できるのでしょうか?

教えてください。
よろしくお願いします。

647 名前:nobodyさん mailto:sage [2014/06/07(土) 14:18:28.71 ID:???]
>>646
composerは基本、外部のライブラリを管理したり
プロジェクトの作成に利用したりするもの

jqueryは
component/jquery
を使えば管理できる

画像は外部のものなのかい?

648 名前:nobodyさん mailto:sage [2014/06/07(土) 14:22:04.06 ID:???]
>>647
ありがとうございます。
画像やjqueryはプラグインに入れようと思って、それをbitbucketで管理します。

全てのサイトでそのプラグインをcomposerで管理できるのかなとおもいまして。

649 名前:nobodyさん mailto:sage [2014/06/07(土) 14:26:11.05 ID:???]
>>648
bitbucketで
各々サイトと、jqueryのプラグインを別に管理したとして

>全てのサイトでそのプラグインをcomposerで管理できる
ってのは可能だよ

650 名前:nobodyさん mailto:sage [2014/06/07(土) 16:46:31.63 ID:???]
>>649
ありがとうございます!
早速やってみます。

651 名前:nobodyさん mailto:sage [2014/06/10(火) 09:20:20.15 ID:???]
cakephp.jp/modules/newbb/viewtopic.php?topic_id=1119&forum=8
これと同じ問題でハマってます
どうすればいい?
users/123 等の時は users/index/123にしたくて
users/read
users/edit
などアクション名を指定した時は、そのアクション実行したいのですが

652 名前:nobodyさん mailto:sage [2014/06/10(火) 10:48:00.76 ID:???]
>>651
正規表現で絞れば良いだけじゃないの?

Cakeは最近使ってないからわからんが

653 名前:nobodyさん mailto:sage [2014/06/10(火) 11:13:53.54 ID:???]
おお、性器表現も使えるのか
どこかにサンプルはないでしょうか?



654 名前:nobodyさん mailto:sage [2014/06/10(火) 13:57:21.11 ID:???]
>>653
api.cakephp.org/2.5/class-Router.html#_connect
book.cakephp.org/2.0/en/development/routing.html#route-elements

655 名前:nobodyさん mailto:sage [2014/06/10(火) 17:33:53.47 ID:???]
>>654
d
結局正規表現使わなかったけど、解決しました

656 名前:nobodyさん mailto:sage [2014/06/11(水) 00:44:51.34 ID:???]
twitterのように自分自身のユーザ情報のみ
編集可能にする方法を教えて下さい。
(他人のユーザ情報は編集不可、表示のみ)

657 名前:nobodyさん mailto:sage [2014/06/11(水) 00:46:47.80 ID:???]
ログインユーザと編集する対象のユーザが同じかどうか確かめればいいだけじゃん

658 名前:nobodyさん mailto:sage [2014/06/11(水) 00:51:45.60 ID:???]
>>657
ありがとうございます。
一致したら「編集」ボタンを表示する、などの処理をすれば良いのでしょうか?

659 名前:nobodyさん mailto:sage [2014/06/11(水) 01:06:59.37 ID:???]
基本的に信頼していいのは自分がプログラムにハードコーディングしたサーバ側の処理だけ
クライアント側は他にアプリを作ればどんなHTTPリクエストでも送れるからだ

編集ボタンを表示しないのも予防策にはなるが
根本的にはサーバ側でデータベースのアップデートやセーブやデリートをする前に
CRUDの対象となるレコードがログインユーザ自身のものかどうかを確認するステップが必要
より具体的にはログインユーザのIDと更新するユーザテーブルのレコードのIDが一致するかどうかだ

660 名前:nobodyさん mailto:sage [2014/06/11(水) 02:19:09.44 ID:???]
>>658 は、ちゃんと >>659 の言ってることを理解できたのだろうか・・・

661 名前:nobodyさん mailto:sage [2014/06/11(水) 08:53:19.95 ID:???]
リクエストにユーザーIDをつけない

662 名前:nobodyさん mailto:sage [2014/06/11(水) 10:34:05.54 ID:???]
あれ?
ユーザー情報の更新のリクエストにユーザーIDを含むようなフォームを作ったとしても
Cakeのパラメータ改ざんとCSRFのチェックが有効なら
悪意あるユーザーがフォームを改ざんして他のユーザーIDに変えたら
パラメータ改ざんチェックで引っかからんのかい?
教えてエロい人


まあそれでも>>661みたいに根本的に他のユーザの情報を更新できないようにしたほうが安心安全か
人為的なミスも起きにくいし

データベースを変更しないユーザー情報表示画面の時だけリクエストにユーザーIDを含める
ユーザー更新・削除時は対象レコードの選択にログインユーザのIDをそのまま使う

663 名前:nobodyさん mailto:sage [2014/06/11(水) 17:28:51.09 ID:???]
>>662
CSRF対策は、そのページに行くまで正しい経路をたどってるかどうか
フォーム改ざんは、そのページに含まれるポスト対象のフィールドが正しいかどうか

のチェックだったはず。なので、POSTされるフィールド値を変更されたとしても、
Cake側では対応できないはず。



664 名前:nobodyさん mailto:sage [2014/06/11(水) 20:19:39.05 ID:???]
ありがとうございます。
皆様のおかげでテストケースの有用性がわかるようになりました。
composerの便利さも。

jenkinsとかはどうなんですか?

665 名前:nobodyさん mailto:sage [2014/06/11(水) 21:00:28.09 ID:???]
>>568の問題、2.5でも直ってねーじゃねーか

AppControllerを継承したAdminControllerを継承したEventControllerを動かしたら
AdminControllerのusesに書いてあるモデルが、AdminControllerのbeforeFilter内で使えなかったぞ
EventControllerのusesに追加したら動いたが、なんだかなー

666 名前:nobodyさん mailto:sage [2014/06/11(水) 21:09:11.43 ID:???]
>>665
マージする継承クラスを指定できるパラメータがあったはず。
ドキュメント読んでみて。

667 名前:nobodyさん mailto:sage [2014/06/11(水) 21:52:04.25 ID:???]
>>666
$_mergeParentのことか?
これでAdminControllerを指定したら、今度はAppControllerをマージしてくれないからダメ。
ぐぐったらこれ皆困ってるらしくてそれぞれ独自に_mergeVarsを改造したりして直してるな。
なんでこの問題公式が放置してるんだ?

668 名前:nobodyさん mailto:sage [2014/06/11(水) 22:06:20.17 ID:???]
>>667
あ、本当だな。
CakePHPが糞と言われるのがよく分かるwww

669 名前:nobodyさん mailto:sage [2014/06/11(水) 22:07:34.04 ID:???]
それがCakeクオリティ!
3の開発で忙しいんじゃないかな(*´∀`*)

670 名前:nobodyさん mailto:sage [2014/06/11(水) 22:43:50.86 ID:???]
糞とか言ってる暇があったら issue 出すか、プルリクしろよ。



オレはやんないけど。

671 名前:nobodyさん mailto:sage [2014/06/12(木) 01:35:46.71 ID:???]
>>670 出したところで却下かと。

>>667 はいくつかのコントローラに共通する機能が必要なら、
その時は継承ではなくてコンポーネントを作ったらどうかな?
コンポーネントはそのために存在しているわけだし。

共通機能を継承で得ようとするのは、言語やフレームワークを問わず、
あんまり良い選択ではないと思うけど。

672 名前:nobodyさん mailto:sage [2014/06/12(木) 01:39:01.21 ID:???]
え?
うーむこれがPHP脳というやつか

673 名前:nobodyさん mailto:sage [2014/06/12(木) 01:48:11.52 ID:???]
>>672
言語は問わないと書いたがな。
たとえば

EffectiveJava 第4章 項目14「継承よりコンポジションを選ぶ」

コンポーネントは文字通りこのコンポジションパターンだよ。



674 名前:nobodyさん mailto:sage [2014/06/12(木) 02:42:37.90 ID:???]
>>671
>>665の例で言うと、EventController(他にもあるが)は管理者専用機能のコントローラである。
管理者用コントローラに共通の処理(ログインなど)をAdminControllerに書き、EventControllerはそれを継承した。
同じことをコンポーネントでやろうとすると、すべての管理者用コントローラーに
まったく同じコード(コンポーネントのメソッドを呼び出すコード)を書かねばならないのでは?
非常に不便だと思うが、俺が勘違いしてたら教えて欲しい。

675 名前:nobodyさん mailto:sage [2014/06/12(木) 02:56:04.36 ID:???]
Controller::beforeFilter() に言及してたから、
その処理なら Component::startup() でいいんじゃないかと思ったんだけど、どうだろう?

場合によってはメソッドの呼び出しも必要になるけれども
けど、それは parent:: で親クラスのメソッドを呼ぶのとそれほど変わりないのかなと。

676 名前:nobodyさん mailto:sage [2014/06/12(木) 02:57:29.99 ID:???]
>>671 がややずれてるのは
>いくつかのコントローラに共通する機能

としてるけど、>>665 で問題にしてるのは
広い意味では機能で間違いないんだけど
単に設定値である点においてズレてる。

ここではそれこそ、コンポーネントの
使い方なんかを指定しているわけで、
これは継承してほしいと思うよ。

677 名前:nobodyさん mailto:sage [2014/06/12(木) 03:11:49.49 ID:???]
>>676
1.x系からのふるまいだから、仕様変更が入る可能性は低くないかな。

どうしても継承の継承が必要なケースで
さらに、孫クラスに基底クラスから継承させたいパラメータがあるなら
基底クラスのコンストラクタで $this->uses に入れればいいわけだし。

678 名前:nobodyさん mailto:sage [2014/06/12(木) 09:12:51.74 ID:???]
こんなゴミなもの対応されたら
また名が廃る

679 名前:nobodyさん mailto:sage [2014/06/12(木) 11:19:04.70 ID:???]
3のソースからは $_mergeParent は消えてるみたいだな。

680 名前:nobodyさん mailto:sage [2014/06/12(木) 11:22:15.38 ID:???]
常識的に考えて、マージしないとおかしいだろ
何だこの仕様

681 名前:nobodyさん mailto:sage [2014/06/12(木) 11:22:23.38 ID:???]
3使ってる人いるん?
どんな感じですか?

682 名前:nobodyさん mailto:sage [2014/06/12(木) 11:28:47.32 ID:???]
3は継承全部マージされるよ

パフォーマンスはお察し

683 名前:nobodyさん mailto:sage [2014/06/12(木) 12:11:49.21 ID:???]
3に苦労して移行するくらいなら、LaravelとかRailsに移るかな。
使ってこそのフレームワークだから、コミュニティの勢いは重要。



684 名前:nobodyさん mailto:sage [2014/06/12(木) 12:25:24.65 ID:???]
cakeとsymfonyが本命FWとして争っていた時期が懐かしい

685 名前:nobodyさん mailto:sage [2014/06/12(木) 13:23:35.06 ID:???]
みんな良く勉強できるな。他の言語に移るのは辛いわ。。。

686 名前:nobodyさん mailto:sage [2014/06/13(金) 08:29:35.00 ID:???]
Cake使い続けるほうが長期的に見て辛い

687 名前:nobodyさん mailto:sage [2014/06/13(金) 08:39:23.01 ID:???]
それはあるw
書いたコードの分だけ、負債がどんどん増えていく

688 名前:nobodyさん mailto:sage [2014/06/13(金) 09:00:43.34 ID:???]
その負債の原因がCakeではなく自分にあるとも気づかぬままにw

689 名前:nobodyさん mailto:sage [2014/06/13(金) 10:44:08.86 ID:???]
管理者用の機能って、Adminコントローラを作るんじゃなくて
adminプレフィクスを使うのが一般的な方法だと思っていたんだが
実際のところみんなはどうやっているんだ?

690 名前:nobodyさん mailto:sage [2014/06/13(金) 11:00:42.12 ID:???]
>>689
俺はクッキーでログイン画面作って、セッション有る無しでview表示を少し変えてる。
ずっとこれでやってるけど。。。
ダメかな?

691 名前:nobodyさん mailto:sage [2014/06/13(金) 12:20:32.10 ID:???]
一般利用者も管理者も同じaction通してるってことか。
全体的に管理者の機能が一般利用者とそんなに変わらなければそれでもいいのかもね。
プレフィクスを切っている場合でも

public function admin_search() {
$this->search();
}

なんてコードは実際に書かれるわけで。

692 名前:nobodyさん mailto:sage [2014/06/13(金) 14:29:24.42 ID:???]
>>689
面白そうだったんで最初やってみたけど、
同じクラスにヤバいアクションが混在するのが気持ち悪い。
それ以降やったこと無いな。

>>690
表示だけならそれでいいんじゃない?

693 名前:nobodyさん mailto:sage [2014/06/13(金) 17:20:45.32 ID:???]
俺は管理画面と一般画面のappは分けてるよ
管理画面だけ変えたい設定(キャッシュしないとかdebug2とか)があるし。



694 名前:nobodyさん mailto:sage [2014/06/14(土) 17:11:30.81 ID:???]
みなさん、ホーム画面ってどのコントローラーでやってます?
ホーム用のコントローラーを作るか既存のコントローラーでやるか

695 名前:nobodyさん mailto:sage [2014/06/14(土) 17:15:43.40 ID:???]
ホーム専用

696 名前:nobodyさん mailto:sage [2014/06/14(土) 17:19:19.02 ID:???]
専用じゃないや
HomesControllerだけど他にもaboutとかシンプルなページと兼用

697 名前:nobodyさん mailto:sage [2014/06/14(土) 17:26:13.81 ID:???]
>>696
その場合、コントローラー付きで直アクセスされた場合、
何かリダイレクト処理を入れてるんですか?
(/homes/indexとか/homes/aboutでアクセスされた場合)

698 名前:nobodyさん mailto:sage [2014/06/14(土) 17:37:45.91 ID:???]
>>697
routes.php弄る

699 名前:nobodyさん mailto:sage [2014/06/14(土) 17:42:44.81 ID:???]
あ、違うな
対策はしてない
最近やってないから忘れてる…

700 名前:nobodyさん [2014/06/14(土) 18:59:09.94 ID:dq/AB5k+]
ルーティングについて質問です。
URLに「hoge」がついていたら、パラメーターをhogeとして受け取りたいです。

/users/        →UsersControllerのindexアクション
/users/detail     →UsersControllerのdetailアクション
/hoge/users/     →UsersControllerのindexアクションでパラメーターhoge
/hoge/users/detail →UsersControllerのdetailアクションでパラメーターhoge

というイメージなのですが、こういう事はルーティングの設定で可能でしょうか?
可能なら書き方を教えてください。2.4系を使用しています。

701 名前:nobodyさん mailto:sage [2014/06/14(土) 21:50:21.39 ID:???]
>>700
できるよ


/* /hoge/users/ がマッチする設定 */
$route = '/hoge/users/';
$defaults = array('controller' => 'users', 'action' => 'index', 'hoge');
Router::connect($route, $defaults);

/* /hoge/users/ がマッチする設定 */
$route = '/hoge/users/:action';
$defaults = array('controller' => 'users', 'hoge');
Router::connect($route, $defaults);

/* /users/ と /users/detail は設定なしの標準でマッチ */

702 名前:nobodyさん mailto:sage [2014/06/14(土) 21:54:32.07 ID:???]
あ、コメントミスった。正しくはこっち


/* (1) /hoge/users/ がマッチする設定 */
$route = '/hoge/users/';
$defaults = array('controller' => 'users', 'action' => 'index', 'hoge');
Router::connect($route, $defaults);

/* (2) /hoge/users/detail などがマッチする設定 */
$route = '/hoge/users/:action';
$defaults = array('controller' => 'users', 'hoge');
Router::connect($route, $defaults);


/users/ と /users/detail は設定なしの標準でマッチ
(2) のパターンは detail 以外のアクションにも適用されることに注意して。
もしアクションを限定したいのなら別の書き方が必要。

703 名前:700 mailto:sage [2014/06/15(日) 00:45:45.76 ID:???]
>>701-702
ありがとうございます。大変参考になりました。



704 名前:nobodyさん mailto:sage [2014/06/15(日) 14:07:12.52 ID:???]
フォームヘルパーのinput作成のname部分を
data[Model][name]→nameにする方法って無いでしょうか?

705 名前:nobodyさん mailto:sage [2014/06/15(日) 16:51:00.51 ID:???]
>>704

FormHelper のパラメータでってことなら不可。

706 名前:nobodyさん mailto:sage [2014/06/15(日) 17:42:36.89 ID:???]
>>705
やっぱり無理ですか。諦めます

707 名前:336 mailto:sage [2014/06/15(日) 18:33:33.91 ID:???]
>>706
オーバーライドして、アウトプットを置換するだけじゃん

708 名前:nobodyさん mailto:sage [2014/06/16(月) 00:20:49.49 ID:???]
フォームヘルパー本当に使い辛い
散々ハマった挙げ句、自分でFormタグ書いてるわ

709 名前:nobodyさん [2014/06/16(月) 12:40:04.49 ID:2sVNmbqM]
現在、cakeのAuth認証を使ってログインシステムを作っているのですが
一度登録済のパスワードをユーザ操作により変更した場合、
パスワードの認証対象の値はハッシュ値で自動でDBに登録されるのですが
それを再び登録し直すにはどうすれば良いのでしょうか?


例)
[入力パスワード]  [ハッシュ値]
testpass  ijierwaaasdfkjiewi32jasdfkj3

↓ ユーザがパスワードを変更した場合
testpass2 asdafasdfasjd・・・etc ←ハッシュ化する関数は何でしょうか?

710 名前:nobodyさん mailto:sage [2014/06/16(月) 18:38:51.83 ID:???]
フィームヘルパーのselectで0の値が空欄になるのは仕様ですか?

711 名前:nobodyさん mailto:sage [2014/06/17(火) 00:26:53.74 ID:???]
>>709
Security::hash($password, null, null)

ちなみに v2.4 までは
AuthComponent::password($password)
だったけど、2.5 からは非推奨。

712 名前:nobodyさん mailto:sage [2014/06/17(火) 00:34:56.25 ID:???]
Security::hash() の第2と第3パラメータは要らないみたいだ

Security::hash($password)
でOK

713 名前:nobodyさん mailto:sage [2014/06/17(火) 06:18:50.52 ID:???]
CakePHPてprimary idは必ずauto incrementのintでないと駄目なん?
INSERT時にidがnullであることを前提にしてるから、自前でid渡すと
バリデーション時にisUniqueやonCreateの指定がうまくいかなくなるね。
これはCakeではそういうもんなのか。自前でバリデーション書くしかないのか。



714 名前:nobodyさん mailto:sage [2014/06/17(火) 11:33:53.22 ID:???]
>>713
Model::$primaryKey で設定
動的な変更も可
複数キーは不可。3から対応

715 名前:nobodyさん mailto:sage [2014/06/17(火) 11:38:54.51 ID:???]
>>713

>バリデーション時にisUniqueやonCreateの指定がうまくいかなくなるね。

そうか?

716 名前:nobodyさん mailto:sage [2014/06/17(火) 12:03:04.11 ID:???]
>>714
それはもちろん指定してる。
だが、isUniqueやonCreateはうまくいかなかった。
結局数字のidを追加して対応した。

717 名前:nobodyさん mailto:sage [2014/06/17(火) 12:32:01.97 ID:???]
あぁ、そういうことか。なるほど。
onCreate は使ったこと無いんでよく分からんけど、
isUnique は、保存前に Model::$id をセットしてやってもダメなん?

718 名前:nobodyさん mailto:sage [2014/06/17(火) 16:22:43.39 ID:???]
>>717
それは試してないな。primaryKeyの名前がidじゃなかったから、idは一切いじらなかった。
Model::isUniqueのソースあらためて見たら、$this->idにNULLを入れていたらうまくいったかもしれん。

719 名前:nobodyさん mailto:sage [2014/06/17(火) 17:08:04.87 ID:???]
Model::$id は、primaryKey の値のことなので、
スキーマのフィールド名が id であるかどうかとは無関係。

720 名前:nobodyさん mailto:sage [2014/06/18(水) 03:28:03.88 ID:???]
>>719
なるほど!
後で試してみよう

721 名前:nobodyさん [2014/06/18(水) 12:55:32.95 ID:1XJ5G0pn]
すみません、今ドットインストールの講座が終わりまして、
自分でCakePHPのサイトを作ろうと思っているのですが、気になった点がありました。

今、作ろうとしているサイトは、ポートフォリオ系になるので、
自分が作ったゲームやWebサイトを置く予定であります。
CakePHPを使う必要性は薄いのですが、フレームワーク経験が必須なため、
経験を積むという意味で、CakePHPを使用しました。
そして、サイトには、大きく分類して、トップページ、ゲーム、Webサイト、リンクがあり、
それぞれ、topsテーブル、gamesテーブル、sitesテーブル、linksテーブルがあります。

そこで、気になったのが、
CakePHPでは、Controller、View、Model、データテーブルの名前を揃えなければならないと習ったのですが、
そうなると、出力するテーブルが違う場合は、GamesController、SiteControllerのように、
コントローラーとフォルダを用意すべきでしょうか。
それとも、1つのコントローラー、1つのViewフォルダにまとめられるでしょうか?

722 名前:nobodyさん mailto:sage [2014/06/18(水) 13:01:47.43 ID:???]
好きなようにすれば良い

723 名前:nobodyさん [2014/06/18(水) 13:23:44.25 ID:1XJ5G0pn]
つまり、Controller名、フォルダ名と異なるテーブルを使用することは可能で、
特に問題ないとのことでしょうか?



724 名前:nobodyさん mailto:sage [2014/06/18(水) 14:07:44.93 ID:???]
>>721
topsってテーブルが気になるな。何があるテーブルか分からん。
sitesテーブルとlinksテーブルの違いとか。

お前さんの用途は「自作のゲームやWebサイトの情報を公開する」だろ?
じゃ、「products」テーブルだけか、分けても「links」「games」だけだと思うんだが。

あと、基本的なCakeの命名規則が分かってないよ。

Controller:GamesController
Model  :GameModel
View   :Games
テーブル:games

725 名前:nobodyさん [2014/06/18(水) 14:20:51.04 ID:lT0uB39l]
>>711 >>712

ありがとうございます!!

726 名前:nobodyさん [2014/06/18(水) 14:29:45.54 ID:1XJ5G0pn]
説明がたりませんでした、申し訳ありません。
Webサイトに載せるのは、ゲームとWebサイトです。

topsは、トップページなのですが、ここに更新履歴を置くところです
sitesは、メインとなるホームページ以外に作った、Webサイトを置くところです。
ここでは、ゲーム以外の製作物と認識してくだされば十分です。
linksは、素材とかをお借りしたサイトとかへのリンクです。
gamesテーブルとsitesテーブルは、productsテーブルにまとめたほうがよさそうです。
ご助言ありがとうございます。

そうなると、
Controller:TopsController
Model  :TopModel
View   :Tops
テーブル:tops

Controller:GamesController
Model  :GameModel
View   :Games
テーブル:games

Controller:LinksController
Model  :LinkModel
View   :Links
テーブル:link

という風に分けた方が、使用するテーブル単位で分けた方が無難ということでしょうか

727 名前:nobodyさん mailto:sage [2014/06/18(水) 15:13:40.83 ID:???]
だからtopsって何なんだよw
更新履歴ならnewsとかupdatesとかにしたらどうだ?

728 名前:nobodyさん mailto:sage [2014/06/18(水) 15:41:33.35 ID:???]
1XJ5G0pnはもう少し勉強したほうがいいな。根本的なMVCが分かってない

729 名前:nobodyさん mailto:sage [2014/06/18(水) 15:45:20.63 ID:???]
いや英語を勉強した方がいい

730 名前:nobodyさん [2014/06/18(水) 16:30:07.27 ID:1XJ5G0pn]
すみません、画面名からテーブル名作ってしまいました。
最初は、更新履歴を表したテーブル名は、newsでつけていたのですが、
コントローラー名とフォルダ名を揃えなければならないということ思い出して、
それでトップ画面の名前を、更新履歴のテーブル名にしてしまいました。
(トップ画面に更新履歴を表示させるため)

それで、テーブル名とコントローラー名、フォルダ名がずれていても問題ないということでしょうか?

731 名前:nobodyさん mailto:sage [2014/06/18(水) 16:39:06.81 ID:???]
モデルとコントローラはむしろずれてないとバグりやすくなるだろ。
1画面にニュースとリンクを両方表示したいときどうするつもりだ?

画面に名前をつけたのがView、データの集まりに名前をつけたのがModel。
Cakeでは便宜上Viewのフォルダ名とコントローラ名を合わせると幸せになれるというだけ。

732 名前:nobodyさん mailto:sage [2014/06/18(水) 16:39:37.90 ID:???]
ずれるの意味が分からんが、MVCでバラバラなら問題あるだろ

733 名前:nobodyさん [2014/06/18(水) 16:59:54.99 ID:ma+gijMn]
秒速で1億稼ぐ豚が・・・レイプ

www.tanteifile.com/diary/2014/06/17_01/



734 名前:nobodyさん mailto:sage [2014/06/18(水) 17:34:03.35 ID:???]
上の方でも誰か書いてるけど、1XJ5G0pn はまず好きにすればいい。

つまり、いろいろ質問してるけど、とにかくやってみてから
問題を見つけて行ったほうがいい。

手を動かさない奴に何をいっても無駄だ。

>という風に分けた方が、使用するテーブル単位で分けた方が無難ということでしょうか

などという小賢しい質問をする前にまず作れ。
そして壊して作りなおせ。

735 名前:nobodyさん mailto:sage [2014/06/18(水) 23:32:42.92 ID:???]
Cakeマスターの皆さんに質問

ViewからModelのvalidateを参照して、「名前は○文字までです」みたいな表示をしたい。
ベストプラクティスなやり方ありますかね?

もしくはViewからもModelからも見える所に数値のdefineを置くべきだろうか。

736 名前:nobodyさん mailto:sage [2014/06/19(木) 00:35:54.86 ID:???]
>>735
文字数制限をViewでも管理したいってことか?
そう頻繁に変わるものじゃないから、
Viewに直接注意書きを書くのが一番だと思うが

737 名前:nobodyさん mailto:sage [2014/06/19(木) 01:10:02.52 ID:???]
うちは最近設定値関係は Config に json で保存するパターンを試してる。
パーサのオーバーヘッドが多少気になるけど、まぁ悪くない。

738 名前:nobodyさん mailto:sage [2014/06/19(木) 01:18:19.13 ID:???]
>>736
Viewから変更する必要はなく、注意書きを書きたいだけなんだよね
制限文字数なんかは後から変更される可能性があるので、ModelとViewの両方に直書きしたくない
やはり設定ファイル式にすべきか

739 名前:nobodyさん mailto:sage [2014/06/19(木) 02:04:30.51 ID:???]
Configモデルに数値を保存してコントローラーから操作すればいいじゃん。
モデルキャッシュを使うと、重くならないぞ

740 名前:nobodyさん mailto:sage [2014/06/19(木) 02:06:51.32 ID:???]
viewからmodelを参照するのは全く構わないと思う。俺はviewからいつでもmodelのインスタンスを参照できるように$getmodel('Foo')みたいなクロージャを用意してるので、バリデーションルールにもアクセスできる。

741 名前:nobodyさん mailto:sage [2014/06/19(木) 16:22:55.58 ID:???]
Cakephp2で、core.phpのprefixesを有効にしています。
Configure::write('Routing.prefixes', array('admin'));

routes.phpでルーティングをしたい時、
Router::connect('/', array('controller' => 'pages', 'action' => 'index', 'home'));
Router::connect('/admin/', array('controller' => 'pages', 'admin' => true));

としているのですが、同じような内容を2回書くのが面倒です。
これは仕様として仕方ないのでしょうか?

742 名前:nobodyさん mailto:sage [2014/06/19(木) 23:44:09.30 ID:???]
cakephpを2から3に上げる時とか、
業務でやってたら怖くない?
慣れなん?

サーバー移転ですら怖くてできん。。

743 名前:nobodyさん mailto:sage [2014/06/19(木) 23:45:58.63 ID:???]
業務システムのフレームワークをベータ版にしようとするお前がこえーよw



744 名前:nobodyさん mailto:sage [2014/06/19(木) 23:47:32.48 ID:???]
>>743
今はそうだけどさ
仮にstableになっても。

745 名前:nobodyさん mailto:sage [2014/06/20(金) 00:11:16.79 ID:???]
2->3 はハードル高そうだな

746 名前:nobodyさん mailto:sage [2014/06/20(金) 01:16:57.68 ID:???]
2であと3年は戦うつもり

747 名前:nobodyさん mailto:sage [2014/06/20(金) 09:35:32.81 ID:???]
3に変えてまでCakeについていく気はないな
別のフレームワークに変えるだろう
でも今からだと何がいいんだろう

748 名前:nobodyさん mailto:sage [2014/06/20(金) 10:09:05.76 ID:???]
>>747
ファルコンってどうなん?
速いみたいだけど。

749 名前:nobodyさん mailto:sage [2014/06/20(金) 11:20:56.99 ID:???]
>>747
laravelじゃないか

phalconは業務でも使ってるけど
バグはそれなりにあって、Segmentation Faultで落ちると結構大変
速度は比較にならないほど速いし、フレームワークの仕組みも良いけどさ

750 名前:nobodyさん [2014/06/20(金) 16:37:24.67 ID:1CC0efjo]
cakePHPを使ったシステムで
アップローダーを作ろうとしているのですがウィルスファイルをアップロードされると不味いので
アップロード可能なファイル種類を事前に jpg のみに制限しておいた方が無難でしょうか?

751 名前:nobodyさん mailto:sage [2014/06/20(金) 17:18:38.33 ID:???]
>>750
どうやって制限するの?

752 名前:nobodyさん mailto:sage [2014/06/20(金) 17:31:29.21 ID:???]
>>751
バリデーションに書く

753 名前:nobodyさん mailto:sage [2014/06/20(金) 17:41:37.43 ID:???]
>>752
mimetypeで制限するってことか

jpeg画像のウィルスとかもあるからねぇ



754 名前:nobodyさん mailto:sage [2014/06/20(金) 17:53:47.33 ID:???]
つーか、jpeg型ウィルスって実行するには
別のウィルスに感染させる必要があるんだろ?
単に画像を閲覧しただけで感染するなら、対策とか無理じゃないか?
twitterとかfacebookはウィルスだらけになるぞ

755 名前:nobodyさん [2014/06/20(金) 18:27:17.32 ID:I3iP4JeK]
という事はつまり、jpgファイルであったとしても >>754のアドバイスを参考にすると

jpgのみアップロード可能にしておけば、ウィルスに感染していない人が

その画像を閲覧する分には何も影響がないと言う事でしょうか?

ウィルス感染している人自体が少ないと思うので被害は少ないですよね。

756 名前:nobodyさん mailto:sage [2014/06/20(金) 18:38:27.21 ID:???]
>>755
と言うより、防ぎようがない気もする。
でも、画像アップロード出来るWebサービスは日々オープンしてるわけだし、
そこまで神経質になっても仕方ないよ。

757 名前:336 mailto:sage [2014/06/20(金) 18:41:21.97 ID:???]
再エンコード

758 名前:nobodyさん mailto:sage [2014/06/20(金) 20:23:31.26 ID:???]
それいいね、目から鱗

759 名前:nobodyさん [2014/06/20(金) 21:08:45.45 ID:5NSL3HdG]
>>757
詳しく

760 名前:nobodyさん mailto:sage [2014/06/20(金) 22:04:51.68 ID:???]
>>759
画像を読んで再エンコードすれば
余計なバイナリが入ってたとしてもなくなる

761 名前:nobodyさん mailto:sage [2014/06/21(土) 00:35:05.85 ID:???]
Wordpressが確か再エンコードしていた気がする

762 名前:nobodyさん mailto:sage [2014/06/21(土) 00:48:00.43 ID:???]
それは再エンコードじゃなくてサムネイル作ってるだけでは。
まあサムネイル作って無効な画像かどうか(ライブラリによるがnullが返ったり真っ白画像になったり)を調べるという手はあるかも。

763 名前:nobodyさん mailto:sage [2014/06/21(土) 01:03:27.67 ID:???]
今どき、JPEGだけのアップローダーにどんな役割があるのか興味あるな。



764 名前:nobodyさん [2014/06/21(土) 03:26:03.92 ID:f1vlSuIg]

jpgでいいやん。jpgでエロ画像みえるやん。jpgで072できるやん。

765 名前:nobodyさん mailto:sage [2014/06/22(日) 12:51:34.63 ID:???]
以下のテーブル2つ(hasOne)で、profilesデータをsaveする際に
insertは問題ないのですがupdateが上手くいきません。
(上書きされずに毎回insertされる)

saveメソッドでupdateするには主キーを渡す必要があるのは分かっているのですが、
その方法がよく分かりません。このような場合はどうすれば良いのでしょうか?

usesテーブル
-id//主キー
-username
-password

profilesテーブル
-id//主キー
-user_id//外部キー
-birthday

class ProfilesController extends AppController{
public function edit(){
$id=$this->Auth->user('id');
if($this->request->is(array('post','put'))) {
$this->request->data['Profile']['user_id'] = $id;
if ($this->Profile->save($this->request->data)) {
$this->Session->setFlash(__('The profile has been saved.'));
} } }

テーブルを1つにまとめてしまえば話しは早いのですが
別の都合でそれができません。

766 名前:nobodyさん mailto:sage [2014/06/22(日) 14:20:31.99 ID:???]
>>765
profileにuser_idを渡すはX
profileにidを渡さないと。

767 名前:nobodyさん mailto:sage [2014/06/22(日) 15:16:50.54 ID:???]
>>766
ありがとうございます。
解決しました。

768 名前:nobodyさん mailto:sage [2014/06/22(日) 22:23:19.92 ID:???]
Model::create()したらテーブルカラムのDEFAULT値が勝手にdataにセットされるの止めて欲しいわ。
おかげでUPDATE処理時に更新対象じゃないカラムが勝手にDEFAULT値に変わってえらい事になった。
なにしてくれるんじゃい。

769 名前:nobodyさん mailto:sage [2014/06/22(日) 23:25:35.42 ID:???]
whitelistつかえ

770 名前:nobodyさん mailto:sage [2014/06/24(火) 16:40:44.26 ID:???]
Cakeでシステム作って、Apache benchしたらRequests per secondが1.5ぐらいと激遅。
DBアクセスやめて固定のJSONを1行返すだけにしても大きく変わらず。
Core i7のWin8のXampp環境でもCentOSのVPS環境でもそんな感じ。
いくらCakeが遅いって言っても遅すぎると思うのだが、なにかおかしいです?

771 名前:nobodyさん mailto:sage [2014/06/24(火) 17:44:24.00 ID:???]
キャッシュ使えや

772 名前:nobodyさん mailto:sage [2014/06/24(火) 17:59:57.86 ID:???]
そういうレベルではない

根本何か間違えてるだけだろ

773 名前:nobodyさん mailto:sage [2014/06/24(火) 21:11:44.93 ID:???]
ネットワークの問題かApache benchの使い方間違えてるに1ペリカ



774 名前:nobodyさん [2014/06/24(火) 23:54:56.03 ID:NjjfXiKQ]
検索ボタンを押した際に
GETパラメータでcakeのコントローラにアクセスを掛けたいのですがどうすれば良いでしょうか?

本来は、検索ボタンを押した際に@でコントローラのメソッドにアクセスを
したいのですが、Aになってしまいます。

@・・・期待しているGETアクセス
test.com/hoge/buta/123/tarou

A・・・想定外に生成されるURL
test.com/hoge/buta?id=123&name=tarou

コントローラ
HogeControler
{
  public function Buta($id , $name)
  {
    //ここで「/」区切りでアクセスされた値を取得する。
  }
}

HTML
<form name="name_form" action="/hoge/buta" method="get">
<input type="text" id="id_test" name="id" value="">
<input type="text" id="id_test" name="name" value="">
</form>

775 名前:nobodyさん mailto:sage [2014/06/25(水) 00:05:21.21 ID:???]
javascript

776 名前:nobodyさん mailto:sage [2014/06/25(水) 00:44:49.49 ID:???]
>>774
GETパラメータならAで正しいだろ

777 名前:nobodyさん mailto:sage [2014/06/25(水) 00:53:52.36 ID:???]
>>774
HTTPのお勉強からやり直しましょう

778 名前:774 [2014/06/25(水) 01:07:07.36 ID:1IpoS71w]
>>776 >>775

やはり通常のFormではCakePHP用のURLを生成する事は出来ないみたいですね。
仕方無いので検索ボタンをクリック時に動的にURLを組み替えてリダイレクトする事により実装する事にします。

779 名前:nobodyさん mailto:sage [2014/06/25(水) 01:11:23.04 ID:???]
例に突っ込むのもアレだが
ID指定した時点で検索というよりただの詳細表示のような

780 名前:nobodyさん mailto:sage [2014/06/25(水) 01:50:00.94 ID:???]
javascriptでやるのが無難だな。俺もそうしてるし。

781 名前:nobodyさん mailto:sage [2014/06/25(水) 12:47:26.75 ID:???]
検索項目が増える時のことを考えると、
2の方がいいと思うんだが

782 名前:nobodyさん [2014/06/25(水) 13:46:34.28 ID:cgps1MKk]
>2の方がいいと思うんだが
どういうこと?

783 名前:nobodyさん mailto:sage [2014/06/25(水) 14:13:35.35 ID:???]
そのあたりはAPIの設計に関わることだからなんとも言えない



784 名前:nobodyさん mailto:sage [2014/06/25(水) 14:21:54.78 ID:???]
検索項目が増えるのにGETでやりたいってのは、設計ミスじゃね?
それならPOSTにしろよ

785 名前:nobodyさん mailto:sage [2014/06/25(水) 15:45:34.59 ID:???]
>>782
ルーティングや引数の設定が面倒。
ていうか大体の検索エンジンとかgetパラメータでやってね?

786 名前:nobodyさん mailto:sage [2014/06/25(水) 20:30:38.80 ID:???]
冪等かつ安全な処理はGETが普通っすね
POSTだとキャッシュもされないし

787 名前:nobodyさん mailto:sage [2014/06/25(水) 21:43:08.93 ID:???]
記事中の
hoge.com/app/webroot/media/tarot.jpg
が読まれた際、
hoge.com/media/tarot. jpg
が読まれるようにしいのですが、良い方法ないでしょうか?
nginxでやってます。

ちなみにhoge.comは自分のドメインです。

788 名前:nobodyさん mailto:sage [2014/06/25(水) 21:50:26.46 ID:???]
>>787
意味わからん

789 名前:nobodyさん mailto:sage [2014/06/25(水) 22:32:59.91 ID:???]
>>788
すいません。自己解決しました。

790 名前:nobodyさん mailto:sage [2014/06/26(木) 02:12:49.47 ID:???]
せっかくだから張っておけよ
www.matomater.com/16864/

791 名前:nobodyさん [2014/06/26(木) 21:12:17.80 ID:ceT3Qpnq]
linux のシェルについての話しはどこですれば良いですか?
ここだとすれ違いですよね?

792 名前:nobodyさん mailto:sage [2014/06/26(木) 21:39:46.70 ID:???]
php で日付の正規表現を行いたいのですが
以下の形式の日付型文字列であればOK、違っていればNGと厳密なバリデーションチェックを掛けたいのですが
どうすれば良いでしょうか?

2014-06-10


- で split してチェックを掛けるしかないのでしょうか?

793 名前:nobodyさん mailto:sage [2014/06/26(木) 22:09:00.35 ID:???]
$check = '2014-06-10';
$isValid = date('Y-m-d', strtotime($check)) === $check;



794 名前:nobodyさん [2014/06/26(木) 22:17:51.48 ID:h6oXqOHu]
>>793
サンクス!

ここまで短く判定出来るなんて、、、
驚きです。

795 名前:nobodyさん mailto:sage [2014/06/26(木) 22:29:39.04 ID:???]
PHPって質問スレないのか?

796 名前:nobodyさん mailto:sage [2014/06/26(木) 22:32:22.88 ID:???]
date関数って第二引数にfalse突っ込んでも0と同じ扱いで動くのか
きめえな

797 名前:nobodyさん mailto:sage [2014/06/26(木) 22:57:46.67 ID:???]
>>796

大丈夫だよ。あなたの顔に比べれば断然綺麗なものですよ^^b

798 名前:nobodyさん mailto:sage [2014/06/26(木) 23:04:09.80 ID:???]
これがPHPerです

799 名前:nobodyさん mailto:sage [2014/06/26(木) 23:54:58.72 ID:???]
キモくても何でも動けばいいんだよ。形にこだわり過ぎるのはよくない

800 名前:nobodyさん mailto:sage [2014/06/27(金) 11:40:50.24 ID:???]
デザインやHTMLコーディングもやっている人に聞きたいんだけど、
先にHTMLコーディングをしてある程度のファイルを作って、
その後にViewファイルを作る?それともいきなりViewから作る?

俺はトップページとか主要なページのHTMLコーディングを先にして
それからView化するだけど、後から変更する事が多くて二度手間になるのを感じる。
だから、先にデザインとかレイアウトとか全て完璧に決めて、
それからView化した方が良いのかな?とも思うんだけど、
すぐに動きを見たいから、Controllerと同時に作りたくなる。

結果、直してばかりで面倒になって投げ出したくなるw
そんなアプリばかり作ってるんだけど、何か良いやり方はないかな?

801 名前:nobodyさん mailto:sage [2014/06/27(金) 12:27:28.48 ID:???]
手書きラフ
  ↓
Photoshop
  ↓
マークアップ
  ↓
CSS

802 名前:nobodyさん mailto:sage [2014/06/27(金) 12:28:38.18 ID:???]
>>800
後からの変更を少なくする調整力があれば問題なし。

803 名前:nobodyさん mailto:sage [2014/06/27(金) 13:16:39.40 ID:???]
>>801
俺も同じやり方なんだが、後からマークアップを変えたくなる。

>>802
Cakeの場合、レイアウトやエレメントに分けるだろ?
その後にマークアップの変更やデザインの追加・変更などが入ると、
何度もやり直したりして、投げ出したくなる



804 名前:nobodyさん mailto:sage [2014/06/27(金) 16:32:32.36 ID:???]
たしかにビューは混沌とするからな
俺はややこしくなりそうな場合だけは
ビューには echo 以外は一切記述しないのを目標に、
専用のヘルパーを作って加工のロジックは隠ぺいするようにしてる。
それなりに扱い易くはなるが、万能ではない。

805 名前:nobodyさん [2014/06/29(日) 22:38:39.46 ID:qTkMeLPd]
JavaScriptを用途ごとにファイルに分けると、本番環境にアップする最に圧縮する手間が凄くかかります。
そこで、1ファイルにゴリゴリ共通関数も纏めて書いてますが、皆さんはどうしてますか?

806 名前:nobodyさん mailto:sage [2014/06/29(日) 22:52:42.19 ID:???]
>>805
gruntでまとめて処理
coffeescriptで用途ごとにファイル作成ってやってるよ

807 名前:nobodyさん mailto:sage [2014/06/30(月) 08:44:32.98 ID:???]
僕はgulpちゃん!

808 名前:nobodyさん mailto:sage [2014/06/30(月) 14:03:48.42 ID:???]
そもそも圧縮アップしない。ファイルサイズが少々減る程度で、大して変わらん

809 名前:nobodyさん mailto:sage [2014/06/30(月) 16:21:21.70 ID:???]
phpstormで自動圧縮できるんじゃないだろうか。

810 名前:nobodyさん [2014/06/30(月) 17:47:06.48 ID:cdSjRfUN]
>>808
圧縮しないとソースコード筒抜けじゃん。

難読化しないといけないんとちゃいまっか?

811 名前:nobodyさん mailto:sage [2014/06/30(月) 20:09:23.46 ID:???]
>>810
Javascriptだろ?筒抜けで困ることなんて無いと思うが

812 名前:nobodyさん [2014/06/30(月) 20:22:22.30 ID:cdSjRfUN]
>>811
我ながらコードセンスが良い
綺麗なコードなのでぱくられたくないなーとw

813 名前:nobodyさん mailto:sage [2014/07/01(火) 19:58:59.95 ID:???]
Cakeでtwigを使いたいんだが
TwigView以外で使えるのない?



814 名前:nobodyさん mailto:sage [2014/07/02(水) 17:32:38.36 ID:???]
Cake2系でhasManyの絞り込みってどうすれば良いのでしょうか?

$this->Model->hasMany['Hoge']['conditions'] = array('Hoge.type' => 1);
$data = $this->Model->find('all');

とすれば、hasMany先のテーブル内で絞り込みは出来るのですが、
絞り込みの結果、「一致するデータがない」場合でも、
Modelのデータは取得できてしまいます。

なにか良い書き方、方法は無いでしょうか?

815 名前:nobodyさん mailto:sage [2014/07/02(水) 23:13:55.69 ID:???]
cakeのmodelのリレーションってみんな使ってるのかな。
俺的には使わないほうが後々面倒がないという考えなんだが。

816 名前:nobodyさん mailto:sage [2014/07/03(木) 00:15:43.70 ID:???]
>>814

Hoge モデルを、hasMany とは別に存在チェック用に hasOne でアソシエーション張る

$hasOne = array('HogeOne' => array('className' => 'Hoge'));

で、検索条件に HogeOne.id != null を加える。

817 名前:nobodyさん mailto:sage [2014/07/03(木) 00:16:37.86 ID:???]
>>815

何のためにCake使ってんのか意味不明すぎる

818 名前:nobodyさん [2014/07/03(木) 00:28:54.40 ID:Gi3lwfX6]
仮に2chの様な規模の掲示板をcakeで構築しようとしたら
(寧ろ構築は出来るかもしれないけど)
パフォーマンス劣化が半端無い気がするのですが如何でしょうか?

2chがDBを使わずにログファイルで管理しているのは
やはりFW何かを使うと速度低下が否めないからでしょうね。

819 名前:814 mailto:sage [2014/07/03(木) 00:36:46.85 ID:???]
>>816
出来ました!!!こんな方法があったんですね。
大変勉強になりました。ありがとうございました。

820 名前:nobodyさん mailto:sage [2014/07/03(木) 00:56:55.55 ID:???]
2chのread.cgiってmod_cgidso使っててC言語製じゃなかった?
どの程度の性能なのかしらんけどFW以前にPHP使ってる時点ですでにサーバの数増やさざるを得なさそうな気が
ORMやFW使うとさらに遅くなるってのは間違いない

821 名前:nobodyさん mailto:sage [2014/07/03(木) 01:07:33.29 ID:???]
>>818
cakeが他のFWより極端に遅いってのがあるから
FW以前の話だな

822 名前:nobodyさん mailto:sage [2014/07/03(木) 01:11:12.39 ID:???]
www.techempower.com/benchmarks/#section=data-r9&hw=peak&test=query

FacebookみたいにHHVM使うなら話は別かもな
Cakeがまともに動くのかしらんが

823 名前:nobodyさん mailto:sage [2014/07/03(木) 01:28:28.14 ID:???]
>>822
hhvmが早いといっても、php-raw(素のphp)の2倍しか速くない

cakeは遅すぎて計測不能
cakeよりちょっと速いといわれる
railsやsymfonyでphp-rawで書いたのの1/10の速さでしかない
cakeじゃ無理だな

fuelでphp-rawの半分、phalconでphp-rawと同じぐらいだからここら辺で書かないと
他はyafやphpixieな



824 名前:nobodyさん mailto:sage [2014/07/03(木) 01:37:08.52 ID:???]
Cakeで頑張るならPHPの中間コードキャッシュ入れて
DBスレーブサーバ(ないしAmazon RDS)とロードバランサ使って
ユーザが増えた時はサーバ台数多めで対応
徐々にコードやキャッシュを調整して台数や一台あたりに要求される性能を減らしていくって感じか
速度もある程度はスケールアウトでカバーできるいい時代になった

まず新サービスに大勢の人が来る保証もないし
動作速度より開発速度や書きやすさを優先するからこそのFWっしょ
そんなに速度が気になるなら最初からPhalconやJavaやJVM系言語やC#でも使うよろし

825 名前:nobodyさん mailto:sage [2014/07/03(木) 01:41:59.54 ID:???]
>>824
バランスじゃないのかな?
railsは突出して開発速度?が速いけど
cakeだとphalconと比べてもあまり大差ないみたいだしな

流石に10倍速度が違う≒アクセス10倍の差があるだからな

あくまで、速度が重要視される場合な。
cakeで捌ける人数しかこない前提なら問題ないし
元の話の2chなら話にならないよな

826 名前:nobodyさん mailto:sage [2014/07/03(木) 01:56:21.45 ID:???]
www.techempower.com/benchmarks/#section=data-r5&hw=i7&test=query
www.techempower.com/benchmarks/#section=data-r7&hw=i7&test=query
CakePHPが遅すぎて計測不能なんじゃなくてフレームワークが増えすぎて中の人が徐々に手が回らなくなっているのでは?
過去のを見るとちゃんと結果が載ってる回もある


ところでDartの結果良いな
いつの間にこんなに

827 名前:nobodyさん mailto:sage [2014/07/03(木) 02:01:52.84 ID:???]
>>826
githubでコード集めてるから
人気がなくなった(外部のコードを書く人がいなくなった)ってほうになるな

828 名前:nobodyさん mailto:sage [2014/07/03(木) 02:04:48.87 ID:???]
>>826
r7でrailsぐらいか

829 名前:nobodyさん mailto:sage [2014/07/03(木) 02:05:10.64 ID:???]
開発者がCakePHPから他に移ってるのもあるだろうし
Cakeでベンチ対決に参加しても悲しくなるだけだし

830 名前:nobodyさん [2014/07/03(木) 02:09:04.71 ID:JnE+cuIZ]
>>820 >>821 >>822 >823

そもそも2ch位のトラフィックを捌けるFWとかなさそうですね。

831 名前:nobodyさん [2014/07/03(木) 02:10:17.86 ID:JnE+cuIZ]
>>824
流石に2chクラスだとCakeじゃ無理でしょ。

832 名前:nobodyさん [2014/07/03(木) 02:11:15.57 ID:JnE+cuIZ]
cakeで作られている大規模サイトで有名なのはどこですか?

833 名前:nobodyさん mailto:sage [2014/07/03(木) 02:14:41.70 ID:???]
2chクラスの人が集まるコンテンツを作る方が大変なんですけど



834 名前:nobodyさん mailto:sage [2014/07/03(木) 02:33:52.59 ID:???]
>>830
'捌ける'の前提がよく分からんが
RDBとORMありのFW使った上で2chと同じサーバスペック同じ台数で捌けるかどうかってことか?
Cakeには無理だろうが全FWが駄目と判断するのは早計でしょ
2chのWebサーバって未だにEvent MPMがまともに使えないVer.のApacheだし
書き込みのほうのbbs.cgiは所詮Perlだしガチガチに高速化されてるとも思えないな

www.techempower.com/benchmarks/#section=data-r9&hw=i7&test=json


>>833
まったくだ

835 名前:nobodyさん mailto:sage [2014/07/03(木) 02:34:55.37 ID:???]
>>832
nanapiとランサーズ

836 名前:nobodyさん [2014/07/03(木) 02:56:35.42 ID:JxPD7Z4w]
>>834 >>835

ランサーズの重たさを見てやはりcakeの底が見えました。

ところでなんで ランサーズ がcake使ってるってわかったの?

837 名前:nobodyさん mailto:sage [2014/07/03(木) 03:02:55.42 ID:???]
公式ブログで公表してるから。

838 名前:nobodyさん mailto:sage [2014/07/03(木) 14:01:04.31 ID:???]
>>826
やっぱJVM系優秀だなぁ。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<202KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef