2008-01-01から1年間の記事一覧

プラクティス

package-info.java から書くということを実践してみようかと

異常系の判断基準

id:daisuke-m と話してたことをまとめる。 元ネタはThrowableについて本気出して考えてみた - 都元ダイスケ IT-PRESS。異常が起こったとき、だいたい下の方法で対処してます。 RuntimeException系をスロー Exception系をスロー AssertionErrorをスロー (また…

気になった本

Software Language Engineering: Creating Domain-Specific Languages Using Metamodels作者: Anneke Kleppe出版社/メーカー: Addison-Wesley Professional発売日: 2008/12/09メディア: ペーパーバック クリック: 1回この商品を含むブログ (1件) を見る出た…

++age

> ++age 27

"literal".equals(s) のまとめ

3つ流派があって ぬるぽが飛ぶのが嫌だから、nullでないことが保証されるリテラルを先に書く ぬるぽが飛ばないとエラーを隠すので、ぬるぽを発生させる可能性のある s を先に書く equalsは同値比較演算で交換可能のはずなのに、順序を変えると動作が違うのは…

SunのコンパイラとEclipse JDTで動きが違う

HudsonがEclipseでコンパイルできなかったという話題が1か月前くらいにあって、その調査をしているときにjavacとJDTで微妙に動作が違う点を見つけました。 class Hoge<T> { void h() { class Foo { T t; } Foo o = new Foo(); boolean b = (o instanceof Foo); </t>…

"literal".equals(s)

なんか流行ってたので。私はs.equals("literal")派です。理由は 読みやすい 静的解析しやすい "literal".equals(s) はsにnullが認められていない時にも正常に動いているかのように見える とはいっても、プロジェクト全体でぶれてなければ問題ないとは思いま…

否定演算子が目立たない

ので、== false と書くパターンがあります。 if (hoge.isFoo() == false) { ... } 最近は上記を使っているのですが、3つくらい書けば目立つんじゃねと思った if (!!!hoge.isFoo()) { ... } たぶん偶数回しか書かないというバグを生みそうなのでやめた。

数学ライブラリ

手に馴染むフリーの数学ライブラリがJavaになかったので作成中。 sparse open-vector sparse open-matrix vector functions matrix functions graph functions 数学から離れすぎ+チューニングの世界から離れすぎでけっこう苦戦してます。

Yukara Wisdom リリース

Yukara プロジェクトサイトをオープンし、SeasarConで id:masataka_k がしゃべった Yukara Wisdom をリリースしました。 http://yukara.ashikunep.org/ http://yukara.ashikunep.org/wisdom マーケット的な何かとかは -Yukara-Wisdomリリース - まさたか日記…

using のアレ

java.io.Closeable の事も忘れないであげて。 - 設計と実装の狭間で。 に対して、Syntax Sugarっぽいものを目指してみた。 public abstract class Using<S extends Closeable, T extends Throwable> { abstract S value() throws T; abstract void process(S value) throws T; void play() { new Or() {</s>…

ソースバンドルフィーチャーを自動生成

Eclipse Plug-inのソースバンドルフィーチャーを作るのが異常なほど面倒だったので、なんかないかなーと調べたところ発見。PDEBuild/Individual Source Bundles - Eclipsepedia にやり方が書いてありますが、なんか不明瞭+いくつか情報が落ちてたので改めて…

ConverterとValidator

面白そうな議論なので。 つまり、値の検証をしてそのまま値を返すのがValidator、値の検証をして変換という付加機能をつけて値を返すのがConverterだ。つまりConverterはValidatorの特殊形態と捉える感じ。 2008-09-20 私は逆で、ValidatorがConverterの特殊…

Seasar Conference 2008 - Autumn

行ってきます。今回は、The Ashikunep KotanのYukaraブランドより、WisdomとCalendarというプロダクトを出展する予定です。 ここ3ヶ月くらいは真昼間にWisdomを延々と開発していまして、ようやくデモができるレベルまで達しました。Yukara Wisdomは、Irenka…

振り込め詐欺

日曜の夜9時に実家に電話してくるとか…

夏休み#2

またいただきました。今日は読書だけじゃなくて買い物にも行く予定。でも雷が鳴ってる…

混同

ソフトウェアハウスとSIerが混同されて議論されてることが多い気がする…SIはソフトウェアじゃなくてシステムの生産性を考えなきゃならんのにね。

夏休み

夏休み#1をいただきました。これ読んで、昼寝して完了。Structure and Interpretation of Computer Programs (MIT Electrical Engineering and Computer Science)作者: Harold Abelson,Gerald Jay Sussman,Julie Sussman出版社/メーカー: The MIT Press発売…

Javaバイトコード復習 (0) - 導入

ちょっとアイデアが出たのでバイトコード上でのモデル検査をやろうかなと思ってます。ただ、バイトコードを最後に触ったのが4年前だかですっかり忘れてたので、復習の過程をまとめていこうかと。バイトコードはバイナリエディタで書くのがつらすぎるので、Ja…

フローだけじゃなくて

LOG instanceof org.apache.commons.logging.Log debug = LOG#debug(*) except { debug on { LOG#isDebugEnabled() = true } }LOG.debug(...) を探すけど、LOG.isDebugEnabled() が確実にtrueである(on {...})やつは除外する感じ。つまり、isDebugEnabled() …

Amazon

欲しい本を見かけてAmazonのカートに追加 Amazonのカートがすごい値段になっていることに気付く レジに進むのをためらう 時間が経ってカートの存在を忘れる 1へ カートの中身: 4日で学ぶモデル検査 (初級編) (CVS教程 (1)) - 産業技術総合研究所システム検…

発明

知的労働で一番コストもリスクも高いのが「発明」だと思います。で、私の感覚だと「エンジニアリング」という言葉は知的労働に含まれる「発明」を極力抑えて、常に一定の成果を出す技術という(単純に工学とはまた別の)イメージがあります。常に「発明」を行…

メモ

朝の時間がないときに思いついた。ふつーにエスケープ解析して、「エスケープしてないのに〜してる/してない」という考え方をするのが一番か?んー、でもレシーバオブジェクトに値がとられた瞬間にグローバルエスケープ解析しないとだめだから難しいかも。

可変長引数ではAuto Unboxingが優先される?の理由

可変長引数ではAuto Unboxingが優先される? - kaisehのブログへのツッコミ。米欄に書こうとしたら長すぎたのでこちらに。 ところが可変長引数の場合は、評価の優先順位が違うみたいです。次のようにプログラムに書き足すと、 public class Test { static vo…

いまいち

↓だとボキャブラリ増えすぎる…。呼び出しだけじゃなくてメソッドの引数に渡すときとかいろいろあるわね。

もうちょっと単純に考える

裏側の理屈はともかくとして、もうちょっと自分が使いやすいように考えてみる。やりたいこと すべてのjava.io.InputStreamは close()が呼び出されなければならない (呼び出されないものを探して警告) 単純に書いてみたもの // すべてのjava.io.InputStreamは…

フロー解析

java.io.InputStream型の値を作り出したら、それに対して.close()が呼び出されない(可能性が少しでもある)ものを探す。っていう妄想。 stream INSTANCEOF java.io.InputStream stream MAY NOT FLOW method WHERE { method.expression HAS stream method.targ…

φ-function の逆

SSA変換するとbasic blockの合流点でφ-func入れることがあるけど、basic blockの分岐点でφ-funcの逆みたいなものを導入したらどうかな Hoge h = ...; /* φ(h.0:HogeExt, h.1:Hoge) <- h */ if (h instanceof HogeExt) { /* h.0 <- (HogeExt) h; */ ... } /* …

フロー解析について考察メモ

下の二つだけうまく表記できれば、現行の構造検索にフロー記述を含められるかも。 IO Monad φ function 要考察。多分ちゃんと作れば、自動リファクタリング(メソッド抽出)とかの入り口も作れそう。

ドキュメントを書く速度

たいていの場合、 ドキュメントを書ける人口 ドキュメントを読める人口 > プログラムを読める人口 というのが今の構造だと思います。需要と供給のバランスが悪いので単価も高い(?)のかしら。ごくまれに ドキュメントを書く速度 ドキュメントを読む速度 とい…