とても眠い.
以前メタセコイアのプラグイン用に書いてたBSP Tree周りの実装を整理したりしていた.https://github.com/binzume/cppgeom
BSP木で3Dオブジェクトを扱う実装,ツリー内にポリゴンを保持することが多い気がするけど,元々がBSP木でオブジェクト同士のブーリアン演算するためのやつだったので,ノードには境界面のみを保持してツリー自体が形状を表現するシンプルなやつにした.
動作確認とベンチマークのためにrayとBSP木の交差判定するスクリプト書いてみたけど,ここまで来るとレイトレーサー書きたくなるやつだ.
交差判定時の重なった面を無視するために雑に入れたepsilonを消したいのだけど,浮動小数点数の扱いむずい.
熱は下がった.とても身体がだるい.
JavaScriptの実行環境によってFloat64Arrayに入ったNaN値を読み書きすると,バッファ内の値が変わってしまうのが気になったのでjsのNaNの扱いを見ていた.
おそらく,NaN Boxing のために常にpayloadビットをクリアしているのだろうけど,Chrome(というかV8)はNaNのpayloadを維持したまま演算できる.
https://tc39.es/ecma262/#sec-ecmascript-language-types-number-type
NaNはJavaScript内では互いに区別できない値という以外,実際のNaN値のビット列がどう扱われるかは実装依存っぽい.むしろChromeが頑張りすぎに見える.
ほとんど問題にならないだろうけど,自前で NaN Boxing するような処理系をJavaScriptで実装しようとしたり,NaNにエラーコードをエンコードして入れてるようなハードウェアやライブラリを呼び出す場合には気をつけたほうが良さそう.
念の為休み.やっぱ熱出てだるい.
一回目とあまり変わらない気がしたけど,熱下がらないな...とりあえず解熱剤を飲んでおく.
TypeScript 用に d.ts を書いてたのだけど,interface にはプロパティの getter, setter を分けて書けないのか...
初期化前にnullを返すけど,nullをsetすることは許さないようなのとか,色々setできるけどget時には型が保証されているものが書きにくい.そういうのは,個別のメソッドを作れって事な気もするけどインターフェイスを変更するのも面倒.
https://github.com/binzume/mqo-jsmacro-plugin でjsからウインドウ作れるようにしたのだけど,quickjsでイベントリスナをちゃんとGCできるように扱うのとてもめんどいな.イベントリスナは何を参照してるかわからないので,JSValueとしてC++の実装で保持してしまうとガベージコレクタが辿れなくなるので,循環参照していた場合にリークする...
コールバック関数を適当なObjectのプロパティとして持つことにしたけど,V8でいうInternalField的なのがないので,参照時に毎回プロパティから検索されるのが微妙.
V8見てみると,WeakCallbackというそれぽいのあって便利そうに見える.
3Dプリンタ用のモデル作るときに使ってたスクリプトにUIを付けた.今まで,オブジェクト名に式を手入力してたけど64文字しか使えなくて無理があったのでmqxにデータを保存するように.
久しぶりにメタセコイア使ったけどアップデートしたら標準のブーリアン演算機能がまともな挙動をするようになった気がする.プラグインからは呼び出せないっぽいけど.
朝から区役所に行ってマイナンバーカードを受け取ってくる.
なんだかPixel 3が膨らんできた気がするのだけど,最近充放電繰り返し続けてたせいだろうか...
眠い...
最近,Nature Remo miniの接続が不安定なのだけど,なんでだろ.エアコンや照明の操作しようと思ったときに反応しない事があると地味に不便.自作のやつに戻すことも考えたけど,Googleアシスタントに登録できるのは捨てがたい.
ラーメン食べた.
ICFPC
幾何学とグラフむずい.
終わった.家に帰って寝る.
ICFPC.
鰻を食べた.
ICFPC.
午後はniwasaki家に.
天気良いけど暑い...
昨日寝る前にガラス製のコップを割ってしまって,細かい破片が散らばってたのを眠い中片付けた.……片付けたつもりだったけど,朝起きたらベッドの上にキラキラした破片が.朝から部屋の掃除をする.
今夜からICFPC 2021.
https://icfpcontest2021.github.io/
夜中目が覚めてしまってあまり眠れなかったのでとても眠い…
3ヶ月以上前に申請したマイナンバーカードの交付通知書が届いたけど,予約してから取りに行かないと行けないのか.そもそもWebで申請したので,同じシステムで完結してくれれば交付通知書とかいらない気が.
Go 1.17のリリースノート(のドラフト版)を眺めてて,Type paramsが無いなと思ったら,デフォルトでは無効なのか.-gcflags=-G=3
が必要っぽいので,ライブラリとかで使うのはまだ少し早いかも?
今週ずっと天気悪かったけど雨やんだな.でも引きこもる.
* ストアのAndroidアプリを非公開に
Google Playストアのアプリの公開を一旦止めました.とりあえず設定を非公開にしただけなので,インストール済みの人はストアの情報もまだ見えますが,新規インストールはできないはず(たぶん).
まだ使ってくれている方も結構いるみたいですが,定期的にストアのポリシーが更新されて色々要求されたり,targetSdkVersionの要求が変わってアップデートも面倒になって放置していて,問い合わせにもあまり良い返事を返せないので.
Playストアだけが悪いわけではないだろうけど,アプリを配布するのがだんだん面倒になっていくの,何かおかしい気がする...十数年ぶりにログインしても何も変わってないVectorとかを見習ってほしい.
どれくらいの人が使ってくれたのかなと気になったけど,最近はダウンロード数とか無いのか.ユーザ獲得数を見るのが良いのかな.
とりあえず1万人以上が使ってくれたアプリ:
ニコニコPlayer(仮)
まだニコニコ動画の公式アプリが無かった時代,Adobe Flashが動作しないAndroid 2.0以下の端末でニコニコ動画を見るために作ったアプリ.流石にもう役目を終えただろうと思ったけど,ずっと使い続けてくれくれる人が意外と多かった.
ユーザ数は,1.2Mくらい.いままでに趣味で作ったものの中では一番利用者が多かったけど,アプリ単体で価値があるわけではないので悩ましい.
上に書いたような目的で作ったものなので,Android 1.x用の実装がたくさん入っていて,targetSdkVersion上げると色々壊れてしまうし,本来の目的からも外れるので結局ずっと大きなアップデートはしなかった.
ニコ動を見るためのAndroidアプリを3回くらい実装したような...仕事で関わっていた公式アプリで自分の野良アプリのシェアを奪うために頑張る不思議な経験をした.
自炊本リーダー(仮)
自炊してPDFにした書籍を快適に読めるアプリが欲しくて作ったやつ.他のアプリやOSSのPDFライブラリ色々見たけど当時のモバイルデバイスでは遅すぎて快適とは程遠かったので,まともな速度で動くPDFパーサから作らないといけなかった.
作り始めたときはPDFとか1フレームでレンダリング完了するべきだと思っていて,RenderScriptとか色々使ったけど,結局100ms近くかっていたような気がする.それでも当時存在したアプリの中では一番高速だったはず.
ユーザ数は,113k.
公開は止めたけど,他の良いアプリが見つからなくて未だに自分用にはアップデートを続けてる唯一のAndroidアプリ.
ネギアンテナ
電波の強さをネギの本数で表示するアプリ.元々は昔のAndroidでデータ専用SIMだとアンテナが正しく表示されない問題があって作ろうと思ったのだけど,結局Android側にパッチ当てて使うことにしたので,画像差し替えてネタアプリにした.
ユーザ数は,44k.
初めて作ったAndroidアプリ.Activityを1つも持たないアプリだけど,今のPlayストアでもそういうアプリ登録可能なんだろうか.既に削除済みになってたけど,メール見返したら半年前にストアのポリシーに違反しているとメールが来ていた.
ビワ...