rubygems.org の一部のミラーが応答してくれない問題が起きたんので謎の環境変数を作り出した話

今朝、rubygems.org のミラーの一部が応答してくれず、たくさんの CI ジョブが bundle install できずに何度も死ぬ現象が起きて阿鼻叫喚でした。

問題が起きていないミラーサーバを直接見に行くと bundle install は成功するようでした。

そこで、Gemfile に次のような patch を当て、BUNDLE_SOURCE という謎の環境変数を使って、いざという時は gem source URL を置き換えられるようにしました。

diff --git a/Gemfile b/Gemfile
index df16eb4..22d340d 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,4 +1,8 @@
-source 'https://rubygems.org'
+if ENV['BUNDLE_SOURCE'].nil? || ENV['BUNDLE_SOURCE'].empty?
+  source 'https://rubygems.org'
+else
+  source ENV['BUNDLE_SOURCE']
+end

 gem 'rails', '4.0.0'
 gem 'rack', '1.5.2'

これだけでは、すべての CI ジョブのビルドスクリプトをひとつひとつ編集して BUNDLE_SOURCE=https://rubygems.どこそこ.org/ という行を追加して回らなければなりません。それはとても面倒なので、Omukins の global configuration で環境変数を定義しました。

炭酸水のコスト

炭酸水を好んでよく飲んでいる。家でビールを飲まずに炭酸水を飲めば、痛風も防げるしお金も節約できて嬉しいかもしれない。

と、なんとなく考えているうちに、気づいたら炭酸水を買う場合と自分で作る場合のコストを比較していた。その記録をここに残しておくことにする。

アサヒ ウィルキンソン タンサン を Amazon で買う場合

この商品は、2ケース (48本) セットを Amazon で3,569円で購入できる。1本500mlだから、2ケースで24Lになる。24Lを3,569円で購入することになる。従って 3,569 ÷ 24 = 148.7083円/L となる。

日本炭酸ガス社のステンレスソーダサイフォンを使う場合

専用カートリッジ5箱セットが Amazon で4,900円で売ってる。これは1箱に10個のカートリッジが入っていて、1つのカートリッジで1Lの炭酸水が作れる。従って、1L × 10 × 5 = 50L の炭酸水を4,900円で作れることになる。

水は Amazon で『四季の恵み 自然湧水 岐阜・養老』の2L × 6本 × 2箱セットを買うことにする。すると、1セット24Lで1,029円である。

炭酸水の作成が 4,900 ÷ 50 = 98円/L、水が 1,029 ÷ 24 = 42.875円/L なので、合わせて 140.875円/Lである。

何リットル以上作るとソーダサイフォンの方が安くなるのか?

ソーダサイフォンで炭酸水を作る方が1L当たりのコストが安いことが分かった。しかし、ソーダサイフォンを買うための初期費用が必要なので、途中までは手作りの方が高コストだ。では、何リットル以上作るとソーダサイフォンを使う方が安くなるのだろう?

ソーダサイフォンの値段を \(C\) と置くと、次の1次方程式の解が分岐点となる。

[ \begin{split} \cfrac{3569}{24} x &= \left(\cfrac{4900}{50} + \cfrac{1029}{24}\right) x + C \\ x &= \cfrac{6}{47} C \\ \end{split} ]

よって、ソーダサイフォンが9,400円だったら、1,200L以上の炭酸水を作れば、ソーダサイフォンの方が安上がりだと言える。

Sun Microsystems

Sun Microsystems という名前でキッチン用品の販売会社を作って、SPARCstation っていう名前のシステムキッチンを売り出したら、買う人はいそう。

っていう話を、いつか忘れたけどランチの時に話した。

Solaris っていう名前の業務用食洗機も出して、設置できるようにしよう。

って言い出した人もいた。

Ruby が分数と複素数のリテラル表現をサポートしたよ〜

irb(main):001:0> RUBY_DESCRIPTION
=> "ruby 2.1.0dev (2013-08-01 trunk 42311) [x86_64-darwin12.4.0]"
irb(main):002:0> 1/3r
=> (1/3)
irb(main):003:0> 1+2i
=> (1+2i)
irb(main):004:0> 0.5r
=> (1/2)
irb(main):005:0>

便利になったね〜♪

参考: https://bugs.ruby-lang.org/issues/8430

新 Nexus 7 と現行 Nexus 7 の違い

比較記事がまだ無かったので表を作ってみよう。

項目
CPU Qualcomm Snapdragon S4 Pro 8064(1.5GHzクアッドコア) NVIDIA® Tegra® 3モバイル プロセッサ 1.3GHz (クアッドコア稼動時最大1.2GHz)
メモリ 2GB 1GB
ストレージ 16/32GB 16/32GB
画面解像度 1920×1200 1280×800
駆動時間 不明 約9.5時間
充電時間 不明 約4時間
サイズ 約20.07×11.43×0.76cm 19.85 x 12.0 x 1.045cm
重量 約317.5g 340g

参考文献