Shoken

ひとつずつアウトプットする

Rails + New RelicでRuby 2.0にバージョンアップするとエラー NoMethodError undefined method `empty?'

解決するまでに時間がかかったので、情報共有。

以下に当てはまる場合は一読を

  • Rails 3.2系
  • New Relicで監視している
  • Ruby 1.9.3から2.0へバージョンアップするとエラー
  • Production環境のみで、TOP画面アクセスした場合にNoMethodErrorが出る
NoMethodError (undefined method `empty?' for nil:NilClass):
  app/controllers/xxxx

解決策はNew Relic Gemのアップデート

New RelicのGemを3.6.x以上にアップデートする。 Gem名はnewrelic_rpm

なぜ解決に時間がかかるのか

理由1. Production環境かつ、New Relicで監視している環境でしか再現しない

原因がわかった後から考えると当然なのだが、原因不明だった時はなぜ本番環境のみで発生するのかわからなかった。Production環境で起動しているステージング環境を用意していたのだが、New Relicを入れてなかったので再現せず、現象の再現までに時間がかかった。

理由2. エラーログにNew Relicとわかる情報が出ない

RailsのログにはNoMethodErrorが出るがスタックトレースにNew Relicの文字が出ない。こんなログが出る。

[2013-12-28 09:12:54] [xxx.xxx.xxx.139] [nil] [xxxxxxxxx85be8a473f10507bd9acc01] Started GET "/" for 50.31.164.139 at 2013-12-28 09:12:54 +0000
[2013-12-28 09:12:54] [xxx.xxx.xxx.139] [nil] [xxxxxxxxx85be8a473f10507bd9acc01] Processing by TopController#index as */*
[2013-12-28 09:12:54] [xxx.xxx.xxx.139] [nil] [xxxxxxxxx85be8a473f10507bd9acc01] Completed 500 Internal Server Error in 280ms
[2013-12-28 09:12:54] [xxx.xxx.xxx.139] [nil] [xxxxxxxxx85be8a473f10507bd9acc01]
NoMethodError (undefined method `empty?' for nil:NilClass):
  app/controllers/concerns/mobile_view_selectable.rb:32:in `render_to_body_with_rename'
  app/controllers/application_controller.rb:36:in `set_timezone'

最初はset_timezoneを追っかけてた。 他の人のブログを読むと、スタックトレース部分のエラーログは環境によって変わる。

理由3. エラーログで検索しても情報が見つけにくい

Ruby 2.0にバージョンアップすると出るので、最初は”Rails Ruby 2.0 NomethodError”や”Rails Ruby 2.0 Error set_timezone”で検索していたが、他の多くの情報に埋もれて解決できる情報にはたどり着けなかった。結局、本番環境でデバッグして、ソースコードを追っていくとNew Relicのコード内でメソッドを呼び出し例外が発生していることが判明。

Rails Ruby 2.0 New Relic”で検索すると困っている人や解決した人がいっぱいいた。

ついに日本でプリペイドSIMがコンビニ発売、OCN モバイル ONE

f:id:sfujisak:20131214173256j:plain

東南アジアではポピュラーなプリペイド式のSIMカードが、OCN モバイル ONEからリリースされました。12月14日から全国のローソンで買えるそうです。

http://www.ntt.com/release/monthNEWS/detail/20131213.html

プラン

初回パッケージは30日間ぶんの利用権、登録手数料およびSIMの配送料込みで3980円。

最大下り通信速度は150Mbps、最大上り通信速度は50Mbps。1日30MBまで高速に通信でき、容量超過後は下り上りともに200Kbpsで利用可能です。

日本初

NTTコミュニケーションズによればMVNO SIMのサービスがコンビニで売られるのは日本初とのこと。標準、ミニ、ナノSIMカード対応なので、SIMフリー版のiPhone 5sに使えます。

短期プランも欲しい

例えばシンガポールのM1というキャリアでは、7日間の有効期限で1GB分が7SGD(約560円)で使えます。1〜2週間のステイで使いやすいプランが今後出て欲しいですね。

タイムラインに邪魔されなくなるFacebook Messanger クライアント Astro

f:id:sfujisak:20131212164438j:plain

これは何?

Mac OSX用のFacebook Messanger クライアントアプリ。iPhoneアプリのMessangerのデスクトップ版と考えれるとわかりやすい。 悪魔の魅力を持つFacebookのタイムラインを見ることなく、メッセージのみに集中できる。こんなアプリ探してた。

何ができるの?

Facebookのメッセージを送受信できる。Messages(iMessages)でもJabberプロトコルを使った送受信はできるが、Astroの違いは、

  • 過去のメッセージ、起動していなかった時に受信したメッセージもすべて表示できる
  • グループメッセージに対応

という点。この2つがとても強力。

また、画像をDrag&Dropで送信できたり、メニュー => Tools => キャプチャスクリーンから画面キャプチャをダイレクトに送信できたりする。

何がうれしいの?

仕事関係でFacebookメッセージは使っているけど、ブラウザからメッセージを確認するとタイムラインに誘惑されて気がつけば1時間もWebを見ていた。。ということが無くなる! ブラウザでFacebookを開いていたタブを無くせるのもメリット。ピコピコするノーティフィケーションも出なくなる。

イマイチなところ

ショートカットがほぼ無い。メッセージを矢印キーで移動できない。ペインをで移動できない。 次のバージョンで機能追加してくれることを期待。

いくら?

App Storeで200円(記事作成時)。

https://itunes.apple.com/jp/app/astro-for-facebook-messenger/id726828968

※追記あり

まとめ

ずっと欲しいと思ってたMacのデスクトップで使えるFacebookメッセンジャークライアント。 探しても良さそうなのが無かったので、自分で途中まで作りかけてた。それが200円で手に入るなんて、めっちゃコスパ良い。Facebookメッセージの効率が飛躍的に向上した。今年一番大きくアウトプットに影響した買い物かもしれない。 これからもバージョンアップしていって欲しい。

追記 2013/12/25

最近アプリを起動してもFacebookに繋がらなくなったので、ネットで探してみると買ってから1週間後に無料アプリになってました。おいおい。

https://itunes.apple.com/jp/app/astro-free-for-facebook-messenger/id772982392

Macで/etc/hostsが反映されない時に確認すべき2つのこと

Mac

Macでhostsファイルを変更しても、思うように名前解決ができないときの確認ポイント。

環境: Mac OS X 10.6.8 Snow Leopard

1. DNSキャッシュをクリア

$ sudo dscacheutil -flushcache

参考
http://ymotongpoo.hatenablog.com/entry/20101007/1286413162

2. hostsファイルの文字コード、改行コードを確認

shift-jisとCRLFになってた。何で?
utf-8のLFにする。

参考
http://techpatio.com/2011/guides-how-to/fixed-mac-osx-lion-etc-hosts-bugs-dns


名前解決ができているかどうかは、pingで確認すると簡単。

Webだけで印影(印鑑)の透過画像を作成する方法

WEB

Web上のサービスだけで印影(印鑑)を作成する方法です。もちろん無料です。透過画像の印影を作った際のメモ。

ステップ 1 画像の用意

印影画像を作成します。または、こちらからダウンロードします。
画面下部のWeb認印という画像のリンクから作成できます。

ステップ 2 画像を透過

pixlr editorで透過画像にします。
ポイントは、3つ
・レイヤーのロックを外す。レイヤーウィンドウの鍵マークをダブルクリック。
・選択ツール(W)で背景を切り抜く。選択ツールを使っている状態で、背景の白をクリック。隣接部のチェックを外すと一回でいけた。上手く行かない場合は公差を調整する。
・選択ツールでうまいこと選択できたら、編集 -> 消去。またはdeleteボタン。

pixlrでの切り抜き作業に関しては、こちらのブログが詳しいです。
http://ameblo.jp/hcak777/entry-10920136827.html

ステップ 3 画像を保存

pngで保存すると、背景が透過された印影ができます。