写真 青い空と雲と建物と木々の緑

nishimotzの日記

  • Ubuntu 8.04 (vmware) + rails 2.3.2

    Ruby on Rails 2.3.2 を使える環境を作る手順。何度も同じ失敗をしたので、備忘録として書きます。

    使用したのは Ubuntu 8.04 日本語リミックスの VMware 仮想マシン(VMware Player 2.5.1 on Windows XP)。

    安易に 8.10 にアップグレードしたら open-vm-tools がおかしくなり、eth0 を認識しなくなったので、8.04 のまま使うことにしました。HGFS は使えないのですが、ホストOS(Windows XP)とのあいだでコピー&ペーストができるので便利です。

    apt-get でインストールされる gem はバージョンが古いので、このままでは後の作業がうまく行きません。

    /var/lib/gems/1.8/ にインストールされるのは古い gem の挙動、/usr/lib/ruby/gems/1.8/ にインストールされるのが新しい(望ましい?)gem の挙動のようです。

    • 2009-08-12 追記:Debian パッケージの gem をそのまま使うと /var/lib/gems 以下にインストールされる、ということらしいです。Ubuntu 9.04 の /usr/bin/gem1.8 (gem 1.3.1) においても /var/lib/gems に実行ファイルが生成されることを確認しました。
    $ sudo apt-get install ruby rubygems
    $ gem -v
    0.9.4
    $ which gem
    /usr/bin/gem
    
    • 追記 (2009-05-20) Ubuntu 9.04 の rubygems1.8 はバージョン 1.3.1 でした。

    手作業で gem 1.3.1 を入れる。

    $ sudo gem install rubygems-update-1.3.1.gem
    $ sudo /var/lib/gems/1.8/bin/update_rubygems
    ...
    RubyGems installed the following executables:
    /usr/bin/gem1.8
    If `gem` was installed by a previous RubyGems installation, you may need
    to remove it by hand.
    

    古い /usr/bin/gem と新しい /usr/bin/gem1.8 が共存しているので、手作業で対応。

    $ gem -v
    /usr/bin/gem:10:Warning: Gem::manage_gems is deprecated and will be removed
    on or after March 2009.
    /usr/bin/gem:23: uninitialized constant Gem::GemRunner (NameError)
    $ gem1.8 -v
    1.3.1
    $ pushd /usr/bin; sudo mv gem gem.org ; sudo ln -s gem1.8 gem; popd
    $ gem -v
    1.3.1
    

    gem 1.3.1 を使って rails を入れる。

    $ sudo gem install rails
    Successfully installed rake-0.8.4
    Successfully installed activesupport-2.3.2
    Successfully installed activerecord-2.3.2
    Successfully installed actionpack-2.3.2
    Successfully installed actionmailer-2.3.2
    Successfully installed activeresource-2.3.2
    Successfully installed rails-2.3.2
    7 gems installed
    ...
    $ rails -v
    Rails 2.3.2
    

    アプリケーション hoge を作って、sqlite3 で rake test を通す。

    $ rails hoge
    $ cd hoge
    $ rake test
    rake aborted!
    no such file to load -- sqlite3
    

    sqlite3 環境が足りないから rake test が通らない。下記サイトを参考に対処。

    $ sudo apt-get install ruby1.8-dev swig libsqlite3-dev
    $ sudo gem install sqlite3-ruby
    

    migrate して test する。

    $ rake db:migrate
    (in /home/nishi/hoge)
    $ rake test
    (in /home/nishi/hoge)
    /usr/bin/ruby1.8 -I"/home/nishi/hoge/lib" -I"/home/nishi/hoge/test"
    "/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake/rake_test_loader.rb"
    /usr/bin/ruby1.8 -I"/home/nishi/hoge/lib" -I"/home/nishi/hoge/test"
    "/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake/rake_test_loader.rb"
    /usr/bin/ruby1.8 -I"/home/nishi/hoge/lib" -I"/home/nishi/hoge/test"
    "/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake/rake_test_loader.rb"
    

    test が通ったので、server を動かしてブラウザから確認する。

    $ script/server
    
    Welcome aboard
    You're riding Ruby on Rails!
    About your application's environment
    Ruby version	        1.8.6 (i486-linux)
    RubyGems version	1.3.1
    Rack version	        1.0 bundled
    Rails version	        2.3.2
    Active Record version	2.3.2
    Action Pack version	2.3.2
    Active Resource version	2.3.2
    Action Mailer version	2.3.2
    Active Support version  2.3.2
    Application root	/home/nishi/hoge
    Environment	        development
    Database adapter	sqlite3
    Database schema version	0
    
  • [galatea] イベントとISTC総会

    昨日、情報処理学会第71回全国大会の特別セッション「擬人化エージェントとの音声対話を実現する基盤ソフトウェア」にて、Galatea for Linux の最新版を紹介しました。お集まりいただいた皆様にお礼を申し上げます。

    またその後に ISTC 実行委員会と総会が開催され、4月以降に sourceforge.jp でオープンソースソフトウェアとして公開するという方針も、正式に了承されました。

    個人的には私は昨日ずっと Ubuntu 8.10 で Impress!ve を使ってプレゼンテーションをしました。ThinkPad X300 で、Galatea のデモでは USB-Audio アダプタを使用。下記の記事のおかげです。いまや Impress!ve に比べたら Galatea なんて軽い、軽い。。

    実行委員の間では、オープンソースのライセンス戦略について様々な質問・意見がありました。また、国際化も重要な課題という認識が実行委員メンバーで共有されつつあります。

    Galatea は2003年に IPA のプロジェクト成果として公開後、正式には最新版を公開していません。しかし IPA 最終版についても、公開後多くの方から利用方法やライセンスについてお問い合わせをいただいてきました。これからも利用者・関心をお持ちの方からのご意見を伺っていきたいと思います。

  • JMC を使って Java で MP3 を再生する

    下記の記事

    を読んで、JavaFX のクラスを Java 言語から使うためのパターンがわかってきたので、Java Media Components を Java から使い MP3 ファイルを再生することに挑戦。やっと成功しました。

    ただし Windows XP で Java FX SDK 1.1 を C:\Program Files\JavaFX\javafx-sdk にインストールしています。

    JavaFX の機能は重要だがスクリプト言語は嫌い、という主張には同意できる点もあるのですが、下記の書き方がやたら冗長に感じるのも事実です。

    私としては、Java で過去に実装した資産をうまく再利用するためにこのテクニックを使ってみたいと思います。

    // Java MP3 Player using JavaFX JMC classes 
    // 2009-03-08 by nishimotz@gmail.com
    // based on work of Matt Hicks
    // http://www.matthicks.com/2009/02/i-hate-javafx-i-love-javafx.html
    //
    // Requirements (Eclipse 3.4.1)
    // To avoid 
    //   java.lang.UnsatisfiedLinkError: 
    //   com.sun.media.jmcimpl.plugins.directshow.DShowEngine.ndsInit()
    // add jmc.dll as follows:
    // Java -> Build Path -> User Library
    //   jmc-dll
    //   File : C:\Program Files\JavaFX\javafx-sdk\lib\desktop\jmc.dll
    //   Location : C:/Program Files/JavaFX/javafx-sdk/lib/desktop
    // Notes
    //   javafxgui.jar : for javafx.scene.media.* 
    package test;
    import java.io.IOException;
    import javafx.scene.Scene;
    import javafx.scene.media.Media;
    import javafx.scene.media.MediaPlayer;
    import javafx.scene.media.MediaView;
    import javafx.stage.Stage;
    public class MyMediaPlayer {
    public MyMediaPlayer() throws IOException {
    Media media = new Media(); {
    media.initialize$();
    String mediaUrl = "http://hoge.hoge/hoge.mp3";
    // String mediaUrl = "file:///C:/hoge/hoge.mp3";
    media.$source.set(mediaUrl);
    }
    MediaPlayer mediaPlayer = new MediaPlayer(); {
    mediaPlayer.$media.set(media);
    }
    MediaView mediaView = new MediaView(); {
    mediaView.$mediaPlayer.set(mediaPlayer);
    }
    Scene scene = new Scene(); {
    scene.impl_setWidth(100.0f);
    scene.impl_setHeight(100.0f);
    scene.$content.insert(mediaView);
    }
    Stage stage = new Stage(); {
    stage.$title.set("MyMediaPlayer");
    stage.$scene.set(scene);
    }
    mediaPlayer.play();
    }
    public static void main(String[] args) throws Exception {
    new MyMediaPlayer();
    }
    }
    

    参考までに、上記の元になった JavaFX の実装例はこちら:

    // based on http://gihyo.jp/dev/serial/01/javafx/0010?page=1
    import javafx.stage.Stage;
    import javafx.scene.Scene;
    import javafx.scene.Group;
    import javafx.scene.media.*;
    var mediaUrl:String = "http://hoge.hoge/hoge.mp3";
    var theWidth:Number = 100.0;
    var theHeight:Number = 100.0;
    var media = Media {
    source: mediaUrl
    };
    var mediaPlayer = MediaPlayer {
    media: media
    };
    Stage {
    title: "MP3 Player"
    scene: Scene {
    width: theWidth
    height: theHeight
    content: MediaView {
    mediaPlayer: mediaPlayer
    }
    }
    }
    mediaPlayer.play();