mysql group by の落とし穴と相関サブクエリについて

同一グループの中で最大のレコードを取得する SQL を書く - TIM Labs

基本的な事だけどつい忘れるのでメモ。
・集計関数とgroup byに指定したカラム以外のカラムは値が保証されない。
・解決策としては相関サブクエリを使う

「相関サブクエリ」とは何かを理解して,複雑なSQLでも読めるようになろう - 主に言語とシステム開発に関して
相関サブクエリと普通のサブクエリの違いについては、
普通のサブクエリが一回selectしたら終わりなのに対して、
相関サブクエリの場合は、一回では終わらずに外側のデータに対して
一行ずつ比較していくようなイメージ、という違いがある

低予算でのおすすめのFX口座はこちら。
http://s2fx.com/ranking/856.html

安全靴や作業着を買うならこちら。
http://azmaya.jp

cakephp1.2 formヘルパーのactionを指定したい場合

formヘルパーを使っていてactionが意図したものにならない場合

<?PHP e($form->create('Sample',array( 'action' => 'edit', 'type' => 'post' ))); ?>

こう書いても、アクセス方法によっては

<form id="SampleEditForm" method="post" action="/samples/edit/1">

みたいな感じでactionに余計なパラメータがつく場合などがある。
これを例えばパラメータを消したい場合以下のようにurl属性を使う。

<?PHP e($form->create('Sample',array( 'url' => 'edit', 'type' => 'post' ))); ?>

こうすると

<form method="post" action="/samples/edit">

となる。なおurl指定するとidが消えるぽいので、idをつけたければidも指定すること。

<?PHP e($form->create('Sample',array( 'id' => 'SampleEditForm', 'url' => 'edit', 'type' => 'post' ))); ?>

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

安全靴や作業着を買うならこちら。
http://azmaya.jp

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