initializeでfalseが返されたら

2006/04/07 | mojavi2

mojaviでinitializeメソッドを使用して初期化することがよくある(例えばデータベースへの接続処理とか)。当然initializeに失敗した際のことも考えないといけないけれど、デフォルトではinitializeでfalseを返すと、画面には何も表示されない。当然エラーメッセージをechoした後falseを返したりするけれど、それでも所詮は味気ないメッセージが表示されるだけ。
やはりエラー画面でも多少デザインテイストを考えたいところ。これはmojavi-all-classes.phpで以下の部分を修正するとよさそうな感じ。

ExecutionFilterクラス内のexecute関数で、以下のように記述されている箇所に注目。
if ($action->initialize($controller, $request, $user))
{
 (中略・いろんな処理が書かれているところ)
}

ここで初期化処理をしているみたいなんだけど、if文のelseに相当するところがない。つまりtrueを返せば処理をするけどfalseを返すと「何にもしません」ということのように見える。きっとここでelse節を書き足せばいいはずだと思う。
まだ検証してないので確実なことはいえないけれど、あとで検証することにしようっと。

発行した全てのクエリのログをとる

2006/04/06 | MySQL

MySQLで発行した全てのクエリをログにとる方法は、MySQL起動時に「–log」オプションをつけることだけ。RedHat系だと起動スクリプト「/etc/rc.d/init.d/mysqld」に記述する。ただし記述する位置に注意がいるみたいで、場所を間違うと起動しなくなってしまう。具体的にはこういう感じになっている。

/usr/bin/mysqld_safe –defaults-file=/etc/my.cnf –pid-file=”$mypidfile” >/dev/null 2>&1 &

上記の行に–logオプションをつければよいのだが、以下のように

/usr/bin/mysqld_safe –log –defaults-file=/

一番先頭につけると起動しない。二つ目以降に書くといいみたい。

/usr/bin/mysqld_safe –defaults-file=/etc/my.cnf –log –pid-file=”$mypidfile” >/dev/null 2>&1 &

これで/var/lib/mysql/以下に[ホスト名].logというファイルができ、そこに実行された全てのクエリが記録される。

ファイル名と行番号

2006/04/06 | PHPの基本

普段は必要ないけれど、エラーをハンドリングする際には実際にエラーがあったファイル名とその行番号を取得できるとデバッグが容易。
phpの便利な定数で「__FILE__」「__LINE__」というのがある。
__FILE__ 実行中のファイル名
__LINE__ 記述された行番号
複雑にincludeされていても、この定数を使えばどのファイルの何行目かを容易に知ることができる。定数なんて普段はあまり気にしないけど、便利な使い方もあるなぁ、と実感です。

phpMyAdminの文字化け

2006/04/06 | MySQL

自作PHPスクリプトとMySQLとのデータのやり取りで文字化けする件は、phpスクリプトのデータベース接続時に「SET NAMES」コマンドで回避できることがわかった。
自作スクリプトはこれで動いたけれど、とある環境でphpMyAdminで文字化けが発生することがわかった。不思議なことに「phpの設定」「MySQLの設定」が同じであるにもかかわらず、である。
いろいろ調べてみた。どうやらLinuxインストール時の環境にも依存するよう?だ。調べてみたところはここ。

/etc/sysconfig/i18n

このファイルで言語の設定が一行目に書いてあるのだが・・・。うまく動作しているほうはこのように記述があった。
LANG=”en_US.UTF-8″
対して動かないほうはというと・・・。

LANG=”ja_JP.eucJP”

つまり基本言語が「UTF8」か「EUC」かという違い(よくはわからないけど「Localeの違い」ってやつ?)。phpの設定としては基本的にEUCしか使用しないのでどちらも以下のように設定している。

mbstring.http_output EUC-JP
mbstring.http_input Auto
mbstring.encoding_translation Off
「モノは試し」ということでphpmyadminのあるディレクトリに以下の記述をしたhtaccessファイルを設置した。

php_value mbstring.http_output utf8

あら不思議。これでphpMyAdminからもちゃんと日本語が通るようになりました。ひょっとしたらhttp_outputの記述を変更せずにencoding_translationの値を変更することでもうまくいくかもしれない。
phpMyAdminはサーバの言語設定も見ているのかもしれない・・・。今度暇があればソースをじっくり眺めてみる必要がありそうだな。

cookieを有効に使う

2006/04/06 | cookie

「cookieを有効に使う」といってもcookieを使うための関数を紹介するわけではない。
IE6ではプライバシーの観点から、サイトごとにcookieを受け入れるかどうか設定することができる。これはこのバージョンからcookie管理機能が導入されたことによるためだ。
これはW3Cが勧告するP3P(Platform for Privacy Preferences)という機能に準拠したものだ。
詳しくは@ITに記事を見つけたのでリンクをメモっておく。
http://www.atmarkit.co.jp/fwin2k/experiments/ie6privacy/ie6privacy_01.html


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net