kakakakakku blog

Weekly Tech Blog: Keep on Learning!

Java

Grand: Apache Ant の依存関係を可視化する

Grand を使うと Apache Ant ターゲットの依存関係を dot ファイルとして可視化できる.そもそも可視化したくなるほど依存関係が複雑なことが課題ではあると思うけど,既存の build.xml を解析したり,新しく build.xml を読むメンバーのために README.md に…

Apache Ivy の configurations でテストに必要な依存関係を取得する

Apache Ivy を使って Maven Repository からライブラリを取得するときに,例えば CI 環境では JUnit や Mockito などの「テストに必要な依存関係」も取得したいという場面がある.Apache Ivy では configurations(コンフィグレーション) を使って柔軟に依…

Apache Ivy で Guava を取得するときに javadoc.jar と sources.jar を除外する

Apache Ant と Apache Ivy を使って Maven Repository から Guava を取得すると不要な javadoc.jar と sources.jar も一緒に取得されてしまうときの解決策を2つメモしておく〜 再現確認 まず,Apache Ant の build.xml にデフォルト設定の ivy:retrieve タス…

Guava の Stopwatch で時間を計測する

Guava の Stopwatch を使ってサンプルコードを書いてみた. よくある System.currentTimeMillis() を使わなくて済むので,コード的にも目的が明らかで見通しが良くなる. Stopwatch (Guava: Google Core Libraries for Java 18.0 API) サンプルコード OnYour…

Guava: InternetDomainName

Java で URL 情報からドメインやらを抽出してみたかったので,Guava の InternetDomainName を使ってみた. InternetDomainName (Guava: Google Core Libraries for Java 19.0-SNAPSHOT API) サンプルコード package com.kakakakakku.guava; import com.goog…

GCViewer で NumberFormatException が出る

GCログを見るのに GCViewer が良さそうだったので,ダウンロードページから gcviewer-1.29 をダウンロードして,GCログを読み込ませたら,こんなエラーが出てダメだった.ちなみに JVM のパラメータに -XX:+PrintGCDateStamps を入れた場合に対応していない…

Memory Analyzer

ヒープダンプを調べる場合は Memory Analyzer が便利.Eclipse プロジェクトだけど,別に Eclipse がなくてもスタンドアロンで使えるし,ちゃんと Mac 版もあるので,ダウンロードページ からダウンロードできる.今回ダウンロードしたのは Memory Analyzer …

java.lang.AbstractStringBuilder#reverse() の実装を読んでみた

Javaで文字列を反転させる java.lang.AbstractStringBuilder#reverse() の実装を読んでみた.実際にはサロゲートペアを取り扱うコードも入っているが,そこを取り除けば,かなりシンプルな実装になっている.String文字列をchar型配列に変換して,後は文字列…

-Xdumpオプションで確認できるDump出力先を変更する

JVM(IBMJava)が異常終了で落ちる時にダンプが出力されるが,デフォルトだと実行ユーザのホームディレクトリに出力されるらしく,ホームディレクトリのファイルシステムが小さかったりすると,せっかく吐かれたダンプが途中で切れてしまうというかなり残念な…

JavaからMeCab(Windows)を手軽に利用する方法

JavaからMeCabを呼び出す場合,ライブラリとしてJavaバインディングが用意されてはいるものの,自分でライブラリをビルドしたりしないといけないため,手軽に使えるとは言い難い気がした.なので,通常のMeCab(Windows)をDOS上で対話できるように設定してお…

UNIX時間を日時に変換する(Java,Excel)

パッと思い付かなくて悔しかったので! Java import java.util.Calendar; import java.util.Date; public class UnixTimeTrans { public static void main(String[] args) { // currentTimeMillis()の戻り値はミリ秒なので注意 long currTime = System.curre…