PHP
OS入れ直すときにDBバックアップしてなくて2ヶ月分ぐらい消えた
なので、rhaco2 の発表資料だけ置いておこう。
phpstudy42 – rhaco2
View more Microsoft Word documents from wozozo.
IE8のドキュメントメモ
IE8のレンダリングモードは3つ
IE8 StandardモードについてはIE8の描画エンジンが利用され、それ以外はIE7互換の描画エンジンが利用されます
DOCTYPEによるレンダリング モードの指定
METAタグによるレンダリング モードの指定
<meta http-equiv="X-UA-Compatible" content="IE=8">
content="" の部分を変更する
HTTPレスポンス ヘッダによるレンダリング モードの指定
IE8の例
名前:X-UA-Compatible
値:IE=8
レンダリング モード指定の優先順位
META要素 > HTTPレスポンス ヘッダ > DOCTYPE
METAタグによる指定がもっとも優先される
バージョン管理(制御付きコメント)
<head>
<title>Test Page</title>
<!—[if eq IE7]>
IE7用のコンテンツ
<![endif]–>
</head>
<head>
<title>Test Page</title>
<!—[if gte IE7]>
IE7以上のコンテンツ
<![endif]–>
</head>
<head>
<title>TestPage</title>
<!—[if gte IE8]>
IE8以上のコンテンツ
<![endif]–>
<!—[if eq IE7]>
IE7用のコンテンツ
<![endif]–>
</head>
アドレス バーのデフォルト表示
IE7から変更になり、IE8でも引き継ぎ
ポップアップ表示されたコンテンツのURLを確認できるように、インターネット サイトのポップアップ ウィンドウにアドレス バーが強制表示されるようになりました。
また、IE7から、ウィンドウのサイズの指定方法が異なります。スクリプトで、ウィンドウの高さを指定する場合、タイトルバーやアドレスバーを含まない、コンテンツ部分のみのサイズを指定するようになりました。
もうIE爆発すればいいのに。
参考
Internet Explorer 8 のダウンロード | IE8 のダウンロード | IEAK | Readiness Toolkit | Fiddler | MSDN デベロッパー センター
Internet Explorer 8 Beta 1 for Developers ホワイトペーパー
Internet Explorer 8 [...]
PHPのセッションのガーベジコレクションがよくわからない
PHPマニュアルに以下のようにあるんだけど、
http://jp.php.net/manual/ja/session.configuration.php#ini.session.save-path
オプションの引数としてN(数値)を指定できます。 これはセッションファイルを分散して保存する際に ディレクトリ階層レベルを決定します。 例えば、’5;/tmp’とすると /tmp/4/b/1/e/3/sess_4b1e384ad74619bd212e236e52a5a174If という位置にセッションファイルを生成します。 Nを使用するには、これらすべてのディレクトリが 事前に作成されている必要があります。 そのためのシェルスクリプトがext/sessionに mod_files.shというファイル名であります。 また、0以上のNが指定されている場合には自動ガーベッジコレクション が機能しないことに注意してください。詳細は php.ini を見てください。 また、Nを指定する場合は、 session.save_pathを”quotes”で囲う必要があります。 なぜならセパレータ(;) は php.ini ではコメントとしても利用されているからです。
これがちょっとまえのマニュアルだと、
http://www.teu.ac.jp/chiit/~dsuzuki/phpdoc/ref.session.html
session.save_pathのパスの深さが2より大きい場合、ガーベッジコレクションは行われません。
となっているぽい。
debianのパッケージから入れたphpでは、デフォルトのセッション保存先は /var/lib/php5 になってる。
これが「パスの深さが2より大きい場合」にあたるのか、自分が試した限りではセッションが破棄されなかった。
< ?php
ini_set('session.gc_maxlifetime', 3);
ini_set('session.gc_probability', 1);
ini_set('session.gc_divisor', 1);
session_cache_expire(1);
session_start();
session_regenerate_id();
if (isset($_SESSION['user'])) {
$_SESSION['count'] += 1;
echo 'login', $_SESSION['count'];
} else {
$_SESSION['user'] = true;
echo 'logout';
}
?>
session test
/var/tmp とか [...]
Zend_LoaderはPEARにも使える
ZendFrameworkのコンポーネントの1つ、Zend_LoaderはSPLのautoloadを実装したものです。
PHPファイルの頭で、
< ?php
require_once ‘Hoge/Fuga/Uhya.php’;
require_once ‘Unko/Chinko/Pantsu.php’;
require_once ‘PEAR/Something/Ahya.php’;
っていうふうに ファイルを1個ずつ呼び出して行くのはめんどくさ過ぎなので autoload を使う。
require_once を書く代わりに、
< ?php
require_once ‘Zend/Loader.php’;
Zend_Loader::registerAutoload();
って書いておけば、もう命名規則に沿っている限り require_once はもう書かなくて良い。
Zend_Loaderは中で、アンダーバーに 「 _ 」をスラッシュ「 / 」 に置き換えて他のファイルを読む込む必要がでてきたときに勝手にインクルードしてくれる。
< ?php
require_once ‘Zend/Loader.php’;
Zend_Loader::registerAutoload();
$dh = Date_Holidays::factory(‘Japan’, 2008, ‘ja_JP’);
$date = new Date_Holidays();
とりあえずPEARは全部命名規則通りだったと思うので、もうrequire_once イラネ。
ZendFramework SQL Debug View Helper
cakeとかsymfonyには画面下にSQLログみたいなのが表示されてる。これzfにも欲しい。
と思ってポイものを作った。
svn co http://svn.coderepos.org/share/lang/php/ZendFramework_ext/library/Ex/View/Helper/ShowSQL.php
使い方。
bootstrapで、view helperのディレクトリを指定する。
$view = new Zend_View();
$view->addHelperPath(self::$root . ‘/library/Ex/View/Helper’, ‘Ex_View_Helper’);
で、viewの中で
< ?php echo $this->showSQL() ?>
ってやると、
こんなやつが表示される。
helper内の
$this->_db = Zend_Db_Table::getDefaultAdapter();
DBに接続する部分は環境にあわせて書き換えてください。
このプラグイン内でjQueryを読み込んでて、それが影響するようならJSの部分だけ消しちゃってください。
テーブルのソートができなくなるぐらいで特に問題はないです。
plugin内で完結させようとしてHTMとかCSSがごちゃまぜになってしまった。