Mountain Lion にあげた
慣れてしまって忘れないうちに不満点を並べておく。
- キーボードの輝度が勝手に上がっていた。 (OS のメジャーバージョンアップのときに毎回設定が消えてる気がする。)
- MacFace 1.3.1 が動かなくなった。
- リマインダーとメモがやっとまともに同期や表示できるようになった。
- 以前は Mail の中だったので Mail を使う気がなかったので、メモがどこに同期されているのか、長い間さっぱりわからなかった。
- リマインダーは iCal にあったのは http://weekly.ascii.jp/elem/000/000/099/99437/ の記事を見て始めて知ったので、Lion に同期されていることさえ知らなかった。
- 通知が増えて Spotlight の右に隙間が出来た。
- キーボードショートカットが変わっている? 環境設定で「デフォルトに戻す」をしてしまったので、どこが変わってしまったのかは未確認。
- svn コマンドがなくなっていて Xcode で Command Line Tools を入れる必要があった。
- バッテリーのステータスとして「割合 (%) を表示」しか出来なくなった。 (予想残り時間はクリックして開かないと見えなくなった。)
- プライバシーで位置情報へのアクセスを要求したアプリケーションに Firefox も Google Chrome も出てこない。
- X11 が標準インストールではなくなっている。(昔の状態に戻っただけとも言える。)
- java コマンドと違って X11.app を実行しても http://support.apple.com/kb/HT5293 を開けるだけで自動インストールは出来ない。(java は自動インストール出来る。)
- MacBook Air (Mid 2011) も「MacBook Air SMC ファームウェア・アップデート 1.6」で Power Nap 対応した。
- その再起動後ぐらいから Quick Look とか AirMac ユーティリティとかリマインダーとかで表示されなかったり、プレビューが起動出来ずに落ちたりして、割と標準のアプリが使い物にならなくなった。
- これは splashtop streamer のバーチャルディスプレイドライバをアンインストールしたら直った。
- GP02 の USB 接続で使えるかどうかを確認し忘れていた。
- 通知センターの表示はトラックパッドの外側からで良いのに、右端ぎりぎりからじゃないとダメだと勘違いしている人がいる( http://goryugo.com/20120726/moutain_lion_notification_center/ )ので、説明が悪い気がする。(最初同じ勘違いをしていて、トラックパッドの設定のデモを見て外側からで良いと知った。)
- 通知センターに Linux での notify-send のようなコマンドラインからメッセージを表示させる方法がわからなった。
rbenv いろいろ
rvm から rbenv に乗り換えて、しばらくたったので、どう感じなのかを書いてみる。
- zsh でも安心
- インストールが簡単
- パッケージで入れるか git clone して PATH に追加するだけで使える
- 「eval "$(rbenv init -)"」を追加するだけで補完が使える
- バージョン設定
- 情報表示
- 「rbenv versions」で使えるバージョンを確認
- 「rbenv version」で今使っているバージョンを確認
- 「rbenv help」でヘルプ表示
- 「rbenv commands」でコマンド一覧が出る (内部用っぽいのも出るのでいまいちかも)
- ruby のインストール
- ruby-build で簡単にビルドも出来る (https://github.com/sstephenson/ruby-build から別途入れる)
- 「./configure --prefix=$HOME/.rbenv/versions/1.9.2-p290」のように直接入れてもいい
- プラグインで拡張できる
- ruby-build で入る rbenv-install で「rbenv install」が使えるようになるようにサブコマンドが簡単に追加出来る (git 風?)
- bundler を使っていないプロジェクト用に rbenv-gemset ( https://github.com/jamis/rbenv-gemset ) というプラグインもあるらしい
いくつかはまったことのメモも書いておきます。
- 「rbenv version 」でタブを押してもスペースが入るだけで補完されないと思ったら、やりたかったことは「rbenv local 」か「rbenv shell 」だった。
- 補完が変だと思ったら、使おうとしているサブコマンドが間違っていることが多い気がする。
- cron などから実行するときに .rbenv-version をみてくれる ruby-local-exec というラッパースクリプトがあって、ちゃんと cd してから実行しないと使いたいバージョンにならなかった。
- ちゃんと cd してから ruby-local-exec を使うようにして解決。
- ruby-build を $HOME 以下に入れる方法がわかりにくかった。
- bash から exec zsh したら SHELL 環境変数が /bin/bash のままだったので「eval "$(rbenv init -)"」で bash 用の補完が設定されて変になった。
- 先に SHELL 環境変数をちゃんと設定するようにして解決。他にも悪影響があったかもしれないので、 rbenv 自体は悪くないと思う。
valid_encoding? の validation 作成
validates_each だと allow_blank オプションのチェックの関係で String#blank? が呼ばれてその中で「ArgumentError: invalid byte sequence」になってしまうので使えなかった。
blank? で ArgumentError になるのは直る予定はなさそうなので、 validates_each は使えなさそうだった。 (参考: https://github.com/rails/rails/issues/1532 )
どうにか回避出来ないかいろいろがんばってみたところ validates_with なら大丈夫だった。
たとえば
- rails new invalid-byte-sequence -T
- cd invalid-byte-sequence
- rails g scaffold post title
- rake db:migrate
のように作成した rails 3.2.2 のアプリケーションで、以下のように validation を設定するとうまくいった。
- rails runner 'Post.create!(title: "\x82\xA0")'
などで動作確認出来る。("\x82\xA0" は "\u3042".encode(Encoding::SJIS).force_encoding(Encoding::UTF_8)) で作成)
コメントアウトしている部分を有効にしたり、他の validates に「if: "title.valid_encoding?"」をつけていなかったりすると「invalid byte sequence in UTF-8」になる。
class EncodingValidator < ActiveModel::Validator def validate(record) unless record.title.valid_encoding? record.errors[:title] << "has invalid encoding" end end end class Post < ActiveRecord::Base validates :title, presence: true, if: "title.valid_encoding?" #validates_each :title do |record, attr, value| #end validates_with EncodingValidator end
assets のログを黙らせる
Rails 3.2 で assets のログって邪魔だなあと思って調べてみると、黙らせる方法があるようだったので http://journal.sooey.com/185 とか http://blog.yabasoft.biz/archives/3905 とか https://github.com/rails/rails/issues/2639#issuecomment-2252326 を参考にして、 Ruby 1.9.3 だったので '/dev/null' を File::NULL に変えて、以下の内容の config/initializers/quiet_assets.rb を作成した。
Rails.application.assets.logger = Logger.new(File::NULL) Rails::Rack::Logger.class_eval do def call_with_quiet_assets(env) previous_level = Rails.logger.level Rails.logger.level = Logger::ERROR if env['PATH_INFO'].index("/assets/") == 0 call_without_quiet_assets(env).tap do Rails.logger.level = previous_level end end alias_method_chain :call, :quiet_assets end
gihyo.jpのリダイレクト設定
gihyo.jp の広告がひどくて、
- でかでかと出てくる
- クッキーを拒否していると毎回出てくる
- スキップが右の方にあってウィンドウの幅が十分にないと横スクロールしないと押せない
- クッキーを拒否していると2ページ目以降が表示できない
- クッキーを許可していても開いたまま時間が経って次のページに行こうとしたら広告ページに飛んでまた最初のページに戻ってしまう
など、かなりひどい状態で耐えきれないので、自動でスキップする設定を探してみたところ http://d.hatena.ne.jp/k2jp/20101214/1292331810 を参考にして Redirector という拡張を使えば良いということがわかった。
記事に書いているように条件が厳しすぎるようで gihyo.jp/admin/clip/01/fdt/201012/21 のようなページがダメだったので、条件を緩めて必要なさそうなところも含めて全ページに ?skip をつけるようにしてみた。
Export した設定は以下の通り:
http://gihyo.jp/dev/serial/01/start_webap/0012,,,(https?://gihyo\.jp/[^?]*)$,,,$1?skip,,,R,,,\?skip,,,false,,,false http://gihyo.jp/admin/serial/01/ubuntu-recipe/0142?page=2,,,(https?://gihyo\.jp/[^?]*)\?(.*)$,,,$1?skip&$2,,,R,,,\?skip,,,false,,,false
プログラミング Ruby 1.9 言語編とライブラリ編
レビューしたということで献本が届いた。