Quest3 + Pro touch (Proコントローラ). この組み合わせは Meta 公式にサポートはされてこそいるがなかなか微妙だ. 私の場合, 次のような問題によく遭遇する。
公式に問い合わせたことはあるが, ペアリングをやり直せ, 電源を入れ直せのテンプレ回答以上の文言を引き出せなかったので諦めてる. この問題が起きるタイミングは次の2つだ.
2 は書いてる通り本来問題がないのだが, SteamVR を噛ませるとスリープ状態になったまま元に戻らないような挙動になる. しかしあくまで SteamVR から見た状態なだけであって, Quest から見ると実際には正しく動いている.
この2ケースについて一応の解決策を見つけた.
(2024/10/03 の追記) コントローラのドライバ(?)は定期的に更新される. ちなみにこの更新は自動であって拒否したりダウングレードはできない. 更新のたびに上記の問題は全く起こらないときもあるが, 次の更新でまた発生する. そういうものだ.
(追記その2) 解決策 3 がある. コントローラのスリープ状態とそこからの復帰状態を何度か繰り返させることだ. コントローラの電源を落とすのも手だが, ずいぶん時間がかかる (きっちり10秒間 meta ボタンを押し続けることで電源が落ちる). 充電器に置いて充電状態にする, また手に取る, ということを何度か繰り返すことで, スリープと復帰ができる. これで解決することもたまにはある. 全く解決しないこともある.
傷ついたのは誰の心?
もしかすれば筒井康隆の短編で一番好きかもしれない. 一番は言いすぎたな. 一番は「睡魔のいる夏」だから.
罪の大きさを心の傷で測ってはいけない. 加害者だって同様に傷つくものだから. それを知っていれば本作は全く不条理な小説ではなくなる. ふとした時に口にしたくなる.
傷ついたのは誰の心.
生きやすさのためのコツ
ごめんなさいと謝りながら, 何かお酒を二杯飲んだ
duolingo で中国語やってたんだけど, 先週くらいにセクション2まで終わったらセクション3が始まるんだけど, これが何かというとセクション2までの内容をひたすら何度も復習するというもの. 復習するにしても内容が偏ってるんで答えを暗記してしまった. 毎日変わらない復習をするだけで, 初めのうちは何かおかしいなと思いながら馬鹿正直にやってたんだけど, もうこれ以上テキストが無いのだとようやくわかって duolingo を閉じた.
たぶん絶対便利なコマンド考えた. コマンドの頭に withcache と付けるとコマンドの結果をキャッシュしてくれる. 例えば
curl http://google.com
は毎回問い合わせちゃうけど, 代わりに
withcache curl http://google.com
と実行すると, 初回は問い合わせて, 続けて1時間程度はキャッシュを残しておいて, 実際に問い合わせずにキャッシュをそのまま出力して済ませる.
試しに書いてみた.
stdout しかキャッシュしない. MacOS でしか動作確認してない. 問題があったらちゃんと書き直す.
(2024/09/05 の追記) シェルスクリプトで書いてたけど Python で書き直した. シェルスクリプトでコマンドオプションを正確に受け取るのは難しい. 案の定バグを仕込ませてしまっていた.
(2024/10/03 の追記) withcache は今現在でもお気に入りのコマンドになった. もっと短いコマンド名にエイリアスしておくと良いかもしれない. 例えば@
は実は自由に使えるみたい.alias @=withcache
としてしまおう.
タグ検索をできるようにした
ちょっと面倒くさい事情があった.
このページは URL の cympfh.cc/vrc/#XXX
の #XXX
の部分 (つまり location.hash
) を仕様通り適切に使っていた. 次の仕様だ.
HTML/DOM のある要素が id=XXX
の場合に #XXX
でアクセスするとその要素を先頭にした位置までスクロールしてくれる. 加えて, css で :target
及び :not(target)
を指定することで #XXX
にアクセスするときとしないときとで id=XXX
のスタイルを変える事ができる.
cympfh.cc/vrc はこれを利用して大量の要素に id を振って並べていた. #XXX
にアクセスしてくれたときだけ, 該当する要素にスクロールしてそれだけを大きく表示してそれ以外を小さく表示するという見せ方をしていた. これ仕組みは今でもお気に入りの手法だ.
ここにタグ検索をできるようにした. #TTT
にアクセスしたら TTT
という文字列にヒットする要素だけを並べることにする. 結果的には, id=TTT
という要素がそもそも存在しなければ先程述べた挙動とはバッティングしない. 存在する場合には先程の挙動が実行される. しない場合は自分で書いた JavaScript が実行されるようになっている.
本来バッティングする仕組みが2つ混ざっているのだが, 結果的に都合よく動いている.
oil.nvim を試してみてる. Lua 製なので nvim でしか動かないんだが, nvim で動くファイラ. ほとんど netrw みたいな見た目と操作性なんだけど, 機能は全部揃ってるので欲しいだけ高機能に扱っていいし, 興味がないなら netrw に少し毛が生えたくらいの機能で満足していい. 私はそれで十分なんじゃないかと思って昨日から生活してみてる.
ネットで拾った最低限の設定だけ採用してる. デフォルトでは <C-p>
でプレビューなんだけど私はこれはタブ操作に割り当ててるので <C-v>
にした. MacOS の上でネイティブで動かしてると delete_to_trash
は本当にちゃんとゴミ箱に移動してくれる. WSL2 の場合はどうしよう.
(2024/10/03 の追記) ranger をやめた. ranger 自体は vim/nvim プラグインではなくて TUI のファイラーなのだが, 追加で nvim の中で使えるプラグインを入れていた. しかしまあ Python スクリプトでもあるし依存が多く動作が安定しない. あと単純に重たい. oil.nvim で満足してる. nvim を使ってる最中はもちろんだし, ただターミナルにいる場面でも nvim .
とやって oil.nvim を立ち上げるほうが便利が場面が多々ある.
一番グリーンウォッシュで馴染み深いのアレよね. この木、何の木。
Mac/Karabiner. Control-1/2/3 でそれぞれ英字入力/日本語入力/中国語入力を一発で切り替えるようにした. 元々 Control-Space で順繰りに切り替えてて, IMEがちょうど二つのときは今使っているもう一方のIMEになるだけなので簡単だったが, 三つ以上あるともうついていけない. しかもその順繰りの順序が最近使った順なので, 余計に困難を極める.
config.json
{
"description": "Use Control+1/2/3 to switch language.",
"manipulators": [
{
"from": {
"key_code": "1",
"modifiers": {
"mandatory": [
"control"
],
"optional": [
"any"
]
}
},
"to": [
{
"select_input_source": {
"language": "en"
}
}
],
"type": "basic"
},
{
"from": {
"key_code": "2",
"modifiers": {
"mandatory": [
"control"
],
"optional": [
"any"
]
}
},
"to": [
{
"select_input_source": {
"input_mode_id": "com.apple.inputmethod.Japanese"
}
}
],
"type": "basic"
},
{
"from": {
"key_code": "3",
"modifiers": {
"mandatory": [
"control"
],
"optional": [
"any"
]
}
},
"to": [
{
"select_input_source": {
"language": "zh"
}
}
],
"type": "basic"
}
]
}
二ヶ月に一回こうやって手元の日記を集めて一つのテキストにまとめる作業をしてるんだけど, 分量的に三ヶ月に一回でも十分かもしれないと思い始めた. 奇しくも一年の12ヶ月は3の倍数でもある.