2011-11-09
■[symfony]CrocosSecurityBundleリリースしました 
クロコス で使っている認証管理のバンドルを公開しました。(正確には最近使い始めた)
元々SecurityBundleを拡張してFacebookのPHP SDKを使った認証の仕組みとか作っていたのですが、正直複雑すぎて管理してられないので、今後のことを考えてシンプルなものをさっと作ってみました。
現状の機能はREADMEに書いてあるとおりで、基本的には認証が必要かどうかを判定する程度のものしかできてないです。ですがまあ、普通にやる分にはこれくらいで十分かなとも思います。
あとはまあ、必要な機能ができたら作るとして、SecurityContextをTwigのグローバル変数に組み込んだり、認証を一切しないようにするオプションくらいは早めにつけようかなと思います。
2011-09-10
■[symfony][event]PHPカンファレンス2011のSymfony Updateの発表資料 
PHPカンファレンス2011のフレームワークアップデートで、Symfonyについて発表しました。
今回は機能の解説とかではなく、DDDなどの紹介をしました。様々なフレームワークがありますが、僕たちエンジニアにとってフレームワークを覚えることが仕事ではなく、システムを開発することが仕事ですよね。
どんなフレームワークを使おうと揺るがない知識・技術を身につけるべきだと思っています。DDDやデザインパターンがいい例です。Symfonyの背景にはそういった技術がありますが、それはフレームワークを学ぶと言うより、技術者としての本質的なレベルアップだと考えています。
だからこそ、今日は機能の解説などを行ってフレームワークとしての優位性を解説するのではなく、DDDの紹介を行いました。機能については、今日の話を聞いていた感じだと大体Symfonyにも実装されているなという感じです。
というわけで、そういった思想のもと書いている本が「実践PHP」なわけです。それはまた後日。
----
ちなみに去年の発表資料。
2011-08-01
■[symfony2][monolog]Monologのfingers_crossedがようやくわかった 
MonologはSymfony2でも利用されている高機能なロガーライブラリです。PythonのLogbookというライブラリをPHPに移植したものだと記憶しています。
Symfony2の app/config/config_dev.yml では、Monologは次のように設定されています。
monolog: handlers: main: type: stream path: %kernel.logs_dir%/%kernel.environment%.log level: debug
これはそのまま、debug以上のレベルのログをpathに指定したログファイルに書き出すという指定です。config_dev.phpなので開発環境用の設定ファイルですが、ログはすべて書き出すという設定です。
これとは別に、運用環境用の config_prod.yml では次のように設定されています。
monolog: handlers: main: type: fingers_crossed action_level: error handler: nested nested: type: stream path: %kernel.logs_dir%/%kernel.environment%.log level: debug
nestedという部分はconfig_dev.ymlのものと同一です。それとは別に、fingers_crossedという typeのハンドラーが設定されています。今までこのfingers_crossedというのが何かよくわからなかったので調べてみました。
上記のconfig_prod.ymlの設定だとどのようになるかというと、ログレベルがerror以上のログが記録された場合のみログを出力するが、そのときはそれまでに記録されたdebug以上のすべてのログが出力されます。
FingersCrossedHandler: A very interesting wrapper. It takes a logger as parameter and will accumulate log records of all levels until a record exceeds the defined severity level. At which point it delivers all records, including those of lower severity, to the handler it wraps. This means that until an error actually happens you will not see anything in your logs, but when it happens you will have the full information, including debug and info records. This provides you with all the information you need, but only when you need it.
Seldaek/monolog ? GitHub
従来のロガーでは、error以上と設定した場合、error以上のログのみが記録されます。しかし、エラーが出た場合はより詳細なログがみたいというものです。このfingers_crossedを用いると、エラーがあったプロセスはデバッグ情報も含めたログが残るため、エラーの追求などが容易になります。
今までは運用環境ではデバッグログなんかは出力しないようにしていましたが、それでもログを残すように設定しておいて損はないなと思いました。
AKIMOTO
2011/08/02 21:44
指をクロスさせるのは「うまくいってくれよー」という意味です。
