マイナー・マイナー

隠れた名作の発掘が生きがい。

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

2010年に読んで面白かった本のまとめ

今年も最後の日ということで,2010年に読んで印象に残った本をまとめました.なんとか今年中にまとめたかったけれど,時間があまり取れなくて取り急ぎでまとめた感じです.完全なる自己満足です.どうぞ! 10 限りなく透明に近いブルー クスリと暴力の溢れる…

privateなフィールドを直接参照してgetterとsetterをテストする

単体テストでゲッター(getter)とセッター(setter)の動作確認をしなければならないことがあります*1.それらは構造が単純なので,ただデバッグによる目視確認でよいだけだと思いますが,それらが大量にある場合はデバッグでそれらを一つ一つ確認するのは手間…

キムチパン

最近無性に食べたくなった食べ物がある.学生時代に出会った料理であり,その奇跡的なハーモニーがやみつきになって,一週間に3食以上を食べていた時期もあった. 「とにかく,食感が奇跡的なハーモニーなのです.サクッとシャキッが混合するその感覚がとて…

テオ・ヤンセン展に行ってきた

12/18(土)にテオ・ヤンセン展を見学してきました. 日本科学未来館の入口 関連リンク テオ・ヤンセン展〜生命の創造〜(テオ・ヤンセン展の案内) STRANDBEEST(公式サイト) (日本版公式サイト) テオ・ヤンセン(Theo Jansen)とはビーチアニマル(Strandbea…

eclipseを利用して2つのファイルを比較する

仕事柄,ファイルやソースコードの追加・修正・削除といった変更が多くあります.その際に,変更前と変更後のファイルでどこが変わったかを把握する必要がある場合が多くあります.これまで,変更箇所を把握するために,ファイルやソースコードを一度linuxサ…

年刊日本SF傑作選 量子回廊

2009年に話題になった短編SFをまとめた文庫です.瀬名秀明さんの『For a breath I tarry』は自分の存在確率の意味を考えさせられる作品でした.松崎有理さんの『あがり』は絶望と希望が織り交じった収束が素敵でした.他にも八木ナガハルさんの『無限登山』…

SJC-Pの受験記録と試験対策のまとめ

SJC-P(Java Standard Edition 6 Programmer Certified Professional Exam)に合格しました.試験結果は60点中43点(合格点は35点以上)と,まぁさえない点数ですが,これでようやくいろいろと開放された感じです.SJC-P受験はなかなか良い経験になったので,…

Collectionsクラスを利用してリストの要素を2つの方法でソートする

コレクションを操作するためのクラスとして,java.util.Collectionsクラスがあります.このクラスにはListクラスの要素をソートするメソッドが2つ用意されています.それら2つのシグネチャは次の通りです. static <T extends Comarable<? super T>> void sort(List<T> list) static <T> void sort</t></t></t>…

ジェネリックスにワイルドカードを用いた後の注意事項

ジェネリックスにはワイルドカード「?」を用いることができます.これを用いることで,型パラメータにスーパークラスやサブクラスを指定することができますが,その後の使用に制限が付きます. ワイルドカードを用いた次の記述を考えます.型パラメータにク…

同一の文字列リテラルを持つStringオブジェクトを作成する際の注意

Stringクラスのオブジェクトを作成する記述方法には次の2つがあります. (1) new演算子を用いた方法 (2) 文字列リテラルのみを用いた方法 例えば,"A"という文字列を表すStringオブジェクトを作る場合,上記はそれぞれ次のように記述します. String string1…

スレッドがスローする例外をキャッチする

マルチスレッド環境下で,あるスレッドからスローした例外を別のスレッドでキャッチしたい場合,java.lang.Thread.UncaughtExceptionHandlerインタフェースを実装したクラスを用意し,このインスタンスを例外がスローされるスレッドにセットするということを…

共変戻り値を使ってみた

共変戻り値とは,インタフェースを実装したメソッド,またはサブクラスでオーバーライドするメソッドの戻り値が,その戻り値のサブクラスでも良いという仕様です.JDK5.0以降にこの仕様が追加されました. 共変戻り値の実現を確かめるプログラムを次のように…

「throws指定されたメソッドをもつクラス」を継承してオーバライドする際の記述規則

スーパークラスで定義したメソッド(もしくは抽象メソッド)にthrows指定があり,そのクラスを継承したクラスでそのメソッドをオーバライドする場合の記述方法についてまとめました. まず,次のようなメソッドがスーパークラスで宣言されているとします. v…

static初期化子,インスタンス初期化子,コンストラクタの実行順序

クラスにはstatic初期化子(staticイニシャライザ),インスタンス初期化子(インスタンスイニシャライザ),コンストラクタが定義できます.それらはインスタンス生成時に行いたい処理を記述することができますが,実行するタイミングが違うため注意が必要…

コレクションに慣れよう

Javaにはコレクションといわれるフレームワークがあります.簡単に言うと,複数の要素を操作・管理する仕組みです.しかし,概要はだいたい分かっていますが,まだ不慣れなため実装したいときにすぐに使えないというのが現状です.そのため,すぐに使えるよ…

インスタンスメソッドとstaticメソッドのロック

Javaのスレッドが実行するメソッドはsynchronizedキーワードを用いることによってロックすることができます.ロックはインスタンスメソッドとstaticメソッドにかけることができます. サンプルプログラムを以下に示します.Printクラスのrunメソッド内でイン…

日付と時刻の書式化(フォーマット)を行ってみた

Javaでは,日付と時刻の書式化(フォーマット)のためにjava.text.DateFormatクラスが用意されています.書式化の利用方法は,DateFormatクラスのオブジェクトを生成し,formatメソッドを呼び出すことで実現できます. オブジェクトを生成するメソッドは,大…

サブクラスを直列化する際に,直列化可能でないスーパークラスで注意すること

スーパークラスが直列化可能でなく,サブクラスが直列化可能である場合,サブクラスのオブジェクトの入出力を行うときには引数のないコンストラクタが呼ばれるそうです.また,スーパークラスが直列化可能な場合,サブクラスも直列化可能であるため,コンス…

Steins;Gateに関わった日々

9月はSteins;Gate(シュタインズゲート)にハマっていた月でした.そして,そこには感動がありました.その感動を自己満足に,自己中に,中二病的に書き綴って中途半端なままにしておいた記事を,今回,公開して後悔しようと思います.それではどうぞ↓ 衝撃…

オブジェクトの直列化と,直列化させない2つの方法(transient,static)

Javaにおいて,入出力ストリームを通してオブジェクトをやり取りできるようにする仕組みを”直列化(シリアライズ)”と呼ぶそうです.ざっくり言うと,オブジェクト単位でファイルに読み書きができるようにする仕組みです. オブジェクトを入出力するストリー…

String,StringBuffer,StringBuilderの実行時間を比較してみた

Javaでは,文字列を管理するクラスとして,java.langパッケージに含まれる次の3つがあります.(A) String (B) StringBuffer (C) StringBuilderそれらの大きな違いを次の表の通りです. String StringBuffer StringBuilder 文字列変更可能 × ○ ○ スレッドセー…

Javaで無名クラスを利用する際に注意すること

無名クラスは,特定のスーパークラス,インタフェースを継承,実装して使用します.その際にメソッドのオーバーロードやオーバーライドができるのですが,無名クラスのインスタンスを参照型変数に代入して使用する場合,オーバーロードしたメソッドは使用で…

思考の整理学

外山滋比古著の『思考の整理学』.思考という無限大のリソースを整理する. 思考という実体の掴みにくい概念は,その捉え方と少しの行動によってコントロールできるようになる.そして,日々増えていく情報の集合から創造的なモノをアウトプットできるように…

モバイルPCがきた

工人舎のモバイルPCを買ったよ! 欲しかった理由は,喫茶店でモバイルPCに向かう大人にあこがれていたためです.ノートパソコンは持っているけれど,モニタが確か15.8インチ程度なので大きすぎて持ち運びに困る.なので,それよりも小さくて持ち運びに便利な…

インナークラスからメンバを利用する際に注意すること

Javaではクラスの中にクラスを定義することができます.しかし,その際のメンバやメソッドへのアクセスがややこしいので,プログラムを書いてみて試してみました.まず,インナークラスは大きく次の4つに分類されます. (1)非staticなインナークラス (2)stat…

Threadの生成方法と,無限にstartし続けない不思議

Threadを2つの方法で実装してみる JavaでのThread生成方法は大きく2つあります. ・方法1 Threadクラスを継承したクラスを作成し,それを利用する方法. ・方法2 Threadクラスのコンストラクタの引数にRunnableインタフェースを実装したクラスのオブジェクト…

Javaの例外処理において複数のcatchブロックを使用する際に気をつけること

Javaの例外処理では,catchブロックを複数書くことがありますが,どうやらサブクラスのcatch文を先に指定しないといけないようです. 例えば次の例外クラスの継承関係を見てみます. ExceptionクラスのサブクラスにはRuntimeExceptionクラスがある. Runtime…

ファイナライザとガベージコレクション

ファイナライザとは,インスタンスがメモリ領域から破棄される直前に呼び出されるメソッドです.ファイナライザのメソッド名はfinalize()で,次のように定義されています. protected void finalize() throws Throwable() メモリ領域からのインスタンスの破…

可変長引数

Javaでは可変長引数を利用することで,メソッドの引数を任意に設定できる.JDK 5.0で新しく追加された機能です. 可変長引数の書式は次の通り. メソッド名(引数の型... 配列名){...} 実引数が複数ある場合,その最後に可変長配列を定義できる. メソッド名(…

小さなチーム、大きな仕事 37シグナルズ成功の法則

37signalsの成功の法則が書かれた書籍.会社は大きいほうがいいなんて幻想にすぎない. シンプルで,迅速で,無駄もなく,臨機応変で,圧倒的な生産性を持ち,超効率的で,常に進化し続ける.仕事をするならばらそんな課程を望みたい.しかし,現実の会社を…