tokuhirom's blog
Search
InputStream から行単位でファイルを読み出したい時
Java 8 では、`BufferedReader#lines` が定義されているのでこれを利用する。 `BufferedReader#lines` は、Stream<String> を返すので、その
2015-05-07(Thu)
gradle で maven central にあげる
ちょっと前に gradle で maven central にあげようとしたら極めて困難な印象で挫折していたのだが、最近試したらすんなりといったのでご報告申し上げます。 単に gradle が難しい
2015-05-07(Thu)
Google Guice で、Module の設定を上書きしたい
テストコード等で Module の設定を上書きしたいトキがあると思う。 そういう時には Modules.override() を使えばいい。 Guice.createInjector(Mod
2015-05-07(Thu)
avans での Freemarker の取り扱いを変えた。
既存コードには関係ない話ですが、今朝リリースした 1.5.3 のスケルトンジェネレータでの変更についてです。 avans ではいままで avans-freemarker を利用していましたが、これが
2015-05-07(Thu)
Freemarker で文字列のテンプレートを適当にレンダリングする
なんかこんな感じです。 private String render(String templateString, Object dateModel) throws IOException, Tem
2015-05-07(Thu)
servlet 3.0 の multipart 関連処理を有効にする方法
Java の Servlet API では 3.0 以後、multipart 関連の処理が可能だが、デフォルトでは利用不可となっている。 これを有効にするには web.xml に以下のように記述すれ
2015-05-07(Thu)
Perl6 の開発先端を味わう方法
過去にも掲載したと思いますが、こんなシェルスクリプトで一発でインストールできます。 #!/bin/sh set -x set -e WORK=$HOME/.
2015-05-07(Thu)
jdbcutils と tinyorm に問題が見つかったのでメジャーバージョンアップした
jdbcutils 2.0.0 と tinyorm 1.0.0 を出しました。 ざっくり言うと、`getColumnLabel()` を呼ぶべきところで `getColumnName()` を呼んで
2015-05-07(Thu)
Files.lines() の返り値は try-with-resources で閉じる
`Files.lines` は閉じていない BufferedReader を Stream に詰め込んで返すので、try-with-resources で閉じる必要がある。 The
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)
jetty がログを出さないよって人
jetty は slf4j が classpath にあると slf4j を使うようになる。 で、slf4j 使ってて logback で設定している場合、logback.xml の中で明示的に or
2015-05-07(Thu)
ant と気合でファイルを読み込んで表示したい。
ant でファイルを読み込みたい。という思いがある。 loadFile → echo でいけます。 <?xml version="1.0" encoding="UTF-8"?> <
2015-05-07(Thu)
Shipped routes 0.4.0
Now, "/{x}" pattern allows '.', '-', '_'.
2014-12-25(Thu)
avans 0.39.0 における @QueryParam と @BodyParam の廃止について
Avans に非互換の変更を入れます。 移行処置として、次のバージョンでは @Deprecated をつけた状態で一旦リリースします。その次のバージョンで削除します。 ## なにが問題か Ser
2014-12-25(Thu)
maven archetype の作り方
Java の世界では maven archetype を作成して、それを使って行うのが基本となっている。 なんだかめんどくさそうなので LL で生成していたのだが、やはりその LL のスクリプトをイ
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)
avans アプリの処理フロー
avans にかぎらず、java の web application 全般そうですが、 src/main/webapp/WEB-INF/web.xml がエントリポイントになっています。 最近では
2014-12-25(Thu)
JMX でシステムの状況をざっくり確認したい
Perl の世界では、よく管理画面にヘルスチェック的な数字等を表示する機能を組み込みますが、Java の世界では JMX で見れるようにしておくのが一般的なようです。 <hr> JMX の使い方を
2014-12-25(Thu)
json に値を直接書く話
昔の JSON は Object か Array しかルートに書けなかったけど RFC 7159 では true/false/null/number/string を書けるようになってて便利だっておじ
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 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)
Validation Night で話してきた
なんかしらんけどスライドアップしようとしたら slideshare に拒否られてるので悲しみ溢れております。 とりあえず思ってることをいくつか。 ## 相関バリデーションどうよ? ベーシックな単
2014-12-25(Thu)
Regexp::Trie を java に移植した
Regexp::Assemble っぽいことをするには graph-expression に入ってるやつを使えばいい、という話は[昨日書いた]( のですが、生成コードがあまり綺麗ではないし、まあ今
2014-11-28(Fri)
Added experimental cookie_jar support in Furl
Hi, I added experimental cookie_jar support in Furl. You can use cookie_jar like following code:
2014-11-28(Fri)
golang で lint したいのですが?
golint を使おう。 golint かけると、それなりにコミュニティの空気を読んだ感じのコードがかけるらしい。 つかわない理由がないので、使った方がいい。
2014-11-28(Fri)
js-xlsx で js で excel のファイルを生成する
Excel ファイルの生成、めんどくさいですよね。CSV の生成めんどくさいですよね。HTML を出力した上でさらにやるのはだるい、というわけで、HTML の DOM を解析して JS で XLSX
2014-11-28(Fri)
nanobench - Java 8 で簡単にマイクロベンチマークをとれるフレームワーク作った
Caliper や JMH などを試してみたが、案外あれは使うのが難しかったり、インストールが難しかったり、結果がよみづらかったりする。 Perl 5 に標準添付されているベンチマークフレームワークで
2014-11-28(Fri)
cpan-repository command.
I wrote cpan-repository command. It shows CPAN repository URL from module name. ## SYNOPSIS
2014-11-28(Fri)
cv ってコマンドが面白い
procfs で他のプロセスの seek 位置をみることで、進捗状況を外からモニタリングするツールとのこと。
2014-11-28(Fri)
Java 8 で例外を投げていることをテストしたい
特定の条件で例外を投げるコードを書いたときに、それをテストしたい。なんてときがある。 このクラスの例外があがってるってことだけ判断できればいいんだけどな、ぐらいのゆるい条件のとき。 そんな時は以下の
2014-11-28(Fri)
groovy の grapes がうまくいかないときのデバッグ方法
groovy -Divy.message.logger.level=4 -Dgroovy.grape.report.downloads=true examples/synopsis.groov
2014-11-28(Fri)
[Security Notice] Amon2, HTTP::Session2 security updates
Last week, I shipped Amon2 and HTTP::Session2 includes security fix. ## [Must] Update "secret" if y
2014-11-28(Fri)
xlsx ファイルを git diff しやすくする為の天才的な wrapper script を go に移植した
とりあえずこれ、Perl とか使うだけで発狂するわけでもないけど、golang に移植した。mattn さんとか他の人もやってそう。 以下、感想。 * golang で可変配列使うの、co
2014-11-28(Fri)
Parallel::Prefork で子プロセスが死なない場合の対応方法
殺しても死なない子は念入りに殺す必要があるし、死なないなら死なないで死んでないことを記録に残しておく必要がある。 infof("[%d] Worker exiting...", $$);
2014-11-28(Fri)
Released Web::ChromeLogger
Web::ChromeLogger is a ChromeLogger library for Perl5. Chrome Logger is a Google Chrome extension
2014-11-28(Fri)
jackson で JDK8 の Optional をうまく扱ってほしい
jackson では JDK8 の Optional にまだ対応していません。 Jackson 自体が JDK6 をサポートしているので、コアのデータバインディングに入ることはないのですが、それにして
2014-11-28(Fri)
cpan-outdated 的なことを maven でやりたい
mvn versions:display-dependency-updates でできる。コアなやつなので、pom.xml をいじらなくても使える。便利。
2014-11-28(Fri)
Split Amon2::Plugin::Web::CSRFDefender from core distribution.
## 1. Amon2::Plugin::Web::CSRFDefender was removed from Amon2 core distribution. Amon2::Plugin::Web
2014-11-28(Fri)
nanobench のインターフェース変えた
lambda 使わないほうがいいんじゃない?という意見を kazuho さんから頂いたので、使わないようにしてみた。 lambda 使わない方がデバッガで追いやすいというのは一理あるので、それもまたい
2014-11-28(Fri)
Java8 Stream API では collector とかを複数回呼ぶと実行時エラーになる
以下のようなコードは、実行時エラーになる。 Stream<String> ss = Arrays.asList("hoge", "fuga").stream(); System.ou
2014-11-28(Fri)
Java で HTML Escape とかのベンチマーク
なんとなくとってみた。結局 Caliper でとった。guava が意外と速いんだなあ。 ``` package me.geso.javaMicroBenchmarks; import java.
2014-11-28(Fri)
Groovy を Android で使った場合の得失について
Groovy が Android をサポートしたということのメリットについて考えて見る。 Android アプリの開発においても、できるだけコンパイル時にエラーを検出したいので、@CompileSt
2014-11-28(Fri)
daemontools とかでログ見てる時に途中で tail -f の結果が流れなくなる時の対処方法
`tail -F` 使う。
2014-11-28(Fri)
JSON-RPC 2.0 の over HTTP についての雑感
「うちは JSON-RPC やらんのかね」みたいなことを聞かれたので、前に考えた内容をここに晒す。 ## method 名について メソッド名が content-body にしか入らないので、ログ
2014-11-28(Fri)
go で ukigumo-server にテスト結果を送る
なんかこういう感じで書けば良さそう。このコードを530倍ぐらい発展させれば Perl の Ukigumo::Client と同じのができると思う。 golang で書けば、セットアップが簡単になるから
2014-11-28(Fri)
Java のプロファイラは visualvm がいいのかな
2014-11-28(Fri)
Dropwizard+Hibernate で発行したSQLをログに出力する
DBIx::QueryLog のように、発行したSQLを直接みたいな、と思ったりしたわけですが、それは以下のように行えばよいようだ。 database.properties に hibernate.
2014-11-28(Fri)
Apache HttpClient で Content-Body を String として得る
public String getContentBody(CloseableHttpResponse res) { ByteArrayOutputStream stream =
2014-11-28(Fri)
[perl] コントローラがどのテンプレを表示したかをテストする
Module::Spy をつかう。 my $render = spy_on('Text::Xslate', 'render'); # コントローラをよぶ ...;
2014-11-28(Fri)
Caliper1.0-beta1 が guava 17.0 と conflict してる気がする
Benchmark.pm みたいなやつの Java 用のやつないかな、と思って探したところ、google の人が出してる caliper ってのが良さそうだった。 しかし、Caliper が古い g
2014-11-28(Fri)
golang で JSONPath 的にデータ取り出したいときは @mattn_jp の go-scan が便利
golang で net/http とってきて JSON を parse して所定のキーを取り出すプログラムを書きたかった。 こういう場合、JSONPath とか使って書きたいのだが、JSONPath
2014-11-28(Fri)
Dropwizard のサブコマンドを実装する方法
Dropwizard で作られたアプリケーションは java -jar Hello-0.0.1-SNAPSHOT.jar server production.yml ja
2014-11-28(Fri)
JPA2 の @GeneratedValue について
JPA2 ではすべての entity に id がふられている。その id の採番方式は選択することができる。 @GeneratedValue(strategy=GeneratedValue
2014-11-28(Fri)
Lingua::EN::Inflect みたいなのを Java でやるには Evo Inflector を使う
System.out.println(English.plural("word")); // == "words" とかやればいいので楽。
2014-11-28(Fri)
DBD::mysql の quote_identifier の挙動
mysql.xs のこのへんを参照のこと。 case SQL_IDENTIFIER_QUOTE_CHAR: /*XXX What about a DB sta
2014-11-28(Fri)
Shipped scan-prereqs-cpanfile 1.00
scan-prereqs-cpanfile is using Perl::PrereqScanner::Lite instead of Perl::PrereqScanner now. This ch
2014-11-28(Fri)
Java で Regexp::Assemble のように効率的な正規表現を文字列のリストから組み立てる
[graph-expression]( ってやつに入ってる RegExpUtils ってのを使うと出来ます。 (サンプルコードは groovy) #!/usr/bin/env groovy
2014-11-28(Fri)
Karabiner の private.xml を設定した
Realforce 買ったので private.xml を書いた。 private.xml を書くと、MBP 本体のキーボードと外付けキーボードとの間で別の設定ができるようになるし、設定を複数の環境
2014-11-28(Fri)
MY_CXT_KEY is no longer used by current Perl5 implementation
We met a strange bug around XS. This issue does not appear on recent Perl5 implementations. ... I
2014-11-28(Fri)
Prev
Next