ruby/railsでオフライン環境を整える
開発効率をあげるにはやはり誘惑の多い家や割り込みの多い職場を出てオフラインで缶詰になるのが一番。
オフライン環境を整えてみました。
メール、IM、BTSなどの誘惑を断つ
メールやIMはまだしも、近頃はタスク管理のはずのRedmineですら、短期的な集中の妨げになってしまいます。
当面の作業だけをテキストファイルに書いて出かけましょう。
ローカルマニュアルの整備
Ruby
日本語マニュアルが良い場合は、ruby-man-ja-html-20080121.tar.bz2 これを落としてくれば最低限安心です。(僕も日本語マニュアルをずっと参照していたのでコレが楽。)
rubygems
gem serverを自動起動する設定をすればいいんですが、普段apache+passengerなのでそれで閲覧するように設定しました。
sudo gem install sinatra
cd ~/Sites
git clone git://github.com/jseifer/sinatra-rubygems.git
sudo vi /etc/hosts
127.0.0.1 gems
sudo vi /opt/local/apache2/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
ServerName gems
DocumentRoot "/Users/komagata/Sites/sinatra-rubygems/public"
ErrorLog "logs/sinatra-rubygems-error_log"
CustomLog "logs/sinatra-rubygems-access_log" common
</VirtualHost>
sinatra-rubygemsというのが、要はsinatraを使ったgem serverですね。
macの人はPassenger Preference Paneを使うと設定がわかいくなります。
デフォルトのrdoc。
ちょっと見辛いのでデフォルトで入っているフォーマットのdarkfishにしてみると、
vi ~/.gemrc
rdoc: --inline-source --line-numbers --format=darkfish
sudo gem rdoc --all --no-ri
ちょっと暗めです。
sudo gem install mislav-hanna
vi ~/.gemrc
rdoc: --inline-source --line-numbers --format=html --template=hanna
sudo gem rdoc --all --no-ri
hannaというテンプレにすると見慣れた感じのになります。
インクリメンタル検索もできるし、とりあえずはこれでいいかも。
sdocというやつがもっと素敵なformat(—format=shtml)ですが、rdoc 2.4.x系の問題か分かりませんが、gem rdoc—allが効かないのでインストール済gemのrdocを一度に変える事ができなくて面倒でした。(素敵なやり方があったら教えて頂けるとうれしいです。)
rails(+α)
railsapi.com の詰め合わせがとても便利。
rubyのマニュアルも英語でよければこっちの方が検索はし易くて嬉しい。
TODOとマニュアルさえあれば、後はカバレッジ率を増やすなり、リファクタリングしまくるなり、レッツ缶詰!
CableBoxをディスプレイ台にして縦置き
しばらくやってみたんですが、外部ディスプレイは台を置いて縦配置が快適でよかったです。(ノート閉じて外部キーボード派の方や複数台のディスプレイを使う方にはあんまり快適じゃないかも)
Blue Lounge CableBoxというやつは基本、電源タップを隠す箱なんですが、高さが絶妙にディスプレイ台に向いてました。
23インチぐらいまでのディスプレイなら乗ると思います。
アームほどイカツくしたくない場合オススメです!
![]() |
|
GX200の自動開閉式レンズキャップが便利
GX200カワユスなー(そろそろ皆さんムカついてる頃と存じます)
オプションのレンズキャップだと電源を入れると、、、
勝手に開いて楽!
スペックとかは詳しく無いので、この写真撮った携帯カメラより良いとしかわかりませんが楽し。
![]() |
|
![]() |
|
二大誕生祭
6月30日といえばもちろん、machidaさんとイングヴェイの誕生日ですよね?
machidaさんは嫌がるのですが、大事な事なので二度言っておきます。
6月30日はmachidaさんとイングヴェイの誕生日です。
RANJIN三国志呂布異聞の2,3,4巻(1巻はどっかいった)と、シャンパンを贈りました。
(三国志なのに主人公以外、基本、関羽しか出てこないスゴイ漫画です。)
本当はギターを勝手にスキャロップにしてサプライズをプレゼントしたいところですが、machidaさんが確実にブチ切れると思うので断念しました。
パソコンのある場所
アクトインディの机。すぐ横にサーバー。
フィヨルドのテーブル。二代目追悼で初代タイガーマスクブーム。
フィヨルド仕事机。普段は何も無いこっちの机でヒィヒィ言いながらコードを書く。(飲み物は水)
今日病院に行ったら、
「眠れないのはパソコンの見過ぎ」
と言われました。そんなこと言っても・・・ねぇ。
HABTMのCheckbox
HABTMのupdateは面倒だ。
でも http://wiki.rubyonrails.com/rails/pages/CheckboxHABTM ここに詳しく載ってた。(と思ったらリンク先無くなってますね)
<% Group.find(:all).each do |g| %>
<%= check_box_tag "user[group_ids][]",
g.id, @user.groups.include?(g)) %> <%= g.name %>
<% end %>
こんな感じで書いて、controllerのupdateに
@user.groups.clear if !params['user']['group_ids']
こう書いておけばチェック外したらちゃんと消える。
中間テーブルにidがあると変なidが勝手に入るし、Duplicate Entryになる。create時にidがつかないようにしとく。
create_table(:groups_users, :id => false) do |t|
・・・
end
昔ハマったはずなのにまたハマった。鳥頭・・・。
ヘルパー
普段どうやってるかというと、こういうヘルパーを使っています。
def habtm_check_box(object, method, target_method, options = {})
id = object.class.name.underscore
items = method.to_s.camelize.constantize
items.all.map do |item|
label_tag("#{id}_#{method}_#{item.id}",
check_box_tag("#{id}[#{method}_ids][]",
item.id,
object.send(method.to_s.pluralize).include?(item),
:id => "#{id}_#{method}_#{item.id}")+' '+h(item.send(target_method)),
:class => 'checkbox')+"\n"
end.join
end
でgrave(お墓)が複数のcharacter(特徴)を持つ場合、
<%= habtm_check_box @grave, :character, :name %>
みたいな感じで使います。
銀王様・・・っっっ!?
AppStoreは、アメリカ的な競争原理でできている – Keep Crazy;shi3zの日記Appleはこのゲームの「親」である。
「親」の概念をもったゲームは数多い。
「親」の方が有利になるようになっている。
ふつうのゲームでは親が変わるが、このゲームでは変わらない。
親というよりも胴元に近い。
JRAに勝とうと思って馬券を買う人は居ないだろう。
つまり、胴元に勝つことを前提に戦略を組み立てることはできない。
最近、銀と金読んだので刺さった。
銀と金では、
「どう見ても狂気の沙汰」
と言い切ってる。
結局胴元と勝負するんだけど、1対1のサシウマにしたり、いくつものルール変更を了承させた上で勝負する。
みんなで銀と金の続編が
「iPhoneアプリ勝負編」
だったとしたらどういうストーリーになるか考えよーぜ!
![]() |
|
スペイシーズ訪問
1Uサーバーの抜け殻・・・。
id:dandasoの机。Dellの19inch dualにHHK Pro(墨/無刻印)。
HadoopにRailsにc++。質実剛健って感じです。
javaのデプロイのためのcapistranoレシピを要求されました。
「ant使え!」
スペイシーズではインフラエンジニアを募集してるそうです。1U10台買っ(て組み立てた)ばっかなのでもりもりサーバー作れると思います。
こちら(komagata@gmail.com)まで。


























駒形真幸(komagata)