アーカイブ

2008 年 7 月 のアーカイブ

長音表記。 このエントリーを含むはてなブックマーク はてなブックマーク - 長音表記。

2008 年 7 月 31 日 Comments off

マイクロソフト製品ならびにサービスにおける外来語カタカナ用語末尾の長音表記の変更について

マイクロソフト株式会社(本社:東京都渋谷区、以下マイクロソフト)は、外来語カタカナ用語末尾の長音表記について、今後の製品やサービスの開発において国語審議会の報告を基に告示された1991年6月28日の内閣告示第二号をベースにしたルールへ原則準拠する方針を決定しました。

うーん「変更例」ぜんぶ違和感あるなー。そのうち慣れるんだろうけど。

カテゴリー: 日記 タグ:

X61のパームレストが熱い。 このエントリーを含むはてなブックマーク はてなブックマーク - X61のパームレストが熱い。

2008 年 7 月 24 日 Comments off

X60よりは改善されたと言われてて、購入当初は気にならなかったものの、連日の暑さでやっぱり気になるようになった。
長時間使ってるとイラついてくるのはいかんともしがたい。唯一にして最大の欠点。
無線使わないとか何か手の下に敷くとかって、後ろ向きだもんなー。

カテゴリー: コンピュータ一般 タグ:

宇宙船演算子。 このエントリーを含むはてなブックマーク はてなブックマーク - 宇宙船演算子。

2008 年 7 月 20 日 Comments off

宇宙船演算子(<=>)を使うときにどっちがどっちだか思い出せず、毎回こんなことしてる。

irb(main):001:0> 1 <=> 2
=> -1
irb(main):002:0> 2 <=> 1
=> 1
irb(main):003:0> 1 <=> 1
=> 0

そのたびに「左が大きければ正だ!」って覚えた気になるんだけど。

カテゴリー: Ruby タグ:

ensure節の値は無視されます。 このエントリーを含むはてなブックマーク はてなブックマーク - ensure節の値は無視されます。

2008 年 7 月 17 日 コメント 2 件

今日のハマり。

制御構造 – Rubyリファレンスマニュアル

begin式全体の評価値は、本体/rescue節/else節のうち 最後に評価された文の値です。また各節において文が存在しなかったときの値 はnilです。いずれにしてもensure節の値は無視されます。

たとえばこんなことしてました。

  1 Foo.find(:all).inject(0) do |num_processed, foo|
2   begin
3     foo.bar                        # ここでraise
4     num_processed += 1
5   rescue => evar
6     logger.error(evar.message)
7   ensure
8     num_processed
9   end
10 end

8行目をensureの外に出して解決した。

カテゴリー: Ruby タグ:

loggerで出すログのフォーマットを変えたい。 このエントリーを含むはてなブックマーク はてなブックマーク - loggerで出すログのフォーマットを変えたい。

2008 年 7 月 1 日 Comments off

ということで設定するパラメータを探してみたのだけれど、見つからなかった。具体的には日付とログレベルをメッセージの前に出したかった。
initializerで「configuration.logger」に設定すればloggerを入れ替えられるようだけど、なんというか、ちょっとフォーマットを変えたいだけなのでオブジェクトを入れ替えるほどのことでもないよな、と思っていた。そう、いた。

デフォルトのloggerの中身は「ActiveSupport::BufferedLogger」だったのでログを書き出してるところを探してみたら、

activesupport-2.1.0/lib/active_support/buffered_logger.rb

63 def add(severity, message = nil, progname = nil, &block) 64 return if @level > severity 65 message = (message || (block && block.call) || progname).to_s 66 # If a newline is necessary then create a new message ending with a newline. 67 # Ensures that the original message is not mutated. 68 message = "#{message}\n" unless message[-1] == ?\n 69 buffer << message 70 auto_flush 71 message 72 end

こんな感じだったので、

RAILS_ROOT/config/initializers/buffered_logger_ex.rb

1 module ActiveSupport 2 class BufferedLogger 3 def add(severity, message = nil, progname = nil, &block) 4 return if @level > severity 5 message = (message || (block && block.call) || progname).to_s 6 # If a newline is necessary then create a new message ending with a newline. 7 # Ensures that the original message is not mutated. 8 message = "#{message}\n" unless message[-1] == ?\n 9 severity_text = ActiveSupport::BufferedLogger::Severity.constants.detect{|c| eval(c) == severity}.ljust(5) 10 time_text = Time.now.strftime('%Y-%m-%d %H:%M') 11 buffer << "#{time_text} [#{severity_text}] #{message}" 12 auto_flush 13 message 14 end 15 end 16 end

こんなファイルを作って置いてみた。

で、出したいようにログが出るようになった。しかし自分でやっておいてなんだけど、置き換えたadd大きすぎ。不吉な匂いを放ってる気がする。

ちなみに上の「buffered_logger.rb」は2.1.0なのだけれど、2.0.2では

activesupport-2.0.2/lib/active_support/buffered_logger.rb

60 message = "#{message}\n" unless message[-1] == ?\n 61 @buffer << message 62 auto_flush

と、bufferのスコープがローカルではないので、注意が必要。って、あーやっぱりきれいなやり方じゃないよなー。

カテゴリー: Rails タグ: