Google Chrome DevにExtensionを入れた時のメモ(Chrome Keyconfig等)

AutoPatchWork

URL: http://ss-o.net/chrome_extension/#AutoPatchWork
インストールしたバージョン: 0.20.1

Chrome Keyconfig

URL: http://ss-o.net/chrome_extension/#ChromeKeyconfig
インストールしたバージョン: 1.5.5

行った設定

Advancedタブのテキストエリアに以下のファイルの文字列をペーストしてImport。
http://github.com/tester7/dotFiles/raw/master/chrome/ChromeKeyconfig
vimperatorっぽい?ショートカットキー設定です(自分好みに変えている部分があります)。

Gmail Checker

URL: http://www.chromeextensions.org/alerts-updates/gmail-checker/
インストールしたバージョン: 1.9

行った設定

Google Appsで使うには、Custom Google Apps Domain項目に対して以下のように入力。

https://mail.google.com/a/example.com/

RSS Subscription Extension

URL: http://code.google.com/chrome/extensions/samples.html
インストールしたバージョン: 1.6.5

SBM Counter

URL: http://ss-o.net/chrome_extension/#SBMCounter
インストールしたバージョン: 4.2.8

行った設定

デフォルトでGoogle検索結果等Webページ内のブクマ数が表示される。
Google検索結果にはいらないので、フィルタに以下の正規表現を追加することで抑制。

^http://www\.google\.co(m|\.jp/)/

Windows 7 上に Rails 2.3.4(Ruby 1.9.1 MySQL 5.4.3-beta) 開発環境を構築した時のメモ

環境構築のスピードを重視しています。

環境

Windows 7 Professional 64bit

Rubyインストール

ActiveScriptRuby and Other packagesRuby-1.9.1-p243 をダウンロードしインストール。
インストールパスは C:\bin\ruby にした。

gemをアップデート

gem update --system

RailsMySQL/Rubyインストール

gem install rails
gem install mysql

MySQLインストール

MySQL :: Download MySQL Community Server の Windows(x64ではない) の Without installer をダウンロードし展開。
展開フォルダ名を mysql に変更して C:\bin 配下に配置し、C:\bin\mysql にパスを通す。
my-medium.ini をコピーしてファイル名を my.ini にして以下の部分を編集。
初期の設定ファイルはぐちゃぐちゃなので最低限の修正を加えて後でじっくり編集する方向で。

[client]
#socket = /tmp/mysql.sock
          :
[mysqld]
#socket = /tmp/mysql.sock
character_set_server = utf8
collation_server = utf8_general_ci
          :
[mysql]
default_character_set = cp932

サービス登録してスタート

mysqld --install mysql --defaults-file="--defaults-file=C:\bin\mysql\my.ini"
net start mysql

発生した問題への対応

MySQL/RubyがM17Nに対応していない問題の対応

以下のファイルを編集することで対応
C:\bin\ruby\lib\ruby\gems\1.9.1\gems\activerecord-2.3.4\lib\active_record\attribute_methods.rb

  • 148行目を以下の文字列に置換
          access_code = cast_code ? "(v=@attributes['#{attr_name}']) && #{cast_code}" : "(@attributes['#{attr_name}'].class == String) ? @attributes['#{attr_name}'].force_encoding('UTF-8') : @attributes['#{attr_name}']"
  • 273行目を以下の文字列に置換
            (column.type_cast(value).class == String) ? column.type_cast(value).force_encoding("UTF-8") : column.type_cast(value)
Ruby 1.9からString[n]の解釈が変わった問題の対応

以下のファイルを編集することで対応
C:\bin\ruby\lib\ruby\gems\1.9.1\gems\activesupport-2.3.4\lib\active_support\message_verifier.rb

  • 43行目から51行目を以下の内容に置換
        if a.respond_to?(:bytesize)
          # 1.9
          if a.bytesize == b.bytesize
            result = 0
            j = b.each_byte
            a.each_byte { |i| result |= i ^ j.next }
            result == 0
          else
            false
          end
        else
          # 1.8
          if a.size == b.size
            result = 0
            for i in 0..(a.length - 1)
              result |= a[i] ^ b[i]
            end
            result == 0
          else
            false
          end
        end
db:create時にRubyがSEGVしてしまう場合

以下のファイルをダウンロードして C:\bin\ruby\bin に置く
http://instantrails.rubyforge.org/svn/trunk/InstantRails-win/InstantRails/mysql/bin/libmySQL.dll

終焉

あとは適当なRailsアプリを作って動作確認して完了。
複雑なアプリで試したわけじゃないので、まだ問題があるかもしれない。

Passenger 2.2.5で rewindable_input.rb:86:in `make_rewindable' みたいなエラーが出る問題

解決方法

# vi /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.5/vendor/rack-1.0.0-git/lib/rack/rewindable_input.rb
- if filesystem_has_posix_semantics?
+ if filesystem_has_posix_semantics? && "#{RUBY_VERSION}.#{RUBY_PATCHLEVEL}" < "1.9.1.152"

Ruby 1.9.1p243 & Rails 2.3.4 で undefined method `^' for "0":String みたいなエラーが出る問題

結構ハマった。

これは何

Ruby1.9ではString[n]は文字そのものを返します。この動作はRuby1.8の動作(キャラクターコードを返す)とは異なります。
その問題を解決するPatchです。
感謝。

Railsを始めて一番最初にハマったこと

[tester@localhost]~% rails rails
/usr/local/lib/ruby/gems/1.9.1/gems/rails-2.3.4/lib/rails_generator/options.rb:32:in `default_options': undefined method 
`write_inheritable_attribute' for Rails::Generator::Base:Class (NoMethodError)
        from /usr/local/lib/ruby/gems/1.9.1/gems/rails-2.3.4/lib/rails_generator/base.rb:90:in `<class:Base>'
        from /usr/local/lib/ruby/gems/1.9.1/gems/rails-2.3.4/lib/rails_generator/base.rb:85:in `<module:Generator>'
        from /usr/local/lib/ruby/gems/1.9.1/gems/rails-2.3.4/lib/rails_generator/base.rb:48:in `<module:Rails>'
        from /usr/local/lib/ruby/gems/1.9.1/gems/rails-2.3.4/lib/rails_generator/base.rb:6:in `<top (required)>'
        from /usr/local/lib/ruby/gems/1.9.1/gems/rails-2.3.4/lib/rails_generator.rb:34:in `require'
        from /usr/local/lib/ruby/gems/1.9.1/gems/rails-2.3.4/lib/rails_generator.rb:34:in `<top (required)>'
        from /usr/local/lib/ruby/gems/1.9.1/gems/rails-2.3.4/bin/rails:14:in `require'
        from /usr/local/lib/ruby/gems/1.9.1/gems/rails-2.3.4/bin/rails:14:in `<top (required)>'
        from /usr/local/bin/rails:19:in `load'
        from /usr/local/bin/rails:19:in `<main>'
[tester@localhost]~% 

!?
調べたらirbactivesupportをrequireしてみろとのことだったのでやる。

[tester@localhost]~% irb
irb(main):001:0> require 'activesupport'
LoadError: no such file to load -- activesupport
        from (irb):2:in `require'
        from (irb):2
        from /usr/local/bin/irb:12:in `<main>'
irb(main):002:0> 

oh...

原因

[tester@localhost]~% gem install rails

これによって、ユーザディレクトリ配下の.gemディレクトリに諸々がインストールされてしまっていた。
これではrequireにパスが明示されていない限り読めない。

解決方法

[tester@localhost]~% sudo gem uninstall actionmailer actionpack activerecord activeresource activesupport rack rails
#アンインストール中いろいろ流れる
[tester@localhost]~% sudo gem install rails

幸福実現

[tester@localhost]~% rails rails
      create  
      create  app/controllers
            ・
            ・
            ・
      create  log/test.log
[tester@localhost]~% 

Rubyのstring[0]の解釈についてメモ

僕は運用なのですが、先日またしてもコードを書くお仕事が来まして、今回は1からスクリプトを書くことになったのでRubyを使うことにしました。
初業務Rubyコーディングです。
今回はそのスクリプトを作成するにあたってはまったところをメモします。
環境はCentOS 5.3、Ruby 1.8.5(yum)、1.8.7、1.9.1です。

string[0]の解釈

if RUBY_VERSION >= "1.9.0"
  str = "7"
  p str[0] # => "f"
elsif RUBY_VERSION >= "1.8.0"
  str = "7"
  p str[0] # => 55
end

Ruby 1.8だとstring[0]はASCIIですが、Ruby 1.9のstring[0]は文字列ということが分かりました。
普段は全く困らないのですが、今回はこの1.8の挙動を利用したものを利用していたため困りました。
正しいかどうか分からないですが、以下の方法で解決しました。

if RUBY_VERSION >= "1.9.0"
  str = "7"
  p str[0].unpack("c")[0] # => 55
elsif RUBY_VERSION >= "1.8.0"
  str = "7"
  p str[0] # => 55
end

おわり。
実はもうひとつはまったところがあり、IO#eof?の解釈が1.8.5と1.8.7で違うことがあったことを書いていたのですが、
記事を書いている時に試したら再現せず…。家には実スクリプトが無いので、またの機会に。