Java

text diff

メモ。Myer's diff algorithmを実装したGoogle製のアレ。ASL2なので安心。 http://code.google.com/p/google-diff-match-patch/文献。 http://neil.fraser.name/software/diff_match_patch/myers.pdf

類似検索(2)

昨日のエントリの関連語検索にちょっとしたバグ発見。 後でなおす

類似検索

勢いで類似検索と関連語検索などを作ってみた。Googleのようにキーワードを元に文書を探すのではなく、文書を元にほかの類似する文書を探してくる仕組み。関連語検索は、現在の文書に含まれないもののおそらく関連があると思われる単語を検出する。詳しい説…

シンドローム

会社で最近プログラムをあまり書かなくなった。 すると、家でプログラムを書きたくなる。ふしぎ!

ジェネリクスが嫌いなら

キャストすればいーじゃん。でも、コレクションの中身とかドキュメントに起こすときにけっきょく同じようなこと書くよね。

Information Retrieval

Information retrievalに詳しくないけど、状況絞ったら私にも出来るんじゃね?という分野の研究を開始。 プログラミング中のコンテキストを分析して、次に必要になりそうな ライブラリのオフィシャルドキュメント ピンポイントAPIリファレンス サンプルコー…

ほろ酔い

バイトコードディスアセンブラをなぜか書き始めた。 ASMでいーじゃん

Genericsとか

Java : Generics - lethevert is a programmerあたりを読んで、Genericsって難しいって思う人がたくさんいるんだなと。確かに難しいけど、それは コンパイラ作るのが大変 フレームワーク作るのが大変 とかその辺の話で、末端の開発者(上の成果を利用する人)…

AssertGC

2008-05-06 2008-05-06 WeakReference使ったキャッシュとかのテストとかで使ってます。

近況報告

天才プログラマーになりました。単価安そうな感じの名前です。最近は構造化された文書のDiffをとるまともな方法を考えてます。 行単位とかXMLとかで取るのはすでにあるのですが、Javaのようにある程度特殊な構造で その差分を可読性が高い状態で取るのはなか…

around

ProgressMonitorが嫌で、何かいい方法はないか画策中。↓を毎回書くのがだるいし、なによりメソッドシグネチャにProgressMonitorが入るというのが移植性を下げる原因になってると思う。

合ってたらしい

型が合ったぁぁ - 設計と実装の狭間で。のフォローアップ。オーバーライドの共変戻り値型と、パラメータ化型のサブタイピングを組み合わせた感じです。

エスケープシーケンス

今までエスケープシーケンスというものを勘違いしていました。↓って全く違う意味なんですね。 String s1 = "Hello, world!\n"; String s2 = "Hello, world!\u000a";

多少面倒なこと

package-info.javaって微妙に使いにくいですよね。 Javadoc書くだけならいいですが、注釈を付けるとインポート周りとか面倒です。 - src/ - com/ - example/ - annotations/ - OtherAnnotation.java - package-info.java - MyAnnotation.java

Javadocの仕様

Javadocの構文は言語使用には組み込まれておらず、Javadocツールの挙動にあわせて書かなきゃなりません。でも、そのツールの挙動もどこに明文化されているかわからず、今のところ手探りで挙動をそろえてます。

レア文法を使ってみた

使ってみた。実際に動きます。

レア文法

Javaにはびっくりする文法が結構あります。 備忘も兼ねて。

synthetic accessor

ついでに。 public class N { public class A { private int a; } public void f() { int x = new A().a; new A().a = 1; } } これは、次のようにプログラム変換される模様 (javac)。

accessibility

Irenkaでそういや可視性について放置していたので、まじめに調べてみた。 これでメソッドfはOKでメソッドgがNGなのはなんで? public class N{ class A{ private int a; } class B extends A{ void f(A ar){ System.out.println(ar.a);//OK } void g(){ Syst…

病気

http://www.junitfactory.com/ こういうのを見るとクローンを作りたくなります。 I like the JUnit Factory tests because they give me an independent perspective on my code. Page Not Found | Agitar Technologies: Putting Java to the Test 確かに。

java.io.File

java.io.Fileがパワーアップしてた。 canExecute setReadable setWritable setExecutable getTotalSpace getFreeSpace getUsableSpace むしろ Map getMetaData() みたいなのが欲しい。keyはOSごとに依存でいいから。

定数式

どうもIBM系のJavaコンパイラと同じ動きしなくてはまっていた点。 プリミティブ型のリテラルと文字列リテラルは定数式 定数式同士の比較は定数式 定数式同士の文字列連結演算(+)は定数式 定数式だと何が嬉しいのかというと、定数式の数値は代入変換の際にナ…

least upper bound

class Integer extends Number implements Comparable class Long extends Number implements Comparable これら2つのクラスの最小上限境界計算がうまくいかない。何に使うかというと、 static <T> T t(T...t) { return null; }というメソッドがあったときに t(</t>…

型の不一致

Javaでは、プリミティブ型のクラスリテラルをそのラッパー型を利用して表現する。 int.class: Class でも、プリミティブ型の配列はそのまま使える。 int.class: Class.class> そこで、 static <C> Class<C> component(Class<C[]> array) { return null; } static <C> Class<C[]></c[]></c></c[]></c></c>…

VARARGS

VARARGSを「可変長引数」と呼ぶけれど、Variable Argumentsの略だとすると「可変引数」。それだとvariantな香りがするのでJLS読んだところ、「Variable Arity」と表現されていた。 久々に英辞郎で引けなかったのでぐぐる先生にお伺いを立てたら、どうやらAri…

単項数値演算の違和感

単項+演算子は単項数値格上げの対象になる。 byte b = 10; byte c = +b;上記の「+b」は単項数値格上げによってintになり、byteに代入できない。 byte b = 10; byte c = +10;今度はOK。代入の際には代入変換と呼ばれる変換があって、代入する値が定数であり、…

JSR-202 Java Class File Specification Update

Type Signatureの文法がconflictしてるよねー、と知り合いに言われたので覚書。原版 FormalTypeParameter: Identifier ClassBound InterfaceBound* ClassBound: : FieldTypeSignature? InterfaceBound: : FieldTypeSignature現行javacの実装 FormalTypeParam…

オーバーライド等価性 + 総称化による共変引数

class A<T> { void f(T arg) {} }class B extends A<String> { @Override void f(String arg) {} }後者Bはコンパイル後に型の消去を受けて下記のようになるはず。 class B extends A { bridge void f(Object arg) { f((String) arg); } void f(String arg) { } }m1とm2</string></t>…

顧客が本当に欲しかったもの

name.equals(ns.getSimpleName().equals(name))共変型引数を持つ boolean equalsCovariant(X other)とかあればいいのに… (X[X := |self|]) Class getClass() があるからできるんじゃないかと。

JSR202

Java Virtual Machine SpecificationにAnnotationとStackMapの項がいつまでたっても追加されないので調べる。http://jcp.org/aboutJava/communityprocess/pr/jsr202/§4.8.16 The RuntimeVisibleAnnotations attribute 辺りからAnnotation。