2010-01-01から1ヶ月間の記事一覧

配列をSet::で操作する

Modelから取得したデータ配列を更に検索&抽出する必要が生じましたが、array_searchなどで対応できる範疇を超えていました。これは独自に関数作らないとダメかなあ、と思いつつtwitterで arrayをSQLのようにサーチしたい。 WHERE public_flag=true AND crea…

ヘビーAppleユーザの勘は当たるか

昨日からTwitterがiPad情報で盛り上がっていますが、 身近で一番ヘビーなAppleユーザさんに「iPad、いつ買いますかー?(笑)」と聞いたら。 「いや。アレはダメな匂いがするから、俺はよう買わん」 「・・・・はい?」 「あるねん、Appleの黒歴史。XXとかXXX…

save(), saveAll()の$fieldList設定

前日、関連モデルがある場合の$fieldListは、[テーブル名].[フィールド名]で設定と記載しましたが、むしろ間違いでした。 $fieldListの設定には、テーブル名を入れてはいけません。以下、$fieldListチェックの動作検証です。

Containerとrecursive

Containはrecursiveで取れる範囲から絞り込む Contain設定なしで取れてないモデルは、Containで指定しても取得できない recursiveの階層を増やすこと。 recursive = -1 でContainはできない

$filedList設定でフィールド追加攻撃対策

複数の関連モデルの同時登録の方法を調べていて、save()に、$fieldListという設定があることを知りました。 http://book.cakephp.org/ja/view/75/Saving-Your-Data 例えば、usersのgourp_idという項目はユーザ変更不可なのだけど、usersのedit画面にデータを…

$form->inputでラジオボタンを初期選択させる方法

$form->inputでラジオボタンを出力するときに、初期状態で値をどれか選択済にしておく方法。 $form->radioによる方法は調べれば出てきますが、$form->inputは見当たらなかったので・・・ 結果論、$form->radioとほぼ同じでした。 Thanks for 「cakephpは困っ…

ロジックはどこにまとめるべきなんだろう。

同じロジックが複数箇所にあるとメンテナンス漏れの原因になるので、1箇所にまとめるべきと思うのですが、 view, controller, modelそれぞれで共通使用するロジックの場合、どこに置くのが一番正しいのでしょう。どこに置いても、結局App:importすれば使える…

CakePHPのACL関連まとめ

CakePHP関連で、多分、特に初期で一番悩んだのが「ACL関連」 自己の「悩み履歴」「解決策メモ」のまとめです。 そして、まだまだ不満 ^^; あるので・・・今は保留ですが、 今作ってるモノの基礎できたら、検討予定です。 特にSQL負荷関連。。

光電池で動くターンテーブル

アキバ土産と言って、光電池で動くターンテーブルもらいました。 ゆっくり回ります。 小さいフィギュアとかおいておくと、可愛いです ^^

観客あり(笑)

「他のサークルはどんな風に活動しているのか見てみたい」と仰って、本日見学者2名来訪。「我々に構わず普段通りやってて下さい」と。 いいんでしょうか。 「真面目にプレイした結果エムブリオマシンで戦闘が発生しなかった」なんていう前歴がある我々なので…

関連モデル hasManyとbelongsToの違い

「特定のuserが一定期間中に作成したnotes一覧」の取得を、 Noteモデルから取得(belongsTo設定使用) と Userモデルから取得(hasMany設定) で行って比べてみました。

virtualField機能使ってみた

shin1x1さんがtwitterで「ver1.3にこんな機能がある」とtwitterで呟かれていたのをみて、実際に使ってみました。 virtualField機能で、できること*1 定形の計算や文字列処理を、取得時にSQL内で行う SQL関数を直接指定 *1:もっとあるかもしれない・・・

IPチェックの方法と注意点

携帯からのアクセスである事の確認を、IPチェックで行う際の、方法と注意点のまとめです。 一部、前の記事からの続きです。 IPチェック実装には、PEARのNet_IPv4を使うと良い 問題は、キャリアのIP帯域に変更・追加の可能性がある事。どうやって取得・更新す…

ver1.3.0βをセットアップしてみたら、1.2と色々違った

shin1x1さんの記事を検証したくなったので、 CakePHP1.3.0-βをセットアップ+検証環境作り*1のためにbake使用してみました。 気になった点リストアップ chiper_seedという暗号化キー関連の設定が追加になってますが、これの運用用変更時、ご注意。 ちゃんとキ…

携帯の固有IDのみで認証

Authコンポーネントによる認証は、通常はusersのusernameとpasswordの照合で行うので、この2項目の登録が必須fieldsの設定で、username => mailadressのような項目名変更は可能ですが、2項目、うち1つは暗号化した認証情報が必要">*1ですが、携帯の固有IDの…

セッション設定をコントローラ側で変更

独自のセッション設定を使う場合core.phpで指定しますが、これをコントローラ側で上書きするタイミングは、__construct()が基本。参考 http://d.hatena.ne.jp/hetima/20070201/1170313526 2010/02/09 13/30頃 追記 セッションをDBあるいはキャッシュ(memcach…

セッションの有効時間変更

CakePHPで、Security.levelをmediumにするとセッションの有効時間が自動的に7日間になるところをカスタマイズする方法の再実装。以前、app側で変える方法がわからなくてcake/libs/session.phpを改修してましたが、 方法を教えていただいたので、ようやく対応…

入力値がある場合のみvalidate

バリデーションの基本設定でつまづいた事。保存する項目に「URL」があるからurlのvalidationルールを指定したら、 設定しない場合に空送信してもエラーになる。。 notEmptyルールがわざわざあるから、これを指定しなければEmptyOKなのかなあって思ってたんで…

$html->linkでmailtoも作れる

$html->linkは、mailto:でもリンクが作れる。 第二引数に、Stringでmailto:〜 と指定するだけ。 echo $html->link("メール", "mailto:".$user['User']['mail']);↓ <a href="mailto:cake@example.com">メール</a> mailto以外がどうなるかは未検証。。

コントローラの中で別のモデルを使う

モデルの中で別のモデルを使う、という方法は既に紹介されています。 ひでぶろぐ。 containable で関連モデルを読み込ませないコントローラ側で別のモデルを使う方法も、ほぼ同様で実現できました。

controller/action指定するとInternal Server Errorになる場合の.htaccess設定

開発の関係でちょっと特殊な環境にCakePHP構築したところ、 http://cakephp-root/ にアクセスした時は問題なかったのですが、 http://cakephp-root/controller/action にアクセスすると、Internal Server Errorになりました。 これを、 app/webroot/.htacces…

emptyファイルは何故必要か

解は 「gitなどでは、ファイルが存在しないフォルダは、バージョン管理対象外になるからでは」 だ、そうです。 id:cakephperさん、ありがとうございました!

好デザインのためのあれこれ

デザインは(も)正直苦手です ^^; jQueryあるいはCSSでデザイン参考にしたいサイトのメモ http://miracle-ysdesign.com/blog/javascript/358.html#more-358 http://miracle-ysdesign.com/blog/javascript/483.html#more-483 http://miracle-ysdesign.com/blog…

ホームページのバリアフリー化

高齢者向けコンテンツについて調査中・・・・ 「みずらい」「見やすい」は、自分で感じてない気づかない面も多いので難しいところ。 宮崎県の資料がとてもわかりやすくまとまっていました。 チェック項目/宮崎県ホームページバリアフリー化のための手引書 あ…

Formヘルパーで出力したタグに備考を記載する

Formヘルパーのinputメソッドを使うと、labelで括られた項目名と、入力フォームが自動的に出力されますが、 そこに「 * 必須」とか「6文字以上12文字以下」のように付記を入れる方法。 $options[‘before’], $options[‘between’], $options[‘after’]のいずれ…

特技:「状況をダイスが裏付け」

日曜の夜に、SW2のオンセキャンペーン参加してましたが、 久しぶりに、私の秘技:『ロールをダイスが裏付け@特にダメな方向』が炸裂しました (^^;)

Sanitize::cleanした改行を元に戻す

以前の改修で、全データはDB登録前にヌルバイトなどの不正コードとSQL特殊文字のエスケープを処理する(($opsion['encode']=falseでSanitize::clean()))仕様にしていましたが、 その場合、TEXTAREAで改行を入れて登録した場合、\\\nを\nに戻す、という一手間…

知らない人から来たメールを見ない人々。

割と年配の部類に入る私の母は、携帯は持っていて主にメール中心で使っていますが、 「知らない人から来たメールは絶対見ないで即捨てる」 と言います。 携帯メールは、キャリアサーバ側でチェックしてて、どうやらFrom偽装はできない*1らしいので、 おかし…