29-Dec-2020
[今年の振り返り]

疲れました。面倒なのでやりません。以上。

とりあえずMMDVMHostのIPv6対応がマージされてBrandMeisterの一部Master(3101/2841)に対して実際に接続することを確認できたこと、UserDB表示機能が実装できたこと、これは収穫だと思っています。自分の欲しい物がソースツリーに入っただけなので、多くの人にはこんな機能は無くても困らない話ではあるのですが(IPv4で十分接続できますし、UserDBの表示はNextion Driverや無線機側でも対応していますからね)。

その一方で、433MHz帯のLoRaについては今年中に変更申請が完結しなかったという問題があります。これが片付いたら2.4GHz帯のモジュール(E28-2G4M12S)を動かしてみようかなと考えていたのですが、144MHz版のRFM98Wなるものが存在するという話を見てしまうと、むしろこっちに手を出す方が良いんじゃ…?と思ってしまいます。

近所にドローンラウンジなるものができて、実際にトイドローンに触ったりFPV用の5.8GHz送信機(VTX)の話を聞いてみたりすると、ドローン自体に手を出すだけでなくこの手のVTXで遊んでみるのも面白そうです。という訳で、WA21を屋根裏に張るのは熱中症にならないような時期を選んでやることになりますが…後回しになりそうです。

OpenBSD的な活動はゆるゆるやっていますが、未だにAllwinner H6のシリアルポートの問題が解決できなくて本当に困っています。手元にあるAArch64な機材がこれしかないのと、Allwinner H5なボードを買うのはなんか負けた気がするので嫌です(とはいえ実はこれが一番の近道だったりします)。LinuxやNetBSDはちゃんと動いているので初期化の手順に関する問題という気がするのですが、全然尻尾がつかめない。これ、プログラマーしていた頃の(過去の)自分に聞いてみたいですね、「どうやって解決する?」って。

大陸の覇者、クリスマス記念として行われている★5の出やすいガチャに手を出してみました。通常はルビー300個で10連なのに対し、150個で10連(半額?)なので。これで揃っていないメンバーは…

★5
ミロード(杖), ギルデロイ(槍), ソフィア(本), ハンイット(弓), ニコラ(短剣)
★4
ペレディール(本), コルネリア(斧), ケネス(本)

つまり10連×2で、やってきたのはメレット(斧)(ただし★3)だけ。あとは誰か(覚えていない)が★3→★4にクラスが上がってるくらい。残りは8人…だんだん集めるのが大変になってきています。攻略系サイトの人って新キャラが出る度に課金してガチゃ引きまくってるんですかね(そしてその資金はどこから出る…?)というのは、最近感じる疑問だったりします。

Ingressはたまーに起動する程度で最近はほとんどやっていませんというか、自動車通勤が主体になってしまったおかげでできない状態です。去年の今頃救急車で運ばれる事態があり、その際にSojourner(皆勤賞)を切らしてしまったおかげでやる気が切れちゃったというのもあります。

さて、年を越す前にもう一日くらい日記を書ければ良いのですが…53.15kg(15:15)

27-Dec-2020
[distccを使ったOpenBSDでのportsのクロスコンパイルってやつを]

Cross compiling ports with distcc on OpenBSDの手順に従ってやってみますね。とはいえ、原典はmacppc向けのビルド手順ですが、自分はarmv7向けにやります。あと、ネットワークに繋がってるマシンはVMware Player上に用意した4コアの仮想マシンということで。

仮想マシンのゲストOSの設定、いつもだと「その他のOS/64bit」にしているのですが、今回は「その他のLinux 5.x以降のカーネル(64bit)」にしています。またデバイスは必要最低限(SCSIのHDD, CD/DVD, ネットワークとディスプレイ)として、vmxファイルのethernet0.virtualDev="vmxnet3"としてvmx(4)を使うようにしています。

普通にOpenBSD-6.8/amd64を仮想マシンにインストールして(起動時のVMware tools for Linuxのインストールに関する表示が鬱陶しいけど)…先に、Preparing the amd64 machineの手順に従って作業します。

↓ここからchroot環境下での作業↓

コンパイラをクロスコンパイル用にすげ替えます(と原典に書いてある)。

distccに--make-me-a-botnetを指定しないで済むよう、使用可能なコマンド一覧を記述します。

最後に、distccdを起動するためのスクリプトを用意します。cp /etc/rc.d/distccd{,_local} でコピーした後、/etc/rc.d/distccd_localを編集します。IPアドレスについては特定のマシンに限っても良いですし、ネットマスクを使用してネットワーク内の任意のマシンとすることも可能です。

update-distcc-symlinks を実行してから、以下のコマンドでdistccdを起動できます。

問題が無ければdistccd_local(ok)となりますが、うまくいかない場合は/var/log/message等を見て対処してください。作業が終わったらexitでchroot環境から抜けられます。

↑ここまでchroot環境下での作業↑

この作業により、今後は chroot /usr/local/chroot rcctl start distccd_local でdistccdを起動させることが可能になります。

ここからはarmv7側の設定、まずはdistccのインストールと設定。

/etc/mk.confにdistccを使うよう、指示を追加。

DISTCC_HOSTSでdistccの動く仮想マシンのIPアドレスを指定するだけでなく、実行するジョブ数も指定してください(/4なら4つ)。

とりあえずBanana Pi BPI-P2からports/archivers/lhaをビルドして時間を測ってみたのですが、distccの有無/portsをNFS上に置いたかどうか/make -j4オプションの有無の組み合わせを試してもそんなに差が出ません。

distccあり
1m04.27s real 0m09.94s user 0m14.15s system
distccなし
1m00.50s real 0m33.65s user 0m14.18s system
distccあり/NFS上
0m59.51s real 0m09.57s user 0m14.25s system
distccなし/NFS上
1m02.34s real 0m34.39s user 0m14.14s system
distccあり/-j4
1m02.85s real 0m09.95s user 0m13.85s system
distccなし/-j4
1m03.95s real 0m33.97s user 0m14.29s system
distccあり/NFS上/-j4
0m59.71s real 0m10.08s user 0m14.58s system
distccなし/NFS上/-j4
1m02.24s real 0m34.14s user 0m14.57s system

distccを使うとuserが減ってはいるので何らかの恩恵はありそうなのですが、それを帳消しにするような何かも起こっているように見えます。/usr/portsをNFS上に置いたとはいえ、それ以外の何かがmicroSD上にあることで足を引っ張っているのでしょうか。

armv7側のpkg_add distccした際に気付いたのですが、25-Oct-2020の時点では存在しなかったOpenBSD/6.8/packages/arm、今はちゃんと揃っているのでarmv7のportsを無理にクロスビルドする必要性は無くなっちゃいましたね…52.35kg(06:55)

26-Dec-2020
[なるほど、確かに]

例によって大陸の覇者日記です。

メンテナンスの度にキャラクタが増えるので集めるのが大変です。初期64人+追加が9人で73人の旅人なんですが…

★5
ミロード(杖), ギルデロイ(槍), ソフィア(本), ハンイット(弓), ニコラ(短剣)
★4
メレット(斧), ペレディール(本), コルネリア(斧), ケネス(本)

64人揃ってあと9人。12月24日のアップデートで追加したモルルッソ(杖)とケネスですが、開始早々いきなり★4モルルッソを引いてしまいました(★5じゃない…)。なるほど、これがメンテ明けに10連ガチャ引く人の気持ちなんですね…新キャラはすぐ使ってみたくても引かないことには使えませんから何をしてでも手にしたいですし、実際に手に入ると嬉しいものだなと。

★3は全て揃って、モルルッソに加えて★4テレーズも引いています(これも★5じゃない…)。★4〜5のキャラクタが色々揃ってきたのと、よく使う★3キャラがLv40を超えてきたので、今後に備えてパーティーの構成を一旦見直す時期かなという気がしています。

なにしろ開始した直後がこんな感じで、

前衛後衛
ターヒル(★4剣)ハリー(★3扇)
ナンナ(★3剣)スケアクロウ(★5弓)
ホセ(★3杖)ドリー(★3本)
コニー(★3槍)ペニー(★3斧)

今がこれ。あんまり変わっていません(ついでに現在のLv/上限Lvも書いておきます)。

前衛後衛
フェリーネ(★3短剣 Lv42/47)ナンナ(★3剣 Lv45/49)
スケアクロウ(★5弓 Lv46/88)リネット(★54扇 Lv44/65)
ドリー(★3本 Lv44/48)ラモーナ(★4杖 Lv45/72)
ペニー(★3斧 Lv44/47)コニー(★3槍 Lv44/47)

遊んでいると気が付かないものですが(自分だけ?)、表にまとめてみると8人中5人が★3なのでボス戦も楽じゃないです。実際、コニー(★3槍)/ナンナ(★3剣)よりもバラッド(★4槍)/ターヒル(★4剣)の方が多少レベルが低くても火力が高かったりしますし…52.85kg(11:05)

22-Dec-2020
[OpenBSD/arm64クロス開発環境の構築]

syuu1228さんの書いたOpenBSD/sgiクロス開発環境の構築と同様の手順です、以上!ではあるんですが…少し時間が経っていますしarm64なので違う部分についてちょっと書いておきます(おもに自分向けのメモ)。

makeの最後で実行されるmv bsd bsd.gdb; ctfstrip -S -o bsd bsd.gdbで、objcopy: Unable to recognise the format of the input file `bsd.gdb'というエラーメッセージが出ます。/usr/bin/ctfstrip(シェルスクリプト)を見ると、ホスト側のobjcopyを呼んでいるために起こるようです。とりあえずbsd.gdbという形でカーネルは得られるので今は放っておきます。

ところで、カーネルのクロスコンパイルはともかくとして、portsのクロスコンパイルってできないんですかね…?51.15kg(19:25)

26-Dec-2020補足:とある方から、Cross compiling ports with distcc on OpenBSDを試してはどうかとアドバイスがありました(ありがとうございます)。後で試してみます。

20-Dec-2020
[今年の振り返りをやるには]

まだちょっと早いですかね…

歳のせいなんだと思いますが、一日の重さが今まで以上に重くって、特に今年はしんどいなあと感じています。二週間もしないうちに年が明けるとはいえ、その二週間もしない期間を乗りきれる気がしない…

12月32日も要らないので、今年が終わったらもう終わったまんまで良いです。そう思いたくなるくらい、今年は疲れました…

とりあえず、年が変わるまでに雑な振り返り記事が書ければ良いのですが、期待しないでください。

★5ヒースコートを引いて残り10人。全てを極めし者の3章まで来てはいますが、ボスの待つ洞窟へ突っ込む気にもなれず、装備用の素材集めばかりやっている感じです。討伐はやっていません。

★4/★3キャラを主体にしたパーティーでLv40近くになって気づいたのですが、全てを極めし者の終章は推奨Lv65…★4だと上限突破でどうにかなりますが★3では突破してもLv60止まりなので全然届かないんですよね。

確かに★5キャラを優先して育てるのが一番近道、それは分かるんですが…なんかあんまり使う気になれなくて。割と最初の方で引いたスケアクロウ(弓)と、交代時攻撃強化(前全)の使い勝手が良いという理由でリネット(扇)くらいしか使っていません。

来月は(Steam版で)ライザのアトリエ2も出ますけど、ちょっと見送ります…54.15kg(18:20)

18-Dec-2020
[今更気づいたのですが]

大体去年の今頃に手に入れたSurenooのUART-TFTパネルに対して、こんなテストをやってみました。いわゆる文字で画面を埋め尽くすってやつなんですが。

tpc184210.jpg tpc184211.jpg tpc184212.jpg

tpc184216.jpg tpc184217.jpg tpc184218.jpg

元々240×320/128×160ドットという縦長の解像度のパネルとして売られているため、フォントサイズが8×16ドットなら30×20/16×10、12×24ドットなら20×13/10×6、16×32ドットなら15×10/8×5文字の表示になるのは当然なのですが…

DIR(1)コマンドをLCDパネルに送り、320×240/160×128ドットの横長パネルとして使うとこんな感じなんです。

tpc184207.jpg tpc184208.jpg tpc184209.jpg

tpc184213.jpg tpc184214.jpg tpc184215.jpg

フォントサイズが8×16ドットだと39×15/19×8、12×24ドットだと26×10/13×5、16×32ドットだと19×7/9×4…なんか横の文字数が目減りしてませんかね?52.25kg(22:00)

12-Dec-2020
[長時間のメンテナンスがあったようですが]

大陸の覇者、何となくなんですがメンテ明けのガチャってまだ手にしていないキャラが出やすいのは気のせいでしょうか?そのおかげかどうかは分かりませんが、初期64人+追加7人のうち60人揃いました。まだいないのは

★5
ミロード(杖), ギルデロイ(槍), ソフィア(本), ハンイット(弓), ヒースコート(短剣), テレーズ(本), ニコラ(短剣)
★4
メレット(斧), ペレディール(本), コルネリア(斧)
★3
ディエゴ(短剣)

この11人。当然ですが12月10日(ということにします、メンテ明けは今朝ですが)に追加されたニコラとコルネリアは引けていません。その代わりデュランの★4ではなく★3が来ています。このキャラに限らず★4の★3版が結構居るので、彼等を今後どう育てるかも考えないといけません…クラスアップアイテムを揃えるか、あるいは★4がでるまでガチャを引くか。

アイテムを揃える手間が途方もない、★5の★4版は今のところリネットだけというのはラッキーかもしれません。

Twitterでも呟いたことではあるのですが…いわゆるガチャ主体のスマホゲー、トラブルが起こる度に「石」(課金アイテム)を要求するユーザって一体何様のつもりなんだろう、というのを今回のトラブルでは考えさせられました。30日幾らのような期間に対する課金ならその期間を延長すれば良いでしょうし、アイテム課金ならサービスが復活すれば別に困ることは無いはず。遊べない時間は別のことをしていれば良いだけの話なのではないかと。

ニコニコ大百科の詫び石の項にあるように、「よこせ!」だの「だせや!おら!」と言ったら どこぞの消費者金融と変わらないただのヤクザの恫喝という認識をプレイヤーは持つべきだと思うのですが、どうもゆすりたかりをすることが正しいと思っているプレイヤーが少なくない(とはいえオクトラ大陸の覇者だとまだ少ない方だそうですが)というのはどうなの…というのが正直な感想です。

トラブルの度に石を寄越せと思うなり発言したりするのは各々の勝手ではありますが…そういうユーザが増えれば増えるほど、参加しているゲームの(プレイヤーの)質が下がってしまい、最終的にはプレイヤー全体の首を絞める結果になる気がします。53.30kg(18:00)

08-Dec-2020
[sndioおぼえがき]

こんな感じのコードで、

という手順で音を鳴らすことはできています。やっていることはhints on writing & porting audio codeそのまんまではありますが…sio_open()でnon-blocking modeを指定していないので、sio_nfds()/sio_pollfd()/poll()/sio_revents()を使って待たせる処理は書いていません(バッファが空くまでsio_write()が待ってくれます)。

sndioはあんまり難しいことを考えなくても使えると言っている人がいて、確かに試しにコードを書いてみてもあまり困らずに書けるかなとは思います。でもなぜかdirewolfのsndio化がうまくいかなくて困ってるんですよね…(OpenBSDのportsに入っているaudio/portaudio-svnも、FreeBSDのportsと同じように環境変数PA_SNDIO_AUDIODEVICESの指定で複数デバイスの取り扱いができるようになってはいるのですが、パッチを投げた本人もその存在を忘れていたのでやっぱりsndioネイティブの対応は必須かなーと)52.90kg(21:00)

12-Dec-2020補足:どうも10.1 Playback and record aren't independentの問題を踏んでいるらしく、テスト用に書いたコードのsio_open(SIO_PLAY)をsio_open(SIO_PLAY|SIO_REC)とすると見事に動かなくなります。これをどうやって解決すれば良いのか、頭が痛いです…

05-Dec-2020
[簡易radiko録音ツール(を改造したもの)から]

今までradikoの再生をsaiten/rec_radiko.shmatchy2/rec_radiko.shを改造したもので行っていたのですが、週末だし何か聴くかなと久々に起動してもエラーが出て動かない…

Radikoの仕様が時々変わるためその都度スクリプト側でも対応しているようなのですが、何かアップデートが出てないかなーと覗いてみたところ、今後はradishを使うことをオススメしますとのことなのでuru2/radishへ移行することにしました。

プレイヤー化はそんなに難しくないのですが、-sオプションによる放送局IDの指定はちょっと一癖ありますね。NHK第2は全国共通なのでr2で良いのですが、第1はtokyo-r1、FMはosaka-fmのように、<地名>-{r1,fm}と指定する必要があります。地名についてはhttps://www.nhk.or.jp/radio/config/config_v5.7.3_radiru_and.xmlを見ればよさそうですが、以下のものが指定できるようです。

なお、内部でseqコマンドを使っていますがこれはLinux方言で、*BSDではjotコマンドに置き換える必要があります。未修正の場合、-lコマンドによる局名表示が正常に行われないという問題があります。

とりあえず、これでRadiko/NHK受信用のスクリプトを一つにまとめることができそうなので、rec_radiko.shにはおつかれさま、そしてradi.shはこれからよろしくなのであります。エフエムさがみ受信用のも統合できるのですが、msdlを使っている(パッケージの動作確認の目的がある)という理由によりこれは当分このままです。53.60kg(15:30)

06-Dec-2020補足:seqコマンドがLinux方言と書いてしまっていますが、FreeBSDとNetBSDはseqコマンドを持っており、OpenBSDだけ無いという状況です。unameでOS名をみてjot/seqを切り替えるよりは、(スマートではありませんが)awkで対応してみました

radi.sh(および改造したradish-play.sh)ともに-lオプションで局名一覧を表示させるとDebian/Raspberry Pi DesktopではJCBA局の一覧が出ない(Solus/Slackwareでは動く)問題、curlが"curl: (35) error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small"を返してwww.jcbasimul.comからダウンロードできないため発生するようです。