Compact Menu 2 2.3.0a4
- 2.3.0a3 でアイコンの変更ができなくなっていたのを修正しました。
- Thunderbird のメニューに「表示」>「ツールバー」>「メニューバー」を追加しました。
テストリリースなので Sandbox にあります。
インストールするには Firefox Add-ons のユーザアカウントが必要です。
(リリースしたのは去年ですが)
Compact Menu 2 2.3.0a3
- ALT キーでメニューを開閉できるようにしました。
- Fx3.1 での「ブックマーク」メニューの動作を修正しました。
- 初期化ダイアログを追加しました。
- ツールバーのカスタマイズの「初期設定に戻す」ボタンで、メニューバーを復元するようにしました。
- その他、細かい修正をしました。
テストリリースなので Sandbox にあります。
インストールするには Firefox Add-ons のユーザアカウントが必要です。
前回の Compact Menu 2 2.3.0a2 もテストリリースのはずだったのに、なぜかレビュー後公開されていました。
Firefox Add-ons のシステムがいまいちわからない……。
Compact Menu 2 2.3.0a2
- アイコンを変更可能にしました。
- Thunderbird のアドレス帳、メッセージウィンドウ、メッセージ編集ウィンドウに対応しました。
テストリリースなので Sandbox にあります。
インストールするには Firefox Add-ons のユーザアカウントが必要です。
パイプかリダイレクトかファイル指定による入力が存在するかの判定
入力がなにも無ければヘルプ表示をしたいという場合に使える。
isinput.rb
unless File.pipe?('/dev/stdin') || IO.select([ARGF], nil, nil, 0) puts 'no input' end
出力例
$ touch x $ cat x | ruby isinput.rb $ ruby isinput.rb < x $ ruby isinput.rb x no input $ ruby isinput.rb y isinput.rb:1:in `to_io': No such file or directory - y (Errno::ENOENT) from isinput.rb:1:in `select' from isinput.rb:1
ARGF が読めない場合の例外処理は適宜行う。
ActiveRecord で関連レコードの size をプリロードする その2
前回のやつをその後いじってた。
動作確認は ActiveRecord-2.1.2
2.1.1 では動きません。(差分があります)
使い方
records = Record.find(:all, :include => :subrecords_count) records[0].subrecords.size # カウント SQL が実行されない
active_record_sizes_preload.rb
require 'active_record' module ActiveRecord module AssociationPreload::ClassMethods def preload_count_associations(records, associations, preload_options={}) preload_associations(records, associations, preload_options.merge({:only_count => true})) end protected def preload_associations_with_count(records, associations, preload_options={}) records = [records].flatten.compact.uniq return if records.empty? case associations when Symbol, String then if associations.to_s =~ /(.*)_count$/ return preload_sizes(records, $1.to_sym, preload_options) end return if preload_options[:only_count] end preload_associations_without_count(records, associations, preload_options) end alias_method_chain :preload_associations, :count private def preload_sizes(records, association, preload_options) class_to_reflection = {} records.group_by {|record| class_to_reflection[record.class] ||= record.class.reflections[association]}.each do |reflection, records| raise ConfigurationError, "Association named '#{ association }' was not found; perhaps you misspelled it?" unless reflection sizes = {} ids = records.map {|record| record.id} conditions = "#{reflection.primary_key_name} IN (?)" conditions << append_conditions(reflection, preload_options) reflection.klass.count(:conditions => [conditions, ids], :group => reflection.primary_key_name ).map {|record| sizes[record[0]] = record[1]} records.each do |record| unless sizes[record.id] record.send(association).loaded else write_attribute = defined?(record.write_attribute_without_dirty) ? record.method(:write_attribute_without_dirty) : record.method(:write_attribtue) write_attribute.call("#{reflection.name}_count", sizes[record.id]) end end end end end class Associations::ClassMethods::JoinDependency def instantiate_with_count(row) records = instantiate_without_count(row) records.first.class.preload_count_associations(records, @associations) unless records.empty? records end alias_method_chain :instantiate, :count protected def build_with_count(associations, parent = nil) case associations when Symbol, String return if associations.to_s =~ /_count$/ end build_without_count(associations, parent) end alias_method_chain :build, :count def construct_with_count(parent, associations, joins, row) case associations when Symbol, String return if associations.to_s =~ /_count$/ end construct_without_count(parent, associations, joins, row) end alias_method_chain :construct, :count end end
ActiveRecord-2.1.1 以前用 patch。
--- lib/active_record_sizes_preload.rb +++ lib/active_record_sizes_preload.rb @@ -30,7 +30,7 @@ sizes = {} ids = records.map {|record| record.id} conditions = "#{reflection.primary_key_name} IN (?)" - conditions << append_conditions(reflection.options, preload_options) + conditions << append_conditions(reflection, preload_options) reflection.klass.count(:conditions => [conditions, ids], :group => reflection.primary_key_name ).map {|record| sizes[record[0]] = record[1]}
mecab-config --libexecdir の出力を修正
mecab-config.in がおかしかった。
おまけで、辞書は share にいれるものだろうという patch。
--- mecabrc.in.old 2007-01-29 00:09:05.000000000 +0900 +++ mecabrc.in 2008-10-30 22:37:47.000000000 +0900 @@ -3,7 +3,7 @@ ; ; $Id: mecabrc.in,v 1.3 2006/05/29 15:36:08 taku-ku Exp $; ; -dicdir = @prefix@/lib/mecab/dic/ipadic +dicdir = @datadir@/mecab/dic/ipadic ; userdic = /home/foo/bar/user.dic --- mecab-config.in.old 2007-10-07 23:13:12.000000000 +0900 +++ mecab-config.in 2008-10-30 22:37:47.000000000 +0900 @@ -91,7 +91,7 @@ ;; --dicdir) - echo @libdir@/mecab/dic + echo @datadir@/mecab/dic ;; --inc-dir) @@ -107,7 +107,7 @@ ;; --libexecdir) - echo @prefix@/libexec/mecab + echo @libexecdir@/mecab ;; --sysconfdir)