Hatena::ブログ(Diary)

ゆっくり*ゆっくり

2012-03-03

最近ははてなブログに書いてます 19:31

Fivestar¥Log

(どこにブログを書こうか)迷走中。

2011-11-09

[]CrocosSecurityBundleリリースしました 15:32

GitHub - crocos/CrocosSecurityBundle: A symfony bundle provides a simple way to manage auth with annotation.

クロコス で使っている認証管理のバンドルを公開しました。(正確には最近使い始めた)

元々SecurityBundleを拡張してFacebookPHP SDKを使った認証の仕組みとか作っていたのですが、正直複雑すぎて管理してられないので、今後のことを考えてシンプルなものをさっと作ってみました。

現状の機能はREADMEに書いてあるとおりで、基本的には認証が必要かどうかを判定する程度のものしかできてないです。ですがまあ、普通にやる分にはこれくらいで十分かなとも思います。

あとはまあ、必要な機能ができたら作るとして、SecurityContextをTwigのグローバル変数に組み込んだり、認証を一切しないようにするオプションくらいは早めにつけようかなと思います。

2011-09-10

[][]PHPカンファレンス2011のSymfony Updateの発表資料 21:23

PHPカンファレンス2011のフレームワークアップデートで、Symfonyについて発表しました。

今回は機能の解説とかではなく、DDDなどの紹介をしました。様々なフレームワークがありますが、僕たちエンジニアにとってフレームワークを覚えることが仕事ではなく、システムを開発することが仕事ですよね。

どんなフレームワークを使おうと揺るがない知識・技術を身につけるべきだと思っています。DDDデザインパターンがいい例です。Symfonyの背景にはそういった技術がありますが、それはフレームワークを学ぶと言うより、技術者としての本質的なレベルアップだと考えています。

だからこそ、今日は機能の解説などを行ってフレームワークとしての優位性を解説するのではなく、DDDの紹介を行いました。機能については、今日の話を聞いていた感じだと大体Symfonyにも実装されているなという感じです。

というわけで、そういった思想のもと書いている本が「実践PHP」なわけです。それはまた後日。


----

ちなみに去年の発表資料。

PHPカンファレンス2010の発表資料 - ゆっくり*ゆっくり

2011-08-01

[][]Monologのfingers_crossedがようやくわかった 01:43

MonologはSymfony2でも利用されている高機能なロガーライブラリです。PythonLogbookというライブラリ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.

GitHub - Seldaek/monolog: Sends your logs to files, sockets, inboxes, databases and various web services

従来のロガーでは、error以上と設定した場合、error以上のログのみが記録されます。しかし、エラーが出た場合はより詳細なログがみたいというものです。このfingers_crossedを用いると、エラーがあったプロセスデバッグ情報も含めたログが残るため、エラーの追求などが容易になります。

今までは運用環境ではデバッグログなんかは出力しないようにしていましたが、それでもログを残すように設定しておいて損はないなと思いました。

AKIMOTOAKIMOTO 2011/08/02 21:44 指をクロスさせるのは「うまくいってくれよー」という意味です。

2011-06-17

24歳になりました 00:02

今日で24歳になりました。

23歳は、オブジェクト指向を基礎から学び直したおかげでコードの質が上がったと思います。会社も作ったし、自分の中ですごく大きな1年でした。

24歳は、よりよいプログラムを書くために勉強を積み重ねていきたいと思います。あと、また本を書いているので、それも仕上げてしまいたいですね。

みなさま、今後ともよろしくお願いします。

あとウィッシュリストをはっておくのでこちらもよろしくお願いしますね!!!!