ときどきの雑記帖 RE* (新南口)
開け心
代台
そんな単語はない(はず)>代台 というセルフ突込み的な「お断り」はさておき。
同音異義語などの打ち間違い的な誤記はまあ少なからずありますが、 最近気になってるのが「台」と「代」。
Firefox
今もFirefoxを使い続けているのですが。
ひところに比べると入れている拡張の数もだいぶ減った (というか、アーキテクチャの変更で使えなくなってしまったものが 結構ある)のですが、 現在使っているものの一つに OneTab – 🦊 Firefox (ja) 向け拡張機能を入手 があります。
このonetab、これまで3回ほど(ため込んだタブの)データが吹っ飛んでるんですが、 つい数日前の「3回目」ではそれまでの二回とは違ったぶっ壊れ方をしてくれました。
キレイさっぱり跡形もなくなくなればそれはそれで諦めもつくというものですが、 中途半端に数日分のデータが残っている一方で動作がおかしくなるという症状で どうしたものかと悩むことに。
具体的には、画面右上に出てくるはずの操作メニューが表示されないというものと onetabの画面から復帰させたときに onetabの再描画が行われない(データとしては削除しているらしく、 強制的に再描画させると正しく反映される)。というものです。
数日分とは言え消えるのはもったいないとは思ったものの 使い勝手が悪すぎるので、アドオンを削除し、 さらにアドオンが使っていたディレクトリも削除。
具体的にはこの辺(名前を一部を適当にいじっています)
moz-extension+++4a97af2e-0f4d-4465-a21c-012345678901^userContextId=XXXXXXXXXX
moz-extension+++542830d6-c310-48f2-ac53-123456789012^userContextId=XXXXXXXXXX
moz-extension+++5938281c-40b8-4239-b647-234567890123^userContextId=XXXXXXXXXX
moz-extension+++61971ff7-27f3-4ab8-947d-345678901234^userContextId=XXXXXXXXXX
moz-extension+++74e6530e-6817-4a8e-abfe-456789012345^userContextId=XXXXXXXXXX
moz-extension+++a49d8f99-01e7-4fb0-bb99-567890123456^userContextId=XXXXXXXXXX
moz-extension+++a922c6f5-c7d2-4f7d-a58c-678901234567^userContextId=XXXXXXXXXX
moz-extension+++aad077b2-fb79-4a67-917e-789012345678^userContextId=XXXXXXXXXX
moz-extension+++ac2ecc3d-42e0-4cc1-b507-901234567890^userContextId=XXXXXXXXXX
moz-extension+++c12304f2-8128-4526-b66c-012345678901^userContextId=XXXXXXXXXX
moz-extension+++c94fcd4b-52b7-431d-ab24-234567890123^userContextId=XXXXXXXXXX
moz-extension+++ce84dc8c-1d86-4cae-9a61-345678901234^userContextId=XXXXXXXXXX
moz-extension+++e934ca83-d6f0-4957-81e2-456789012345^userContextId=XXXXXXXXXX
なぜこんなにたくさんあるんだ。という疑問はわきに置き (作成日付はバラバラなので過去のクラッシュの影響か)、 それぞれのディレクトリをさらに潜ったところに 拡張子が.sqliteのファイルがあるので どれどれとその中身を見てみると
sqlite> .tables
database index_data object_store unique_index_data
file object_data object_store_index
どうもそれっぽいものはなく (.schemaで確かめた)。
再度ディレクトリをみると、それがないディレクトリもあったが jounals というディレクトリや拡張子がないファイルが存在していた。 たとえば以下の例でいう 41227。
'./moz-extension+++088ffc1e-f474-472d-824f-123456789012^userContextId=XXXXXXXXXX':
idb
'./moz-extension+++088ffc1e-f474-472d-824f-123456789012^userContextId=XXXXXXXXXX/idb':
3647222921wleabcEoxlt-eengsairo.files 3647222921wleabcEoxlt-eengsairo.sqlite
'./moz-extension+++088ffc1e-f474-472d-824f-123456789012^userContextId=XXXXXXXXXX/idb/3647222921wleabcEoxlt-eengsairo.files':
41227 journals
'./moz-extension+++088ffc1e-f474-472d-824f-123456789012^userContextId=XXXXXXXXXX/idb/3647222921wleabcEoxlt-eengsairo.files/journals':
'./moz-extension+++4a97af2e-0f4d-4465-a21c-234567890123^userContextId=XXXXXXXXXX':
idb
'./moz-extension+++4a97af2e-0f4d-4465-a21c-234567890123^userContextId=XXXXXXXXXX/idb':
3647222921wleabcEoxlt-eengsairo.files 3647222921wleabcEoxlt-eengsairo.sqlite
'./moz-extension+++4a97af2e-0f4d-4465-a21c-234567890123^userContextId=XXXXXXXXXX/idb/3647222921wleabcEoxlt-eengsairo.files':
そしてこの41227というファイルをダンプしてみると
>hexdump -C 41227 -n 256
00000000 ff 06 00 00 73 4e 61 50 70 59 00 6a 7b 00 75 8f |....sNaPpY.j{.u.|
00000010 aa 73 80 80 04 04 03 00 01 01 b0 f1 ff c5 de 37 |.s.............7|
00000020 00 04 00 ff ff 7b 00 22 00 74 00 61 00 62 00 47 |.....{.".t.a.b.G|
00000030 00 72 00 6f 00 75 00 70 00 73 00 22 00 3a 00 5b |.r.o.u.p.s.".:.[|
00000040 00 7b 00 22 00 69 00 64 05 0e c0 22 00 78 00 6c |.{.".i.d...".x.l|
00000050 00 34 00 50 00 78 00 34 00 62 00 36 00 6f 00 45 |.4.P.x.4.b.6.o.E|
00000060 00 58 00 4c 00 4c 00 6e 00 71 00 4e 00 4f 00 65 |.X.L.L.n.q.N.O.e|
00000070 00 42 00 75 00 4d 00 42 00 22 00 2c 15 58 10 73 |.B.u.M.B.".,.X.s|
00000080 00 4d 00 65 05 64 4e 56 00 a8 68 00 37 00 58 00 |.M.e.dNV..h.7.X.|
00000090 79 00 75 00 72 00 6b 00 50 00 37 00 75 00 74 00 |y.u.r.k.P.7.u.t.|
000000a0 32 00 47 00 78 00 66 00 65 00 38 00 72 00 50 00 |2.G.x.f.e.8.r.P.|
000000b0 4a 00 57 00 45 0d 56 01 2a 00 6c 05 4c 18 22 00 |J.W.E.V.*.l.L.".|
000000c0 68 00 74 00 74 05 b2 58 3a 00 2f 00 2f 00 67 00 |h.t.t..X:././.g.|
000000d0 69 00 67 00 61 00 7a 00 69 00 6e 00 65 00 2e 05 |i.g.a.z.i.n.e...|
000000e0 06 08 74 00 2f 05 08 a0 77 00 73 00 2f 00 32 00 |..t./...w.s./.2.|
000000f0 30 00 32 00 31 00 30 00 33 00 31 00 35 00 2d 00 |0.2.1.0.3.1.5.-.|
00000100
なにやら怪しげな(リンク先情報っぽい)ものが。
というところで力尽き(飽き)てしまったので色々検索。
- sqlite - Linux bashからのFB-PurityのFirefox idb(インデックス付きデータベースAPI)object_data blobの解析 - ITツールウェブ
- sqlite - Parsing FB-Purity’s Firefox idb (Indexed Database API) object_data blob from Linux bash - Stack Overflow
- IndexedDB database file walker for Firefox
- IDBDatabase - Web API | MDN
- Onetab saved items gone after firefox update | forum pomocy produkta Firefox | Pomoc Mozilla
以前はJSON形式で保存していたのだけど 現在はsqliteファイルの中にあるIndexedDBに放り込まれているのだとか。
(1) Alternatives to OneTab + OneTab database location and export? : firefox
If OneTab isn’t prompting you to save the file, just saving tabs transparently in the background, it likely is using the extension storage API (MDN) and Firefox is putting the data into an IndexedDB database under the storage folder in your profile.
IndexedDB database entries look like gibberish because they are compressed, so reading them with a general SQLite database utility is difficult at best. Some guidance if you want to go down that road:
https://www.reddit.com/r/firefox/comments/g6br0c/decoding_indexeddb_permanent_storage/
めんどくせー☹。
- (1) Decoding IndexedDB permanent storage : firefox
- futura-boldがHow can I read the SQLITE files of Firefox add-ons?について記入したコメント
- laenion/Firefox-OS-Data-Exporter: Convert IndexedDB databases into readable text
この辺でどうにかできるか?
JEP 402
Java もこっちの方向へ行くんですな。
JEP 402: Unify the Basic Primitives with Objects (Preview)
Summary
Unify the basic primitives (int, double, etc.) with objects by modeling the basic primitive values as instances of primitive classes (introduced by JEP 401) and repurposing the wrapper class declarations to act as the basic primitives’ class declarations. As a result of this change, all Java values will be objects. This is a preview language and VM feature.