プロフィール

あんじー(27歳・男)

石川県出身千葉県在住
ソフトウエア開発技術者(2004)
テクニカルエンジニア(ネットワーク)(2006)
情報セキュリティアドミニストレータ(2008)
Perl・PHPを利用し、正規表現を使ったデータマイニング処理を得意とする

サイトステータス


ページランク

人気ブログランキング - あんじーのテクニカルブログ
ATOMフィード:

RSSフィード:

Technorati



2009年6月23日

AuthComponentでセッション切れが発生する

CakePHPのアプリケーションでAuthコンポーネントを利用して認証システムを作っていると時々セッション切れになってログイン画面に誘導されることがある。

こづかいつけーる for WebではOpenIDによる認証システムを使っていることもあるのかなぜかしらセッション切れが多いと感じていたところ、スパイスラボのブログにて有益な情報を発見した。

Security.level が high のときに起きるいろいろなことということで事例が紹介がされており、なかでもリダイレクトが書き換えられるというところが気になった。実際、こづかいつけーる for Webでのcore.phpのSecurity.levelがhighになっていたところ、mediumにしたらセッション切れは起こらなくなった。

おそらくセッションの保持範囲が設定レベルに応じて変わってくるところがポイントになっていると考えられる。

2009年6月22日

複数の入力項目をチェックする

モデルに実装するバリデーションの例には、メールアドレスを2回入力して、一致しているかどうかを比較したりするような複数の入力項目をチェックする例が残念ながら記載されていない。

モデルの中で何とかやってみた例なので、クレバーな方法ではないかもしれないが、DBへデータを登録する前のチェックをコントローラーで実装しようとすると面倒なので、困っている方がいらっしゃれば参考にしていただきたいと思う。

var $validate = array(
 'mailaddrss1' => array(
  'rule' => array('checkAddrss'),
  'message' => 'メールアドレス1とメールアドレス2の入力内容が異なります',
 ),
);

//$dataはmailaddress1の内容がセットされる
function checkAddrss($data){
 $check_data= $this->data;
 return $data != $check_data['ModelName']['mailaddress2'];
}

2009年6月20日

退院後に必要なもの(チャイルドシート編)

チャイルドシートは1万円台のものから4,5万円するものまで様々だが、そんなに予算がないので、2万5千円をめどに考えてみた。

候補に挙がったのは、7歳まで利用できるプリムロングSと2012年から適用されるECE(ヨーロッパ統一規則適合品)に対応しているコッコロ、コッコロEGで悩んだ。プリムロングは、2003年に販売されたモデルで、国土交通省装置型式指定基準適合品になっているものの、新基準ではない点が気がかりだったが、コッコロは、軽量ながらも作りが簡単になっていて不安だという口コミもあり、最終的にはコストパフォーマンスに優れており、作りがしっかりしているというプリムロングSをAmazonから購入した。

  

プリムロングSは取り付けしにくいという口コミがあったが、実際取り付けてみると取扱説明書だけでも十分に取り付けができた。また、DVDが付いているのだが、こちらを見ると非常にわかりやすかったので、説明書だけでは分かりにくい人もDVDを見れば安心だと思った。

値段も安かったのは、型落ちで在庫整理品かと思ったら、製造日が2009/5/23、Amazonへの納品日が2009/6/1になっていたので、そうでもないらしい。Amazonでもランキング3位に入るだけあって、多くの人に支持されたロングセラーなんだろうと思う。

2009年6月19日

シリアルポート

・標準的なインターフェイスはRS-232Cである。
・1ビット単位でデータを転送する
・ブートローダーとLinuxカーネルでは、同じ速度を使用するように設定する必要がある。(異なる速度を設定するとカーネルパニックが発生し、再起動が必要)

debugレベルに応じてエラー表示が変わってしまう

app/config/core.phpの
Configure::write('debug', N);
のN=0とN>0では、コントローラーもしくはアクションなどが存在しない場合に表示されるエラーメッセージが変わってしまう。

具体的には、N>0ならば、app/views/missing_controller.ctp、app/views/missing_action.ctpが呼ばれるのに対して、N=0ならば、app/views/error404.ctpが呼ばれる仕組みだ。

これは、cake/libs/error.phpの110行目あたりにある
if ($method !== 'error') {
 if (Configure::read() == 0) {
  $method = 'error404';
  if (isset($code) && $code == 500) {
   $method = 'error500';
  }
 }
}
によるものである。

debugレベルを0にしてリリースする場合には、意図したエラーメッセージが出るか確認したほうがよさそうだ。