PHPのセッションIDの続編。

やはり複数WebサーバでのセッションID重複の可能性があるというのが問題になってきた(気になってきた)のでまた調べてみたところ、前回の結論には一部間違いがありました。

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

とありますが、ちょっと考えたらリクエスト終了する毎にプロセスが終了するPHPの仕組み上、複数のリクエストが作成するセッションIDを見張ることなんて不可能。

msessionとはPHP extentionの一つでMsession – Mohawk Session Managerというセッション管理サーバへのAPIなんですね。セッション管理サーバが常駐してセッションIDを見張るので重複することが無いんだそうです。

普通はmsessionを使っておけば問題なさそうです。
ただ、msessionサーバが落ちたら困るのでその辺どうするかが悩みです。

ref: PHPのセッションID

「得ようと思ったらまず与えよ」

ゲーテ

自分が欲しかったものを公開するシリーズ。

Mojavi2.0で開発するときのUMLの雛形を作りました。(for JUDE 1.5.2)
絶対あった方が良いと思うんだけど作るの面倒臭かったです。
optのクラスについても網羅しました。特にsessionなんかは図で見た方がパッとわかると思います。

php-1.0.jude.zip

php_jude.png

仕事で10ヶ月振りにPerlの世界からPHPへ帰ってきたのでMojaviをまじめに勉強しています。

Mojavi2.0 + Smartyで

「FATAL [/path/to/input.html.php:28] Undefined index: foo」

ってエラーを良く見ないでしょうか。
何となく、「Mojavi + Smartyだとエラーちょっと厳しいような・・・」とか思ってましたが、良く考えたらなんで変数が無いぐらいがFATALエラーなんだよ!

頭にきて調べたら分かりました。
optのloggingの中にあるErrorLoggerで、E_USER_*は処理してるんだけどE_NOTICEやE_ERRORなどのシステム発のエラーを考慮して無いです。

修正。

200a201
>                 case E_NOTICE:
205,206c206,208
<                 case E_USER_ERROR:
< 
---
>                 case E_USER_WARNING:
>                 case E_WARNING;
>                 
210d211
<                 case E_USER_WARNING:

これ、デフォルトがfatalなので、考慮してないエラーは全部FATALエラーになってました。
コレ直したら急に使い易い気がしてきた!

システム・オブ・ア・ダウン
システム・オブ・ア・ダウン
ソニーミュージックエンタテインメント (1998/10/01)
売り上げランキング: 9,343
通常24時間以内に発送

すごい変だけど何かハマってしまいました。

Server-side Bookmarklet: blog.bulknews.net

サーバサイドにおいた JavaScript を実行する Bookmarklet。ある程度のサイズになった JavaScript を配布するときは便利そうですが、コメントにもあるように DNS Poisoning などに弱い、Referer が必ず漏れるというセキュリティ部分での懸念もありそう。

DNS Poisoningって何?

【DNSポイゾニングの手口】

攻撃者は、攻撃対象となるユーザが利用するDNSサーバのキャッシュに誤った情報を記憶させ、ユーザが特定のドメイン名、たとえば www.example.comというEコマースサイトにアクセスしようとした際に、任意のIPアドレスを持つサーバ(例えばクレジットカード番号収集用のサーバ)に通信を行うよう誘導する。

なるほど、ファーミングテクとして利用されちゃいますか。こわ。

Personal and small business information management: Backpack

backpack_logo.gif

Backpack is so flexible and easy, you’ll use it to…

Organize to do lists, notes, images, photos, and more Plan a personal/business trip Keep track of what your competitors are doing Plan a home improvement project Collaborate on a new business idea Keep track of houses you’re considering buying Gather information for a research project Keep a list of gift ideas for friends Build a list of recommended restaurants, and more…

BasecampTa-da Lists37signalsの新サービスBackpack。

リマインダーやTo-doリストやファイルや画像を簡単に上げられるちょっと表現しづらいツール。Web版のアウトラインプロセッサみたいなもの?
メールでアップできるのでネット環境が無いところでも思いつきをメモっておいて後でアップみたいな使い方が便利らしい。37signalsの他のアプリのようにAjaxで小気味良い使い心地です。

O’Reilly CodeZoo

CodeZoo is a site for any developer who wants to avoid writing code. We believe the best code is the code you don’t have to write—the pieces already done for you, as well or better as you would do them yourself.

オライリーのCodeZoo。
手っ取り早く再利用できるコード・コンポーネントを集めているようです。車輪の再開発反対!

新宿のブックファーストに行ったら吉田戦車のサイン会が行われてました。

吉田戦車が大好きなおれは大いにうろたえ、その日発売のなめこ・イン・サマーを買いに走りサインして貰いました。
書いて欲しい物のリクエストを告げると、

「お、最近のキャラ、書けるかなぁ」

と言いながら世にも適当なキャラ、マスコットキャラクター君を買いてくれました。

yoshidasensya.jpg

よかった。すごく嬉しい。

なめこ・イン・サマー
吉田 戦車
太田出版 (2005/04/26)
売り上げランキング: 10,549
通常4~6週間以内に発送

ITmedia エンタープライズ:企業で真価を発揮するP言語――Burton Group報告

 IT調査会社のBurton Groupによれば、PHP、Perl、Pythonの「P言語」は、C 、Java、C#(G言語と呼ばれることもある)などの汎用プログラミング言語を補完できる機能のために、過去4~5年で本当に真価を発揮するようになった。P言語はエンタープライズスクリプティングのようなミッションクリティカルな作業でも十分優れた実績を上げており、G言語よりも好まれてしかるべきだと報告書は指摘している。

|∧∧
|・ω・`) そ~~・・・
|oPo
|―u’

| ∧∧
|(´・ω・`)
|o   ヾ
|―u’ P言語 <コトッ

 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

| ミ  ピャッ!
|    P言語

Rubyは?
LL(Lightweight Language)の方がいいな。

Creole :: About Creole

Features

Creole provides the following distinguishing features:

  • Built for PHP5: new object model, Exceptions
  • Interface-based system allows easy creation & registering of custom drivers or classes that wrap existing drivers to provide additional functionality (e.g. to log queries for debugging, do query performance analysis using EXPLAIN, etc.).
  • Fully object-oriented API
  • ResultSet scrolling: next, previous, first, last, relative, and absolute row fetching.
  • ResultSetIterator (SPL) provides an additional means for iterating over recordsets.
  • Comprehensive database metadata (database, table, full column info, pimary keys, foreign keys, indexes) using simple OO API.
  • Full unified type system (based on JDBC Types)
  • Simple, un-exceptional OO API for handling BLOB and CLOB data.
  • Type-specific methods handle any necessary conversions and escaping for inserting and retrieving values.
  • Native (no emulation) handling of autoincrement / sequence id generation.
  • Extensive unit test framework tests each driver using real databases.

PHP5専用のO/Rマッピングツール(最近はパーシステンスフレームワークと言うのかも)のPropel (via PHPLog)のサブプロジェクトCreole(クレオール?)。
PEAR DBみたいなDB抽象レイヤーのようです。

PHP5でこの辺のツール群はこういうのに全部取って代わられちゃうんでしょうか。PHP4 Mojavi2.0 DB_DataObjectはひよってますか。