駒形電産

先日、PHPのセッション絡みの障害があり、調べてみました。何かというと「セッションIDが重複することがあるのか」ということについて。

PHP4.3.9のソースで見てみるとextというディレクトリがあります。これは拡張機能関連のソースがある場所のようで、pgsqlやmingやxmlなどが入ってます。ここにsessionディレクトリもありました。。拡張といっても本当のコア機能以外は全部ここに入っているようです。

php-4.3.9/ext/session の中のsession.cを見てみるとphp_session_create_idという露骨な名前の関数が定義されています。中身は大雑把に見ると、時間と php_combined_lcg()をMD5でハッシュ化しているようです。php_combined_lcgをググってみると、

[PHP-users 11996] Re: 「他人の情報を表示するサイト」

php_combined_lcgはマルチプロセスサーバー(プロセスをフォームするサーバー) ではPIDをマルチスレッドサーバーではthread_idを利用して疑似乱数を生成してい ます。したがって、仮に、micro秒単位で同じ時刻にアクセスしても同じセッション IDは生成されません。

msessionはセッション情報を全てメモリに保持しているのでセッションID のコリージョンを検出しています

どうやらPHPのセッションIDは理論的に絶対に重複しないようです。でもこれって、Webサーバが複数ある状態で1つのDBにセッションを保存している場合、同じ時刻で偶然プロセスIDも一緒だったら重複しちゃうんじゃないでしょうか。もう少し調べてみたいです。

2005/05/17 追記: 一部間違いがありました。 ref: PHPのセッションID2

guesswork

button_guesswork.png

guessworkは、「ややこしいフレームワークは使いたくない」けど「なんでもありになりがちなPHPスクリプトをスッキリさせる指針が欲しい」と考えている人のための軽量なフレームワークです。

個人的に超注目のPHPフレームワークguesswork

何が超注目なのかっていうと、「サイトがかわいい」

まだVersion 0.0.1なのになんでこんなにかわいいんですか?

PATH_SEPARATORってPHP4.1.2(Woodyの奴)だと使えないの・・・?

jude1.4.png

UMLモデリングツールJUDEの1.4がリリースされました!

10月13日に1.3まで無償で提供されていたJUDEがJUDE Professionalとして有償でリリースされることが発表されました。JUDEまでもがついに・・・( ´・ω・`) と思っていたところフリー版はJUDE Communityとして続いてくみたいです。

使い勝手の方ですが非常に素直で使いやすいです。UML1.4の図は全て書けますし印刷も(JUDEロゴが入りますが)OKです。ソースの読み込み・書き出しはスケルトンコードを吐くという位置付けなのでメソッドの間の実装は上書きされて消えちゃいます。ラウンドトリップ機能でリファクタリング時のドキュメント管理も簡単に!とまではいかないです。とはいえ、「抽象的なことを人にわかりやすく伝えたい」 → 「絵で説明しよう」 → 「どうせだったらUML記法に従うか」的なことにはとても役に立ちます。PHPの場合はPHPの型をクラスとして勝手に作ってしまうのが良さそうです。

antipop – eWordsAd: 「埋め込み e-Words」でアサマシ

e-Words でアサマシするスクリプトを公開してみる。

「最近のp0tはよくわからん」ということを何度か言われたのでトイレの落書きで見たeWordsで用語説明を埋め込むヤツをやってみました。(誤った解釈)

antipopでソレ用のスクリプトを配布しています。

アサマシはあんまり銭ッコロ儲からない割りに場所取るので外しました。配布に含まれているWWW::eWordsモジュールがとても良い。antipopの中の人は素敵だ。

動かしてみたら、

[Thu Oct 21 14:51:36 2004] eWordsAd.cgi: Can't locate object method "default_header" via package "LWP::UserAgent" (perhaps you forgot to load "LWP::UserAgent"?) at lib/WWW/eWords.pm line 17

default_headerメソッドが無い?どうやらwoodyのlibcrypt-ssleay-perlパッケージに入ってるLWP::UserAgentじゃ古いらしかった。最新の引っ張ってきたら動きました。

ewords.png (個別ページだけ)

Movable Type 3.1 にアップグレードしてみました [dh’s memoranda]

今回のバージョンの特徴は、PHP を利用したダイナミック・ページのサポートと、スケジュールポスト、サブカテゴリーです。また、プラグイン開発者からみると、callback が利用できるようになっていますので、より高度なプラグインが作れるようになります。できたら、ぜひ教えてください!

MovableTypeが3.11-jaにバージョンアップしました。PHPを利用したダイナミック・ページのサポートって気になりますね。

Class.forName(””foo”“)とDriverManager.getConnection(””bar”“)の間には? – Java Solution JDBCのおなじみのフレーズですが、Class.forName(””foo”“)で登録したドライバは どうやってDriverManager.getConnection(””bar”“)で使われているのか、ソース 上からは関連が見えないじゃないかと質問されて、自分もよく分かってないこと に気が付きました。

ドライバのスタティックイニシャライザでDriverManager.registerDriver()を呼んでDriverManagerのクラス変数にドライバを登録してるんですな。 非常にすっきりしました。

ココで言ってたPico containerの「watch this space!」はもうすぐ動きがあるから注目しとけ!的な意味だったぽいです。PHP5専用に作ってるのかな?

トイレに発生した水のトラブル用にクラシアン待ちながらMojavi試し中です。 ぎ! Mojaviを見ながら動かしてみる。まだよく分かってないんですが、これってFooView_success.class.phpとFooView_error.class.phpとかなった場合に両方クラス名はFooViewになんの?これクラス図的にはどう描くの?

2004/10/27追記: JSPをクラス図に描かないようにViewは描かないようです。

まるごとPHP! Vol.1―PHPを完全制覇。 (1)
山田 祥寛
インプレス (2004/09)
売り上げランキング: 1,341
通常24時間以内に発送します。

まるごとPHP! Vol.1買いました。 ・・・やべっ、自分のアソシで買やぁよかったっっっ・・・!? 表紙はコッチの猫にした方が売れたと思いました。

ビギナーズセクション、スペシャルセクション、エキスパートセクションの3つに分かれて書いてあっていろんな人によろしげです。初っ端の山田祥寛さん(山田祥平ではない)は何かもうPHP技術自体の国内エヴァンジェリスト的存在で、もう定番ですな。本全体を通してPEARマンセーなのでWeb+DB Pressの記事とかとあわせて皆が使うようになればいい。

そしてやっぱり良かった ネ申 のmojavi記事。あのページ数に収まる最高の形ではないかと思った。あと最後の vimでPHP のタイトルには意味無くボフりました。