Hatena::ブログ(Diary)

裏紙

 | 

2012-11-30

ぼくのかんがえたさいきょうのいろふ

| 00:58

こんばんわろふ!

これはいろふ Advent Calendarの一日目です。今日は12月1日ですね!うん、12月1日だ。


これはなに?

好きな言語で好きにいろふさんを実装する感じです。

あるいは足をやっちまって診断書でも貼っておいても良いでしょう。


いろふさんを定義する

というわけで、まずはいろふさんを定義します。

public class irof {
}

Javaの流儀に従えばパスカルケースですが、iを大文字にしたところは見たことないのでキャメルケースにしました。

いろふさんは動く

あたりまえですが、いろふさんは動きます。動くと言えばRunnableです。

public class irof implements Runnable {

    public void run() {
        ...
    }
}

いろふさんといえばあのアイコン

○ックマンを白くしたようなアイコンが象徴的ですね。

GUIはよく分かんないんでJFrameにJLabel突っ込んで表示することにします。

    private void 表示しろふ() {
        JLabel ラベろふ = new JLabel(new ImageIcon(アイコンのデータ));
        final JFrame いろフレーム = new JFrame();
        いろフレーム.add(ラベろふ, BorderLayout.CENTER);
        いろフレーム.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        いろフレーム.pack();
        Rectangle ディスプレイのサイズ的な何か =
            GraphicsEnvironment
                .getLocalGraphicsEnvironment()
                .getDefaultScreenDevice()
                .getDefaultConfiguration()
                .getBounds();
        int x = 気まぐれ.nextInt(ディスプレイのサイズ的な何か.width);
        int y = 気まぐれ.nextInt(ディスプレイのサイズ的な何か.height);
        いろフレーム.setLocation(x, y);
        いろフレーム.setVisible(true);
    }

表示位置はランダムで適当に。アレですね、全国の勉強会に神出鬼没ないろふさんぽくて良いですね。


いろふさんは増殖する

いろふさんはcloneして分散する、と専らの噂です。

public class irof implements Runnable, Cloneable {
    @Override
    protected irof clone() {
        try {
            return (irof) super.clone();

        } catch (CloneNotSupportedException e) {
            //例外が起きたらおかしい
            throw new Error(e);
        }
    }

いやぁ、ホント、Javaのcloneメソッドはイケてないですね。


足ぐにゃぐにゃ

あと、いろふさんと言えば足がぐにゃぐにゃです。足もとが弱い、つまり安定性に疑問がある、と解釈して、最大ヒープを可能な限り低く設定して実行します。

java -Xmx2m irof

ホントは300KB程度にしたかったのですが、Hotspotでは-Xmxオプションは2MB未満の指定は出来ません。残念。ろふ。


と思ったら

OutOfMemoryErrorが出ました! やったー!

ちなみに、そのときの状況はこんな感じ。

f:id:backpaper0:20121201005343p:image


……わぁ


まとめろふ

  • 無理。まとまんない
  • いろふさん、正直すまん

明日は@さんです。


本日のコードろふ

 |