ジョギング
- 香椎浜 x 2 周
- いつもよりだいぶん涼しい感じ
- 右足踵付近に違和感 (軽い痛み)
日課
- お休み
JAWS-UG 福岡 もくもく会
JAWS-UG 福岡、ひさかたぶりのもくもく会は良い感じで終了いたしました。会場を提供してくださったオルターブースさん、本当にありがとうございました。参加された皆さん、お疲れ様でした~。また、次回も宜しくお願いしまっす。 #jawsug #jawsugfuk
— Yohei Kawahara(かっぱ) (@inokara) 2018年8月9日
- fukuoka.rb の雰囲気を参考にさせて頂いて, 似たような感じで開催してみた
- コアメンバー以外に二名の方に参加して頂いて, 軽い雑談を交えつつ, ビール呑みながらいい感じで手を動かせていたんではと思う
- 出来るだけ, 間を開けない感じで次回も開催したい
今日のるびぃ exercism 編 〜 rna-transcription (1) 〜
ギョームで Ruby を触ることが無さすぎるので, exercism の問題を解くことにした.
概要
以下のように, DNA の配列を渡すと, RNA 相補体を返すような実装.
DNA RNA G -> C C -> G T -> A A -> U
テスト
require 'minitest/autorun' require_relative 'rna_transcription' # Common test data version: 1.0.1 cb1fd3a class RnaTranscriptionTest < Minitest::Test def test_rna_complement_of_cytosine_is_guanine # skip assert_equal 'G', Complement.of_dna('C') end def test_rna_complement_of_guanine_is_cytosine skip assert_equal 'C', Complement.of_dna('G') end def test_rna_complement_of_thymine_is_adenine skip assert_equal 'A', Complement.of_dna('T') end def test_rna_complement_of_adenine_is_uracil skip assert_equal 'U', Complement.of_dna('A') end def test_rna_complement skip assert_equal 'UGCACCAGAAUU', Complement.of_dna('ACGTGGTCTTAA') end def test_correctly_handles_invalid_input_rna_instead_of_dna skip assert_equal '', Complement.of_dna('U') end def test_correctly_handles_completely_invalid_dna_input skip assert_equal '', Complement.of_dna('XXX') end def test_correctly_handles_partially_invalid_dna_input skip assert_equal '', Complement.of_dna('ACGTXXXCTTAA') end ... 略 ... def test_bookkeeping skip assert_equal 4, BookKeeping::VERSION end end
実装
# file: rna_transcription.rb class Complement class << self def of_dna(rna) dna = '' rna.split('').each do |r| dna << 'G' if r == 'C' dna << 'C' if r == 'G' dna << 'A' if r == 'T' dna << 'U' if r == 'A' end dna.to_s.size == rna.size ? dna.to_s : '' end end end
テスト実行
$ ruby rna_transcription_test.rb Run options: --seed 58737 # Running: .......S. Finished in 0.001557s, 5781.8396 runs/s, 5139.4130 assertions/s. 9 runs, 8 assertions, 0 failures, 0 errors, 1 skips You have skipped tests. Run with --verbose for details.
とりあえず, パブリッシュ済み.
メモ
- DNA とか RNA とか理解出来てないけど, テストを実行すれば, 一応, 動きは解った
- 別の実装について模索中
今日の AWS ~ コンピューティング ~
EC2
- EC2 インスタンスは AZ サービス
- インスタンスタイプ
- 汎用 (t2, m3, m4)
- コンピューティングの最適化 (c3, c4)
- GPU (g2)
- メモリ最適化 (r3)
- ストレージ最適化 (i2. d2)
- ユーザーデータ
- OS の起動スクリプトのようなもの
- メタデータ
- ストレージ
- EBS
- インスタンスストア
EC2 のライフサイクル
- ライフサイクル
- pending
- running
- rebooting
- stopping
- shutting-down
- stopped
- terminated
- ステータスチェック
- System Status Check (インフラストラクチャ (H/W, ハイパーバイザ) のチェック)
- Instance Status Check (OS のチェック)
- オンデマンドインスタンスの課金
- running になった時点で課金が発生, stopped 又は terminated になるまで発生
EBS とインスタンスストア
EBS | インスタンスストア | |
---|---|---|
データ特性 | 不揮発性 (永続化) | 揮発性 |
性能 | 数百 ~ 20,000 IOPS | 最大 300,000 IOPS |
価格 | GB 課金 | 無料 |
EC2 には, EBS-backend インスタンスと, Instance store-backend (S3-backend) インスタンスの 2 タイプが存在する. 両者の違いは以下の通り.
- EBS-backend インスタンスは停止と起動, 再起動, 削除が可能
- Instance store-backend (S3-backend) インスタンスは再起動と, 削除, 尚, 停止は出来ない
EBS のタイプ
- General Purepose SSD (gp2)
- 1GB ~ 16TB
- 3IOPS/GB のベースパフォーマンス, 最大 10,000IOPS, ベースパフォーマンスが 3,000IOPS 未満の場合, 3,000IOPS までバースト機能
- 容量課金
- 一般的な利用 (汎用)
- Provisioned IOPS SSD (io1)
- 4GB ~ 16TB
- 容量あたり 50 IOPS を指定可能, 最大 20,000IOPS (最新だと, 最大 32,000 IOPS)
- 容量 + 指定した IOPS 課金
- 10,000 IOPS を超える性能が求められるアプリケーション, データベース等で利用
- スループット最適化 HDD (st1)
- コールド HDD (sc1)
- Magnetic
- 1GB ~ 1TB
- 平均 100 IOPS
- 容量 + 発生した IO 数
- IO があまり発生せず, コストが重視される構成で利用
Provisioned IOPS SSD で, EBS ディスク性能を高めることが出来るが, 通常の EC2 インスタンスでは, 通常のネットワーク帯域と EBS 用のネットワーク帯域が共有されている為, 十分に性能を引き出すことが出来ないが, EBS 最適化インスタンスを利用することで EBS 専用の帯域が確保される為, EBS の I/O が安定する. Provisioned IOPS SSD では, EBS の高い I/O 性能を活かす為にも, EBS 最適化インスタンスの利用が推奨される. (インスタンスタイプが大きい程, 使える帯域が大きい)
EBS スナップショット
- 任意のタイミングでスナップショットを作成することが出来る
- スナップショットは S3 に保存される
- スナップショットは圧縮され, 差分のデータのみが保存される為, 容量を抑えることが出来る (圧縮後の容量に対して課金される)
- データの整合性を保つ為にディスク I/O を停止する必要があり, 対象の EBS ボリュームをアンマウントしてからスナップショットを取得することが推奨されている
- 取得開始時点の EBS ボリューム内のデータをキャプチャして, それ以降の書き込みはキャプチャ対象外
- 復元はスナップショットの元となったボリュームサイズよりも大きなディスクサイズを指定して復元することが出来る
- EBS ボリュームは AZ サービスであり, 同一 AZ 内の EC2 のみにアタッチすることが出来る
- リージョンをまたぎたい場合には, スナップショットを利用して別リージョンにコピーして EBS ボリュームを復元する
プレイスメントグループ
- 単一の AZ にプレイスメントグループ を作成すると EC2 間のネットワーク接続を高速化することが出来る
Dedicated インスタンス
フムフム.