アスキーアートプログラム

prototype.jsで「$()」という関数はあまりに有名。

var foo = $("foo");

var foo = document.getElementById("foo");

と等価となる。$を関数名にしようという発想は斬新。そんな自由度の高いJavaScriptでも予約語演算子はさすがに関数名(変数もなのでオブジェクト名と言った方が正確かな)にできない。「new」や「var」などは大文字にすれば利用できるけれど、かなりややこしい。
他に似たようなものでは「_(アンダースコア)」が使える。(IEでしかやってないけれど)

var _ = function() {
this._ = function() {
alert("HelloWorld");
}
}

とかすると呼び出し側は

new _()._();

これはプログラムか。。

仕事納め

現在の開発現場で働くようになって1年と半年強。4月から東京にて新たな会社で働くため、明日で仕事納めとなる。
お世話になった。本当に心からそう思う。
Javaはほんの少ししか知らなかったし、UNIX系OSにもめっきり弱かった。最初の頃の土日などは、ずっと現場で困ったことを調べたりサンプルコードを貯蓄したりして、ハイパフォーマンスを演じるのに必死だった気がする。
しかし、知識の貯蓄が増えて、開発手順にも馴染んできて、新しいことが出てこなくなったときにあっという間に成長が鈍化した。
これでは駄目だと思い、その頃からプログラマとして常に新しいものを探すようになった。世の中に新着なものでなくても、自分にとって新しいものなら開発現場に全く関係がなくても手を出した。
自宅サーバーを立てたりSwingでアプリケーションを作ったり別の言語を使ったり。また、勉強のために開発現場で使えるツールも色々作った。
最初はそれで十分に楽しかったけれど、情報源が検索エンジンでの検索と書籍だけでは時間的なロスが大きかった。
そんな時に先輩プログラマが自分の情報源としている色々なサイトやブログを教えてくれた。「RSSリーダーに入ってるのはこんなんかな」といった気軽な感じで教えてくれたのだが、私にとってはとんでもない発見だった。
真剣にRSSフィードを探すようになったし、ソーシャルブックマークも使い始めた。他人のブックマークを追うことで知るきっかけが大幅に増えた。そして自然と情報源は書籍からWebに転化した。
その後は最初の頃の成長率を取り戻したように思う。逆にWebの世界にアウトプットされる量に全然追いついていけずに困るくらいだ。
4月からは今より確実に高度な技術が要求されるけれど、この調子でいつまでも成長してゆきたい。

文字コード指定で入出力

Java文字コードを指定してファイルの入出力を行うときの簡易的なコード。

  • 入力
BufferedReader reader = new BufferedReader(
new InputStreamReader( new FileInputStream("in.txt"), "UTF-8") );
  • 出力
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter( new FileOutputStream("out.txt"), "UTF-8") );

ここをコピって後は適当にwhileとかで回すと。I/O系のコードはよく忘れるので。

JavaScriptでマルチスレッド

JavaScriptのsetTimeoutという関数がどうもマルチスレッドで動くような気がする。それでこんなことを思い付いた。

function Thread(func) {
setTimeout(func, 0);
}
new Thread(
function() {
alert("HelloWorld");
}
);

setTimeoutのなかに処理を書いてもいいけれど、少しだけJavaっぽく。本当はJavaScriptJavaのThread.sleep()の機能が欲しかったのだけど、そっちは未だに解決せず。無理やりsetTimeout関数を使って作ることになりそう。
JavaScriptで数秒ごとに何かの処理をするようなとき、みんなどんなコーディングをしているんだろう。

哀 戦士・Z×R 購入

哀 戦士・Z×Rを購入したので簡単に感想などを。
まず、今回付けられているタイトルと原曲タイトルの一覧。

01 BLUE STAR 水の星へ愛をこめて
02 TAKE FLIGHT GUNDAM 翔べ!ガンダム
03 SOLDIERS OF SORROW 哀 戦士
04 ALONE AGAINST THE WIND 風にひとりで
05 METAMORPHOZE Metamorphoze 〜メタモルフォーゼ〜
06 THE WAY FORWARD ORIGINAL/INSTRUMENTAL
07 GO BEYOND THE TIME Z・刻をこえて
08 THE WINNER THE WINNER
09 BECAUSE YOU ARE WAITING 君が待っているから
10 ENCOUNTER めぐりあい
11 RE-ENCOUNTER ORIGINAL/INSTRUMENTAL
12 THE BEGINNING ORIGINAL

ORIGINALとなっているのは、リッチー・コッツェンによる新作。
選曲はファーストガンダムに限らずで、Zのオリジナルをピックアップしてくれたのは素直に喜びたい。
曲はリッチー・コッツェンがカバーしたらこうなるかという結構そのままな感じ。全体的にロックなアレンジで曲によっては(「METAMORPHOZE」辺りは言われないと原曲に気付かない)かなりイメージが違う。逆にかなり原曲っぽい仕上がりなのは「翔べ!ガンダム」や「哀 戦士」。
「Z・刻をこえて」のイントロはエースコンバット PlayStation the Bestの曲(2人対戦で機体を選ぶときの曲のことです)かと思っけれど、かっこいい。ニール・セダカの曲は名曲だ。
「THE WINNER」と「めぐりあい」はそのまんま洋楽になった感じで違和感なく聴ける。
全体としては、アニメの曲として使われるとあんまりかもしれないが、聴物としてはいいかなと思う。「サイレント・ヴォイス」とか「ETERNAL WIND〜ほほえみは 光る風の中〜」とかもやってくれたら良かったのに。

Google Finance

Google Finance
http://finance.google.com/finance
これは凄い。検索窓で「Microsoft」や「Google」など企業名を入れて検索すると、該当企業のチャートと関連ニュースが表示される。チャートはGoogle ローカルさながらにドラッグで左右に動かせて、連動して右の関連ニュースも動く。
チャートの上で表示範囲を選択できるなど、音の波形編集ソフトを使っているような心地でチャートを見ることが出来る。
ここまでのインターフェースを提供されると、他の株価サイトを見る気がなくなってしまう。それくらい、やり過ぎの印象を受けた。

サーバー停止

4月に引越すので、そろそろ24時間稼動の自宅サーバー(Solaris 10)を止めることにした。再起動することはしばしばあったけれど、停止することがなかったのでシャットダウン方法を度忘れした。
再起動は

shutdown -y -i6 -g0

とやるので、iオプションのランレベルを変えれば停止になる。0、いや9だっけと一度混乱すると自信がなくなったので、結局Google検索のお世話になった。
正解は0。ランレベルは0に近いほうが停止に近い(システム管理状態とか)。
自分専用サーバーなだけにrootになることはほとんどなくて、いつもsudoで済ませてしまう。なので、実際に打ったコマンドは以下の通り。

sudo /usr/sbin/shutdown -y -i0 -g0

潔く静かになってくれた。
人が亡くなって初めて故人の大切さや存在感に気付くことがあるが、ファンの音がなくなって初めてサーバーがいつでも稼動していたことを実感する。

哀 戦士・Z×R

哀 戦士・Z×R

哀 戦士・Z×R

リッチー・コッツェンガンダムカバーアルバム。YOUNG GUITARのインタビューによると、シンディー・ローパーが「哀 戦士」を歌うという企画は無くなったらしい。
明後日の発売なので、時間があれば手に入れる予定。
曲目を見る限り「シャアが来る」がなさそうで非常に残念。リッチー・コッツェンの声で「シャア!」って聴きたかった。