のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,837人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

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

    php スレッド一覧へ / php とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    451 : nobodyさん - 2014/05/12(月) 14:37:04.67 ID:???.net (+12,+19,-31)
    >>449
    >>449
    ありがとうございます!
    AppShellなるクラスが用意されていたのですね。知りませんでした。
    さっそく試してみます。
    453 : nobodyさん - 2014/05/12(月) 15:16:40.76 ID:???.net (-26,-29,-40)
    >>449
    >>449

    verify()をShellから実行した結果、180超のエラーが出力されました。
    特に多いのは index missingというやつです。
    recover() で回復できますでしょうか?
    454 : nobodyさん - 2014/05/12(月) 15:22:02.02 ID:???.net (+24,+29,-36)
    >>453
    以前自分も同じようになったときは、
    recover()で上手く言った場合とそうでない場合とがあった。

    上手く行かなかったときは時間もなかったんで、
    独自でスクリプト書いてで lft と rght を振り直した。

    すまんが深く探ってないんで、それ以上詳しいことはよく分からん。
    一度やってみろとしか言えない。
    455 : nobodyさん - 2014/05/12(月) 15:24:38.22 ID:???.net (+32,+29,-38)
    あと、verify() でエラーが出たってことは
    これからも同じ問題が発生するおそれがあるんで、
    更新処理を全て点検したほうがいいな。

    テストを良く書けているかどうかで、こういうときに大きく差が出る。
    456 : nobodyさん - 2014/05/12(月) 15:27:51.20 ID:???.net (-26,-29,-24)
    Treeビヘイビアを使ってカテゴリ管理って難しいよね。
    不特定多数のカテゴリを扱うとかなったら、
    今回のような問題が起きてしまう可能性があるし
    457 : nobodyさん - 2014/05/12(月) 15:28:47.24 ID:???.net (-9,-12,-48)
    連投すまんが、今の状態だと recover 走らせる時もめちゃくちゃ時間かかるはずだから、
    必ず Shell から実行すること。
    更新中にタイムアウトなんかしたら(特にMySQLのMyISAMなどは)やっかいなことになる。
    458 : nobodyさん - 2014/05/12(月) 15:35:37.85 ID:???.net (+24,+29,-24)
    >>456
    入れ子集合モデルは更新コストが激高だからな。
    場合に応じて使い分けるしか無いと思われ。
    459 : nobodyさん - 2014/05/12(月) 15:38:35.35 ID:???.net (-13,-29,-91)
    >>454-456

    アドバイスありがとうございます。
    >これからも同じ問題が発生するおそれがあるんで、
    お客が不正に行ったデータのInsertなどが原因だった可能性もありますが、
    プログラムのほうも確認しておきます。

    recover()もShellから実行しました。案外完了が早かったように思います。
    今2度目のverify()です。
    460 : nobodyさん - 2014/05/12(月) 16:13:23.60 ID:???.net (-23,-30,-67)
    >>454
    verify()でtrueが返りました!
    moveUp()をあるノードで実行して結果をdebug文で出すとtrueが返りました。
    しかし、treeには何の変化もなし!ノードの位置は一切変わっていません。
    なぜなのでしょうか・・・。
    461 : 459 - 2014/05/12(月) 16:28:51.15 ID:???.net (-21,-29,-171)
    連投で申し訳ありませんが、moveUp(), moveDonw()の仕様を根本的に勘違いしていました。

    bookを読むと 同じ枝の中で順番を上に上げるのがmoveUp()なのですね。

    僕はそもそもmoveUp()したノードは「一つ階層を上がって、今までの親ノードと同じ階層に来る」
    ということを実現するものなのかと勘違いしておりました。

    申し訳ありませんでした。しかしverify, recoverをshellから実行するなどの貴重な情報が得られて
    感謝です。
    464 : nobodyさん - 2014/05/12(月) 16:32:41.62 ID:???.net (+21,+29,-4)
    >>461
    ちょっと興味あるんだが、レコード何件あんの?
    469 : nobodyさん - 2014/05/12(月) 17:45:37.30 ID:???.net (+33,+29,-20)
    改めて思うけど、カテゴリの設計って難しすぎるな
    470 : nobodyさん - 2014/05/12(月) 17:54:12.62 ID:???.net (-28,-30,-109)
    >>467-468

    ありがとうございます。
    parent_idを変更すると、思っていた階層の移動が完了できました。ご迷惑をおかけしました。

    カテゴリはこれからも増えていく可能性があるので、
    このままTreeBehaviorを実装していて安全なのかちょっと心配しています。

    親子関係を実現するには普通にHABTMでもいいのではないかな、と思いましたが、
    設計段階でTreeの採用が決まっていたので、これで作ってしまっています。
    データ件数がでかくなった今、非常にデリケートなデータ構造なんだな、と改めて認識しております。
    471 : nobodyさん - 2014/05/12(月) 18:14:56.49 ID:???.net (+32,+29,+0)
    >>469
    さらにそれを管理してくのが苦痛。
    472 : nobodyさん - 2014/05/12(月) 18:30:07.53 ID:???.net (-2,+11,-12)
    >>470
    親子関係でHABTMってどうやるんだ
    475 : nobodyさん - 2014/05/12(月) 19:42:05.93 ID:???.net (-26,-30,-110)
    >>472

    Categoryモデルの中に

    public $belongsTo = array('Parent' => array('className' => 'Category',));
    public $hasMany = array('Children' => array('className' => 'Category'));

    と二つ記述するやりかたですかね。
    それを最初に思いついたのです。
    しかしTreeのほうが上ではないかという意見が出たため、そっちを採用しました。
    477 : nobodyさん - 2014/05/13(火) 16:37:41.63 ID:???.net (+28,+25,-39)
    ありゃ、もう2.5.0出たのか。
    なんか最近CakePHPのバージョンあがるの早い気がするけど、気のせいか?
    478 : nobodyさん - 2014/05/13(火) 16:39:47.73 ID:???.net (+31,+29,-5)
    >>477
    年取っただけだと思う。
    時代の流れが早く感じるよな。
    479 : nobodyさん - 2014/05/13(火) 16:44:46.95 ID:???.net (+14,+16,-8)
    2.6も予定されてるのかよ。
    さっさと3出して、2は打ち止めでいいだろ。
    480 : nobodyさん - 2014/05/13(火) 17:43:09.45 ID:???.net (+32,+29,-43)
    今のCakeって$usesに書いてあるモデルは実際使われるまで読まれないんだよね?
    ということは存在する全モデルを常に書いてもいいってこと?
    481 : nobodyさん - 2014/05/13(火) 18:12:50.09 ID:???.net (+27,+29,-5)
    ぜんぜん良くはねーと思うが、負荷にはならんだろうな
    482 : nobodyさん - 2014/05/13(火) 22:34:11.52 ID:???.net (+32,+29,-6)
    >>480
    「今の」ってバージョンいくつからそうなったの?
    484 : nobodyさん - 2014/05/14(水) 00:35:48.56 ID:???.net (+10,+12,-5)
    サンクス。普段は2系使ってるから特に問題ないな
    485 : nobodyさん - 2014/05/14(水) 02:38:22.28 ID:???.net (+27,+29,-10)
    プログラミングするとき3行毎に動作確認しないと
    不安で死ぬやつって俺だけ?
    486 : nobodyさん - 2014/05/14(水) 04:51:26.28 ID:???.net (+27,+29,-29)
    3行は短すぎるが、ちゃんと小さい処理単位でメソッドを分けておけば、
    まとめて動作確認してもデバッグしやすいよ。
    あとはテストを書け
    487 : nobodyさん - 2014/05/14(水) 07:02:10.89 ID:???.net (+22,+29,+0)
    そんなあなたにテストファースト
    488 : nobodyさん - 2014/05/14(水) 10:05:36.21 ID:???.net (+27,+29,-16)
    ぶっちゃけ、テストの利点が分からないの俺だけ?
    489 : nobodyさん - 2014/05/14(水) 10:09:17.84 ID:???.net (+22,+29,-2)
    さすがに君だけじゃない?
    490 : nobodyさん - 2014/05/14(水) 11:29:01.43 ID:???.net (+33,+29,-14)
    最初のうちは、いまいちわからんかもね。
    インターフェースのテストで、mockの使い方がわかってくるようになると、考え方が変わるかも。
    491 : nobodyさん - 2014/05/14(水) 12:33:17.82 ID:???.net (+42,+29,-24)
    >>490
    俺も教えて欲しいんだけど
    テスト書くのが面倒
    テスト自体信用できない
    書いてもやっぱり最初から書きたくなる
    って思ってしまうんだけどそれでも書いた方がいいと思う?

    できるプログラマーの人はみんな書いてるよね。
    492 : nobodyさん - 2014/05/14(水) 12:42:45.04 ID:???.net (+33,+29,-19)
    >>491
    結論としては書くべきでFA
    そのことがわかるには経験が必要
    てことだと思う
    493 : nobodyさん - 2014/05/14(水) 12:51:30.16 ID:???.net (+31,+29,-39)
    サービスが稼動を始めてから、数ヶ月経った後くらいに、
    誰かのひどいコードを見つけた時、
    テストを書いてあれば・・・と思うよ。
    495 : nobodyさん - 2014/05/14(水) 14:02:28.89 ID:???.net (+24,+26,-20)
    そこまでテストする必要があるのかはよく考えたほうが良いように思えるけど、
    やるならSelenium使うんじゃない?
    496 : nobodyさん - 2014/05/14(水) 14:08:25.34 ID:???.net (+37,+29,-50)
    テスト=コードが正しく動作するか確かめる

    ではないんだよね?これはブラウザで確認すればいいだけだし、
    大体はコード書いた後に実行して確かめているだろ。

    具体的にどういう場面でテストが必要になるの?
    497 : nobodyさん - 2014/05/14(水) 17:09:00.17 ID:???.net (+27,+29,-17)
    ユニットテストとユーザテストごっちゃにしている時点でなんだかな。
    498 : nobodyさん - 2014/05/14(水) 17:52:25.48 ID:???.net (+37,+29,-43)
    >>496
    > 大体はコード書いた後に実行して確かめているだろ。

    一度書き捨てて終わらせられるなら誰も書く訳がない
    改修は何度も発生する=確認も同じだけ発生する=クッソ面倒
    だから面倒な確認を自動化するためにテストを作るんだ
    500 : nobodyさん - 2014/05/14(水) 21:02:32.76 ID:???.net (+37,+29,+0)
    お前のテスト(むしろconsoleデバッグ?)
    → 逐一人の手で実行して人間がブラウザやconsoleに表示された値やを見て想定したものかどうか確認する
       自動化できてない
       複数の関数やメソッドが絡むとバグの原因の特定がしづらい

    他の皆の意図するテスト(単体テスト)
    → それぞれの関数やメソッドが複数の引数のパターンに対し適切な返り値を返したり
      例外やエラーを吐いたりなど仕様通りの挙動をするかを確かめるコードを書く
      検証する対象が小さいので比較的簡単に書けるし自動化も容易い
      プログラムの小さい単位の動作をあらかじめ保証しておくことで
      後の複数の関数やメソッドが絡むテストの際にもバグの原因の特定がしやすくなる


    面倒だから単体テストでググれ
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / php スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について