OSS版Drone+Vagrant+Bitbucket を試す

OSS 版 Drone がようやく動いたので、メモします。 VagrantUbuntu を立てて、Bitbucket のプライベートレポジトリと連携するところまで。 今回はPython3+Django です。

Vagrant

ubuntu を使います。

vagrant init ubuntu/trusty64

Vagrantfile は以下の通りです。ふつうです。

Vagrant.configure(2) do |config|
 config.vm.box = "ubuntu/trusty64"
config.vm.network "forwarded_port", guest: 80, host: 8080
 config.vm.network "private_network", ip: "192.168.33.10"
 config.ssh.forward_agent = true
end

vagrant を起動して入ります。

vagrant up
vagrant ssh

Docker のインストール

sudo apt-get install docker.io sqlite

Drone のインストール

README に書いてある通りにインストールして起動します。

# Ubuntu, Debian
wget downloads.drone.io/master/drone.deb
sudo dpkg -i drone.deb
sudo start drone

http://localhost:8080 にアクセスして、Drone の画面が出るか確認

ngrok

ngrok を使って、 Vagrant内で起動している Drone を外部公開する必要があります。

wget https://dl.ngrok.com/ngrok_2.0.17_linux_amd64.zip
unzip ngrok_2.0.17_linux_amd64.zip

ngrok をダウンロードしたら、お好きなサブドメインを決めて、バックグラウンドで実行します。 ここでは適当に ksmzndrone とします。

./ngrok http -subdomain=ksmzndrone -log=stdout 80 > .ngrok2/ngrok.log &

https://ksmzndrone.ngrok.io にアクセスして、さっきと同じ画面になればOK。

Bitbucket の設定

コンシューマキーの登録

今回は Bitbucket のレポジトリを指定します。 まず、「アカウントの管理」→「OAuth」で コンシューマキーを登録します。

名前を適当に「drone」とし、 URLを先ほどngrokで指定したURL+「api/auth/bitbucket.org」とします。 今回は「https://ksmzndrone.ngrok.io/api/auth/bitbucket.org」ですね。

登録すると、「鍵」と「Secret」がもらえます。

これを /etc/drone/drone.toml の bitbucket の欄に記載し、 さらに「open=false」→「open=true」とします。

記載したら保存し、drone を再起動します。

sudo restart drone

アカウントの登録

https://ksmzndrone.ngrok.io を開くと、Bitbucketの設定ができるはずなので、 アカウントを登録し、レポジトリをアクティベートします。

フックの設定

その後、レポジトリの「Setting」→「フック」を開き、 POST の URL のドメインが「https://ksmzndrone.ngrok.io」になっているか確認します。 もし URL が localhost から始まっていたら、その部分を「https://ksmzndrone.ngrok.io」に変更し、 最終的に「https://ksmzndrone.ngrok.io/api/hook/bitbucket.org/****************」 となっていればOK。

Docker の設定

では、Docker の設定を行いましょう。 まず、Drone のベースとなる image を pull します。

sudo docker pull bradrydzewski/ubuntu
sudo docker pull bradrydzewski/base

次に、自分のアプリのビルドに必要なものを用意します。 今回は Python3+Django ということで、 Python3 の image を用意します。

sudo docker pull bradrydzewski/python:3.3

.drone.yml

自分のレポジトリのルートディレクトリに .drone.yml を配置し、ビルドの設定を書きます。

image: bradrydzewski/python:3.3
script:
 - echo 'Hello, Drone!'

とりあえず今回は、ただ echo するだけの .drone.yml にしました。

実行

では、この状態で Bitbucket のレポジトリに Push してみましょう。 無事に echo されれば、OK です。

参考

AR.Drone 2.0 Power Edition (「HDバッテリー」×2本、「カラープロペラ」×3色同梱)

AR.Drone 2.0 Power Edition (「HDバッテリー」×2本、「カラープロペラ」×3色同梱)

ドローン空撮入門

ドローン空撮入門

確率分布を学ぶアプリを、shinydashboard を使って新しくしてみた & 英訳していただきました。

昨日は花粉がひどいのでShinyで遊んでいました。 一瞬窓を開けただけでハナが出たのでもう外出られません。 でもいいんです。ぼくにはShinyがありました。

shinydashboard で綺麗なShiny

以前Shinyで作成した、 確率分布を学ぶアプリ を、 shinydashboard を使って デザインやUIを一新しました!

いろいろな確率分布のパラメータをいじくるアプリ

以前のデザインより見やすく、綺麗になったと思います! shinydashboard は綺麗なデザインもさることながら、 使い方も簡単だったのでとても便利ですね。 配色のセンスが無いので青一色にしたのがぼくの残念さを物語っています。 他の人ならもっとオシャレにできると思います。

ただデザインを変えるだけなのもつまらないので、 確率分布の期待値や分散 を表示するように変更しました! 確率分布のパラメータを変更すると、きちんと期待値と分散の値も変化します。

値を表示している青色の領域は、valueBoxというshinydashboardの機能です。 カラーも多く用意されているし、アイコンも載せられるのでパッと見オシャレですね。 アイコンはなんとFont-AwesomeGlyphicons が使用可能です。ほんとオーサムですね。 ただ、豊富に用意されすぎていて、期待値と分散にどんなアイコンを使えばよいかわからなくなりました...。 とりあえず、期待値は大事な統計量なので☆マークに、分散はばらつきっぽく↔矢印マークにしてみました。
良い候補を思いついた方は教えて下さい。

英訳していただきました

また、報告が遅れましたが、 @kaz_yosさんがこのアプリを英訳して下さいました!! ものすごく嬉しいです!ありがとうございました!!

関連記事

参考文献

Shiny Dashboard

超幾何級数を扱うhypergeoパッケージ

世の中には興奮することっていっぱいあるけども、
一番興奮するのはやっぱり超幾何級数を扱うときですよね。

超幾何級数についてのWikipediaはこちら
活用例などはこちらがおすすめです。
ちなみに僕は、非心ベータ分布の平均を計算するために用いました。

R言語で超幾何級数を扱うときは, hypergeoパッケージが簡単です。
使い方を軽くメモしておきます。

インストール

CRANにあります。

> install.packages("hypergeo")
> library(hypergeo)

使い方

 _2F_1 を求める。

超幾何級数の中で頻出なのは  _2F_1 でしょうか。

{ \displaystyle
{}_2F_1(a,b;c;z) = \sum_{n=0}^\infty \frac{(a)_n (b)_n}{(c)_n} \frac{z^n}{n!}.
}

ただし,  (a)_n はポッホハンマー(Pochhammer)記号です。

{ \displaystyle
(a)_n = \begin{cases} 1 & n = 0 \\
a(a+1) \cdots (a+n-1) & n > 0
\end{cases}
}

このような 2F1 は hypergeo 関数で求めることができます。
例えば、{a, b, c, z} = {2,3,4,5}のときは、

> hypergeo(2,3,4,5)
[1] 0.1565421+0.1507964i

となり、超幾何級数が計算できました。

一般化された超幾何級数 _pF_q

 _2F_1だけでなく、 _pF_qのように一般化された超幾何級数を求めましょう。

このとき、  _pF_q は次のように定義されます。

{ \displaystyle
{}_pF_q=\sum_{n=0}^{\infty}\frac{(a_1)_n(a_2)_n\dots(a_p)_n}{(b_1)_n(b_2)_n\dots(b_q)_n\;n!}z^n 
}

これを求めるためには、genhypergeo 関数を使いましょう。
genhypergeo 関数のパラメータUに  (a_1)_n(a_2)_n\dots(a_p)_n を、
パラメータLに  (b_1)_n(b_2)_n\dots(b_q)_n を代入します。
例えば、  a_1=1, a_2=2, b_1=3, b_2=3, b_3=3, z=2 のとき、超幾何級数  {}_2F_3 は、

> genhypergeo(U=c(1,1),L=c(3,3,3),z=2)
[1] 1.078934

となります。

便利ですね!

超幾何関数 (すうがくの風景)

超幾何関数 (すうがくの風景)

サンドウィッチマンライブツアー2014 [DVD]

サンドウィッチマンライブツアー2014 [DVD]