月別アーカイブ: 2013年4月

404ページについて

クライアントが存在しない、又は存在するけれどアクセスして欲しくないファイルURLをリクエストした場合、.htaccessに以下のように記述

ErrorDocument 404 /error/404.php
ErrorDocument 403 /error/404.php

リクエストされたURLのパラメータが間違っていた時、エラーページを表示させるために、phpコードは

header(“HTTP/1.1 404 Not Found”);
include_once realpath(dirname(__FILE__)) .’/main/error/404.php’;
exit;

headerにLocation:を指定してリダイレクトせずにファイルをincludeしているのは、ヘッダが302コードで上書きされてしまうから
by http://colo-ri.jp/develop/2011/05/php-proper-404-redirect-way.html
http://phpspot.org/blog/archives/2009/04/403404php.html

phpのisset関数とempty関数について

クラスのプロパティーに初期値として0かnullか空文字を入れて定義しているが、この初期値が代入されて変更されているかを判別する時、isset関数を使わずにempty関数を使う

$a = ‘a’;
echo empty($a) ? ‘真’ : ‘偽’;
$a = ”;
echo empty($a) ? ‘真’ : ‘偽’;
$a = null;
echo empty($a) ? ‘真’ : ‘偽’;
$a = 0;
echo empty($a) ? ‘真’ : ‘偽’;

結果は

「偽真真真」

となる

MySQLのLONG型は数値ではなく文字

javaのLONG型は数値だがMySQLでは文字である事に気づいた。
今までは間違ってLONG型を数値と思い込み、order by でソートした時に挙動がおかしかったはずだ。
何故か自分の過去のソースコードを見てみるとLPAD関数に文字数値を数値にわざわざキャストして、ソートしていたw
この時点でおかしいのは気づくべきなのに
long型は正確にはmidiumtext型となる

mysqlの数値タイプについて
http://dev.mysql.com/doc/refman/5.1/ja/numeric-types.html

float型について

FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
M は桁数の合計で、D は小数点以下の桁数の合計です。もし M と D が削除された場合、値はハードウェアに許容された限界まで格納されます。単精度小数点数は大体小数第7位まで正確です。

MySQLのINSERT速度について