Home
ternbusty
Cancel

自宅ネットワークを Grafana でモニタリング (3)

前稿までで実装は大体終わったので、解析結果でいろいろ遊んでみることにする。もともとはTwitter、YouTube、Amazon Prime Video のトラフィックを監視したいという動機であったので、まずはそれが達成できているか検証してみよう。 監視対象サービスのトラフィックを眺める Twitter 寝る前 (AM 1 時) に寝床で TL を眺め、AM 6 時に起床した瞬間に...

自宅ネットワークを Grafana でモニタリング (2)

概要 前回のネットワーク構築を経て、自宅ネットワークすべての機器におけるトラフィックがRaspberry Pi へ流入するように設定することができた。本記事では Raspberry Pi にてパケットキャプチャを行い、Grafana での可視化を行う。最終的に、どの時間帯にどのウェブサービスへ接続していたかを知るのが目標である。 全体の構成は以下の通り。 tcpdump を用いて...

自宅ネットワークを Grafana でモニタリング (1)

動機 いわゆるコロナ禍が始まってはや 2 年、必然的に自宅にいる時間が長くなったものの、その時間を最大限勉強など活用できているかと言われると非常に怪しい。業務後には YouTube をだらだら自動再生しながら作業をし、何か一区切り発生するたびに気付けば Tweetdeck をぼーっと眺め、休日には Amazon Prime Video にあるアニメを一気見してしまう。こんな生産性のない毎日...

コンピュータシステムの理論と実装 (11)

前章で構文解析まで終了しているので、今回はシンボルテーブルの管理とコード生成の部分を完成させていく。 11 章 コンパイラ#2: コード生成 シンボルテーブルの実装 まずは変数の管理から。本文に記載されている通り、 サブルーチンスコープ argument: サブルーチンの入力を指定する仮引数 (パラメータ変数) ...

コンピュータシステムの理論と実装 (10)

前章までで中間コードをアセンブリに変換する部分は完成したので、本章からは後半部分である Jack 言語から中間コードへのコンパイラを書いていく。 10 章 コンパイラ#1: 構文解析 tokenizer を書く コードを token ごとに区切り、xml として出力するコードを書けばよい。こんなん半角スペースで分割してそれぞれの要素が何であるかを判定していけばいいだけやんとか思っていたが、...

コンピュータシステムの理論と実装 (9)

9 章: 高水準言語 高水準言語 Jack から VM 言語への変換を行うにあたって、ここで Jack 言語 (Java の簡易版みたいなもの) の仕様を一通りみておく。 変数の種類とスコープ 変数には以下の 3 つのほか、サブルーチン宣言のときのパラメータリストなどがある。 スタティック変数: あるクラスのすべてのオブジェクトで共有される変数。static で宣言。 フィール...

コンピュータシステムの理論と実装 (8)

前章で作成した VM translator に追加して、本章ではプログラム制御 (サブルーチンの呼び出しやメモリ割り当てなど) を実装していく。 8 章 バーチャルマシン #2: プログラム制御 プログラムフローコマンド まず面倒なのが if go-to コマンドのコンパイルである。これはスタックトップの値を pop して (これは前章までの内容でいける) 0 でなければ (TRUE であ...

コンピュータシステムの理論と実装 (7)

前章でアセンブリ言語からバイナリへの変換ができるようになったため、次は一段階上がってコンパイラを書いていく。本書では Jack という簡易版 Java みたいな高水準言語の処理系を実装していくことになるのだが、これはまず中間コード (VM コード) を経てアセンブリ言語に変換される形式を採っている。7 章および 8 章では、VM コードをアセンブリ言語に変換する VM translator ...

競プロ用環境構築のメモ

久々に競プロ環境を整備し直したのでメモしておく。以下、WSL2 (Ubuntu 18.04.1) と VSCode という環境下で、C++17 を用いて問題を解く際の環境設定を記載する。 VSCode のエディタ設定 昨年 9 月のアップデートから公式で提供されるようになった editor.bracketPairColorization.enabled を用いれば対応する括弧の色付け...

コンピュータシステムの理論と実装 (6)

6 章 アセンブラ 前章までで CPU や Computer の実装が終わり、ハードウェアは完成した。次はソフトウェア部分ということで、一番下のレイヤであるアセンブラを書いていく。この章以降は HDL から離れて好きな言語でコードを書けることになるため、文字列操作に慣れた Python を使うことにした。 コマンドの判別 本書で用いられている機械語は 1 行 1 コマンドであり、@ で開...