2012年3月5日月曜日

rvmで複数のバージョンのRubyとRailsを混在させるまで

Okinawa.rbに参加するべく、色々調べた。
[rvm]というもので、Rubyのバージョンを複数混在できる。
さらにさらに、1つのRubyのバージョンに複数のバージョンのRailsも混在できるらしい。

rvmは既にインストールしていたので、省略。(ログ残しとけば良かったorz)

rubyのバージョンを変えるには
->1.8.7へ
>rvm 1.8.7

->1.9.2へ
>rvm 1.9.2
まぁなんて簡単♪

rvmで管理していない状態に戻すには

>rvm system



楽するために
>rvm --default 1.9.2

完全に元に戻すには
>rvm reset



------------< gemset >
rubyのバージョンが変わると、gemも切り替わってる(※gem env や gem list で違いを確認可能)
しかし、1つのRubyのバージョンには1つのgem環境。
rvmでgemの環境も複数管理できるっぽい
gemsetというもので集合を扱っている。
>rvm 1.9.2
>rvm gemset list

gemsets for ruby-1.9.2-p290 (found in /Users/kanpe777/.rvm/gems/ruby-1.9.2-p290)
   global

しょっぱなではglobalというgemsetがあるだけ
新しいgem環境を作ってみる
>rvm gemset create test
'test' gemset created (/Users/kanpe777/.rvm/gems/ruby-1.9.2-p290@test).

確認
>rvm gemset list

gemsets for ruby-1.9.2-p290 (found in /Users/kanpe777/.rvm/gems/ruby-1.9.2-p290)
   global
   test

消す
>rvm gemset delete test

Are you SURE you wish to remove the entire gemset directory 'test' (/Users/kanpe777/.rvm/gems/ruby-1.9.2-p290@test)?
(anything other than 'yes' will cancel) >

確認してくるので、yesを打ち込み、Enter
複数のRailsのバージョン用のgem環境を作成

>rvm gemset create rails30
>rvm gemset create rails31
>rvm gemset create rails32


gem環境を切り替える

>rvm gemset use rails30

もっと簡単に
>rvm 1.9.2@rails30


確認

>rvm gemset list


   global
=> rails30
   rails31
   rails32



railsのインストール前にsqlite3のインストール

>gem install sqlite3-ruby
>gem install sqlite3


そして、railsの3.0をインストール
バージョンを指定しなければならない

>gem install -v=3.0.5 rails


少し時間がかかる

次にgem環境を変え、rails3.1をインストール
>rvm 1.9.2@rails31


やることは一緒、railsのバージョンが異なるくらい

>gem install sqlite3-ruby
>gem install sqlite3
>gem install -v=3.1.1 rails


似たようなことを1.9.2@rails32にも....これ書いた時の最新railsのバージョンは 3.2.2であった。
終わったら、
>rvm 1.8.7


そして、同じようにgemset createをする
(rvm gemset listするとわかるが、1.8.7に変えるとgemsetの中身も変わっていることが確認できる)
そして同じようなことをすると出来上がり。
今後、rubyの1.8.7でrailsを使わないと判断したので、入れない。
一応入れると以下のようなことが予想される

  • rvm 1.8.7@rails30 -> rails 3.0
  •                @rails31 -> rails 3.1
  •                @rails32 -> rails 3.2
  • rvm 1.9.2@rails30 -> rails 3.0
  •                 @rails31 -> rails 3.1
  •                 @rails32 -> rails 3.2

2011年12月9日金曜日

github_masterをpush

githubのアカウントを登録をした。
忘れるからメモ

まずリポジトリを作成(New repositoryボタンをクリック)

そうすると、、、以下のような画面に遷移
Project Name と Description書いて
Create Repositoryをクリック(HERE!!って遊びで書いといた)
すると、
たしかSSHのやつをcloneしてもいけるんじゃね?


masterとして送る方法(多分公開keyと秘密鍵が必要?)
チュートリアルから
ローカルにて
>mkdir Hello-World
>cd Hello-World
>git init
>touch README
>git add README
>git commit -m 'first commit'
>git remote add origin git@github.com:自分のアカウント名/Hello-World.git
>git push origin master
これでさっきリポジトリを作成したページを更新するとできてた。


2011年12月7日水曜日

rails 3.1.1 をmac lion にインストール

前回 ruby 1.9 を入れた

>ruby -v
ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11]


こんなのでる。

次にgemのリストを見る

>gem list
~
rails (3.1.3, 3.1.1)
~


いろいろ失敗して3.1.3とか中途半端に入っていて、かつ3.1.1も失敗していた。
最初からやるために一度アンインストールしとく

>sudo gem uninstall rails

Select gem to uninstall:
 1. rails-3.1.1
 2. rails-3.1.3
 3. All versions
> 3
Successfully uninstalled rails-3.1.1
Remove executables:
rails

in addition to the gem? [Yn]  y
Removing rails
Successfully uninstalled rails-3.1.3

アンインストール成功したっぽい
確認はもっかいアンインストールしようとするか、「>gem list installed」とかで確認できる。
やっとgemでrails -v 3.1.1をインストール
しかし、このままでは"lib" notfound的なエラーが.....
下記を実行
>sudo gem install rdoc

Fetching: rdoc-3.11.gem (100%)
Depending on your version of ruby, you may need to install ruby rdoc/ri data:

<= 1.8.6 : unsupported
 = 1.8.7 : gem install rdoc-data; rdoc-data --install
 = 1.9.1 : gem install rdoc-data; rdoc-data --install
>= 1.9.2 : nothing to do! Yay!
Successfully installed rdoc-3.11
1 gem installed
Installing ri documentation for rdoc-3.11...
Installing RDoc documentation for rdoc-3.11...

これが今まで失敗していた原因だったぽい

>sudo gem install rails -v 3.1.1

次に確認として、railsで何かしらのプロジェクトを作成
そしてサーバーを立ち上げる
>rails new hoge
成功したら
>cd hoge
>rails server

=> Booting WEBrick
=> Rails 3.1.1 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
成功
テキトーにブラウザ開いて
http://localhost:3000
を開く。
確認done


===余談

次にお決まりのMacportのselfupdate

>sudo port selfupdate
ちょっとこれ毎回しんどい。cronで常にupdateをかけようか迷うレベル
portは無理やり .zshrc の環境変数に
>vi .zshrc

export PATH=/opt/local/bin:/opt/local/sbin:$PATH
export MANPATH=/opt/local/share/man:/opt/local/man:$MANPATH
これらを入れないといけない。こんなふうに無理やりパスを通すと、いろいろ不具合が出るのかね?(出るらしい)
portではなく、これから homebrew にしようか迷う
これは保留



2011年12月4日日曜日

gdbメモ

授業で
LLVMのソースを読むことをした。
その際にgdbを使い、ソース読み。

gdbを実行する前に、コンパイルする際に-vをつけると情報いっぱい。

(gdb)>b 関数

b= (breakpoint)
で run した時、止める

(gdb)>s
で関数に潜ったりする。

(gdb)>fin
finishでsから一回分抜け出す。

(gdb)>n
nextで次の命令へ飛ぶ

(gdb)>where
関数がスタックに積まれている様子を見ることができる

(gdb)>l
今いるソースを(10行)表示

2011年11月30日水曜日

Mario AI Competitionにて、プログラムからMarioを動かす in 2009

何度も右往左往

2009ver -> 2011ver -> 2009ver(今ここ)

とりあえず、参考サイト通りの動きができた

参照したのは、

> /src/ch/idsia/ai/agents/ai

以下にある
ForwardAgent.java
これと参考サイト様を見ながらやっていく。以下のようなソースを作成。
> /src/ch/idsia/ai/agents/ai/KanpeAgent.java



package ch.idsia.ai.agents.ai;

import ch.idsia.ai.agents.Agent;
import ch.idsia.mario.engine.sprites.Mario;
import ch.idsia.mario.environments.Environment;
import ch.idsia.utils.MathX;

/*
*By Kanpe777
*/


public class KanpeAgent extends BasicAIAgent implements Agent
{
private int trueJumpCounter = 0;

    public KanpeAgent()
    {
        super("KanpeAgent");
        reset();
    }

    public boolean[] getAction(Environment observation)
    {
if (trueJumpCounter > 16) {
                trueJumpCounter = 0;
                action[Mario.KEY_JUMP] = false;
            } else {
                trueJumpCounter++;
                action[Mario.KEY_JUMP] = true;
            }

        action[Mario.KEY_RIGHT] = true;

return action;
    }
}

このファイルを作成して、AIMarioのトップディレクトリにて
>ant
コマンドを実行、BUILD SUCCESSFULがでるはず
>cd classes
にて、
>java  java ch.idsia.scenarios.Play ch.idsia.ai.agents.ai.KanpeAgent
これで定期的にジャンプをするMarioができる。

これをGAでやるため、メタプログラミングをするか迷ったが、既に学習プログラムがある。
もともとに入っている。
次は、NNで学習しているソースを読みたいと思う。



2011年11月28日月曜日

LLVM3.0のビルド_Lion

ちょっくらソースを読むためにビルド

まずダウンロードとかしたいが、公式ページによると2.9まではダウンロードできるが
3.0はsvnじゃないと無理とかorz

mkdir とかでとりあえず、svnで落としてくるようのディレクトリ作成。
>mkdir ~/llvm

作成したディレクトリのsvnでおとす
>svn co http://llvm.org/svn/llvm-project/llvm/trunk ~/llvm
>mkdir ~/myllvm
>cd ~/myllvm
>~/llvm/configure --disable-optimized --enable-assertions --enable-debug-runtime --enable-debug-symbols
そうするとmakeファイルができる。
>ls

Makefile         config.log       include/         runtime/         utils/
Makefile.common  config.status*   lib/             test/
Makefile.config  docs/            llvm.spec        tools/
bindings/        examples/        projects/        unittests/

以前gccをビルドする際に、フツーにmakeをすると、6h以上かかってしまったので.....
パラレルビルドをしてやります。
make j○<-数字
My Mac はcoreは2個なので2にしてやりました。
1h以内でおわったはず
>make -j 2
でやりました。
jの後に引数を渡さないと、やりすぎとあるので気をつける。
※j の後の引数はコア数*1~2がいいとのこと

んで、make終了。

2011年11月15日火曜日

Rubyのバージョンを上げる

色々苦戦したので載せる

MacにはデフォルトでRubyが入っている。

>ruby -v
ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-darwin11]

Ruby on Railsの環境構築のサイトは結構あるが、Rubyのバージョンアップはなかなかしんどい。
っていってもやることは、MacPortsのバージョンアップをして、installをやればok。

MacPortsのバージョンアップ
>sudo port selfupdate

Ruby1.9のインストール
>port search ruby
ruby19 @1.9.xがあるはず

インストールする
>sudo ports install ruby19 +nosuffix
これで、ruby19としてではなく、rubyとして登録できる。

>ruby -v
ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11]
done

参考にさせてもらいました。