« 2011年7月 | トップページ | 2011年9月 »

2011年8月31日 (水)

[Ruby] Ruby on Rails と AWDwR 4th Ed. の新バージョン

Ruby on Rails 3.1.0 がリリースされた(ruby-talk:387190)。


そして、AWDwR 4th Ed. もアップデート。
もちろん、Rails 3.1 対応。
この対応の素早さとアップデート直後に入手できるスピード感は、電子書籍ならではのもの
(もちろん、ちゃんと事前に準備しておかないと電子書籍でもこうはいかないだろうけど)。


Preface to the Rails 3.1 Version of This Book が追加されており、その冒頭で


This book is written for Rails 3.1.

とはっきり書いてあります。
ページ数もちょっと増えてます。

| | コメント (0) | トラックバック (0)

2011年8月27日 (土)

[本] 期待通りのワクワク感が楽しめ、期待を裏切る結末が待ち受けていたミステリ

『緑ヶ丘小学校大運動会』。 このタイトルからして小学校が舞台になっていることはわかる。 あらすじを読んだ時点で主人公の一人は小学生のマサルであることもわかる。 これはもう期待するしかない。 ミステリー・ランドのような子供向けでありながら大人も十分楽しめるミステリー小説を。 あるいは米澤穂信の古典部シリーズの『クドリャフカの順番』にある料理対決のワクワクしたサイドストーリーを。

かなり期待しながら読んだのであるが、これが面白い。 飽きさせない。 舞台は緑ヶ丘小学校。運動会当日。 小学校6年生のマサルが優勝杯の中から偶然見つけた薬の入ったビーズの箱。 なぜそんなところから薬の箱が見つかったのか名(迷)推理を披露するマサルの同級生ヒロシ。 運動会の真っ最中に殺人事件の証拠かも知れない薬の箱を大人達に見つからないように、どこに隠すか知恵を絞るイッキやカオル。 終盤まで一気読みしてしまった。期待通りである。

ワクワクする展開は期待通りだったので、実は、××だったという甘っちょろいエンディングを期待していたのだが、 最後の最後に明かされる真相は実に凝っている。いい意味で期待を裏切るエンディング。 さすがに時代謀略ミステリ小説を書く作者だけのことはある。

だが、残念なことにその真相の後味が悪いのである。 現実はそんなに甘っちょろいものじゃないかも知れないけど、せめて小説の中だけでも、もうちょっと後味の良いミステリーにしてほしかった。

| | コメント (0) | トラックバック (0)

2011年8月21日 (日)

[Ruby] rails.vim と project.vim と NERD tree

githubのrails.vimからダウンロードしてインストールしたら


 :Rproject

コマンドが無くなっていた。


rails.vim のソースをvimのサイトのrails.vimの4.3
比較して調べてみたら、:Rproject コマンドを設定するコードが無くなっていた。


ソースを見る限り、NERD Treeを利用しているみたいなので、
NERD Tree をインストールした。


 :NERDTree

コマンドでいい感じにツリーが表示された。


古いvimのサイトのrails.vimの4.3でも最初に確認するのは
NERDTree コマンドで、それが無いときに、Project を確認するようになっていた。


というか、vimのサイトのrails.vimの4.0のリリースノートに


 :Rtree spawns NERDTree. :Rproject is deprecated. 

と書いてあるじゃん。


project.vim に拘りはないので、NERD Tree に移行。

| | コメント (0) | トラックバック (0)

[日記] 番餅

饅頭よりも大福餅の方が好きなので、敬遠していたのだけど、前から気になっていたお菓子。


直方体型の月餅とでもいうような中華菓子(月餅を食べたことがない(と思う)のでよくわからないけど)。
神奈川県指定銘菓。


手にとるとかなり、重量感がある。
表面には胡桃がびっしりと敷き詰められ、中にはぎっしりと、こしあんが詰まっている。
見た目の割にはしつこくない甘さ。
胡桃の食感がアクセントになっておいしい。
が、カロリーは高そう。


まあ、当分、月餅も番餅もいいや。

| | コメント (0) | トラックバック (0)

2011年8月20日 (土)

[本] 日常の謎を扱った連作短編ミステリ

ある趣向が凝らされた、日常の謎を扱ったユーモア連作短編ミステリ。 似たような趣向のミステリは他にもあるが、日常の謎を題材にして、これをやってのけている作品は珍しいんじゃないかな。 その趣向に、更にもう一捻り加わっているところが面白い。

読後感もよく、なんだかほっこりとした気持ちになる。

ちょっと惜しまれるのが、ミステリとして見た場合、肝心の謎の設定が甘いところ。 読んでいるこちらが割りと簡単に真相を予想できてしまうところが残念。

「人間って、毎日毎日いろんなことを考えて、いろんなものに憧れて、曲がりくねって
るものなんです。誰だってそうです。そうやって流れているあいだは、行き着く先なん
てわかりません。でも僕は思うんです。曲がりくねることは、大事なことです」

| | コメント (0) | トラックバック (0)

2011年8月19日 (金)

[Ruby] Rails3: time zone の設定

自分の作った Rails 3アプリではデータベースの列に日付型を使っているのだけど
デフォルトの日付が日本時間とずれている気がする。
そういえば、time zone の設定があるとかどっかで見た気がしたので


$ cd myrails_app_directory
$ find . -type f | xargs grep -i time | grep -i zone
./config/application.rb: # Set Time.zone default to the specified zone and
make Active Record auto-convert to this zone.
./config/application.rb: # Run "rake -D time" for a list of tasks for finding
time zone names. Default is UTC.
./config/application.rb: # config.time_zone = 'Central Time (US & Canada)'

なるほど。Active Record は、time zone の設定に合わせて自動変換するのね。
説明に従って "rake -D time" を実行


$ rake -D time
rake time:zones:all
Displays all time zones, also available: time:zones:us, time:zones:local -- filter
with OFFSET parameter, e.g., OFFSET=-6

更にメッセージに従って、


$ rake time:zones:local
* UTC +09:00 *
Irkutsk
Osaka
Sapporo
Seoul
Tokyo

config/application.rb を編集


config.time_zone = 'Tokyo'

これで、日本時間に合うようになった。


Seoul ってソウルのことなのか。

| | コメント (0) | トラックバック (0)

2011年8月17日 (水)

[Ruby] Rails 3.0.10

Rails 3.0.10 がリリースされたのでインストール。


$ sudo gem update

自分の作ったRailsアプリケーションを3.0.9から3.0.10にバージョンアップしようとしてハマった
(まあ、ドキュメントを読まない自分が悪いのだが)。


で、結局、何が良かったのかわからないけど、3.0.10対応になったっぽい。
以下は、自分の覚え書き。
(全く参考にならないので、真似しないように。)


$ cd myrails_app_directory

Gemfile を編集


gem 'rails', '3.0.9'


gem 'rails', '3.0.10'

に修正


$ bundle update
$ rake rails:update

(などの)コマンドを(繰り返し)実行すれば、(いつの間にか自分の知らないうちに、いい感じで)3.0.10対応になった(っぽい)。


Gemfile.lock は、bundle update でいい感じに書き変わる(みたい)。


rake rails:update で自動生成されたコードを3.0.10用に書き変えてくれる(んじゃないかな、多分)。
conflict するファイル(config/route.rbとか)は上書きするか聞いてくるので、
上書きしてよいかどうか調べてから上書き。


ソースの修正は必要なかったっぽいのだけど、
なんかバージョンアップの手順がよくわからなくて試行錯誤というか右往左往というかしてしまった。


よく調べもせずに適当なことをやる自分が悪いといえば悪いのだが、毎回、こんな感じだと railsアプリのバージョンアップは、
みんなやりづらいんだろうなとようやく合点がいった。

| | コメント (0) | トラックバック (0)

2011年8月16日 (火)

[Soft] cygwin上のVim の autocomplpop と neocomplcache

Cygwin上のVim で、neocomplcache
使うと何故か入力の動作がもったりした感じの動作になるので、
autocomplpopに戻すことにした。

| | コメント (0) | トラックバック (0)

2011年8月14日 (日)

[Ruby] ActiveRecord の find と where

Active Record Query Interface 3.0 によれば、

find(:all, options)

のような書き方は、Rails3.2 では、できなくなるらしい。

どちらの書き方をしても、ほぼ、気にすることなく扱うことができそうなのだが、 実は、find メソッドが返すのはArrayオブジェクトで、 whereメソッドが返すのは、ActiveRecord::Relationオブジェクトなので取り扱いには注意が必要 (Rails 3.0.9 での話)。

たとえば、合計を計算しようとして sum メソッドを呼び出す場合など。

$ rails -v
Rails 3.0.9
$ rails new test01
$ cd test01
$ rails g scaffold book title:string price:integer
$ rake db:migrate
$ rails console
Loading development environment (Rails 3.0.9)
irb(main):001:0> book = Book.new(title:'Programming Ruby', price:25)
=> #<Book id: nil, title: "Programming Ruby", price: 25, created_at: nil, updated_at: nil>
irb(main):002:0> book.save
=> true
irb(main):003:0> Book.find(:all, conditions:{title:'Programming Ruby'})
=> [#<Book id: 1, title: "Programming Ruby", price: 25, created_at: "2011-08-13 22:55:27",
updated_at: "2011-08-13 22:55:27">]
irb(main):004.0> Book.where(title:'Programming Ruby')
=> [#<Book id: 1, title: "Programming Ruby", price: 25, created_at: "2011-08-13 22:55:27",
updated_at: "2011-08-13 22:55:27">]
irb(main):005.0> Book.find(:all, conditions:{title:'Programming Ruby'}).sum{|b| b.price}
=> 25
irb(main):006:0> Book.where(title:'Programming Ruby').sum{|b| b.price}
ArgumentError: wrong number of arguments (0 for 1)
...
irb(main):007.0> Book.find(:all, conditions:{title:'Programming Ruby'}).class
=> Array
irb(main):008.0> Book.where(title:'Programming Ruby').class
=> ActiveRecord::Relation
irb(main):009:0> Book.where(title:'Programming Ruby').sum(:price)
=> 25

| | コメント (0) | トラックバック (0)

2011年8月13日 (土)

[Ruby] error_messages_for in Rails 3 (続き)

<URL:http://news.ycombinator.com/item?id=1263775>
によると、scaffold を使った場合は、なにかそれっぽいエラー出力をしてくれるのかな?


私は、scaffold を使わないで Rails3 を試してます。

| | コメント (0) | トラックバック (0)

[Ruby] error_messages_for in Rails 3

Rails 3(Rails 3.0.9) で、error_messages_for を使ったら


DEPRECATION WARNING: error_messages_for was removed from Rails and is now available 
as a plugin. Please install it with
`rails plugin install git://github.com/rails/dynamic_form.git`.

と言われた。


調べてみたら、No more error_messages_for in Rails 3
が見つかった。


Apparently the old error_messages_for violated the core Rails principles of never 
dictating the look and feel of an application.

ということらしい。


plugin をインストールしないで、自力で似たようなことをやるには、どうするかちょっと調べてみた。


どうやら、model クラスの中で定義した validation のエラーの情報は、errors メソッドで取り出すことができるみたい。


たとえば


class MyModel < ActiveRecord::Base
validates_presence_of :member1
end

となっている場合、validation のエラーの内容は


@mymodel.errors

で参照できる。View 側では、


<% if @mymodel.errors.size > 0 %>
<ul>
<% @mymodel.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
<% end %>

みたいな感じにすればよい。


それにしても Rails3 のエラーメッセージは、わかりやすく丁寧だな。

| | コメント (0) | トラックバック (0)

[本] 日常の謎を題材にした連作短編ミステリ

目次だけを見ると、単純な長編ミステリ小説かと思ってしまいそうだが、そうではない。実は趣向が凝らされている。この作品は連作短編ミステリー小説である。第一章から第四章までが、いわゆる日常の謎を題材にした独立した短編ミステリーである。最終章が第一章から第四章にちりばめられた伏線を回収して全体として一つの長編ミステリとして成立する役割を担っている。ミステリ好きの読者にはお馴染みの例のアレである。

日常の謎を扱った第一章から第四章までの短編ミステリそれぞれはよくできている。第一章から第四章にちりばめられた伏線を纏めあげた最終章の手際もいい。プロローグの逸話の謎も明らかになる。

だけど、何か物足りないんだよなあ。この手のミステリ小説を読み慣れてしまい食傷気味なのか、それとも伏線があまりにさり気なさ過ぎるせいなのか、最終章のどんでん返しの衝撃度が感じられらないせいなのか。伏線かと自分が思っていたものが全然伏線じゃないところが不満なのか。(読む方の)ハードルが高くなっているせいかも知れないな。

出来が悪いということではないので、続編が書かれることがあれば、ぜひ読んでみたいと思う。エピローグで提示される謎も気になるしね。

短編ミステリとしてはサスペンス性もあり、ちょっぴりサイコっぽくもあり、凝った結末を用意している第二章が好み。

「安楽椅子探偵っていうのは、文字通りロッキングチェアーにもたれて
紅茶をすすりながら、警察の身内が持ち込んできた殺人事件を優雅に解
決してみせるって類のものなの。チェリーワールドで冷し中華を食べな
がら目玉風船を語るものじゃないから。」

| | コメント (1) | トラックバック (0)

2011年8月 8日 (月)

[本] 衝動買い

Wish list に突っ込んだ Agile Web Development with Rails (4th edition) を買ってしまった。

The Pragmatic Bookshelfから40%offのお知らせメールが届いたから(念のために書いておくと、40%offで買うにはメールに書かれたクーポンコードを入力する必要があります)。

実は、先日、Dave が twitter で

Do yourself a favor and don't buy books from our store this weekend….

とつぶやいていたので、ちょっと気になっていたのだった。 Dave を twitter でフォローしていて良かった。Daveありがとう!! そして twitter万歳!!

ついでに他にも数冊衝動買い。見事に敵の作戦にひっかかってます。買ったのは全部電子書籍。 というか今まで、The Pragmatic Bookshelfで紙の本を1冊も買ったことがない。

| | コメント (0) | トラックバック (0)

2011年8月 7日 (日)

[Ruby] Rails のヴァージョン (Rails 3.0.9)

Rails::VERSION::STRING で参照できるみたい。


$ rails console
Loading development environment (Rails 3.0.9)
irb(main):001:0> Rails::VERSION.constants
=> [:MAJOR, :MINOR, :TINY, :PRE, :STRING]
irb(main):002:0> Rails::VERSION::STRING
=> "3.0.9"
irb(main):003:0> Rails::VERSION::MAJOR
=> 3
irb(main):004:0> Rails::VERSION::MINOR
=> 0
irb(main):005:0> Rails::VERSION::TINY
=> 9
irb(main):006:0> Rails::VERSION::PRE
=> nil
irb(main):007:0>

| | コメント (0) | トラックバック (0)

[Ruby] Rails 用 vim 環境

Rails 用に vim に plugin をいくつかインストールした。


インストールしたのは、



  • project -
    IDEのようなプロジェクトツリーを表示。

  • neocomplcache -
    自動補完機能。気に入らなければ、autocomplpopに戻すかも。

  • rails.vim -
    Vim で railsアプリケーションを開発するときの定番。


neocomplcacheが使えるように .vimrc に以下を追加


" for neocomplcache
let g:neocomplcache_enable_at_startup = 1

| | コメント (0) | トラックバック (0)

2011年8月 6日 (土)

[Ruby] Rails3 の本(電子書籍)

Rails3対応が出版されていたことに気づいてなかった。



3rd edition は随分前に、電子書籍版を買って一通り目を通したのだけど、
4th edition はどうしようか。とりあえず、Wish list に突っ込んでおこう。


今ならオンラインで



が読めるな。


Amazonでもいくつか電子書籍がありそう。



ああ、そういえば、達人出版会にも



があった。なるほど、続刊があるから(1)なのか。

| | コメント (0) | トラックバック (0)

[Ruby] Ubuntu 10.04 に Rails3 をインストールした

ちょっと触ってみたいと思ったので、Ubuntu 10.04 に Rails3 をインストール。
参考にしたのは、Ruby on Rails 3.0 日記


今更、1.8.7でもないだろうと思ったので、Ruby1.9.2をインストール。
configure に --prefix をつけたのは、他のヴァージョンのRubyとの混在を避けておきたかったから。


$ tar jxvf ruby-1.9.2-p290.tar.bz2
$ cd ruby-1.9.2-p290
$ ./configure --prefix=/usr/local/ruby192p290 && make
$ sudo make install
$ export PATH=/usr/local/ruby192p290/bin:$PATH
$ ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux]

DBは、Rails でもデフォルトになっている sqlite3 を使うことにした。


$ sudo aptitude install sqlite3 libsqlite3-dev

Ruby の sqlite3インターフェースは、gemを使ってインストール。


$ sudo /usr/local/ruby192p290/bin/gem install sqlite3

いよいよ、Railsのインストール


$ sudo /usr/local/ruby192p290/bin/gem install rails
$ rails --version
Rails 3.0.9

使えるかどうかちょっとテスト。


$ cd /home/suke/work
$ mkdir rails
$ cd rails
$ rails new test01
(...) test01アプリケーション自動生成の途中経過のメッセージは省略。

gitを使うことが前提なのか、.gitignore なんてファイルまでありますね。
アジャイル開発は、やっぱり、何はなくともまずテストだよね。


$ cd test01
$ rake test
(in /home/suke/work/rails/test01)
/home/suke/work/rails/test01/db/schema.rb doesn't exist yet. Run "rake db:migrate" to \
create it then try again. If you do not intend to use a database, you should instead \
alter /home/suke/work/rails/test01/config/application.rb to limit the frameworks that will be loaded

かなり親切なメッセージだ。今後はデータベースも使うつもりなので、試しておこう。


$ rake db:migrate
$ rake test

エラーメッセージが出なかったので、よしとする。サーバーを起動。


$ rails server
=> Booting WEBrick
=> Rails 3.0.9 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2011-08-06 10:17:30] INFO WEBrick 1.3.1
[2011-08-06 10:17:30] INFO ruby 1.9.2 (2011-07-09) [i686-linux]
[2011-08-06 10:17:30] INFO WEBrick::HTTPServer#start: pid=363 port=3000

firefox から http://localhost:3000 にアクセスしたらページが表示された。
とりあえず触れる環境ができたようだ。

| | コメント (0) | トラックバック (0)

[本] 一流のプログラマ達がプログラマにとって重要だと考える事柄をそれぞれの視点でそれぞれの立場から書いたエッセイ集

一流のプログラマ達がそれぞれの立場でそれぞれの視点でプログラマが知るべきことを書いたエッセイ集。 プログラマがそれぞれ自分で好きなテーマで書いているために、 技術的なものであったり、プログラマとしての心得であったり、プロジェクトメンバーの一人としての心得であったりと内容は多岐に渡る。 複数のプログラミング言語を学んだ方がよいとか ユーザーは思わぬ操作をするとか バグがあるときは大抵は自分が間違っているとか 共感できる内容も多かった。

それぞれのエッセイは短く2、3分で読むことができ、前後の関係なく単独で完結している。 ちょっとした空き時間や休憩時間とかに手軽にパラパラとめくって目についたものから読んでみるのもいいかも知れない。

少しプログラミングを経験した初級プログラマが読むのにちょうど良さそう。 全体としてあまりまとまりがなく、前後のつながりもないし、いきなり本題に入るので、 全く経験のない初心者が読むには、ちょっとわかりづらいエッセイもあるかも知れない。 そういう初心者は、1冊の本としてまとまっている『達人プログラマー』などを読むとよりわかりやすいんじゃないかな。

ディスプレイのサイズや解像度は変わっているが、人間の認知能力は1960 
年代からまったく変化していない。

| | コメント (0) | トラックバック (0)

2011年8月 5日 (金)

[本] ジャンルミックス小説風サイコサスペンス

翻訳は『二流小説家』(デイヴィッド・ゴードン)。

主人公は、ヴァンパイア小説から、SF、ミステリ、ポルノ小説まで様々なジャンルの小説をいろんなペンネームで書いている売れない二流小説家。

本筋とは関係ないところでいろいろなエピソードやストーリーがごちゃまぜになったサイコ・サスペンス(風ジャンルミックス小説)。読んでいて飽きない小説。

たとえば、本筋のストーリーの合間に主人公が書いた小説がいくつか挿入される。ヴァンパイア小説の抜粋(コレが意外とよくできたショートショートっぽい仕上りで単独でも面白い。)や、ハードボイルドっぽい小説があったり、SF小説があったり。

ヴァンパイア小説のペンネームが女性のために、インタビューや著者近影の代役に仕立てた母親のエピソードがあったり、自分では、出来が良くないと思っているヴァンパイア小説のファンに遭遇するエピソードがあったり。

本筋のサイコ・サスペンスも終盤に二転三転する展開が待ち受けていて良くできている。ただ、いろんなエピソードを入れ過ぎた分、サイコ・サスペンスの部分がぼやけてしまっているような気がする。もっとストレートにした方がすっきりして盛り上がったんじゃないか。

殺人事件の犯人として疑われた主人公が容疑を晴らすためにどうすればいいか仲間と会話する場面で、 架空の名探偵の名前が次々と飛び出すのにちょっとワクワクしてしまった(私もフロスト警部が好き)。

英語はかなり難しかった。

"That's what we need", Clair said. "Some CSI-type evidence.
Like a body hair in a drain. Or a tooth."

| | コメント (0) | トラックバック (0)

« 2011年7月 | トップページ | 2011年9月 »