wxFormBuilder とか wxRuby とかをやってる

この間書いた通り(書いてないっけ?)、仕事で GUI を作らなきゃいけなくなったので wxRuby をインストールした。
んで、参考になるサイトないかなー、とかググってたら発見。
Alone Like a Rhinoceros Horn
マジすげー。参考になりまくり。
スレッドで悩んでたところがピンポイントで解決しました。ありがたや。
あと XRC のデザインのために wxFormBuilder をインストールした。
http://wx.k5-n.com/wxruby/
ここもすごい参考になる。ありがたい。

wxRuby をインストールしようとして苦労した

Ubuntu 10.04 に wxRuby 2.0.1 を導入しようとして苦労した話。*1
最終的にはサンプルを動かすところまで行けた。これからもっとイジって遊ぶ。


「 gem で行けるだろー」なんてノリでセットアップを始めたのが馬鹿だった。gem の奴だと動かないって話が web にゴロゴロしてたよ。


結局、コンパイルに必要な物が全然足りなかったのが原因なので、苦労したってほど大変じゃなかったんだけど、微妙な罠もあった。 SWIG のバージョンは 1.3.38 までしか対応してないとか。これはソースからすぐ行けた。
あと何だろ。 openGL 関係のヘッダが足りなかったり、wxWidget 2.8-dev 関係を片っ端から入れないといけなかったり、過去にインストールしたつもり系の凡ミスが多発してた。
GUI は必要なものが多すぎて依存関係が全く分からない。
誰か僕にでも理解できるように図解してください。

*1:多分、 Windows の wxRuby は簡単にセットアップできると思う。試してないけど。

僕の生まれたタイミングについて思ったこと

 単純に僕の行動力の無さに起因する問題なんだけど、僕が会ってみたい偉大な頭脳たちは大抵高齢なので、僕が会って話をできる能力と機会を獲得するまでには、恐らく亡くなってしまうであろうということが悲しい。
 しかし、同時に、偉大な頭脳に成り得る素晴らしい頭脳たちも大勢いる。僕よりも少し年上の世代にもいるし、同世代にもいる。特に期待している世代は僕よりも下の世代の人たち。これはとても嬉しい。
 僕たちの世代は、ちょうどコンピュータとインターネットが社会に大きな影響を与えるようになった頃、コンピュータに触れ始め、思春期を過ごした。だけど、僕たちよりも一回り下の世代の人たちが生まれた頃、これらの存在は既に社会システムの一部分として不可欠な技術として定着しつつあった。要するに、僕たちは所謂 IT 革命の変化に何らかの刺激を受けながら育った世代であり、彼らはコンピュータの有無に関する大きな変化による刺激を受けずに育った世代だということ。
 バックグラウンドが違うことによる発想の差異の例は枚挙に暇がないけれど、コンピュータに関する時代の変化による差異は、これまでのジェネレーションギャップ以上に面白いギャップを生みそうな気がしている。上の世代とのギャップ、同世代との共通認識・トレンド、下の世代とのギャップ。どの要素を選んで比較しても楽しいんじゃないかな。
 このエントリの内容はありふれた考察ではあったけど、このことについて自分で書いてみるという経験が今までなかったので、なかなかに楽しかった。次に考えるべき問題として思いつくのは、冒頭でも述べた「僕の行動力の無さ」の改善だろうな。僕が死ぬまでに、僕よりも下の世代の、偉大な存在へと成長した頭脳たちに会って会話をするだけの能力を身につける必要があるわけだ。大変だな。


 このエントリでは、パラグラフの第 1 文の行頭にスペースを入れるという、日本語の文章としては極めて基本的な作法を適用してみた。はてダ側でやってくれればいいのにね。

間が空いた

最近の興味。
木本雅彦による「星の舞台からみてる」を読み始めて、何となくエージェントプログラム、もっと言えば計算知能って結構面白いなと思い始めた。
もともと計算機科学全般に興味があったので、人工知能も学部在学中には一通り観光してこようとは思っていたけど、もっと早く観に行きたくなってきた。


んで、人工知能といえばアラン・チューリングだろ、と思って Wikipedia 内の彼の頁を眺めた。
難しくて良くわかんね。
チューリングテストの辺りで既によくわかんね。
中国語の部屋についても一通り読んだつもりだけど、これも良く分からない。というか、今こうして書いているこの文章の意味を本当に僕自身は理解しているのだろうかという懐疑的な考えが脳裏を過ってしまって、本来の目的であるチューリングテストの理解を妨げている始末。
あとでもっとちゃんと勉強しよう。
あ、ミンスキーの本とかも読みたい気がする。


参考リンク(というか参考 Wikipedia
アラン・チューリング - Wikipedia
チューリング・テスト - Wikipedia
中国語の部屋 - Wikipedia
マービン・ミンスキー - Wikipedia
それから本エントリでは言及していないけど、チューリングの有名な論文。未読。近いうちに読みたい。
Computing Machinery and Intelligence (計算する機械と知性)

Lua の復習とかしてみる その 5

今日は第 6 章。

6.1

この章ではリーグ戦の対戦表を作るみたい。

6.2

テーブルを使ったデータ構造の例。
配列とハッシュを同じテーブルに突っ込んでも、ちゃんと区別して扱ってくれるらしい。

one = { "australia", "japan", score = { 3, 1 } }

print(one[1])
print(one[2])
print(one.score[1])
print(one.score[2])

for key, val in pairs(one) do
  print(key, val)
end

この汎用 for ループだと key が score になったときに表示がおかしくなるな。
こういうときってどうすればいいんだろう。

6.3

おお、 dofile() っていう便利そうな関数が出てきた。
ファイルを読み込んで実行する関数らしい。
プラグインとか作るときに使えるのかな。

6.4

6 章で作るプログラムの概要。

6.5

Luaプログラマ以外のチームメンバもデータを編集したり、プログラムを開発できるようにするために生み出された言語だよ、という話。
馴れないうちは大変かも知れないけど、少しずつ弄って遊んでどんどん試してみて下さいというような著者からの励ましの文章も。

6.6

6 章の話題のメインとなる、集計プログラムのソースコード
関数定義を除いた手続きのメイン部分は 2 行だけ。全体では 68 行。
関数の中で別の関数を定義するのって可読性上がるのかなー。確かに説明するときは説明が必要になったときに定義が出てくるから説明しやすいけど、別個に定義したほうが見易い気がするなぁ。
単に僕が、関数の中で関数が定義できる言語のソースに馴れてないだけって奴かも知れないけど。

6.7

6 章のまとめ。

Lua はそういった入出力処理は他に任せて、計算、判断、記憶の 3 つの仕事に専念します。

今日やったこと

  • 入門 Lua プログラミング 第 1 章の復習
  • 入門 Lua プログラミング 第 6 章 リーグ戦の集計
  • コンピュータ・アーキテクチャ ALU (大学)
  • 創る Java 第 2 版 チャプター 4 まで読んだ

創る Java は電車で読むのには向いてないみたいです。デカいです。
入門 Lua プログラミングの第 6 章は短めだったから、本当は 7 章まで行きたかったんだけど、途中でダラけて行けなかった。