fatjarを生成すると当然jarの署名も変わります。なのでchecksumを検証するような行儀の良いjarを含んでいると実行時にSecurityExceptionが吹っ飛んできます。回避策は以下の通り。署名のマニフェストをjarから除外するのです。 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>ma</artifactid></plugin>…
どうやらSpringは各jarにspring.handlersやspring.schemasがあるため、maven-assembly-pluginでfatjarを生成しようとすると、ファイルがコンフリクトしてしまいます。なのでmaven-shade-pluginを使うのが正解。 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId></plugin>…
時刻を「36秒前」とか「15分前」とか「8時間前」のように相対的な経過時間で表示するLabel。24時間以上前は絶対時刻で表示。 自分はだいたいIConverterでやってしまうのだけど、Modelでも出来るよね。どう使い分けるのがいいのかね。 package net.nagaseyasu…
例えばデータベースのバックアップを7日間ごとにやるなら曜日を利用して、 /usr/bin/pg_dump database > database-`/bin/date +\%A`.dump と書けばよかったけれど、任意の日付間隔の場合どうしようかなあと考えた結果がこれ。 /usr/bin/pg_dump database > d…
Galileoのアップデートサイト重すぎ!という訳でミラーサイトに変更。 [Window]->[Preferences]->[Install/Update]->[Available Software Sites] LocationのURLの http://download.eclipse.org/ を http://ftp.yz.yamagata-u.ac.jp/pub/eclipse/ に置換する…
TextFieldやTextArea用のPlace Holder(入力がない場合はグレーの文字でヒントが出るやつ)のIBehaviorを書いてみました。 書いた、といってもSimpleAttributeModifierと大して変わらないですが。jQueryとjQuery.placeholderをこのIBehaviorと同じpackageにお…
HibernateなどORMでentityがenhanceされているとWicketのConverterLocatorはObject.toString()の値を返してしまいます。Application.newConverterLocator()は、内部にclass名とIConverterのMapを持ち、IConverterLocator.getConverter(Class type)は単純にMa…
4月の25〜26日に吉祥寺は前進座劇場で行われたLIVE雅咆2009〜春の祭典スペシャル!の動画ができました。 是非ご覧ください!
対DoS攻撃用のIRequestCycleを書きました。 あるIPアドレスから同じURLへ一定期間(expire)に閾値(threshold)以上のアクセスがあるとDosAttackExceptionをぶん投げます。こういったものはServletFilterで書くのも手ですが、そうするとWicketTesterでテストを…
GuiceとQuartzのintegrationを書いてみました。 CronTriggerのみの実装です。 Jobをimplementsしたinterfaceにannotationを書だけで定期的にメソッドが呼ばれるようになります。 見たほうが早いのでとりあえずソース。呼び出すinterface。 package net.nagas…
DoCoMoのiモードIDを取得する場合URLにguid=onという文字列を含める必要があります。 簡単サインインの際はformのactionに加えるのですが、Wicketの場合は以下のように書きます。 Form<SignInPage> signInForm = new StatelessForm<SignInPage>("signInForm") { private static final</signinpage></signinpage>…
auの端末はinputタグのtypeがcheckboxの場合にvalueを指定しないとデフォルトで0が送信されます。 Wicketはこれをfalseとして解釈してしまうので、明示的に値を設定するListenerを書きました。 package net.nagaseyasuhito.sandbox.listener; import org.apa…
AuthenticatedWebSession.isSignedIn()がfinalなお陰でoverrideできず若干トリッキーな実装になっています。 が、やってる事は普通のservletでcookieを扱うのと変わりありません。 AuthenticatedWebSession.signIn(String username, String password)の代わ…
Mavenのセントラルリポジトリにないjarを扱う場合はプロジェクト直下にリポジトリディレクトリを作成して管理しています。 例えばguice+JPA用にwarp::persistというライブラリを使う事が多いのでこれを例にします。 といっても手順は簡単でjarファイルをgrou…
Wicketは文字列を実体参照としてhtmlに出力してしまうので、それを抑制するためにComponent.setEscapeModelStrings(boolean escapeMarkup)を片っ端から呼び出すListenerを書きました。 package net.nagaseyasuhito.sandbox.listener; import org.apache.wick…
国際化に対応するためプロパティファイルを参照するConverterを書いてます。 package net.nagaseyasuhito.sandbox.converter; import java.util.Locale; import org.apache.wicket.Application; import org.apache.wicket.Component; import org.apache.wick…