携帯電話の見直し(au→IIJmio)

私が学生の時、auの学割プランが目新しく、auと契約していました。卒業してからもauと契約していたのですが、昨年の機種変更時にはauショップの対応に不信感を持ちました。

また、GREEマーケットなど使いもしないアプリを初期状態でインストールされ、それを削除できないというのもよくない点でした。

最近の格安SIMに移行しようと検討していたら、格安SIMだとテザリングができないということで、docomoあたりに移動することを検討していました。しかし、本日のiOS 8で状況が変わったようです。

IIJmioの音声通話パック(みおふぉん)なら、私が携帯電話に求める以下の要件を満たすことができそうです。

IIJ IIJmio SIM 音声通話 パック みおふぉん IM-B043

IIJ IIJmio SIM 音声通話 パック みおふぉん IM-B043

というわけで、IIJmioへの移行を検討していきたいと思います。

HerokuでRMagickを利用する際のGemfile

RailsアプリケーションでRMagickを利用していて、Gemfileを以下のように記述していました。

gem 'rmagick'

開発環境では正常に動作していたのですが、Herokuではエラーとなっていました。以下のように指定して解決しました。

gem 'rmagick', :require => 'RMagick'

参考:HerokuでRMagickを使おうとしてrequireでハマった - アインシュタインの電話番号

自分用ホテルのギフトサイトまとめ(贈る一休のリニューアルのため作成)

贈る一休をよく利用していました。両親や親戚に何か贈るときに重宝していたのですが、今度のサイトリニューアルでギフト券のみの取り扱いとなるようです。今はECサイトも比較的簡単に構築できる時代になり、ホテル各社も独自にECサイトを提供しているケースが増えてきたようです。

贈る一休で私がよく利用していたり、購入を検討していたホテルのECサイトを自分用にまとめました。

どこもきれいなWebサイトですね。楽天でもこういうサイトを作れるようになるといいのですが。

SidekiqがCtrl-Cでプロセスが終了しない場合の対処

Sidekiqを以下のコマンドで実行していました。

$ bundle exec sidekiq

Sidekiqのプロセスが開始されます。

2014-09-09T02:59:29.297Z 4810 TID-ousnfxmnc INFO: Running in ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin13.0]
2014-09-09T02:59:29.297Z 4810 TID-ousnfxmnc INFO: See LICENSE and the LGPL-3.0 for licensing details.
2014-09-09T02:59:29.297Z 4810 TID-ousnfxmnc INFO: Upgrade to Sidekiq Pro for more features and support: http://sidekiq.org/pro
2014-09-09T02:59:29.297Z 4810 TID-ousnfxmnc INFO: Starting processing, hit Ctrl-C to stop

Ctrl-Cで停止すると書いてあるので、Ctrl-Cをしてみます。

^C2014-09-09T02:59:33.760Z 4810 TID-ousnfxmnc INFO: Shutting down
2014-09-09T02:59:35.057Z 4810 TID-ousnhp4fo INFO: Shutting down 25 quiet workers

停止処理がはじまったみたいですが、このまま変化がありません。psコマンドでも、プロセスが動き続けているのがわかります。

$ ps

4011 ttys002    0:03.25 sidekiq 3.2.3 appname [0 of 25 busy] stopping 

つぶやきました。

Sidekiqの開発者からリプライがありました。(なぜ日本語に反応できるんだ?)

celluloidのバージョンに起因する問題だったようです。私の環境のcelluloidのバージョンが0.16.0.pre3だったので、0.15.2を指定しました。

  • Gemfile
gem 'celluloid', '0.15.2'
gem 'sidekiq

bundleコマンドで更新します。

$ bundle update

以上の作業で、SidekiqがCtrl-Cで停止して、プロセスも終了するようになりました。

ありがとう、@mperham!

MacOSにruby-opencv環境をセットアップ

OpenCVで画像処理をすることになり、実行環境をセットアップしました。

HomebrewでOpenCVをインストールします。

$ brew tap homebrew/science
$ brew install opencv

RubyからOpenCVを利用するため、RubyGemsからライブラリをインストールします。

$ sudo gem install ruby-opencv

HerokuでRails+RedisCloud+Sidekiqを利用するために必要な設定

Google App EngineMapReduceで書いていたコードをシンプルにして、Heroku上で稼働させようとしています。非同期処理のライブラリはDelayedJobは使ったことがあったのですが、Sidekiqを利用してみることにしました。

Heroku上の無料枠のあるRedisのAdd-onにはRedis To GoRedis Cloudがあり、無料プランで利用可能なデータが大きいRedis Cloudを利用することにしました。

$ heroku addons:add rediscloud

Development環境とProduction環境それぞれのRedisの接続情報をSidekiqが認識できるように設定します。

  • config/initializers/sidekiq.rb
Sidekiq.configure_server do |config|
  if Rails.env.production?
    if ENV['REDISCLOUD_URL']
      config.redis = { url: ENV['REDISCLOUD_URL'], namespace: 'mynamespace' }
    end
  else
    config.redis = { url: 'redis://localhost:6379', namespace: 'mynamespace' }
  end
end

これで完了だと思っていたのですが、SidekiqのWeb管理画面にアクセスするとInternal Server Errorが表示されます。以下のコマンドを実行する必要があるとわかりました。

$ heroku config:set REDIS_PROVIDER=REDISCLOUD_URL

このコマンドを実行したら、SidekiqのWeb管理画面にアクセスすることができました。

参考:The blog. — In production, you need to tell Sidekiq where to find your virtual Redis server