Java
メモ。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
昨日のエントリの関連語検索にちょっとしたバグ発見。 後でなおす
勢いで類似検索と関連語検索などを作ってみた。Googleのようにキーワードを元に文書を探すのではなく、文書を元にほかの類似する文書を探してくる仕組み。関連語検索は、現在の文書に含まれないもののおそらく関連があると思われる単語を検出する。詳しい説…
会社で最近プログラムをあまり書かなくなった。 すると、家でプログラムを書きたくなる。ふしぎ!
キャストすればいーじゃん。でも、コレクションの中身とかドキュメントに起こすときにけっきょく同じようなこと書くよね。
Information retrievalに詳しくないけど、状況絞ったら私にも出来るんじゃね?という分野の研究を開始。 プログラミング中のコンテキストを分析して、次に必要になりそうな ライブラリのオフィシャルドキュメント ピンポイントAPIリファレンス サンプルコー…
バイトコードディスアセンブラをなぜか書き始めた。 ASMでいーじゃん
Java : Generics - lethevert is a programmerあたりを読んで、Genericsって難しいって思う人がたくさんいるんだなと。確かに難しいけど、それは コンパイラ作るのが大変 フレームワーク作るのが大変 とかその辺の話で、末端の開発者(上の成果を利用する人)…
2008-05-06 2008-05-06 WeakReference使ったキャッシュとかのテストとかで使ってます。
天才プログラマーになりました。単価安そうな感じの名前です。最近は構造化された文書のDiffをとるまともな方法を考えてます。 行単位とかXMLとかで取るのはすでにあるのですが、Javaのようにある程度特殊な構造で その差分を可読性が高い状態で取るのはなか…
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ツールの挙動にあわせて書かなきゃなりません。でも、そのツールの挙動もどこに明文化されているかわからず、今のところ手探りで挙動をそろえてます。
使ってみた。実際に動きます。
Javaにはびっくりする文法が結構あります。 備忘も兼ねて。
ついでに。 public class N { public class A { private int a; } public void f() { int x = new A().a; new A().a = 1; } } これは、次のようにプログラム変換される模様 (javac)。
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がパワーアップしてた。 canExecute setReadable setWritable setExecutable getTotalSpace getFreeSpace getUsableSpace むしろ Map getMetaData() みたいなのが欲しい。keyはOSごとに依存でいいから。
どうもIBM系のJavaコンパイラと同じ動きしなくてはまっていた点。 プリミティブ型のリテラルと文字列リテラルは定数式 定数式同士の比較は定数式 定数式同士の文字列連結演算(+)は定数式 定数式だと何が嬉しいのかというと、定数式の数値は代入変換の際にナ…
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を「可変長引数」と呼ぶけれど、Variable Argumentsの略だとすると「可変引数」。それだとvariantな香りがするのでJLS読んだところ、「Variable Arity」と表現されていた。 久々に英辞郎で引けなかったのでぐぐる先生にお伺いを立てたら、どうやらAri…
単項+演算子は単項数値格上げの対象になる。 byte b = 10; byte c = +b;上記の「+b」は単項数値格上げによってintになり、byteに代入できない。 byte b = 10; byte c = +10;今度はOK。代入の際には代入変換と呼ばれる変換があって、代入する値が定数であり、…
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() があるからできるんじゃないかと。
Java Virtual Machine SpecificationにAnnotationとStackMapの項がいつまでたっても追加されないので調べる。http://jcp.org/aboutJava/communityprocess/pr/jsr202/§4.8.16 The RuntimeVisibleAnnotations attribute 辺りからAnnotation。