札幌でペアプロした

札幌の東の方でペアプロをやってきた。相方はあんにゅい人だった。お題は FizzBuzz ゲーム。言語は JAVA スクリプト。普段 Ruby か C しか書かない私が JAVA スクリプトなんてはたして使えるのだろうか。甚だ疑問であった。

成果物はこちら。Slim を使うためだけに rails new しているとても贅沢なプロジェクトだけど、もう年末だから問題ないと思う。

画面のレイアウトを大まかに作り、ランダムに数を表示してボタンに応じて反応させるところまではペアプロで作り上げた。その後、ゲームのメインロジックを相方に作ってもらった。それと並行して、私はひたすら音を入れる事に四苦八苦していた。

BGM と効果音は、うちの社内システムでレスポンスタイムの可聴化のために使われてる timbre.js というライブラリを使って実現した。いつかこのライブラリをまともに使ってみたかったので満足している。

プレイしてみてください

DevOps のグラデーション

世の中には色んなウェブエンジニアがいるので、DevOps といってもやってる仕事の割合は人それぞれで変わると思う。これを DevOps のグラデーションと名付けたい。5段階くらいで分けると次のようになると思う。

  1. ただのオプス
  2. 少しデブなオプス
  3. デブオプス
  4. 少しオプスなデブ
  5. ただのデブ

みなさんは、どこを目指してますか?

迷ったら健全な方を選びましょう。

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