C#でBUFRを読んでみる(ヘッダーのみ)

これは 防災アプリ開発 Advent Calendar 2024 の17日目の記事です。 といいつつ遅れてます…すみません。さすがにキツかった…。 と言いつつ原因は他のところにあります。10万ぶち込んで5凸しかできてない愚かな人類がここにいます。 BUFR とは? アドベントカレンダー経由で見た方はご存じの方も多いかもしれませんが、パッと聞かれても答えられる人は相当なマニアだと思います。 正直なところ今回の記事の内容自体すべてとてもわかりやすく解説しているドキュメントをC#に移植しただけなのですが、せっかくなのでみなさんも入門しましょう。 細かい解説や歴史は↑のドキュメントにあるので読んでいただくとして、専ら気象庁における使われ方としては 『XML だとでかくなりすぎるのでやむを得ずバイナリとして配信しているデータ』 だと思います(個人の意見)。 全体を見てみる BUFR は6つのセクション(節)に分かれているようです。 マジックナンバー・電文長定義 電文情報 任意情報 データ構造 データ本体 マジックナンバー(おわり)...

   2024年12月21日     16分で読めます
2024年版 KEVi の設計(後半)

これは 防災アプリ開発 Advent Calendar 2024 の11日目の記事です。 前半の記事はこちら! 前回に引き続き、設計についてのお話を書きます。 設定画面 今まで設定画面はずらずらと1つの XAML ファイルに書いていたのですが、タブの数や設定項目がさすがに多くなってきてメンテナンスに問題が生じるようになってきました。 まず第1段階として各タブ内の UI を UserControl としてファイルに分割しました。そしてそのコントロールを各タブ内のコンテンツとしてセットすることで設定画面の中身を複数のファイルに分散することができるようになりました。 しかしタブの数が増えてきてコンテンツを除いてもファイルが大きくなっていたことと、合わせて ViewModel が肥大化し、保守が厳しくなってきたためもう少し汎用化することとしました。 これはバージョン 0.19 でリニューアルされた設定画面ですが、有効になっている機能のタブを固定設定から上下から挟む構造になっています。 設定ページは必ず ISettingPage...

   2024年12月10日     9分で読めます
2024年版 KEVi の設計(前半)

これは 防災アプリ開発 Advent Calendar 2024 の4日目の記事です。 僕は KyoshinEewViewer for ingen というアプリを趣味で開発しています。 簡単に説明すると、緊急地震速報や地震情報、津波情報などを表示するアプリです。 このアプリですがいろいろな機能を盛り込んでいるので色々工夫して実装しています。 今回の投稿はこのアプリの設計について話したいと思います。 起動からウィンドウ表示まで まずはアプリのエントリポイントから。 C# のアプリですので、もれなく Program.cs の Main メソッドが呼ばれます。 ここではロケールの固定と、Avalonia のインスタンスの構築と起動を行います。 ここで...

   2024年12月03日     6分で読めます
我が家のオーディオ事情

すみません、8月の更新ができませんでした。 仕事が忙しかった後遺症でゾンビになっています。 復活までもう少しお待ちください…。 それはそれとして、最近良い感じのラジオを購入しました。 よく考えたら僕の PC のオーディオ周りはかなり変な自覚があり、せっかくなのでこの機会に記事にしてみようと思います。 全体像 ミキサーについて メインのミキサーとして Go XLR mini というデジタルミキサーを使用しています。 GO XLR 自体は配信者用の大きなミキサーでワンタッチで音声を再生したりエフェクトをかける機能などがありますが、僕はシンプルに XLR 端子でマイクが接続できれば良かっただけなので mini 版を使用しています。 この製品自体は物理的なスライダーが4つ用意されていますが、僕は PC からは Chat...

   2024年09月28日     6分で読めます
【24.04LTS最新版】systemd-networkd で光クロスのLinuxルーターを作る

タイトルが胡散臭すぎる。 この度めでたくルーターPCの再構築を行い、 Ubuntu Server 22.04 LTS から 24.04 LTS に更新しました。 前回の記事 では systemd-networkd への移行を試みましたが、バグのため失敗する…と言った悲しい感じで終了しましたが、今回は無事成功しましたので設定など載せてみようと思います。 インターフェース構成 環境自体は前回と変わらず enp1s0f0 WAN 側 enp1s0f1 LAN 側 mape0@enp1s0f0 MAP-E(固定IP) トンネル...

   2024年07月20日     7分で読めます