明日から旅行
明日から東北に旅行です。楽しみ。
こういった単純な内容だと、最近はtwitterに書いて満足しちゃうんだけど、たまにはブログに書いてみました。
明日から東北に旅行です。楽しみ。
こういった単純な内容だと、最近はtwitterに書いて満足しちゃうんだけど、たまにはブログに書いてみました。
旅行から帰ってきました。適当に写真はふぉとすにあげています。
行ってきたところ
1日目
・仙台東照宮
猫がいた。
・塩竈 すし哲
本店のほうが評価が高いけど、こちらもおいしかった。
・青葉城
仙台市内が一望できる。神社が腐女子の聖地と化していた。
・リッチモンドホテル仙台
駅の近くなので便利。
・仙台ロフト
仙台は東京よりもおしゃれな人が多かった。ジュンク堂にも寄った。
・牛たん炭焼 利久 西口本店
牛たん焼きはそこそこ。シチューのほうがおいしい。
2日目
・松島の遊覧船
のんびり楽しめる。
・独まん
あなご丼を食べた。おいしかった。
・五大堂
松島が一望できる。
・瑞巌寺
参道脇の崖に掘られた石像がすごかった。それだけでも見る価値あり。
・湯主一条
料亭の夕食がすばらしくおいしかった。たぶん、人生で一番おいしい食事だったと思う。
3日目
・チーズ・シェッド
チーズフォンデュを食べた。
・蔵王エコーライン
雪の壁が両側に数メートルあった。ここにいたる道もすばらしい景色。
・御釜
いい意味で期待を裏切られた。火星のようなところで日本でもなかなか目にできない景観がすばらしい。ここを見るためだけでも行く価値がある。
・山形 山寺
美しい風景と心が安まるところ。
2009年版がきました! 萩原さんご本人から教えていただいてびっくりです。
RailsでMiyazakiResistanceを使っていると、Railsの環境やサーバによってTTへの接続先を変えたいことが多いので、コンフィグファイルでそれらが設定できるようにしました。
miyazakiresistance.yml
development:
set_server:
- server: localhost
port: 1975
role: write
test:
set_server:
- server: localhost
port: 1978
role: write
production:
set_server:
- server: db1
port: 1975
role: write
- server: db2
port: 1975
role: standby
log_file: log/miyazakiresistance.log
という設定ファイルを書いておくと、
require 'miyazakiresistance' class Counter < MiyazakiResistance::Base server_config Rails.env set_column :count, :integer end
これだけでRailsの環境ごとにTTへの接続先が変わります。
server_configの第二引数で設定ファイル名を指定できます。省略すると、./miyazakiresistance.ymlを読もうとします。
ついでにログファイルも指定できるようにしました。デフォルトでは ./miyazakiresistance.logですが、設定ファイルのlog_fileで指定するとそれが使われます。
Ruby1.9からThreadがネイティブスレッドを使うようになります。といっても、VMレベルでロックされるようなので、同時に実行されるスレッドは常にひとつです。ただし、IO関連のブロック機能を備えたシステムコールは同時に実行されるようです。
以下のような簡単なIOテストを実行してみました。
require 'benchmark'
threads = []
Benchmark.bm do |x|
x.report do
1000.times do |i|
threads << Thread.new(i) do |t_i|
File.open("#{t_i}.count", "w") do |f|
1000.times {|i| f.puts i}
end
end
end
end
end
threads.each {|t| t.join}
結果。
[tsukasa@ubuntu] $ ruby1.8 aa.rb
user system total real
2.090000 0.490000 2.580000 ( 2.579993)
[tsukasa@ubuntu] $ rm -f *.count
[tsukasa@ubuntu] $ ruby aa.rb
user system total real
0.750000 0.170000 0.920000 ( 0.939997)
[tsukasa@ubuntu] $ [
それから、IOなしのテストをやってみます。
require 'benchmark'
threads = []
Benchmark.bm do |x|
x.report do
1000.times do |i|
threads << Thread.new(i) do |t_i|
(1..10000).inject(0) {|result,i| result *= i}
end
end
end
end
threads.each {|t| t.join}
結果。
[tsukasa@ubuntu] $ ruby1.8 aa.rb
user system total real
14.890000 4.950000 19.840000 ( 19.839974)
[tsukasa@ubuntu] $ ruby aa.rb
user system total real
1.530000 0.090000 1.620000 ( 1.620000)
全然性能が違いますね。コンテキストスイッチの処理で大きく差が出ているのかな。
Threadを介さずにやってみましょう。
require 'benchmark'
threads = []
Benchmark.bm do |x|
x.report do
(1..1000000).inject(0) {|result,i| result *= i}
end
end
threads.each {|t| t.join}
結果。
[tsukasa@ubuntu] $ ruby1.8 aa.rb
user system total real
1.430000 0.470000 1.900000 ( 1.899998)
[tsukasa@ubuntu] $ ruby aa.rb
user system total real
0.140000 0.000000 0.140000 ( 0.140000)
なるほど。VM化による性能の差が大きく出ているみたいです。すばらしい。
「WEB+DB PRESS Vol.50」を買っていたのでした。でも読んだのはgitのところだけだったりします。
とうとう「詳解 Linuxカーネル 第3版」を買いました。楽しみ!