1 名前:nobodyさん [2008/03/14(金) 15:16:00 ID:HF9x5ODX] www.cakephp.org/ 10分で作るCakePHPアプリ for Windows p4life.jp/cake/ マニュアル日本語化 www.cakephp.jp/doc/ 日本語フォーラム cakephp.jp/modules/newbb/ あとこのへんとか(初心者向けTIPS) www.avatarfinancial.com/pages/cake/ CakePHP入門リンク集 ttp://pub.studio15.jp/2007/11/13/cakephp-links/ 【PHP】フレームワーク CakePHP 2ホール目 pc11.2ch.net/test/read.cgi/php/1194976228/ 【PHP】フレームワーク CakePHP pc11.2ch.net/test/read.cgi/php/1163850802/
359 名前:nobodyさん mailto:sage [2008/03/26(水) 17:32:25 ID:???] え…設計フェーズ飛ばしていきなりコーディングに入るの?ギャグだろ? 最低限、要求定義書とユースケースとビジネスロジック(=モデル)の関係図とそれを基にしたスキーマ設計位は必要じゃねーの 打ち合わせ段階で作りまくるじゃん、そんなの どやってクライアントのイチャモンに対応してるの? >>357 イラレで仕様書とか正気?
360 名前:nobodyさん mailto:sage [2008/03/26(水) 17:56:28 ID:???] パワポが激しくめんどくさい。 よって俺もexcel&イラレだな。
361 名前:nobodyさん mailto:sage [2008/03/26(水) 17:58:19 ID:???] まあ、コーディング前の設計は 概要みたいなもんだからね。 たとえば関数をすべてコーディング前に列挙できるかといったらまず不可能 プロのプログラマはコードで設計するんだよ。 鉛筆で図を書くか、キーボードでコードで書くかの違い。
362 名前:nobodyさん mailto:sage [2008/03/26(水) 18:01:13 ID:???] プロはソースにたくさんコメントを残す。
363 名前:nobodyさん mailto:sage [2008/03/26(水) 19:04:34 ID:???] ×プロはソースにたくさんコメントを残す。 ○プロはソースに意味のあるコメントを残す。
364 名前:nobodyさん mailto:sage [2008/03/26(水) 20:37:18 ID:???] >>359 もっとプログラマと交流深めた方がいいよ
365 名前:nobodyさん mailto:sage [2008/03/26(水) 20:39:13 ID:???] >>359 どんだけ狭い世界観なんだよ
366 名前:nobodyさん mailto:sage [2008/03/26(水) 21:07:55 ID:???] 10分以内( ´,_ゝ`)
367 名前:nobodyさん mailto:sage [2008/03/26(水) 21:55:41 ID:???] >>364 この人、確実に嫌われてるだろうな、プログラマに。
368 名前:336 [2008/03/27(木) 00:00:03 ID:d9lPRB8S] >>336 です 意外と盛り上がっててびっくり…
369 名前:nobodyさん mailto:sage [2008/03/27(木) 01:42:38 ID:???] >>359 イラレで仕様書は普通。
370 名前:336 [2008/03/27(木) 02:53:28 ID:d9lPRB8S] >>369 マジかよ。それなんてイラレ?
371 名前:nobodyさん mailto:sage [2008/03/27(木) 11:48:14 ID:???] たとえばフォームにある省略可能な数値型の項目に 値を省略して(空文字で)データベースに保存した場合空文字でINSERTされる。 このときのどう保存されるか動作はデータベース依存であり MySQLは0になり、PostgreSQLはエラーになる。 https://trac.cakephp.org/ticket/4233 チケットが出ていたみたいだが、修正無しでクローズ? これ直る見込みないんかいな。確かに空文字とNULLは違うものだが 「データベースの省略可能な数値フィールド」ってのは 数値とNULLしか入れられないんだよね。 どうせNULLが入ったフィールドをModelから読み込むと 空文字になるんだし(あってるよね?) NULLに変換して保存したほうが実用的だと思うんだけどなぁ。 データベース間の違いも吸収したほうがいいし。 beforeSaveあたりで書き換えるか・・・
372 名前:nobodyさん mailto:sage [2008/03/27(木) 15:25:42 ID:???] >>371 それはCakePHPに限ったことでは無いから死んでこい
373 名前:nobodyさん mailto:sage [2008/03/27(木) 15:27:34 ID:???] >>371 そんなどうでもいい作業するくらいなら コンビニでバイトするよ
374 名前:nobodyさん mailto:sage [2008/03/27(木) 17:50:07 ID:???] CakePHPのアソシエーションでBelongsToやhasOneを渡り歩いて 広範囲のテーブルから値を持ってくるにはどうすればいいんでしょうか SQLならLEFTJOINを繋げて行けば済むのですが 単純にrecursiveを増やしていくとクエリの量が異常に増えて困っています
375 名前:nobodyさん mailto:sage [2008/03/27(木) 19:31:16 ID:???] 最近低レベルの煽りしか返さない奴がいるなウザイ。 どうせ同一人物だろうからトリップつけてくれ。削除すっからさ。
376 名前:nobodyさん mailto:sage [2008/03/27(木) 19:48:23 ID:???] >>375 低レベルの質問しかないから仕方ないこと
377 名前:nobodyさん mailto:sage [2008/03/27(木) 19:51:40 ID:???] >>374 リファレンスみろよ こんなとこで聞くなカス
378 名前:nobodyさん mailto:sage [2008/03/27(木) 20:14:15 ID:???] >>376-377 だからトリップつけろってw
379 名前:nobodyさん mailto:sage [2008/03/27(木) 21:54:01 ID:???] >>377 アソシエーションが直接繋がっている関係なら資料は山ほどあるのですが 例えば4テーブル先まで繋がっているデータを手繰り寄せてくる場合、デバッグ情報を見ると 一旦findで取得してきた配列をforeachで回して一つ一つまたfindを使っているように見えます 結果、データ自体は取ってこれるもののSQLの発行数が異常な量になってしまいとても使う気になれません SQLの発行を抑えつつもアソシエーションを柔軟に広げるためには、自前でqueryを使うしかないのでしょうか?
380 名前:nobodyさん mailto:sage [2008/03/27(木) 22:01:13 ID:???] ユニットテストでfixturesの機能使っている人いる? var $fixtures = array(〜〜〜); こんな感じでfixturesをしているわけだけどさ、 なんかテーブルの生成のタイミングとか変じゃない? テストを単体で実行すると問題なく動くんだけど、 すべて実行するとテーブルが無いとか言われることがある。
381 名前:nobodyさん mailto:sage [2008/03/27(木) 23:06:17 ID:???] >>370 adobe社のイラレだと思うけど。 >>375 わかる。人をバカにしてばっかだよな。あおってるやつ。 見てて気分悪い。 >>376 >>377 リファレンス見てわかるならそのURL教えてあげようよ。 しかも、聞いてる 374 はある程度知識あると思うよ。 もうちょっと人を思いやる気持ちを持とうよ。
382 名前:nobodyさん mailto:sage [2008/03/27(木) 23:10:00 ID:???] >>372 まず、おまえがシネ
383 名前:nobodyさん mailto:sage [2008/03/27(木) 23:23:59 ID:???] >>379 質問の内容があまりにも素人すぎ CakePHPばかにしてんのか?
384 名前:nobodyさん mailto:sage [2008/03/27(木) 23:25:34 ID:???] 誰も馬鹿にしてないから答えろよw
385 名前:nobodyさん mailto:sage [2008/03/28(金) 00:13:02 ID:???] 人をバカにすることで自分が上に立ったような感覚を味わいたいんだろうな 残念なやつが多い >>379 その4テーブルはどんなリレーションなの? で、今はどんなアソシエーションを記述してんの? もしかしたらDB設計が悪いという可能性もある。
386 名前:nobodyさん mailto:sage [2008/03/28(金) 00:51:53 ID:???] >>385 各フレームワークの評価目的でプロトタイプを作っていますので 特定のテーブルの再設計で問題を解決するアプローチでは応用範囲が非常に限られてしまいます 申し訳ありませんがCakePHP側での解決を求めています 例えばごく単純にモデルが A→B→C→D とbelongsToで数珠繋ぎにアソシエーションが設定されている場合 AのリストにB〜Dのデータを動的に付加して取得したいとすると どのような指定をすればよいのでしょうか SQLならJOINをただ書き連ねていけばいいのですが
387 名前:nobodyさん mailto:sage [2008/03/28(金) 01:28:45 ID:???] >>386 CakePHPさわってどれくらい? あまりにも初心者的な質問やめてくれる
388 名前:nobodyさん mailto:sage [2008/03/28(金) 01:30:56 ID:???] スレ分けて欲しいな。CakePHP初心者スレ作ってよ
389 名前:nobodyさん mailto:sage [2008/03/28(金) 01:42:40 ID:???] >>386 初心者が他人の力借りて簡単にCakePHP評価しようなんて CakePHPなめすぎだろ? 自分で死ぬ思いでググれボケ
390 名前:nobodyさん mailto:sage [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 俺もこれの具体的な解決方法を知りたいです。どうか教えてください。
391 名前:nobodyさん mailto:sage [2008/03/28(金) 02:57:36 ID:???] >>390 CakePHPの知識全くないくせに英語力を自慢がしたいの?
392 名前:nobodyさん mailto:sage [2008/03/28(金) 03:06:49 ID:???] >>390 >>371 ここにいる馬鹿どもが、みんな英語わかると思ってんのか?w さりげなくバカにしてるだろ
393 名前:nobodyさん mailto:sage [2008/03/28(金) 03:20:48 ID:???] >>390 今調べて出来そうにないって。こういうケースはじめてなの? 経験浅すぎじゃね。1つのサイトをCakePHPで完成させたことないやろ
394 名前:nobodyさん mailto:sage [2008/03/28(金) 03:22:38 ID:???] >>391 いや、これに関しての日本語の情報がなかなか見つからなかったから英語の記事を探さざるを得なかっただけ。 で、CakePHPの知識がある人はこれをどうやって解決してるんでしょうか?
395 名前:nobodyさん mailto:sage [2008/03/28(金) 03:31:35 ID:???] >>390 どうして、できそうにないか具体的に日本語で説明しろ。わかったな命令だ
396 名前:nobodyさん mailto:sage [2008/03/28(金) 03:56:27 ID:???] このスレ、なんか冗談だと思えるくらい殺伐としてんな w
397 名前:nobodyさん mailto:sage [2008/03/28(金) 06:59:33 ID:???] >>396 何でだかアンチが混じっている。 で、cakePHPは重いとか、質問者を叩いたり。 無視推奨。 つか、アンチしてる人、cakePHPを無視すればいいのにね。
398 名前:nobodyさん mailto:sage [2008/03/28(金) 08:46:16 ID:???] 英語のサイト貼りつけて叩かれるのは初めて見たw 日本のサイトで分からなければ、海外サイトくらい見るだろ。 分からなければWeb翻訳すればいいんだしな
399 名前:nobodyさん mailto:sage [2008/03/28(金) 09:18:10 ID:???] 粘着気質で知性もないとか救いようがないな。 トリップの付け方も知らないらしいし、ほんと終わってんな。w
400 名前:nobodyさん mailto:sage [2008/03/28(金) 09:20:55 ID:???] なんだこの流れ とてつもないバカが何人かいるな
401 名前:nobodyさん mailto:sage [2008/03/28(金) 09:29:46 ID:???] >>390 まさしくそのtickets通りです CakePHPは隣り合ったアソシエーション間ではJOINを繋いでSQLワンコールに最適化してくれますが それ以上のテーブルをまたいだ関係を持とうとすると途端にクエリ量が増えてしまいます 個人的にrecursiveでアソシエーションの深度を指定する考え方は 好感が持てるのですが、負荷の高さを考えると使用をためらわざるを得ません サブクエリをインテリジェントに挿入しろとは言いませんが 今回の様な使用頻度の高いと思われる(かつ、割と実装の想像しやすい)処理ならば 既に解決された方がいらっしゃるのかと質問に至りました -- 先ほどContainableBehaviorを試してみましたがクエリ量は変わりませんでした やはりコアに直接手を加えないといけないようですね(´・ω・`)
402 名前:nobodyさん mailto:sage [2008/03/28(金) 10:01:46 ID:???] A→Bのクエリ発行したときに モデルにB→Aのアソシエーションも記述してあると B→Aのクエリも発行される だから A→B→C→D のようなのをそのままやっちゃうと えらいことになる だから、いらいないアソシエーションはunbindModelでぶった切る あと、1.2だと発行クエリが1.1より最適化されている (つまり、少なくなってるってこと)
403 名前:nobodyさん mailto:sage [2008/03/28(金) 10:11:39 ID:???] >>397 明らかにアンチじゃない奴のほうがたち悪いぞ。質問者叩いてるのもそう。 >>402 >>401 の問題解決にはならないんじゃない。B->Aのアソシエーションがなくても起こるから。 >>401 DBにview作れば早いと思うよ。
404 名前:nobodyさん mailto:sage [2008/03/28(金) 10:15:32 ID:???] 質問があまりにもバカすぎて・・・ レベル低いよな。 ここでアフォみたいな質問してるやつは CakePHPでサイト構築したことあるのかと聞きたいよ
405 名前:nobodyさん mailto:sage [2008/03/28(金) 10:19:27 ID:???] あまりにもバカみたいな質問にバカみたいな回答が多すぎ もっと常識レベルでの会話して欲しいな 駄文ばっかで何の役にも立たないよ
406 名前:nobodyさん mailto:sage [2008/03/28(金) 10:27:40 ID:???] >>405 それそのまま>>405 に当てはまるのわかる?
407 名前:nobodyさん mailto:sage [2008/03/28(金) 10:30:15 ID:???] もっと常識的な質問たのむ
408 名前:nobodyさん mailto:sage [2008/03/28(金) 10:36:03 ID:???] かわいそうに
409 名前:nobodyさん mailto:sage [2008/03/28(金) 10:57:56 ID:???] バッチ処理で長くかかる処理をやるのなら話は別だけど ウェブアプリなんて画面に表示する少ないデータを 表示するだけなんだからJOINしなくてもいいと思うんだけどね。 どうせ複雑なJOINならJOINするのにも負荷かかるわけだし。 ま、パフォーマンスと開発効率のトレードオフ。 どうしても必要なら、モデルに専用の検索メソッドでも作って 自分でクエリー書けばいいんじゃない?
410 名前:nobodyさん mailto:sage [2008/03/28(金) 11:00:25 ID:???] もっと常識的な質問たのむ
411 名前:nobodyさん [2008/03/28(金) 11:03:37 ID:q/btZ3WH] アンチがしつこくネガティブキャンペーンするのも CakePHPが人気になって普及してきた証拠かなぁw アンチじゃない人はIDだすようにするか? そうすればID出していない人はアンチってわかるし。 出したら出したで削除できるしw
412 名前:nobodyさん mailto:sage [2008/03/28(金) 11:10:07 ID:???] アンチを勘違いしてると思うが いい質問には、マナーをもって接するが ろくでもないレスばっかりだからな
413 名前:nobodyさん mailto:sage [2008/03/28(金) 11:13:12 ID:???] >>411 自治厨乙。 だいたいにして、IDなんていつでも変えれるんだから意味ないじゃん。
414 名前:nobodyさん mailto:sage [2008/03/28(金) 11:14:01 ID:???] ろくでもないレスは無視するかマナーをもって 訂正を促すのが良い返答の仕方だよ。
415 名前:nobodyさん [2008/03/28(金) 11:14:44 ID:q/btZ3WH] >>413 やってみなきゃわからないじゃんw
416 名前:nobodyさん mailto:sage [2008/03/28(金) 11:17:51 ID:???] >>415 どんだけ必死なんだよw
417 名前:nobodyさん [2008/03/28(金) 11:57:59 ID:anJTbKap] >>409 もちろん速度を重視しなくてはならない場面ならば専用メソッド内でSQLを書きます しかし、上記の様にシンプルなアソシエーションすら動作が怪しいとなると フレームワーク自体に手を出して最適化させた方がコスト的にベターかなと思います >>403 複雑なアソシエーションのパターンが出来上がってる時はView使った方がいいですね 今ふと考え付いたのですが、結合済みの仮想テーブルを作って、それを元に CakePHP側のモデルを構築するアプローチは面白いかもしれません #仮想テーブルへの更新作業はDB依存のため怪しい臭いはしますが
418 名前:nobodyさん mailto:sage [2008/03/28(金) 12:20:53 ID:???] >>417 負荷を考えるならフレームワークやめろ CakePHPなんてのは、どうでもいいクライアントに高速納品するための道具てことに気づけよバカ
419 名前:nobodyさん mailto:sage [2008/03/28(金) 12:26:48 ID:???] >>417 今頃フレームワークの評価とか手を出すとか、どんだけ遅れてんだよ この業界は進歩が早いの知ってる?
420 名前:nobodyさん mailto:sage [2008/03/28(金) 12:43:39 ID:???] >>417 > 結合済みの仮想テーブルを作って、それを元にCakePHP側のモデルを構築する view作ればって言ったのはそういうこと。 面白いかどうかはおいといて、現状の打開策としてはアリかなと思うわけです。 > 仮想テーブルへの更新作業はDB依存のため怪しい臭いはしますが このDB依存は仕方ないと割り切ればいいんじゃないかな。割り切れるところだと思うし。
421 名前:nobodyさん mailto:sage [2008/03/28(金) 12:49:51 ID:???] >>417 やる前にあれこれ聞かずにやってみろよ こんなとこで解決できれば苦労しねーよクソが
422 名前:nobodyさん mailto:sage [2008/03/28(金) 12:53:20 ID:???] 評価なんてソース解析して自分で実際にサイト構築しないとわからねーよ やってくうちに想像しない難点が沢山でてくるよ
423 名前:nobodyさん mailto:sage [2008/03/28(金) 13:01:42 ID:???] >>417 速度重視とか柔軟性考えるならCIにしろや
424 名前:nobodyさん mailto:sage [2008/03/28(金) 13:04:47 ID:???] CakePHPを最適化させにくいフレームワーク 最適化したいならCIスレにいって、このスレからでていけや
425 名前:nobodyさん mailto:sage [2008/03/28(金) 13:28:19 ID:???] >>420
426 名前:nobodyさん mailto:sage [2008/03/28(金) 13:34:05 ID:???] っていうかJOINにならないというのは どのフレームワークでも同じこと。 CIでもSymfonyでもRubyOnRailsでも同じだよ。 特にCIは最悪だね。いろんな意味で。 ここではすれ違いだから言わないけど。
427 名前:nobodyさん mailto:sage [2008/03/28(金) 13:40:13 ID:???] >>426 どのフレームワークも同じなら軽量でサクサク動作するCIの方がマシ
428 名前:nobodyさん mailto:sage [2008/03/28(金) 13:44:02 ID:???] >>417 > しかし、上記の様にシンプルなアソシエーションすら動作が怪しいとなると シンプルではないよ。 CakePHPでもその他でもそうだけどO/Rマッピングというのは 従来の表形式の使いづらいリレーショナルデータベースを 高レベルに扱いやすく使えるようにするもの。 リレーショナルデータベースを基本に設計されたものではなく より理想的なオブジェクト指向風なデータ構造をもとに設計されたもの。 だからいろんな取り出し方ができる出来る柔軟性がある。 たとえば、behaviorでデータ挿入・取り出し時に色んな処理をかませられる。 そういう柔軟性を持たせながらシンプルなSQLに置き換えるのは容易ではない。 不可能な場合すらある。 なんでもかんでもパフォーマンスを気にして無駄なものを作るのは 初心者のやること。一日働いて3万円人件費をかけるのなら、 その3万円でスペックをあげたほうが総合的に考えてメリットが 高いという時代だから、今は。
429 名前:nobodyさん mailto:sage [2008/03/28(金) 13:50:03 ID:???] CIはデータベースを使わない。使う頻度が少ない場合にはいいけど、 データベースを使う場合、貧弱だよな。 あれならSQL直書きした方がいいってほどメソッドがアホらしいしw なによりビヘイビアが無いのが一番痛い。
430 名前:nobodyさん mailto:sage [2008/03/28(金) 13:50:47 ID:???] >>428 なんでもかんでもパフォーマンスを気にして無駄なものを作るのは 初心者のやること サイトリニューアルなど 既存ユーザーが多数いる自社製品ならパフォーマンスを意識する
431 名前:nobodyさん mailto:sage [2008/03/28(金) 13:52:21 ID:???] > 既存ユーザーが多数いる自社製品ならパフォーマンスを意識する マシンスペックを上げろ
432 名前:nobodyさん mailto:sage [2008/03/28(金) 13:54:32 ID:???] >>429 複雑なアソシエーションはSQL直書きになるんならCIが理にかなってる
433 名前:nobodyさん mailto:sage [2008/03/28(金) 13:55:17 ID:???] 複雑なものじゃなくてシンプルにしようと考えような。
434 名前:nobodyさん mailto:sage [2008/03/28(金) 13:55:42 ID:???] >>426 symfony(というかpropel)はJOINになる
435 名前:nobodyさん mailto:sage [2008/03/28(金) 13:56:08 ID:???] >>431 ユーザーが増えるたびに、どんだけマシンが必要になるんだよ
436 名前:nobodyさん mailto:sage [2008/03/28(金) 13:56:12 ID:???] JOIN使わないで一回一回よんでも パフォーマンスはたいして変わんないんだけどなw
437 名前:nobodyさん mailto:sage [2008/03/28(金) 13:57:04 ID:???] >>435 ユーザーが増えると重くなるのはどれでも一緒ですが? 働いていない人は、人件費というコストを計算に入れないからなぁw まあ、がんばれやw
438 名前:nobodyさん mailto:sage [2008/03/28(金) 13:57:54 ID:???] >>436 変わるよ あほか
439 名前:nobodyさん mailto:sage [2008/03/28(金) 13:57:57 ID:???] SQL直書きになる機会が多いならCIがいい
440 名前:nobodyさん mailto:sage [2008/03/28(金) 13:58:21 ID:???] O/Rというのはリレーショナルデータベースからの 脱却に意味があるというのに、今時SQLなんて低レベルなことやるかよw
441 名前:nobodyさん mailto:sage [2008/03/28(金) 13:58:54 ID:???] >>437 ずっと開発してるわけじゃねーからw 人件費とか1回ぽっきりやん
442 名前:nobodyさん mailto:sage [2008/03/28(金) 14:00:15 ID:???] 複雑なSQLならO/Rマッピング使えないじゃん 今のCakePHPなら だったらCIでSQL直書きが最高よ
443 名前:nobodyさん mailto:sage [2008/03/28(金) 14:03:25 ID:???] >>437 重くなりかたが異なってくるんですが? 1回で済む処理を2回のクエリで行ってるとアクセス数が増えたときにクエリ発行数が大きく変わることがわかんない? ほんとにプログラマなのか?まぁ、がんばれや
444 名前:nobodyさん mailto:sage [2008/03/28(金) 14:05:37 ID:???] ぷw 頭固いな。mixiの話とかしらんのかいな mixiでは”高負荷に耐えるためにJOINを使っていない”んだよ。 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=
445 名前:nobodyさん mailto:sage [2008/03/28(金) 14:07:29 ID:???] >>442 使えていますが? JOINが使われないってだけでしょうが。 パフォーマンスに問題が無い場所で、 複雑なSQLを、SQLを書かずに作れる(買いても作れる)CakePHPと、 SQLを書くのと同等の手間をかけなければならないCIでは どちらが優れているかは言うまでも無く、CakePHPですね。
446 名前:nobodyさん mailto:sage [2008/03/28(金) 14:08:18 ID:???] >>441 マシンスペックを上げるのも一回ぽっきりですが?
447 名前:nobodyさん mailto:sage [2008/03/28(金) 14:09:13 ID:???] ビヘイビアがない時点でCIは糞w
448 名前:nobodyさん mailto:sage [2008/03/28(金) 14:11:24 ID:???] >>445 複雑なSQLを、SQLを書かずに作れる(買いても作れる)CakePHP group byとかどうやんの?
449 名前:nobodyさん mailto:sage [2008/03/28(金) 14:12:45 ID:???] >>445 複雑なSQLを、SQLを書かずに作れる(買いても作れる)CakePHP この発言無理がありすぎやろw
450 名前:nobodyさん mailto:sage [2008/03/28(金) 14:13:42 ID:???] >>444 あのさ、読解力なさすぎ。 「高負荷に耐えるためにJOINを使っていない」とは書いてない。
451 名前:nobodyさん mailto:sage [2008/03/28(金) 14:14:14 ID:???] 結局アンチはいつものCI厨だったなw
452 名前:nobodyさん mailto:sage [2008/03/28(金) 14:15:24 ID:???] >>450 ではJOINを使わない理由になんて書いていますか?言ってみてください。
453 名前:nobodyさん mailto:sage [2008/03/28(金) 14:17:30 ID:???] >>452 スケールするためにデータベースを分割し、JOINが使用できなくなったから。
454 名前:nobodyさん mailto:sage [2008/03/28(金) 14:20:13 ID:???] スケールとはパフォーマンスをあげるということです。
455 名前:nobodyさん mailto:sage [2008/03/28(金) 14:21:44 ID:???] うん。だから?
456 名前:nobodyさん mailto:sage [2008/03/28(金) 14:22:38 ID:???] >>455 おまえの負けてことだよ
457 名前:nobodyさん mailto:sage [2008/03/28(金) 14:24:15 ID:???] >>456 あからさまにバカだな。論理的に考えられないんだな。
458 名前:nobodyさん mailto:sage [2008/03/28(金) 14:24:38 ID:???] >>447 1.1使ってる人は真性なる糞ですね
459 名前:nobodyさん mailto:sage [2008/03/28(金) 14:25:14 ID:???] 高負荷に耐えられるパフォーマンスを作り出す為に、 データベースを分割してJOINが使用できなくなった。 負荷を考えるのなら、JOINなんかするより、 マシンに投資してデータベースを分割(当然マシンも増えているはず)して アプリケーションで行ったほうがいいということです。
460 名前:nobodyさん mailto:sage [2008/03/28(金) 14:28:55 ID:???] >>457 さっきまでパフォーマンスの話してたやろうが 論理的な会話してないのお前だろw
461 名前:nobodyさん mailto:sage [2008/03/28(金) 14:31:33 ID:???] 結局CIが最強てことじゃんか
462 名前:nobodyさん mailto:sage [2008/03/28(金) 14:37:17 ID:???] CIはフレームワークを使っているとは思えないほど開発工数がかかる。 データベース部分は、SQLの単語(selectやfromやwhere)を それぞれメソッドに置き換えて実行しないといけない。 なんとビックリw だから糞。
463 名前:nobodyさん mailto:sage [2008/03/28(金) 14:38:23 ID:???] わろたw $this->db->select('title')->from('mytable')->where('id', $id)->limit(10, 20); $query = $this->db->get();
464 名前:nobodyさん mailto:sage [2008/03/28(金) 14:38:41 ID:???] >>459 ただ、「マシンに投資してデータベースを分割(当然マシンも増えているはず)して」が始めからできるわけじゃないんだよね。 だからSQL発行数も含め、パフォーマンスには常に気を遣うわけで。 mixiが今はソフトウェア側でパフォーマンスを気にしてないかっていったらそんなことはないし。 >>460 パフォーマンスの話してるよ。何言ってんの? もう面倒だからお前いいよ。
465 名前:nobodyさん mailto:sage [2008/03/28(金) 14:40:13 ID:???] だからパフォーマンスを重視するところだけ 最適化して、あとは楽で速いコーディングをすればいいじゃんか。 パフォーマンスの基礎だよ?
466 名前:nobodyさん mailto:sage [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,) これに比べれば天と地に差
467 名前:nobodyさん mailto:sage [2008/03/28(金) 14:42:45 ID:???] >>466 引数の数を勝手に増やすなw 最後の引数の意味言ってみろよ。 いえなければ赤っ恥だなw
468 名前:nobodyさん mailto:sage [2008/03/28(金) 14:42:48 ID:???] >>464 おまえ誰だよ?トリップでも番号でもいいから付けろよw
469 名前:nobodyさん mailto:sage [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); こうなります。
470 名前:nobodyさん mailto:sage [2008/03/28(金) 14:45:17 ID:???] >>464 名無しで必死にレスしてるようだが 名前に番号でもつけてくれないと 今までどんな発言してんかわかんないんだがw
471 名前:nobodyさん mailto:sage [2008/03/28(金) 14:46:08 ID:???] >>468 どうせトリップつけさせて削除しようって魂胆だろ。 そんな手に引っかかるか。ばーかw
472 名前:nobodyさん mailto:sage [2008/03/28(金) 14:46:42 ID:???] >>469 わかりやすくていいね、さすがCI ヌルヌルフレームワークとは大違い
473 名前:sage [2008/03/28(金) 14:50:37 ID:JUQ1v1x2] $this->flash で出てくるはずのページがIE6だと表示されん。ソースは吐かれてる。 ってことはUTF関係か。
474 名前:nobodyさん mailto:sage [2008/03/28(金) 14:50:44 ID:???] アンチレス繰り返してたら、えらい盛り上がってきた
475 名前:425 mailto:sage [2008/03/28(金) 14:54:55 ID:???] すみません、途中投稿しました >>420 その通りですね。同一アプリケーション内でDBをスイッチする事はありえないので リスクとしては小さいため十分検討できます(一応、PostgreSQL使ってる方は注意です) >>424 CodeIgniterもとてもいいフレームワークだと思います ぜひその情熱で当該スレッドを活性化させて盛り上げて欲しいですね >>428 確かにアソシエーションの自動判別が面倒(無理)という事情は分かります 面倒なSQLを叩かずオブジェクティブにデータセットを取得できる機能が すでに実装されていているのですからそれを使うに越した事はありません この辺りの実装はアプリケーション全体のパフォーマンスに影響するため サーバ増設前の改良を十分に検討できる部分だと思います
476 名前:nobodyさん mailto:sage [2008/03/28(金) 14:54:59 ID:???] 実はアンチを煽って盛り上げさせているというのはナイショだw 見ろ他フレームワーク(特にCI)の静けさを!
477 名前:nobodyさん mailto:sage [2008/03/28(金) 14:56:44 ID:???] >>469 みたいなコードを書くぐらいなら SQLをそのまま書いたほうがいいな。
478 名前:nobodyさん mailto:sage [2008/03/28(金) 15:06:18 ID:???] >>428 すみません >>475 の説明はちょっと意味不明ですね、スルー推奨です
479 名前:nobodyさん mailto:sage [2008/03/28(金) 15:45:01 ID:???] Cakeは糞
480 名前:nobodyさん mailto:sage [2008/03/28(金) 15:54:32 ID:???] aki(ryが本出してるから糞
481 名前:nobodyさん mailto:sage [2008/03/29(土) 07:40:57 ID:???] あの本は確かに糞だったな
482 名前:nobodyさん mailto:sage [2008/03/29(土) 09:07:16 ID:???] あれは本当に酷かった
483 名前:nobodyさん mailto:sage [2008/03/29(土) 15:28:58 ID:???] 文句だけは達者だな
484 名前:nobodyさん mailto:sage [2008/03/29(土) 15:56:30 ID:???] 達者?
485 名前:nobodyさん mailto:sage [2008/03/29(土) 16:10:19 ID:???] このスレはいつも無駄に盛り上がるよな
486 名前:nobodyさん mailto:sage [2008/03/29(土) 16:54:04 ID:???] >>484 ゆとり乙
487 名前:nobodyさん mailto:sage [2008/03/29(土) 17:43:56 ID:???] >>486 ゆとり乙
488 名前:nobodyさん mailto:sage [2008/03/29(土) 20:03:50 ID:???] >>486 ゆとり乙
489 名前:nobodyさん [2008/03/29(土) 22:04:16 ID:t2qvxoud] CakePHPっていいフレームワークだよな
490 名前:nobodyさん mailto:sage [2008/03/29(土) 22:08:25 ID:???] ソース汚いけどな
491 名前:nobodyさん mailto:sage [2008/03/29(土) 22:15:25 ID:???] 最高のフレームワークだね 完璧すぎる
492 名前:nobodyさん mailto:sage [2008/03/29(土) 22:29:55 ID:???] おまいらマインドマップ使ってる?
493 名前:nobodyさん mailto:sage [2008/03/29(土) 22:57:31 ID:???] 30才過ぎるとマインドマップ使わないと トイレ行った後とか今まで何考えてたかさえ忘れる
494 名前:nobodyさん [2008/03/29(土) 23:43:43 ID:VJRoSuRr] なんでマインドマップの話になったか分からないけど、自宅と会社のPCに FreeMindインストール済み。 自宅ではCakePHPのシステム設計に使ってる。 ひとつずつやる事片付けて、終わったブランチに「レ」のアイコン付けるのが 楽しい。
495 名前:nobodyさん mailto:sage [2008/03/30(日) 02:14:14 ID:???] UMLはルール化した図解表現 マインドマップは自由な図解表現
496 名前:nobodyさん mailto:sage [2008/03/30(日) 02:16:24 ID:???] マインドマップで設計し形になったものをUML化する
497 名前:nobodyさん [2008/03/30(日) 02:17:48 ID:xhO/sY7i] んで、UMLで書いた仕様書を投げ捨ててウンコする
498 名前:nobodyさん mailto:sage [2008/03/30(日) 02:19:35 ID:???] CakePHP使ってればUMLもマインドマップも必要ない
499 名前:nobodyさん mailto:sage [2008/03/30(日) 02:26:47 ID:???] 作業途中に仕様的にやばい匂いがしたらマインドマップ使ってる
500 名前:nobodyさん mailto:sage [2008/03/30(日) 02:31:49 ID:???] 問題を解決しやすい方法として 思ったことを、どんどん言葉として書き出す わかってるからと頭の中でしまいこむと、全体的な解決図を結び付きにくくする
501 名前:nobodyさん mailto:sage [2008/03/30(日) 02:45:33 ID:???] 難しい状況を言語化する能力がコミュニケーション能力での重要ポイントだと思う。 もっと言語化するクセつければ、コミュニケーション能力向上になるんじゃないかな
502 名前:nobodyさん mailto:sage [2008/03/30(日) 17:27:12 ID:???] render呼んだ後 すぐexit(); してる?
503 名前:nobodyさん [2008/03/30(日) 20:27:27 ID:3z+xm+ln] >>473 遅レスだが、ソースの頭にBOMを付けたら表示されるようになた。 が、viewのファイルは8Nで保存しておかないと、たまに悪さをするようだ。
504 名前:nobodyさん mailto:sage [2008/03/30(日) 22:06:44 ID:???] >>502 もっと常識的な質問たのむ
505 名前:nobodyさん mailto:sage [2008/03/31(月) 10:30:36 ID:???] >>502 してないよ
506 名前:nobodyさん mailto:sage [2008/03/31(月) 10:59:21 ID:???] >>505 コンポーネントでrenderを呼んだときは exitしないとデフォルトのrenderが最後に読み込まれるよ
507 名前:nobodyさん mailto:sage [2008/03/31(月) 11:00:31 ID:???] cakePHPのテスト環境だけど SeleniumとSimpleTestの組み合わせが最強?
508 名前:nobodyさん [2008/04/01(火) 01:26:52 ID:j0Vrw1hD] >>507 そっちのテストなら、セレニウムだろうと手作業だろうとなんだって良くね? ユニットテストをするのなら1.2から正式対応したSimpleTestって言うだろうけど。 ていうか、テスト駆動開発って面倒ですよね、時間がかかるけど出来上がり安定するのは確かだけど。
509 名前:nobodyさん mailto:sage [2008/04/01(火) 01:34:29 ID:???] 正確にはテスト駆動じゃないけど、 ある程度の規模になったら、ユニットテストをやらないなんて 考えられないよ。 修正があるたびに同じテストなんてやってられない。 それこそ時間がかかる。
510 名前:nobodyさん mailto:sage [2008/04/01(火) 02:09:46 ID:???] Selenium IDE これいいね。これだけでも同じテストする必要がないし なんといってもテストが楽
511 名前:nobodyさん mailto:sage [2008/04/01(火) 12:33:08 ID:???] Yahooが占いコンテンツ制作にCakePHPを採用
512 名前:nobodyさん mailto:sage [2008/04/01(火) 20:20:10 ID:???] なにこの寂びれぶり
513 名前:nobodyさん [2008/04/02(水) 00:32:30 ID:Ldo05SB7] んじゃ、おれがこのスレを潤わせてやるぜ ビヘイビアって使ってる?
514 名前:nobodyさん mailto:sage [2008/04/02(水) 00:38:10 ID:???] >>512 荒らしが去ったので落ち着いただけ。 CakePHPを使って、ようやくサイトを公開できた。 思ったより使いやすいね、CakePHP。
515 名前:nobodyさん mailto:sage [2008/04/02(水) 03:09:53 ID:???] コンポーネント、ビヘイビア、ヘルパーの中では ビヘイビアを一番使うな。 よくよく考えると、ソフトウェアの中心はモデル。 その中心の共通処理なんだからよく使うのは当たり前か。
516 名前:nobodyさん mailto:sage [2008/04/02(水) 11:07:25 ID:???] >>515 ソフトウェアの中心はコントローラー なぜならコントローラーはモデルとビューにも指令を出すが モデルは、たいていコントローラを介してのやりとりになるから そういう考えで行けば、よく使うのはコンポーネントじゃないとおかしい
517 名前:nobodyさん [2008/04/02(水) 11:18:11 ID:Ldo05SB7] >>516 アフォがあらわれた
518 名前:nobodyさん [2008/04/02(水) 11:57:50 ID:KzinrGTW] findCount()で count(distinct hoge) を指定したいのですが それは、findAll() でやるべきなのでしょうか?
519 名前:nobodyさん mailto:sage [2008/04/02(水) 12:05:53 ID:???] うん。アフォだ。ワロタw コントローラなんて所詮インターフェースに過ぎんよ。 実際の処理じゃなくて、ブラウザから引数を受け取って それを少々加工してモデルに渡す。 またモデルから受け取ったデータを少々加工してビューに渡す。 流れとしてはこんな感じだね。 「ブラウザ」→「コントローラ(加工)」→「モデル(実際の処理)」→「コントローラ(加工)」→「ビュー(HTML出力)」 っていうか、このように作らないとテストがしづらいったらありゃしない。 SeleniumやCakeWebTestCaseがあるとはいえ、 コントローラを操作してのテストでは範囲が大きすぎる。 もっと小さな範囲でテストできるようにしないといけない。 一番重要な処理を最小限の大きさ(なるべく他に依存しない)で テストすること考えれば、自然とこうなるはず。
520 名前:nobodyさん mailto:sage [2008/04/02(水) 15:46:57 ID:???] ガソリン安いな〜 これほど自民党の一党独裁の問題点が分かりやすい現象は無いなw
521 名前:nobodyさん mailto:sage [2008/04/02(水) 16:07:32 ID:???] >>519 そうなんだ。だから本にもモデルのテストの方法しか書いてなかったんだ。 モデルよりコントローラーをテストしたいんだけど・・・ってずっと思ってた。 ということは、僕のプログラムの組み方がよくないんでしょうか。
522 名前:516 [2008/04/02(水) 16:33:04 ID:Ldo05SB7] >>515 ,>>121 さきほどはアフォと一言で片付けてしまって申し訳ない、2ch流の愛情表現だと思ってくれ で、>>519 のいうとおりアプリケーションの中心となるビジネスロジックについてはコントローラなどでは なくモデル内で実装するべき。一番大切なテストはビジネスロジックであるわけだし、モデルに集約して (かつコントローラとのインタフェースも疎結合にして)コアロジックを実装することでコアロジックを別システムに 再利用しやすくなるというメリットも受けられる。 なので、コントローラはある意味、テストをしなくても問題ないくらい「薄い」実装にするべきだし、コントローラ 内で繰り返しよく使う処理についてはコンポーネント化してあげたほうが、ユニットテストで品質を保証できるので 良いかと。 こんな感じで考えていますが、どうでしょう?
523 名前:nobodyさん mailto:sage [2008/04/02(水) 16:44:10 ID:???] >>519 Seleniumこれだけあれば、全く十分なんだが これ以外でテストしようとすればコストかかるだけやろ どんくさい作業してんな、赤字やろ?
524 名前:nobodyさん mailto:sage [2008/04/02(水) 16:50:49 ID:???] >>522 だから何ってかんじだが、それがどうしたんだよ リファレンスに書いてあるようなこと、なんで必死に訴えてるのwww
525 名前:nobodyさん mailto:sage [2008/04/02(水) 16:52:59 ID:???] 自演厨きたー。うぜえええ
526 名前:nobodyさん mailto:sage [2008/04/02(水) 16:56:38 ID:???] Seleniumなんかでテストしたら時間(=コスト)がかかるよ。 ブラウザを起動する為、そもそも動作が遅いってのもあるが、 Seleniumだといくつものモジュールが組み合わさった状態で テストするしかないから、どこのバグがあるのか見つけにくい。 またデータの初期化などが出来ない。 途中で内部のデータを調べることも出来ない。 CakePHPにはSimpleTestでブラウザをエミュレートした状態の テストもできるので基本はそれを使ったほうが良い。 Seleniumを使うとしたら、SimpleTestではできない JavaScriptが絡んだ処理のテストぐらいだな。
527 名前:nobodyさん mailto:sage [2008/04/02(水) 16:58:43 ID:???] リファレンスに書いてあるようなことなのだから、 間違いではないということだなw
528 名前:nobodyさん mailto:sage [2008/04/02(水) 17:01:36 ID:???] >>522 アプリケーションの中心となるビジネスロジックて何? どんなロジック? 一番大切なテストてどんなテスト? >>モデルに集約して (かつコントローラとのインタフェースも疎結合にして)コアロジックを実装 プラグインと違うの? >>なので、コントローラはある意味、テストをしなくても問題ないくらい「薄い」実装にするべき モデルとビューに命令出すのに薄い実装なんて物理的に無理 モデルはカラッポでOK
529 名前:nobodyさん mailto:sage [2008/04/02(水) 17:04:44 ID:???] >>526 ブラウザ上でテストするだけなのにモジュールとか関係ないしwww JavaScriptテストやるなら加工しないと出来ないだろwww
530 名前:nobodyさん mailto:sage [2008/04/02(水) 17:05:56 ID:???] >>526 Selenium使ったことないやろ?正直にいえ
531 名前:nobodyさん mailto:sage [2008/04/02(水) 17:08:00 ID:???] SimpleTestの方が時間かかるよ
532 名前:nobodyさん mailto:sage [2008/04/02(水) 17:08:48 ID:???] 内部のデータを調べるようなテスト時間かかるに決まってるやろ
533 名前:nobodyさん mailto:sage [2008/04/02(水) 17:09:00 ID:???] また、例の嵐だな。
534 名前:nobodyさん mailto:sage [2008/04/02(水) 17:09:39 ID:???] とりあえず言っておくけど、CIは糞だから、 糞スレでやってねw
535 名前:nobodyさん mailto:sage [2008/04/02(水) 17:13:49 ID:???] >>532 たしかに!
536 名前:nobodyさん mailto:sage [2008/04/02(水) 17:16:18 ID:???] >>522 日本語でおk
537 名前:nobodyさん mailto:sage [2008/04/02(水) 17:18:56 ID:???] なんか、CI普及の為(?)にわざとアフォなことを言っている気がする。 いや、まて、わざと悪い例を出しているのか? まあ、訂正している俺は考えをまとめられていいけどな。 (そして訂正している文を見て学習する人もいるだろう) > モデルとビューに命令出すのに薄い実装なんて物理的に無理 > モデルはカラッポでOK コントローラが出す命令はすごく小さなものだよ。 モデルに対して、「データ取って来い!」「書き込め!」「削除しろ!」 そして、「複雑な一連の処理をしろ!」 前三つは、CakePHPの自動生成コードでも書いてあるから 簡単にわかると思うけど最後の「複雑な一連の処理をしろ!」を モデルに書くべきってことをわかってない人が多いんだよね。 複雑な一連の処理をコントローラに書いてしまう。悪い例だ。
538 名前:nobodyさん mailto:sage [2008/04/02(水) 17:27:44 ID:???] >>537 テストのことを考えていってんの?俺はテストはブラウザでしかしないからw
539 名前:nobodyさん mailto:sage [2008/04/02(水) 17:29:17 ID:???] テスト中心に設計するならモデルに詰め込めるだけ詰め込めばいいんじゃね
540 名前:nobodyさん mailto:sage [2008/04/02(水) 17:30:57 ID:???] >>537 複雑な一連の処理を具体的に述べよ はなしはそれからだ
541 名前:nobodyさん mailto:sage [2008/04/02(水) 17:32:26 ID:???] where が入るような条件文はモデルに書けばいいの?
542 名前:nobodyさん mailto:sage [2008/04/02(水) 17:33:42 ID:???] >>537 モデルにもっていっていいのは どこからどこまで?
543 名前:nobodyさん mailto:sage [2008/04/02(水) 17:45:27 ID:???] >>537 いくら給料もらってんだよ 俺はPHPプログラマで36万円
544 名前:nobodyさん mailto:sage [2008/04/02(水) 17:53:38 ID:???] モデル上で別のモデルのデータ取得できなくね?
545 名前:nobodyさん mailto:sage [2008/04/02(水) 17:55:24 ID:???] >>542 どこまでをモデルでやるかは結局設計しだいだけど、 >>541 ユーザーがフォームからの条件入力。URL形式での条件入力 、つまりコントローラのアクション関数の引数に入る場合。 その引数をもとにモデルを呼び出すわけだけど、 このときのモデルの関数は汎用的なfind関数でもいいし、 もっと簡単に扱いたければ、モデルに専用の関数を作って呼び出す。 汎用的なfind関数を使う場合には、array('key' => '= ' . $value)なんて 条件データに加工しないといけないよね? これがコントローラの処理。 モデルに専用の関数を作る場合、もっと簡単に使える関数にするね。 もちろんその場合、モデル内部でfind関数を使うことになるだろうし、 そのための条件の加工もモデルに書く。 ユーザーの入力した条件が、POSTでくる場合は、 $this->dataから条件を作り出す所までもうちょっと コントローラでやる仕事が増えるだろう。 それでもコントローラの処理(モデルを呼び出すところまで)はこれだけ。 俺ならこのように作るよ。 あとモデルから戻ってきたデータを、ビューで使いやすいように 単純化するのもコントローラの仕事だね。
546 名前:nobodyさん mailto:sage [2008/04/02(水) 17:59:00 ID:???] >>544 > モデル上で別のモデルのデータ取得できなくね? モデル上で別のモデルのデータを使用したいと思ったとき、 その二つのモデル間には関連性がある。 つまりアソシエーションを定義している。 アソシエーションを定義しているのなら、 モデル内で、別のモデルを呼び出すことが出来る。 Model1の中から、$this->Model2->findAll(); 感じで呼び出せる。
547 名前:nobodyさん mailto:sage [2008/04/02(水) 18:01:31 ID:???] >>545 モデルから戻ってきたデータを、ビューで使いやすいように単純化 数字にコンマ付けたりとか?
548 名前:nobodyさん mailto:sage [2008/04/02(水) 18:02:43 ID:???] >>546 そのやり方はCakePHPで推奨されてる方法なの?
549 名前:nobodyさん mailto:sage [2008/04/02(水) 18:05:48 ID:???] >>546 わざわざアソシエーションするの? いつも結合されて重くなるじゃん
550 名前:nobodyさん mailto:sage [2008/04/02(水) 18:06:46 ID:???] >>547 それは見た目を変えるだけだからビューの仕事だろうね。 モデルから戻ってきたデータとは、汎用的なfind関数の場合、 $data => array( モデル名 => array( フィールド名1 => 値1, フィールド名2 => 値2, フィールド名3 => 値3, ) ) こんな値が返ってくる。もちろん、これをそのまま ビューに渡してもいいんだけど、これじゃあビューで使いにくい! って言う場合加工する。 そんな場合あるのかって? 余り無いだろう。 そう、だからコントローラの仕事は少ない。 モデルから取得した値をビューに渡す$this->set(・・・) は コントローラの仕事ね。
551 名前:nobodyさん mailto:sage [2008/04/02(水) 18:07:42 ID:???] >>549 必要なときにつけたりはずしたりする方法は、何度も既出
552 名前:nobodyさん mailto:sage [2008/04/02(水) 18:11:37 ID:???] >>548 だめなのか?
553 名前:nobodyさん mailto:sage [2008/04/02(水) 18:12:12 ID:???] >>546 なんでモデルでやるの?そのメリットは?
554 名前:nobodyさん mailto:sage [2008/04/02(水) 18:21:49 ID:???] >>553 もちろん、直接関係が無いモデルは別々に アクセスするよ。 モデルというか処理の内容から考えて 一つであるべきと思う場合は一つのモデルでやる。 あと、トランザクションの為のメソッドが モデルにあることも興味深いよね。 一連関係ある処理は一つのモデル内で完結させるものと 考えると、なるほどと思わない?
555 名前:nobodyさん mailto:sage [2008/04/02(水) 18:23:17 ID:???] >>546 モデルは複雑にすべきじゃないよ。な中規模設計したとき アソシエーションで必ず問題起きそう
556 名前:nobodyさん mailto:sage [2008/04/02(水) 18:27:56 ID:???] >>555 その意見はわからないでもないが、 普通にRDBMSを正規化したとき そういう関連(リレーション)は出来るもんなんだが・・・ RDMSを正規化すると複雑になってしまう。それがいやだから それを解決する為に、O/Rがあるんだと思うぞ!
557 名前:nobodyさん mailto:sage [2008/04/02(水) 18:28:26 ID:???] ×RDBMSを正規化したとき ○RDBMSでテーブルを正規化したとき
558 名前:nobodyさん mailto:sage [2008/04/02(水) 18:32:44 ID:???] >>546 ページ数が増えたとき、コントローラを増やすことができるけど コントローラが増えた分モデルを増やすこと出来ないよ。 ひとつのモデルに書くコードが恐ろしく増えるね
559 名前:nobodyさん mailto:sage [2008/04/02(水) 18:34:17 ID:???] また例の馬鹿か?
560 名前:nobodyさん mailto:sage [2008/04/02(水) 18:35:56 ID:???] > コントローラが増えた分モデルを増やすこと出来ないよ。 言っている意味が、よくわからないんだが・・・ 例えコントローラが無くてもモデルは作れるし、 一つのコントローラで複数モデルを扱うことも出来るんだが?
561 名前:nobodyさん mailto:sage [2008/04/02(水) 18:43:36 ID:???] 全てはコントローラに処理を詰め込み過ぎたscaffoldが悪い。 あれがアフォに勘違いを植え込む。
562 名前:nobodyさん mailto:sage [2008/04/02(水) 18:49:12 ID:???] うーん、自動生成のコードとしては、これしかやりようがない所もあるのだろうけど、 コントローラに処理を詰め込みすぎというか、モデルに処理が何も無いのが いけないんじゃないかな? あれじゃ、単にテーブルに直接アクセスするネイティブな関数の 代わりのクラスにしか見えない。 一番、プログラマがいろいろ書くべきなのはモデルなのに。 逆に言えば、いろいろ書かないといけないものだからこそ 自動生成ではモデルに何もないんだろうね。 でもサンプル程度はほしいかも。
563 名前:nobodyさん [2008/04/02(水) 18:53:30 ID:KzinrGTW] debugを1以上にするとHTMLの一番最後に <!-- 0.0012s --> みたいに、生成時間?のコメントがつくんですけど これを付けないようにするにはどうすれば良いんでしょうか? debugは1にしておきたいです。
564 名前:563 mailto:sage [2008/04/02(水) 18:58:51 ID:???] あ、webroot/index.php にありました。
565 名前:nobodyさん mailto:sage [2008/04/02(水) 19:00:37 ID:???] cakephpで作られたオープンソースみても モデルで書かれてる処理はバリデータ関係の関数しかないんだけど code.google.com/p/openflp/
566 名前:nobodyさん mailto:sage [2008/04/02(水) 19:00:38 ID:???] >>564 Do not changeって書いてあるけどねw
567 名前:516,522 [2008/04/02(水) 19:01:23 ID:Ldo05SB7] ん?なんかいろいろゴチャゴチャしてきたけど、結局俺が主張してたことは正しかったのか・ 「複雑な一連の処理」とかビジネスロジックとかって、たとえば俺の場合は ・@日足の株価を取得してRSIを計算する ・A与えられた条件引数に該当する銘柄の証券コード配列を取得(スクリーニング) ・B現在の株価を受け取り、あらかじめ計算しておいた目標価格の条件を満たすか判別 ⇒・更に条件を満たしていれば、買い/売り注文をWEBサービスに投げる処理も「証券会社モデル」(仮称)というDBと連携しないモデルを作成して、HTTP(S)で注文するメソッドを書いてる。 ・C現在の株価を取得する(楽天証券のRSSをDDE接続経由で呼び出すモジュールを別途使用) みたいなアプリが持つほとんどの主要処理を言ってて、これらをモデル(またはビヘイビア)に記述するべきと思うのです。 逆に言えばコントローラは、 ・Cの「現在の株価を取得する」メソッドからの返し値をそのままB「株価と目標を評価し、注文する」メソッドに引渡し仲介する ・ビューからリクエストがあった@などの計算処理をモデルメソッド@に引き渡す ・スクリーニング対象銘柄の証券コードリストを取得し、そのままAのスクリーニングメソッドに引き渡す。 くらいのことしかしていない。人間の世界でいうと「仲介人」かと。
568 名前:nobodyさん mailto:sage [2008/04/02(水) 19:06:54 ID:???] >>565 お前の目は節穴か・・・ ってかこのソースあまりいいとは思えないな
569 名前:nobodyさん mailto:sage [2008/04/02(水) 19:08:08 ID:???] OpenFLP Rails 製のオープンソース版 Fastladder モデル 382steps コントローラー 910steps コントローラーに処理書きまくってるんですが。。。
570 名前:nobodyさん mailto:sage [2008/04/02(水) 19:09:00 ID:???] じゃあ本家railsのソースコードみせてやる
571 名前:nobodyさん mailto:sage [2008/04/02(水) 19:11:13 ID:???] コントローラに処理を詰め込みが正論か非か オープンソース見れば、すぐわかることだからな
572 名前:nobodyさん mailto:sage [2008/04/02(水) 19:15:29 ID:???] オープンソースといってもその質はピンキリだから > じゃあ本家railsのソースコードみせてやる おいっ! railsはフレームワークだ。 もともとビジネスロジックは含まれてない!
573 名前:nobodyさん mailto:sage [2008/04/02(水) 19:18:52 ID:???] >>567 全部コントローラで出来るし それをCakePHPでやる意味がわからんw
574 名前:516,522 [2008/04/02(水) 19:46:05 ID:Ldo05SB7] >>573 あー、「全部コントローラで出来るし」って言ってる時点でプロフェッショなるじゃないことが確定www 議論しても理解できないんだろうな、「できる/できない」ということと「(プロとして)やるべき/べからず」 といった本質的な点をwww コントローラでも全部やろうと思えばできることくらいわかっとるわいwww
575 名前:nobodyさん mailto:sage [2008/04/02(水) 19:58:32 ID:???] >>574 CakePHPでやることじゃないことは確かwww
576 名前:nobodyさん mailto:sage [2008/04/02(水) 21:14:45 ID:???] ビジネスロジックはモデルに集約すべき 議論としては面白い 俺もその辺気になってた まあ俺はbakeしたコードの拡張から入ったクチだから全部controllerに書いちゃうけどなwww
577 名前:nobodyさん mailto:sage [2008/04/02(水) 21:37:43 ID:???] >>576 俺もコントローラに書いてしまったけど、 作り続けていくうちに、なんか無理が出てくるんだよ。 なんでこんなに作りづらいんだ?って思っていたときに このスレにあった、ケーキの絵。あれで悟りを開けた気がする。 あぁモデル中心でやればいいんだって。
578 名前:nobodyさん mailto:sage [2008/04/02(水) 21:58:22 ID:???] >>577 その絵ってどれ?
579 名前:nobodyさん mailto:sage [2008/04/02(水) 21:58:46 ID:???] >>562 モデルに書けって言うけど、何を書くの? 関数で書けばいいの?モデル内のメソッドとして? >>565 の言うとおり、実例も無いし具体的なメリットが分からない。 今のところテストが楽って事はなんとなく分かった。
580 名前:nobodyさん mailto:sage [2008/04/02(水) 22:16:06 ID:???] >>578 これの3ページ目 cakephp.org/files/OCPHP.pdf
581 名前:nobodyさん mailto:sage [2008/04/02(水) 22:19:41 ID:???] > 関数で書けばいいの?モデル内のメソッドとして? モデル = ビジネスロジック用のクラス なんだから、言うまでも無くメソッドだろ
582 名前:nobodyさん mailto:sage [2008/04/02(水) 22:22:03 ID:???] >>580 ありがとう,でもコントローラーよりモデルに重点おけよという一言で済む話かw
583 名前:nobodyさん mailto:sage [2008/04/02(水) 22:26:19 ID:???] >>581 そうすると、どう幸せになれるわけ?
584 名前:nobodyさん mailto:sage [2008/04/02(水) 22:27:49 ID:???] >>583 どう幸せになるかではなく、 どう幸せになりたいか。 貴方はプログラミングする上で、どうなったら幸せだと感じる?
585 名前:nobodyさん mailto:sage [2008/04/02(水) 22:57:59 ID:???] railsはコントローラーに重点を置くようになってるのではなぜ?
586 名前:nobodyさん mailto:sage [2008/04/02(水) 23:14:04 ID:???] >>574 自分の安価間違ってね?516と522で筋が通ってない
587 名前:nobodyさん mailto:sage [2008/04/02(水) 23:53:19 ID:???] >>585 railsでもモデルが一番重要なものですよ。
588 名前:nobodyさん mailto:sage [2008/04/03(木) 00:17:09 ID:???] モデルが一番重要なんてCakePHPだけの話 松本に話したら鼻で笑われたよ
589 名前:nobodyさん mailto:sage [2008/04/03(木) 00:38:13 ID:???] 松本といっても鼻の長いゾウをキャラクターにしている会社の松本だけどなw
590 名前:nobodyさん mailto:sage [2008/04/03(木) 00:48:42 ID:???] でもキリンさんも好きなんだろ?
591 名前:nobodyさん [2008/04/03(木) 10:10:52 ID:Z1Ohe4yI] ビヘイバ話はおわったのか?
592 名前:nobodyさん mailto:sage [2008/04/03(木) 11:26:08 ID:???] Model は特定の環境に依存しない処理を行う部分である。
593 名前:nobodyさん mailto:sage [2008/04/03(木) 12:10:16 ID:???] たとえばの話なんですが、 1.フォームから画像ファイルをアップロード 2.アップロード結果・画像ファイルの不正検知 3.2が成功時、元画像名をmd5したものをuploadsフォルダに保存 4.3のファイル名をimage_fileカラムに格納 という一連の処理があったばあい、 今現在はコントロールとコンポーネントに書いてますが、 モデルとビヘイビアに書くとしたら、 2->バリデータに記述 3->ビヘイビア 4->モデル という感じなんでしょうか?
594 名前:nobodyさん mailto:sage [2008/04/03(木) 12:26:23 ID:???] ビヘイビアて1.2からだろ、 最初から無いってことは必要性が薄いてことだよな
595 名前:nobodyさん mailto:sage [2008/04/03(木) 12:32:04 ID:???] ソースが読みやすければコントローラーで全部書いてもいいし モデルに書いて読みにくくなるなら、書かない方がいい 結局はソースを読みやすくするために分けてるだけの話
596 名前:nobodyさん mailto:sage [2008/04/03(木) 12:32:23 ID:???] 画像アップロードできるビヘイビアあるよ。 正確には画像を保存できるビヘイビアだけどね bakery.cakephp.org/articles/view/actas-image-column-behavior
597 名前:nobodyさん mailto:sage [2008/04/03(木) 12:50:28 ID:???] 結局はソースを見やすくする為にある。 一番見やすいソースとは、なるべく何も書かないこと。 画像をアップロードして保存というのは、本質的には テーブルに画像フィールドを作ってそこに格納することと変わらない。 だからフィールド追加作業以外は、一切処理を変更しないで 作れるというのが一番理想的。 ビヘイビアを使えば、>>596 のようにActsAsにわずかなフィールド情報を 設定して終わりだけど、その他の方法でここまでスマートに作れるかな?
598 名前:593 mailto:sage [2008/04/03(木) 13:32:44 ID:???] >>596-597 ありがとうございます。 こりゃ1.2にチャレンジしなきゃだな
599 名前:nobodyさん [2008/04/03(木) 13:49:15 ID:Z1Ohe4yI] >ビヘイビアて1.2からだろ、 >最初から無いってことは必要性が薄いてことだよな 正確には1.1の頃からビヘイビアのディレクトリは用意されてたんだよな。 おそらく必要性はあったのだけど、1.1.xのステイブル版までに実装できなかっただけなのでは?
600 名前:nobodyさん mailto:sage [2008/04/03(木) 14:22:02 ID:???] railsにはビヘイビア相当になるものが無いんだが、どうして
601 名前:nobodyさん mailto:sage [2008/04/03(木) 15:14:18 ID:???] ビヘイビアてベネズエラにいる俺の愛人と同じ名前だ
602 名前:nobodyさん mailto:sage [2008/04/03(木) 15:38:42 ID:???] >>600 Rubyではmixinという言語機能でビヘイビア相当のことが出来るから。
603 名前:nobodyさん mailto:sage [2008/04/03(木) 17:41:48 ID:???] マニュアル»CakePHPによる開発»Models»Introduction book.cakephp.org/ja/view/67/introduction > Model behaviors provide a way to mix in functionality へぇ、behaviorsはmix-in的な機能を提供するものだったんだ。なるほど。
604 名前:nobodyさん mailto:sage [2008/04/03(木) 18:10:28 ID:???] >>603 きちんとした日本語訳サイトあるのに。。。
605 名前:nobodyさん mailto:sage [2008/04/03(木) 18:23:11 ID:???] >>604 どこに?
606 名前:nobodyさん [2008/04/04(金) 20:03:22 ID:GG6uDHIa] わっふるわっふる
607 名前:nobodyさん mailto:sage [2008/04/05(土) 04:54:50 ID:???] cakeでのMC棲み分け例としては以下がありますよね。 個人的にはいい感じだと思いましたが、どうでしょう? CakePHPを使ったMVC設計のベストプラクティス ttp://www.sooey.com/journal/2008/03/26/717/
608 名前:nobodyさん mailto:sage [2008/04/05(土) 05:21:49 ID:???] MVCモデルのMが重要なのはデータ加工の多いWEBだけのはなしであって MVCモデル全般的な考えではない
609 名前:nobodyさん mailto:sage [2008/04/05(土) 05:24:58 ID:???] データをあまり使う必要のないWINアプリを MVCモデルでわけた場合はCが中心となる
610 名前:nobodyさん mailto:sage [2008/04/05(土) 09:45:41 ID:???] Web用のフレームワークのスレで何言ってんだこいつw
611 名前:nobodyさん mailto:sage [2008/04/05(土) 15:00:48 ID:???] MVCのVが重点となるソフトをあげてみよ
612 名前:nobodyさん mailto:sage [2008/04/05(土) 15:07:51 ID:???] rails発のMVCモデルはMがDBと密接な関係であるが 最強のモデルとは思っていない。 最適なモデル構造というには、まだまだ完成度が低いとrails作者は言っている
613 名前:nobodyさん mailto:sage [2008/04/05(土) 15:49:00 ID:???] >>607 面白いけど これ通りに書いたら一覧性下がりそうだな 大規模なら修正には強くなりそうだね まずは体に叩き込んでみるのがいいのか
614 名前:nobodyさん mailto:sage [2008/04/05(土) 20:57:16 ID:???] >>611 > MVCのVが重点となるソフトをあげてみよ 静的なウェブページ
615 名前:nobodyさん mailto:sega [2008/04/07(月) 17:32:08 ID:???] ゆくゆくはcake使いたいけどあと8時間くらいしか時間ないし 今は勉強してる暇も無いからとりあえず平で書く ってときに、最低限これだけ守ってコード書いとけば あとでcakephpを使いたくなってもまあなんとかなるよ という ポイントを教えて
616 名前:nobodyさん mailto:sage [2008/04/07(月) 17:50:23 ID:???] Cake同様のライブラリが揃ってるってなら、そんな事も可能だと思うが・・。 無理じゃね
617 名前:nobodyさん mailto:sage [2008/04/07(月) 18:06:48 ID:???] データベースの主キーはIDだけにしておく
618 名前:nobodyさん mailto:sage [2008/04/07(月) 18:28:13 ID:???] それはコードなんだろうか とにかく規約ぐらい把握しないと無理だよね 結局出来るのはDBの設計ぐらいじゃないかと コードも処理部分は多少使いまわせるだろうけど
619 名前:nobodyさん [2008/04/09(水) 22:36:27 ID:0zi6cM/k] CakePHP内でfindAll、findAllByを使っていますが、重いのでチューニングできないかと 考えています。 それで、実際に発行されているSQLと、可能であればアクセスパスを確認したいの ですが、なにか方法がありますでしょうか。
620 名前:nobodyさん mailto:sage [2008/04/09(水) 23:44:43 ID:???] デバッグモードを2に変更。実行したsqlが見れます
621 名前:619 [2008/04/10(木) 00:04:23 ID:ysAxvq3P] >>620 確認できました! ありがとうございます。
622 名前:nobodyさん mailto:sage [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`)' => ***) ←ここ ) . . . )
623 名前:nobodyさん mailto:sage [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にだけ対応していればいいのなら、問題ないけどね。
624 名前:nobodyさん mailto:sage [2008/04/10(木) 11:29:33 ID:???] >>623 レスありがとうございます alias噛ませる方法は私も試してみたのですが FROM `bars` AS `Bar`の宣言と被っているためエラーが返ってきます。 hasManyで繋がっている集計先テーブルの条件指定なども追加したい場合 CakePHPの作法だとどのようにするべきなのでしょうか?
625 名前:nobodyさん mailto:sage [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にしろ始めたばっかで全然わからないや。
626 名前:nobodyさん mailto:sage [2008/04/10(木) 15:04:31 ID:???] >>625 Post -> User -> Group という順番に適切なアソシエーションが設定されていれば、芋づる式にデータは取ってこれる。 やってるけど分からないなら>>620 が書いているように、デバッグモードをonにしたほうがいい。 その質問の仕方だと、何をどこまでやって分からないのか分からない。
627 名前:nobodyさん mailto:sage [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); って感じかな
628 名前:nobodyさん mailto:sage [2008/04/10(木) 22:25:44 ID:???] まあ、SUMつかったせいで、 どこのモデルのデータかという情報が消えてしまい、 0という名前のモデル名になるってだけで おかしいわけじゃないんだけどな。 今回はBar.hogeのSUMだからモデル名はBarになるべきだと 思うかもしれないけど、SUM(`Foo`.`hoge` + `Bar`.`hoge`) という 書き方だって出来るわけだし。
629 名前:nobodyさん mailto:sage [2008/04/11(金) 00:29:36 ID:???] なるほどなんで0になるんだとか悩んでた しかし、扱いにくいのはたしかなんだよね
630 名前:nobodyさん mailto:sage [2008/04/11(金) 01:18:44 ID:???] BakeとかBakeryとかCheeseCakeなんていう、楽しげな製菓製パン用語の中にあって、 Scaffoldなんていう土建屋みたいなネーミングはいかがなものかねぇ。 いくらRoRのパクリとはいえ、違う名前でもよかったんじゃないかな。 なぁんて、チラシの裏w。
631 名前:nobodyさん mailto:sage [2008/04/11(金) 01:32:12 ID:???] じゃあスポンジケーキ?
632 名前:nobodyさん mailto:sage [2008/04/11(金) 01:40:16 ID:???] >>625 私も初心者ですが、私の場合はVIEWの最後に、 <?php print_r($post); ?> というデバッグ出力を出して確認しながらやってます。 あ、確認は「ソースの表示」をした方が分かり易いかも。 秀丸など、UTF8等のキャラクタセットに対応するエディタが必要ですが。
633 名前:nobodyさん mailto:sage [2008/04/11(金) 02:27:45 ID:???] Vista以降はもう NET Framework 3.0がWEBサイト最強のフレームワークになるな PCのWEBサイトはC#じゃないと追いつけないわ そしてPHPなどの下級言語は携帯サイトでしか使用されなくなる
634 名前:nobodyさん mailto:sage [2008/04/11(金) 02:39:04 ID:???] Windows Server 2008の発売で asp.netの注目度がかなり上がってる どう考えてもPHPから3Dにも強いasp.net(C#)に移行するだろうな
635 名前:nobodyさん mailto:sage [2008/04/11(金) 02:40:09 ID:???] CakePHPなんてやってる場合じゃないぞ 時代遅れ君たち
636 名前:nobodyさん mailto:sage [2008/04/11(金) 04:43:59 ID:???] なんだ? いきなりこいつは? 話ズレまくりで滑ってるな。
637 名前:nobodyさん [2008/04/11(金) 04:57:27 ID:OBoZ/5C8] >>635 代わりに、なにがいま時代の最先端なの?
638 名前:nobodyさん mailto:sage [2008/04/11(金) 13:47:57 ID:???] 世間で何が流行ろうと、CakePHPはCakePHPでいいじゃん。 別に、すでにCakePHPで作ったものをC#に置き換える必要は ないんだし。
639 名前:nobodyさん mailto:sage [2008/04/11(金) 15:17:40 ID:???] C#で作ったって動かないサーバーが多いしな。
640 名前:nobodyさん mailto:sage [2008/04/11(金) 17:09:12 ID:???] 先輩がた教えて下さい。 mysql の max 関数を使うには cakephp ではどのようにすればよいでしょうか。 よろしくお願いします。
641 名前:nobodyさん mailto:sage [2008/04/11(金) 22:44:28 ID:???] $this->モデル名->クエリ(SQL文、false);
642 名前:nobodyさん mailto:sage [2008/04/11(金) 23:41:35 ID:???] queryは普通使わないだろw findといえ
643 名前:nobodyさん mailto:sage [2008/04/12(土) 13:37:27 ID:???] >>642 自分も、するんだったらクエリ発行するしかないと思ってたんだけど、 使った事がないので書かなかった。 findでmax関数ってできるの?
644 名前:nobodyさん mailto:sage [2008/04/12(土) 14:39:58 ID:???] >>632 <?php echo pr($post) ?> がおすすめ
645 名前:nobodyさん mailto:sage [2008/04/12(土) 15:57:22 ID:???] >>643 $this->Model->find('all',array('fields'=>array('MAX(id)'))); >>644 <?php pr($post) ?>でいいよ
646 名前:nobodyさん mailto:sage [2008/04/12(土) 16:42:32 ID:???] cakeって、queryを使ったら死刑!くらいの気持ちが無いと駄目なの?
647 名前:nobodyさん mailto:sage [2008/04/12(土) 19:44:31 ID:???] だってqueryってSQL直で発行だよ? せっかく、CakePHPのデータベース用ドライバが、 RDBMS間の差を吸収しているのに フレームワーク使っている意味半減するじゃん。
648 名前:nobodyさん mailto:sage [2008/04/12(土) 21:28:23 ID:???] >>635 ある意味正解!だがまだ時代が追いついてきていない。 やっぱO/Rマッピングでは無理があるということだ C#も3.0の言語仕様拡張で突き抜けた感があるしね LINQとかラムダ式とかJavaの真似っこでない次元に到達した。 でも現状は糞言語PHPで本当に馬鹿みたいなコーディングするしかないけどな。
649 名前:nobodyさん mailto:sage [2008/04/12(土) 21:50:24 ID:???] >>648 中身がまったくない。知っている用語を羅列しただけ 自作自演の可能盛大。0点。出直しましょう。
650 名前:nobodyさん mailto:sage [2008/04/12(土) 21:53:16 ID:???] >>647 >> RDBMS間の差を吸収しているのに 一つのシステムに複数のRDBMSを跨ぐ様な事なんて殆どないけどな。 まぁ、極力queryを使わないほうがいいのは同意。
651 名前:nobodyさん mailto:sage [2008/04/12(土) 21:55:24 ID:???] 同じコードで、いろんなデータベースに 対応できるってことを言っているんだろ。馬鹿か。
652 名前:nobodyさん mailto:sage [2008/04/12(土) 22:14:35 ID:???] 素直にRailsつかったらいいのに
653 名前:nobodyさん mailto:sage [2008/04/12(土) 22:22:03 ID:???] railsかぁ。二年ぐらい前なら、それだけの価値はあったかもしれないが。
654 名前:nobodyさん mailto:sage [2008/04/12(土) 23:15:20 ID:???] DBにべったりガッツリ依存しまくってるフレームワークってないのかな 割り切った設計で可能な限り使いやすさと速度の両立を目指すという
655 名前:nobodyさん mailto:sage [2008/04/12(土) 23:24:15 ID:???] そのRailsだって難しい事はSQL直発行しろってスタンスだろ Zendに至ってはプレースホルダのSQL直発行がメイン findごときで収まるクエリだけなら世話ねーの
656 名前:nobodyさん mailto:sage [2008/04/13(日) 00:28:23 ID:???] だからむずかしいことだけSQL発行すればいいんだよ。 Zendの場合、O/Rマッパーそのものがない。 あれはフレームワークというよりライブラリだから。
657 名前:nobodyさん mailto:sage [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;'));
658 名前:nobodyさん mailto:sage [2008/04/13(日) 13:07:44 ID:???] <form action="/コントロール名/アクション名/" method="POST"> <input type="submit" value="検索"> 入力欄は$html->inputなどを使う事
659 名前:658 mailto:sage [2008/04/13(日) 13:18:37 ID:???] action="<?= $html->url('/コントローラ名/コントローラメソッド名')" だった。すいません
660 名前:657 mailto:sage [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']; (以下略) として対処する事にしました。
661 名前:nobodyさん mailto:sage [2008/04/13(日) 19:11:09 ID:???] >>651 同じコードで、いろんなデータベースに対応できるから極力queryを使わないほうがいいって言ってんだろ。馬鹿か。
662 名前:nobodyさん mailto:sage [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'=>' ')); ?>
663 名前:nobodyさん mailto:sage [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をつけるといけると思う。
664 名前:nobodyさん mailto:sage [2008/04/14(月) 17:25:15 ID:???] radioでvalueつけると、二つ目にチェック入れて 入力エラーで戻ってきたときに、 また一つ目がチェックされるのよね。
665 名前:nobodyさん [2008/04/15(火) 00:36:29 ID:kB0aZEdA] Cake1.2でのAuthComponentの使い方などで、なにか良いチュートリアルがあれば教えていただけませんかー? もし可能であれば、ACLのうまい活用の仕方もわかると嬉しいです ペコリ
666 名前:662 mailto:sage [2008/04/15(火) 01:18:18 ID:???] >>663 inputの例を参考に、2つ目のarrayに'value'=>'1'を追加して、うまく行きました。 ありがとうございます。
667 名前:nobodyさん mailto:sage [2008/04/16(水) 13:10:23 ID:???] Ver1.2でshellsの中でコンポーネント使うにはどすればいいの?
668 名前:nobodyさん mailto:sage [2008/04/16(水) 16:28:26 ID:???] App::importでなんでもござれだが、 そもそもshellsの中でコンポーネントを使うのが問題ではないのか? コンポーネント = コントローラの汎用的処理、 つまり処理の内容はコントローラそのものなわけで、 シェルの中からコントローラを呼び出すというのがちょっと疑問な処理。 コントローラの処理にリダイレクトするという考えでrequestActionを 呼び出すという考えもありとは思うが、 そもそもそれはモデルにおくべき処理なのかも知れないぞ。 ちなみにシェルからモデルを扱うには、usesプロパティを使用するだけでOKだ!
669 名前:nobodyさん [2008/04/17(木) 18:54:40 ID:YR2rN8Sk] ところでみんなはShellsはどんな使い方してるの? 俺の場合は、定期的にcronで叩いて、指定ディレクトリに生成された大量の一次データをDBに取り込む作業、とか。
670 名前:nobodyさん mailto:sage [2008/04/17(木) 19:48:58 ID:???] 今日はじめてcakeつかったけどさ、mysqlのセキュリティを下げないとつかえないじゃん オワタ
671 名前:nobodyさん mailto:sage [2008/04/17(木) 21:32:22 ID:???] 釣りに嘲笑レスだが、セキュリティを下げるって何したの?w
672 名前:nobodyさん mailto:sage [2008/04/17(木) 21:35:44 ID:???] >>669 旧システム(フレームワーク未使用)から新システム(CakePHP)への データコンバートに使った。 あとは簡易なツールかな。たとえば入力した単語の単数形⇔複数形 などをするツール。
673 名前:nobodyさん mailto:sage [2008/04/17(木) 21:42:54 ID:???] >>671 これが釣りに見えるとは・・ おまえの知識がよくわかるわ #sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
674 名前:nobodyさん mailto:sage [2008/04/17(木) 22:03:43 ID:???] 知識うんぬん以前に、お前何も言ってないじゃん。 セキュリティを下げるというだけで、それ以外のまともな情報が何もない。 だから馬鹿にされるんだよ。 で、それのどこがセキュリティ下げてることになると思ってんの?w 互換性とセキュリティの違い、理解しようね。
675 名前:nobodyさん mailto:sage [2008/04/17(木) 22:25:09 ID:???] >>674 ( ゚д゚)ポカーン
676 名前:nobodyさん mailto:sage [2008/04/17(木) 23:10:06 ID:???] >>673 どういう意味? sql-modeをこれに設定したって事?
677 名前:nobodyさん mailto:sage [2008/04/18(金) 00:13:14 ID:???] >>676 に書いてあることがコメントされずに初期設定されている これをコメントアウトすることによってセキュリティを甘くせざるを得ないわけよ このモードをはずさないとcakeのコードからワーニングがでる。 cakeに潜んでるバグで作者は修正予定らしい
678 名前:nobodyさん mailto:sage [2008/04/18(金) 00:16:50 ID:???] >>676 横レスですまんが、すっげぇ要するにMySQL5系の設定で STRICT_TRANS_TABLESを指定していると、SQLの構文チェックを 厳密にするんだけど、このままだとCakePHPの吐くSQL自体でエラーが出るんよ。 んだから今の所は構文チェックを緩くしないとCakePHPが動作しないって事。 >>670 の説明で分かった奴はエスパー。
679 名前:676 mailto:sage [2008/04/18(金) 00:24:11 ID:???] >>678 の説明でようやく分かったw
680 名前:nobodyさん mailto:sage [2008/04/18(金) 00:33:10 ID:???] 名無しのままでいいからもっといじったほうがいいよ676さんは
681 名前:nobodyさん mailto:sage [2008/04/18(金) 00:34:11 ID:???] 1.挨拶を自分からしない・できない・やろうと思わない 2.リアルではおとなしいのにネット上では態度がでかい。 3.自分の意見で地球が動いてると思ってる。自分の意見はみんなの意見。 4.自分に非があってもスグ言い訳、逆切れ。他人を攻撃する。威嚇することで自分の弱さを隠している。
682 名前:nobodyさん mailto:sage [2008/04/18(金) 01:17:05 ID:???] >>678 つまり、セキュリティの問題じゃないってこと?
683 名前:nobodyさん mailto:sage [2008/04/18(金) 01:18:01 ID:???] >>682 つまり、日本語わかるか?
684 名前:nobodyさん mailto:sage [2008/04/18(金) 01:18:11 ID:???] っていうか、MySQLの仕様変更だし。 CakePHPのバグでもセキュリティの問題でもない。
685 名前:nobodyさん [2008/04/18(金) 01:27:47 ID:UgH30Z6m] アホが大量発生しとりますな。 CakePHPとはスレ違いだし
686 名前:nobodyさん mailto:sage [2008/04/18(金) 01:28:35 ID:???] まあ、>>670 がアフォってことでいいじゃんかw
687 名前:nobodyさん mailto:sage [2008/04/18(金) 01:46:12 ID:???] >>673 のsql-modeの値がデフォルトになっているのは、 Windows板でインストーラーを使ってインストールした場合のみ。 本当のデフォルトの値は厳密モードじゃありません。 いい加減Windowsは卒業しろよw
688 名前:nobodyさん mailto:sage [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なー。
689 名前:nobodyさん mailto:sage [2008/04/18(金) 04:25:34 ID:???] それってセキュリティとは言わないと思う
690 名前:nobodyさん mailto:sage [2008/04/18(金) 04:45:08 ID:???] .thtml 派? .ctp派? 今でもぼくは .thtml 派。
691 名前:nobodyさん mailto:sage [2008/04/18(金) 08:30:04 ID:???] >>690 1.1系から乗り換えた当初は.thtmlにこだわってたけど(てか気づかなかった…) .ctpに切り替えたら1日で慣れた やっぱり5文字の拡張子は長すぎるよね
692 名前:nobodyさん mailto:sage [2008/04/18(金) 08:37:15 ID:???] >>689 だから広義の意味っつってんじゃん。日本語理解できてる? Perlでコードの安全性を高めるためにuse strict;するのと一緒だよ
693 名前:nobodyさん mailto:sage [2008/04/18(金) 09:07:33 ID:???] >>691 レスまんくす! では、僕も次のサイト作りから ctp 派 になります♪
694 名前:nobodyさん mailto:sage [2008/04/18(金) 09:12:53 ID:???] >>692 広義の意味でもセキュリティの問題じゃない。 俺俺定義すんなw
695 名前:nobodyさん mailto:sage [2008/04/18(金) 09:15:03 ID:???] >>692 広義といえばどんな主張でも通ると思ってる厨房発見。
696 名前:nobodyさん mailto:sage [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 を与えるしかないのでしょうか? 入力項目がいっぱいあるとめちゃくちゃ大変な気がするのですが…。
697 名前:nobodyさん mailto:sage [2008/04/18(金) 16:19:29 ID:???] findByなどで、hasManyでくっついてきたレコード数をカウントしたい場合、 どのようにすればよいのでしょうか?
698 名前:nobodyさん mailto:sage [2008/04/18(金) 18:21:08 ID:???] 1.1系でmode内でorderとかconditionを設定できないの? class Post extends AppModel { protected $order = "Post.created DESC"; とかでfindしても駄目なんです。
699 名前:698 mailto:sage [2008/04/18(金) 18:21:29 ID:???] すいませんmodel内でです
700 名前:698 mailto:sage [2008/04/18(金) 19:03:12 ID:???] もう少し分かりやすく言うと、モデル内でSQLの検索条件(where句)に縛りを入れたいです。
701 名前:nobodyさん mailto:sage [2008/04/18(金) 19:27:37 ID:???] うっ・・・だめ。もう・・もう・・・もうでる。 モデル
702 名前:nobodyさん mailto:sage [2008/04/18(金) 19:50:15 ID:???] モデル内に function find_name_only($cond = "name like '%tarou%'"){ return $this->findAll($cond); } を書いてごまかしてみました。 ほかにいい方法があるのでしょうか?
703 名前:nobodyさん mailto:sage [2008/04/18(金) 20:00:26 ID:???] >>696 まだ始めて2週間しかたってないけど。 form.thtml <?php echo $html->input('Form/name'); ?> で、どう? あと、$this->set('data',$this->data); は、要らないとおも
704 名前:nobodyさん mailto:sage [2008/04/18(金) 20:05:29 ID:???] >>697 count( $model['Model']['HasManyModel'] ) かな?
705 名前:697 mailto:sage [2008/04/18(金) 21:22:22 ID:???] >>704 これは取り出した後で、PHPのcount関数で配列の要素数をカウント、ということでしょうか? そうではなくて、 たとえばfindAllするときに取得順などにHasManyModelのカウント数を使いたいのですが。 質問の文章がわかりづらくて申し訳ありません; よろしくお願いします。
706 名前:nobodyさん mailto:sage [2008/04/18(金) 21:42:58 ID:???] >>705 おそらく、自分でクエリを書かないといけないでしょうね。
707 名前:697 mailto:sage [2008/04/18(金) 21:47:07 ID:???] >>705 やはりそうですか; せっかくフレームワークを使っているのでできればクエリは書きたくないですね・・・ UsersをPostsの多い順に並べ替える、など、結構よく登場すると思うのですが;
708 名前:nobodyさん mailto:sage [2008/04/19(土) 01:00:18 ID:???] > UsersをPostsの多い順に並べ替える、 やってないけど、これは、findAllの条件にexistsなんたらって書いて countだせばいいとだろうから、一応findAllは使えるな。 半分ぐらいしか意味ないけど。
709 名前:nobodyさん mailto:sage [2008/04/19(土) 01:16:45 ID:???] >>707 それか、1回データを取り出した後で件数をキーにした連想配列に入れかえるのはどうでしょうか。 配列の添え字を、 $array[$count .' - ' .$id] こんな感じにして配列をソートしたら出来そうですが。
710 名前:nobodyさん mailto:sage [2008/04/19(土) 10:26:43 ID:???] >>707 > UsersをPostsの多い順に並べ替える、など、結構よく登場すると思うのですが; ちょうど同じような事例を考えていた。 顧客とその顧客の取引データが一対多でつながっている場合に 取引が多い顧客を見たいと。 で、いろいろ考えたんだが、顧客数や取引が多くなると重くなりそうなので、 (だって内部的には顧客ごとにデータ数えて、その数でソートするんだろう!?) 非正規化することになるが、顧客データの中に取引数フィールドを作ることにした。 あとは取引データ保存時、つまりモデルのafterSave時に、 顧客テーブルの取引数フィールドをいじればいいと。 フレームワークを使っているとこういうトリガー的なことを データベースに依存せずにやれるから良いね。
711 名前:697 mailto:sage [2008/04/19(土) 11:37:16 ID:???] >>ちょうど同じような事例を考えていた。 奇遇です! なるほど・・・あえて非正規化する、と。 手元にある参考書に 「処理効率を考えて、あえて非正規化することもある」 と書いてあった意味がわかりました。 たしかに、毎回自分でクエリ書くのに比べたら、 冗長なデータを持っておくくらい、なんてことないですね! 目からウロコでした!
712 名前:nobodyさん mailto:sage [2008/04/19(土) 11:39:14 ID:???] DB使ってる意味ねぇw
713 名前:697 mailto:sage [2008/04/19(土) 11:50:08 ID:???] >>712 では、他に何かいいアイデアがあるのですか?
714 名前:nobodyさん mailto:sage [2008/04/19(土) 12:22:29 ID:???] 俺は自分でクエリを書いたほうが断然面白い。
715 名前:nobodyさん mailto:sage [2008/04/19(土) 12:31:41 ID:???] 1.2を入れてみたのですが、 function index() { $data = "テスト"; $this->set('data', $data); } とやっただけで Allowed memory size of xxx bytes exhausted ... が出てしまいます; CakePHP叩きではなく、本当に困っています。 対処法を教えてください。
716 名前:nobodyさん mailto:sage [2008/04/19(土) 12:38:01 ID:???] >>715 その程度のコードで、そのエラーが出るときは、 基本的にバグだと思ったほうが良い。 まあ環境のせいもあるからとりあえず聞くけど、 OSとPHPのバージョンと、php.iniの設定(もしくはini_get('memory_limit'))の値) function index() { echo 'aaa';exit; } とやるとどうなるか。 index()以外のコードはどうなっているか。
717 名前:nobodyさん mailto:sage [2008/04/19(土) 12:42:21 ID:???] >>712 > DB使ってる意味ねぇw DB使うことが目的じゃないからね。 DBは所詮データの保存先に過ぎないし。
718 名前:715 mailto:sage [2008/04/19(土) 12:47:34 ID:???] >>716 レスありがとうございます。 どうやらbakeで生成したビューをそのまま使っていたことが原因だったようです; スレを汚してしまってすみません;;
719 名前:nobodyさん mailto:sage [2008/04/19(土) 13:08:09 ID:???] >>717 じゃファイルベースでやりゃいいじゃん。やらない理由は?
720 名前:nobodyさん mailto:sage [2008/04/19(土) 14:35:19 ID:???] CakePHP でPEARを使うとき 依存PEARがうまく発見できないのですが、 どうすればよいのでしょうか? php.iniのinclude_pathには app/vendorsを追加してあります。
721 名前:nobodyさん mailto:sage [2008/04/19(土) 17:44:54 ID:???] >>719 > じゃファイルベースでやりゃいいじゃん。やらない理由は? フレームワークがファイルベースに対応していないから。 (読み書きできないということではなく、モデルが対応していないということ)
722 名前:720 mailto:sage [2008/04/19(土) 18:05:22 ID:???] すんません; 事故解決しました。
723 名前:nobodyさん mailto:sage [2008/04/19(土) 19:37:01 ID:???] >フレームワークがファイルベースに対応していないから。 ユーザが自由に選択することもできないってこと? 強制的にDB使用? CakePHP糞FWすぎるwwwww
724 名前:nobodyさん mailto:sage [2008/04/19(土) 20:20:16 ID:???] 流れ読まずにすみません。 CakePHPで作られてるサイトで有名なところを見てみたいのですが、 教えていただけませんか? たしかNiftyのなんかがCakeだと聞きましたが・・・
725 名前:nobodyさん mailto:sage [2008/04/19(土) 21:00:48 ID:???] mozillaのサイトとか
726 名前:nobodyさん mailto:sage [2008/04/19(土) 23:46:04 ID:???] >>723 君頭大丈夫かね? CakePHPは別にデータベースを使用する必要は無い。 ただデータベースを使ったほうが効率がいいだけだ。 それがファイルベースでやらない理由。 どうやら君は素人なのだろう。
727 名前:nobodyさん mailto:sage [2008/04/20(日) 00:01:18 ID:???] >>711 非正規化は、一般的な業務システムでもよくやるな。 ただ、明らかに正規化をさぼってて、テーブルのカラム数が100個超えているのを 「性能を考えて非正規化している」と言い張る人はカンベンしてほしい。 あぁごめん。cakePHPの話から逸脱した。 >>723 どこか忘れたけど、コントローラあたりの設定で、DBを使わないようにもできたはず。 だれか補足頼むw 特殊な使い方でもしない限り、あんましメリットはなさそうだね。
728 名前:nobodyさん mailto:sage [2008/04/20(日) 00:32:54 ID:???] >>726 相手を見下さないと精神を保てない糞FWユーザ涙目www
729 名前:nobodyさん mailto:sage [2008/04/20(日) 00:33:33 ID:???] 図星だったのか? その反応は。
730 名前:nobodyさん mailto:sage [2008/04/20(日) 00:34:22 ID:???] モデルが貧弱なCodeIgnitorよりは CakePHPの方が実用的に見て優れているな。
731 名前:nobodyさん mailto:sage [2008/04/20(日) 00:46:44 ID:???] >>728 フレームワークに問題が無い話をしているのに 糞FWとか言っているようじゃ 説得力皆無だゾ
732 名前:nobodyさん mailto:sage [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は機能が少ない分、実装がシンプルで軽いのが特徴なんだから、 機能的に足りていれば、そっちでもいいでしょ。
733 名前:nobodyさん mailto:sage [2008/04/20(日) 01:35:00 ID:???] ちいたん最強
734 名前:nobodyさん [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の場合。
735 名前:nobodyさん mailto:sage [2008/04/21(月) 16:34:17 ID:???] PhpNutいなくなっちゃったの?
736 名前:734 mailto:sage [2008/04/21(月) 19:37:53 ID:???] よく考えたら、ロックされるほうが正しいのか。 アクセスしたユーザーはロックされるが 他の人(ようするにセッションファイルが違う人)は ロックされないようだ
737 名前:nobodyさん mailto:sage [2008/04/22(火) 13:08:38 ID:???] 初歩的な質問で申し訳ありません。 bakeで作ったコントローラをみると $this->Session->setFlash(__('hogehoge.', true)); のようなコードがありますが この__() や後ろのtrueは何を意味しているのでしょうか? もしかするとcakePHPに限ったことではないかもしれませんが、 よろしくお願いします。
738 名前:nobodyさん mailto:sage [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関数の別名として_()関数が使用できる。 jp.php.net/manual/ja/function.gettext.php CakePHPではこのやり方を独自に拡張しており、 関数名がアンダーバー二つになっている。
739 名前:nobodyさん mailto:sage [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 を直接翻訳ファイルとして使える。
740 名前:nobodyさん mailto:sage [2008/04/22(火) 18:29:42 ID:???] >>737 いい質問。俺も初めてしった。 >>738 ,739 素敵だわぁ
741 名前:737 mailto:sage [2008/04/22(火) 18:43:22 ID:???] >>738-9 丁寧なレスをありがとうございます。 CakePHPにはまだまだ知らない機能があるんですね。 いろいろ楽しみです。
742 名前:737 mailto:sage [2008/04/22(火) 18:44:53 ID:???] アンカーの付け方間違えました・・・ マウスオーバーしないようにお願いします;;
743 名前:739 mailto:sage [2008/04/22(火) 18:56:32 ID:???] 一つ言い忘れた。.pot .po .mo とかの .で始まるやつは ドットで始まるファイルではなく、拡張子という意味で書いた。 デフォルトではdefault.poやdefault.mo になる。 それぞれのファイルのdefaultの部分を変更することも可能。 abc.mo の場合、その場合、__d('abc', 'hogehoge') という書き方で 出来ると思うがやったこと無いので/cake/basics.phpでもよんどくれ。
744 名前:新参者 mailto:sage [2008/04/23(水) 05:59:57 ID:???] ブラクラするんだけど、俺だけ? メニューを選んで、表示し終わる前にサイト内検索する。(Specialofferとか) www.islandcruises.com/ OS: WinXP sp2 Browser: IE7 CPU: Core2 6300 Memory: 2G Service: xampp CakePHP 1.2で開発中なので、こういうの見るとビビっちまう・・・
745 名前:744 mailto:sage [2008/04/23(水) 06:23:11 ID:???] 追記: キャッシュクリア後とかに、 zeroで検索するとハングしやすい。 firefoxだと大丈夫なので、IE7の仕業くさいな。 調べてくるか・・・
746 名前:702 mailto:sage [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); }
747 名前:nobodyさん mailto:sage [2008/04/24(木) 22:39:06 ID:???] >>746 1.1ってbeforeFindなかったっけ?
748 名前:702 mailto:sage [2008/04/25(金) 12:38:51 ID:???] >>747 ありがとう、まじでありがとう
749 名前:nobodyさん mailto:sage [2008/04/26(土) 13:26:12 ID:???] URLを読み込む以外に、CakePHP外部から CakePHPの関数とか呼ぶ方法内ですかね? 具体的に言うと、もともとウェブサイトがCMSで構築されており、 新たにCakePHPを使ったウェブシステムを追加したわけですが、 そのCMSのページ上にCakePHPシステムの情報・・・会員ユーザー名などを 表示させたいのです。
750 名前:nobodyさん mailto:sage [2008/04/26(土) 13:30:26 ID:???] 好きなようにDB叩けばいいんじゃまいか?
751 名前:nobodyさん [2008/04/26(土) 14:52:38 ID:CCA4AGBq] Shellsでしょう
752 名前:nobodyさん [2008/04/26(土) 21:38:26 ID:Uwx0xpWG] セッションがクリアされてしまってハマった。 ネットで検索すると、存在していないcssや画像ファイルがあると消え、 htaccessでの設定で回避できるということだった。 css、画像ファイルのパスと存在が正しいことを確認、 htaccessファイルの設定も修正してみたが、セッションはクリアされたまま。 たすけて。
753 名前:nobodyさん mailto:sage [2008/04/26(土) 22:33:41 ID:???] >>752 CakePHPのバージョンはいくつ? こんなのがあった。 ttp://cakephp.jp/modules/newbb/viewtopic.php?topic_id=817&forum=9 ちなみに、初めてセッションを使おうといろいろ調べてるんだけど、参考になる サイトあったら情報きぼう。 とりあえずこのあたりを参照中。 ttp://cakephp.jp/doc/session.html ttp://d.hatena.ne.jp/hetima/20070116/1168883397 ttp://d.hatena.ne.jp/hetima/20070201/1170313526 ttp://develop.ddo.jp/new-tech/php/framework/cakephp/memo/%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A7%E9%85%8D%E5%88%97%E3%81%AE%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95 ttp://sand-man.blog.so-net.ne.jp/2007-06-26-1
754 名前:753 mailto:sage [2008/04/26(土) 22:35:08 ID:???] ごめん。よくみると全然関係なさそうだね。
755 名前:nobodyさん mailto:sage [2008/04/26(土) 22:37:46 ID:???] >>753 は読まずに答えてみる。的外れかも。 えーと、core.phpだっけ? セキュリティレベルを設定するところ。 あそこが一番高いと、接続するたびに、セッションIDが変更される。 だから途中でエラー?とかあると、サーバー側ではセッションIDの情報が変わっているのに クライアントでは新しいセッションIDをもらきれておらず、セッションIDが切断=クリアされてしまう。 だから俺はセキュリティレベルを中にした。
756 名前:755 mailto:sage [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 この人と同じこと。
757 名前:nobodyさん [2008/04/26(土) 23:10:06 ID:Uwx0xpWG] CAKE_SECURITYを、'medium'にしてやってみたけどダメでした。 セションをwriteした直後にreadしてみたら、ちゃんと設定されてるのは確認できたんですけどね。 次の画面でreadすると空になってる。ん〜困った。
758 名前:nobodyさん mailto:sage [2008/04/26(土) 23:38:17 ID:???] まさかブラウザ側の問題ってことは・・・ セキュリティソフトとか。
759 名前:nobodyさん mailto:sage [2008/04/26(土) 23:42:15 ID:???] writeした直後にreadしてちゃんと設定されていると 確認するのはあまり意味無いよ。 なぜなら、情報が実際にセットされるのは ブラウザにクッキー情報が返ってからだから。 ieHTTPHeadersやLive Http headers ブラウザのクッキー情報を見るツールを使って 調べてみよう。
760 名前:nobodyさん mailto:sage [2008/04/27(日) 00:07:57 ID:???] あっそうだ。セッションの方式にはどれを使っている? cakephp、php、database? 自分の使い方の問題もあるだろうけど、databaseがなんかうまくいかなかった。
761 名前:nobodyさん [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 これからやってみます。
762 名前:nobodyさん mailto:sage [2008/04/27(日) 02:40:18 ID:???] cake1.2.0.6311使ってますが、 sqlのCASEはquery対処なんかなあ。$optionsでいけたりする?
763 名前:761 mailto:sage [2008/04/28(月) 00:00:23 ID:???] 自己レスだけど、携帯サイトの場合、Cookieが使えない携帯端末があるから URLにセッションIDを付加する方法でやるしかない。 PCサイトの場合は、セッションハイジャックの危険性があるからURLへのセッションID付加は使えない。 結局、セッションを使わずcookieで運用する方法で実装しました。 本来の意味でのセッションではなく、単なるデータの引き継ぎ用途なので、cookieでよいかと。
764 名前:nobodyさん mailto:sage [2008/04/28(月) 20:32:23 ID:???] 「セッションハイジャックが毎日行われています」 ttp://pc11.2ch.net/test/read.cgi/php/1207863515/236-249
765 名前:nobodyさん mailto:sage [2008/04/29(火) 00:30:20 ID:???] 一週間いじってみたがこんな致命的バグの潜んだFWは使う気になれん
766 名前:nobodyさん mailto:sage [2008/04/29(火) 00:50:53 ID:???] >>765 何かバグにぶち当たったのかもしれんけど、こんな風にいい逃げする 荒らしもいるしなぁ。 本当に困ってるのなら、具体的なバグ例を挙げてみるといいよ。 そしたら対処方法も出るかもしれないし。 話は変わるけど、前のレスでも出てたし、みんな知ってるのかもしれないけど、 このサイトいいね。参考になる。 テンプレに載せてもいいんじゃない? ttp://bakery.cakephp.org
767 名前:nobodyさん mailto:sage [2008/04/29(火) 02:39:08 ID:???] お決まりですので・・・ 宣伝乙^^
768 名前:nobodyさん [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'));
769 名前:nobodyさん mailto:sage [2008/05/01(木) 13:48:12 ID:???] >>768 39行目はupdateじゃなくて、insertされてない?
770 名前:nobodyさん mailto:sage [2008/05/01(木) 14:08:31 ID:???] >>766 参考になる以前に公式じゃんw
771 名前:768 mailto:sage [2008/05/02(金) 02:37:54 ID:???] すみません自己解決しました。 39行の手前で、親の方にidを設定したところ、きちんと更新されました。 $this->Thread->id = $thread_id;
772 名前:nobodyさん mailto:sage [2008/05/06(火) 17:41:37 ID:???] >>771 報告乙です 参考にさせて頂きます。
773 名前:nobodyさん [2008/05/07(水) 00:15:31 ID:ehDEto56] app/views/layouts/default.thtml にて、あるModelのデータを 展開したいのですが、どうすればいいでしょうか? 対応するコントローラもなさそうだし・・・。
774 名前:nobodyさん mailto:sage [2008/05/07(水) 00:21:12 ID:???] >>773 モデルからコントローラに値を渡してsetしてviewで使えばいいだけですよ。
775 名前:773 mailto:sage [2008/05/07(水) 00:29:55 ID:???] >>774 というと、複数のviewで使いたい場合は、各コントローラ、各アクションで setするという事でしょうか? あるいは、全てのコントローラの前に読み込まれる、共通コントローラみたいのが あったりするのでしょうか。
776 名前:nobodyさん mailto:sage [2008/05/07(水) 00:37:17 ID:???] >>775 そう ある
777 名前:nobodyさん mailto:sage [2008/05/07(水) 14:32:05 ID:???] そうあるよ
778 名前:nobodyさん mailto:sage [2008/05/07(水) 14:48:46 ID:???] >>775 チートシート手に入れるべし
779 名前:773 mailto:sage [2008/05/08(木) 01:09:40 ID:???] 結局レスの内容はよく分かりませんでしたが、下記ページを参考に、 requestActionで取得する事にしました。 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>
780 名前:nobodyさん mailto:sage [2008/05/08(木) 01:42:10 ID:???] >>779 ちょwwwww志村上上
781 名前:nobodyさん mailto:sage [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'])) ?>
782 名前:nobodyさん mailto:sage [2008/05/08(木) 09:34:15 ID:???] ちょwwwww志村上上下下右左右左BA
783 名前:nobodyさん mailto:sage [2008/05/08(木) 19:24:13 ID:???] 以前にもこんな話題があったような気がするのですが、 フォームの画面遷移のときのデータの持ち回り方について・・・ 1.普通にhiddenで埋め込む 2.serializeしてbase64_encodeしたものをhiddenで埋め込む 3.serializeしてbase64_encodeしたものをセッションに書き込む などが考えられますが、 CakePHP的には、どの方法がベターでしょうか?
784 名前:773 mailto:sage [2008/05/09(金) 01:55:42 ID:???] サンプルコードまでご提示下さり、ありがとうございます。おかげでフル装備 じゃないや、スマートな実装ができました。 どうもありがとうございました。
785 名前:nobodyさん mailto:sage [2008/05/09(金) 09:23:43 ID:???] >>783 質問だけど。 3でbase64_encodeする意味合いって何があるの?
786 名前:nobodyさん mailto:sage [2008/05/09(金) 18:49:37 ID:???] >>783 自分は 1。 セキュリティがどうこうっていうプログラマーさんがいるでしょうけど・・・。
787 名前:783 mailto:sage [2008/05/09(金) 18:55:31 ID:???] >>785 すみません。よくわからないで書いてしまいました;; シリアライズだけで十分ですか? >>786 最終的にsaveするまえにしっかりバリデートすれば、それでも問題ないのかもしれませんね・・・ でもやっぱりソース見たときに、パスワードとかメールアドレスがもろに書いてあると、 このサイト大丈夫か??って気になりますが・・・ ちょっと気になったのですが、PEARのHTML_QuickForm_Controllerなんかは どの方法なんでしょうか??
788 名前:nobodyさん mailto:sage [2008/05/09(金) 20:19:38 ID:???] 貧乏人は贅沢だ 不満を言う余裕はあるくせに 戦争する暇もある
789 名前:nobodyさん mailto:sage [2008/05/10(土) 00:11:55 ID:???] >>787 ソース見られたらっていうのは確かにある。 しかもそれを無理矢理改ざんして入力不可の文字を入力される可能性もある。 しかし、よほどのサイトじゃないとそこまでハッカーも暇じゃないから攻撃しないのでは? と思います。 現に、ここ 5年ほど、何も問題ありませんでした。
790 名前:nobodyさん mailto:sage [2008/05/10(土) 16:35:26 ID:???] >>789 問題があってからじゃ遅いんだぞ! と思いつつも、もりもりhiddenに入れ込んでしまう。。
791 名前:nobodyさん mailto:sage [2008/05/10(土) 17:55:53 ID:???] >>787 セキュリティ目的ならbase64_encodeは用をなさないという認識。 >>789 データはhiddenで埋め込んでおいて、$this->dataをserialize後saltつけてハッシュ化したやつを別でhiddenに埋め込む ↑のふたつを比較して整合性チェックとか?
792 名前:nobodyさん mailto:sage [2008/05/10(土) 18:59:59 ID:???] 今、ここを覗いている筑波大学へ ばれてるぞ!
793 名前:nobodyさん mailto:sage [2008/05/10(土) 19:29:59 ID:???] 別に半角文字列板とかじゃないんだからバレたっていいだろうに。
794 名前:nobodyさん [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> これって、どう対応すればいいのでしょう?
795 名前:nobodyさん mailto:sage [2008/05/11(日) 12:01:33 ID:???] app/config/routes.phpにRoute::connectNamed(array(),array('argSeparator'=>'=')); を追加
796 名前:794 mailto:sage [2008/05/11(日) 13:42:34 ID:???] >>795 Router::connectですね。 ふぉぉ、すぐに答えていただきありがとうございます! PC側の方もちょっと調整が入りますが、おかげで解決しました!
797 名前:nobodyさん [2008/05/12(月) 02:29:40 ID:8yg2YXGe] CakePHP1.2のバリデーションについてよく整理されたマニュアルとかってないかな バリデーションルールが多様になったほかに、create時update時それぞれに有効無効に できるなんてこと知ったのだけど、その他含めてちゃんとまとまった情報ってないかな
798 名前:nobodyさん mailto:sage [2008/05/12(月) 18:22:39 ID:???] AuthComponentsで、ユーザー情報を取得し直したいとき、どのようにすればよいでしょうか? たとえば、 ログイン後にユーザーメニューからユーザ名の変更などを行った場合、 セッションには変更前のユーザ名が格納されているため、 ヘッダーなどに表示されている 「ようこそxxさん」のような表示が変わらない、ということになってしまいます。 いちおうの解決策としては、 セッションにはIDのみを格納しておいて、 app_controllerで 毎回、$this->User->findByIdしてセッションに記憶させるという方法をとっていますが、 あまりスマートではありません; ユーザ名の変更処理の直後のみユーザ情報を取得しなおしたいのですが、 なにかよいアイデアはないでしょうか?
799 名前:nobodyさん mailto:sage [2008/05/12(月) 20:51:58 ID:???] >>798 なんとなくでレスしてるが変更と同時にセッション内容も書き換えればいいんじゃないの?
800 名前:nobodyさん mailto:sage [2008/05/12(月) 22:27:51 ID:???] 公開用Webサイトに1.2系使ってる人っている? DBからデータをviewで表示するだけなら1.2でも大丈夫かな? 現在は1.1で運用中。 多言語対応が1.2でやりやすいのなら、1.2で作りかえるんだけど。
801 名前:nobodyさん mailto:sage [2008/05/12(月) 22:35:05 ID:???] >>800 俺はやっちゃったw 半年ぐらいCakePHP使っていて、コアの中まで見てると 大丈夫なんじゃないかなぁと思う。 バグではないが、ベータ版だから仕様が変わるのが ちょっとネック。
802 名前:794 mailto:sage [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オプションを追加してごまかしています。
803 名前:nobodyさん mailto:sage [2008/05/13(火) 02:42:36 ID:???] 1.2の正式バージョンていつごろ出るのかな? 乗り換えるべきかどうか迷う・・・
804 名前:nobodyさん mailto:sage [2008/05/13(火) 13:48:12 ID:???] >>800 cakephp 1.1 も 1.2 も両方開発してアップしてますけど両方問題ないですよ。 ただ、モバイルサイトも作ろうと思えば 1.1 の wevservices が便利です。
805 名前:nobodyさん mailto:sage [2008/05/13(火) 18:13:48 ID:???] 1.2じゃなきゃ使いたくないズラ
806 名前:nobodyさん mailto:sage [2008/05/13(火) 19:48:08 ID:???] 画像表示系のコンポーネントを作って使うとき、 最後にheaderでContent-typeなどを指定するわけですが、 controller.phpのheader(”location...とかぶってしまって、エラーが出てしまいます。 みなさんはどのように処理しているのでしょうか? わかりずらくてすみません・・・;
807 名前:nobodyさん mailto:sage [2008/05/13(火) 19:56:04 ID:???] >>806 わかるわかる。 <img src="hoge.php?="> みたいなので読み出すやつでしょ? 僕はギブアップしましたね。 ttp://www.hideblog.net/thumbnails/ を使ってます。
808 名前:806 mailto:sage [2008/05/13(火) 20:02:52 ID:???] >>807 それです! わかってもらえて安心しました。 リンク先のものは、キャッシュに保存してそれを表示する、というものでしょうか? これはこれで便利ですが、やはりできればストレートに表示したいですね・・・
809 名前:nobodyさん [2008/05/13(火) 22:25:09 ID:Akbr9Dkj] >>806 ob_clean()はどうでしょう。
810 名前:nobodyさん mailto:sage [2008/05/13(火) 22:27:45 ID:???] >>807 まったくもって意味がわかりませんが たぶんこれで解決でしょう。 www.ideaxidea.com/archives/2008/01/cakephpcsv.html
811 名前:nobodyさん mailto:sage [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 .... とするのでは、 どちらのほうがパフォーマンスが優れているのでしょうか? ご教授お願いします。
812 名前:nobodyさん mailto:sage [2008/05/14(水) 09:48:17 ID:???] どっちもだめ
813 名前:nobodyさん [2008/05/14(水) 09:49:25 ID:XltYBCAy] 前者のほうが毎回DBアクセスが発生するため速度という点でのパフォーマンスは悪いでしょうね。 後者のほうは、、ビューにあまりそこまで複雑なロジックを記述することによるコードの効率の悪さ という点でパフォーマンス難ありかも。 対象となるデータ量次第だけど、そこまでデータが多くなくてサーバのスペックが十分であれば前者の方が コーディングは早いんじゃね?個人的な意見だけど。
814 名前:nobodyさん mailto:sage [2008/05/14(水) 13:49:50 ID:???] 806です。 >>809 >>810 その方法は試してませんでした。 次回やってみようと思います。 ありがとうございます。
815 名前:nobodyさん mailto:sage [2008/05/14(水) 14:46:18 ID:???] デザイナーの要望に応えてちょちょっと変更するときなんて、 viewいじった方が早かったりするんで、 ついついやっちゃうんだよなぁ。 んで、気づいたらviewがえらいことにw
816 名前:nobodyさん mailto:sage [2008/05/15(木) 00:40:28 ID:???] CakePHPかRuby on Railsかで迷ってます。 サーバー関連の知識が全くないのですが、 アプリ完成後の公開寸前で困らないためには、 CakePHPを選んでおいたほうが、すんなり公開できるでしょうか?
817 名前:nobodyさん mailto:sage [2008/05/15(木) 00:57:18 ID:???] >>816 どっちも自分で試したほうがいいと思う。 俺は慣れてるからCake好きだけど。 最低限のアプリ作って鯖置くまで試してみる事をオススメする。
818 名前:816 mailto:sage [2008/05/15(木) 01:04:37 ID:???] >>817 レスありがとうございます。 Cakeならば格安のレンタルサーバで試してみることもできるのですが、 Rubyとなるとそこそこ値の張るところでないとダメみたいで、 それだけのお金を出して、設置できなかったとなると・・・ 1.2の安定版ももうすぐみたいですし、 やっぱり初心者にはCakeなんですかねぇ・・・
819 名前:nobodyさん mailto:sage [2008/05/15(木) 01:14:45 ID:???] >>818 つ仮想サーバ または 適当な空きマシンでlinux
820 名前:nobodyさん mailto:sage [2008/05/15(木) 17:54:14 ID:???] レンタルサーバーで問題なのはお金よりも むしろサーバーを管理できるかどうか。 www.fs-virtual.jp/spec/hikaku.html 945円/月〜 www.tsukaeru.net/plans/vps/ 2480円/月〜 www.ymc.ne.jp/service/managed/plan/index.html 4950円/月
821 名前:nobodyさん mailto:sage [2008/05/15(木) 21:43:23 ID:???] ☆ チン ☆ チン 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ヽ ___\(\・∀・)< 1.2まだー? \_/⊂ ⊂_)_ \_______ / ̄ ̄ ̄ ̄ ̄ ̄ ̄/| |  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :| | .|/
822 名前:nobodyさん mailto:sage [2008/05/19(月) 16:23:52 ID:???] MediaView(/cake/lib/view/media.php)ってどう使うんだろう? dsi.vozibrale.com/articles/view/mediaview-is-a-bleeding-bastard bin.cakephp.org/view/1026359650 を読む限り、特殊なファイルをダウンロードさせたいときとかに使うみたいだけど、 適当に読む限りファイルを出力するヘッダー情報の段階のことしか書かれていない。(あ、Viewの部分だから当然か) おそらく、データーベースからグラフをGDとかでスクリプト側で作ったものを表示する場合なんかで 使うんだろうけど、このスクリプトで合成した画像のバイナリデーターはどのタイミングで、どこの関数に格納すればいいのやら?
823 名前:877 [2008/05/20(火) 09:40:48 ID:xs/omlLe] IP/controller/ にアクセスするとIP/controller/index が デフォルトで実行されますけど、このアクションを変えるには どうしたらいいですか?
824 名前:nobodyさん mailto:sage [2008/05/20(火) 11:01:51 ID:???] >>823 cakephp.jp/doc/ch04s03.html かな
825 名前:nobodyさん mailto:sage [2008/05/20(火) 11:16:01 ID:???] CakePHP 1.2 stable coming soon と言ってるから、そろそろ 1.1 -> 1.2 移行手順をまとめたいな 絶対に手を入れるところ 推奨されているところ とか はまりポイント とか
826 名前:nobodyさん mailto:sage [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 間違いあったら訂正よろしく
827 名前:nobodyさん mailto:sage [2008/05/20(火) 13:22:09 ID:???] find系もなんか修正あったんじゃなったけ?
828 名前:nobodyさん mailto:sage [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%'; というのも知りたいです。
829 名前:nobodyさん [2008/05/20(火) 19:19:52 ID:wZOYKZBI] バージョン1.2のAuthComponentでの認証で二重ログインを防ぎたいんだけど、 良い方法か参考ページがあったら教えて下さい。
830 名前:nobodyさん [2008/05/21(水) 01:03:54 ID:+T6Kz2/1] CakePHPってDBのカラム名まで縛るのね。 その時点で候補から外れたね。
831 名前:nobodyさん mailto:sage [2008/05/21(水) 01:16:01 ID:???] >>830 さようなら。 その縛りなしで行こうと思えば行けるんだけどな。 じゃぁの。
832 名前:nobodyさん mailto:sage [2008/05/21(水) 01:57:45 ID:???] >>830 そんなに大変? たしか、RoRでもあったと思うけど。 idとcreatedとmodifiedくらいしか意識した事ないけど、 他にもあるのかな?
833 名前:nobodyさん mailto:sage [2008/05/21(水) 02:29:51 ID:???] というかしばるから便利なわけですが
834 名前:nobodyさん mailto:sage [2008/05/21(水) 10:27:32 ID:???] >>832 name or title フィールドでgenarateListが自動的にidと配列を返す あとは、xxx_id とか xxx_yyy とかのアソシエーション系かな? いずれにせよCoCの理念に同調できない人はRoRをはじめとしたフレームワークは無理だわな。 RoRではなく、Cakeスレに書き込む>>830 に乾杯
835 名前:nobodyさん mailto:sage [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って。
836 名前:nobodyさん mailto:sage [2008/05/21(水) 18:07:50 ID:???] カラム名とか考えるの苦手なんで縛られてた方が楽だな俺は。 コントローラ名とかメソッドの名前とか考えるのホント嫌。かっこいい名前考えるセンス無くて。
837 名前:nobodyさん mailto:sage [2008/05/21(水) 18:10:51 ID:???] スペル調べたりするのも面倒だから、ローマ字とかw
838 名前:nobodyさん mailto:sage [2008/05/21(水) 18:29:28 ID:???] たしかに項目全部のスペル調べるのって時間かかるよなw 非英語圏の俺涙目
839 名前:nobodyさん mailto:sage [2008/05/21(水) 22:53:45 ID:???] >>838 あれ、こんなところに俺がいるぞ?w 最近、アルクで調べるようになって、ちょっと楽になった。 ttp://www.alc.co.jp/ カラム名は適当な英語でいいが、テーブル名はきちんとした英単語になってないと、 単複の変化がねぇ。。。
840 名前:nobodyさん mailto:sage [2008/05/21(水) 22:58:34 ID:???] ローカルに辞書ソフト入れておいたほうがいいぞ。 どうもウェブだと時間がかかる。 おれはMS Officeについていたbookshelfを使っている。
841 名前:839 mailto:sage [2008/05/21(水) 23:38:50 ID:???] >>840 Bookshelfか。懐かしいなぁ。 Bookshelfもいいんだけど、アルクは例文がいろいろ出てくるので、 そこがおすすめ。 たしかにローカルの方が速いけどね。
842 名前:nobodyさん mailto:sage [2008/05/22(木) 00:42:45 ID:???] >>839 俺発見!
843 名前:nobodyさん mailto:sage [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' => '' ); } ?>
844 名前:nobodyさん mailto:sage [2008/05/22(木) 13:44:12 ID:???] 英語の豆知識 Data : 複数形 Datum : Dataの単数形 CakePHPやるまで知らんかった。。。