読者です 読者をやめる 読者になる 読者になる

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も定義すればよいと思う。(自信無いので後でちゃんと調べること)

資産形成におすすめのFX口座はこちら。
http://s2fx.com/ranking/856.html

php5.3.3 centos6.8 composerインストール手順

インストール

curl -sS https://getcomposer.org/installer | php

composer.pharが出来るので移動

mv composer.phar /usr/local/bin/composer

composer.jsonを作成する

cd /usr/local/bin
vi composer.json

内容

{
    "require": {
        "monolog/monolog": ">=1.0.0"
    }
}

jsonに書いたmonologをインストール(5~10分くらいかかる)

php composer install

vendor配下にインストールされる。後composer.lockが作成される。
さらにパッケージを追加してみる。composer.jsonにpayjpを追加。

{
    "require": {
        "monolog/monolog": ">=1.0.0",
        "payjp/payjp-php": "0.0.x"
    }
}

インストール

php composer install

エラーが出た

Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them.
Nothing to install or update
Generating autoload files

Composerを使ってみた - 戦場のプログラマー
こちらのサイトによるとどうやらupdateが必要らしい

php composer update payjp/payjp-php

これでインストールできた
composerのrequireコマンドでパッケージを後から追加する - Qiita
こちらのサイトによるとrequireでも良かったぽい。
phpでは以下のようにrequireすれば使えるようになる。

<?php
require 'vendor/autoload.php';

参考サイト
composerとは? - Qiita
composer 導入をまじめに考える - Qiita
Composer ドキュメント日本語訳
composerの使い方:Composer でphp のパッケージを楽にする - それマグで!

資産形成におすすめのFX口座はこちら。
http://s2fx.com/ranking/856.html