Ruby 2.2 の新機能にシンボル GC というものがあります。 正直、「え、シンボルって GC されないから速いんじゃないの?なのにシンボル GC で Rails が速くなるとか話聞くけど、いったいどういうことなの?」という感じでサッパリ理解できてなかったのですが、その辺りの疑問に対してまとめられている記事がありました。 Symbol GC in Ruby 2.2 とても分かりやすく素晴らしい記事だと感じたので、許可をもらって以下に日本語訳を公開します。 Symbol GC in Ruby 2.2 シンボル GC ってなに?それって気にしなくちゃいけないことなの? リリースされたばかりの Ruby 2.2 の大きな新機能として「インクリメンタル GC」が挙げられますが、もう1つの注目すべき新機能が、この「 シンボル GC 」 です。 もしあなたがこれまで Ruby の世界で過ごしてきたのならば、きっと「シンボル DoS」という言葉を聞いたことがあるのではないでしょうか。「シンボル DoS…

READ MORE >>



Rails 4.2 を PostgreSQL を使って Elastic Beanstalk にセットアップする (1) の続きです。 今回は DB の設定をしていきます。が、その前に 環境変数をセットします。 SECRET KEY BASE Rails はデフォルトでセッションの情報を「すべて」クライアントの Cookie に格納するため、それを暗号化するための秘密鍵が必要です。当然これは秘密にする必要があるため、Rails 4.1 からは、production 環境ではそれを環境変数 に設定して、 で読み込むようになっています。(確か、Rails 4.0 のチュートリアルでは、 が無かったので、initializer で動的に生成していました。) したがって、環境変数 を設定しておかないとエラーになります。 Elastic Beanstalk での環境変数の設定は Web の管理コンソールから行います。 Configuration -> Software Configuration -> Environment Properties…

READ MORE >>



これまで Rails アプリケーションの公開は Heroku への楽ちんデプロイしかしたことがなかったので、AWS を使ってみることにしました。でもやっぱりサービスを自分で組み合わせて構築するのは大変そうだったので、結局、PaaS として使える Elastic Beanstalk を利用することにしました。 最終的には、ELB のロードバランシングと RDS のレプリケーションによる冗長化と、セッションストアに ElastiCache や DynamoDB を使った動作確認までしたいと思ってますが、とりあえずは普通に動かすとこまで。長いので何回かに分けて書きます。ちなみに Ruby のバージョンは 2.1.5 にしました。 Elastic Beanstalk CLI のインストール Elastic Beanstalk は Web の管理コンソールから管理しますが、CLI も用意されています。しかし、AWS のドキュメントでも古いのから新しいのまで色々な情報が書いてあって、正直、いきなりここで何を使えばいいのかがわからず苦戦しました。結局、Homebrew…

READ MORE >>



Objective-C の Category にあたる機能は Swift では Extension として提供されています。 Objective-C の Category には、 のように、 とつけるのが一般的でした。では、Swift の Extension の場合はどんなファイル名にするのがいいんだろう? 結論 公式なガイドラインはないようですが、Objective-C の Category と同じ。つまり、 のようにするのが良いようです。 Most examples I have seen mimic the Objective-C approach. The example extension above would be: The advantages are that the naming convention makes it easy to understand that it is an extension, and which Class is being extended. What's the best practice for naming Swift…

READ MORE >>



プライベートリポジトリ用に建てている GitLab には、CloudFlare で SSL を有効にして https でアクセスしていますが、Ubuntu 14.04 から しようとしたら、 とのエラーで失敗してしまいました。 も も全部失敗します。CloudFlare を経由する前は問題なかったので、おそらく SSL のプロキシが失敗している理由でしょう。また、Mac の git からはアクセスできているし、エラーメッセージにも が失敗しているとあるので、Ubuntu の git が依存している SSL ライブラリに原因がありそうです。 OpenSSL を使う git のビルド もはや当然のように Stack Overflow にはほぼ同じ質問があり、そして解決法についての回答もありました。「gnutls はプロキシ越しだと変な挙動をするから、openssl を使うようにビルドするといいよ」とのこと。そうなんだ… GnuTLS が微妙なんですかねぇ。 とりあえずその指示の通りに、openssl をリンクした git…

READ MORE >>



よちよち.rb の冬休みのシュクダイとして、「何か読んで読書感想文を書こう!」という企画があったのでのっかりました。といっても、特に読もうと思っていた本があるわけではなかったので、企画段階で課題図書として案のあった「コードの未来」を読むことにしました。 ぶっちゃけ、読む前は、そのタイトルや、雑誌の連載をまとめたものということから、軽い感じで読めるコラムが沢山あるような本を想像していました。なので、読み進めていて、ちょっと読むのに時間がかかりそうなところ (ガッツリとコードが出てくるところとか) が出てきたら飛ばしちゃったりしていたんですが、そうすると途中からほとんど飛ばすことになってしまって、「なるほど、これはサクっと読める本じゃなかったんだな…」と、勘違いしていた認識を改めて、ちゃんと腰を据えて読むことにしました。 所感 最近 Ruby…

READ MORE >>



Swift で作っているiOS アプリに、Facebook の iPhone アプリのような横にスライドして表示されるメニューを追加したいと思いました。 いくつかライブラリを見てみたところ、iOS-Slide-Menu というライブラリが簡単に使えそうです。iOS-Slide-Menu は Swift ではなく Objective-C のライブラリですが、インストールも CocoaPods で1発なのでそれを利用することにします。ただ、素直に Readme に記載されている通りの実装をしただけではうまくいきませんでした。その理由は、 作っているアプリが Tab Bar インターフェースを持っている 各タブにそれぞれ個別の Navigation Controller が設定されている iOS-SlideMenu が提供する SlideNavigationController はシングルトンオブジェクト だからです。したがって、複数の Navigation Controller にそれぞれ SlideNavigationController…

READ MORE >>



先日公開した yochiyochi-pingping のステージング環境を作りました。 yochiyochi-pingping は Heroku 上で運用しています。が、ローカルの開発環境では、GitHub の OAuth 用のアプリケーション登録すらしていません。なので、修正したときには、ろくに動作確認もせずにいきなり Live に push してうまく動くことを祈る、というメチャクチャなやり方をしていました。しかし、利用してくれている人もいるので、さすがにこれじゃマズいだろう、ってことで、Live と同じ Heroku 上にステージング環境を作ることにしました。 Heroku にステージング用のアプリを作る Heroku でのステージング環境の構築は、調べてみるといくつか方法があるようで、Heroku アプリをそのまま fork して複製することもできるようです。当然、Live と ステージング環境は同様の環境であることが望ましいので、fork するのは良い方法でしょう。ただ、私の場合は、New Relic や Heroku Scheduler…

READ MORE >>



この記事は 「よちよち.rb Advent Calendar 2014」 17日目の記事です。 昨日は katorie さんによる 「よちよち.rb 第49回 #yochiyochirb」 でした。katorie さんは毎回レポートを書いてくれているので、残念ながら参加できなかった日も、そのレポートを読めばどんな内容だったのかをおよそ掴むことができるのでとても嬉しいです。 また、ミートアップで GitHub の Issues を使っているので、ウォッチしていればリアルタイムに活動状況がバンバン飛んできます。もちろん参加するのが一番楽しいのは間違いないですが、参加できない日でもこうして参加気分を味わうことができて、置いてきぼり感を感じさせないのも、よちよち.rb のとても素敵なところだと思います。ときには参加していない人からの「突然の」書き込みがあったりして盛り上がるのも楽しいです。これは、コミュニケーションツールに Idobata のチャットを使っていることも大きいのでしょう。 さて、その Idobata を眺めていると、「music…

READ MORE >>



この記事は 「よちよち.rb Advent Calendar 2014」 9日目の記事です。 昨日の記事はトミーこと ta1kt0me さんによる 「Rspec3のexpectとallowの違い」 でした。Rspec3 の と の違いを説明しながら、読むと「スタブ」と「モック」の違いを理解できる内容になっています。掲載してあるサンプルコードは長くないものですが、似ているけど微妙に細部が異なっているようなコードが多く、注意深く読んで内容を掴まないと混乱するので丁寧に読みましょう!ちなみに私は Rspec をほとんど使ったことがないのでとても勉強になりました。 さて、今日の記事は「審判の雷 Lightning Picker」です。意味わかんないですよね。はい、自分でもよくわかりません。これは、ADVENTAR 上でアドベントカレンダーに登録するときに適当につけちゃったタイトルです。いつもこういうの「細かいことは後で考えよーっと」と適当にノリでやっちゃって後悔することが多いです。今度の LT…

READ MORE >>