体調が悪い気がする.
* ESP32-C3
ESP32-C3普通に売られてるの見るようになってしばらく経つのに技適マーク付いてるモジュールが無いなと思ってたのだけど,スイッチサイエンスで売ってるM5Stamp C3は技適通ってるのか.M5Stamp Picoの方しか使ってなかった.
そろそろ技適マーク付いた機器しか使わない縛りで生活するのは限界な気もするけど...
試しにTinyGoも使ってみようと思ったけど,EspressifのCPUはサポートしていても,まだESP32のWiFi/Bluetoothは未サポートで使えないっぽい.
最近の Chrome で A-Frame を使っていると,子要素の構築が終わる前に,コンポーネントの update() が呼ばれたりloadedイベントが発生するっぽい.DOM要素のchildNodesの内容自体が中途半端な可能性があるので,必ず子要素の追加をちゃんと処理しないといけない?ChromeのCustom Elementsの挙動が以前と変わった気がする.
会社のオフィスのほうが仕事は捗る気がするので,そろそろオフィスで仕事をしようかとも思っていたけど移動が面倒で部屋から出れないな.
とても眠い.
まだ5月になったばかりな気がしていたのだけどもう5月下旬...
3Dプリンタ用のPLAフィラメント,しばらくPxmalionのやつ使ってたのだけど,残り少なくなるとリールに巻かれてる半径が小さくなるからか折れやすいな...折れやすい以外は使いやすいのだけど.
https://github.com/binzume/webrtc-rdp
それなりに使えてるけど,複数のPC操作しているとクリップボードの共有機能が無いと不便だな..
Oculus Questもそうなのだけど,Android Chromeで Ctrl+Space を入力すると,keydown(Control),keyup(Control),keyup(Space),keyup(Control)の順でイベントが発生する.Spaceのkeydownが存在しないし,Controlのkeyupがなぜか二回発生していて何かおかしい.
あと,Windows(Command)キーとPrintScreenキーはAndroidのシステムで特別扱いされてるみたいでKeyboardEventが発生しない.
npmで相対パス指定のdependencyを含むパッケージをインストールするとnpm内で TypeError: Cannot set properties of null (setting 'peer')
と言われてどうしようもなくなることがある.node_modulesの下にリンクが生成されると上手く扱えてなさそう.
https://github.com/npm/cli/issues/3847
これと同じ原因っぽい.昔のバージョンでは動いてたみたいだけど1年近く直ってないしダメそう..
https://github.com/binzume/webrtc-rdp
RTCDataChannel上でファイルを共有できるようにしておく.だいぶ昔に書いたWebSocket経由でファイルシステム扱うやつがあったので少しいじっただけ.ChromeのRTCDataChannelはArrayBufferは使えるけどまだBlobは未サーポートだった…….
ElectronのIPCチャネルは,シリアライズ可能なものしか通さないのでファイルをメモリに読まずにFileやBlobをレンダラプロセスに渡したいときに困る.いくつか関連するissueがあったので眺めた感じだとあまりやる気は無さそう.逆方向の,レンダラプロセスからメインプロセスにFileを渡すためにFileオブジェクト自体にpathを取得する口を作ってあるのか……実際のパスが見えてしまうのは少し気持ち悪い.あと,FileSystemHandleにはpathが無いので,ファイルを含まないディレクトリがドロップされたときはpathを取得する手段が無さそう?
Electron自体に手を入れてしまうと後で面倒そうだし,とりあえずWindows上で良ければWM_DROPFILESメッセージ送ったら,JavaScript側でdropイベント発生するんじゃないかと思ったけどダメだった.ChromiumはOLE Drag and Dropしか受け付けないっぽい.
少し前に,ckw から Windows Terminal に移行したのだけど,少し挙動が怪しい.基本的には良い感じなのだけど.
色々な場面で一瞬だけ待たされるのと,待っている間に操作すると謎の状態になりがちな気がする.
一番気になるのは,ファイルやディレクトリをドラッグしてパスを貼り付けた瞬間に何かするとパスが貼り付けられなかったりクラッシュしたりする.よく cd
まで入力してエクスプローラからディレクトリをドロップした直後にEnterを入力するので手が勝手に動くのだけど,ちょうどダメなタイミングでEnterキーを押しているっぽい.0.1秒くらい待てば大丈夫.あとはクリップボードを経由するようにするか….
複数タブ開けるけど,管理者権限のタブは混ぜられないっぽいので,wsl上のdocker操作したりするとき別ウインドウが表示されて少しだけ鬱陶しい.
https://github.com/binzume/karakurijs
RobotJSに足りないものを色々追加したり置き換えたりしてたものをnpmパッケージに切り出した.Linuxでも使えるようにRobotJSのwrapperとしても動作するようにしたけど,いらなかったかも.
やること溜まってる気がするけど,現実逃避して色々書く日.
Node.jsでプラットフォームごとのモジュールを作りたいときは,パッケージ分けてpackage.json の os や cpu を書いた上で,optionalDependencies
に追加するのが定石っぽい?
optionalDependenciesだと他の理由で失敗しても素通りしてしまったり,推移的依存関係にあるモジュールが不要なものまでインストールされてnpm listしたときにextraneousになってしまうのが気持ち悪いな.
node-gyp,conditionsでプラットフォームごとにビルドできるけど,targetsが空になるような設定だとビルドに失敗したりするので悩ましい.0個なら何もしないで欲しいのだけど...
{
'conditions': [
['OS=="mac"', {
"targets": [
{
"target_name": "automation",
"sources": ["src/automation.mm"]
}
]
}],
['OS=="win"', {
"targets": []
}]
]
}
空のVisualStudioのソリューションが出力されるとビルドに失敗するっぽい.
東京に戻る.
海.
肉を焼いた.
夜は風が強かった.
新潟でキャンプ.
カニを食べた.
WebRTC Remote Desktop
WebXR版のクライアントで,デスクトップのウインドウをドラッグして分離して取り出せるようにしておく.ウインドウ名の一覧から選ぶ手間が無くなって少し快適になった.
昨日は電車空いてたけど,今日は人多い.
特急北斗,グリーン車はコンセントあるのでPC使えるけど少し揺れるしあまり作業に集中できないな...
登別.
最近引きこもっていたので出かける.何も予定は立ててないけど,とりあえず北へ.
洞爺湖.
予定は新幹線の中で考えれば良いかと思ってたけど,いつのまにか着いていた.新幹線の中は他にすることが無いので作業がはかどる.寝る場所無いと困るので宿の予約だけした.ゴールデンウイークだけどそんなに混んでない?
Electronの desktopCapturer.getSources()
で返ってくるソースにキャプチャできないウインドウが含まれるので調べると,ウインドウハンドルおかしいな...どこで壊れてるのか調べるの面倒.JavaScriptで実装できてDevToolsも使えてデバッグ簡単に見えて,面倒な問題の多くはElectron内部やネイティブモジュール周りなので結局面倒くさい.(それだけChromiumが良くできているということなのだけど)
とりあえずdesktopCapturerとか無視してウインドウハンドルから自分でストリームIDを生成するとキャプチャできる.そもそもrendererプロセスからなんのパーミッションも無しにウインドウをキャプチャできてしまうの便利だけどそのうち塞がれてしまうかも.
Electronの最近のリリースノート見てると,セキュアにしようと頑張ってる感じがあるけど,何でも自由にできたところに,後付のセキュリティ機構入れるの大変そうだし,今のところ面倒の割に危なそうな挙動も多くてコスパ悪そうに見える…….できれば,asar内のリソースを特殊なoriginとして扱えて,origin単位のパーミッションがあると便利なのだけど.
夜,花火が上がっていた.
出かけようと思ってたけど天気悪い.色々雑用を片付けたり掃除したり.