やりたい事

  • ローラーマウス付きキーボード
    • ファームウエアを仕上げる。
  • 腹筋デック
    • アイディアをまとめる。
  • Rust
    • もうちょい文法を拡充する。

やった事

  • ローラーマウスつきキーボード
    • 動くようになった。
  • ETL
    • 関数定義と呼び出しができた。
  • Nucbox G9
    • NATとしてのLinuxセットアップ

学んだ事

  • ETL
    • 変数名に予約語が使えないようにする必要がある。
  • GoogleWifi
    • IPv6をフル機能で使うためには、/63のアドレスをDHCP6-PDで配る必要がある。

記録

  • 20250317
    • トラックボールテンティング
      • 適当に見つけたのを印刷してみた。
  • 20250318
    • 100マス計算
      • 10分30秒
      • もっと遅くなった!?
    • ETL (Embedded Tiny Language)
      • 入れ子のプログラムを書けるようにした。
        % echo 'print (stringJoin "Hello" (stringJoin "awesome" "world"))' | cargo run
        Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.02s
         Running `target/debug/etl`
        Hello awesome world
        
      • &strとStringをenumにした型を作ってみたけど、これをグローバル変数にはできない?
        • ちょっと小さいクレート作って試してまわらないとわからん。
    • ローラーマウスつきキーボード
      • 通信できないのをデバッグ
      • 基板の半田付けミスを2箇所発見
        • ジャックの足
        • ピンヘッダの1つ。
      • なおしたら、通信はできたが、マウス移動は送れてない。
  • 20250319
    • ローラーマウスつきキーボード
      • Splitモジュールをいじって、通信にポインティングデバイス移動量を入れた。
        • 安定して動くかな?
      • たまにパケットが落ちる。
        • 原因はわからない。PIOを使わないようにしたら安定した。何で?
    • ETL (Embedded Tiny Language)
      • 一旦放りなげて、1から作りたい。
    • jawiki
      • ひらがなで部分検索できるところまでやった。
      • これをMicroPythonでやってみる?
    • Nucbox G9
      • Debianで運用する事に決めた。
  • 20250320
    • 祝日
    • Nucbox G9
      • 古いNASからコピーしてるけど20MB/sぐらいしか出てない。古いNASのスピード制限だな。
    • Nucbox G9
      • 熱くない?って聞かれたので、ついでにPrometheusの対象に追加。
      • アイドル時で60℃弱ぐらい。
      • 負荷をかけると70℃弱になるっぽい。
    • ETL (Embedded Tiny Language)
      • 腰を入れて関数を実装した。
      • % cargo run <<EOL
        fn foo()
        print "hoge"
        end
        fn main()
        foo
        foo
        end
        EOL
        Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.01s
         Running `target/debug/etl`
        hoge
        hoge
        
  • 20250321
    • ETL (Embedded Tiny Language)
      • ローカル変数(引数)
      • defとendという変数名を作れるようにするために、予約語をやめて記号にした。
      • % cargo run <<'EOL'
        ^ foo str {
        print $str
        print $str
        $str
        }
        foo "hello"
        EOL
        Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.01s
         Running `target/debug/etl`
        hello
        hello
        
    • 走ってきた。
      • 6.15km
  • 20250322
    • PiCon
      • ひさしぶりすぎて、覚えてない。
      • ここまでのあらすじ。
        • 画面表示が遅いという問題があった。
        • フォントファイルが100kb弱あり、メモリを全部読むだけのメモリがない。
        • Cにテーブルを書いて、mpyにコンパイルしたが、mpyをimportするとコンパイル済みモジュールがメモリに読まれるのでメモリを消費する。
        • MicroPythonにフォントを書き込んだものを作った。
      • ターミナル側をいじって、フォントファイルを読むかわりに、メモリから読んでみた。
      • あまり早くなってない。
      • そもそもちゃんと計測しないと駄目かな。
    • ローラーマウスつきキーボード
      • ローラーが簡単に動きすぎる問題。
        • 何種類か試したけど、駄目だった。
    • フレッツ光クロス
      • Google Wifiを使いたい。
        • 家中に届くために、アクセスポイントを複数置きたい。
        • この場合ブリッジモードは使えない。
        • IPv4は多重NATになるが動作はする。
        • IPv6なら普通に使えるはず。
          • アプリの設定画面にIPv6を有効にするオプションがある。
          • 単にオンにしたら動かなかった。
          • マニュアルによるとDHCP6-PDでアドレスを配る必要があるらしい。
          • いろいろ試したら、/64をPDで配らないといけないらしい。
            • Guestをオンにするためには/63がいるみたい。
          • NTTから/56をもらってる。
          • /56を16つに割って、/60にした。
          • そのうち1つを家のLANにした。
          • 家のLAN用の/60をまた16個(/64)に分けた。
          • 1つ(/64)を固定IP用
          • 1つ(/64)をradvd用
          • 1つ(/64)dhcp6で配る用
          • 2つ(/63)をPDでGoogleWifiに与えた。
          • isc-dhcp-serverを入れたらIPv6用の設定もあったので、そこにつけた。
          • この辺のベストプラクティスわからない。
        • これで動いてそう。
  • 20250323
    • PiCon
      • 計測方法
        • MicroPythonでプロファイラを探したけど、ないみたい。
        • とりあえず、コードをあちこちコメントアウトして早くなるか見てみてる。
      • SPI転送部分が遅いみたい。
        • 1ピクセル(3バイト)ごとに、ピクセル位置指定(10バイト)をしてた。
          • とりあえず、1文字ごとに送る事にした。
          • 結構早くなった気がする。
        • 24ビットカラーをやめて3ビットカラーにしてみた。
          • これも早くなった気がする。
      • 気がする、ではなくいい感じに数字に出さないと何とも言えないな。