Linuxルーターを systemd-networkd に移行してみる

内容を更新した2024年版の記事があります。 こちらもどうぞ! 明けましておめでとうございます。 といいながら 2024年も1ヶ月が経過してしまいました。 今回は年末に 光クロスで快適自宅サーバー環境構築 Linuxルーター構築編 で構築した Linux ルーターを systemd-networkd で構成しようとチャレンジしたのでその経過を貼ってみたいと思います。 netplan ではありません ちょうど systemd 本を読んだりしていたので、 今回は netplan ではなくsystemd-networkd を直接利用しました。 パッケージのインストール systemd-networkd は最初から入っていて...

   2024年02月04日     7分で読めます
気象庁のコード表を自動で更新する

こんばんは。 これは 防災アプリ開発 Advent Calendar 2023 の3日目の記事です。 はじめに みなさんは気象庁から配信される情報を処理する上でコードの扱いはどうしていますか? XML の電文であれば値が記述されているためコードを無視したりすることも可能ですが、災危通報などを表示したり、読み上げを実装するときはそうも言っていられません。 更新のメールが来たら(or ページの更新を確認したら)内容を読んで、影響しそうだったら手元のデータもコード表を元に更新して…。 大変ですね。 今回はそのコード表を自動で更新できるようにしよう!という趣旨の記事です。 成果物はここににあります。 目指すもの・利用想定 開発言語は様々だと思いますが、僕の場合は C# で、Dictionary 形式で参照できると良さそうです。 AreaEpicenter[100] // 石狩地方北部 が、C#...

   2023年12月02日     21分で読めます
TORQUE G06 を買いました(その2)

こんにちは。 前回の記事では購入してすぐの記事でしたが、今回は1週間ちょっと使ってみての感想を書いてみたいと思います。 決して記事の水増しじゃないよ!本当だよ! 電源ボタンの位置 1日でそれなりに慣れました! が、突起がないとどっち上かがわからず間違ってカスタムボタンを押してしまうこともしばしばあります…。 カメラ せっかくなので全く同じ場所・タイミングで撮って比較してみました。 センサーの比較ではなくAF含めての比較ということで、設定は別にしてあります。 1枚目が TORQUE 5G 2枚目が TORQUE G06 です。 5Gでは暗い場面では色域が狭く白飛びしており、明るい場所でも不自然に鮮やかな色味が付いていることがわかります。 また全体がぼやけてしまっています。 G06ははっきり撮影できるようになり、かなりしっかりした写真が撮れるように感じました。 一方強いシャープネスがかかっており、拡大したときに細部に違和感が出てしまっているという欠点もありますが、かなりよくなったのではないかと思います。 おまけに夜空を撮影したものです。まあさすがに空の撮影は厳しいですね。うん。 バイブレーション 謎の余韻があるという話をしましたが、変わりないです。おそらく軽く叩いたときに内部で震えているパーツの振動が残っているのだと思います。 さいごに 写真が載せたかっただけなのでめっちゃ短いです。ごめんね。...

   2023年10月28日     1分で読めます
TORQUE G06 を買いました

こんにちは。国産スマホの唯一となってしまったメーカー、京セラのスマートフォン TORQUE G06 を買いました。 せっかくなので月に1回ブログを書くという目標のためにも感想記事を書いてみたいと思います。 なお、この記事では購入した当日にそのままのノリで書いていることについてはご了承ください。 ファーストインプレッション TORQUE 5G から頑丈さを維持したまま小さくなって軽くなった。最高ですね! 購入した箱が届いてまず思ったのは、箱がとってもかっこよくなっていたことです。 前モデルではただの箱にビニールに包まれたスマホが入っているだけというパッケージでガラケーと同じ匂いがしていたのですが、今回のパッケージは紙製になっておりとてもかっこよくなっていました。 本体・外装 平らな場所に置いたときの安定性がとても向上しています。 平らな床に置いたときに接地する部分を赤い線で表した図です。(手書きでごめん!) この図からもわかる(ほんまか?)ように接地部分がかなり安定していて、前モデルでは端っこを押すと端末が傾いていたのに対して今回のモデルではかなり安定しているところです。 ちなみに液晶の面を下にしたときに前モデルではつるつるとした材質のバンパーが接触していたのに対して今回のモデルはざらざらとした材質のバンパーが接触するようになっているため滑りは悪くなっています。(そもそも滑らすなという話はある) 手に持った感じでいうと、電源ボタンが前モデルより上に少しあって、かつ前回のモデルにあった電源ボタンの横についている突起もなくなっているので慣れるまで少し電源ボタンを押すのに戸惑いそうです。 また、塗装が前回のモデルに比べてきめ細かくなっており、プラ感が少し軽減されているような感じがします。といいつつただの経年劣化かも。 USBポート USB-C ポートに蓋がついているのですが、そこについているパッキンが蓋側に付いていたのが本体側に変更されています。 パッキンが外れやすくなくしてしまっていたのでとてもよい改善だと思います。いやマジでなんで5Gのときそういう設計になってたんだ? 画面 あまりセールスポイントにされていませんが、地味に液晶が有機ELに変更されています。...

   2023年10月19日     4分で読めます
マイコンで過去60秒間の波形から震度を計算する

最近、震度計のファームウェア(ingen084/seismometer)を開発しています。 要は加速度センサーの値をフィルタにかけて過去60秒間のデータをソートするだけ(過去記事)なのですが、60秒間(100Hz * 60sec = 6000sample)のソートはなかなかに厳しいです。 僕が震度計を作るときは ArduinoSort というライブラリを使用していますが、100サンプル程度では非常に高速に動作する一方で60秒間のサンプル数をソートするとなるとかなり時間がかかります。 今回はこの課題に対する僕が実施した解決方法の記事です。 ソースコードを読めば一発なんですが、あえて記事にしてみます。 ソートをする数を減らす ソートは様々な最適化手段が提案されていますが、手っ取り早く高速化するにはソートする数を減らすのが一番です。 そこで、一定時間ごとにグループに分けそのグループに溜まった時点でソートを行い、グループを60秒分ローテーションしていくことで60秒間の波形データを保持することにしました。 さすがに 100Mhz 越えのマイコンなのもあってメモリのコピーは ns 単位でできるのでとてもいいです。 グループ同士のソート グループごとにまとめることはできましたが、それでも最終的には順番に並べた結果を出す必要があります。 今回必要なのは下位30サンプル目の値のみでそれ以外は必要ないので、各グループから大きい順番に値を引っ張っていき、30サンプル目になればそれが震度算出に使用する値となります。 図に起こしてみるとこんな感じです。 こういう配列があったとして、最初は各グループ一番末尾の数値を舐めて、最大値の数値を持っているグループの参照インデックスをインクリメントします。 次のループからはそのグループの次に小さい要素と他のグループの末尾を参照し…というのを30回繰り返すことで30番目に大きい数値を出すことができます。...

   2023年09月24日     2分で読めます