長い時間がかかるテストを実行してる間に。 もはやテストがない開発なんて考えられないけれど、 テストの実行時間が昔のコンパイル時間のように感じられます。

ちょっと前にデスクトップPCがPCの主流をノートPCに譲ったように、 iPhoneのようなモバイル端末がノートPCに取って代わるのは時間の問題であるように思います。 このような世代交代は、かつて人類が何度も経験してきたことであり、 ことコンピュータに関する限り、プログラマーという人種は最先端のデバイスを使いこなしてきたのですが、今回の大波を乗りこなすのはちょっと大変なんじゃないかと思っています。

モバイル端末の小さなキーボードや、iPhoneのようなソフトウェアキーボードにしても、どうにもこうにもプログラムを書くには不便すぎるのです。 プログラムを書くための環境は、デバイスの進化の本流から零れ落ちてしまうのでしょうか。

その昔、プログラマーがパンチカードを捨てて、キーボードによるプログラミングを覚えて以来、長いことお世話になってきたキーボードが、 プログラマーを椅子に縛り付ける鎖となってしまうのかもしれません(ノートPCがあれば多少は動けるでしょうが、iPhoneの機動性とは比べるべくもないですね)

そうならないようにするためには、モバイルキーボードに特化した言語を考える事も意味があるかもしれません。例えば、10個のアルファベットからなる英語のサブセットみたいなものを考えたら良いでしょうか?(Brainf*ckよりもっとフレンドリーなものを希望) それとも記号をなるべく使わないプログラミング言語を考えたら良いでしょうか。

あるいは、キーボードではない入力方法でコーディングをする事を考えるべきでしょうか。図形を並べるようなプログラミング手法をGUIで行うようになるのでしょうか。

はたまた、プログラムを作るためのデバイスと、プログラムを使うためのデバイスは、永久に袂を分かつ事になるのでしょうか。

posted by Png genki on Mon 30 Jun 2008 at 18:39

このブログシステムは、今までmongrel_clusterで動かしていましたが、 passenger-2.0.1に移行しました。

特に不具合もなく動いているようです。 また、今までmemcache-clientの挙動が安定していなかったのですが、 なぜかpassengerにしたら解決。

posted by Png genki on Sun 29 Jun 2008 at 03:59

RubyProfを使って、Railsアプリのプロファイリングをする方法を紹介します。

まずは、ruby-profをGemでインストールします。

   1  % sudo gem install ruby-prof

インストールが完了したら、ruby-profプラグインをRailsアプリにインストールします。 ruby-profプラグインは、Gemがインストールされたディレクトリの下にあります。 環境によって場所は変わりますが、例えば/usr/local/lib/ruby/gems/1.8/gems/ruby-prof-0.6.0/rails_plugin/ruby-profなどの場所にあります。

これをvendor/plugins/ruby-profにコピーすれば設定は完了です。

あとはproduction環境でRailsアプリにアクセスすると、以下のようなログが出力されます。

   1  Thread ID: 3076980460
   2  Total: 2.030000
   3  
   4   %self   total   self   wait  child  calls  name
   5   20.20    0.80   0.41   0.00   0.39   1649  Array#each_index
   6    8.87    0.25   0.18   0.00   0.07 106376  Kernel#===
   7    3.94    0.11   0.08   0.00   0.03   3044  <Module::Marshal>#load
   8    3.94    0.08   0.08   0.00   0.00  26468  PGresult#type
   9    3.45    0.21   0.07   0.00   0.14   3044  <Class::Thread>#exclusive
  10    3.45    0.07   0.07   0.00   0.00 106761  Fixnum#==
  11  (** snip **)

See Also

posted by Png genki on Sat 28 Jun 2008 at 18:11

GitHubで公開されているRailsプラグインをインストールする方法のメモです。

ここでは例としてexception_notificationプラグインをインストールしてみます。 とはいっても特に変わった事をする必要があるわけではなく、 SVNリポジトリからインストールするのと同様に、GitHub からプラグインのURIを調べてきて、以下のようにインストールします。

   1  % ./script/plugin install git://github.com/rails/exception_notification.git

これでOK。 きちんとGitHubからcloneしてきたプラグインディレクトリの.git ディレクトリを削除してくれます。

posted by Png genki on Wed 25 Jun 2008 at 00:14

さて、今回はyuguiさんの「初めてのRuby」の紹介です。

初めてのRuby
初めてのRuby
posted with amazlet at 08.06.24
Yugui
オライリージャパン
売り上げランキング: 897

本書は、プログラミング経験者向けに書かれたRubyの入門書(嬉しい1.9対応)です。 僕のようにRailsからRubyに入った人にもお勧めです。 200ページ前後と手ごろなボリュームで、浅いところから深いところまで、Rubyに関する一通りの事がわかりやすくまとまっているので、頭から最後まで通して読むのがいいと思います。

時空を超えて、3年前の自分に一冊だけRubyの本を送れるとしたら、 本書を選びたいですね。

posted by Png genki on Tue 24 Jun 2008 at 00:58

RubyKaigi会場にて、もろはしさんから、はてなスターを連打できないのはけしからんという訓示をいただきましたので、cuzicさん主催のHackathon会場からささっと対応してみました。

とはいっても、CSSで以下のようにRtoLのDirectionを指定しているだけです。

   1  .star{unicode-bidi: bidi-override}
   2  .star{direction: rtl}

追記

沢山ついたStarが数字で省略された場合に、 数字部分が左右反転されてしまうと都合が悪いので、 さらに以下のようなCSSを記述しました。

   1  .hatena-star-inner-count {unicode-bidi: bidi-override}
   2  .hatena-star-inner-count {direction: ltr}

posted by Png genki on Sun 22 Jun 2008 at 00:08

Ruby会議2008の会場で利用するためにマイナーチェンジしたvimouse Ruby会議2008 Editionをリリースいたします。

vimouse 1.1 setup.exe

以前のバージョンからの変更点

  • vimouseモードへの切り替えHotKeyが、Ctrl+;から変換キーに変わりました

よろしくお願いします。

See Also

posted by Png genki on Fri 20 Jun 2008 at 17:54 with 1 comment

Ruby会議2008会場より

P1000166.JPG

Rails勉強会ブースの片隅より撮影

posted by Png genki on Fri 20 Jun 2008 at 13:35

Twitterで参加表明してる人の顔ぶれがおもしろそうだったので、 Erlang分散システム勉強会 に参加してきました。 以下にメモしてきたことを。

懇親会はなぜか検索系の話を。 それにしても最近話題が狭くなってきた。 もうちょっと統計とか関数解析方面のおさらいをしておかなくては。

See Also

posted by Png genki on Wed 18 Jun 2008 at 17:09

Rails-2.0以降に追加されたmigrationの記法についてまとめておきます。

  1. t.<data_type> という書き方が可能になった。 t.string :foo, :bar, :baz のように併記もOK
  2. t.timestamps created_at, updated_atを追加
  3. t.references :foofoo_id を追加。:polymorphic => true オプションをつけると、foo_typeカラムも追加される。
posted by Png genki on Tue 17 Jun 2008 at 11:18