Archive for 2月, 2009

JTableでヘッダを行にも列にも表示する方法

水曜日, 2月 25th, 2009

javaのGUIアプリに、表を表示する機能を追加した。GUIにswingを使っていたので、JTableを使って表を表示させたが、表のヘッダを表示させる方法で詰まったので、書き残しておく。

JTableでは、ヘッダは表の上側、つまり各カラムに対して表示される。例えば以下の図のように。
table1

このヘッダの表示には、JScrollPaneを使う。具体的なコードは以下。
[sourcecode language='java']
public class Main {
public static void main(String args[]) {
JFrame frame = new JFrame();

String[] columnNames = {“o”, “s”};
Object[][] data = {{0, 1}, {1,0}};
JTable table = new JTable(data, columnNames);

frame.add(new JScrollPane(table));

frame.pack();
frame.setVisible(true);
}
}
[/sourcecode]

各カラムだけでなく、各レコードに対してヘッダを表示したい場合がある。例えば以下の図のように。
table2

この場合は、JTableを拡張し、表の一番左のカラムをヘッダとして扱うことで実現できる。具体的なコードは以下。

[sourcecode language='java']
public class Main {
public static void main(String args[]) {
JFrame frame = new JFrame();

String[] columnNames = {“o”, “s”};
Object[][] data = {{0, 1}, {1,0}};
RowHeaderTable table = new RowHeaderTable(data, columnNames);

frame.add(new JScrollPane(table));

frame.pack();
frame.setVisible(true);
}
}

class RowHeaderTable extends JTable {
public RowHeaderTable(Object data[][], Object[] columnNames) {
super(data, columnNames);
}

@Override
protected void initializeLocalVars() {
super.initializeLocalVars();
TableColumn tableColumn = super.getColumnModel().getColumn(0);
tableColumn.setCellRenderer(this.getTableHeader().getDefaultRenderer());
}
}
[/sourcecode]

auの端末からiphoneへ電話帳をコピー。

木曜日, 2月 19th, 2009

memosapo
iPhone以前に持っていたau携帯の電話帳を、iPhoneへコピーした。

過去の端末の電話帳をiPhoneにコピーする具体的なステップは、3ステップある。

  • まず、softbankの店頭にある「メモサポ」という機械を使って、au端末の電話帳を吸い出し、softbankのサーバへアップロードする。
  • 第2ステップとしてMacもしくはPCで、softbankサーバにアップロードされた電話帳をダウンロードし、OSXの場合はアドレスブックに読み込ませる。
  • 最後に、アドレスブックの内容をiPhoneに同期する。これで完了。

softbankのページには、ステップ1のメモサポについて何も書いておらず、電話で店頭に問い合わせた。ちなみに、上の写真はメモサポ。メモサポは、店頭に置いてあるので、お店に行って勝手に使う形になる。

iPhone購入時にも、電話帳は自分でコピーしてくれとは言われたが、特にメモサポについては聞かなかった(聞いていなかっただけかも)。上記ステップをsoftbankのサイトに載せておいてほしい。

温暖化でどこまで水没するか。- Water marks project

水曜日, 2月 18th, 2009

watermarksproject

Water marks project

http://watermarksproject.org/images/


このサイトでは、地球の温暖化によって、建物のどの部分まで水没するかを示したアート作品を紹介している。乾いた大地の画像など、使い古されたイメージ戦略ではなく、日常のリアルなものに変化を加えることで、注意を喚起する戦略は、僕にはよりメッセージが伝わるし、好きだ。

メディア芸術祭に行った。

水曜日, 2月 18th, 2009

dscn2572

メディア芸術祭に行った。

来場者がとても多かった。展示の最終日一日前の夕方に行ったが、すごい込みようだった。その様子が上の写真だ。入場制限のため入るのに時間がかかるのと、閉館時間までに見終われないと考えて、翌日朝に出直した。

展示物はぱっと見で面白いものが多い。特に以下のものは面白いと思った。つみきのいえ以外の動画は時間がかかることと、人が多かったため見ていない。

  • つみきのいえ
  • タイプライター
  • 骨伝導
  • ラジカセ
  • ニュースをゆがめるもの

この展示は、その名の通りお祭りという印象を受けた。人が多かったことと、面白さを重視した作品が多く選ばれて展示されていたことがその原因だと思う。わかりやすいものが悪いわけではないが、その作品の面白さの奥に、毒というか信念というか、作者のこだわりみたいなものが僕は見えなかった。僕のアンテナが悪いのかもしれないし、周囲に人が多いという環境にも影響されていたのかもしれない。

iPhoneを買った。

火曜日, 2月 17th, 2009

iPhoneを買った。
就職活動のために回数が増えた旅支度を楽にするためだ。僕は旅にはipod touchとデジカメとケータイを持っていく。この3つそれぞれに電源ケーブルやら接続ケーブルやらが必要になる。旅支度毎にこのケーブルをいちいち詰めるのも、旅先でケーブルを出すのも面倒だった。

iPhoneを買うときに気をつけることをいくつか。

  • 時間がかかる(事前準備なしで2時間ほど)

iPhoneの購入には2時間ほど時間がかかった。
特に時間がかかったと感じたのは、MNP予約番号取得のときだ。MNP予約番号とは、携帯番号ポータビリティという制度を使って携帯番号を変えることなく、携帯キャリアを変える際に必要になる番号だ。僕がiPhone以前に持っていた携帯のキャリアはauだったので、iPhoneを買うためにまずMNP予約番号を取得する必要があった。
MNP予約番号取得には、auのお客様サポートセンターへ電話する必要がある。この電話では、MNPに関わるリスクを説明してくれるのだが、基本的にひたすら話していることを聞くだけなので、長く感じる。予約番号を得るために電話をしているという背景も、この通話が長く感じる要因の一つでもある。

  • 契約時にいくらか支払う可能性がある(4000円前後)

iPhoneの場合は7000円ほどのお金がかかるらしい。それにいくつかの割引が適用されて、結局4200円ほど払う必要があった。なお、僕が契約したオフィスではLife cardがiPhone契約をバックアップしていて、契約時にLife cardに入り、初め1ヶ月の支払いをLife card経由にすることを約束すれば、初期費用は0円になった。各オフィスで違いがあるかもしれない。携帯の交換は実に5年ぶりだ。契約時にお金が必要だというのを忘れていた。

  • 電話帳の入れ替え、メール設定は自分でやる

これが一番大変だ。iPhoneはAppleとSoftbankでさまざまな協定が結ばれているらしく、以前の携帯からiPhoneへの電話帳のコピーを、softbankオフィスで代行してくれない。どうやら店頭で以前の携帯電話の電話帳をバックアップしてもらい、そのデータをmy Softbankというサービスからダウンロードする必要があるようだ。明日、店頭に行って以前の携帯電話の電話帳をバックアップしてもらおう。詳しくは以下のURLに書かれている。

メモリの移行について | Softbank
http://mb.softbank.jp/mb/iphone/sync_memory/

最後に、感想を少し。

以前持ち歩いていた3つのデバイスが一つになるのは、やはりすごいことだと思う。アプリ機能で様々なことができる(sshでサーバに入る等)ので、タッチスクリーンでのキーボードの入力が上達すれば、これでメインマシン端末になるのでは、と思ったりもする。早くbluetooth経由で動作するiPhone用のキーボードが発売してほしい。

ファミ詣 – chiptuneイベント

水曜日, 2月 11th, 2009

Chiptuneのイベント。来年行く。

Hardware chiptune project

水曜日, 2月 11th, 2009

最近Chiptuneという音楽のジャンルにハマっている。Chiptuneとは、制限された音源の中で表現する音楽を指す。一般的には、ファミコンやゲームボーイなど、古いゲーム機器の音源を利用して作曲する。

しかしこの動画は、ハードウェアからChiptuneを作っている。PCを持ち歩かなくとも、9V電池さえあれば音楽を再現できるのは相当カッコいい。arduinoを使ってこういうの実現しようかな。

このHardware Chiptune Projectのサイトは以下。

http://www.linusakesson.net/hardware/chiptune.php

アルゴリズムの重要性 – ビューティフルコードセミナーの記事に学ぶ

水曜日, 2月 11th, 2009

はてブ経由で「ビューティフルコードセミナー」の記事を読んだ。

この記事の中で、特にアルゴリズムの重要性を教えてもらった。

美しいコードとは

パワーを持つコード
  • パワーを持つとは

コードを見ていると、「その発想はなかった!そんな風にできるのか!?」と感動することがある。コードには人を感動させるパワーがある。

  • パワーの源

そのパワーを生み出しているのはアルゴリズムである。

例えば、ソフトに重い部分が見つかれば、大抵のプログラマはボトルネック部分を見つけた後、変数の数を減らしたり小手先の修正をする。一方、優れたプログラマはアルゴリズムとデータ構造自体を見直す。

小手先の修正だと、せいぜい20%くらしか改善できない速度が、アルゴリズム自体を変えることで時に1000倍の改善ができたりする。

別例として、ruby の文字列処理がある。

最 初、ruby で扱える文字コードはSJIS, EUC-JP の2種類だった。UTF-8対応はまつもとさん自身、ほぼ無理なんじゃないかと思っていて手をつけないでいた。しかし、吉田さんという人がそんなに手間を かけずにUTF-8対応させることができるパッチをメールで送って来た。しかも、速度的にも問題ないコードだった。

最初は無理だと思っていても、実際そのコードを読むと「なるほど」となる。「きっと無理だろう」と書く前から思っちゃうのを打破するパワーがコードにはある。

これまで、アルゴリズムに関する本(SICP, アルゴリズムイントロダクション等)を読んでも、最後まで読み切ることがなかった。この文章を読んで、アルゴリズムをきちんと勉強する理由ができた。

また、コードの良さは人にとって内容の理解しやすさと実用性だと考えていたが、これからはパワーという点も見逃さないようにしようと思う。

小さくなったgainerが発売されている。

火曜日, 2月 10th, 2009

gainer_mini_photo
フィジカルコンピューティングを手っ取り早く体験できるハードウェア、Gainerが小さく、安くなってました。gainer-miniという名前で各所で売られる模様。最寄りの大阪シリコンハウスでは4200円。詳しくは以下のURLから。

http://www.gainer-mini.jp/

ryan5500.com

水曜日, 2月 4th, 2009

やっと自分のサーバを持ちました。
今後はこちらで、僕の情報を発信していきます。

よろしくお願いします。