VMWare上のDebianにns-2をインスコするまで。

macVMWare Fusionをインストールして、
Debianを入れ、ns-2をそこに入れたお話。

まずはVMWare Fusionをサイトからダウンロード。
なんかパートナー登録しなきゃいけないみたいなので、登録。

もらったライセンスを使って、30日の期間限定のを入れる。

また、Debianのisoイメージを用意。
Macのほうで仮想ドライブのソフトを知らないので普通にDVDに焼いて使いました。
そいで、VMWare Fusion起動→新規作成→Debianインストール。
特に詰まることなくインストール終了。

それでns-2をインスコしようとしたんだけど、
gccとか入ってないよ!って言われたので

sudo apt-get update
sudo apt-get install build-essential xorg-dev libpcap-dev libtool gcc g++ xgraph

この辺りを入れとくと問題なさそう。

$ wget "http://downloads.sourceforge.net/project/nsnam/allinone/ns-allinone-2.35/ns-allinone-2.35.tar.gz"
$ tar zxvf ns-allinone-2.35.tar.gz
$ cd ns-allinone-2.35
$ ./install

インストールが長い...

終わったら、更に下のディレクトリへ写ってバリデーション。

$ cd ns-2.35
$ ./validate

んで,ホームディレクトリに移って
.bashrcを開いて編集。

# ns-2
export LD_LIBRARY_PATH=/インストールしたディレクトリ/ns-allinone-2.35/lib:${LD_LIBRARY_PATH}
export LD_LIBRARY_PATH=/インストールしたディレクトリ/ns-allinone-2.35/otcl-1.14:${LD_LIBRARY_PATH}
export TCL_LIBRARY=/インストールしたディレクトリ/ns-allinone-2.35/tcl8.5.1-/library:${TCL_LIBRARY}
export PATH=/インストールしたディレクトリ/ns-allinone-2.35/ns-2.35:$PATH
export PATH=/インストールしたディレクトリ/ns-allinone-2.35/nam-1.15:$PATH
export PATH=/インストールしたディレクトリ/ns-allinone-2.35/ns-2.35/bin:$PATH
export PATH=/インストールしたディレクトリ/ns-allinone-2.35/xgraph-12.2:$PATH

を書き込んで保存。

これでnsコマンドで呼び出せていれば問題なし...
これでネットワークシュミレーションができるよ!

macにpython3.2を入れるまで。

mac portsで入れられるらしいので、
pythonを入れる前にportのアップデート。
mac ports入れてない人はインストールしてくださいな。
これを書いた時点では、2.0.4が最新でした。

そのあと、

$ sudo port install python32<<
これを打つと最後のメッセージに

To make python 3.2 the default (i.e. the version you get when you run
'python'), please run:
sudo port select --set python python32

と出てくるので

sudo port select --set python python32

ってやってやればいいかと思ったら、
まだ元のバージョンから変えられないのでアレ?ってなってるところ。
ある記事によると、再起動すればいけるらしいが...

2012/4/17 追記

sudo port select python python32

でいけるみたいです。
コメントをくれたjeeさんありがとうございます!

RailsでTwitterBootstrapを使うまで。

TwitterBootStrapを使ってデザインを楽チンにしようと考えたんですが、
rails用のgemがあるらしいということで導入してみた。

railsアプリのGemfileに

gem 'twitter-bootstrap-rails'

を書きこんで

$ bundle install
$ rails g bootstrap:install

すればいいって書いてあったけど、動かなかったのでとりあえず、

$ gem install twitter-bootstrap-rails

を事前に打っておいたら動いたのだった... これって常識なのかしら?

レイアウト生成は、

$ rails g bootstrap:layout 名前

でサクッとできた。ちょっと感動...
あとは自分でごりっと書き換えればいいのかしら?

参考にしたのはこちら。
いろいろ詳しく書いてあるので読んでみればいいと思います!
Twitter bootstrap on rails

rails on apache

Railsアプリをapacheで動かした時に自動的にproductionモードになるので、それを防ぐときは
httpd.confに

RailsEnv development

を書き加えればいいらしい。

んで、apaceh上で動かした時になぜかエラー吐くので調べていった結果、
JavaScriptRunTimeが必要だったぽい。
ruby on rails 3.1 - ExecJS and could not find a JavaScript runtime - Stack Overflow
↑によるとexecjsとtherubytracerが必要らしい...

これをGemfileに書き込む

gem 'execjs'
gem 'therubyracer'

しかし動かない...と思ったら、これらをgemでinstallしてないだけでした☆(ゝω・)vキャピ

$gem install execjs
$gem install therubytracer

をしておきましょう(`・ω・´)

 git pushしたときにハマったことメモ

まず、git push originしたときにうまく動いてくれなかったので、
サーバ側の設定を書き換え。

git config --add receive.denyCurrentBranch ignore

そしてpushしたものの、サーバ側のファイルに反映されない...
ので、

git reset --hard

したら反映された。
ただ、このコマンドよくわかってないので危険かも?

httpのステータスコード

Rubyでhttpリクエスト送って返ってくるレスポンスのステータスコード


response.codeで得られるらしい。

response = http.get("http://peropero.com")
puts response.code

ちなみにステータスコードはStringクラスなので比較するときは注意

TwitterのOauth認証のスクリプト【Ruby】

ざっくりとはこんな感じ。
多分通るはず...

require 'rubygems'
require 'oauth'

#require 'oauth-patch' #Rubyが1.9以上の人

#以下2つを書き換え
CONSUMER_KEY = "自分のを入れてね☆彡"
CONSUMER_SECRET = "自分のを入れてね☆彡"

#コンシューマとしてアクセス
consumer = OAuth::Consumer.new(
CONSUMER_KEY,
CONSUMER_SECRET,
{:site => 'http://api.twitter.com',
:request_token_path => '/oauth/request_token',
:authorize_path => '/oauth/authorize',
:access_token_path => '/oauth/access_token'}
)

#コンシューマ・トークンを取得
#「:oauth_callback=>"oob"」=「コールバックは使わない」
request_token = consumer.get_request_token(:oauth_callback => "http://dev.ash1taka.com/authentication.rb")
request_token.each{ |key, value|
puts key +"=" +value
}

#URLにアクセス
system('open', request_token.authorize_url )
#puts "Access this URL and approve => #{request_token.authorize_url}"

#認証コードを入力
print "Input OAuth Verifier: "
oauth_verifier = gets.chomp.strip

#アクセス・トークンを取得
access_token = request_token.get_access_token(
:oauth_verifier => oauth_verifier
)

puts "Access token: #{access_token.token}"
puts "Access token secret: #{access_token.secret}"