blog.monophile.net

コンピュータに関するメモ。

著者

山本一彰(Takaaki Yamamoto)

東京工業大学において計算機科学と応用数学を学び、 情報科学芸術大学院大学[IAMAS]においてメディア表現を専攻し修了。 2015年にコンビネータ論理を基に計算完備な計算手法 "論理珠算"を開発し、 それを含む体系である"算道"を構成した。 その成果により、2016年に 第19回 文化庁メディア芸術祭 アート部門 新人賞 (文部科学大臣賞) を受賞。 現在はSRE(サイト信頼性エンジニア)として生計をたててている。

投稿

graph-easy で有向グラフのアスキーアートを描いてみる

概要

簡単なフローチャートとかネットワーク図とかをドキュメントに載せたいが、 画像だと大げさだったので、アスキーアートにしたかった。 graph-easy というのを使えばできるみたいだったので、ためしたみた。

graph-easy のインストール

↓は Ubuntu16.04 でインストールする場合。

(例) 計算の過程を表す図

graph-easy は標準入力からデータを受け取るので、 「入力(input)を受け取り計算(calculation)して出力(output)する図」は↓のようにすればよい。

すると↓の出力が得られる。

+-------+  calculation   +--------+
| input | -------------> | output |
+-------+                +--------+

(例) 4つの物理NICをボンディングして仮想ブリッジに接続した図

「4つの物理NICをボンディングして仮想ブリッジに接続した場合」 のLinux内のネットワークインターフェースの図を描いた例。 少しコードが長くなるので、↓を interfaces.txt として保存する。

[eth1] { size: 1,1 }
[eth2] { size: 1,1; origin: eth1; offset: 0,1; }
[eth3] { size: 1,1; origin: eth1; offset: 0,2; }
[eth4] { size: 1,1; origin: eth1; offset: 0,3; }
[bond] { size: 1,4; origin: eth1; offset: 3,0; }

(bonding:
  [eth1] -> { label: LACP } [bond]
  [eth2] -> { label: LACP } [bond]
  [eth3] -> { label: LACP } [bond]
  [eth4] -> { label: LACP } [bond]
)

[br]    { origin: bond; offset: 0,2; }
[br.10] { origin: br; offset: 0,1; label: br.10 (192.168.10.xx/24); }
[br.20] { origin: br; offset: 0,2; label: br.20 (192.168.20.xx/24); }
[br.30] { origin: br; offset: 0,3; label: br.30 (192.168.30.xx/24); }

(bridge:
  [br], [br.10], [br.20], [br.30]
)

[bond] -> [br]

そして↓を実行する。

すると↓の出力が得られる。

+ - - - - - - - - - - - - - - - - - - - - - - - - - - - -+
' bonding:                                               '
'                                                        '
' +--------+      LACP      +--------------------------+ '
' |  eth1  | -------------> |                          | '
' +--------+                |                          | '
' +--------+      LACP      |                          | '
' |  eth2  | -------------> |                          | '
' +--------+                |           bond           | '
' +--------+      LACP      |                          | '
' |  eth3  | -------------> |                          | '
' +--------+                |                          | '
' +--------+      LACP      |                          | '
' |  eth4  | -------------> |                          | '
' +--------+                +--------------------------+ '
'                                                        '
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - -+
                              |
                              |
                              v
                          + - - - - - - - - - - - - - - -+
                          ' bridge:                      '
                          '                              '
                          ' +--------------------------+ '
                          ' |            br            | '
                          ' +--------------------------+ '
                          ' +--------------------------+ '
                          ' | br.10 (192.168.10.xx/24) | '
                          ' +--------------------------+ '
                          ' +--------------------------+ '
                          ' | br.20 (192.168.20.xx/24) | '
                          ' +--------------------------+ '
                          ' +--------------------------+ '
                          ' | br.30 (192.168.30.xx/24) | '
                          ' +--------------------------+ '
                          '                              '
                          + - - - - - - - - - - - - - - -+

参考