php5.2 mb_send_mailを使うと半角カナが文字化けする
mb_send_mailって便利だけどその辺注意する事
cakephp1.2 キャッシュエラーになる原因について
cakephp使っているとたまにキャッシュファイルがunlink出来なかったとかtouch出来なかったとか出る時がある。
通常アクセスが多い場合等、同時アクセスが起きた時に発生する場合があるらしいが、別にアクセスはほとんど無いのにキャッシュエラーが頻繁に起きるからなんでだろう~と思っていたら、ajaxが原因だった。
要は、ajaxでアクセスしてそれが返ってくる前に別のajaxアクセスをしていたがために発生していたことが分かった。なのでajaxが返ってくるまで待って、別のajaxを実行するようにしたら発生しなくなった。
今後は注意すること。
資産形成におすすめのFX口座はこちら。
http://s2fx.com/ranking/856.html
安全靴や作業着を買うならこちら。
http://azmaya.jp
jquery-ui 1.7.2 datepickerを同じページに複数表示したい場合、setDefaultsが便利だった件
同じページに複数datepickerを表示したかったんだけど、共通の設定を何度も書くのが嫌でどうすればよいか悩んだ挙句、setDefaultsを使えば良いことが分かった。
// 共通設定 $.datepicker.setDefaults({ showOn: "both" }); // 個別設定1 $("#date1").datepicker({ minDate: new Date($("#min_date1").val()) }); // 個別設定2 $("#date2").datepicker({ minDate: new Date($("#min_date2").val()) });
資産形成におすすめのFX口座はこちら。
http://s2fx.com/ranking/856.html
安全靴や作業着を買うならこちら。
http://azmaya.jp
cakephp1.2 スマホ判定
appController内でRequestHandler読み込んでbeforeFilterの中で以下のようにする。
<?php // モバイル判定 if ($this->RequestHandler->isMobile()) { $this->view = 'theme'; $this->theme = 'mobile'; }
こうするとviews/themed/mobile/controller/index.ctpみたいな感じでthemed/mobile内を自動で読み込み、ファイルがなければ通常のviews内を読み込む、という挙動になる。
ちなみにisMobile()はcake1.2だけあってUAが古かったりするので、以下の定数を定義することでisMobile()がそれを読み込んでくれる。ひとまず「Android|iPod|iPad」を追加しておく。
<?php define('REQUEST_MOBILE_UA', '(Android|iPod|iPad|~後はデフォルト)');
資産形成におすすめのFX口座はこちら。
http://s2fx.com/ranking/856.html
cakephp キャッシュ周りがおかしい場合はキャッシュしないようにすること
モデルで少しトリッキーなことをしたらキャッシュが悪さをしてしまい機能によって動いたり動かなくなったりしてしまった。そういう場合はもうキャッシュ自体を無効にしてしまうことも検討すること。以下で無効にできる。
<?php Configure::write('Cache.disable', true);
css display:inline-blockの便利さが分かりました
inline-blockすごい便利だった。今日やっと意味が分かった。
例えばspanとかのinline要素はwidthとか設定しても適用されないけど、かと言ってdivとか使うと改行されちゃうし困った、ってときにinline-blockを使うとwidthが適用されかつ改行もされないことが分かった。要はinput要素のような扱いになるっぽい。今までfloat使ってた部分もこれで代用できるケースもありそう。
今後は忘れないこと。
cakephp1.2 componentの__constructについてメモ
コンポーネントで初期化処理したい場合は__constructを使えば問題無い。
[ステップアップ! CakePHP] Controller で Component を使う | バシャログ。
ただしここにもあるように通常はinitializeかstartupを使う。__constructとの違いはShellとかでcomponentを呼んだ時にinitializeやstartupは実行されなかったはず(多分。未確認)。なのでShellとかにも対応するのなら__constructを使うべき。
ただ__constructだとcontrollerから呼んだ時に以下のようにconroller自身を渡すことができないぽい。
function initialize(&$controller) { $this->c =& $controller; }
なので初期化処理は__constructに書いてcontrollerを渡したい場合は、別途initializeも定義すればよいと思う。(自信無いので後でちゃんと調べること)
17/12/13追記
var $componentsで普通にコンポーネントを読んだ時と違って、App::importで直接パス指定で読んだ場合も、initializeやstartupが呼ばれないぽいので__construct使うこと。
資産形成におすすめのFX口座はこちら。
http://s2fx.com/ranking/856.html