java

一歩先行くJavaプログラマが読むべきオープンソースソフトウェア10選

10万行コード読んだらJava分かるよってTwitterに書いたらすげぇ勢いでRTされたので、調子に乗って捕捉エントリ書くよ。

IPv6Addressを正規表現でマッチする。

より正しい正規表現を別なエントリとして記述しました。 IPv6アドレスをより妥当な正規表現でマッチする。 以下の内容は、僕が自力で頑張った為、正規表現として不適切な部分があります。

java.util.ServiceLoaderを使う。

DIコンテナやらOSGiやら使う程でもないけど、最低限の拡張性はとりあえず担保しておきたいので使う感じなのだけど、コアAPIに含まれているjava.util.ServiceLoaderは本当に使い辛い。 というか、そのままでは使えないのでユーティリティ的でいつも似てるけど…

今日もビルドしてみた。

噂のLucandraをビルドしたよ。 slf4j使ってる風味なivy.xmlだけど実際に使ってるのは、 log4jなので、それっぽいdependencyを追加しないとコケる。 ナニソレ?って感じだけどもさ。 <ivy-module version="2.0"> <info organisation="lucandra" module="lucandra"/> <dependencies> <dependency org="log4j" name="log4j" rev="1.2.15" conf="* -> *,!sources,!javadoc"> </dependency></dependencies></info></ivy-module>

アレ。

ivyっぽい感じで仕上げてみた。 しかし、publicなリポジトリに無いものが相応にあるので、マジ痺れる。 Jarvanaさんが便利すぎるマジオススメ。 Jarvana - Maven Repository Search Engine

getEnclosingなんちゃら。

LoggingAPIを使っている皆様におかれましては、ガード節をキチンと記述しておりますでしょうか? こういうやつですね。 if(LOG.isDebugEnabled()) { LOG.debug("hogehoge"); } 毎回記述するのが面倒な上に、コードの見栄えがあまりよろしくありません。 ガー…

ClassLoader#setPackageAssertionStatusがウゴゲ。

こんなクラスを用意しるます。 public class Hoge { public void fuga(String s) { assert s != null : "s must not be null"; System.out.println(s); } } ポイントは、全く同じクラスを、二つのパッケージに配置する事。 aaa.bbb.ccc SystemClassLoaderで…

謎のaccess$100メソッドの話続き。解決編。

もう少し簡単なコードで、検証でけた。

謎のaccess$0メソッドの話。

謎のメソッドがコンパイラによって生成されているのだけど、 何故そのメソッドが作られるのか、どの様な役割を持っているのか、 全く持って意味が分からないので、誰か教えてクダサシ。 解決しるました。 [Java]謎のaccess$100メソッドの話続き。

プラグインをゲトするには。

これが、一体なんなのかとか、細かい手順については、特に説明しません。 http://dl.google.com/eclipse/plugin/3.4/site.xml http://dl.google.com/eclipse/plugin/3.4/features/com.google.gdt.eclipse.suite.e34.feature_1.0.0.v200904062334.jar http://…

デバッグ方法論

吉岡さんが釣り糸を垂れているので、釣られてみるよ。 デバッグ方法論 と言っても、多分、僕の気力が続くのは、こんなトピックがあるよ、って事までかな。 細かい話が気になるって人達は、スターとか、ブクマとかで催促すると、 書く気になるかもしれないし…

Mapのキーをイテレートしながら要素を削除する。

実装方法をすぐ忘れるので、メモ書き。 Map<String, String> m = new HashMap<String, String>(); m.put("aaa", "bbb"); m.put("aaa1", "bbb"); m.put("aaa2", "bbb"); m.put("aaa3", "bbb"); for (Iterator<String> i = m.keySet().iterator(); i.hasNext();) { if (i.next().endsWith("2")) { i.rem</string></string,></string,>…

POIのhssfを使って、巨大なエクセルファイルを読み込むには。

日本企業の皆様におかれましては、エクセルが大好きかと、存じます。 いや、僕も大好きなのだけどもさ、表計算かわいいよ、表計算。 ウルトラハイパフォーマンスで、データストアとしても超一流。 コードの自動生成してもいいし、まかり間違ったりすると、方…

logbackで設定を記述する時の注意事項等。続き。

昨日は、どうも古いlogbackを使っていたお陰で、 現状のマニュアルどうりにlogbackが動いてくれなかった訳で。 今度は最新版使うよ。 slf4j-api-1.5.6.jar logback-core-0.9.15.jar logback-classic-0.9.15.jar 随分バージョンアップしてるね。 昨日と全く同…

logbackで設定を記述する時の注意事項等。

slf4j可愛いよ、SLF4J。と言う訳で、logbackを使う訳だ。 でも、何かようワカランけど、ちゃんとログが出ない事があったりなかったり。 と言うか、出ない事は少ないんだけど、出過ぎる事がある。 使ってるのは、 slf4j-api-1.4.2.jar logback-classic-0.9.9.jar …

RE: 一定時間しか保持しないMap

id:Yoshioriが何か変な事してたんで、考えてみた。ぱっと思いついた問題点。 cleanメソッドがヒドイ。 あらゆるMapオペレーションの度に、値を全走査するとか、無いんじゃね? TimeAndValueがヒドイ。 Dateじゃなくて、long持てば良くね? 非同期処理中に使…

Macで32bitJDKを使う方法について。

MacでオフィシャルサポートなJRE6は、64bit版しかないので、 来年の夏までは、Mac使いで、eclipse使いなプログラマの皆様におかれましては、 Java6以降対応なeclipseプラグインを使えない…と言う事になるます。 しかしながら、それだとアンマリだ…と言う訳で…

enumを限界まで使うとか。

public enum Hoge { Moge("aaa", 0), Piro("bbb", 1); private String s; private int i; private Hoge(String s, int i) { this.s = s; this.i = i; } public String s() { return s; } public String mugya() { return s + i; } public static String ugog…

java.util.concurrent.ScheduledExecutorService

何かそれなりに重い処理が色々あったとする。バッチ的なアレとか。 で、処理は大体がアトミックで、スレッドプールを使って、それぞれを処理する事で、処理効率を稼ぎたい時に使うAPI。 Javadocを見てても良く分からんくて、ハマったので、実装例をばメモ。

JavaによるWebFrameworkに実装されているエラー画面を集めてみた。

自分が、作った画面がどれだけ派手なのか確認する為に、 エラー画面がリッチっぽいフレームワークを集めてスクリーンショットを撮ってみたり。

型が合ったぁぁ

id:ashigeruさんからツッコミを貰いましてん。つまり、こういう事らしい。 public interface A<L, R> { B<L, R> b(); List> nestedb(); } public interface NumberedA extends A<Integer, Long> { NumberedB b(); List<NumberedB> nestedb(); } そう、このNumberedAがやりたかった。で、呼び出す側</numberedb></integer,></l,></l,>…

型が合わん…。

こんなinterfaceを宣言してみた。 public interface A<L, R> { B<L, R> b(); List<B<L, R>> nestedb(); } public interface B<L, R> {} で、更にこいつらを使って、こんな型を宣言しる。 public interface NumberedA extends A<Integer, Long> { NumberedB b(); List<B<Integer, Long>> nestedb(); } public interface N</b<integer,></integer,></l,></b<l,></l,></l,>…

これは…

public Void [][]d_0()[][] { for(int i=0,a[]= {1,2,3};i

例外とか投げて貰ってもねぇ…

java.lang.Class#cast public T cast(Object obj) { if (obj != null && !isInstance(obj)) throw new ClassCastException(); return (T) obj; } こんなん書いてみた。 public static <T> T as(Class<T> clazz, Object obj) { if (obj != null && clazz.isInstance</t></t>…

switchがbreakでlabelは悪魔の囁き。

loop: for (int i = 0; i < 10; i++) { switch (i) { case 5: { break loop; } default: { System.out.println(i); break; } } } さて、このコードを動かすとどうなるのでしょうか? オソロシヤオソロシヤ… フォースを信じられなくなった者は、暗黒面に落ちるであろう。

SpringBatchキタコレ!

コードが公開されているます。 Spring Batch - Source Repository /spring-batch/trunk

コンパレータ

ひっくり返すアレ。 public class ReverseComparator implements Comparator { private Comparator comparator; public ReverseComparator(Comparator comparator) { this.comparator = comparator; } @SuppressWarnings("unchecked") public int compare(Ob…

今日のおかず。

public static void assertNoNulls(Object[] objects) { // TODO(kevinb): gee, ya think we might want to remove this? if (("I'm a bad hack".equals( System.getProperty("guice.allow.nulls.bad.bad.bad")))) { return; } if (objects != null) { // hm…

Grinder3じゃないかなぁ…。

負荷テストフレームワーク。 What's new in The Grinder 3? テストスクリプトはJython。 Pythonの構文で、Javaで出来る事は何でも出来るし。 CookieやSSLもイイ感じにハンドリングしてくれる。 何せテストスクリプトを生成してくれるHttpProxyがついてるんだ…

ションボリ

久しぶりにすんごいの見つけた。 public class Hoge extends MIDlet implements CommandListener, Runnable { private Command exitCommand = new Command("Exit", Command.EXIT, 2); private Command getCommand = new Command("Get", Command.SCREEN, 1); …