tokuhirom's blog
Freemarker で文字列のテンプレートを適当にレンダリングする
なんかこんな感じです。 private String render(String templateString, Object dateModel) throws IOException, Tem
2015-05-07(Thu)
Freemarker で uriFor する
いわゆるひとつの uriFor 的なものを freemarker 用に実装してみるという。 import java.io.UnsupportedEncodingException;
2015-05-07(Thu)
Perl6 の開発先端を味わう方法
過去にも掲載したと思いますが、こんなシェルスクリプトで一発でインストールできます。 #!/bin/sh set -x set -e WORK=$HOME/.
2015-05-07(Thu)
[java] どのブランチから作られた jar かをわかりやすくしたい
どのリビジョンが実際にデプロイされてるかをその場ですぐに確認したいというような要求がある。 そういうわけで、jar の中にリビジョン情報などを埋め込みたい。 そんなときには git-commit-i
2015-05-07(Thu)
jolokia につないで雑に情報を見るツールを書いた
<img src=" jmx/jolokia なサーバーがいっぱいたってるんだけど、いちいち jconsole の URL とか調べるのがダルい、という問題があり、そういったものをささっとアクセ
2015-05-07(Thu)
JS とかの管理を grunt+bower でやるようにしてみた
bower 的なものを使わないと、「これどこから拾ってきたんや……」という感じになりがちなので、一応やったほうがいいでしょうと。 bower は直接使っていると、git のレポジトリをぶちまけるばか
2015-05-07(Thu)
JavaMail をモッキングしてテストしたい。
Java でメールを送るなら JavaMail で送るのが普通らしい。 とはいえ、生の JavaMail で書いてるとダルいので適宜以下のようにラッパをかましたりする。 本文は Freemarker
2015-05-07(Thu)
apimock 0.2.0 を出した
外部の API を呼ぶときにそのモックをつくるやつの 0.2.0 を出した。 外部の API を呼ぶようなコードを、呼び出し部分のクラスをモッキングしてもいいのだが、それよりも API サーバー
2015-05-07(Thu)
vue.js の Object に対する v-repeat って使いにくいのでは?
ざっくり言うと: 具体的には jolokia の返す API response を元に vue.js でテンプレート書くの辛い vue.js の 0.11.0 を使ってて思ったことのメモ。 vue
2015-05-07(Thu)
jdbcutils 1.1.0 を出した
jdbcutils の 1.1.0 が出ました。jdbcutils は JDBC を便利に使うためのユーティリティ集です。 今回追加になったのは `JDBCUtils#executeQueryFor
2015-05-07(Thu)
jdbcutils と tinyorm に問題が見つかったのでメジャーバージョンアップした
jdbcutils 2.0.0 と tinyorm 1.0.0 を出しました。 ざっくり言うと、`getColumnLabel()` を呼ぶべきところで `getColumnName()` を呼んで
2015-05-07(Thu)
Embedded Tomcat の起動が遅いんですけど~ って人
最近は Embedded Tomcat をテスト時に利用しているが、こちら極めて起動が遅い。 と思って調べていたところ、 metadata-complete="true" を設定すればいいとの情報を
2015-05-07(Thu)
avans での Freemarker の取り扱いを変えた。
既存コードには関係ない話ですが、今朝リリースした 1.5.3 のスケルトンジェネレータでの変更についてです。 avans ではいままで avans-freemarker を利用していましたが、これが
2015-05-07(Thu)
JMX にアクセスして値を取得したい
Java で何かを実装したい場合、Tomcat ちゃんやらなんやらの remote のプロセスからデータを取得したいという欲求を覚えることでしょう。 そういう時の取得方法についてサンプルプログラムを
2015-05-07(Thu)
servlet 3.0 の multipart 関連処理を有効にする方法
Java の Servlet API では 3.0 以後、multipart 関連の処理が可能だが、デフォルトでは利用不可となっている。 これを有効にするには web.xml に以下のように記述すれ
2015-05-07(Thu)
google guice の依存関係を visualize したいよ、って人
以下のように実装すればよい。graphviz 用の .dot ファイルが生成される。 PrintWriter out = new PrintWriter(new File(filenam
2015-05-07(Thu)
Google Guice で、Module の設定を上書きしたい
テストコード等で Module の設定を上書きしたいトキがあると思う。 そういう時には Modules.override() を使えばいい。 Guice.createInjector(Mod
2015-05-07(Thu)
avans 1.10.0 が出てます
avans の 1.10.0 が出ています。 avans-tinyvalidator が @BeanParam を validation していなかったので、するように変更しました。
2015-05-07(Thu)
routes が /{id:[0-9]{5}}/{title:[a-zA-Z_]+} のような形式に対応していた
Java 用の simple な dispatcher ライブラリである routes の 0.5.0 が出ました。 今回のバージョンでは @moznion からのパッチにより、より柔軟なディスパッ
2015-05-07(Thu)
ant と気合でファイルを読み込んで表示したい。
ant でファイルを読み込みたい。という思いがある。 loadFile → echo でいけます。 <?xml version="1.0" encoding="UTF-8"?> <
2015-05-07(Thu)
Xslate の mark_raw は template に書かない
Xslate の mark_raw は template 側では使わずに、Controller ないし Model で使って欲しい。 ある文字列が、HTML として処理すべきものかどうかは、サーバー
2015-05-07(Thu)
がんばれ父ちゃん
韓国では2番目に有名な日本酒らしい。 日本では見たこと無いが、新潟で作られているらしい。
2015-05-07(Thu)
[perl] Error in tempfile() using template /tmp/XXXXXXXXXX: Have exceeded the maximum number of attempts (1000) to open temp file/dir at hoge.pl line 14. のようなエラーが発生した場合の対処方法
File::Temp を使っていると、表題のようなエラーが発生することがある。 これは一件すると、ファイルを開く処理が失敗した用に見えて、ファイル開き過ぎとかかなあと思うんだけど、実際はそういうことで
2015-05-07(Thu)
[java] モダンな Annocation Processor の開発手順まとめ
APT とは Annotation Processing Tool のことで、Java でコードの自動生成を行う際に利用される。 APT を利用すると、Java クラスやリソースの自動生成が可能となる
2015-05-07(Thu)
jetty がログを出さないよって人
jetty は slf4j が classpath にあると slf4j を使うようになる。 で、slf4j 使ってて logback で設定している場合、logback.xml の中で明示的に or
2015-05-07(Thu)
maven で特定の module だけ処理させたくない。
たとえば maven で multi module でプロジェクトを構築していて、開発用ツールが入っている module があるとする(localdev や devtools などという名前だったりす
2015-05-07(Thu)
mvn の exec:java が終わるまでの時間が15秒ぐらい待ってて遅いってとき
daemon thread の終了を待ってるせいで遅いっていう話があるんで雑に殺せば良いっていう気分のときは以下のオプションを与えればよい。 -Dexec.cleanupDaemonThreads=
2015-05-07(Thu)
jetty で vhost でいい感じにアプリケーション動かしていく
jetty で vhost 使う方法みたいな話が、意外と情報ない。 例えば、web 画面と admin 画面があるようなサイトで、実際には vhost を利用して運用したいという場合、一般的な id
2015-05-07(Thu)
assertj 3.0.0 が良い
Java 8 前提になっていて、非常に良い感じになっている。 Java 8 の Date & Time に標準対応した上に、様々なエンハンスメントが入っている。 中でも注目すべきは例外関連の機能追加
2015-05-07(Thu)
GS Collections Kata をひと通りやった
GS Collections というゴールドマン・サックスさんが出してる Java 用のコレクションライブラリがある。 Java Day Tokyo/JJUG CCC 2015 Spring で知った
2015-05-07(Thu)
PMD をちょっと試した
Java コードの品質を図るやつであると思うところの PMD をちょっと試してみたが、 検出項目が極めて微妙なんで諦めた。 PMD はネストした if 文をまとめろとか言ってくるが、そこは意味があっ
2015-05-07(Thu)
gradle で maven central にあげる
ちょっと前に gradle で maven central にあげようとしたら極めて困難な印象で挫折していたのだが、最近試したらすんなりといったのでご報告申し上げます。 単に gradle が難しい
2015-05-07(Thu)
jetty.xml に関する雑感
jetty.xml は、単にクラス定義を xml で書けるというもので、動的にすべてが行われる。 オブジェクトの定義をやるのを XML でやっている。 今ならば groovy でも使って書いた方がマシ
2015-05-07(Thu)
Google Guice で system property の値を inejct したい
`Names.bindProperties` 使おう! 任意の Module の中で以下のように設定する。 @Override protected void configure() { f
2015-05-07(Thu)
配列に要素を追加したようなやつをサックリ作る
なんかこういうコードがあって冗長だな~ と思っていたんですが public static Optional<Path> which(String command) { final String
2015-05-07(Thu)
Perl6 の DBIish わりと本当に動いていた
↓ のようにやったらちゃんと動いた。ちゃんと動くってすごい。 use DBIish; my $dbh = DBIish.connect("mysql", :host<localho
2015-05-07(Thu)
perl 5.21.1+ で POSIX.pm が C99 functions を default で export する問題。
Perl 5.21.1+ だと思うんだけど、POSIX.pm が C99 functions をサポートしていて、さらにそれを default で export してくる。具体的には round(
2015-05-07(Thu)
InputStream から行単位でファイルを読み出したい時
Java 8 では、`BufferedReader#lines` が定義されているのでこれを利用する。 `BufferedReader#lines` は、Stream<String> を返すので、その
2015-05-07(Thu)
Files.lines() の返り値は try-with-resources で閉じる
`Files.lines` は閉じていない BufferedReader を Stream に詰め込んで返すので、try-with-resources で閉じる必要がある。 The
2015-05-07(Thu)
Paths.get(uri) について
`Paths.get(uri)` で Path オブジェクトを取得可能だが、これはどんな URI をサポートしているのかという話。 結論からいうと `file://` 以外での利用は微妙。 `fi
2015-05-07(Thu)
Shipped avans 0.37.0
I shipped avans 0.37.0. It includes following exceptions: * Show full stack trace in full stack t
2014-12-25(Thu)
maven archetype の作り方
Java の世界では maven archetype を作成して、それを使って行うのが基本となっている。 なんだかめんどくさそうなので LL で生成していたのだが、やはりその LL のスクリプトをイ
2014-12-25(Thu)
com.mysql.jdbc.PreparedStatement.executeUpdate が Can not issue executeUpdate() for SELECTs と言ってくる件
com.mysql.jdbc を使っていて、executeUpdate で SELECT 文を発行しようとした場合、以下のような例外があがる。 ``` Caused by: java.sql.SQL
2014-12-25(Thu)
Shipped routes 0.4.0
Now, "/{x}" pattern allows '.', '-', '_'.
2014-12-25(Thu)
avans アプリの処理フロー
avans にかぎらず、java の web application 全般そうですが、 src/main/webapp/WEB-INF/web.xml がエントリポイントになっています。 最近では
2014-12-25(Thu)
Validation Night で話してきた
なんかしらんけどスライドアップしようとしたら slideshare に拒否られてるので悲しみ溢れております。 とりあえず思ってることをいくつか。 ## 相関バリデーションどうよ? ベーシックな単
2014-12-25(Thu)
avans 0.39.0 における @QueryParam と @BodyParam の廃止について
Avans に非互換の変更を入れます。 移行処置として、次のバージョンでは @Deprecated をつけた状態で一旦リリースします。その次のバージョンで削除します。 ## なにが問題か Ser
2014-12-25(Thu)
json に値を直接書く話
昔の JSON は Object か Array しかルートに書けなかったけど RFC 7159 では true/false/null/number/string を書けるようになってて便利だっておじ
2014-12-25(Thu)
[java] Math.abs(Integer.MIN_VALUE) するとき
Java において `Math.abs(Integer.MIN_VALUE)` は `Integer.MIN_VALUE` を返す。 MIN_VALUE が -2147483648 で MAX_VA
2014-12-25(Thu)
JMX でシステムの状況をざっくり確認したい
Perl の世界では、よく管理画面にヘルスチェック的な数字等を表示する機能を組み込みますが、Java の世界では JMX で見れるようにしておくのが一般的なようです。 <hr> JMX の使い方を
2014-12-25(Thu)
IO::Socket::SSL のバグを修正する p-r を送った。
`Can't locate object method "blocking" via package "GLOB"` っていうエラーがでてこまったんで、適当にパッチかいておくりつけました。 Fu
2014-11-28(Fri)
AngularJS で Controller の継承をしたい
したいなっておもって、Google で検索したところ、stackoverflow で [Can an AngularJS controller inherit from another contoll
2014-11-28(Fri)
テストについての個人の雑感
テストについての個人の雑感です。ここでいうテストってのは、なんかいわゆる開発をドライブするための開発者用のテストについてであって、品質の保証とかについては一切かんがえてません。 ## ざっくりいうと
2014-11-28(Fri)
Perl で簡単にパーザを書く
パーザを書こうという場合、Parse::RecDecsent のようなモジュールを使うのが一般的だが、Perl5 の正規表現は強力すぎるため、そんなものに頼らなくても超絶簡単にパーザを実装することが可
2014-11-28(Fri)
rakudo + MoarVM を試す
2014-11-28(Fri)
Perl6 でディレクトリの中身を列挙する
for dir("/tmp/") { .Str.say } でよい。 .Str が必要なのは、わたってくるのが IO::Path のインスタンスだからです。
2014-11-28(Fri)
java.util.Properties についての雑記。
* * Java の java.util.Properties のフォーマットでつくられたファイルをつかいたくなるときがあると思います。 そんなときには、Key に空白をふくめられるのかど
2014-11-28(Fri)
Shipped Localizer 0.01
Abstract: I released yet another localizetion library for us(me and co-workers). Localizer というモジュ
2014-11-28(Fri)
DBD::mysql の async について
並列にバンバン処理するかっこいい機能がついたわけではなく、だいぶアドホックな実装になっている。 mysql client として考えた場合に処理が遅いのは、DB サーバーの I/O や集計処理で、デ
2014-11-28(Fri)
anton & giton
## giton について giton ってのかいた。 git submodule で github においてあるモジュールをインストールしようとしてたけど、ln でリンクはったりするのがめん
2014-11-28(Fri)
Prev
Next