amazonka で EC2 インスタンスの操作
- 2018/06/24 19:45
-
以前のエントリ1では, AWS の API を golang から叩くために golang の言語機能を一通り触った. 自分は元々よく C++ を書いていたので golang で叩く前にまず C++ から適当に叩いてみていたのだが, ふと Haskell 用の AWS のライブラリの存在を知り, ひとまず触ってみたので, 記録と紹介を兼ねて書き残してみる. 執筆時現時点では, 公式が提供する AWS SDK は awscli を除き C++, Go, Java, javascript, .NET, PHP, Python, Ruby 2となっており, amazonka3 は非公式の Haskell 用 AWS SDK である. 基本的には, まず amazonka を導入した後, 必要となる AWS サービスに該当する amazonka-** を導入する. 今回は, ec2 インスタンスの立ち上げ, 停止を行なったので, amazonka-ec24 を利用した. amazonka は全体のデータのやり取りに Lens を多様しており, 利用者はこの恩恵を傍受できる.
早速であるが, くだらないサンプルを次に示す. とくにいま ec2 インスタンス上で何かしたいことはないので, 東京リージョンでインスタンスを立ち上げて, その直後に落とすこととする5.
module Main where
import qualified Network.AWS as AWS
import qualified Network.AWS.Data as AWSD
import qualified Network.AWS.EC2 as EC2
import System.IO (stdout)
import Control.Lens
instanceIds :: String
= "i-********"
instanceIds
main :: IO ()
= do
main let t0 = EC2.startInstances & EC2.sInstanceIds .~ [AWSD.toText instanceIds]
let t1 = EC2.stopInstances & EC2.siInstanceIds .~ [AWSD.toText instanceIds]
<- AWS.newEnv (AWS.FromFile (AWSD.toText "default") "/path/to/credentials")
env <- AWS.newLogger AWS.Debug stdout
lgr <- AWS.runResourceT $ AWS.runAWS (env & AWS.envLogger .~ lgr) $ AWS.within AWS.Tokyo $ AWS.send t0
res0 <- AWS.runResourceT $ AWS.runAWS (env & AWS.envLogger .~ lgr) $ AWS.within AWS.Tokyo $ AWS.send t1
res1 print res0
print res1
本家の各 SDK と同じように, 必要なサービスごとにライブラリがそれぞれ独立しているので, 基本的にまずは AWS CLI Command Reference をみてから, その操作を行うのに必要とするライブラリを amazonka から選んで導入することで, 実際に動くまでを円滑に進めることができるだろう.
参照
- “amazonka: Comprehensive Amazon Web Services SDK.” http://hackage.Haskell.org/package/amazonka 2018 年 6 月 24 日アクセス.
- “amazonka-ec2: Amazon Elastic Compute Cloud SDK.” http://hackage.Haskell.org/package/amazonka-ec2-1.6.0 2018 年 6 月 24 日アクセス.
- “Network.AWS” http://hackage.Haskell.org/package/amazonka-1.6.0/docs/Network-AWS.html 2018 年 6 月 24 日アクセス
- “Network.AWS.EC2” http://hackage.Haskell.org/package/amazonka-ec2-1.6.0/docs/Network-AWS-EC2.html 2018 年 6 月 24 日アクセス
De Bruijn Sequence
- 2018/06/23 07:35
-
大学のレポート内で De Bruijn Sequence について書く機会があった. これまた以前と同じく, 折角なのでこちらのブログにも, 若干内容を変えつつ載せておくことにした.
De Bruijn Sequence は, オランダ人の数学者 Nicolaas de Bruijn に因んで命名された系列で, 特定の長さのすべての組み合わせを含む系列である. 次数 の 種類に関する De Bruijn Sequence は, 長さ で表現可能なすべての部分列によって構成される. 次元数 (すなわちバイナリ) の De Bruijn Sequence は であり, ビットの固有な部分系列から成る ビット長の系列である. 例えば, は であり に対する有向グラフが下図1のように示される.
フィボナッチ数列の一般項の導出
- 2018/05/19 04:42
-
フィボナッチ数列を以下の漸化式で定義する.
フィボナッチ数列
ここで, 初項と第二項をそれぞれ とする. 各項を と置き換えると が得られる. この解は となる. ここで, と置く. フィボナッチ数列の漸化式の特性方程式の解は の解より であるから と変形できる. いま と置くと次の漸化式が得られる.
ベジェ曲線
- 2018/04/21 01:50
-
典型的なパラメトリック曲線の一種である, ベジェ曲線(Bézier curve)についての学習メモ. パラメトリック曲線とその一種であるエルミート曲線に関しては, 前回の記事を参照.
ベジェ曲線は, パラメータ と複数の制御点 から構成されるパラメトリック曲線の一種である1. 始点と終点の線分から成る, 次数 のベジェ曲線は の制御点をもち ( の制御点があるベジェ曲線を 次ベジェ曲線という), この内分点を繰り返し取ることによって, 曲線を得ることができる. この始点と終点の線分を, セグメントといい, これが得られる曲線そのものになる2. まず, ここでは 2 次ベジェ曲線を描くとして, そのイメージをつけるために, 図3を用いてその概要を見る. なお, 2 次ベジェ曲線は true type フォントなどで使われている.
エルミート曲線
- 2018/04/16 01:50
-
典型的なパラメトリック曲線の一種である, エルミート曲線についてのメモ.
パラメトリック曲線
そもそもパラメトリック曲線とは, 任意のパラメータから各々の座標を陽関数形式で表現できる曲線のことをいう. このとき定義できる関数 がパラメータ 1 の多項式である場合, それを多項式曲線といい, 有理式である場合, それを有理曲線という. 例えば, 直線の方程式 は,
とパラメタライズできる. この方程式では, パラメタライズせずとも, に 1 つの実数を代入すれば, 必ず が求まる(逆も言える)ことは明らかである. 次に, 3 次曲線 について考える.