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

ProxyパターンとProxyクラスと黒魔術

Java Advent Calendar 2011 の18日目です。17日目の記事は JavaEE使ってウェブアプリケーションつくろうよ - 水まんじゅう2、 19日目はJavaエバンジェリストの寺田さんですよ。乞うご期待。 プロローグ 後:「先輩、いまさらなんですけど上からSQLの遅いとこ…

寝てる場合じゃねぇ!

Javaの型パラメーターに対してstaticメソッドを呼び出した場合の挙動 - 達人プログラマーを目指してを見ていて思いついた。 public class NoSleep <Thread extends NoSleep.Hoge> { public static void main(String[] args) { NoSleep n = new NoSleep(); n.start(); } private void start</thread>…

Threadの割り込みを活用する

確実に一定時間スリープする - terazzoの日記ではThreadの割り込みがあっても確実に一定時間の停止を試みているが、そもそもこのようなコードは書いてはいけない。Thread.sleep()は一定時間止まるための便利メソッドとしてよく知られているが、そのときに発…

二重ループのバグ

太郎くんはJavaでコマンドラインから渡された英文字("zero", "one", "two", "three")をアラビア数字(0, 1, 2, 3)に置き換えるコードを書いた。 public class Sample { static String[] values = {"zero", "one", "two", "three"}; public static void main(S…

僕の知らない論理

いつも通りのある日のこと、彼は突然声高に言った。嫌だ!は充分に論理的だと。*1 彼が主張し心理学者がまさにまさにと肯定*2した僕の知らない論理に僕は興味を持った。 それはこういう理屈なのだろうか?と考えた仮説を書いたら*3ある人が解説をしてくれた…

「嫌だ!」が論理的という話

(注意)以下は、ある人物の主張を正しいとするならばこのような解釈になるのだろうかという仮説であったことを断っておく。現在、僕はこの仮説を放棄した点も断っておく。論理的とは何か、といえば論理・的なのだから、 1 論理に関するさま。 2 論理にかな…

セミコロンレスJavaの構造化&オブジェクト指向

昨日、Java 7th moon 富山が開催されました。参加者21名と小規模ながら、会場は非常に盛り上がりました。ああ、凄く楽しい。こんなに楽しいのは久しぶりだ。スピーカーをしてくださった皆さん、参加してくださった皆さん、本当にありがとうございます!LT(ラ…

Java 7 イベントやりますよ

Java7 リリース記念で勉強会を開催します。 Java 7th moon 富山 : ATND豪華ゲストが来てくださることに! 寺田さん ([twitter:@yoshioterada]) 桜庭さん ([twitter:@skrb]) ヨシオリさん ([twitter:@yoshiori]) ナガタさん ([twitter:@ngtyk]) 近郊の人はぜ…

Java7 ジェネリクスのダイアモンド・オペレータ

Java 7がリリースされました。もう随分前から7の話題はあったものの、ずっと延期されてたんで出た事自体が不思議な気がしますが、皆様いかがお過ごしでしょうか。Java 6が2006年12月ですからほぼ5年も経ってしまったのですね。Java 7のリリースノートは Java…

Android用アニメーションの考察メモ

自分メモ。UIに単純なアニメーションエフェクトを付けるだけであればandroid.view.animationパッケージあたりの機能を使えばいい。Androidアプリで“アニメーション”するための基礎知識あたりを参考。フリックやピンチイン/アウトでのズームイン/アウトなど…

異型のオブジェクト比較

異なる型のオブジェクトの順序比較が今回のテーマ。Javaの場合、オブジェクトの順序を比較する王道はふたつある。ひとつはjava.lang.Comparable *1(こんぺあらぶる)を実装する「自然順序付け」と呼ばれる方法。 public class A implements Comparable<A> { in</a>…

Javaパフォーマンス計測 JITとの闘い

前回の文字列操作編では適当に文字列操作のパフォーマンスを測定しようとしたらGC様とJITコンパイラ様に阻まれた、という話だった。モヒカン族*1が「てめえの計測はなっちゃいねー!ひゃっはー!」と殴りかかったらケンシロウみたいなのが出てきて「あべしっ…

Javaパフォーマンス計測 文字列操作編

前回でパフォーマンス計測に用いるタイマーについての理解を深めたので、やっとパフォーマンスの計測を始めることができる。今回のテーマはJavaの文字列連結だ。タイムリーだね。 文字列連結についての基礎知識 Javaの文字列連結についての言語仕様まわりは …

Javaパフォーマンス計測 そんなタイマーで大丈夫か?

駄目だ。大問題だ。 long t1 = System.currentTimeMillis(); long t2 = System.currentTimeMillis(); System.out.println(t2-t1); 結果はなんとでるか? 99.9%以上の確率で0が表示される。そもそもSystem.currentTimeMillis()は時刻をミリ秒で返す。1行のプ…

Java 30byte FizzBuzz

なっちゃん(以下な)「なんかさー。タイトルが無理すぎない?」 ぎぃくん(以下ぎ)「まあ流行りだからね」 せっちゃん(以下せ)「流行りって言ってもFizzBuzzを30バイトで - Togetterが1/24だし、1週間経ってるけど。どちらかと言えばオワコン?」 な「…

Javaによる高階型変数の実装

高階関数というものをご存知か。関数自身を引数あるいは戻り値に取る関数のことである。「高階」は「こうかい」と読む。その昔「たかしな」と読んだ人がいたとか、いないとか。先のエントリ「HttpSessionを型安全にする」では「javax.servlet.http.HttpSessi…

HttpSessionを型安全にする

Servletをやった人はおなじみのjavax.servlet.http.HttpSessionのsetAttribute()/getAttribute()のようなモノをどうやって型安全にするかというのが今回のテーマ。擬似的にはjava.util.Map型へのput/getだと思ってもらっていい。通常、Mapを使う際はキーの型…