Do You PHP はてブロ

Do You PHPはてなからはてブロに移動しました

S2Daoバインド後のSQLのみを別のログファイルに出力する

ほとんど個人的な備忘録。
log4jレベルだとは予想してましたが、如何せん、log4j.propertiesの書き方を忘れてるよ。。。 orz
とりあえず、FAQ/S2DAO - SeasarWikiの情報を基に、以下の内容をlog4j.propertiesに追記することで対応。

log4j.category.org.seasar.extension.jdbc.impl=DEBUG, S
log4j.additivity.org.seasar.extension.jdbc.impl=true
log4j.appender.S=org.apache.log4j.DailyRollingFileAppender
log4j.appender.S.File=${catalina.home}/webapps/test/WEB-INF/logs/sql.log
log4j.appender.S.DatePattern='.'yyyy-MM-dd
log4j.appender.S.layout=org.apache.log4j.PatternLayout
log4j.appender.S.layout.ConversionPattern=%X{host}  %d{yyyy/MM/dd HH:mm:ss} %p %m%n
log4j.appender.S.Threshold=DEBUG

あとでSeasar2のソースを見てみたら、

  • org.seasar.extension.jdbc.impl.BasicBatchHandler
  • org.seasar.extension.jdbc.impl.BasicSelectHandler
  • org.seasar.extension.jdbc.impl.BasicUpdateHandler

でそれぞれログ出力しているのを確認できました。

Tomcat5.5のcluster

相変わらず、どうでも良いところでハマってるのでメモ。

  • server.xmlのReceiver要素のtcpListenPort属性で指定するポートは、iptablesから除外しておく
    • Tomcat起動時に"No members active in cluster group"となってしまう(当然)
  • アプリケーション側のweb.xmlに記述するdistributable要素には順番がある
    • 以下、ちょっと長いけど、記述する要素によっては気にする必要がある
      • icon?
      • display-name?
      • description?
      • distributable?
      • context-param*
      • filter*
      • filter-mapping*
      • listener*
      • servlet*
      • servlet-mapping*
      • session-config?
      • mime-mapping*
      • welcome-file-list?
      • error-page*
      • taglib*
      • resource-env-ref*
      • resource-ref*
      • security-constraint*
      • login-config?
      • security-role*
      • env-entry*
      • ejb-ref*
      • ejb-local-ref*

ちゅーことは、web.xmlって、何にも書かなくても良いって事か。

PEAR::Text_CAPTCHA_Numeral


PHPCAPTCHAといえばPEAR::Text_CAPTCHAですが、最近見かけるようになった「簡単な計算をさせるCAPTCHA」を実現するパッケージです。


Generation of numeral maths captchas

$PEAR_DIR/doc/Text_CAPTCHA_Numeral/examplesディレクトリにあるliveNumeral.phpあたりを実行してもらうとすぐ分かると思いますが、

のようなCAPTCHAです。このパッケージでは、

  • 計算式の作成(足し算 or 引き算)
  • 計算式の取得
  • 回答の取得

といった簡単なメソッドしか用意されていません。というか、これ以上不要でしょう ;-)
PEAR::Text_CAPTCHAのようにGD拡張は不要ですし、PHP(5.0以上)さえあれば動作しますので、適用範囲は結構広いと思います。