メタプログラミング Ruby 2日目 間違い箇所?
久しぶりのエントリ.
最近はRubyの魔術書「メタプログラミングRuby」をじっくりと楽しんでます.
プログラミング言語の本にしては平易に書かれていてとても読みやすい文章ですよ!
- 作者: Paolo Perrotta,角征典
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2010/08/28
- メディア: 大型本
- 購入: 18人 クリック: 533回
- この商品を含むブログ (112件) を見る
一通りじっくり読み終わったので、
実際にコードを書いていたところ、2日目のブランクスレートのところでwarning発生.
バージョンは
ruby 1.9.2p0 (2010-08-18 revision 29036) [i386-darwin9.8.0]
で試しています.
methods/computer/blank.rb
class Computer instance_methods.each do |m| undef_method m unless m.to_s =~ /^__|method_missing|respond_to?/ end ....
warning: undefining `object_id' may cause serious problems
なんて記事*1があるので、
1.9.2では出てくるwarningなんでしょうね*2.
とりあえず下のようにobject_idもundef_methodの対象外としてwarningを回避しておきました.
正規表現部分が長いのでmatcherを切り出した方が良さげ.
class Computer instance_methods.each do |m| undef_method m unless m.to_s =~ /^__|object_id|method_missing|respond_to?/ end
Python2.5環境をLeopardに整える - 初めてのコンピュータサイエンス -
id:hyukix (@hyukix) のつぶやきが発端で、
定期的にアルゴリズムの復習をしておきたいなーという思いと
普段使ってない言語を書いてみたいなーと言う思いが勢いあまり、
「初めてのコンピュータサイエンス」
- 作者: Jennifer Campbell,Paul Gries,Jason Montojo,Greg Wilson,長尾高弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2010/07/23
- メディア: 大型本
- 購入: 4人 クリック: 376回
- この商品を含むブログ (20件) を見る
という本を買ってみました。
どうやら初学者向けの大学講義用のテキストのようで、
Pythonでアルゴリズムを勉強してみよー!という趣旨のようです。
で、ぱらぱらとめくってみると、
本で使うライブラリとコードはダウンロードしてきてね!
とあったので早速ダウンロード。
http://www.pragprog.com/titles/gwpy/practical-programing/
インストールを試みたところ、ライブラリ類のインストールで
Pythonのバージョンがあっていないと怒られてしまいました。
# Python2.5.1がデフォルトの環境なのにっ!
よくよくファイルを確認すると相当古いバージョンのライブラリ*1らしいので、
MacPortsで揃えることにしました。
readline
タイムリーなことに、id:plasticscafe (@plasticscafe ) が
Macのreadlineはクソ!とつぶやいていたので、環境を確認。
Rubyの環境を整える際にMacPortsで導入していました。>> 過去のエントリ
Python関係のインストール
Python2.5環境と、本で使う環境をMacportsで入れてしまいます*2。
$ sudo port -d install python25 $ sudo port install python_select $ sudo port -d install py25-pyobjc $ sudo port -d install py25-numpy $ sudo port -d install py25-nose $ sudo port -d install py25-game $ sudo port -d install py25-setuptools $ sudo port install py25-pil $ sudo -d port install py25-hashlib
その後Python2.5の導入状況を確認、バージョンの切り替え。
$ python_select -l $ sudo python_select python25
これで環境整った!と思いきや、pythonのパスがMacデフォルトの/usr/bin/pythonのまま。
2.5.1(デフォルト)と2.5.4(Macports)とでは、python_select で切り替えられないようですね。
この辺、使い慣れていない言語だと機微が分からず不便だなと思ってしまいます。
気を取り直して、/usr/bin/pythonのリンク元を切り替えることにしました。
$ sudo mv /usr/bin/python /usr/bin/python-leopard $ sudo mv /usr/bin/python-config /usr/bin/python-config-leopard $ sudo ln -s /opt/local/bin/python2.5 /usr/bin/python $ sudo ln -s /opt/local/bin/python-config /usr/bin/python-config
対話モードで試してみると、無事Python2.5.4を確認できて、
導入したライブラリをimport出来たので良しとします!
redmineにプラグインを追加してみよう
redmineを使うようになって1年ほど経ち、
チケットを消化する小気味よさになれてきたなぁと思いつつも
工数管理の面で物足りなさを感じるようになってきたこの頃。
前回まででredmineのバージョンをあげたのを契機に、プラグインを追加してみることにしました。
追加してみたのは以下の二つ。
Kosu
Kosuは、1日ごとに各チケットにかけた時間を記録できるプラグインです。
これまではチケット一つ一つに概算時間を追加していましたが、
一日の作業を一画面で記録できるので便利。
特定の日を休日設定できるのも何気に便利ですよ!
インストールはいたって簡単。
ダウンロードしたファイルを解凍、migrateするだけです。
$ cd ~/redmine/vendor/plugins/ # ここは環境に合わせて $ wget http://kusu.googlecode.com/files/redmine_work_time-0.0.60.tar.gz $ tar xzvf redmine_work_time-0.0.60.tar.gz $ cd ~/redmine $ rake db:migrate_plugins RAILS_ENV=production
導入できたら、各プロジェクトの設定画面のモジュールタブにある「Work time」にチェックすれば使い始められます。
# これまでに記録していた作業時間も見ることができます。
PluginChart
バーンダウンチャートや記録時間、チケットを状態毎に集計した割合など
複数のグラフを表示してくれる優れものプラグインです。
先に導入したKosuで毎日の記録をとっておけば、
比較的楽に進捗管理が出きるようになりますね*1。
このプラグインはOpenFlashChartに依存しているので、先にこのプラグインを取り込んでおきます*2。
$ cd ~/redmine
$ ruby ./script/plugin install git://github.com/pullmonkey/open_flash_chart.git
続いてPluginChartをgit cloneで取得*3、migrateします。
$ git clone git://github.com/mszczytowski/redmine_charts.git vendor/plugins/redmine_charts
$ rake db:migrate_plugins RAILS_ENV=production
あとはredmine(webサーバ)を再起動して、
Kosuの時と同様にプロジェクトの設定でChartsモジュールにチェックを入れることで使えるようになります。
まとめ
この二つのプラグイン導入で、胡散臭い進捗や入力自体が怪しい時間経過ともおさらば!(できるといいな)
Ubuntu 10.4 でredmine その2 - git編 -
前回に続いてredmineとGitを連動させようと思った時に
気をつけておきたいことがあったのでメモを残しておきます*1。
参照するリポジトリ
(追記)情報源があやふやなので未確定なお話です
Gitのリポジトリをredminで参照するには以下の条件があります。
- ローカルのファイルパス上にある
- bareであること(ワーキングコピーではないこと)*2
この条件をふまえて、
自分の場合はbareのリポジトリをDropbox上において、
他のPCで作業した時にもpushできる中央リポジトリを用意しました。
$ cd ~/Dropbox $ mkdir proj && cd proj $ git init --bare $ cd /path/to/working $ git remote add dropbox ~/Dropbox/proj $ git push dropbox master
あとはこのDropbox上のリポジトリをredmineで設定すれば完了です。
SCM: Git Path /home/hogehoge/Dropbox/proj
参考
Ubuntu 10.4 でredmine その1 - rails導入編 -
ピッケル本1.9の読み進めは遅々としてなかなか進んでいないので
エントリはひとやすみ。下書き進行で書きたまった頃に公開するとします。
閑話休題
redmineが0.9.6にバージョンアップしていたので、
これを契機にお勉強用PCでの進捗記録をredmineで取ろう!
と、思い立ったので導入記録を残しておきます*1。
環境
とりあえず webサーバはWebrick、DBはsqlite3としておきます。
また、一人で使うのでメール送信設定は省略します。
環境整備
Sqlite3
apt経由でパッケージインストールしておきます。
$ sudo apt-get install libsqlite3-dev sqlite3 swig
rubygems
redmine稼働に必要なgemを追加しておきます。
バージョンの要件は下記URLを参考にしています。
http://www.redmine.org/wiki/redmine/RedmineInstall
$ gem install rack -v=1.0.1 $ gem install rails -v=2.3.5 --include-dependencies $ gem install sqlite3-ruby $ gem install rmagick # ImageMagickをインストール済みであれば任意で。
redmineの設定
ダウンロード
下記を参考にgithubから取得しました。
運用は$HOME 以下を想定しています。
http://www.redmine.org/wiki/redmine/Download
$ cd $ git clone git://github.com/edavis10/redmine.git
データベース設定
sqlite3への接続のための設定ファイルを用意しておきます。
データベースのファイルは~/redmine/db/redmine.db としました*2。
$ cd ~/redmine $ cp config/database.yml.example config/database.yml $ vi confing/database.yml production: adapter: sqlite3 dbfile: db/redmine.db timeout: 5000
データ用意
セッションキーやデータベーステーブルを用意しておきます。
$ rake generate_session_store $ rake db:migrate RAILS_ENV=production $ rake redmine:load_default_data RAILS_ENV=production
エラーログ設定
設定説明に「強くお勧め」とあったので、ログ用にディレクトリのパーミッションを変更しておきます。
$ chmod -R 755 files log tmp public/plugin_assets
redmine 起動
ここまでエラーが無ければ、webrickでredmineを稼働できる状態です。
$ ruby script/server -e production
にアクセスして ユーザ/パスワードがadmin/admin でログインチェックして終了です。
参考
Ubuntu 10.4 でredmine その3 - nginx編 -
Ubuntuにredmineを導入した最終回の内容はウェブサーバ nginxです。
これまでの関連エントリ
Apache + passengerでredmineを動かしても良かったのですが、
これまたもののついででnginx + passengerを試してみようと思って設定してみました。
前提
- rvm で導入したree-1.8.7 (ユーザローカルで稼働中)
- sslは特に気にしない(ローカルに限られるので)
passenger インストール
必要なパッケージをaptで追加しておき、
rubygemsを使ってpassengerをインストールします。
$ sudo apt-get install libpcre3 libpcre3-dev libpcrecpp0 $ gem install passenger
nginxインストール
aptで取得できるnginxはpassengerをモジュールで動かせないようなので、
ソースからコンパイルするためにpassenger-install-nginx-moduleを使います。
$ passenger-install-nginx-module
幾つか選択肢を選んだ後、FTPでnginxを取得、コンパイルが自動で行われます。
設定ファイル
設定ファイルは必要最小限の追記でおさえています。
最低限rootと、passenger_enabledを追記すればOKのようです。
sudo vi /opt/nginx/conf/nginx.conf
... pid /var/run/nginx.pid; #=> コメントアウト外す ... server { # 他のウェブサーバを用意しないのでlocalhost:80で運用 listen 80; server_name: localhost .... location / { index index.html index.htm; # redmine のインストール先を指定 # railsアプリは "public" までをパス設定する root: /home/hogehoge/redmine/public/ # passengerを使う場合に必ず指定する passenger_enabled on; } ... } ....
起動スクリプトの作成
/etc/init.d/nginx として起動用スクリプトを用意します。
内容は下記参照からコピー&ペーストします。
$ sudo vi /etc/init.d/nginx $ sudo chmod a+x /etc/init.d/nginx
このスクリプトに問題が無ければ、nginx起動後に
http://localhost/ でredmine を利用することができます。
起動状況を確認後、
$ sudo /usr/sbin/update-rc.d -f nginx defaults
とすると、OS起動時にnginxも起動することができます。
参考
- http://www.hackido.com/2009/04/install-ruby-rails-on-ubuntu-904-jaunty.html
- http://blog.udzura.jp/2010/07/06/passenger-install-nginx-module-on-ubuntu/
- http://blog.netblue.jp/2010/03/11/nginx-install-on-ubuntu-9-10/
- http://yamamotodaisaku.com/2010/03/17/ubuntu%E3%81%A7ruby-enterprise-edition%E3%80%81nginx%E3%80%81passenger%E3%82%92%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97/
- http://programmingzen.com/2009/11/20/setup-ruby-enterprise-edition-nginx-and-passenger-aka-mod_rails-on-ubuntu/