概要 現在の職場にはいわゆる打刻システムというものがなく、その月にした時間外勤務を月末までにまとめて入力する制度になっている。どの日にどのくらい残業していたのか (≒ 何時に帰宅したか) を把握するために、帰宅を検知しその時刻を記録するシステムを作ることにした。 帰宅の検知にはドア開閉の検知や照明のオンオフなどが利用できそうであるが、前者は出勤と帰宅の区別がつかない (勤務時間帯が不規則...
IoT を使って毎朝体重を測らざるを得ないようにする
概要 外食続きであった出張から帰京し、一カ月ぶりに恐る恐る乗った体重計にはびっくりするような値が表示されていた。体重計を乗り降りして何度か測り直してみたものの値は変わらず……というわけで、出張前の体重に戻すまでは嫌々ながらも毎朝体重計に乗って現実と向き合うこととした。いわゆるレコーディングダイエットというやつである。 普通に考えてこんな精神的負荷を伴う行為を習慣づけられるはずがないので、...
Raspberry Pi を SNMP マネージャとして利用する
動機 別記事 で Wi-Fi 打刻について調べていたとき、この事例 を通して snmpwalk を用いた接続機器の情報取得に興味を持ったため。 環境構築 今回、自宅ネットワーク上にある Raspberry Pi を SNMP マネージャとして稼働させ、MIB を受信する方針とする。download-mibs もしておく。 sudo apt-get install snmpd sudo...
名字の五十音分布を可視化してみる
概要 「五十音順の名簿であ行の名字多すぎない?」という疑問は一般的なもののようであり、実際 Twitter で「あ行 名字 多い」で調べると同様の感想が大量にヒットする。 Mar 27, 2020 この大学では人数を均等にするためにあ行を「あ・い」「う・え・お」に分割しているようである。確かに私も「い」から始まる姓の持主ではあるのだが、出席番号順では 40 人クラスで 8 番目な...
特定の YouTube チャンネル内の動画をキーワード検索できるサービスを作った
最近になって定期更新される YouTube チャンネルを観る習慣がついた。特定の発言がどの動画で出てきたかを探すために、キーワード検索を行うサービスを作成した。使用したコードは こちら、完成したものは こちら。 概要 データの取得は YouTube API v3 を用いて行った。一つの動画について、データをまとめたファイルとサムネイル画像をローカルへ保存するようにした。 サイト...
自宅ネットワークを 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 として出力するコードを書けばよい。こんなん半角スペースで分割してそれぞれの要素が何であるかを判定していけばいいだけやんとか思っていたが、...