Java 1.4は流石にもういりませんかね

Java 1.4で動作確認をしたわけですが、流石にもう要らないかなあと思いまして。Eclipse 4.1ではJDK1.4を認識しないのですよね。
主に同梱するRhinoのjarファイルの問題があるためですが。
というわけでしばらく様子を見て、新たな問題がなければ内容そのままJava5でビルドして同梱jarを変更して1.2とするつもりです。

Mayaa 1.1.29 をリリース

Mayaa 1.1.29 をリリースしました

  • JIRA[MAYAA-78] commons-beanutilsを1.8.3に更新しました。
  • JIRA[MAYAA-79] Servlet 3.0のweb.xmlに対応しました。([mayaa-user:933]でパッチをいただきました)
  • TemplateBuilderImplにbalanceTagパラメータを追加しました。falseにするとタグのバランス修正をしなくなります。その場合、テンプレート作成者側で正しいことを保証する必要があります。

問題がありましたら ML かこの日記のコメントでお知らせください。よろしくお願いします。

外部jsの読み込みを強制

HTML上にscriptタグを書きsrc属性で外部jsファイルを読み込むようにしている場合、ブラウザがキャッシュしてしまって開発中に困る場合があります。特にfirefox。seleniumIDEのためにトライ&エラーにはfirefoxを使うのですが、Ctrl+F5でも外部ファイルは再読込されなかったりします。
開発環境のdefault.mayaaでscriptタグのsrc属性にシステム時刻をパラメータとして付与することで回避できます。iframeやimgでも同様ですね。

<m:beforeRender><![CDATA[
function addTime(value) {
if (value != null) {
var now = java.lang.System.currentTimeMillis();
if (value.indexOf('?') >= 0) {
return value + '&t=' + now;
}
return value + '?t=' + now;
}
return value;
}
]]></m:beforeRender>
<m:echo m:xpath="//script">
<m:attribute name="src" value="${ addTime(src); }"/>
</m:echo>

Google Apps API Japan Groupのキックオフイベント

Google Apps API Japan Groupのキックオフイベントに行ってきました。
イベントの内容としては、Google Apps APIとはどういうものか、どんなことができるのか、こんなことを実際にやっているという紹介の発表(LT含む)があり、そのあとはみんなでサンドイッチを食べながら意見・情報交換というか雑談というか。
Google Apps APIというよりGoogle Apps Scriptが良さそう、という印象。Excelマクロとはいかないけれど、先日GUI Builderも登場したし、軽量なものを作りやすそう。サーバサイドで動くのためTwitterと通信したりも可能で、チュートリアルに例題とされていたりする。
Backlogからデータ引っ張ってくると面白いかなーと思ったけどid:ikikkoさんがとうの昔にやっていた。

簡易デバッガを作ってみた

簡易デバッガというかインスペクタというか、指定した場所で Swing のウィンドウを開いて任意のスクリプトを実行するものを作ってみました。思いついたのをそのまま書いただけなので色々手抜きですが、状況によっては使えるかもしれません。このソースコードひとつプロジェクトに取り込めば使えます。Java6ですが @Override を消せば Java5 でもコンパイルできるはず。package は適当に。→(ソースコード)
localhost からの接続で debug メソッドを呼ぶと、Swing のウィンドウが開きます。function でラップしてしまえば呼び出しも楽になるでしょう。

Packages.org.seasar.mayaa.impl.ex.rhino.MayaaDebugger.debug()

表示されるのはテキスト入力欄とボタンのあるウィンドウで、ボタンを押したときにテキスト入力欄に書かれているスクリプトを実行します。スコープは debug メソッドを実行したところなので、for ループの途中で呼んでループ用変数を書き換えるなんてこともできます。
ウィンドウを別に立ててそれと接続するようにできればデバッガっぽくなるかなあ。

機能を追加しようとして追加場所に困る

あると便利、程度の機能を追加してみようかと考えるも、追加場所に困って停止中。オプション的に有効に出来るようにするか、それとも普通に含めるか。また、interface や package の適切な場所とか。いつまで経っても便利機能ものは util とかいって逃げたくなりますね。
とりあえずメモ的に。

  • seeOther(String url)
  • println(Object value)
    • function println(value) { java.lang.System.out.println('' + value); } とか毎回やるのもねえ、と。
  • println(String pattern, Object[] args)
    • java 1.4 なので MessageFormat で。
  • logDebug(String message)
  • logInfo(String message)
  • logWarn(String message, Throwable t)
  • logError(String message, Throwable t)
    • getLogger("mayaa:/foo/bar.myaaa").debug(message) という感じ。

さて追加するべきか否か。そして追加するならどうやろう。