13/11/18 19:07:25.95
>>509
の文章とか普通に分かり易いじゃん。
理解出来ない人って頭大丈夫かな。
512:nobodyさん
13/11/18 19:14:07.40
いや俺も意味わからんし
513:nobodyさん
13/11/18 19:14:32.25
>>511
サーバ変えたときに面倒になる実装ってどんなんだ?
514:nobodyさん
13/11/18 19:16:28.18
サーバー変えたら何が変わるんですかね…
515:nobodyさん
13/11/18 19:20:29.41
エスパーな511が何を分かったのか気になる
516:nobodyさん
13/11/18 19:23:26.86
>>513
サーバ変えたらまた search プラグインの設定せねばならん
面倒だーって事でしょ。
それくらい小学生でも分かると思うけど。
517:nobodyさん
13/11/18 20:09:16.65
>>516
お前だけ噛み合ってないぞw
518:nobodyさん
13/11/18 22:03:29.92
あえて苦しい道を行くか・・・
519:nobodyさん
13/11/18 22:41:02.59 HBQEtXMZ
サーバーごとに設定が必要な Search プラグインっていうのを教えて欲しい。
いや、やっぱりいいや。
520:nobodyさん
13/11/19 00:24:04.47
cakephpやってりゃサーチプラグインは必須レベルだと思うんだけど。
521:nobodyさん
13/11/19 00:31:47.95
>>520 が使ってるサーチプラグインてサーバーごとに設定が必要なの?
522:nobodyさん
13/11/19 01:03:09.36
>>521
必要じゃないね
523:nobodyさん
13/11/19 05:39:12.52
まあcakeやphpのバージョンがコロコロ変わってそのたびに使えなくなるんだろうなと思うと
プラグインに頼りたくない気持ちはわかる
524:nobodyさん
13/11/19 10:30:58.16
まぁちゃんと調べて検証してから使ったほうがいいのは確か。
サーチはもう定番だと思うけど、同じCakeDCでもユーザープラグインはクソだし。
525:nobodyさん
13/11/19 14:07:12.30
サーチプラグインはルーティングしていると困るときあるからな
今までIFでやっているならIFで独自コンポーネントでも作ればいいじゃん
526:nobodyさん
13/11/20 09:40:20.78
findがネスト配列返してきて衝撃を受けたんだがパフォーマンスの問題なのか?
PHPが配列処理に強いから特性を活かすとかそういう話か?
なにも考えないで使うとコントローラーやヘルパーの肥満化を促進しそう
527:nobodyさん
13/11/20 11:35:26.62
>PHPが配列処理に強いから特性を活かすとかそういう話か?
そうです
>なにも考えないで使うとコントローラーやヘルパーの肥満化を促進しそう
Hash クラスを使いましょう
Hash のコード見ると、こんなことするぐらいなら
オブジェクトで返しておけよ! と思うがなw
528:nobodyさん
13/11/20 12:06:21.22
CakePHP3まで耐えるんだ
529:nobodyさん
13/11/20 12:14:01.60
ただでさえPHPの配列遅いのに
530:nobodyさん
13/11/20 19:29:25.32 sxeXAx98
CakePHP:save()を使ってテーブルのレコードをupdateしようとしていたのですが
そもそも、cakePHPの場合には、複数の主キーが設定されている場合には
saveメソッドを使ってupdateは出来ないのでしょうか?
id だけじゃなくて
id と sequence_number の2つが hoge テーブルの主キーの場合とか
って普通にSQL分を投げるしかないですか?
531:nobodyさん
13/11/20 21:17:34.01
>>530
複合キーは使えないよ
裏技的なプラグインか何かがあった気がするが、失念
532:nobodyさん
13/11/20 21:19:13.23
×複合キー
○複合主キー
533:nobodyさん
13/11/22 13:52:04.15
艦これのサーバサイドってCakeだったのね
534:nobodyさん
13/11/22 14:47:24.43 V2BhDK+1
>>531
そうなのね。諦めました。
地道にupdate分を投げます。
535:nobodyさん
13/11/22 15:48:01.98
CakePHPに限らず、大抵のフレームワーク、というかORマッパーは、
複合主キーはサポートしないか、してても無理やり感のあるものだよね。
536:nobodyさん
13/11/22 15:57:57.23 W1kV2v2N
なんで複合主キーはダメなのさ。
537:nobodyさん
13/11/22 17:52:26.73
>>536
嫌なら使うな、というと厳しいが、
fw使うってそんなものだと思う。
538:nobodyさん
13/11/22 18:01:15.94
>>533
ソースは?
539:nobodyさん
13/11/22 18:26:27.31 4CXM4jc6
cake初心者なんですけど、リダイレクトしたらっていう条件式って作れますか?
すべてのページを指定するのは賢くないと思いまして…
540:nobodyさん
13/11/22 18:40:09.88 UUBP/xq0
>>537
じゃ、諦めるわ。
541:nobodyさん
13/11/22 20:34:04.53
複合主キー対応してないのってRailsもどきで対応できてない奴だけじゃない?
542:nobodyさん
13/11/22 21:35:11.99
複合主キーにする設計自体どうなのかと思わないでもない
543:nobodyさん
13/11/22 21:44:16.48
>>539
session 使うしか思いつかないが、
やってやれないことは無いと思う。
544:nobodyさん
13/11/22 23:24:16.29
現在サクラインターネットを使っています。
そしてソースコード一式のバッグアップ処理にTeraTermマクロでログインし
手動で以下の様なコードを実行しています。
tar czvf file_1_2.tar.gz file_1 file_2
しかし、毎度手動でこのコマンドを実行するのは不便なので(かといってcronは使いたくない)
TeraTermマクロから自動でログインと同時に、特定のコマンドを発行する方法とかってありませんか?
545:nobodyさん
13/11/22 23:27:18.44
Cake関係なさすぎワロタ
546:nobodyさん
13/11/23 01:58:50.84
>>544
マクロなんか使う必要ない。
SSHの引数にコマンド書けばいいだけ。
ログインのパスワードはカギを使えばいいだけ。
547:nobodyさん
13/11/23 12:13:55.44
>>546
詳しすぎわろた
548:nobodyさん
13/11/23 12:27:27.10
あー、そっか、ワンライナーで書けるんだ。
549:nobodyさん
13/11/26 03:02:20.11
一からサイト作るの好きなんだけど、
作ったサイトを改造するのが苦手なんだよね。
やっぱりみんなもそんな感じ?
人の作ったコードを触るのが先って人もいるのかな。
550:nobodyさん
13/11/26 03:29:46.00
好きってひとも
551:nobodyさん
13/11/26 05:56:36.78 2m7znfvZ
>>549
たぶん全員がそうだろ
552:nobodyさん
13/11/26 08:59:27.15
まずコードの意図を読むのに時間かかるからね
数カ月前の自分が書いたコードでもたまに分からないし
テストが書いてあったらそれはとっても嬉しいなって
553:nobodyさん
13/11/26 09:09:47.39
何らかの有名MVCフレームワークを利用したものなら
MVCという大枠とそのFWの規約とドキュメントがあるだけマシ
554:nobodyさん
13/11/26 09:26:27.15
>>552
おれおれフレームワークなんて、わけがわからないよ。
555:nobodyさん
13/11/26 11:33:42.73
俺はCake風(ただし1.3)のオレオレ作ってるから、割と理解できるな。
ただし、そこからカスタマイズ依頼とかされたら困るが。
556:nobodyさん
13/11/26 12:09:28.97
オレオレやってしまうと、せっかくのオープンソースの魅力が半減する。
557:nobodyさん
13/11/26 17:50:46.60
xampp
Cakephpvar2.3.10
でSmartyの3.1.15導入してみた。
tplファイルがない場合に選択されるctpファイルでの表示がおかしい。
HtmlHelper関連だと思うのだけどどなたか解決方法教えてください
558:nobodyさん
13/11/26 18:08:22.89
>>553
wordpressのプラグインとか作ってても
ドキュメントに無いソースの奥に眠る関数とか探して調べるのにすごい疲れたわ
559:nobodyさん
13/11/26 20:04:02.44
(WP早く滅びて)
560:nobodyさん
13/11/26 20:20:25.47
>>559
わかるわー。
WordPressが無ければどれほどプログラマーが稼げてたか。
561:nobodyさん
13/11/26 20:29:19.30
せめてまともなプログラマがWordPressを書いていれば…
あんな意味不明なぐちゃぐちゃなコードどうやってメンテしてんだろう
562:nobodyさん
13/11/26 21:37:55.32
>>561
大成できないタイプだな
563:nobodyさん
13/11/26 22:03:23.94
WP使えばなんでも安く・早く・簡単に出来ると思い込む奴ってなんなの?
564:nobodyさん
13/11/26 22:05:01.70
プラグインの多さだけがとりえですしお寿司
565:nobodyさん
13/11/26 22:30:57.24 nldP7I2h
wordpress って最高だよね。
無料でここまで何でも出来るCMSとかこのスレの馬鹿グラマには出来ないでしょうね。
566:nobodyさん
13/11/26 22:48:15.61
お前らがWPに恨みたっぷりなのは分かった
せめてCakePHPで作られたCMSの話を……
567:nobodyさん
13/11/26 22:50:57.41
>>557
Smartyを破棄する
568:nobodyさん
13/11/27 00:18:20.01
CakeでもWPでも仕事するしおすし。
CakePHPベースのCMSは、なんかなぁ、
どうせCakeなら自分で好きなようにしたくなっちゃう感じする。
569:nobodyさん
13/11/27 00:25:51.15 Rk4EDw/d
wordpress って素敵だなぁー
570:nobodyさん
13/11/27 01:30:39.60
>>569
ユーザーから見える所はな
571:nobodyさん
13/11/27 01:57:50.96
ユーザー数が多いからWordPressには安心感があるよ。
どんなにドツボにはまってても、
あぁ、この泥沼に世界中の見知ら人が
何万と埋もれてるんだろうなという
温もりがWordPressにはある。
572:nobodyさん
13/11/27 03:22:25.52 mdMZh+Ob
最強に糞だったCMS
Moval Type
573:nobodyさん
13/11/27 06:23:21.20
>>572
スペリング違うけど、クソなのは同意。2.xに初めて触ったときは感動したけど、4.xで卒業したよ。最近のは知らない
574:nobodyさん
13/11/27 22:12:09.37
だからさぁ
cakeもプラグインをもっとメジャーにしようよ
wordpress派も流れて来るから
575:nobodyさん
13/11/28 01:28:07.13
こないこない
wordpressはphpなんて知らない人用のもの
576:nobodyさん
13/11/28 06:31:59.63
新人研修で、汚いプログラムの例としてWordPressのソース見せてる
577:nobodyさん
13/11/28 10:50:04.35
うちの研修では、
商業的な成功には理念的な完成度は不要である例として
WordPressを引き合いに出してる。
578:nobodyさん
13/11/28 11:11:40.35
WordPressって商業的に成功してんの?
無料配布でしょ?
579:nobodyさん
13/11/28 11:35:10.00
URLリンク(allthingsd.com)
>>578
かなり儲かってるよ
580:nobodyさん
13/11/28 11:36:57.69
URLリンク(www.crunchbase.com)
581:nobodyさん
13/11/29 02:16:14.63
Fat Controllerはもちろんだめ。
Fat Modelになりすぎてもだめ。
むずかしいよ、最初からそんな見通せないから、ついモデルに書いて太らせてしまって、
行数増えすぎてからうあーってなるよ。
ComponentとBehaviorも、気軽に作ってると数ばっか増えて、煩雑になってくる。
特にComponentが、コントローラーにもモデルにもアクセスできちゃうから、
つい責任持たせすぎになっちゃうよ。
582:nobodyさん
13/11/29 06:26:18.01
>>581
うあーってなるん?
583:nobodyさん
13/12/01 15:08:36.60
会社のサイトに簡単なメールフォーム付けようと
久々に素のPHP書いたら、メチャクチャに面倒臭く感じた
でもそれだけにCakeとか使うのもなあ…。
584:nobodyさん
13/12/01 16:08:25.46
>>583
ちょっと大きめのライブラリを導入した、ぐらいに思っておけば幸せかもよ
585:nobodyさん
13/12/01 18:00:34.36
>>583
それ単に、メールの仕様が複雑なだけだから。
586:nobodyさん
13/12/01 21:20:50.87
メールフォーム作るなら既存の小さいライブラリ使いたいな
メール用にはSwiftMailer選ぶんだけどバリデーションの部分はたまに悩む
Symfony2みたいなコンポーネントごとの独立性の高いFW知ってるなら
一部のコンポーネントだけ使えばいいらしいが
587:nobodyさん
13/12/01 21:35:29.81
Cakeでも頑張ればいけるんじゃね
メール:CakeEmail
バリデーション:Model/Validator
フォーム:Formヘルパー
いや面倒だな`,、('∀`) '`,、
588:nobodyさん
13/12/01 21:58:22.92
cake関係ないかもしれんけど、フルスクラッチっていうの?サイトのシステムを全部作り直すのってどれくらい経過してからやればいい?
cakephp1のシステムを1年前に作ったんだが2で作り変えるか。。。迷い中。
ヤフーとかグリーとかミクシーみたいなでかい企業はどれくらいの頻度でやってるんだろ?
589:nobodyさん
13/12/01 22:06:14.84
>>588
そういう企業は複数のシステムを持ってるものだから、一気に全部を作り直したりはしない
少しずつ手を付けていく
590:nobodyさん
13/12/02 00:36:17.56
お問い合わせフォームのように、一部だけCakeで作ろうとしても
大体は「全体のデザインの中にフォームがある」ってスタイルになるから、
レイアウトやテンプレートをCakeで作らなければいけない。
そうなると、元々ある静的な部分を更新したら当然Cake側も更新しないと
整合性が取れないわけで、手間やコストが2倍に膨らんでしまう。
結局、Cakeやフレームワークを使うなら、全てそれで管理しないといけなくなる。
591:nobodyさん
13/12/02 09:12:38.83
Cake関係ない話だけど
ちょこっと導入できるような小さなメールフォームのライブラリが、案外ぐぐっただけじゃ見つからなくて
これ以上探す時間が勿体無いから自分で書こうと思った
CAPTCHAのライブラリはすぐ見つかったので、それはさくっと採用したけど
とにかくさっさと動くようにして終わらせたくて、テストも書かずに作ったので
ブラウザでいちいち動作確認して、面倒臭かった
592:nobodyさん
13/12/02 09:38:56.13
>>587
CakePHPの一部をコンポーネント/ライブラリとして他所で使う例を調べようと思ったが
CakeのControllerのComponentの話とCakeにサードパーティのライブラリを導入する話しか出てこない
593:nobodyさん
13/12/02 18:03:31.67
上でメールフォームの話題が出てるから試してみたんだけど、
/public_html
└contact.php
/cakephp
└/app
└/webroot
こういう構成だったとして、contact.phpにアクセスしたら
ContactControllerのindexを実行したいと思い、
#contact.php
$_GET['url'] = '/contact/';
require '../cakephp/app/webroot/index.php';
#webroot内の.htaccessのindex.php箇所
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
こんな風にしてURLリンク(example.com)にアクセスしたんだけど、
「Contact.phpController could not be found.」ってエラーが出た。
やっぱ、public_htmlをアプリケーション化しないと無理なのかな?
594:nobodyさん
13/12/03 00:14:57.84
突っ込みどころ満載すぎてどこから書けばいいのか
595:nobodyさん
13/12/03 08:50:43.83
>>594
一個ずつ突っ込んでくれ
596:nobodyさん
13/12/03 09:30:31.38
>>595
漫才みたいになるけどいい?
597:nobodyさん
13/12/03 13:43:20.44
OK
598:nobodyさん
13/12/03 14:19:05.43
まず、ファイルとかパスの名前を正しく書け。
全部小文字なわけがない。
599:nobodyさん
13/12/03 16:50:09.45
>>598
え??
600:nobodyさん
13/12/03 18:25:14.17
はい、ネタ続けて!
601:nobodyさん
13/12/04 09:36:02.64
メールフォームだけ作るのって、逆に面倒でもはや他の人に投げたいレベル。
なんか公開されてるのでやろうと思っても、なんか古いCGIを思い出させるのしかないんだよねぇ。
ちょっとバリデーションのところをカスタマイズしたいなと思っても、手を入れにくいし・・・
602:nobodyさん
13/12/04 09:51:23.15
PHPはいつまでも古い情報が検索の上位に出てくる
たとえ情報が間違っていて時代遅れでも検索上位にあるから初心者に利用されやすい
どんどん変なやり方や糞なプログラムが広がる負の連鎖を断ち切れなくなっている
The Right Wayみたいなベストプラクティスをまとめたサイトが現れるってことは英語圏でも事情は同じってことだな
603:nobodyさん
13/12/04 09:55:24.07
PHPを書いている人はあまり小さいライブラリを活用しない印象があるなあ
素のPHPかフルスタックフレームワークか完成品かという感じ
604:nobodyさん
13/12/04 09:57:37.43
どうでもいい雑談になっちゃうけど
htmlspecialchars_decode ってすごい関数名だよなあ
じわじわ笑いがこみ上げてきた、どうしてこうなったんだろ
605:nobodyさん
13/12/04 10:09:33.35
>>603
メールフォーム程度だと悩む
まともにテストしてあるライブラリを探す手間を惜しんで
自分で全部書いてPHPの謎関数名や謎仕様を再び実感する羽目になる
606:nobodyさん
13/12/04 10:49:10.54
だいたいメールフォームってPHPを勉強しだした頃に作るからな。
当然、その頃と今ではだいぶ書き方も変わってるわけで、
「昔自分が作ったプログラム」を使いたくないから、1から書きたくなる。
607:nobodyさん
13/12/04 23:45:10.66
>>604
もともとオブジェクト指向ではなくて
名前空間がなかったから。
名前が被らないようにしようと思えば
どうしても名前は長くなる。
608:nobodyさん
13/12/04 23:46:52.74
>>605
メール受信じゃなくて送信だろ?
HTMLメールや添付ファイル付きメールを
送ろうとでも思ってるの?
メールフォーム程度なら
文字をエンコードする程度で終わりだろ?
609:nobodyさん
13/12/05 00:13:14.38
>>608
画像認証
610:nobodyさん
13/12/05 00:24:35.97
真面目にやるなら外部からの入力は徹底的にチェックするのが基本だよな
GETほど手軽じゃないにせよPOSTのパラメータだってCookieだってリクエストヘッダだって好きにいじれるんだから
自分が書いたHTMLのフォームで設定した以外の値が送られてくる可能性は大いにある
それに一口にメールフォームと言っても入力が名前とコメントだけのものから企業のアンケートフォームまで色々ある
電話番号・郵便番号・メールアドレス・整数……よくある項目に対して毎回1から入力チェックを書く気はしないな
CSRF対策や二重送信防止・画像認証も1から書くのは時間の無駄だし
確かにCakeを持ち出すのは大げさかもしれんが馬鹿が素で書くよりマシじゃね
611:nobodyさん
13/12/05 00:41:23.84
今どきメールフォームを1から書いて割に合うの?
Webサイト全体をCMSやFWで構築するって話だとフォームは標準装備って感じじゃない?
昔みたいにメールフォーム設置3万円~とかまかり通らないでしょ?
おしえてぷろのひと
612:nobodyさん
13/12/05 09:41:31.15
cake2系に対応したbaserCMS3がついにリリースされたそうな
URLリンク(basercms.net)
613:nobodyさん
13/12/05 10:21:18.03
で、Cake3のリリースが迫っていると・・・
614:nobodyさん
13/12/05 10:27:58.21
こないだやっと苦労してCake2にしたばかりなのに、もう3へ以降なんてやらんぞ
615:nobodyさん
13/12/05 10:38:50.61
>>614
basercmsってcakephpプログラマーからして使いやすいん?
使ったこと一度もないわ。
616:nobodyさん
13/12/05 10:45:00.73
CMSって言っても特別な機能が入ってるわけじゃないし、
cakeに慣れてる人はcake使うからなw
617:nobodyさん
13/12/05 12:08:21.04
ようやくCakePHP2になったとはいえ、基本的に古いCakeになるから、
Cakeベースってとこも、最新のが使えないという不便さはあるしなー
618:nobodyさん
13/12/05 12:23:17.69
今、静的ページと動的(Cakeベース)ページの共存作業をしてるんだが、
レイアウト使わないほうがいいな。
ヘッダー、フッター、サイドバーなんかはelementでまとめて
ピュアPHPのようにHTML上にコード埋め込む形の方が、
デザイナーとの共同作業時に捗るわ
619:nobodyさん
13/12/05 13:37:55.86
baserCMSは触ってみたけどCakeなだけあってWPよりは断然構造把握しやすかった
カスタムできるお問い合わせフォームがついてるのは嬉しい
ただプラグインもテーマもまだまだ少なすぎる
デフォの機能で間に合うサイトなら使えなくもないかな―
620:nobodyさん
13/12/06 02:33:30.99
>>618
それで捗る理由がわからん
621:nobodyさん
13/12/06 09:58:37.69
>>620
レイアウトだとCakeの言語要素が強いから理解するまで難しいけど、、
elementだけなら、includeとかDreaweaverの挿入感覚で使用できるから、
Webデザイナーは一部の修正だけで済み、言語知識を必要としない。
故にWebデザイナーへの説明や、ビューの修正を依頼するときにわかりやすく、
自分の仕事(プログラミング)に専念できるから捗る。
ここまで書く必要ありましたかね・・・
622:nobodyさん
13/12/06 10:13:37.67
>>621
わかりやすくて良い!
623:nobodyさん
13/12/06 11:24:56.76
バーチャルホスト設定しているCentOSのサーバでCakePHPの勉強をしたいのですが、
/home/hoge/public_html
/home/fuga/public_html
こんな2つのディレクトリがあった場合、各public_html直下に
Cake本体のディレクトリを配置する感じになるんでしょうか?
624:nobodyさん
13/12/06 12:02:18.41
>>621
レイアウトもエレメントも同じ仕組みで出来てるし、
その説明読んでも、あえて避ける必要性を感じないなぁ。
自分のアプリの見直してみても、
レイアウトもエレメントもビューも、全部HTMLに多少のifやforeachやヘルパーが入ってるだけで、
レイアウトだけなにか難しいってのは無いように見える。
てか良く考えたら、デザイン側の人にわかんねぇよって言われたこと無かった。
625:nobodyさん
13/12/06 12:27:57.95
>>623
慣れるまで最初はそれでもいいかもしれんけど
複数のアプリを作ったりしたくて、サーバ丸ごと触れる環境なら
cakephp本体は/usr/local/libとかどこかに1つ置いて
ユーザーディレクトリの中にappの中身を置くようにするのがいいと思う
URLリンク(book.cakephp.org)
626:nobodyさん
13/12/06 13:57:26.35
>>625
レスありがとうございます。
こういう方法があるんですね。
試してみますー
627:nobodyさん
13/12/06 19:30:44.10
>>624
「METAタグ挿入したいんだけどどうしたらいい?」
「CSSやJavascriptは?インラインで書きたい時もあるんだけど」
「titleタグもページごとに変更したいんだよね」
「そうそう、パンくずリストはどうするの?」
え~まだまだ続ける?これら全てCakeの機能で実現できるけど、
Cakeを知らない人は出来ないよね。その前にPHPか。
デザインもプログラムも出来る人なら問題ないかもね。
628:nobodyさん
13/12/06 19:57:56.87
デザイナにプログラム知識を要求するのは、プログラマの怠慢だと思うな。
629:nobodyさん
13/12/06 23:30:47.19
プログラムを使ってでしか出来ないものを
やろうとするのが根本的な問題。
だから「お前には無理」で終わればいい。
630:nobodyさん
13/12/07 02:09:10.25
>>628
プログラマーってのは、デザイナーのために仕事してんじゃねーんだよ。
631:nobodyさん
13/12/07 03:04:09.81
>>630
それ、逆も言えるよね
632:nobodyさん
13/12/07 03:05:33.58
仲良くしよう。
できるプログラマーは、デザイナーの事を考えて作る。
できるデザイナーは、プログラマーの事を考えてデザインする。
そう思うんだよね。
633:nobodyさん
13/12/07 03:16:42.52
どちらも、ユーザーや客やクライアントのことを考えて仕事するべきだろ。
で、自分の領域の仕事をこなす上で必要な知識は身に付けていかないとダメだと思うんよ。
634:nobodyさん
13/12/07 03:21:24.80
2ちゃんでは正論は伸びない
635:nobodyさん
13/12/07 07:23:32.80
何の話かよくわからんが
かわいいデザイナーの娘と仕事がしたい
636:nobodyさん
13/12/07 10:04:31.60
2.3なんだけど、shellのコマンドを実行すると、modelが見つからないとエラーが出ます。
これがいつもじゃなくて、時々起こります。
なんでだろ~?
637:nobodyさん
13/12/07 10:09:45.65
CakePHPのビューで読み込むJavaScriptのテストがしたい
ビューのテストはどうやればいいの?調べてもヘルパーのテスト方法しか出て来ない
638:nobodyさん
13/12/07 10:30:48.05
>>635
まったくだな
639:nobodyさん
13/12/07 12:21:40.57
なんかデザイナとプログラマを同列に考えてる人多いけど、デザイナのほうが上位だからな。
デザイナー様に無理難題ふっかけるなよ。
640:nobodyさん
13/12/07 12:30:01.21
>>627
Cakeってそんなに使えないレイアウトのViewしかないんだっけ?
641:nobodyさん
13/12/07 14:55:19.27
>>635
かわいいけど、HTMLとCSSもおぼつかないイラレ使いのデザイナーとなら、仕事したことある。
642:nobodyさん
13/12/07 14:58:21.59
>>637
JavaScriptはJavaScriptとしてテストしたらええやん。
画面としてテストしたいならせれにうむを使うやん。
643:nobodyさん
13/12/07 15:06:54.00
>>642
別にそれでもいいんだけど、テスト用のHTMLやJSはCake内のどこに置くのが定番なん?
644:nobodyさん
13/12/07 16:41:30.86
>>640
使える・使えないの問題じゃなくて、
Cakeの仕様をデザイナーにも覚えさせるのか?
ってことだと思うが。
645:nobodyさん
13/12/08 01:28:28.09
【質問】
PHPUnitでHttpヘッダーのステータスコードをチェックするテストコードを書きたいが、
わからない。
【調べたこと】
公式で$this->headersにデータが入っているようなことが書いてあるが、取得できない。
・テストコード
$this->testAction( '/hoge.json', $request ); // 内部でステータスコードを変更するコードを出力
$this->headers // array() が出力される
・エラーコード発生場所(HogeController.php)
$this->response->type( 'json' );
$this->response->statusCode( 400 );
$this->response->body( json_encode( $body ) );
$this->response->send();
$this->_stop();
【前提】
RESTfulなコードを書いている。エラーはステータスコードを4XXや5XXなどとして、
コーディングしたい。
【環境】
CakePHP2.3
646:nobodyさん
13/12/08 17:12:58.59
HTTPレスポンスヘッダを持ってるのはCakeResponseな
$this->response->header(); //全取得
$this->response->header('Server'); //Serverの値取得
$this->response->header('Server', 'foo server'); //Server: foo serverをセット
647:nobodyさん
13/12/08 17:17:32.39
$thisの意味わかってんのか心配になるな・・・いやまさか
648:645
13/12/08 20:13:36.09
レスありがとうございます。
>>646
CakeResponseの値を確認する場合は、
テストコード上ではHogeControllerのインスタンスはどのように持たせればよいでしょうか?
$this->testAction( '/hoge.json', $request );
$this->Hoge->response->header();
ModelでのテストではClassRegistry等を使ってsetupで
テスト側にインスタンスの持たせるかと思いますが、
Controllerのテストではどのようにインスタンスを持たせるのでしょうか?
649:nobodyさん
13/12/08 20:20:56.25
>>648
ID出せよ
650:nobodyさん
13/12/08 22:01:22.39
テストってのはさ、どんなものでもテストしてやるぞ!って
意気込みで望むものではなくてさ、
テストがしにくいものを無くすぞって考えてやるべき。
テストしにくい所のコードをついばんでいって、
テストしやすい形に抜き取っていって、
最終的にどうしてもテストしにくい部分だけ最小限にして残す。
テストしにくいと思ったら、そのままのコードで残したらダメだよ。
そのままのコードでテストするなんて愚の骨頂。
651:nobodyさん
13/12/08 22:31:39.34
>>650
いい事言ってだんろうけど、わかりにくい。わかりやすくお願いします!
652:nobodyさん
13/12/08 22:32:26.91
あーわかった。
ようは、テストもできねーようなコード書くなということか。
653:nobodyさん
13/12/08 22:43:19.55
テストできるぐらいの役割に分割しないとね
654:nobodyさん
13/12/08 23:02:00.09
テストがしにくいコードってのはあるし、
テストをする意味が無いコードもあるんだよ。
一連の処理の中から冗長なコードを取り除いていくと
最終的にはコードというより定義に近くなる。
PHPのスレだからまあ、WordPressのは例を出すと、
wp_config.php これは一応PHPのコードだろ?
だけどこれをテストする意味が俺にはわからない。
設定ファイルでもない限りここまで定義のみに
できることはないけどそれでもテストする意味あるのか?って
思えるほど減らすことは出来るよ。
テストは後付で加えるものじゃない。
テストが出来るようにコードを書いていくんだ。
テストがしにくいと感じたら、テストを書く技術を磨く前に
テストがしやすいコードを書く開発技術を身につけるんだ。
655:nobodyさん
13/12/08 23:13:20.11
>>645なんてそういうことだよ。
> 【質問】
> PHPUnitでHttpヘッダーのステータスコードをチェックするテストコードを書きたいが、
> わからない。
> $this->response->statusCode( 400 );
って書けば、当然HTTPヘッダのステータスコードは400だろ?
「400という数値を与えれば、それがHTTPヘッダーになる」というテストは必要だよ?
でもそれはCakePHPが開発元がやってるテスト。
400を与えれば当然HTTPステータスは400だし、404って書いていれば当然404だろ?
これ、ただの定義じゃないか。そんなのテストする意味が無い。
ではなくて、本当にテストするべきなのは400になる原因の方だよ。
なんかのデータを引数にしてなんかの処理をやったらエラーになるんだろ?
それをテストするべき。
そのエラーを最終的に400としてクライアントに伝えるというのはただの定義でしかない。
656:645
13/12/08 23:53:33.88
>>655
(釈迦に説法ではありますが)RESTfulな設計思想で、エラーを発生させた場合にはエラーメッセージと共に
200以外のHttpステタースコードを投げるのは、異論はないと思います。
論点としては、「RESTful」な設計だとしても
エラーを発生させるような処理を確認するテストの場合に、
エラー発生を「HTTP status code等」でテスト結果を確認すべきか否か?
というところを言いたいのだと思いますが、、、、ここは議論の余地があるかと思います。
> そのエラーを最終的に400としてクライアントに伝えるというのはただの定義でしかない。
現状、クライアント側の実装でも、
「ステータスコードを見て処理を振り分ける」処理があるため、
テストをやっておいた方がいいのではないかと思った次第です。
>>648 についてですが、
testActionなどの後では、$this->controller でインスタンスに
触れるようですが、、、 responseの内容は相変わらず取得できません。
657:nobodyさん
13/12/09 00:29:29.65
>>656
やらないよりはやったほうがいいけど、意味が少ないというだけ。
そして、費用対効果まで考えるとそこまでやる意味ないんじゃないってこと。
なぜなら400を返すまでのコードが正しければ絶対400返るでしょ?一回確認すれば十分じゃない?
その400を返すコードは400を返すという仕様そのものが変わらない限りもう変えることはないでしょ?
それよりも複雑なのは400を返すまでの仮定であってその仮定が正しければ400返すでしょ?
そういう難しくもなく安定したコードのために、どうやってテストをすればー
なんて言うのなら、やっても時間がかかるだけで効果が無いと思うよ。
> 現状、クライアント側の実装でも、
> 「ステータスコードを見て処理を振り分ける」処理があるため、
もしかしてサーバーとクライアント一緒にしてテストしてない?
サーバー側の実装がどうであれ、400が返って来た場合のテストをすればいい。
だから400を返すだけのアプリ(モック)を使えばいい。
もっと言えば、クライアントだけで400が返って来たかのようにエミュレートさせれば
クライアントだけでテストできる。
どんなものでもテストしてやるぞ。ではなくアプリに手を加えてテストが簡単にできる
ようにするというのはこういう話。
658:645
13/12/09 01:07:18.47
>>657
引き続き、お付き合いいただきありがとうございます。
全体的なテストの思想、手法のお話しについては概ね同意いたします。
(クライアント側はSinon等を使っており、おっしゃるようなテストを書いております)
ご教示いただいている、お話しについては
「○○のようなテストはやるべきか、やらないべきか?」という形に収束しつつありますので、
スレに添う、単純なCakePHPの
「○○の実装の方法は?」というような部分について引き続き、お知恵をお借りできれば幸いです。
659:nobodyさん
13/12/09 01:10:16.11
>>658
無駄な努力を頑張れやw
660:nobodyさん
13/12/09 01:43:48.55
URLリンク(api.cakephp.org)
わざわざ$this->headersに入れてるし、普通ならちゃんと入ってるものっぽい気がする。
でも入ってないって言うなら、testAction()からvar_dump()仕込んでって追いかけるしかないんじゃね?
661:645
13/12/09 01:53:31.21
自己解決しました。
ありがとうございました。
先の例では、
$this->testActionのあとに
$this->assertEqual( 400, $this->controller->response->statusCode() );
$this->assertEqual( "something", $this->controller->response->body() );
$this->assertEqual( "json" $this->controller->response->type() );
のような形で対応できました。
お騒がせしてすみません。
662:645
13/12/09 01:55:29.19
>>660
こちらの例では。
$this->headersはarray()になっており、
$this->controller->header() はNULLになっていました。
663:nobodyさん
13/12/09 11:11:00.28
>>662
$this->controller->header() なんてのCakePHPに無いぞ?
そのリンク先にもそんなコードはないし、そもそもCakePHP本体のコードだし・・・
664:nobodyさん
13/12/09 11:48:24.86
クラス名も書かず$this $thisって・・・メソッドで判断できるからまあいいけど
問題にしてるクラスが何かってことくらい明確に書いたほうが回答者が質問の意図わかりやすいと思うの
あとRESTfulかどうかってステータスコードの扱いと何か直接的な関係あるの?
ステータスコードを適切に設計するのはREST以前の問題でしょうに
665:nobodyさん
13/12/09 12:09:57.41
チラ見しただけだけど
確かに>>660の言うとおりControllerTestCaseクラスの_testActionメソッドを見る限りは
ちゃんと$headersプロパティにレスポンスヘッダの情報が入るようにみえるね
その前の条件分岐によっては入らないケースがあるのかな?
666:nobodyさん
13/12/10 18:08:28.36
PDOでCake風に使えるライブラリを書こうとしたけど、面倒で止めた
667:nobodyさん
13/12/10 18:16:34.35
>>666
cakeを使おうと思わないのは何故なんだろう?
668:nobodyさん
13/12/10 21:50:48.63
>>667
Cakeだと規模が大きくなりすぎるし、ファイル数も多い。
それに既に運用しているサイトだと、
Cake使わないほうが静的ファイルとの共存がしやすい。
669:nobodyさん
13/12/10 22:48:38.38
俺、人の作ったcakephpとか触ったことないんだけど、みんなは、DB設計とかめちゃくちゃでも我慢してその上からコードを編集するの?
670:nobodyさん
13/12/11 00:30:44.85
DB設計?モデルのことか?
プラグインなんか使う時は自分のやり方と違うから戸惑うけど、
気にせずに編集していくな。
671:nobodyさん
13/12/11 10:49:31.96
引き継ぎ案件の話なんか?
672:nobodyさん
13/12/11 16:23:21.68
DBの命名規則がよくわかりません。
例えばユーザテーブルを「users」という名前でつけたとして、
ユーザが所持しているアイテムを管理するテーブルを作りたいとします。
そういう場合は
user_items
users_items
どっちの名前が適切なんでしょうか?
673:nobodyさん
13/12/11 16:53:19.79
>>672
ただの items
でitemsテーブルの中にuser_id
674:nobodyさん
13/12/11 17:43:03.38
>>673
なるほど。
関連するテーブル名を連結させる必要はないんですね。
ありがとうございました。
675:nobodyさん
13/12/11 19:34:39.55
接頭辞として使う場合もあるよ。
その際は、user_itemsが正しい名前になる。
676:nobodyさん
13/12/11 20:01:39.21
>>671
引き継ぎ案件。
自分で昔作ったサイトとかもリニューアルする時、DBが複雑になってる時があって構造を直すんだけど相当手間だし、バグの原因になる。
こういう場合はみんなは
そのまま使うか、構造を変えるかどっち?
677:nobodyさん
13/12/11 20:35:59.75
引き継ぎで、その後のメンテナンスの必要性が明確じゃない時は
なるべくそのままにしておく。
長期間の保守契約も含めた場合は話は別。
自分のサイトなら極限まで自分の好きにする。
じゃなきゃ自分でやる意味なくない?
678:nobodyさん
13/12/11 21:44:14.31
>>677
ありがとう!
679:nobodyさん
13/12/11 23:56:50.75
どういたしまして
680:nobodyさん
13/12/12 01:28:30.30
>>679
誰だよお前w
681:nobodyさん
13/12/12 01:30:43.56
>>680
俺だよ! 誰なのかあててみ!
682:nobodyさん
13/12/12 03:41:11.74
>>681
俺かよ!マジかよ!ざけんなよ!
683:nobodyさん
13/12/12 04:05:39.56
いや、ここは俺が。
684:nobodyさん
13/12/12 05:30:01.88
ようじょ、ようじょ
685:nobodyさん
13/12/12 11:49:32.21 G/DBAFTk
cakephp1.3で$this->Auth->user()でもってこれる情報って
1つか、もしくは全部?
idとusernameの二つの値を持ってきたいのですが、
どなたかご存知の方いたらお願い致します。
686:nobodyさん
13/12/12 11:59:53.86
>>685
1レコードそのまま取れなかったっけ?
687:nobodyさん
13/12/14 00:57:14.30
cakephp1を、そのままcakephp2にしてくれと言ったら、いくら取る?
俺なら最低20万円。
688:nobodyさん
13/12/14 02:23:18.09
20万~2000万ぐらいだな。
689:nobodyさん
13/12/14 02:25:37.01
>>687
まぁ規模によるよね。
690:nobodyさん
13/12/14 02:40:33.10
俺も今 php4 + CakePHP1.1 で稼働しているサイトを php5.4(以上)のサーバーで
稼働できるように頼まれるかもしれない。
工数が全く見えないんだけどどうやって見積もり取ればいいんだろう。
691:nobodyさん
13/12/14 02:41:06.36
規模もだけど現在のコードによる。
cakephp2を考慮して正しく書かれたコードと
全く考慮しない上に、間違った使い方ばかりした
汚いコードでは100倍ぐらい差がでても不思議ではない。
692:nobodyさん
13/12/14 02:44:20.85
>>690
移行ではなく、全部最初から作り直しの工数を見積もればいいよ。
仕様を0から考える時間 or 現在のシステムを理解するのにかかる時間
+
0から開発した時の時間。
決して、今あるコードを再利用できるから
開発時間が短縮できると思ってはいけない。
再利用できるように使えるように作られたコードであれば再利用できるが、
使えるかもしれないというコードは、基本的に使えない。
693:nobodyさん
13/12/14 03:06:53.02
問題は、自分が過去に作った場合だな。
蔵からしたら「お前が作ったものを新しくするだけだろ?」
ってなもんで、予算をとってもらえないことが多い。
だったら諦めろって話だが、そこで終わると仕事に繋がらないわけで、
結局は安く請け負ってしまうんだよな
694:nobodyさん
13/12/14 03:30:14.45
>>691-693
おぉ、色々ありがとう!
参考にさせてもらう。
これ、たぶん、断るわw
695:nobodyさん
13/12/14 10:36:42.60
>>693
そういう理解の客って、そもそもCakePHPを新しくするって発想すら出てこないんじゃないの?
目の前には動いてるプロダクトがあるわけで、やって欲しいのは機能の追加とかであって、
機能は増えないし変わらないけど、CakePHP2にするってことじゃないと思うんだが。
逆にCakePHP2にする事の意義を知ってる客なら、
それが簡単じゃない事も知ってるはずだと思った。
696:nobodyさん
13/12/14 17:19:20.55
>>695
「もっと動作を早くしてほしい」とか「サーバを変えたい」って場合がある。
または、自分がCake2用の開発に切り替えてて、
ライブラリもCake2用に作っている・使用している場合とか。
つまり、「現状より良くしたい」という要求に対して
「開発方法を変えないと出来ません」
ってなったら客も怒るだろ?こっちの事情はともかくとして。
ずっと1.3系&PHP4系を使い続けるならともかく、
技術の進化と客の要求に対応するなら、
どこかで折り合いをつけなければいけない。
697:nobodyさん
13/12/14 22:46:14.15
古いとセキュリティがどうのこうの…とか言ってみれば
698:nobodyさん
13/12/15 00:01:11.18
cakeの1系->2系なんてほとんど互換性ないだろ。
バージョンアップのメリットないから。
699:nobodyさん
13/12/15 01:04:45.89
>>696
開発方法を変えるなんて言う必要ないよ。
勝手に変えればいい。
どうせ客に言っても理解できない。
700:nobodyさん
13/12/15 01:12:59.53
>>696
> 技術の進化と客の要求に対応するなら、
> どこかで折り合いをつけなければいけない。
なんか他人のせいにしているように聞こえるけど、
それ、技術力がないからだから。
君に足りない技術はね。今のコードを
新しいコードへ連続的に変化させていく技術だよ。
どうせ、今のを捨てて書きなおすことしか思いつかないんでしょ?
この変化させていく技術力があれば、1系でも2系でも動くコードがかける
PHP4系でもPHP5系でも動くコードがかける。
動かないコードを動くように変えることが出来る。
古いコードを新しいコードから利用できるように出来る。
新しいコードを古いコードから利用できるように出来る。
今の君は、このようなことをするのに何が必要かわからず
またわかったとしてもそれを実現するだけの力がない。
ゴールを見据えてそこまで至るルートを見つける力がない。
ルートがわからないからいつまでたってもゴールに辿りつけない。
701:nobodyさん
13/12/15 01:13:50.99
>>699
その勝手に変える作業に金出してもらえないって話じゃないか?
702:nobodyさん
13/12/15 01:15:42.18
>>701
そんなもん、普段の開発費に含めればいいじゃないか。
703:nobodyさん
13/12/15 01:22:24.83
>>700
君の非難はちょっと違うと思うんだよ。
俺がオレオレフレームワークなり、ライブラリを作った上で
「PHPのバージョンが変わったら全て書き換えないといけない」
的な事を言い出すなら、「技術がないだけ」って切り捨てるのもわかる。
でも、CakePHPというフレームワークでの話だろ?
Cakeが1.3→2に変わっても、君の言うようにどのバージョンでも
動けるコードになっているかな?なっていないよね。
もちろん、「CakePHP選んだお前が悪い」っ
てのなら自身の選択ミスだ。俺が悪い。
だが、俺の言う「折り合いをつける」ってのは、
「なんだかんだ言われてもやる」なんだけどな。
>>693の書き込み見てくれればわかると思うが。
704:nobodyさん
13/12/15 01:34:39.31
>>703
やっぱり技術力がないだけ。
CakePHPを選ぶのが間違いとかそういう話ではない。
何を選ぼうが未来がどうなるかはわからない。
安全な未来を選ぶ力が重要なのではなく、
どんな未来が来ても、そこに至るルートを見つける力が重要。
まず、フレームワークは使うが
本質的なコード=重要なコード=大部分のコード
というのはフレームワークに依存しないように作る。
(作れるのが技術力)
フレームワークにべったりくっついた設計にするのではなく
フレームワーク ⇔ 薄い中間層 ⇔ 大部分のコード
こういう設計にしておく。フレームワークは変わるのは
当たり前の話なんだから、最初からそうすべきと判断する
(これも技術力)
> Cakeが1.3→2に変わっても、君の言うようにどのバージョンでも
> 動けるコードになっているかな?なっていないよね。
フレームワークに依存しまくるから、動かないコードが”大量に"できる。
フレームワークに依存しない部分を大量にして、依存している部分を
最小限にしておけば、動かないコードを最小限の力で移行させられる。
CakePHP1.3の時代に、まだ見ぬ2に対応することは不可能だが、
CakePHP1.3の時代でも、フレームワークが無いとみなして作るのは可能だ。
705:nobodyさん
13/12/15 01:43:20.20
フレームワーク等、バージョンが違ったとき
互換性が100%でないのは知っているし100%の互換性はないのが普通。
URLリンク(book.cakephp.org)
> 2.0 移行ガイド
> このページはプロジェクトを2.0に移行する手助けをする、
> CakePHP 1.3からの変更点の要約をします。 またこれは、コアへの
> CakePHP 1.3ブランチからの変更点への最新の開発者リファレンスともなります。
> 必ずこのガイドにある新機能とAPIの変更の全てのページを読んでください。
こういうのもある。たいていの有名どころであれば移行する手段は用意されている。
これを読めば、何が良くて何がダメでダメなものはどう対処すればいいかわかるはず。
こういうのを読んで、移行できない問題点を見つけて、すぐに諦めてるでしょ?
移行っていうのは、自分の作ったシステムのフレームワークを入れ替えて
そのままじゃ動かない。あーだめでした。もうお手上げだー。
移行できない。いつまで延命できるかなー。ってこういうものではない。
移行できないものをどうやれば移行できる形にできるか見つけて、
直して、必要ならば新旧両対応できる書き方に書き換えながら、
移行できない問題点を潰していくのが本当の移行の仕方だ。
これが技術力なんだよ。
706:nobodyさん
13/12/15 01:47:21.85
>>704
君の非難を素直に受けるし、技術が無いのも確かだろう。
でも、怒りの矛先を向けるのは俺じゃないと思うんだが。
君は技術ありきで話をしているけど、話の最初は>>687だよ?
君が作った素晴らしいコードなら、1.3だろうと2だろうと3だろうと
チョチョイのチョイでバージョンアップできるから、困らないかもしれないね。
だから、バージョンアッップ後の更新作業をしてもお金取ろうとしないのかもね。
でも、そういう考えならやっぱり俺が提示する
「技術の進化と客の要求に対応して折り合いをつける」
ってな事にならないかな?
そもそもスレの流れをちゃんと見てるか?
ちゃんと見ないのに非難する人間って技術力高いのかなぁ。
707:nobodyさん
13/12/15 01:51:11.60
>>706
> 君が作った素晴らしいコードなら、1.3だろうと2だろうと3だろうと
> チョチョイのチョイでバージョンアップできるから、困らないかもしれないね。
それは大きな勘違い。
未来なんてわからないし、最初は技術力低いのが当たり前
フレームワークなんて難しい物を、最初から完璧に使いこなすことなんて不可能。
最初から素晴らしいコードなんてかけるわけがない。
じゃあどうするか。
それが連続的に変化させていく技術力だよ。
高い開発技術ではなく
汚いコード(古いコード)から、綺麗なコード(新しいコード)へ
変化させていく技術力。
それが圧倒的に足りない。
708:nobodyさん
13/12/15 01:52:59.47
具体的にどんなコード書いてるんだかw
全部ラップしてるんでしょ?オーバーヘッドえらいことになるやん
709:nobodyさん
13/12/15 01:55:27.23
>>707
だったら、それを俺じゃなくて
「Cakeのバージョン変えたいけど、お金もほしい」
って奴に言ってくれよ。
俺はどちらかというと、あんたみたいな考え方だよ。
向上心もなく、単に金がほしいなら
「技術の進化と客の要求に対応して折り合いをつける」
ってな言い方はしないだろ?
どこがあんたの気に触ったのかしらないけど、
頼むからスレの流れを読んで非難してくれ。技術云々を語る前にな。
710:nobodyさん
13/12/15 02:20:52.91
普通に考えて、必要なのは技術力でなく交渉力だと思うんだな。
711:nobodyさん
13/12/15 03:25:11.57
金出せよ(直球
712:nobodyさん
13/12/15 07:14:03.45
>>696
なんか俺へのレスから長々と続いてるみたいだけど、それは置いといて。
もっと動作を早くするとか、別のサーバーにのせるために、
CakePHP1から2にする必要があるなら、
それは客が負担するコストじゃね?
実際CakePHP2は1より早くなってるし、キャッシュエンジン使うとかリバースプロキシの導入とか、
他の手も考えてみて、CakePHP2化が有効なら、
後は普通に見積もって提案するのがいいと思った。
機能追加のために、CakePHP2用のライブラリが使えないことに関しても、
CakePHP2化してあれば、機能追加時に使えるライブラリの選択肢が増えて、
機能追加の見積もりが安くなるかもしれないから、コストかけてCakePHP2化しませんか?
って話にならんかね。
それで、CakePHP1のままって言われたら、機能追加は相対的に高めの見積もりになり続ける、と。
まぁCakePHP1で保守開発するのは、高めにもらってもあまりやりたくは無いけど。
713:nobodyさん
13/12/15 13:49:38.36
全部ラップするくらいならオレオレフレームワーク作れよと。
フレームワークの上にフレームワーク乗っけてるようなもんだから
何がやりたいのかわけわからんわ。
どんなにラップしようがcakephpのバージョン上がったら
それに合わせて書き換えないと動かないんだから
それならはじめからラップなんてしなくていいのよ。
ビジネスロジックだけ分けておくとかならともかく。
ばかばかしいわ
714:nobodyさん
13/12/15 15:02:58.71
>>713
御意。
715:nobodyさん
13/12/15 21:35:08.31
>>713
> 全部ラップするくらいなら
誰がそんなこと言ってんの?
716:nobodyさん
13/12/15 21:36:55.56
あぁ、こいつか。>>708
> 全部ラップしてるんでしょ?オーバーヘッドえらいことになるやん
いきなり的はずれなこと言い出したのはこいつだな。
こいつ以前にはラップという話は出てきていない。
なんでラップなんかするんだか。
717:nobodyさん
13/12/16 13:36:53.84
上の方で、バージョンの差異を吸収出来る様に云々って言葉が出てきたから、
ラップって言ったんじゃない?
なんか言っている事はすごく正論なんだが、金という最も大事な項目を考えないで議論している人がいる気がする。
現実と理想とで議論しても何時までもかみ合わないというか。
718:nobodyさん
13/12/16 17:10:04.70
>>712
みんな名無しなので話がややこしくなるが、
俺は>>693、696を書き、なぜか煽ってきた>>700は
「他人(客)のせいにするのではなく、自身の技術の無さを問題視しろ!」
と言ってるわけだ。
だが、俺はそもそも技術云々なんて論じてないし、
出来ない(やらない)とも書いてない。
俺の意見としては>>696に書いたとおり、
「客がバージョンアップを希望する場合もあるし、
だからといってその分のコストを請求し、納得させるのも難しいから、
どこかで折り合いを付けなければいけないね」
と言った、中立的な発言をしたわけだ。
開発者としてはバージョンアップでもお金欲しいけど、
客は見た目変わらないからお金を出しづらいね、みたいな。
なのに、なぜか「技術が無いから対応できないんだ!}みたいな非難をされている。
きっとレスの流れを見ずに一部だけを切り取って腹が立ったのだろうけど、
未だに俺のレスの何が癇に障ったのかはわからない。
719:nobodyさん
13/12/16 18:01:53.46
>>718
お金を出さない客のためになぜ働くんだろうか?
720:nobodyさん
13/12/16 22:23:01.69
>>719
俺が1.3→2.2にした時は、
フレームワークのバージョンアップとは言わずに、
他の機能を追加する面目で対応したよ。
1.3のままだと不都合を感じたし、蔵も新機能が欲しかったからね。
だけど、バージョンアップだけで見積請求してもいいと思うし、
それに苦言を呈してくる客に対してメリットを感じなければ、
付き合いを止めればいい。それだけの話だよ。
どっちの言い分も考えた上で発言しているだけだから。
721:nobodyさん
13/12/17 01:14:36.31
>>720
> 他の機能を追加する面目で対応したよ
それが普通
で、そういうことができないって言ってるんでしょ?
自分の書いたコードが1.3にがっつり依存してしまって
全部書き直しぐらいな、そうとう大変なことになってしまってるから。
だからフレームワークを使うのはいいが、
依存しまくらないようにしろという話。
それが出来ない奴は技術力無いってことよ。
そういったらなぜか全部ラップするとか言う
斜め上の対応策が出てきてワロタ。
そうか、技術力低いと、そういう間違った対応をするのか。
722:nobodyさん
13/12/17 01:16:55.25
>>718
> なのに、なぜか「技術が無いから対応できないんだ!}みたいな非難をされている。
違う違う。「技術がないから金がかかるんだ」って非難してる。
CakePHPの1系から2系へのバージョンアップなんて
>>720みたいに、他の機能を追加する名目で対応しろよ。
723:nobodyさん
13/12/17 04:19:56.51
>>722
どのくらい大変かは、アプリのボリュームにもよるだろうなぁ。
コンポーネントやビヘイビアをちゃんと書いて、DRYに作っていれば、
移行系は手を入れる必要がある箇所が少なくなって楽になるとは思うけど、
影響がある化も知れないアクションは全てだから、
ボリュームが大きいと、動作確認だけで大変になる。
テストを書いてたとしても、フロントの振舞いこみで確認しないと、
もしエンバグしたら事だからなぁ。
あと確か、1系から2系で、テストフレームワークが変更になった気がするし。
フレームワークのバージョンの移行なんて、ボタンひとつで出来るわけじゃないし、
時間を使う以上金はかかるよ。お仕事だもの。
単純に移行だけで、機能も増えないし見た目も変わらないとなると、
無知な客からすると、どんな見積もりを出しても高く見えるだろうけどね。
でも、無知な客はむしろよりコストを負担して欲しいわ。
724:nobodyさん
13/12/17 11:07:41.43
誰が誰だかよくわからなくなってるなw
725:nobodyさん
13/12/17 11:10:20.38
>>721
>で、そういうことができないって言ってるんでしょ?
「それが普通」って認めてるのに、出来ないって言ってるとは??
>>722
718=720なわけだが。レスの感じでわかると思ったけど。
726:nobodyさん
13/12/17 20:14:25.92
結論、世の中、金。
727:nobodyさん
13/12/18 02:28:32.22
かねくれかね
728:nobodyさん
13/12/18 08:28:28.95
ここ数年、Cakeを卒業したいと思いつつ、やはり金と時間が大事で
Cakeを使い続けてるわ…
729:nobodyさん
13/12/18 17:52:24.89
まあね、Cake以外を勉強する時間も
書籍に消える金も大切ですもんね。
730:nobodyさん
13/12/18 23:54:54.14
そんなみみっちい
731:nobodyさん
13/12/30 17:33:32.85
CakePHPよりいいフレームワークなんてないからね
732:nobodyさん
13/12/30 18:23:15.55
皆さん、良いお年を
733:nobodyさん
13/12/30 18:57:43.73
来年はPHP 6出ますように
734:nobodyさん
13/12/30 19:49:29.10
来年はCakePHP卒業
735:nobodyさん
13/12/30 19:50:02.15
ついでにPHPも卒業
736:nobodyさん
13/12/30 21:52:42.70
そして2ちゃんも卒業
737:nobodyさん
13/12/30 22:11:14.32
童貞も卒業
738:nobodyさん
13/12/30 22:45:31.59
ブラックIT会社も卒業
739:nobodyさん
13/12/30 22:46:21.83
人生も卒業
740:nobodyさん
13/12/31 03:34:51.36
マジレスするとCake PHPよりゆるくて俺俺ができるフレームワークないからCake最強
ただし引き継ぎは出来ないと思う
741:nobodyさん
13/12/31 04:17:37.80
Yii
742:nobodyさん
13/12/31 09:57:07.65
ああYiiを忘れてた
ゆるゆる具合が素晴らしいな
743:nobodyさん
13/12/31 11:56:15.23
ゆるいってどういう意味?
744:nobodyさん
13/12/31 12:18:53.48
Cakeは緩すぎてダメだ
次のシステムは別なのにするわ
Viewがひとつの<?php ・・・ ?>で括られてたり、モデルやコンポーネントを呼んでゴリゴリロジック書いてたりするシステムのメンテはもう無理
745:nobodyさん
13/12/31 13:22:04.12
>>744
URLに対応したファイルがあって、そこにあれこれ書かないと理解できない人たちの産物か
746:PHPスレ127
13/12/31 16:49:17.45 4Xz0mw7Z
PHPスレから来ました
Cakeで途中からMySQLのテーブルに列を増やしたんだがクエリがそれに追随して増えてくれん
そりゃ、$this->query()で直接書けばいいんだが、fetchなんかが増えた列に対応してくれん、、、
どこをなおせばいいんだ?
Model/*phpでdisplay属性に追加すればいいのか?
747:nobodyさん
13/12/31 19:02:25.74
>>746
>クエリがそれに追随して増えてくれん
普通はフィールドの変更は即座に反映されるぞ。
もっと詳しく書かないと何も言えんがな。
「display属性」って、もう何が何だか・・・
748:nobodyさん
13/12/31 20:06:02.40 8qYMp9pv
cakePHPだとどの位の大規模サイトまで耐えられるのかな?
749:nobodyさん
13/12/31 20:13:53.91
コントローラーが400個あるぐらいのサイトまでなら仕事したことある
750:nobodyさん
14/01/01 01:29:18.48
>>749
テーブル数はどのくらい?
751:nobodyさん
14/01/01 01:39:21.82
>>746
CakePHPは、スキーマをコードにしないので、
普通にModelのfind()を使えば、増やしたカラムは取得できるよ。
CakePHPを使っててfetchというメソッドは書いたことが無いから、何のことかわからん。
注意点としては、実はスキーマはキャッシュとしては吐き出されてるから、
このキャッシュが残ってて、カラム追加が反映されないというのはある。
運用モードのdebug 0だと、それなりの時間キャッシュされてる。
開発中ならdebug 2にしてるはずだから、それならキャッシュは毎回生成されるはずなので問題ない。
752:nobodyさん
14/01/06 13:53:28.04
3.0ついにきたか。
753:nobodyさん
14/01/06 17:42:05.41
Cakeで使わないフォルダって削除してる?
TestとかVendorとかLibとか。
それともデフォルトのままにしてる?
754:nobodyさん
14/01/06 18:02:00.84
使うから削除しない
755:746
14/01/06 22:30:53.31 nz1Q23oZ
>>753
Libは要るだろw
756:nobodyさん
14/01/07 00:08:21.82 uOROpRea
皆様の高い知見を期待してスレ違いの質問をさせていただきます。
世界中に事業者ユーザーを持っているサイトを運営しています。
ただ、ばかばかしいことに、彼らが本当に存在しているのか確信がありません。
本来であれば、事業者ユーザーの申請があったときに、手紙でアクティベート用のコードを送る云々などが本人確認には最適だと思うのですが、
実はこれ、費用が莫大になります。
実在する事業者だけを集めたい場合、何か優れた認証方法はないでしょうか?
757:nobodyさん
14/01/07 01:53:19.80
>>756
サイトを止めてみて、クレームをあげてきたのが本物のユーザー
758:nobodyさん
14/01/07 02:26:20.62
>>753
消す必要ないしなぁ
759:nobodyさん
14/01/07 02:28:06.56
>>756
登記簿謄本でも送ってもらえば?
760:nobodyさん
14/01/07 02:59:18.00
>>752
まだ開発版の最初期だ
今のペースだと今年いっぱいかかるだろ
パッと見た感じ、かなり変化してるな
761:nobodyさん
14/01/07 04:15:26.41 uOROpRea
>>759
グローバルで展開しているので・・・
762:nobodyさん
14/01/07 09:48:08.32
3.0安定版になってもたぶん2.4のままで行きそうだ
763:nobodyさん
14/01/07 12:32:14.31
>>756
本人確認だけならTwilioとか使って電話応答確認すれば
ある程度のフルイにはかけられるんじゃないかと思うが。
実体のある事業者かどうかなんてことは、
それこそ地方自治の役所ですら把握しかねるだろうから
諦めたほうが良いんじゃねぇの?
それじゃなきゃそんだけ採算取れる事業ってことなら
結局は金かけて調べるってことにしかならないと思う
むしろ安価でそれを調査できる仕組みを作ればそれだけで飯が食えるだろ
764:nobodyさん
14/01/07 15:04:00.93 uOROpRea
>>763
twilio、私も昨日の深夜に辿り着いて、色々調べていました
電話は他の一般ユーザーに登録させているので、その電話番号から認証すればOKということにするのが次善策なのかなと思いました。
事業者が一般ユーザーを装って、先回りで電話番号を登録してたら偽装しほうだいですが。
一般ユーザーに監視させ、疑いがある場合は手紙(住所)での認証を求めようかな。手紙は日本国内向けとそんなに変わらないので、件数さえ押さえれば何とかなります。
仰るように、日本の役所ですら全部把握するのは難しいですし、ある程度割り切りが必要ですね。
ありがとうございました。
765:nobodyさん
14/01/07 17:44:06.60
>>756
それってCakeで作ってるの?
766:nobodyさん
14/01/11 15:05:10.50 +1e/PKP4
Cake も PHPも初心者です。
ここを参考に写経しているんだけど、リダイレクト引数がわたってくれません。
URLリンク(libro.tuyano.com)
自分が書いたコード
URLリンク(codepad.org)
other の出力が dummy になってしまうので、引数がわたってないってことですよね?
redirectを2通りの方法で書いてますがどっちも同じ.
環境は Win8 + Web Matrix です。
767:nobodyさん
14/01/11 15:46:24.87
よくわからんがとりあえず、その仕組みはCakePHPの用語で言うところの
passed argumentsなので、リダイレクトはおいといてそれだけで確認してみたらどうだろう。
わかってるとは思うけど、デフォルトのルーティング設定なら、
example.com/contrllers/action/passed_arguments
こういうURLになるので、
example.com/sample/other/foo
これでアクセスして、送られた値= foo となるかどうか。
これが動く場合、リダイレクトした結果のURLと、上で確認したURLを見比べたら何かわかるかもしれない。
768:766
14/01/11 16:02:01.38
時刻フォーマット H:i:s のコロンがいけないみたいだと分かった。H_i_s ならうまくいく。
でも urlencode してるんだけどな。。。
IEの問題かとも疑ったけど、firefoxでも同じだった。
769:nobodyさん
14/01/11 16:26:13.52
>>768
ああ、そういうことか。
CakePHPにはpassed argumentsのほかにNamed parametersという仕組みがある。
これはkeyとvalueをコロンで区切ったものなんだ。
詳しくはドキュメント参照。
URLリンク(book.cakephp.org)
おそらく、/で区切られたディレクトリのようなURLでありつつ、
key:valueなパラメーターを渡すために用意された仕組みなんだろうけど、
通常のクエリーストリングとできること被ってるし、
CakePHP3では廃止されると聞いてる。
実際のところはよく知らんけど。
770:nobodyさん
14/01/11 22:11:29.88
>>768
特におかしな所無さそうと思ってコピペしてやってみたら普通に動いたけども
Mac Safari / Chrome共
771:nobodyさん
14/01/11 22:16:34.58
ちなみにController::redirect() に
$this->autoRender = false; が既に書かれているんで
リダイレクト時にはわざわざ書く必要はないっすよ
772:746
14/01/11 23:04:18.40 2cCSIQxG
モデルのアソシエーションって必要?
クエリで結合させてquery()に渡せば同じ事なの?
773:nobodyさん
14/01/11 23:47:21.89
>>772
絶対的に必要だと思うよ。
時間かけてでも学ぶべき。
query直でも同じ結果だろうけど、それじゃドライじゃないね。
774:nobodyさん
14/01/12 07:53:33.34
>>766
質問と関係ないけど
private function now_time(){
は、
private function _now_time(){
がいいよ。
public以外は関数名に_をつけるっていう。
あと文末の?>は不要。
775:nobodyさん
14/01/12 10:51:35.14 vGoVpF+Z
[mysql5 apache cakephp2]
バッチ処理中にテーブルロックをかけており、
バッチ処理中はクライアントからのselectをエラーとして返したいです。
こちらで試したものは、
innodb_lock_wait_timeoutを設定し、selectをタイムアウトさせる
というものでしたが
タイムアウトしませんでした。
どのようにすればタイムアウト(もしくはテーブルロックを検知)できるのでしょうか?
776:nobodyさん
14/01/12 15:44:58.79
よくわからんけどWRITEロックすればええんちゃうの?
777:nobodyさん
14/01/12 17:33:27.87
シェルからcakephpのcron動かす場合って、ブラウザ経由では動かないような重い処理でも動く?
共用サーバー、vpsの両方を使ってますが。教えて下さい。
778:nobodyさん
14/01/12 18:18:22.27
>>777
無理
779:nobodyさん
14/01/12 18:20:25.36
>>778
ありがとうございます。
780:746
14/01/12 19:23:52.45 eraGilbY
じゃぁアソシエーションで外部結合ってどうやってかくの?
781:746
14/01/12 19:51:04.52 eraGilbY
あ、モデルの片側にしか書かなきゃいいのか>>アソシエーションと外部結合
782:775
14/01/12 19:54:19.20 vGoVpF+Z
>>776
バッチ処理側でlock writeをしているので、
クライアント側からselectするとタイムアウトすると思われたのですが、
タイムアウトすることなく、ずっとクエリ結果を待っている。
さらに、クライアント側が結果を待っている間に、
バッチ処理側でunlockをすると、
クライアント側にphp実行時間オーバーというエラーが表示されます。
783:nobodyさん
14/01/13 03:03:19.61
>>777
重いってのがどの程度のことを言ってるのかわからないけど、
ユーザーを待たせすぎるような時間のかかる処理や、
集計みたいなユーザーのリクエストに拠らないし、時間のかかる処理は、
CakePHPのシェルで書いてcronから起動するってのはよくやるよ。
784:nobodyさん
14/01/13 03:04:51.41
>>782
ロックとかしないからよくわからんわ。
まぁ、その辺はPDOとMySQLの間の問題だろうし、
MySQLかPHPのスレで聞いたほうがいいじゃない?
785:nobodyさん
14/01/13 10:17:24.81
>>783
ブラウザ越しにやると、
30秒メモリーなんたらというエラーを吐く処理ですね。
786:746
14/01/13 10:36:55.49 tHg0j5+R
あれ、やっぱり外部結合がわからん、どーやってquery関数を使わずに
外部結合を実現させるんだ?
787:nobodyさん
14/01/13 10:57:22.69
>>786
find のパラメーターのjoinsをいじる
788:nobodyさん
14/01/13 11:54:04.96
>>786
has one
belongs to
has many
をググってみよー
789:nobodyさん
14/01/13 12:26:21.11
アソシエーションはCakeの最初の壁
790:nobodyさん
14/01/13 13:08:06.60
>>785
なんかエラーメッセージが混ざってる気がするが、
cronから起動したとしてもPHPが使えるメモリ上限はphp.iniに設定されているし、
実行時間上限も、確かされていたような気がする。
そのどちらも、ini_set()で変更可能だし、確かCLI用のphp.iniを用意する方法もあった気がする。
ともあれ、ブラウザ越しでは有効な実行時間上限とメモリ上限より、
大きい上限を設定してやればいい。
設定でメモリ上限を無限にすることもできるけど、当然積んでるメモリを使い切ったらダメだから、
重すぎる処理はダメ。
あと、VPSは仮にもroot権限あるだろうからいいけど、共用は無いと思うので、
メモリ上限とかを変更できるかどうかは、鯖しだいじゃね。
791:nobodyさん
14/01/13 13:12:00.94
has manyはJOINをしてるわけじゃないけどな
792:nobodyさん
14/01/13 14:00:43.33
>>790
詳しくありがとうございます。
助かりました。
793:775
14/01/13 15:02:01.49 qnOxD/aG
>>784
回答ありがとうございます。
他スレで質問してきます。
794:nobodyさん
14/01/17 13:54:07.36 G1JYixnY
みんな定数ってどうやって書いてる?
Model View Controllerのどこからでもアクセスしたい場合は
bootstrap.phpにdefineかConfigure::writeで書くのが
定石だと思うんだけど、配列の扱いが上手くいかない
扱う情報としては 1:man 2:woman 3:other という感じのシンプルなもので、
やりたいことは
1. 1というキーからmanという値が一発で取得できる
2. manという文字列から1というキーが一発で取得できる
3. radioボタンやselectボックスのoptionsにそのまま指定してフォームが作れる
の3点なんだけど
Configure::write('Gender',
array(
1 => 'man',
2 => 'woman',
3 => 'other',
)
);
って感じに書くと1と3は実現できるんだけど2の文字列からキーの取得が
array_keysとか使わないとできなくて多少面倒なんだ
何かうまい書き方があったら教えてくれ
795:nobodyさん
14/01/17 15:47:12.66
>>794
たしかphpも5から定数に配列をつかえるようになったんじゃないっけ?
俺もあなたと同じ方法でやってます。
796:nobodyさん
14/01/17 16:20:23.00
Configure ディレクトリ下に単純なgetterクラスの
ConfigureGender クラスみたいなのを作るというのは?
797:nobodyさん
14/01/17 16:23:24.34
俺も>>794みたいな配列作って1からmanに変換とmanから1に変換する関数をそれぞれ自前で書いてる
getKeyByValue( 'Gender', 'man' ) // 1が返る
getValueByKey( 'Gender', 1 ) // 'man'が返る
みたいな
こういう自前関数を1クラスにまとめてLib以下に置いてbootstrapでApp::usesしてる
798:nobodyさん
14/01/17 17:29:25.79
もうモデルにしちゃいなよ
799:nobodyさん
14/01/17 18:22:00.66
>>797
俺もほぼ一緒。
俺の場合、まとめ先がHelperになってる。
800:nobodyさん
14/01/18 01:54:27.23
>>794
って感じに書くと1と3は実現できるんだけど2の文字列からキーの取得が
array_keysとか使わないとできなくて多少面倒なんだ
Key/Valueだし仕方なくね?
というか、3のようにして作ったoptionタグから帰ってくるのは、値のほうじゃなく、keyである数字のほうでさ、
それをDBに入れるし、取り出して使うときは1の取得で文字列にして表示だから、困った経験があまり無いぞ。
2の取得をするって機会があんまないきがする。
あってもarray_flip()でひっくり返せば配列アクセスできるし、そんなに面倒かね?
801:794
14/01/18 19:26:16.46
多数のレスありがたい
値からキーを取るのは定数定義とは別に書いた方が良さそうだね
>>800
たとえばこんな感じでコントローラーやビューで使いたい
ビューで使わないのなら>>798の言うようにモデルに任せるのが一番いいんだろうけど
if ($gender == Configure::read('Gender.man'))
802:nobodyさん
14/01/19 10:13:44.22 0MqMVmkC
教えてください。
今、PCの故障でCAKEPHPを新しいPCへ移行中なんですが、
CAKEPHPのバージョンとソースは以降前と同じでDBを復元し、動かすと以下のエラーが表示されてしまいます。
----------------
Missing Database Table
Error: Database table logs for model Log was not found.
Notice: If you want to customize this error message, create app/views/errors/missing_table.ctp
----------------
database.phpや$uses=>array()などを試しては見たのですが、原因がわかりません。
確認すべき場所など原因をご存知の方がいらっしゃいましたら教えてください。
---------cakephpバージョン---------------
1.3.12
----------------database.php-------------
class DATABASE_CONFIG {
var $default = array(
'driver' => 'postgres',
'connect' => 'pg_connect',
'port' => '5432',
'host' => 'localhost',
'login' => 'cakeuser',
'password' => 'cakeuser',
'database' => 'phpmain',
'encoding'=>'EUC-JP',
'prefix' => ''
);
}
-----------------------------------------
803:nobodyさん
14/01/19 15:30:52.90
>>802
エラーメッセージを、読め!
804:nobodyさん
14/01/19 15:33:16.41
>>801
あーなるほどね。
確かにそういう使い方はしたいな。
納得はしたけど、すまんけど特に提案できる方法はもってなかった。
Configureが内部的にarray_flipしたのを持ってたりして、keyからでもvalueからでも取れればいいのになー
805:nobodyさん
14/01/19 16:02:35.99
Cakeで開発するとDBスキーマがいちいちキャッシュされてめんどい
(テーブルにカラム増やしてもキャッシュが効いてて反映されない)
モデルキャッシュを無効化する方法ないの?
806:nobodyさん
14/01/19 16:34:55.98
Modelの$cacheSource
807:nobodyさん
14/01/19 23:36:21.74
CakeEmailってめっちゃ便利なんだが、送信したあとの本文を
データベースとかに保存しておきたい場合、どうすればいいんだろう。
808:nobodyさん
14/01/20 00:26:36.62
message()っつうメソッドがあってだな
809:nobodyさん
14/01/20 00:29:49.05
マッサージか
810:nobodyさん
14/01/20 00:48:11.93
シャッチョさんヤスイヨー
811:746
14/01/20 02:15:34.59 WMGmZL6V
gmailでfromを書き換えたい・・・>>CakeEmail
ま、出来ないのはCakeEmailだけじゃないけどさ
812:nobodyさん
14/01/20 09:19:53.03
出来ますが?
813:nobodyさん
14/01/20 13:51:40.06
Twitter Bootstrap3でいいスケルトンどっかに無い?Bake用の。
814:nobodyさん
14/01/20 14:00:14.69
使ったこと無いけど、BoostCakeはどうなん?
815:nobodyさん
14/01/20 14:01:05.46
>>814
いいよ!
816:nobodyさん
14/01/20 14:13:36.53
BoostCakeはいいけど、Bake用のスケルトンはいってなくない?
前身のやつにはあったんだけど、あれはbootstrap2だし。
817:nobodyさん
14/01/23 13:12:43.27
質問
$this->request->queryってコントローラのコンストラクタの中じゃ参照できないのか?
俺の勘違いだったらいかんから、お前らも試してみてくれ
818:nobodyさん
14/01/23 13:22:37.04
教えてください。
1.3で作成したAPIに、SecurityコンポーネントでBasic認証をかけたいと思っています。
そこで1.3の該当マニュアルを読んで進めておりますが、
requireAuth()
requireLogin()
loginCredentials(string $type)
この3つのどれを使うのが良いのか分かりません。
違いと実装の例など教えていただけませんか。
819:nobodyさん
14/01/23 23:16:39.26
>>817
parent::__construct();が抜けてんじゃねーの?
820:nobodyさん
14/01/24 00:03:19.65
コントローラのコンストラクタなんて触ったこと無いな。
変わったことやってんのか?
821:nobodyさん
14/01/24 01:25:22.59
>>818
1.3なんてもう覚えてないけど、認証はAuthコンポーネントじゃないの?
CakePHP2ではAuthだぞ。
SecurityコンポーネントはCSRF対策とか、そういうの用だと思うが。
822:nobodyさん
14/01/24 08:54:07.70 OhuU+SsS
cakePHPの入門書でオススメあったら教えてくだしあ><
823:nobodyさん
14/01/24 09:17:20.30
>>821
ありがとう。CakeでウェブAPIをつくっているので、Authコンポーネントではなく、
Securityのベーシック認証にしたいのです。
824:746
14/01/25 00:27:35.89 fnA/g+QM
コントローラをFacadeパターンにして実務処理は自作のちっさいコントローラクラスにやらせれば良いの?
クラス設計するなら
825:nobodyさん
14/01/25 00:34:45.21
Model だろ普通
826:nobodyさん
14/01/25 00:38:00.50
CakeがMVC2の勘違いをkskする
827:nobodyさん
14/01/25 00:42:48.60
>>822
これ、というのは無いなぁ
ただ、「CakePHP事典」と「レシピ119」だっけ?
あれはひと通り目を通すといいと思う。
CakePHPの機能を結構カバーできてる。
ただ、レシピの方は今ひとつ癖があるなぁって思った。
まぁ、ひとつの参考としては良いと思うよ。
網羅性に欠けるけど「実践」もいい。
まぁ、この3冊に全部目を通して損はないと思うよ。
828:746
14/01/25 00:46:35.74 fnA/g+QM
あ、モデルだよなw
CakeでモデルつーとDBのテーブルを連想してしまってた
829:822
14/01/25 05:12:01.03
>>827
あざっす m(_ _)m
830:746
14/01/25 13:37:17.68 fnA/g+QM
いきなりbakeを使わせる本を入門書には向かないと思うが>>実践
831:nobodyさん
14/01/25 13:56:53.37
知らない
832:nobodyさん
14/01/25 14:52:32.45
>>828
CakePHPのモデルはDBとくっつきすぎていて、
そこにロジックを入れるのはちょっと違う感じもするようになった。
833:nobodyさん
14/01/25 14:55:02.37
CakePHP辞典も入門としては使えないと思った。
いやいい本だし、入門時でも慣れてきても、
ソースコードを見るかCakePHP辞典を見るかって時はあるから、
持っといて損はないと思うけど。
あれで入門しようというのは難しいとおも。
834:nobodyさん
14/01/25 15:06:07.31
だから、コレというのはないと言ったんだ。
1系の時みたいな手取り足取りのチュートリアル本は無いからな。
もし本当に初心者で一からCakePHPをやりたいっていうんなら
ブログチュートリアルを暗記できる程度まで繰り返し覚えろとしか言えない。
ただ、実践本が初心者向けでないことは確かだった。あれは奨めない。
835:nobodyさん
14/01/25 15:07:52.67
ActiveRecord=モデルみたいな誤解を広めたRailsが全ての元凶
Cakeは犠牲になったのだ
836:827, 834
14/01/25 16:41:20.78
「はじめてのCakePHP (I・O BOOKS)」っていう本があるみたい。
読んでないんでなんとも言えないけど、
Amazonの書評とサンプルコードダウンロードしてみた感じ、
入門書として、ひょっとしたら良いかもしれない。
コードの一部が古いので注意する必要ありだろうけど。
(パッと見て、コントローラのプロパティ宣言キーワードに public を使わずに var を使ってるのはヤバイわ)
837:827, 834
14/01/25 17:56:10.31
そういえばCakePHP辞典って正誤表を公開するって
随分前に著者がツイッターで言ってたんだけど
音沙汰なしだな。。。
838:nobodyさん
14/01/25 18:59:02.53
>>837
まさぴーだな。
あの人のソースが一番わかりやすいし綺麗。
本もわかりやすい。
俺はお勧め。
839:nobodyさん
14/01/25 22:40:50.09
CakePHP2でvarを使ってるってだけで敬遠したい。
840:746
14/01/26 00:18:39.58 2eFTwFkL
メンバ変数、みたいなのは$componentsに入れなきゃダメなのか?
コントローラで $this->hogehoge みたいな使い方したい場合
841:746
14/01/26 00:27:11.25 2eFTwFkL
多少、誤植とかあるけど
WebデザイナーのためのCakePHPビューコーディング入門
URLリンク(www.amazon.co.jp)
はプログラマ向け入門書としてもそこそこよかったと思った。前半しか読んでねーが
842:nobodyさん
14/01/26 00:45:57.89
>>839
俺もvarだけどなんかダメなん?
843:nobodyさん
14/01/26 02:18:11.54
>>842
PHP5になって何年たったと思ってるんだ。
844:nobodyさん
14/01/26 02:19:40.46
>>798
俺モデルにstaticで関数作って使うクラスだけapp::usesして使ってるけど(bootstrapまわりのグローバル層には置かない)
これって少数派なのかね
845:nobodyさん
14/01/26 02:20:44.56
>>746
あなたの書き込み最初から読ませてもらったけど、
フレームワークって、あなたの思ってる「プログラミング」にくらべると
すごく不自由なもんだと自覚した方が吉。
何しろ他人が「型」を作って、それに自分を嵌めこむ作業だから。
特にCakePHPはCodeIgniterやYiiなんかと比べるとその傾向は強いと言われる。
まずは開発者の意図を極力咀嚼して定形と言われる方法で開発するところから始められないなら、
フレームワークなんて使う意味ないよ。
846:nobodyさん
14/01/26 02:25:24.29
array()はまだいいけど、varはさすがにちょっと…。
847:nobodyさん
14/01/26 02:25:56.65
>>840
PHP初心者なのか。
メンバ変数って単語を知っててなぜそうなるのか疑問だが、
class Foo{
public $foo = 1;
public function bar(){
return $this->foo;
}
}
な
848:nobodyさん
14/01/26 02:26:09.48
>>844
全然いいんじゃない?
static ならテスト書きやすいし
ただ、Modelに入れずにLibに入れるかってのはある。
Modelにしちゃうと色々副作用とか考慮する必要もあるし。
849:nobodyさん
14/01/26 02:32:12.27
>>848
とっ散らかるのイヤだなーとモデルごとに置いてて、今まで特に問題は起きてないけど
Lib層の使いこなしは考えていきたいね
ロジックはMVCで分けても、定義まわりは汎用的に使いまわしたいこと多いしな
850:nobodyさん
14/01/26 02:51:45.24
マジか!もうvar使わないのか。
時代が流れるの早いなー!
851:nobodyさん
14/01/26 03:30:04.12
>>847
いや、>>840 が言ってるのは Component のオブジェクトプロパティを
直接指定できないかってことでしょ。
で、フレームワークが $components の内容を参照して勝手にセットする
しか方法がないのかってことにイラついてるんだろ。
852:nobodyさん
14/01/26 04:22:27.54
>>851
ああそういうことか。
じゃぁ
$this->Foo = $this->Components->load('Foo');
853:nobodyさん
14/01/26 04:25:33.67
>>850
おいおい、俺がこの業界にまだ入りかけで、アルバイトでPHP書いてたときですら、
アクセス修飾子書いてたぞ。
もう5年以上は前の話だ。
854:nobodyさん
14/01/26 04:51:42.85
>>853
PHP歴、俺は10年以上だな。おっさんだ。。。
プログラムだけは経験多くても新しいのについてけないとダメだな。
var でも privateでもpublicでも何も変わらん気がするんだけどどうなん?
で、varが3文字で無難だからという理由で使ってるんだけど。
教えてください。
855:nobodyさん
14/01/26 05:06:46.50
>>854
テスト書いてる?
変えちゃいけないインターフェース(public){=テストする}と
変えてもいい内部でだけで使うメソッド(private){=テストはpublicメソッド経由で行う}を
varでどうやって区別するんだい?
どっちでもちゃんと動くからいいというものではなく、
重要なのは、コードに"意図"を記述できるかどうかだよ。
856:nobodyさん
14/01/26 05:09:49.74
>>855
すげー!
そんな違いがあるのか。
勉強になりました。
テストは書いてないです。
ありがとう。
857:nobodyさん
14/01/26 05:21:51.60
>>854
アルバイトが長かっただけで俺もそれなりにおっさんだけど。
varで書かれたコードは見た目が気に食わない。
というのも、varは互換性のためpublicと同じになるから、
private, protectedが使えないわけだけど、
JavaScriptみたくアクセス修飾子がないけどうまくやってる言語もあったりするから。
とはいえ、途中参加のPHPプロジェクトに入ったりしたら、既存のコードを読むときに、
publicなのかそうじゃないかは、コードを読むときに手がかりにするし、
というかpublicメソッドだけ追ったほうが概要がつかみやすいと思う。
まぁ、1人で作ってたり少人数チームだったりすると、アクセス修飾子なんてなくても、
なんとなくわかったりするし、privateには _ つけるといった運用カバー的方法もあったりするし、
どうしても徹底しないととは、正直言いづらい。
だから、見た目が気に食わない。
858:nobodyさん
14/01/26 09:20:27.99
>>854
varもpublicも変わらんというならまだしも、
privateとpublicが何も変わらんと思ってるってことは、手続き型しかやってなさそう。
テストの無い数千行の神クラス・・・。
859:746
14/01/26 10:00:51.56 2eFTwFkL
>>847
> >>840
> PHP初心者なのか。
PHPもCakeも3ヶ月くらいしか経験はない
練習で掲示板を作ったくらいだ
>
> class Foo{
> public $foo = 1;
> public function bar(){
> return $this->foo;
> }
> }
できるんだな。サンクス
今作らされてる仕事でコントローラーばかりにコードを書くとクラスが肥大してヤだから
URLから呼ばれるコントロールをFacadeにして個別機能を小さくクラスわけて new したいな、
と思ってる所なんだ
860:nobodyさん
14/01/26 10:25:55.73
>>859
じゃぁ
コントローラをFacadeにするのは正解。
ビジネスロジックを別クラスにするのも正解。
一般的に、ビジネスロジックはModelに書くのが良いとされている。
一つのModelばかりになんでも詰め込んで肥大化させるのはあまり良くない。
複数のモデルで共通する振る舞いはBehaviorを作るのが正解。
Modelとテーブルの関係を外して新たなModelを書くのはOK。
Libに新しいクラス作ってもいいよ。
ってところ。
861:746
14/01/26 10:42:05.01 2eFTwFkL
>860
ありがとう。少し光が見えてきた
862:nobodyさん
14/01/26 12:35:40.50
作るものにもよるかもしれんけど、コントローラーやモデルに、
そんな沢山書かないとな場合て、そんなにないよな。
もしそうなら、コントローラーも、新たに作ったコントローラーもモデルも、
数行しか書いてないみたいには、しないほうがいいと思うよ。
find2回して、片方をforeachでまわしてちょっと加工して、
あとは表示なんてのは、そのページでしか使わないんだったら、
もうコントローラーに書いておけばいいと思ってる。
863:nobodyさん
14/01/26 12:57:42.83
>>862
それだと、テストが難しくなる。
864:nobodyさん
14/01/26 13:08:34.52
>>863
すべてをテストする必要はないんじゃね。
find2 foreach1だけなら、ほぼ間違えないし、
テスト可能にする事も含めて、テストのコストのほうが高いと思う。
foreachの中身が1行2行という想定だけど、
もしこれが複雑なものなら、foreachのとこだけ切り出してテストできるようにはしてもいいと思うけど。
865:nobodyさん
14/01/26 15:09:54.48
>>860
Cakeって案外不親切だよな
自由度が高いといえば聞こえはいいが
866:nobodyさん
14/01/26 17:52:52.45
CakePHPは自由度高くないでしょ
867:nobodyさん
14/01/27 08:26:21.27
2014年にもなって「varって何が悪いの?」レベルのことを言う経験10年って・・
不勉強とかそういうレベルじゃねーだろ
868:nobodyさん
14/01/27 09:15:59.49
化石だな
869:nobodyさん
14/01/27 10:27:59.61
(俺も正確に理解せずに使ってた、なんて言えない・・・)
870:nobodyさん
14/01/27 13:43:50.37
var使ってますってのは
私はいまだにOOも理解してない手続き型しか書けない老害です
って宣言と同義
871:nobodyさん
14/01/27 17:32:39.84
アクセス権はOOに必須ではないがな
872:nobodyさん
14/01/28 09:32:01.09
カプセル化はOOのキモだと思う
873:nobodyさん
14/01/28 11:26:46.25
そりゃそうだ
874:nobodyさん
14/01/28 12:09:08.34
全部publicにstaticに…ってただのファイル分割だわ
そういやそんなおじさんがいたな…
875:nobodyさん
14/01/28 12:36:13.58
varおじさん
876:746
14/01/29 08:28:57.79 4MhCoapX
アクション名と違うファイル名のctpを使うにはどうしたらいいの?
アクション名がかぶりそうなんだよ
877:nobodyさん
14/01/29 08:47:04.63
Viewフォルダ内をコントローラごとにフォルダ分け
同一コントローラで名前がかぶりそうなら設計があやしい
878:nobodyさん
14/01/29 17:13:25.95
>>876
コントローラの中で
$this->render('任意の名前');
879:nobodyさん
14/01/29 22:52:44.55
かっこいいbake用skeletonどこにありますかね…
なかなか見つかりません
880:746
14/01/29 23:39:01.19 4MhCoapX
>>878
サンクス。調べてたら$layerの使い方もなんとなくわかった気がしてきた
881:nobodyさん
14/01/30 02:58:52.18
Amazonみたいにさ、
この商品を見た人は、以下の商品も見ています。
ってのを作りたい場合、どのように作ればいいか教えてもらえませんか?
882:nobodyさん
14/01/30 03:35:25.70
閲覧ページのURL、ページ遷移、滞在時間とかを取得して、
統計データから商品Aから商品Bへのスコアを計算して、
閾値を設定して、それを超えたものをスコア順に並べる
みたいな感じじゃないの?
883:nobodyさん
14/01/30 03:39:02.25
FacebookとかAmazonレベルだと複雑なスコア算出の式をしてるだろうが、
とりあえず何らかの指標で弾き出したスコアを元にリストアップってのはどこも同じはず。
884:nobodyさん
14/01/30 07:39:44.50
オライリーから、集合知プログラミングって本が出てたはず
わりとそのものズバリな内容が書いてあった
中のコードはphpじゃないけどpythonだから読みやすいし
885:nobodyさん
14/01/30 09:24:11.61
奥が深い分野だから、Amazonと同じ精度出すだけでも、
難易度相当高いよ。
886:nobodyさん
14/01/30 09:35:06.95
同じ精度出す必要無いよ。過剰実装だ。
単純に文字通り受け取って、リファラから商品IDを集計すれば良いだけだろ。
887:nobodyさん
14/01/30 10:50:07.49
>>884
881じゃないけど横からサンキュー
888:746
14/01/31 01:19:24.89 nps2dTDl
アクションとURLの関連性を任意にしたい場合、config/route.phpのRoute::connectで指定してやればいいの?
889:nobodyさん
14/01/31 09:22:20.73
>>888
おっけーです
890:nobodyさん
14/01/31 13:18:43.14
CakePHPがあまり関係ない+そんな基礎的なことをと言われそうだけど、
よく見てるスレってここくらいだし、一応CakePHP使って作るし、質問させてくれ。
入力、確認、完了というよくあるフローの投稿機能なんだけど、
入力の段階でテキストやプルダウンなどのほかに、画像アップロードがあるんだ。
確認ページでは画像アップロードは完了させて、確認できるように表示する。
完了すれば、画像は所定のディレクトリに保持されて、ファイルパスが他のテキストとあわせてDBに入る。
確認の段階で戻ったり、完了に到達しなかったら、テキストも画像も保持しない。
良くある話だとは思うけど、確認ページ+画像アップロードが、なんか久しぶりで、
さらにcronが使えないサーバーで動かす予定なんだ。
前やったときは、daily cronで完了に至らなかったケースの画像を削除してたんだけど、
その方法が使えないから、どうしたものかと悩んじゃって。
この画像の後始末って、普通どうやってやるもんなのかな?
891:nobodyさん
14/01/31 21:38:59.99
>>890
俺ならcron使えるサーバー使う。
892:nobodyさん
14/01/31 21:40:33.68
>>890
というか、いちいち俺は削除しないな。
下手に削除プログラム走らせるとバグの原因になる。
ゴミデータあっても誰も見ないし。
893:nobodyさん
14/01/31 22:07:45.62
トリガなんてなんでもええやろ
ユーザリクエストでもいいし外部Cronでもいいし脳ミソ0か
894:nobodyさん
14/02/01 01:04:49.93
乱数でハズレ引いたユーザーに負担してもらう
895:nobodyさん
14/02/01 11:45:31.12
>>890
俺は正式アップロード用のフォルダとそうでないのと分けてるよ。
後から手動で消しても大差ないし、SSHからなら一瞬だしな。
896:nobodyさん
14/02/01 12:00:34.17
今まさに正式アップロードになろうとしてるやつを手動で消さないように注意ね
897:nobodyさん
14/02/01 14:32:58.78
それは日付指定して削除すればいいだけだよね
898:nobodyさん
14/02/01 14:57:34.78
解決
しゅーーりょーー!