基礎教養

はじめに

プログラミングではないのですが基礎知識として把握しておきたい事柄を記します。

システムの稼働率と年間停止時間

SaaSによってSLA1 99.99%と表記していることがあります。この場合、SaaS提供者がシステムの停止時間を年間で52分34秒と想定していることを示します。

SLAは他にも99%, 99.95%などがあります。下表は徹底攻略AWS認定ソリューションアーキテクト - アソシエイト教科書第3版のP206から引用したもので、各稼働率に対する年間停止時間がわかります。

稼働率 年間停止時間
99% 3日15時間36分
99.90% 8時間46分
99.95% 4時間23分
99.99% 52分34秒

年間停止時間の算出方法

手早く停止時間を確認したい場合は以下のサイトに停止時間を計算するツールが役立ちます。

手元で計算したい場合は年間停止時間は1年の秒数に稼働率を掛けます。
例えば、稼働率99%の年間停止時間を閏年や閏秒などを考慮せず計算した場合は以下の通りです。

60 × 60 × 24 × 365 = 31536000
31536000 × (1 - (1 × 99%)) = 3153600
3153600 / 3600 = 87.6

上の通り、稼働率99%の場合では年間に87.6時間の停止があるとわかります。 87.6時間を以下のように分解すると3日15時間36分となります。

87.6 / 24 = 3.65 → 3日
24 × (3.65 - 3) = 15.6 → 15時間
60 × (15.6 - 15) = 36 → 36分

次に稼働率99.99%の場合は以下の計算になり、52分34秒の年間停止時間とわかります。

31536000 × (1 - (1 × 99.99%)) = 3153600
3153600 / 24 = 0.0365
24 × 0.0365 = 0.876 → 0日
60 × 0.876 = 52.56 → 52分
60 × 0.56 = 33.6 → 34秒 (秒まで算出のため34に繰り上げ)

CIDR (サイダー) - Classless Inter-Domain Routing

IPv4のアドレス長は32 bitsです。

Addresses are fixed length of four octets (32 bits).

出典: RFC791 INTERNET PROTOCOL DARPA INTERNET PROGRAM PROTOCOL SPECIFICATION 2.3. Function Description, Addressing

8 bitsのフラグが先頭から立つと以下のようになります。

2進数 10進数
00000000 0
10000000 128
11000000 192
11100000 224
11110000 240
11111000 248
11111100 252
11111110 254
11111111 255

CIDRは/1~8が1オクテット、/9~16が2オクテット, /17~24が3オクテット, /25~32が4オクテット。

サブネットプレフィックス サブネットマスク
/1 128.0.0.0
/2 192.0.0.0
/3 224.0.0.0
/4 240.0.0.0
/5 248.0.0.0
/6 252.0.0.0
/7 254.0.0.0
/8 255.0.0.0
/9 255.128.0.0
/10 255.192.0.0
/11 255.224.0.0
/12 255.240.0.0
/13 255.248.0.0
/14 255.252.0.0
/15 255.254.0.0
/16 255.255.0.0
/17 255.255.128.0
/18 255.255.192.0
/19 255.255.224.0
/20 255.255.240.0
/21 255.255.248.0
/22 255.255.252.0
/23 255.255.254.0
/24 255.255.255.0
/25 255.255.255.128
/26 255.255.255.192
/27 255.255.255.224
/28 255.255.255.240
/29 255.255.255.248
/30 255.255.255.252
/31 255.255.255.254
/32 255.255.255.255

記号の読み方

記号 日本語 英語 (米)
( ) 丸括弧, 大括弧, 中括弧, 小括弧 parentheses もしくは brackets
{ } 波括弧 curly brackets もしくは curly braces
[ ] 角括弧 square brackets
< > 山括弧 angle brackets
; セミコロン semicolon
: コロン colon

コードと向き合う

find

findコマンドのシンプルな使い方は検索先ディレクトリ、検索キーワードを指定してファイルを検索する方法です。

1
2
3
4
5
6
touch ~/Desktop/sample-find.txt
find ~/Desktop -name "sample-find.txt"
find ~/Desktop -name "Sample-find.txt"

# inameは大文字と小文字の区別をしない
find ~/Desktop -iname "Sample-find.txt"
/Users/hiroakit/Desktop/sample-find.txt
/Users/hiroakit/Desktop/sample-find.txt
1
2
3
4
5
# Search for files with keywords in the file name
find /usr/local -name "libffi*.pc"

# Search for files which include a keyword 
find src -type f -print | xargs grep 'keyword'

grep

commonly used options

-l Show filename
-w パターン・マッチを、単語全体で行うようにする
-n Show line number ( `l` option cann't use this option)
-r Enabled to recursively search

Example

1
2
3
4
5
6
7
8
$ grep -n ns_term_init -r ./src/*.{h,c,m}
./src/nsterm.h:1079:extern struct ns_display_info *ns_term_init (Lisp_Object display_name);
./src/nsfns.m:1961:  dpyinfo = ns_term_init (display);
./src/nsterm.m:2003:   X11 rgb.txt-compatible color list in Emacs.clr (see ns_term_init()).
./src/nsterm.m:5082:ns_term_init (Lisp_Object display_name)
./src/nsterm.m:5097:  NSTRACE ("ns_term_init");
./src/nsterm.m:5345:  NSTRACE_MSG ("ns_term_init done");
./src/nsterm.m:5605:     When application is loaded, terminate event loop in ns_term_init.

diff & patch

パッチ作成

diffコマンドは差分を標準出力に出すのでリダイレクトしてファイルに出力する。

diff -uprN 変更前のソースコードディレクトリ 変更後のソースコードディレクトリ > diff.patch

パッチ適用

作成したパッチは patch コマンドで適用できる。

patch -p1 -d ソースコードディレクトリ < diff.patch

パッチ取消

パッチ適用後に取り消したい場合、オプション -R をつけて再度実行すると取り消しができる。

patch -R -p1 -d ソースコードディレクトリ < diff.patch

1

SLAはService Level Agreementの略称です。