っっっつ!!!
haltさんとこがいつの間にか*を極めて起業するに!
出たみたいだけど、
http://pipestonegroup.com/eclipse/updates
↑eclipseでソフトウェア更新してもつながらない…
そうそう。超気になってるのにつながんないですよね。
There is also a BitTorrent file available? Just grab Azureus from Sourceforge if you haven’t and use this link:
http://pipestonegroup.com/eclipse/torrents/PHPeclipse-1.1.4-features.zip.torrent
BitTorrent試してみるいい機会なのかな?
PHP Bindings for the Subversion Revision control system.
PECLにlibsvnのバインディング。
PHPでSubversion、面白い何かができそうな気がするようなしないような。
PEAR :: Package :: Net_SmartIRC
Description
Net_SmartIRC is a PHP class for communication with IRC networks, which conforms to the RFC 2812 (IRC protocol). It’s an API that handles all IRC protocol messages.
IRCのBotとかすぐ作れるNet_SmartIRCの1.0.0がついに出ました。
イベントにリスナを登録してく感じで気軽に作れるのでコレを機にPHPコマンドラインアプリに目覚めるのも!
この間のMojaviバグ疑惑ですが、気になるのでもう少し調べてみました。
ForumのOld Supportに該当する投稿がありました。(去年の5月だからかなり前です。)
Mojavi Forum > ErrorLogger and Smarty
However, Mojavi’s controller automatically sets an instance of its own ErrorLogger class (opt/filters/ErrorLogger.class.php) as the error handler (thus overriding Smarty’s settings), which defaults to flagging E_NOTICE as a fatal error. So every time I set a {$tag} in my Smarty template that does not have a corresponding value set in my View, I get a FATAL error.
やっぱりSmarty使ったときE_NOTICEがFATALエラーってでて困ってます。
I would really like to see that change in the source Mojavi too, feti. Error handling is really weird right now.
Will you resist the plea of your people? Come on, be a good and just ruler here ;)
ところでMojaviって1人で作ってるんでしょうか?エラー直してくれってsetiという人を名指ししてるし、Mojavi Founderの肩書きも他に見当たらないです。しかし言い方が気に入らなかったのか、
The check against error_reporting() is used to decide when to log an error depending on whether or not it was supressed.
Without the check, or with improper checking an error that occurs from @function() would be reported, when you don’t want it to be. That’s why the checking exists. Otherwise it proceeds as normal.
問題無い的発言。
しかし、その後の発言で端的にまとめられてますがそのままでは困る点が。
- Smartyで未定義の変数があるとFATALエラー
- ロギングのとこでWARRNINGとERRORが逆
- (上記のせいで)WARRNINGがでるとFATALエラーでスクリプトが終わる
- ユーザーがerror_reporting設定しても無視される
最後のは別にいいかなと思いますがその他は露骨に困ります。
最終的には結局自己解決して終了してます。
SVNの2.0.1 DEV見ても変わってないので特に取り入れられて無い様子です。
もう2系はどうでもいいやって感じなんでしょうか。それとも「もうPHP4アンインストールしたよ」とかでしょうか。
ブランチとか厭なのでパッチを公開しつつ本家に「できれば・・・反映してもらえないかと・・・PLZ・・・」という地道な働きかけをして行きたいと思います。
Pro PHP:: The Podcast – Giving voice to the Professional PHP Community
Welcome to the Pro PHP Podcast. Your number one source for conversations, interviews, debates and op-eds with PHP pioneers, project heads, and companies using PHP. From PHP 5 to PEAR. From Databases to Daemons. The First All PHP Podcast.
PHPネタPodcast!
聞いてみたけど全然分からなかったおれが来ましたよ。
Reflection_Annotation in CVS Sebastian Bergmann
My Proposal for ””Reflection_Annotation”” has been accepted and I committed an initial development version to the PEAR CVS Repository.
ProposalにあったReflection_Annotationが6票で通りました。
CVSに上げ始めたらしいので気になっていたParser部分を見てみました。
class Reflection_Annotation_Parser {
public static function parseAnnotations($docComment) {
$annotations = array();
$lines = explode("\n", $docComment);
foreach ($lines as $line) {
$nameStart = strpos($line, '@');
if ($nameStart !== FALSE) {
$nameEnd = strpos($line, '(', $nameStart);
if ($nameEnd !== FALSE) {
$name = substr($line, $nameStart + 1, $nameEnd - $nameStart - 1);
}
$argumentsEnd = strpos($line, ')', $nameEnd);
if ($argumentsEnd !== FALSE) {
$arguments = substr($line, $nameEnd + 1, $argumentsEnd - ($nameEnd + 1));
$annotations[$name] = $arguments;
}
}
}
return $annotations;
}
}
なるほど、Parserと聞いただけで拒絶反応示してしまいたが、コメント部分をパースするだけならこんな感じなんですね。
Reflection_Annotationに親近感が沸きました。
ref: PHPにアノテーション
PHP Webアプリ開発でのXSSやSQL Injection絡みのクォートだなんだのごっちゃになってて、今まで開発やってきたくせにいまいち明確に分かっていませんでした。
が、正解がやっと分かりました!
正解言っちゃいますけどいいでしょうか?これが正解なので暗記してください。あとお子さんが生まれたら真っ先に教えておいてください。
■問題名
- 問題
- 解決策
- エスケープ対象
■XSS
- ユーザの入力をHTML内で表示すると危険なスクリプトを実行される可能性がある
- htmlspecialchars()
- & , < , >
■SQL Injection
- ユーザの入力をSQL文に含める場合、危険なSQLが実行される可能性がある
- addslashes()
- ’, ””, \, NUL (ASCII 0)
「magic_quotes_gpcはどうした?」という意見があるかもしれません。
magic_quotes_gpcに関してはphp.ini-recommendedに下記の記述があります。
; – magic_quotes_gpc = Off [Performance]
; Input data is no longer escaped with slashes so that it can be sent into
; SQL databases without further manipulation. Instead, you should use the
; function addslashes() on each input element you wish to send to a database.
magic_quotes_gpcはSQLのためにある設定で、パフォーマンス的には切ると上がるのでオススメと。これを使わない場合は自分でaddslashes()。
どっちでもいいんですが、下記の2点からOffにして自分でaddslashes()が正解(とします)!
- magic_quotes_gpcはGet,Post,Cookieの略でその時にクォートされる。値を受け取った後プログラム内でシングルクォートなどを入れてしまう可能性はある。
- 複数リクエストに渡る場合、そのたびにクォートされるので毎回戻す必要がある。
あーすっきりした!
Connect PHP to DB2 and Cloudscape via PDO
PHP 5.1 is set to ship with a brand-new database connectivity layer known as PHP Data Objects (PDO). While PHP has always had very good database connectivity, PDO takes PHP to the next level. Learn how to obtain, install and use PDO to connect to IBM? DB2? Universal Database? and IBM Cloudscape?
IBM developerworksのPDOでDB2/Cloudspaceの記事。
DB2ってODBC経由になるんですね。
何かおしゃれっぽいので誰か試しに業務でPDO + Cloudscapeやってみて欲しいです。
PHPのセッションIDの続編。
やはり複数WebサーバでのセッションID重複の可能性があるというのが問題になってきた(気になってきた)のでまた調べてみたところ、前回の結論には一部間違いがありました。
msessionはセッション情報を全てメモリに保持しているのでセッションID のコリージョンを検出しています。
とありますが、ちょっと考えたらリクエスト終了する毎にプロセスが終了するPHPの仕組み上、複数のリクエストが作成するセッションIDを見張ることなんて不可能。
msessionとはPHP extentionの一つでMsession – Mohawk Session Managerというセッション管理サーバへのAPIなんですね。セッション管理サーバが常駐してセッションIDを見張るので重複することが無いんだそうです。
普通はmsessionを使っておけば問題なさそうです。
ただ、msessionサーバが落ちたら困るのでその辺どうするかが悩みです。
ref: PHPのセッションID