プログラミング

【jQuery】$.supportによるブラウザの判別は、現時点では無理らしい

最終更新日 2011年11月13日 jQuery 1.3 以降では、$.browserは非推奨となったそうです。 代わりに$.supportの使用が勧められています。 で、どうすれば各ブラウザを判別できるのかを調べてみます。 下は $.support の各プロパティの真偽値がブラウザによって…

【PHP】TwitterのストリーミングAPIを使う

TwitterのストリーミングAPIで得られるパブリックタイムラインの 内容は次がら次へとに更新されるため、『file_get_contents()』 のようにファイルを一括して読み込む方法だと、いつまでたっても 読み込みが終わらず、次の処理へ進めません。 そこで、1行ず…

【PHP】file_get_contentsのエラーを抑制する方法

【環境】 CakePHP 1.3.2 Twitter API (users/show)使用中 【困ったところ】存在するかどうかわからないユーザーID(番号)をパラメータにして 『users/show』APIを呼び出す際に、ユーザーが存在しなかった場合に 表示されるPHPのE_WORNINGをどうにかして消せな…

【CakePHP】手動で元のページへリダイレクトする

【環境】 CakePHP 1.3.2 Twitter OAuth OAuth consumers for CakePHP - by cakebaker CakePHPでTwitterマッシュアップを作る#4 - BUENA VISTA SOCIAL BLOG 【困ったところ】通常のAuthコンポーネントを使っている場合、ログイン・ログアウト後に 元のページ…

【jQuery】IE + Ajax関連でいくつかの条件が重なった場合に表示されるエラーとその解決策

【最終更新日:2010年10月23日】 基本事項〜IEについて〜Internet Explorerでは、NULLもしくは未定義の変数に対して、 存在しないメンバ変数を呼び出そうとするとエラーが表示されます。 var hoge; //または var hoge = null; var hoge = undefined; alert(h…

CakePHPの防御力を試す1〜SQLインジェクション〜

【CakePHP 1.3.2】CakePHPのデフォルトの状態で、どこまでセキュリティ対策が 施されているのかを実験します。【実験方法】デバッグを"2"に設定し、予想される攻撃によってどのような SQLが生成されるのかを確認します。 【/app/config/core.php】 Configure…

【CakePHP】アソシエーション設定時にバリデーションエラーのメッセージを表示させる

【CakePHP 1.3.2】【状況】主:Userモデル->従:Profileモデル、という関係。【方法】いろいろ試しましたが、従属テーブルのバリデーションエラーのみ、 そのメッセージをビューへ明示的に渡す必要があるようです。 【コントローラ】 //バリデーションのみを行…

【CakePHP】アソシエーションのモデルにも一緒に保存する際の注意点

【CakePHP 1.3.2】【状況】主:Userモデル->従:Profileモデル、という関係。【失敗】下記では、必ず新規作成(INSERT)となってしまい、既存のデータの 変更(UPDATE)ができません。 【/app/controllers/users_controller.php】 //フォーム送信後の処理。データ…

【CakePHP】Form::month()のの英語表記を数字にする

【CakePHP 1.3.2】【通常の解決策と、その問題点】Formヘルパーのmonthメソッドについて。 echo $form->month('month');上記だけでは、optionタグの中身がJanuary,February...と、 英語表記になってしまいます。 これを数字にする方法として、Cookbookでは'm…

【CakePHP】read()とvalidates()の相性は良くない

【CakePHP 1.3.2】【結論】バリデーションに失敗して元のフォーム画面に戻る処理の中で、 『$this->Model->read()』を使ってはいけません。 readメソッドの中に下記のような記述があるため、バリデーションに 失敗した旨のメッセージが消えてしまいます。 【…

SQLite2からMySQLへデータベースの移植を行う

【最終更新: 2012年2月23日】 SQLite2のデータベースの中身を、MySQLに移植したい場合。 具体的には、CakePHPのローカルテスト用に、複数のPCでDropboxを介してファイルとして同期できるSQLite2をデータベースに採用していたのに、CakePHP2.0ではSQLite2は使…

有効期限の過ぎた仮登録ユーザをcronで自動的に削除する〜その2〜

前回の方法では、仮登録ユーザを削除する処理をcronからだけでなく ブラウザでURLを入力しても実行できてしまうという欠点がある、と CakePHPのフォーラムで指摘を受けました。 今回は、CakePHPコンソールから独自のシェルを実行する、という処理を cronで自…

有効期限の過ぎた仮登録ユーザをcronで自動的に削除する

【注】 今回の方法よりも、より適切と思われる方法を下記で紹介しています。 こちらも参考にしてくださいm(_ _)m ◆有効期限の過ぎた仮登録ユーザをcronで自動的に削除する〜その2〜 http://d.hatena.ne.jp/sutara_lumpur/20100625/1277424666環境 Ubuntu 10…

Ubuntu備忘録1

【Ubuntu 10.04】 『Windowsキー』でデスクトップを表示させるには『Windowsキー』はLinuxでは使い道がないと思っていましたが、 "Super"キーという名前で、ちゃんと役割を与えられるそうです。 【端末】 $ gconftool-2 --set /apps/metacity/global_keybind…

【CakePHP】Security.levelはlowにすべき

(追記: 2012-07-24) CakePHP 2.2.1では、セッションが消える恐れのあるコードは発見されませんでした。 他に気になる点がなければ、Security.levelは'high'や'medium'でも問題ないと思います。 【おすすめ設定】 【/app/config/core.php】 Configure::write(…

CakePHP備忘録4 invalidFieldsの記述位置に注意!

【CakePHP 1.3.2】 【正しい位置】モデルのインスタンスにデータをセットする前に。 つまり、『$this->set()』や『$this->data = $hoge』の前に。 【例:コントローラ】 if(!$this->Model->validates()){ //こちらが先! $error_messages = $this->Model->in…

CakePHP備忘録3 Authを使いながらパスワードの変更を行う

【CakePHP1.3.2】 ログインパスワードを変更する場合の入力項目は、 現在のパスワード 新しく設定したいパスワード 確認のためパスワードを再入力 …というのが一般的だと思います。 これをCakePHPで行なおうとする場合、Authコンポーネントで ハッシュ化され…

CakePHP備忘録2

【CakePHP1.3.2】 $this->Model->save()以外のタイミングでバリデーションしたい場合validates()で検証し、エラーがあれば、メッセージを invalidFields()で取り出す。 【コントローラ】 if(!empty($this->data)){ //モデルのインスタンスにデータをセットす…

XAMPP(Linux版)で、Gmail経由でローカル環境からメールを送信する

【環境】 XAMPP 1.7.3a Ubuntu 10.04 【必要なもの】 Googleアカウント 【手順】 php.iniを、下記の部分のみ書き換える。 【/opt/lampp/etc/php.ini】 SMTP = smtp.gmail.com smtp_port = 587 postfixをインストールする。 $ sudo apt-get install postfixそ…

XAMPP(Windows版)で、Gmail経由でローカル環境からメールを送信する

最終更新: 2018-08-18Googleアカウントの設定メール送信に使いたいGoogleアカウントでログインし、下記のページを開きます。 https://myaccount.google.com/lesssecureapps 「安全性の低いアプリの許可」を有効にします。 XAMPPの設定対応バージョン XAMPP 7…

CakePHP備忘録1

【CakePHP1.3.2】 バリデーションでの重複チェックは『isUnique』で行う。 【例 (モデル)】 var $validate = array( 'mail' => array( 'rule' => 'isUnique', 'message' => 'このアドレスは既に登録されています。' ) ); 『$this->Model->save($this->data)…

【CakePHP】geditで言語配色に拡張子を追加するには

要求CakePHPでは、独自の『.ctp』形式のファイルを扱うことになります。 この拡張子は、geditではPHPファイルとしてうまく認識してくれない ことがあります。 真っ白で、何の色分けもされません。 これをどうにかしたい。環境 OS Ubuntu 10.04 CakePHP 1.3.2…

【jQuery】プラグインでのオプション(オブジェクト形式)の初期設定方法を2通り

【その1】今までは、こうしてました。 $.fn.testPlugin = function(options){ var options = options || {}; options.hoge1 = options.hoge1 || 'hoge1の初期値'; options.hoge2 = options.hoge2 || 'hoge2の初期値'; options.hoge3 = options.hoge3 || 'hog…

【jQuery】『wrapAll()』の怪動作の検証

【怪動作】包む側の要素にテキストノードのfirstChildが含まれていると、 包まれる側の要素が表示されません。 【実例】 ■ ごく一般的な『wrapAll()』の使用例です。 jQuery: var $hoge = $('<p>hoge1</p>'); $hoge.wrapAll($('<div />'));HTML: <div> <p>hoge1</p> </div> CSS: div{ backgro</div>…

【jQuery】wrapAllした親要素にappendできない&解決記

以下のような、何の変哲もない段落があるとします。 HTML: <p id="p1">hoge!</p> これに、赤地のボックスを親要素として追加し、さらに別の段落を 追加して、以下のように表示するとします。 HTML: <div style="background-color:#fcc;"> <p id="p1">hoge!</p> <p id="p2">fuga!</p> </div> これをjQueryで行う場合、下記のようなコードが考えられます…

【Javascript】発見したこと(初心者なりに)

ajaxComboBoxの改造中に発見したことをメモしておきます。 【test() でマッチを確認】 これまで、このメソッドの存在を知りませんでしたorz で、いろいろ試してみました。 【基本】var hoge = /aaa/; var fuga = 'xxxaaaxxx'; alert(hoge.test(fuga)); //tur…

【Javascript】多次元配列でトラブった&解決記

(2012-10-10) コメントでの助言を参考に、記事を若干修正しました。 コメント欄もご覧ください。 結論たとえば、ニ次元配列のニ次元目にいきなり値を格納する場合、 ひとつの次元ごとに配列の宣言をしなくてはならないようです。 (追記:2009/12/23) Javascr…

【Javascript】UpperCamelCaseに変換する関数を作ってみました。

『to_cake_camel_case』を『ToCakeCamelCase』のように 変換する関数を作ってみました。 function toCakeCamelCase(str){ return str.replace( //文字列の先頭と、『_』とその直後の文字を取り出す /^.|_./g, function(match){ return match //ここで『_』を…

【jQuery】非表示のテーブルを表示する場合は『display:table』とするべき。

【不都合】『display:none』で非表示にしているブロック要素をJavascriptで 表示させる場合、普通は『display:block』と指定すると思います。 しかし、テーブル(<table>)で『display:block』と指定すると、 Firefoxなど一部のブラウザでは以下のようになってしまい</table>…

【jQuery】parseInt()でCSSの属性値を数値で取得できるか?

jQuery(バージョン1.3.2)において、数値で取得できるのではないかと見込まれる CSSの属性値を、本当に数値で取得できるのかを様々なブラウザで検証してみました。 parseInt($(要素).css(プロパティ名)) 【結果】 CSSをユーザー側で設定していないデフォルト…