redmineのインストールの続き
redmineのインストールにこんなにてこづるとは思ってなかったw、とはいえやり方さえ間違えなければ簡単なので、備忘録として書いておく。
redmineが対応しているrubyは1.8.7
Lionにプリインストールされているrubyは1.8.7なので、そのままで行けそうな感じだけど、gemのバージョンがredmineが想定しているものより高い為、たくさん警告が出てくる。これを回避するにgemのダウングレードという手があるそうだが、システムインストールされているライブラリのダウングレードはあまりしたくないので却下。
rbenvで別のrubyをインストールしてしまう。
twitterで教えてもらった。自分でぐぐった時にはrvmが見つかったのでこれでいいやと思ってたのだけど、どうやらrbenvの方が良いということらしい。情報も新しい。
ただ、Lionにはreadlineライブラリがないので、適宜homebrewでインストールしておく必要があるのはhomebrewでのrubyインストールもrvmでのも同じこと。
ruby-buildをインストールすると、rbenv installコマンドが使えるようになるということらしいので共にインストール。
$ brew install rbenv $ brew install ruby-build
readlineのインストールも。
$ brew install readline $ brew link readline
[参考]ケーズメモ
rubyのインストール
bash_profileにrbenvを読み込むようにしたら、rubyのインストール。
先にインストールしたreadlineライブラリを読み込むようにパスを指定する。
$ CONFIGURE_OPTS="--with-readline-dir=/usr/local" rbenv install 1.8.7-p352 ||< インストールしたrubyを有効にする。 >|sh| $ rbenv global 1.8.7-p352 $ rbenv rehash
redmineのインストール
redmineではsqlite3を使うことにする。サーバの設定も不要だし、接続設定は不要だし。
redmineをsubversionリポジトリからcheckoutする。
$ cd /usr/local $ svn checkout http://redmine.rubyforge.org/svn/branches/1.2-stable redmine
うちの/usr/localは自分のアカウントが所有者なので、パーミッション気にしないで良いのである。自分しか使わないし、システムにインストールするわけでもないのに管理者権限必要というのもアレだし、かといって毎回インストールパスを指定するのも面倒なのでw
あとは公式サイト等を見ながら、必要なライブラリをインストールしてく。
ちなみに、gemのバージョンは1.6.2がインストールされてた。好都合。
$ gem install rails -v=2.3.11 $ gem install rack -v=1.1.1 $ gem install rake -v=0.8.7 $ gem install sqlite3
最新のバージョンであるrails3系ではredmineが動かないのでライブラリのバージョンには十分注意する。install → 動作確認 → uninstall → install のループはメンドクサイ。
[参考]RedmineInstall - Redmine
database.ymlを作成する。付属のサンプルからsqlite3のところをコピペ。
development: adapter: sqlite3 database: db/test.sqlite3
$ rake generate_session_store $ rake db:create $ rake db:migrate
rakeコマンドを実行するといくつか足りないライブラリあるよと言われるので、それもインストールしてく。
$ gem install i18n -v=0.4.2 $ gem install rubytree $ gem install coderay
以上。
動かしてみる。
動作確認である。
$ cd /usr/local/redmine $ ruby script/server start
thinをインストールしたのであれば、同じディレクトリでthin startすれば動く。僕はthin使うつもりしてる。http://0:3000/へアクセス。
こんな感じでオッケー。
redmineをthinで動かしたいのにgemが見つからぬと言われるorz
なぜだー!!
$ which ruby /usr/bin/ruby $ which gem /usr/bin/gem $ which rails /usr/bin/rails $ rails -v Rails 3.1.1 $ grep RAILS_GEM_VERSION /usr/local/redmine/config/environment.rb #RAILS_GEM_VERSION = '2.3.11' unless defined? RAILS_GEM_VERSION RAILS_GEM_VERSION = '3.1.1' unless defined? RAILS_GEM_VERSION
この状態で、
$ cd /usr/local/redmine $ thin start >> Using rails adapter Missing the Rails 3.1.1 gem. Please `gem install -v=3.1.1 rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.
ruby /usr/local/redmine/script/server start
thin使わなくても↑これでも同じメッセージがでてくる。
/usr/local/redmine/script/about
も同じくorz
rails3系がだめぽい。ので、2.3.52.3.11をインストール中
公式サイトのバージョン情報にあわせてrackも1.1.1に更新、rakeも0.8.7に、、orz
rake _0.8.7_ db:create
したらnilクラスに'[]'なメソッドねーぞって言われた。
gem uninstall覚えたw
あかん、、、
もういい、rubyをhomebrewでインストールしてやりなおそ、、、(え
=> 無事動いたw
[追記]
動いてなかったwww
10進数を2進数に直すなど。
まずは10進数の1桁1桁を分解する方法を考えてみる。
例えば2011を1桁ずつ分解するには、
2011 を10で割って 余り1 201 を10で割って 余り1 20 を10で割って 余り0 2 を10で割って 余り2
以上を逆順に並べて 2, 0, 1, 1 となる。上の桁から取り出すより下の桁から取りだす方が簡単。
同様に2進数の場合も2で割って余りを逆順に並べてみる。
2進数の場合は、余りの計算を 1 との論理積、2で割るのをビットシフトすれば1桁ずつ取り出せる。perlでやるとこんな感じ。
my $n = 2011; my @bin = (); while (0 < $n) { unshift @bin, $n & 0b1; $n = $n >> 1; } print join ',', @bin;
16進数の場合も、0xFとの論理積、4ビットシフトすれば1桁ずつ取り出せる。
my $n = 2011; my @char = [0..9,'A'..'F']; my $result = '' while (0 < $n) { $result = $char[$n & 0xF].$result; $n = $n >> 4; } print join ',', @hex;
16進数は、2進数表現を4桁分をまとめて1文字にすることに等しい。0xFというのは16進数の1桁の最大値2進数の4桁分を1で埋めた数。これと論理積を取ることで16進数下位1桁分の値を取りだすことができる。
同様に8進数は3桁分をまとめて1文字にすることに等しく、2進数3桁分を1で埋めた7と論理積を取ることで8進数下位1桁分の値を取りだすことができる。
0〜9,'A'〜''Z'でやる36進数とかは、剰余を取る方法になってしまうかな。
いじょ。
頭の整理というか、10進数を2進数に変換する方法をぐぐると剰余の方法が書いてあったのでもやっとしてやってみた。
http://vita-home.net/?p=234
perlでやるなら↑こちらのやり方が簡単。
[追記]
手元の環境(OSX 10.7.2)では0x1000000000000000(16桁)と0x10000000000000000(17桁)とを1と論理積とって見たところ、16桁の方は期待通り0になるけど17桁の方は1になった。内部の表現方法が変わってしまう為だと思われる。
ジョブズがなくなった
一つの時代が終わったのだな。
うん。
テスト駆動にも徐々に慣れてきたかな
自分が作成するライブラリはまずModule::Setupで雛形を作って、簡単なテストを作ってから実装するという流れに乗ってきた感じ。
始めから完璧なテストなんて書けないんだから、今実装しようとしている機能のテストからちょっとずつ書いていく。
完璧なソフトウェアが存在しないというのは理解しているのに、完璧なテストを書かなければならないと思い込んでる人が近くに居るので残念。というのは余談。
テストとは関係ないけど最近面白いなと思ってるのは
- no strict "refs"してメソッド生やす系
- 関数リファレンスを引数として受けとる関数をブロック渡しのように使えるように定義
- 配列やハッシュをTieする
なあたり。
頑張ろ。自分が納得できるものを作っていこう。
サポートに電話してみたけど
修理もしくは交換をしてほしいという旨を伝えたのだが、その程度では交換できないということを言われた。しかもこちらの説明をちゃんと理解できない人だったみたいだったし、無線LAN的な使い方はできないのではないですか?今から調べますとか言われ、時間の無駄でしたありがとうと切った。
なお、電話でランプの状態を聞かれたときに「黄色」と答えたら
サポ「黄色はありませんよ」 僕「何色があるんですか?」 サポ「橙色ならあります」
というやりとりがあった。
なんでわざわざ橙色って言いなおさせたのかわからん。
手順書を見ながら話しているような感じで、何度も同じ説明をしなければいけなかったりして、精神的に疲れてしまった。
電話に向かって怒鳴っていたので(怒鳴ったのは初めて)、電話の後腹筋が痛くなっていて自分の情けなさに笑った。