実装

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

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

java.util.ServiceLoaderを使う。

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

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を使って、巨大なエクセルファイルを読み込むには。

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

VTD-XML

お?と思ったので、とりあえず周知用にメモ書きしておくます。 2004年からある様で、リリースされてから、結構時間が経っているのに、 僕は知らなかったですだよ。 VTD-XML: The Future of XML Processing バイナリフォーマットのインデックスを構築する事で…

ログは、もっと立体的であるべきか。

slf4jとlogbackに、魂を売り渡す勢いであります。 と言うのは冗談としても、何だか使い方が分からないけど、 Loggerのメソッドには、引数として存在しているorg.slf4j.Markerについて、考えてみたり。 現段階では、slf4jとlogbackを使ってる大きめのOSSプロ…

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持てば良くね? 非同期処理中に使…

思い出した様に2WaySqlParser

大切な何かが弾けた途端に、カオスを受け入れる事が出来た。 つまり、こういう事。

StateMachine

「ゆーげんじょーたいきかい」と言う奴を本質的に理解してないのでは、 無いだろうか…と言う疑問が頭にもたげたので、とりあえず実装してみた。 public abstract class Named { private String name; public Named(String n) { this.name = n; } public Stri…

SWTXMLが凄い。

フォースを感じろとか言っておいて、 舌の根も乾かないうちになんとやら…だけど、 今日のjava-jaは、tableタグでレイアウトだとか、 ルックを弄れるとか、そういう話題でしきりだったので、 気になって、Google先生に聞いてみたらあったよ。 スゲェよGoogle…

バリデーションとコンバージョン

こんなの、どうだろ…とか、チラっと思った。 具体的に可能かどうか、使い様があるか、後で考える。 int i = required(integer(range(3,5,"ソレ",value,msgs))); int j = integer("あれ",value,msgs); String s = required("それ",value,msgs); Date d = requ…

再帰SQL

再帰クエリは、PostgreSQL8.4以降で、実装される可能性がある。 8.3系では使えない。 Todo - PostgreSQL Wiki CTEReadme - PostgreSQL Wiki h2databaseでは、かなり長い事TODOに再帰クエリが入ってるが、まだ使えない。 Roadmap Priority 2 の中に埋もれてし…

java.io.Closeable の事も忘れないであげて。

public class StreamUtil { public static abstract class using<STREAM extends Closeable, T extends Exception> { public using(Class<T> clazz) { $(this, clazz); } public abstract STREAM open() throws T; public abstract void handle(STREAM stream) throws T; public abstract void happen(T excepti</t></stream>…

AtomikosTransactionsEssentials を PostgreSQL8.3で使う。

APサーバをTransactionManagerの為だけに使うのは、正直嘘っぽいですなぁ。 しかし、JTA単独で、実装されているプロダクトってあんまみない様なキガス。 僕が知らないだけかもしらんけども。 僕が知っている幾つかのは、まぁ、ちょっと、アレでナニ、と言うか…

META-INF/MANIFEST.MFのリテラルが定義されているクラス。

今まで知らんかったので、メモ。 java.util.jar.JarFile#MANIFEST_NAME

脊髄反射だけでやってみている。

昨日は、コードが、重複してて、アレだな…とか、思ったりしたりしなかったり。 やはり、javaは処理構造を再利用する為には、結構冗長なコードが必要になるですな。 public class StreamUtil { public interface _<STREAM, T extends Throwable> { STREAM open() throws T; void handle(STR</stream,>…

手慰み。

かっとなってやった。反省はしていない。 適用前のコード InputStream in = null; try { byte[] bytes = stb.toString().getBytes("UTF-8"); in = new ByteArrayInputStream(bytes); f.create(in, IResource.FORCE, null); f.getParent().refreshLocal(IReso…

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…

何だろうこの開き直りきった感のあるテクノロジは。

TSSのフィードで拾ったデスヨ。 JSSP (JavaScript Server Pages) is a runtime library to generate web pages using JavaScript on a Java web server. It requires a web server that can run Java Servlets (such as Tomcat, JBoss or others). サンプル…

Taskをアドインするとか、そういう話。

重要なのは、 ThoughtWorks.CruiseControl.Core.ITask タスクである為に実装するインターフェース。Runメソッドが定義されている。 ThoughtWorks.CruiseControl.Core.IIntegrationResult Runメソッドの引数となるオブジェクト。現在の処理プロセスに紐付くコ…

MS Project Server 2007 SDKと戯れる。

QueuePublishを忘れると、何か色んなトコロから、例えばProject Web Accessから、作成したProjectを確認する事が出来ないので注意。 ちなみに、パラメータのwssUrlは、nullや空文字食わせても、project名をテキトーに使ってくれる。

Office系のSDKのありか。

SharePoint Server 2007 SDK: Software Development Kit Project 2007 SDK: Software Development Kit いつも見つけられない。見つからない。一体どうなっているのか。と言う訳。

MS Project Server 2007 と仲良くするには。

ドキュメントが激しく発見し辛いトコロにあるので、ショートカット的なアレをメモ。 Project.CheckOutProject Method (WebSvcProject) PDS and PSI Code Examples Project 2007 SDK: Software Development Kit JobIdというGuildをサーバにリクエストを投げる…

java.util.concurrent.ScheduledExecutorService

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

型が合ったぁぁ

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,>…

Gitのeclipseプラグインをハックしてみた。

いくつかあからさまなエラーを修正してみたものの、 このヌルポでのけ反ってしまい、やる気撃沈。 if (projTree == null) { projTree = repository.mapTree("HEAD"); treeMap.put(repository, projTree); System.out.println("Orig tree id: " + projTree.ge…