Page 11 of 15

KMC のホームページ は現在部室のサーバでホスティングされているのですが, 部室の掃除等でサーバが停止した際に外部向けのページが落ちるのはダサいので, いい感じにする方法を考えています.

私はS3 でホスティングするのが値段的にも良いと考えているので, S3 でホスティングする方法を調べていたところ, s3_website なるものを発見したので試してみた.

使い方はUsage に書いてあることそのままで,

s3_website cfg create

して

s3_website cfg apply

して

s3_website push

するだけ. (build にJekyll を使っていてそこでbundle を使っていたので実際はbundle の元で行った)

実際に置かれているのがこれ. ここ と同じものが今は置かれている.

手元にビルド前のファイルは置かれているので, 低冗長化ストレージでよいので, 月$0.0264 /GB で利用できる. 料金表

普通の静的サイトだと1GB も行かないので, 月3円程度でホスティングできる. 実際安い.

このページ(nna774.net) もS3 でホスティングしたいなぁ とは思ってるが, https を提供したいと思っているので, どうしようかなぁ って感じだ. 独自SSL は月600ドルとかかかってつらい.

とりあえず置いてみた.

MBA にArch Linux を再インストールする事になった.

EFI についてのところがいつもどうすればいいのかわからないのでメモ

ここ の通りにやればいい

まで書いたら他に書くことがなくなった.

普通にこう するだけではダメなので注意.

Github Longest Streak

切らないことを目標としていた感じだったけれど, 昨日切れてしまった.

また伸ばしていかないと.

追記

何故か繋がった.

よくわかんないけど, ラッキーだと思って切れないようにします.

KMC のOB 会でhttp://kmc-jp.github.io/nona7-ob-slide/ しゃべったほげ.

KMC にCloudStack が立ちました.

なんかいろいろあってCloudStack が立ちました.

最初はOpenStack を立てようとしてたのですが, なんかうまくいかなくてやめました.

CloudStack はWeb からぽちぽちと設定したらいい感じにできたので楽でした.

KMC は学年, 所属にかかわらず入会することができます. 詳しくはこちら.

KMC はマシンをくださる企業も募集しております.

釣りタイトルっぽいと思ったけど全然事実だ.

一時期良く聞いたFree Monad, 最近KMC の中で話が出て, いまいちよくわからないところとかが出てきたので, ちょっとメモ的な.

まず定義

ここ にある.

data Free f a = Pure a | Free (f (Free f a))

instance Functor f => Monad (Free f) where
    return = Pure
    Pure a >>= k = k a
    Free fm >>= k = Free (fmap (>>= k) fm)

なんなのか

λカ娘の5巻, 第三章 「侵略者と転校生とアイドルとイカが再帰を学ぶそうですよ!」 に, 一般的なリスト

data List a = Nil | Cons a (List a)

を,

data Rec f = In (f (Rec f))

type List a = Rec (L a)
data L a x = Nil | Cons a x

のように定義し, 一般的なツリー

data Tree a = Prune | Leaf a | Branch (Tree a) (Tree a)

をさっきのRec をこっちでも使って,

type Tree a = Rec (T a)
data T a x = Prune | Leaf a | Branch x x

と書くことができると書いてあった.

もともとList とTree は再帰的構造を持っていたが, この書き換えによって, L , T という再帰的構造を持たない単なるデータ型と, Rec という再帰構造だけを持つ型の組み合わせに分けることができる.

これと,

cata :: Functor f => (f a -> a) -> (Rec f -> a)
cata phi (In x) = phi (fmap (cata phi) x)

ref

AWS, 無料枠を使いきってしまってからは長らく放置していたが、最近スポットインスタンスの存在を知って感動した。

スポットインスタンス

スポットインスタンス とは、 Amazon の使われていない計算資源をオークション形式で利用できるシステムだ。

オンデマンドインスタンス と比べると、かなりの安さで同じマシンを利用できる。

無料枠で利用できた、t1.micro インスタンスは、オンデマンドインスタンスなら $0.020 / 1時間 であるが、スポットインスタンスなら、だいたい$0.003 / 1時間 程度で借りることができる。 一月で300円もかからない計算になる。

もちろん安いのには理由がある。 スポットインスタンスは、起動リクエスト時に、「1時間あたりこの値段までなら出せる」という価格を提示して、その値よりも"実際の値段" が安ければ利用できる という風になっている。

この"実際の値段" というのは、需要によって決定されるので、みんなが使うと値段が上るし、使っていなければ下る。

そして、もしインスタンスの起動中に、実際の値段が上って、自分が提示した価格を上まわった時、自分のインスタンスは停止させられる。

このようにいきなり停止されてしまう可能性があるかわりにとても安くなっている。

安定性を求められるものには使えないが、大きな計算資源の必要なことがしたい時などにはこのインスタンスは便利だ。

c3.8xlarge という仮想32コアのすごいマシンがあるが、このマシンはオンデマンドだと$1.680 / 1時間もする。10時間ぐらいで計算が終わるとすると17ドルぐらい。ちょっと高いけどまあ出せなくはない額だ。20時間になると学生が遊びに使うにはちょっとキツい……

しかしスポットインスタンスなら、だいたい$0.25 / 1時間 程度で借りることができる! 20時間まわしても5ドルしかかからない! 余裕!

わたし

最近2048AI を強くするために、大量のプレイアウトやモンテカルロなどで大きな計算資源が必要であった。 うちの自慢のCloudStack(KMC で立てました。主に私が管理してるのでなんでもしほうだい) でも、3GHz * 4コアのインスタンスが作れる上限だが、そのインスタンス一つで全計算ノードの20% を食い尽してしまう。

2048AI のためにオンデマンドインスタンスで数千円溶かせるほどではないのでどうしようかなーと思っていたら、スポットインスタンスの存在を教えてもらって感動した。

うちのCloudStack の全ノードが束になってようやくちょっと敵わない程度のインスタンスが、全ノードの平常時電気代ちょっとで借りることができる。

スポットインスタンスを使えばかなり安く強大な計算資源が手に入るので、これからは計算資源が少し足りない時は力技でなんとかできそうだと思った。夢が広がる。

memo

インスタンスの起動時に自分が指定するのは、あくまで「出せる上限」なので、実際にかかる金額は"実際の値段" しかかからない。

値段のグラフを見ていると、時々どこかの企業が何かをしてるのか、大きく変動していたりしていておもしろい。

このスライド はAmazon の人のスライドらしいが、これの55ページからがスポットインスタンスの説明になっている。 また、72ページからが、スポットインスタンスの入札の戦略になっていて興味深かった。

2048 AI コンテストの第二回があった。

今回の私の出場した際のソースコードはこれ です。

今回は三位でした。

前回の時と比べて、かなりの高速化を図れたので、10手読みまで行くことが可能となった(前回は6手読みだった)。

Grid を前回はstd::array<std::array<int, 4>, 4> だったが、64bit int 一つで16個のGrid を表わすようにして、色々な操作を謎のbit 演算にすることでかなり高速になった。

謎のbit 演算が沢山でてきて辛かったので、Google Test も導入した。

10手まで読めるようになったことによって、4096 まで作れるようになった。

まだ100〜1000回に一回程度しか8192 を作ってくれない。

GA も実装しないと。

ref

Page 11 of 15