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/
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系優秀だなぁ。