移転しました。

SLAの稼働率がどのくらいのダウンタイムなのか計算するツール作った

稼働率 => 月間ダウンタイム計算ツール
http://cloned.jp/sla-calc/

ついでなので、有名どころのSLAを調べて載せたんだけど、Google App Engineの95.0%未満で50%返金や、Amazon EC2の 99.0%未満で30%返金みたいな返金レートは国産だと見つけられなかった。みんな10%で統一されていて15%というのが1件見つかったくらい。

そんなにたくさん調べていないのでざっと見た感じだけど、IDCフロンティアの稼働保証が 99.999% と高かった。

topよりグラフィカルで操作性の良いhtopを使ってみた

htop - an interactive process-viewer for Linux

topに色を付けたいと思っていたらhtopというのがあったので使ってみた。SourceForge初めてコミットされたのが2006年3月4日となっていてそんなに新しいプロジェクトではないけれど、4日前にもコミットされていて、ちゃんとメンテされている模様。

Amazon Linuxだとyumリポジトリに入っているので下記だけでインストールできる。

$ sudo yum install htop

色が付いた以上に、CPUやメモリのグラフィカルな表示が可愛い!!

表示中のプロセスをスペースキーで選択状態にできて(画像だと黄色の行)、その場でF9を送信すると選択中のプロセスをkillできる強者。とはいえ、(プロセス番号ではなく)かなりカジュアルにkillできてしまうので本番で使うには恐いなーと思った。

操作性が良くて、表示されていない箇所は下にも上にもスクロールできて、プロセスの選択はマウスでポチっとできるし、各操作もキーバインドを覚える事無く明記されているファンクションキーから各操作ができる。上の画像はF6 SortByを選択したときのもの。topのキーバインドは全く覚えられなくて困る(hでヘルプ出せばわかるっちゃわかるけど)。

開発環境でしばらく使ってみよう。

馨和 KAGUA Rouge Special Edition 2013を開栓

年の瀬になったら飲もうと心に決めていた馨和 KAGUA Rouge Special Edition 2013を開栓した。

「馨和 KAGUA」Rouge Special Edition 2013
「馨和 KAGUA」Rouge Special Edition 2013 posted by (C)cloned

そもそも馨和がどういうビールかについては、最近の記事だと横浜タカシマヤに日本クラフトビール「馨和 KAGUA」−限定試飲販売も - ヨコハマ経済新聞が適確に説明されていると思う。

7月に販売開始間もなく購入したので約4ヶ月寝かせてからの開栓。元々の馨和 Rougeがアルコール度数が9%なのに対してこれは11%なので、力強い味なのだろうという思い込みがあったためか、第一印象は「あっさり」だった。もちろん「薄い」という意味ではなく、Special Editionじゃない方と同じくらいの「あっさり」という意味である。

しかし、二口、三口と飲み進めるうちに「あぁ、丸いな」と感じるようになった。数ヶ月という若さにも関わらず「丸い」と感じられるのは非常に好印象だった。とはいえ、「ビールとして丸いか?」と問われれば「まだまだ生き生きとしている」と答えると思う。あくまでも元々の馨和 Rougeに比べて丸さを感じられるということであるし、繊細な炭酸が生き生きと感じされるのかもしれない。この辺はビールの状態(コンディション)に依るので、僕自身が飲んだ状態に依るのだけれど、こういう「ビールの状態」が存在するのも面白味の一つだろうか。

「馨和 KAGUA」Rouge Special Edition 2013
「馨和 KAGUA」Rouge Special Edition 2013 posted by (C)cloned

さて、話は変わってシリアルは3495だった。4000本の限定醸造で自分の瓶が何番なのか記載されている。特に3495という数字に意味はないけれども、4000本の中の1つをいただいている、というのも一つの楽しみになる。

この「馨和 KAGUA」Rouge Special Edition 2013はなんとまだ在庫があるらしい。750mlで3,045円。酒屋でシャンパンをカゴに入れる人にとってはそんなものかという値段だろうし、ビール1缶(350ml)200円と思う人にとっては高いと思う。このビールをどういうポジションと見るかによって高い安いの感覚は変わると思う。

馨和はとてもおすすめのビールだけど、Special Editionから入るよりは普通のバージョンを買ってみて好きかどうか試してみるのが良いと思う。

関西ソーシャルゲーム勉強会でVPCとChefに関する発表をしてきました

第5回 関西ソーシャルゲーム勉強会Amazon VPCとChefに関する発表をしてきました。発表資料は以下のリンクからどうぞ。

小さく始めて後で困らないためのVPCとChefを使ったAWS運用

ガチャみたいに設定した確率で抽選を行うPHPライブラリを作った

くじ引きやガチャガチャのように、あるものはよく出る、あるものはあまり出ない、というように確率に差がある上で一つ抽出する、というプログラムをたまに書くことがあるので、その部分だけを行うPHPライブラリを作った。

インストール

Composerを使う場合は、composer.jsonのrequireに

"cloned/luckybox": "$VERSION"

を追加。$VERSIONに入れられるバージョンはPackagistを参照。今のところは 0.9.* としておくと良いでしょう。

Composer推奨だけど、Composerを使わない場合はGitHubからソースコードをダウンロードしてrequire_onceしてもOK。

使い方

コインは60%、キノコは35%、スターは5%、という設定で1回くじを引いてみる例はこんな感じ。

<?php
use LuckyBox\LuckyBox;
use LuckyBox\Card\IdCard;

// Items
$items = array(
    1 => array('name' => 'Coin',     'rate' => 60), // 60%
    2 => array('name' => 'Mushroom', 'rate' => 35), // 35%
    3 => array('name' => 'Star',     'rate' => 5),  //  5%
);

// Setup
$luckyBox = new LuckyBox();

foreach ($items as $id => $item) {
    $card = new IdCard();
    $card->setId($id)
         ->setRate($item['rate']);

    $luckyBox->add($card);
}

// Draw
$card = $luckyBox->draw();
$item = $items[$card->getId()];

echo "You got {$item['name']}" . PHP_EOL;

LuckyBoxに確率(rate)を設定したCardを詰めて、LuckyBox#draw()するとその確率に応じた割合で一つ取得できる。
バンドルされているIdCardクラスは、rate以外にidのみ保持できるクラスで、より複雑なCardを作りたい場合は、Cardインタフェースを実装したものであれば自作しても利用可能。

デフォルトでは無限に LuckyBox#draw() できるけれど、LuckyBox#setConsumable(true) するとadd()したCardの分しか引けなくなる。こんな感じで利用できる。

<?php
$luckyBox = new LuckyBox();

// Add some cards.

$luckyBox->setConsumable(true);

while (!$luckyBox->isEmpty()) {
    $card = $luckyBox->draw();

    // Do something.
}

0.5% みたいなより精度の高い確率を設定したい場合は、より大きな数をrateに設定すると可能。

<?php
$card1 = new IdCard();
$card2 = new IdCard();
$card1->setRate(1023); // 10.23%
$card2->setRate(8977); // 89.77%

ここでは説明しやすいように合計を100とか10000にしているけれど、実際には全てのrateの合計に対する比率になっているので、「1:1:3」みたいな指定も可能。「1:1:3」とすると「20%:20%:60%」という確率になる。

同じような要件があって、まだコーディングしていなければ、是非使ってみてください。

ウェブサイトで英数字のIDを表示するときに最適なフォント

注文IDや招待IDなど英数字の羅列を表示することがあるとして、ユーザーがその文字列をコピペできない(もしくはコピペが面倒、難しい)場合、各文字を間違わずに識別できる必要がある。具体的にはゼロとオーなどの似ている文字を勘違いせずに済むようにしたい。

一般的にウェブサイトで良く利用されるフォントであるArial、Verdanaでゼロとオーを表示すると下記のようになる。次に勘違いしやすそうなイチとエルも書いてある。
左から、ゼロ オー イチ エル。

こうして見ると細長い方がゼロだなと区別は付く。とはいえ、ゼロにスラッシュがあればより勘違いする可能性が低いだろうから、ゼロにスラッシュのあるフォントを探してみた。

OS X Mountain Lion:フォントリストより、Macにインストールされているフォント(ただし英語フォントのみ)でゼロにスラッシュのあるものを探してみた。こんなにたくさんのフォントがインストールされているのに、ゼロにスラッシュが入っているフォントは下記のみだった。

今度はList of Microsoft Windows fontsからWindowsにあるフォントでゼロにスラッシュのあるものを探してみた。

え、Consolasだけ?あんなにもフォントがあるのに。

結論

font-family: "Monaco", "Consolas";

MacをMonacoにしたのはイチとエルの区別も分りやすいというのがありますが単に好みです。Consolasはイチとエルが似ているのが微妙ですね。Linuxは手元にGUIが動く環境を持っていないので検証していません。また、Webフォントはブラウザが対応していない可能性があるので検証していません。

PHPカンファレンス関西2013のLTでPHPUnitに関する発表をしてきました

PHPカンファレンス関西2013のLT(ライトニングトーク)セッションでPHPUnitを使ってCoverage 100%を目指すためのちょっとしたTipsについて発表してきました。

はてダにSlideShareをうまく貼付ける方法が判らないので、発表資料は以下のリンクからどうぞ。

一人でゲームをリリースするための自動化 PHPUnit編 ~目指せCoverage 100%~