<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1330666698970423728</id><updated>2026-03-04T15:29:07.673+09:00</updated><category term="Mozilla"/><category term="Mobile"/><category term="Firefox"/><category term="linux"/><category term="WebKit"/><category term="Windows"/><category term="ARM"/><category term="Android"/><category term="Chrome"/><category term="Internet Explorer"/><category term="CSS"/><category term="Thunderbird"/><category term="Blink"/><category term="javascript"/><category term="Opera"/><category term="Windows Mobile"/><category term="risc-v"/><category term="Web Standard"/><category term="B2G"/><category term="S60"/><category term="biz"/><category term="2ch Browser"/><category term="Edge"/><category term="Hotel"/><category term="X02HT"/><category term="acid3"/><category term="dom"/><category term="hardware"/><category term="nokia"/><category term="rust"/><category term="x64"/><category term="OpenOffice"/><category term="Windows Phone"/><category term="apple"/><category term="GTK"/><category term="ICU4X"/><category term="Mercurial"/><category term="OSX"/><category term="PKI"/><category term="SVG"/><category term="TODO"/><category term="isp"/><category term="oss"/><category term="ruby"/><title type='text'>won&#39;t fix</title><subtitle type='html'>Life with Web Browser Engine (Gecko, WebKit and etc), Mobile and etc.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://wontfix.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://wontfix.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Makoto</name><uri>http://www.blogger.com/profile/06587987793631355128</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinXKxU0AIbGa7nKqqjz4EBjrqADjfgtUpVm269aOoVenI57awO3_TFrq2ixuoSXfIZ7IBRQs49Cauln8b20a8YOzNNHhNZ2TeXK_wOLbUR_Q-iYvPUl4G5rOZ-SoRIPA/s107/newface2.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>387</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1330666698970423728.post-9183681853866095652</id><published>2026-03-04T15:29:00.000+09:00</published><updated>2026-03-04T15:29:07.571+09:00</updated><title type='text'>TP-Linkの2.5Gスイッチングハブが壊れた</title><content type='html'>&lt;p&gt;2021年に買ったTP-Linkの&lt;a href=&quot;https://www.tp-link.com/jp/business-networking/soho-switch-unmanaged/tl-sg105-m2/v1/&quot;&gt;スイッチングハブ (5ポート2.5G) &lt;/a&gt;が壊れた。買って5年経たないくらい&lt;/p&gt;

&lt;p&gt;最近たまにデスクトップPCのネットワークが切れる現象が発生していた。デスクトップ側のチップかドライバの話だろうと考えていたのだが、最終的にスイッチングハブの電源ランプが点滅し始めて一切ネットワークポートが認識しなくなった。予備のハブ (Edge Router-X) に繋ぎ変えると当然の如くネットワークは復活するのでどうもTP-Linkのスイッチングハブが壊れたようだ。ちょうど買ってから5年くらいでかつ、低価格な2.5Gなスイッチングハブの先駆けみたいな製品だし、ファームウェアも初期のV1だったので、そんなものだろうという感じかも。TP-Link自体は&lt;a href=&quot;https://ja.wikipedia.org/wiki/TP-Link#%E7%A6%8F%E5%B2%A1%E5%A4%A7%E5%AD%A6NTP%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%B8%E3%81%AE%E9%81%8E%E5%89%B0%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E5%95%8F%E9%A1%8C&quot;&gt;福岡大学事件&lt;/a&gt;から信用はしてないのだが、スイッチングハブならマシだろうということで買ったのだが、Amazonのレビューとかを見るとやはり壊れている人が何人もいるそうなのでまぁそういう品質だろう。&lt;/p&gt;

&lt;p&gt;なお、このスイッチングハブの保証期間は5年ということなので、試しにサポートにメールで問い合わせたところ、故障機材送付することになり、結果として新しいスイッチングハブと交換になった。V1ファームがV2ファームに変更になってたけど何が変わったのかは知らない&lt;/p&gt;

</content><link rel='replies' type='application/atom+xml' href='http://wontfix.blogspot.com/feeds/9183681853866095652/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1330666698970423728/9183681853866095652' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/9183681853866095652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/9183681853866095652'/><link rel='alternate' type='text/html' href='http://wontfix.blogspot.com/2026/03/tp-link25g.html' title='TP-Linkの2.5Gスイッチングハブが壊れた'/><author><name>Makoto</name><uri>http://www.blogger.com/profile/06587987793631355128</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinXKxU0AIbGa7nKqqjz4EBjrqADjfgtUpVm269aOoVenI57awO3_TFrq2ixuoSXfIZ7IBRQs49Cauln8b20a8YOzNNHhNZ2TeXK_wOLbUR_Q-iYvPUl4G5rOZ-SoRIPA/s107/newface2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1330666698970423728.post-1497344172038497478</id><published>2026-02-28T18:23:00.000+09:00</published><updated>2026-02-28T18:23:11.946+09:00</updated><title type='text'>eero 7を手に入れた</title><content type='html'>&lt;p&gt;今や親会社がAmazonである&lt;a href=&quot;https://eero.com/&quot;&gt;eero&lt;/a&gt;だが、2024年頃から日本でもネットワークルーターを販売している。ちょっとは気になっていたのだが、セールで割引があったのと自宅で使っているASUSのルータが古い(Wi-Fi6未対応)のもあって試しに&lt;a href=&quot;https://www.amazon.co.jp/dp/B0DN36NDPN?th=1&amp;linkCode=ll1&amp;tag=goforboneyar-22&amp;linkId=23410c99350fb83ab41f35e5e00357a7&amp;language=ja_JP&amp;ref_=as_li_ss_tl&quot;&gt;eero 7&lt;/a&gt;を買ってみた&lt;/p&gt;
&lt;p&gt;UniFi (&lt;a href=&quot;https://ui.com/jp/ja/cloud-gateways/wifi-integrated&quot;&gt;Dream Router 7とかDream Express 7&lt;/a&gt;)とかでも良いのだけど、これらを買うほど機能はいらないし、そもそもルーターにVPNとかはいらないので (tailscaleで満足してる)、モノは試しということで。知人も買ってないしね&lt;/p&gt;

&lt;p&gt;使ってみたところ、今どきのルーターらしく基本が自動設定でなんでもしてくれて、例えばWAN側がIPoE対応であればそれを認識してそのプロバイダに適した設定にしてくれる。自宅はahamo光なのだが、SFPのメディアコンバーター経由で直接ルーターに差してみたところ、ちゃんと接続できた。ただ自動設定が失敗した時に手動設定で細かく設定できないので、自動設定で動くか動かないかでこのルーターの評価は分かれそうとは思う。

&lt;p&gt;はっきり言って、LAN側のDHCPの設定くらいしかできないので (ブリッジとか手動とかもできるが)、ネットワーク設定みたいなのはわかりませんというユーザー向けの商品だなと。

&lt;p&gt;なおeero Plusというサブスクもあるらしく、VPN / DDNS / wiki無線分析 / 1passwordが使えるらしいが、月1500円という値付けは強気だなと思う
</content><link rel='replies' type='application/atom+xml' href='http://wontfix.blogspot.com/feeds/1497344172038497478/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1330666698970423728/1497344172038497478' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/1497344172038497478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/1497344172038497478'/><link rel='alternate' type='text/html' href='http://wontfix.blogspot.com/2026/02/eero-7.html' title='eero 7を手に入れた'/><author><name>Makoto</name><uri>http://www.blogger.com/profile/06587987793631355128</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinXKxU0AIbGa7nKqqjz4EBjrqADjfgtUpVm269aOoVenI57awO3_TFrq2ixuoSXfIZ7IBRQs49Cauln8b20a8YOzNNHhNZ2TeXK_wOLbUR_Q-iYvPUl4G5rOZ-SoRIPA/s107/newface2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1330666698970423728.post-2353588015557781456</id><published>2026-02-14T13:34:00.002+09:00</published><updated>2026-02-14T13:38:55.067+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><title type='text'>AndroidアプリでPasskeys対応したと行ってもだいたいGoogle Passowrd Managerのみという状況は理解出来る</title><content type='html'>&lt;p&gt;巷のAndroidアプリケーションが「Passkeys対応しました」という話が出ても、実際にはAndroidデバイスでの自動入力の設定に従ってPasskeysプロバイダが選択されるのではなく、Google Password Manager(以下GPM)が使われることが多いと思う。AndroidでPasskeysプロバイダ(実際には&lt;a href=&quot;https://developer.android.com/reference/android/credentials/CredentialManager?hl=en#prepareGetCredential(androidx.credentials.GetCredentialRequest)&quot;&gt;Credential Manager&lt;/a&gt;サービス)が自動入力でサポートされたのはAndroid 14からなのだが、Android 14以降のデバイスを使っていて、かつ自動入力をGPM以外(例えば1Password)に設定していたとしても、GPMが使われている場合をよく見る。&lt;/p&gt;

&lt;p&gt;Googleは過去のAndroidバージョンでWebAuthn対応を容易にするため、&lt;a href=&quot;https://developers.google.com/identity/fido/android/native-apps&quot;&gt;FIDO2ライブラリ&lt;/a&gt;を別途提供している。このライブラリは、Passkeysの場合、Android 14以降であってもGPMを使うように設計されている。Android 14以降のみをターゲットにするアプリはほぼ存在しないため、このライブラリを使うのが最も手っ取り早いからだろう。また、WebAuthnリクエスト用のJSONデータ構造などもライブラリ側で吸収してくれるため、WebAuthnの詳細な知識なしでPasskeys対応アプリケーションの実装が可能である。&lt;/p&gt;

&lt;p&gt;Firefox for AndroidではCredential Manager対応をJetpackなしで実装しているため、FIDO2ライブラリとCredential Managerの両方を使うようにしている。これが非常に面倒で、例えばWebページがPasskeysを使ったログインをリクエストしてきたとしよう。その認証情報がどのプロバイダに入っているかという情報はWebブラウザ側にはないので、どうしようもない。仕方なく、まずGPMに認証情報が入っているかを確認し(GoogleのFIDO2ライブラリにはそのような機能が数年前に追加された)、そこになければCredential Managerに問い合わせするようにしている。これも苦肉の策なのだが、Chromeのコードを見ても同じようなことをしていて、まあ何とも言えない感じである。&lt;/p&gt;

&lt;p&gt;またCredential Manager対応したとしても、Firefoxに寄せられているバグ報告を見ると、Bitwardenにしているのだけど動かないとかの報告がたまにある。こっちでは全く再現できないのだが (自分は1passwordとBitwardenで常にテストを行っている)、まぁデバイスやGoogle Play Serviceの依存関係で動いたり動かなくなったりするっぽいので、トラブルの元でもある&lt;/p&gt;

&lt;p&gt;こんな状況なので、&lt;a href=&quot;https://developer.android.com/reference/androidx/credentials/package-summary&quot;&gt;Credential Manager用のAndroidXライブラリ&lt;/a&gt;を使うよりも、圧倒的にFIDO2ライブラリを使った方が楽である。
そもそもChrome for Androidがサードパーティ製のPasskeysプロバイダを積極的に使う仕組みになっていないので、Google側もきちんと問題をトラッキングできていないような気がしている。&lt;/p&gt;

&lt;p&gt;こういうところはWindowsやmacOSのように、WebAuthnのクライアント機能自体をAPIとして提供した方が、クライアントアプリ側で全く考える必要がないし、そもそもFIDO2ライブラリ側ですべて吸収すればよかったのにそうしないところが、Googleのセンスのなさというか、まあ言い方を変えれば、雇った人たちの仕事を作ってあげたんだろうね、としか言いようがない。&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://wontfix.blogspot.com/feeds/2353588015557781456/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1330666698970423728/2353588015557781456' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/2353588015557781456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/2353588015557781456'/><link rel='alternate' type='text/html' href='http://wontfix.blogspot.com/2026/02/androidpasskeysgoogle-passowrd-manager.html' title='AndroidアプリでPasskeys対応したと行ってもだいたいGoogle Passowrd Managerのみという状況は理解出来る'/><author><name>Makoto</name><uri>http://www.blogger.com/profile/06587987793631355128</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinXKxU0AIbGa7nKqqjz4EBjrqADjfgtUpVm269aOoVenI57awO3_TFrq2ixuoSXfIZ7IBRQs49Cauln8b20a8YOzNNHhNZ2TeXK_wOLbUR_Q-iYvPUl4G5rOZ-SoRIPA/s107/newface2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1330666698970423728.post-7981299067585890933</id><published>2025-08-20T09:32:00.000+09:00</published><updated>2025-08-20T09:32:21.702+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><title type='text'>ZwideのSA11というN150なWindows タブレットを入手した</title><content type='html'>&lt;p&gt;Surface Goがもっと安ければ検証用のPCとして買おうと思ってたのだが、&lt;a href=&quot;https://www.amazon.co.jp/dp/B0DQNY7F6C/ref=nosim?tag=goforboneyar-22&quot;&gt;Zwideという会社のSA11&lt;a/&gt;が安かったので買ってみた。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.zwide.com/&quot;&gt;Zwide&lt;/a&gt;はどうもODMをやっている深圳の会社っぽいけど、最近は自社ブランドのPCをいくつか作っている。というかどこかでみたことあるようなデザインのPCがいくつかあるので、そういう会社何でしょうってことだろう。&lt;/p&gt;
&lt;p&gt;このPC自体は、世の中で出回っているN100とかを採用したPCでなくTwin LakeなN150だが、Twin Lake自体がAlder Lake-Nの改良版でしかないので、消費電力的に優位なだけでほぼN100と変わらない (らしい)。同じIntel 7での製造ってことなので、今後はN100がN150に置き換わるのだろう。&lt;/p&gt;
&lt;p&gt;自分は試していないのだが、Linuxを使うとタッチパネルのドライバに難があって、タッチしたポイントが正しくないらしい。自分はLinuxでのテスト環境としては使わないけど、Windows以外を使うときは要注意みたい。&lt;/p&gt;
&lt;p&gt;あと、この値段でUSI 2.0のスタイラスペンが使えるというのは大きなメリット。Amazon Fire HD 10用のスタイラスペンがUSI 2.0準拠なので試しに使ってみたところ、ちゃんと使用可能でした。&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://wontfix.blogspot.com/feeds/7981299067585890933/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1330666698970423728/7981299067585890933' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/7981299067585890933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/7981299067585890933'/><link rel='alternate' type='text/html' href='http://wontfix.blogspot.com/2025/08/zwidesa11n150windows.html' title='ZwideのSA11というN150なWindows タブレットを入手した'/><author><name>Makoto</name><uri>http://www.blogger.com/profile/06587987793631355128</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinXKxU0AIbGa7nKqqjz4EBjrqADjfgtUpVm269aOoVenI57awO3_TFrq2ixuoSXfIZ7IBRQs49Cauln8b20a8YOzNNHhNZ2TeXK_wOLbUR_Q-iYvPUl4G5rOZ-SoRIPA/s107/newface2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1330666698970423728.post-3762032085029243028</id><published>2025-08-18T19:44:00.006+09:00</published><updated>2025-08-18T19:47:07.918+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="WebKit"/><title type='text'>Switch2 の Web ブラウザ</title><content type='html'>&lt;p&gt;数年前にNintendo Seattle (マイクロソフトの本社の敷地に隣接する任天堂のアメリカ拠点) のオープンポジションでChromiumがらみのものがあったので、Switch2 はもしかして、WebKitではなくて、Chromium/Blinkベースになるかと思ってたけど、結局は、&lt;/p&gt;
&lt;pre&gt;Mozilla/5.0 (Nintendo Switch; WifiWebAuthApplet)
AppleWebKit/613.0 (KHTML, like Gecko)
NF/7.0.3.8.16 NintendoBrowser/5.2.0.35533&lt;/pre&gt;
&lt;p&gt;ということで、WebKitベースのままだったのだが、Switchも含めて一番よくわからないのは、&lt;/p&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhARwhTXu3D8fGA4pBJNVTvjZptwJH8EhU_hVuywhlRZcgZDIFRg5SDZSKJb7-L3bR7RgUAh30_KJeZ3_abd3njvmkAtK5L-5U_QMrI-dQOR47jTnBHUe9pVcYNJ6n6WXUMPBRZR_61UQCbNlmR33Iqqj7XvgPibZzQNTBy8RHpYBD95Qg8prjL4gX6BuXq/s1600/s2.png&quot; style=&quot;display: block; padding: 1em 0; text-align: center; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; data-original-height=&quot;411&quot; data-original-width=&quot;500&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhARwhTXu3D8fGA4pBJNVTvjZptwJH8EhU_hVuywhlRZcgZDIFRg5SDZSKJb7-L3bR7RgUAh30_KJeZ3_abd3njvmkAtK5L-5U_QMrI-dQOR47jTnBHUe9pVcYNJ6n6WXUMPBRZR_61UQCbNlmR33Iqqj7XvgPibZzQNTBy8RHpYBD95Qg8prjL4gX6BuXq/s1600/s2.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;証明書のダイアログが実装されていること。これはたぶんNetFrontの機能なんだろうな。なおJavaScriptエンジンのJITは無効になっている模様 (ゲームとかだと有効にできるかもだがSDK次第でしょう)&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://wontfix.blogspot.com/feeds/3762032085029243028/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1330666698970423728/3762032085029243028' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/3762032085029243028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/3762032085029243028'/><link rel='alternate' type='text/html' href='http://wontfix.blogspot.com/2025/08/switch2-web.html' title='Switch2 の Web ブラウザ'/><author><name>Makoto</name><uri>http://www.blogger.com/profile/06587987793631355128</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinXKxU0AIbGa7nKqqjz4EBjrqADjfgtUpVm269aOoVenI57awO3_TFrq2ixuoSXfIZ7IBRQs49Cauln8b20a8YOzNNHhNZ2TeXK_wOLbUR_Q-iYvPUl4G5rOZ-SoRIPA/s107/newface2.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhARwhTXu3D8fGA4pBJNVTvjZptwJH8EhU_hVuywhlRZcgZDIFRg5SDZSKJb7-L3bR7RgUAh30_KJeZ3_abd3njvmkAtK5L-5U_QMrI-dQOR47jTnBHUe9pVcYNJ6n6WXUMPBRZR_61UQCbNlmR33Iqqj7XvgPibZzQNTBy8RHpYBD95Qg8prjL4gX6BuXq/s72-c/s2.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1330666698970423728.post-5227033777972089788</id><published>2025-07-22T23:11:00.004+09:00</published><updated>2025-07-22T23:15:48.807+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="rust"/><title type='text'>Iterator.size_hint</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://doc.rust-lang.org/std/iter/trait.Iterator.html#&quot;&gt;Iteratorトレイト&lt;/a&gt;に&lt;a href=&quot;https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.size_hint&quot;&gt;size_hint&lt;/a&gt;というメソッドがあるけど、&lt;a href=&quot;https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.collect&quot;&gt;Iterator.collect()&lt;/a&gt;で&lt;a href=&quot;https://doc.rust-lang.org/std/vec/struct.Vec.html&quot;&gt;Vec&lt;/a&gt;にするときは、このsize_hintを実装するかしないかでVecの初期キャパシティが決まるので、collectのパフォーマンスに影響があるということを今日初めて知った。&lt;/p&gt;
&lt;p&gt;Ref: &lt;a href=&quot;https://github.com/unicode-org/icu4x/pull/6764&quot;&gt;https://github.com/unicode-org/icu4x/pull/6764&lt;a&gt; / &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1974993&quot;&gt;https://bugzilla.mozilla.org/show_bug.cgi?id=1974993&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://wontfix.blogspot.com/feeds/5227033777972089788/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1330666698970423728/5227033777972089788' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/5227033777972089788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/5227033777972089788'/><link rel='alternate' type='text/html' href='http://wontfix.blogspot.com/2025/07/iteratorsizehint.html' title='Iterator.size_hint'/><author><name>Makoto</name><uri>http://www.blogger.com/profile/06587987793631355128</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinXKxU0AIbGa7nKqqjz4EBjrqADjfgtUpVm269aOoVenI57awO3_TFrq2ixuoSXfIZ7IBRQs49Cauln8b20a8YOzNNHhNZ2TeXK_wOLbUR_Q-iYvPUl4G5rOZ-SoRIPA/s107/newface2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1330666698970423728.post-4365406763061872295</id><published>2025-05-24T17:00:00.005+09:00</published><updated>2025-05-26T10:44:20.809+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ICU4X"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><title type='text'>TemporalのV8での実装</title><content type='html'>&lt;p&gt;GoogleのInternatiolization teamに所属するShane Carrが&lt;a href=&quot;https://rustweek.org/&quot;&gt;Rust Week&lt;/a&gt;でプレゼン (2:50:00くらいから) してるんだが、&lt;/p&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/UOP9q3BRiIA?si=cqQZpVYk3lBR_bEJ&amp;start=10200&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen&gt;&lt;/iframe&gt;

&lt;p&gt;GoogleのV8 (Chromium等で使われるJavaScript Engine) が&lt;a href=&quot;https://tc39.es/proposal-temporal/&quot;&gt;Temporal&lt;/a&gt;の実装のバックエンドにICU4Xを使うことになりそうだ。そもそもShaneはICU4XのChairだし、Temporalの仕様策定もおこなっている人なので、そういうことなんだろう。&lt;/p&gt;

&lt;p&gt;Firefoxも現在はICU4X 1.5ベースの実装が使えるようになっているが、次のサイクルで自分がICU4X 2.0ベースに変更する予定だが、SpiderMonkeyとV8の実装はそろそろ固まりそう。ただWebKitどうするんだろ。ICU4Cベースでどうにかするんですかね...&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://wontfix.blogspot.com/feeds/4365406763061872295/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1330666698970423728/4365406763061872295' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/4365406763061872295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/4365406763061872295'/><link rel='alternate' type='text/html' href='http://wontfix.blogspot.com/2025/05/temporalv8.html' title='TemporalのV8での実装'/><author><name>Makoto</name><uri>http://www.blogger.com/profile/06587987793631355128</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinXKxU0AIbGa7nKqqjz4EBjrqADjfgtUpVm269aOoVenI57awO3_TFrq2ixuoSXfIZ7IBRQs49Cauln8b20a8YOzNNHhNZ2TeXK_wOLbUR_Q-iYvPUl4G5rOZ-SoRIPA/s107/newface2.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/UOP9q3BRiIA/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1330666698970423728.post-7940618300227967727</id><published>2025-01-12T15:38:00.003+09:00</published><updated>2025-01-12T23:39:20.818+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="risc-v"/><title type='text'>HiFive Premier P550を手に入れた</title><content type='html'>&lt;p&gt;SiFive P550というコア使ったHiFive Premiver P550というボードを入手した。メモリ16GBが日本円で約60000円強。前買ったUnmatchedはドルだと$250高かったけど、円的にはそんなに変わらず。円安...&lt;/p&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizaJV9avlU39Knu3jHC2u9zYVMfRmZAZV2_LdZhOhsXT3rVJMOlGvar1YP273om1QRp3DYpkw0_zHLVq-5dO5BIosr3Gg4KzNigBiqiWsLJ9RysG6m2S9D9slxFUr_KCj0HP7jaHMEB30KsXs-kyUelfnqoOqfIjUBAWMJLpV1A0bAV0W1J8aM5ZnTsi4m/s3611/PXL_20250110_111734728~2.jpg&quot; style=&quot;display: block; padding: 1em 0; text-align: center; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;400&quot; data-original-height=&quot;3185&quot; data-original-width=&quot;3611&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizaJV9avlU39Knu3jHC2u9zYVMfRmZAZV2_LdZhOhsXT3rVJMOlGvar1YP273om1QRp3DYpkw0_zHLVq-5dO5BIosr3Gg4KzNigBiqiWsLJ9RysG6m2S9D9slxFUr_KCj0HP7jaHMEB30KsXs-kyUelfnqoOqfIjUBAWMJLpV1A0bAV0W1J8aM5ZnTsi4m/s400/PXL_20250110_111734728~2.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;

&lt;h2&gt;Install Ubuntu to SSD&lt;/h2&gt;

&lt;p&gt;確かまだPremier P550対応のDTSなどLinuxのコードはメインラインには入ってないけど、eMMCにはUbuntu 24.04 TLSがプレインストールされていてシリアルコンソール経由でログインすることが出来るが、SATAポートがこのボードに存在しているので、SSDにインストールすることにする&lt;/p&gt;

&lt;h3&gt;イメージを取得&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/sifive/hifive-premier-p550-ubuntu/releases/tag/2024.11.00&quot;&gt;https://github.com/sifive/hifive-premier-p550-ubuntu/releases/tag/2024.11.00&lt;/a&gt;にUbuntuのイメージが置かれているので、これを入手する&lt;/p&gt;

&lt;h3&gt;ディスクに書き込む&lt;/h3&gt;
&lt;p&gt;まずxzで圧縮されているので、展開&lt;/p&gt;
&lt;pre&gt;xz -d ubuntu-24.04-preinstalled-server-riscv64.img.xz&lt;/pre&gt;
&lt;p&gt;SSDが/dev/sdaだとして、ddコマンドでディスクに書き込む&lt;/p&gt;
&lt;pre&gt;dd if=ubuntu-24.04-preinstalled-server-riscv64.img of=/dev/sda bs=1M&lt;/pre&gt;
&lt;p&gt;この状態でリブートするとSSDが(hd0)になるので、SSD経由でブートする。ただし、eMMCはこのイメージを書き込んであるっぽいので、GPTのUUIDが全部一緒になるので、好みにおおじてGPTを変えてupdate-grubかけたほうがよい&lt;/p&gt;

&lt;h2&gt;Unix Bench&lt;/h2&gt;
&lt;pre&gt;
------------------------------------------------------------------------
Benchmark Run: Sun Jan 12 2025 06:34:27 - 07:02:47
4 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables       12927124.9 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     2641.1 MWIPS (9.9 s, 7 samples)
Execl Throughput                               1176.6 lps   (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        229490.7 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           72809.9 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        374429.0 KBps  (30.0 s, 2 samples)
Pipe Throughput                              475331.9 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  31965.9 lps   (10.0 s, 7 samples)
Process Creation                               2703.0 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   3510.5 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                   1154.5 lpm   (60.0 s, 2 samples)
System Call Overhead                         590916.1 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   12927124.9   1107.7
Double-Precision Whetstone                       55.0       2641.1    480.2
Execl Throughput                                 43.0       1176.6    273.6
File Copy 1024 bufsize 2000 maxblocks          3960.0     229490.7    579.5
File Copy 256 bufsize 500 maxblocks            1655.0      72809.9    439.9
File Copy 4096 bufsize 8000 maxblocks          5800.0     374429.0    645.6
Pipe Throughput                               12440.0     475331.9    382.1
Pipe-based Context Switching                   4000.0      31965.9     79.9
Process Creation                                126.0       2703.0    214.5
Shell Scripts (1 concurrent)                     42.4       3510.5    828.0
Shell Scripts (8 concurrent)                      6.0       1154.5   1924.2
System Call Overhead                          15000.0     590916.1    393.9
                                                                   ========
System Benchmarks Index Score                                         463.6

------------------------------------------------------------------------
Benchmark Run: Sun Jan 12 2025 07:02:47 - 07:31:09
4 CPUs in system; running 4 parallel copies of tests

Dhrystone 2 using register variables       51689178.8 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                    10560.7 MWIPS (9.9 s, 7 samples)
Execl Throughput                               4324.4 lps   (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        758792.3 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks          282576.0 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks       1383510.8 KBps  (30.0 s, 2 samples)
Pipe Throughput                             1893625.3 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                 218013.6 lps   (10.0 s, 7 samples)
Process Creation                               9020.4 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   9097.3 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                   1184.8 lpm   (60.1 s, 2 samples)
System Call Overhead                        2362850.1 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   51689178.8   4429.2
Double-Precision Whetstone                       55.0      10560.7   1920.1
Execl Throughput                                 43.0       4324.4   1005.7
File Copy 1024 bufsize 2000 maxblocks          3960.0     758792.3   1916.1
File Copy 256 bufsize 500 maxblocks            1655.0     282576.0   1707.4
File Copy 4096 bufsize 8000 maxblocks          5800.0    1383510.8   2385.4
Pipe Throughput                               12440.0    1893625.3   1522.2
Pipe-based Context Switching                   4000.0     218013.6    545.0
Process Creation                                126.0       9020.4    715.9
Shell Scripts (1 concurrent)                     42.4       9097.3   2145.6
Shell Scripts (8 concurrent)                      6.0       1184.8   1974.6
System Call Overhead                          15000.0    2362850.1   1575.2
                                                                   ========
System Benchmarks Index Score                                        1591.8
&lt;/pre&gt;
&lt;p&gt;大体Unmatchedの2倍くらいの速度&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://wontfix.blogspot.com/feeds/7940618300227967727/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1330666698970423728/7940618300227967727' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/7940618300227967727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/7940618300227967727'/><link rel='alternate' type='text/html' href='http://wontfix.blogspot.com/2025/01/hifive-premier-p550.html' title='HiFive Premier P550を手に入れた'/><author><name>Makoto</name><uri>http://www.blogger.com/profile/06587987793631355128</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinXKxU0AIbGa7nKqqjz4EBjrqADjfgtUpVm269aOoVenI57awO3_TFrq2ixuoSXfIZ7IBRQs49Cauln8b20a8YOzNNHhNZ2TeXK_wOLbUR_Q-iYvPUl4G5rOZ-SoRIPA/s107/newface2.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizaJV9avlU39Knu3jHC2u9zYVMfRmZAZV2_LdZhOhsXT3rVJMOlGvar1YP273om1QRp3DYpkw0_zHLVq-5dO5BIosr3Gg4KzNigBiqiWsLJ9RysG6m2S9D9slxFUr_KCj0HP7jaHMEB30KsXs-kyUelfnqoOqfIjUBAWMJLpV1A0bAV0W1J8aM5ZnTsi4m/s72-c/PXL_20250110_111734728~2.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1330666698970423728.post-4228816267552608298</id><published>2025-01-10T16:37:00.004+09:00</published><updated>2025-01-10T16:39:13.175+09:00</updated><title type='text'>2024年に買ったもの</title><content type='html'>&lt;p&gt;買ったものを書いているけど、これ以外には、家 (賃貸) のトレイが壊れたため、結果として新しいトイレのユニットに入れ替わった (元のトイレは25年前のもの)。今どきトイレは水の使用量が少なくなっていたりするけど、そもそもシャワートイレにしないところが、大家...とは思ったが&lt;/p&gt;

&lt;h3&gt;&lt;a href=&quot;https://store.google.com/jp/product/pixel_8a&quot;&gt;Google Pixel 8a&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;これをメイン機にして、いままで使っていたPixel 6aをテスト機に格下げしました。前までの手頃値段感はなくなったけど継続して買っている。個人的にPixel買っている理由は、Androidのアップデートが長期的に行われそうなところ、aシリーズであれば手頃な値段に落ち着いていることと、万一画面が割れたとしても、&lt;a href=&quot;https://www.icracked.jp/service/pixel/&quot;&gt;iCracked&lt;/a&gt;で当日持ち帰りの修理が可能なところ (Googleでの修理扱いになる) なだけで、これを満たしているのであればどれでもいいんだが&lt;/p&gt;

&lt;h3&gt;&lt;a href=&quot;https://panasonic.jp/dish/products/NP-TML1.html&quot;&gt;Panasonic 食器洗い乾燥機 SOLOTA NP-TML1&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;5月に購入。食洗機があると生活が変わるという記事を見たりするのだけど、ふと買ってしまった。確かに便利だし、寝る前に洗い忘れて、朝マグカップを洗うなんてことは日常だったので、生活はより楽にはなった。ただこの食洗機のレビューにいつも書いてあることだけど、これが受け入れられるかどうかで評価が変わる&lt;/p&gt;
  &lt;ul&gt;
  &lt;li&gt;洗浄、乾燥で合計2時間かかる&lt;/li&gt;
  &lt;li&gt;大きさが用途に合わないと、使い物にならない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ただ台数は売れないだろうから、ずっと同じものを5年以上売るんだろうね (Panasonicのロボット掃除機みたく)&lt;/p&gt;

&lt;h3&gt;&lt;a href=&quot;https://www.zojirushi.co.jp/syohin/kitchen/oven_range/es-gw/&quot;&gt;象印 オーブンレンジ EVERINO ES-GW26&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;10月に購入。元々持っていたオーブンレンジ (三菱電機製) は20年以上使っていたしまったく壊れる気配がなかったのだが、新しいものが欲しくなって購入。今どきの電子レンジってこんなに機能豊富なんだなと改めて感動。スチームオーブンと迷ったけど、十分満足&lt;/p&gt;

&lt;h3&gt;&lt;a href=&quot;www.delonghi.com/ja-jp/p/KG79J&quot;&gt;デロンギ コーヒーグラインダー KG79J&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;12月に購入。コーヒー自体はドルチェグストを使っているのだけど、種類に飽きてきてコーヒー豆を買ってきたくなったのでミルを購入。価格も手頃だし、機能自体は挽く粗さを選べたり満足なのだが掃除が超面倒。メンテンス性が悪いという評判は見てたのだけど、これがね...&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://wontfix.blogspot.com/feeds/4228816267552608298/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1330666698970423728/4228816267552608298' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/4228816267552608298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/4228816267552608298'/><link rel='alternate' type='text/html' href='http://wontfix.blogspot.com/2025/01/2024.html' title='2024年に買ったもの'/><author><name>Makoto</name><uri>http://www.blogger.com/profile/06587987793631355128</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinXKxU0AIbGa7nKqqjz4EBjrqADjfgtUpVm269aOoVenI57awO3_TFrq2ixuoSXfIZ7IBRQs49Cauln8b20a8YOzNNHhNZ2TeXK_wOLbUR_Q-iYvPUl4G5rOZ-SoRIPA/s107/newface2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1330666698970423728.post-7378552822844149954</id><published>2025-01-07T02:00:00.028+09:00</published><updated>2025-01-07T02:00:00.120+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="risc-v"/><title type='text'>RISC-VにおけるCrypto命令 (Crypto Extension)</title><content type='html'>&lt;p&gt;やっとこさVector Extensionも1.0になり、そろそろいろんなExtensionを実装したSoCも出てくるとは思うけど、年末の移動時間のなかでいろいろ現在のCrypto Extensionを勉強してた&lt;/p&gt;
&lt;p&gt;Crypto ExtensioもScalar命令版とVector命令版の２つがあって、Scalar版は組み込みとか用途向けの、レジスタとかを増やしたくない実装用で、Vectorはその名の通りVectorレジスタを使ったもの。試しにAESのEncryptionを実装してみる&lt;/p&gt;

&lt;h3&gt;Scalar版&lt;/h3&gt;
&lt;p&gt;Scalar版は以下のようになる。&lt;/p&gt;
&lt;pre style=&quot;background: #f0f0f0;&quot;&gt;
void
riscv64zkn_aes_encrypt_block_128(uint64_t* expandedKey,
                                 uint8_t *output,
                                 const uint8_t *input)
{
  uint64_t state0 = *((uint64_t *)input);
  uint64_t state1 = *((uint64_t *)(input + 8));

  // Add round key 0 to initial state
  state0 = state0 ^ *expandedKey++;
  state1 = state1 ^ *expandedKey++;

  for (int i = 1; i &lt; 10; r++) {
    uint64_t c0 = __riscv_aes64esm(state0, state1);
    uint64_t c1 = __riscv_aes64esm(state1, state0);
    state0 = c0 ^ *expandedKey++;
    state1 = c1 ^ *expandedKey++;
  }

  // Final round
  uint64_t c0 = __riscv_aes64es(state0, state1);
  uint64_t c1 = __riscv_aes64es(state1, state0);
  state0 = c0 ^ *expandedKey++;
  state1 = c1 ^ *expandedKey;

  *((uint64_t *)output) = state0;
  *((uint64_t *)(output + 8)) = state1;
}
&lt;/pre&gt;
&lt;h3&gt;Vector版&lt;/h3&gt;
&lt;p&gt;Vector版。まだVector Crypto ExtensionのIntrinics命令はStableじゃないので、インラインアセンブラ使ってる。&lt;/p&gt;
&lt;pre style=&quot;background: #f0f0f0;&quot;&gt;
static vuint32m4_t
vaesz_vs(vuint32m4_t rd, vuint32m4_t vs2)
{
  __asm__(&quot;vaesz.vs %0, %1&quot; : &quot;+vr&quot;(rd) : &quot;vr&quot;(vs2));
  return rd;
}

static vuint32m4_t
vaesem_vs(vuint32m4_t rd, vuint32m4_t vs2)
{
  __asm__(&quot;vaesem.vs %0, %1&quot; : &quot;+vr&quot;(rd) : &quot;vr&quot;(vs2));
  return rd;
}

static vuint32m4_t
vaesef_vs(vuint32m4_t rd, vuint32m4_t vs2)
{
  __asm__(&quot;vaesef.vs %0, %1&quot; : &quot;+vr&quot;(rd) : &quot;vr&quot;(vs2));
  return rd;
}

SECStatus
riscv64zvkn_aes_encrypt_block_128(uint32_t* expandedKey,
                                  uint8_t *output,
                                  const uint8_t *input)
{
  size_t vl = __riscv_vsetvl_e32m4(4);
  vuint32m4_t state = __riscv_vle32_v_u32m4((const uint32_t *)input, vl);

  // Add round key 0 to initial state
  vuint32m4_t K = __riscv_vle32_v_u32m4(expandedKey, vl);
  expandedKey += 4;
  state = vaesz_vs(state, K);

  for (int i = 1; i &lt; 10; r++) {
    K = __riscv_vle32_v_u32m4(expandedKey, vl);
    expandedKey += 4;
    state = vaesem_vs(state, K);
  }

  // Final round
  K = __riscv_vle32_v_u32m4(expandedKey, vl);
  state = vaesef_vs(state, K);
  __riscv_vse32_v_u32m4((uint32_t *)output, state, vl);
}
&lt;/pre&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;RISC-Vの場合Load/Restoreをまとめないとvlenの長さを指定するvsetvliが大量に利用することになるので、速さに直結するかもということと、コンパイラ (gcc、LLVM) の最適化もまだまだっぽい&lt;/li&gt;
&lt;li&gt;両方ともx86のAES-NIに似た感じなので、AES-NIの経験値があれば、難しくないかも&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://wontfix.blogspot.com/feeds/7378552822844149954/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1330666698970423728/7378552822844149954' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/7378552822844149954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/7378552822844149954'/><link rel='alternate' type='text/html' href='http://wontfix.blogspot.com/2025/01/risc-vcrypto-crypto-extension.html' title='RISC-VにおけるCrypto命令 (Crypto Extension)'/><author><name>Makoto</name><uri>http://www.blogger.com/profile/06587987793631355128</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinXKxU0AIbGa7nKqqjz4EBjrqADjfgtUpVm269aOoVenI57awO3_TFrq2ixuoSXfIZ7IBRQs49Cauln8b20a8YOzNNHhNZ2TeXK_wOLbUR_Q-iYvPUl4G5rOZ-SoRIPA/s107/newface2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1330666698970423728.post-8259990980544218405</id><published>2024-09-27T16:02:00.008+09:00</published><updated>2024-09-28T20:37:32.203+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="isp"/><title type='text'>So-net 光 with フレッツS から別会社の光コラボ回線への転用が地雷すぎる</title><content type='html'>&lt;p&gt;自分のオープンソースへのコントリビューションする際のメアドのドメインはずっとso-net.ne.jpなのだが (もちろん別にドメイン持ってるし、それを使ったメアドもある) 、いろいろ思うこともあり、自宅の回線をSo-netではない回線に変えることにした
&lt;p&gt;そもそもフレッツ使っているのは2020年ころまでADSL使ってのもあって、NTTから工事手数料無料でフレッツ光に切り替えるキャンペーンを使ったからってのが一番の理由なのだが&lt;/p&gt;
&lt;p&gt;当然のことながらPPoEだと遅いときがたまにあるので、IPoEオプションを使っているのだが、別の光コラボ回線に切り替えるにあたって、解約する必要があるようなので、先にSo-net側のIPv6オプションをWeb上で解約した (はずだった) &lt;/p&gt;
&lt;p&gt;解約したのに関わらず、解約申込み中のままになっており、数日待てど一切ステータスが変化しない&lt;p&gt;
  &lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;420&quot; data-original-height=&quot;290&quot; data-original-width=&quot;898&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhuAHSFRVxHFPSJeyRi-ZcxnUF6-XDhggvuMYoY0R-reIusxXeRrYu06NOqUpmp6cEG1RjK0dXqNATgBnsXS3sxUqKe0VsVsQZK3Hpe2i21TreN_1V5Pwkte64w-QK6l5aH02S5fuqdkoVjIfn1erEYMvf4sYyaKIulYXslDVeVZttTYueHSv4_5UQxpQT/s320/Screenshot%202024-09-27%20at%2015-34-21%20%E5%88%A9%E7%94%A8%E7%8A%B6%E6%B3%81%E7%85%A7%E4%BC%9A%20v6%E3%83%97%E3%83%A9%E3%82%B9%20%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%20So-net%20%28%E3%82%BD%E3%83%8D%E3%83%83%E3%83%88%29.png&quot;/&gt;&lt;/div&gt;
&lt;p&gt;おそらく月末処理にしているか、間違えて解約する人向けに数日待つ仕様にしているのだろうが、こっちとしては、光コラボ回線への切り替えの日付が決まっているので、即時解約されないと困る&lt;/p&gt;
&lt;p&gt;そのため、サポートに問い合わせると、初めの担当者は「転用の日にコース変更とIPv6オプションの解約をWebからすれば問題ない」と回答してきたのだが、どうも転用という作業がどういうことがたぶんわかってないようだ&lt;/p&gt;
&lt;p&gt;いろんな情報を集めると、転用元のIPoEが解約されていないと転用先でIPoEが使えないため、下手すると転用の契約自体がキャンセルされるなりして、両方つかえなくなることも起きるらしい&lt;/p&gt;
&lt;p&gt;安全に行くなら切り替えの前の日にはIPoEが解約されていたほうがいい感じなので、もう一度サポートに問い合わせた&lt;/p&gt;
&lt;p&gt;サポートに「いつ解約になるのかを教えて欲しい。転用が控えているのですぐ解約できないと困る」と伝えたところ、サポート経由だと即時解約が可能らしく、その担当者経由で即時解約してもらった&lt;p&gt;
&lt;p&gt;Webページでのオプション変更では解決できず、サポートにチャットをしないと (So-netは電話サポートは別契約が必要)、解決しないだなんて、地雷だよな&lt;/p&gt;
 &lt;p&gt;なお、Googleで検索した際に表示されるこれもウソ。こっちは1週間待ったけど、解約申込み中にままだった&lt;/p&gt;
  &lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;420&quot; data-original-height=&quot;612&quot; data-original-width=&quot;1376&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4a8RHeJzt4baXUwvOB0Uj2bJd794sLWpewD5zXqJY_EFIO9Rrj9RK1p-FnyFDgFupdfzDnEdahgiRjA9pi-JvM9SFjzOMJuQYe5Fzb22mSvG8dPF9SRoxnDk6YxKfN5w8SHJIy5cFRm4VdepxOQN_rBNGfoFx7Bi4db1mT9j_P91uQ-m7b7DugANxVkvK/s320/Screenshot%202024-09-27%20at%2015-58-32%20so-net%20ipv6%20%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%20%E8%A7%A3%E7%B4%84%20%E6%97%A5%E6%95%B0%20-%20Google%20%E6%A4%9C%E7%B4%A2.png&quot;/&gt;&lt;/div&gt;

&lt;h3&gt;2024/9/28追記&lt;/h3&gt;
&lt;p&gt;1日経って、転用当日 (というよりも転用先の工事予定時間すぎ) に接続を見てみたところ、転用先のIPoEでつながっておらず、従来のフレッツのままということが判明&lt;/p&gt;
&lt;p&gt;以前説明してもらったようにIPoEが未だに使えているという状態 = 転用に失敗しているということで、しょうがなくSo-netにまたチャットサポートを投げてみたところ、「エラーが発生してて、解約処理ができてない」ということがやっとわかった&lt;/p&gt;
&lt;p&gt;サポートの人に苦言するのは申し訳ないけれど、ちゃんとした社内の技術担当がフレッツ側にチケット投げて作業すればいいはずの話のようにしか聞こえないのに、サポートの人はうちではいつできるのかわからないの一点張りでこの問題の解決する道筋がでないので、積んだ状態。ホント困った。このせいで来月も料金発生するのかと思うと、So-netはISPとしてひどい有様になったんんだなぁと残念な気持ちになった。はぁ&lt;/p&gt;
&lt;p&gt;あと別会社の光コラボ回線への転用は、その転用元にとってはユーザーが逃げるということでもあり、そういうところのサポートを対応したくないという気持ちはわかるのだが、出てくるサポートの人が不正確な情報をユーザーに説明するのはどうかと思う&lt;/p&gt;
&lt;p&gt;最初の人は切り替わってからコース変更で問題ない (v6オプションのことは触れない) と言っていたり、切り替えにあたってFAQなりWebのセルフサポートで済むようにすれば、ユーザー側は無駄なコストをかけなくてすむし、サポートへの問い合わせというコストを払う必要もないわけだ&lt;/p&gt;
&lt;p&gt;So-netはNuro光で良い話を聞かないけど、なるほどなーと思える対応でした。まだ終わってないけどな&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://wontfix.blogspot.com/feeds/8259990980544218405/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1330666698970423728/8259990980544218405' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/8259990980544218405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/8259990980544218405'/><link rel='alternate' type='text/html' href='http://wontfix.blogspot.com/2024/09/so-net-with-s.html' title='So-net 光 with フレッツS から別会社の光コラボ回線への転用が地雷すぎる'/><author><name>Makoto</name><uri>http://www.blogger.com/profile/06587987793631355128</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinXKxU0AIbGa7nKqqjz4EBjrqADjfgtUpVm269aOoVenI57awO3_TFrq2ixuoSXfIZ7IBRQs49Cauln8b20a8YOzNNHhNZ2TeXK_wOLbUR_Q-iYvPUl4G5rOZ-SoRIPA/s107/newface2.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhuAHSFRVxHFPSJeyRi-ZcxnUF6-XDhggvuMYoY0R-reIusxXeRrYu06NOqUpmp6cEG1RjK0dXqNATgBnsXS3sxUqKe0VsVsQZK3Hpe2i21TreN_1V5Pwkte64w-QK6l5aH02S5fuqdkoVjIfn1erEYMvf4sYyaKIulYXslDVeVZttTYueHSv4_5UQxpQT/s72-c/Screenshot%202024-09-27%20at%2015-34-21%20%E5%88%A9%E7%94%A8%E7%8A%B6%E6%B3%81%E7%85%A7%E4%BC%9A%20v6%E3%83%97%E3%83%A9%E3%82%B9%20%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%20So-net%20%28%E3%82%BD%E3%83%8D%E3%83%83%E3%83%88%29.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1330666698970423728.post-4469052259605276941</id><published>2024-08-01T16:20:00.004+09:00</published><updated>2024-08-01T16:27:32.957+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Chrome"/><category scheme="http://www.blogger.com/atom/ns#" term="Firefox"/><category scheme="http://www.blogger.com/atom/ns#" term="Mozilla"/><title type='text'>Android 14 (Credential Manager) におけるパスキー対応が面倒すぎる</title><content type='html'>&lt;p&gt;DroidKaigiにココらへんの話をしようと思って、CfP書いたけど落ちたので、自分用の覚書。&lt;/p&gt;

  

&lt;p&gt;Firefox (GeckoView) AndroidでCredentail Managerの対応を入れたのが、GeckoViewとしてはバイナリサイズを大きくしたくないため、JetPackを一切使わずにCredential Manager経由で&lt;a href=&quot;https://www.w3.org/TR/webauthn-2/&quot;&gt;WebAuthn&lt;/a&gt;対応を行うコードをJavaでスクラッチで書いた。おそらくJavaでスクラッチで書いたのはChromeとGeckoViewだけだし、おそらくこの2つの製品以外でスクラッチ実装がされることは今後もないと思う。 &lt;/p&gt;

&lt;p&gt;しかもGeckoViewはWebブラウザエンジンなわけだから、いろんなWebサイトで実行可能な必要がある (= オリジンを正確に設定する必要がある)。この値を設定するのもおそらくBlinkとGeckoの2つの製品以外でほぼ存在しないであろう。なので、実装にあたって、実装者、すなわち自分しか被害者がいない事例がいろいろあることになるわけだ。自分はGoogleの人じゃないので、社内情報アクセスできないからね。 &lt;/p&gt;

&lt;h3&gt;従来の実装方法 &lt;/h3&gt;

&lt;p&gt;Google Mobile Service (GMS) にFIDO API (&lt;a href=&quot;https://developers.google.com/android/reference/com/google/android/gms/fido/fido2/package-summary&quot;&gt;https://developers.google.com/android/reference/com/google/android/gms/fido/fido2/package-summary&lt;/a&gt;)が提供されていた。これを使うことでWebAuthnの実装が簡単にできるようになっている。またとあるバージョン以降であればパスキーをGoogle Password Managerに登録することが可能。これは古いAndroidでも動作する。 &lt;/p&gt;

&lt;h3&gt;Credential Managerとは &lt;/h3&gt;

&lt;p&gt;Andorid 14から Credential Managerという仕組みが追加された。このCredential Managerはサービスとして実装されるもので、サードパーティに対して認証要求を移譲できる。ただこのサービスには3つのメソッドしか存在しなくて、登録・認証・削除があるだけだ。幅広い認証情報を扱えるようにAndroidチームの人は考えためであろうけど、この3つのメソッドには引数がBundleしか実質存在しない。すなわちアプリケーションはBundleに各々好き勝手に情報を入れると、OSにインストールされたCredential Managerサービスたちが、登録成功とか返すようになっている。なおBundleに何入れるべきか？なんてものも存在しない &lt;/p&gt;

&lt;h3&gt;Credential Managerを使ったパスキー実装 &lt;/h3&gt;

 &lt;p&gt;パスキーを実装するには、このBundleになにかを入れる必要があるのだが、そんな情報はdeveloper.android.comには一切存在しない。GeckoViewでは&lt;a href=&quot;https://searchfox.org/mozilla-central/rev/e637cd67f98ed4272d13a96db9a7674689122dcb/mobile/android/geckoview/src/main/java/org/mozilla/gecko/WebAuthnCredentialManager.java#40-62&quot;&gt;一通りのBundle定義&lt;/a&gt;をしているが、これらはJetPackのコードとChromeのコードから持ってきている。オープンソースだったからいいようなものだが、これらの謎定義はGoogle社内でしか共有されていないような感じなので、まぁなんというかEU頑張れって感じ。ここには入れていないが、Google Password Managerだけ無視するっぽく見える定義もあったりする&lt;/p&gt;

&lt;p&gt;実際問題、JetPackを使った場合はここらのBundle問題はJetPack側で吸収されるので、そこらは問題になりえないのだが、問題はリクエスト用のJSONは自分たちで組み立てないといけないってことだ。 なので、WebAuthnの仕様をちゃんと理解しないといけない。それをアプリケーション開発者に求めるのはどうかと思う。なおレスポンスもJSONむき出しで渡される。検証とかしたい場合は、むき出しで渡されたJSONデータを展開して検証しないといけない。 &lt;/p&gt;

&lt;p&gt;以前のGMSのFIDO APIではJSONむき出しな仕組みにはなっていない。引数はBuilderが用意されているので、必要なパラメータを設定するだけで行える。ちなみにGeckoViewでいうと、&lt;a href=&quot;https://searchfox.org/mozilla-central/rev/e637cd67f98ed4272d13a96db9a7674689122dcb/mobile/android/geckoview/src/main/java/org/mozilla/gecko/WebAuthnCredentialManager.java#72-79&quot;&gt;これがCredential Manager版&lt;/a&gt;で&lt;a href=&quot;https://searchfox.org/mozilla-central/rev/e637cd67f98ed4272d13a96db9a7674689122dcb/mobile/android/geckoview/src/main/java/org/mozilla/geckoview/WebAuthnTokenManager.java#68-74&quot;&gt;ここがFIDO API版&lt;/a&gt;なのだが、Credential Manager版は自分でJSONを組み立てるのに対して、FIDO API版はBuilderで引数を組み立てる。 &lt;/p&gt;

&lt;p&gt;あと、検証時 (Assertion) には落とし穴が実は存在してて、クライアントサイドで検証する際には、レスポンスのJSONの ClientDataJsonハッシュを使って検証を行うわけだけど、レスポンス内のこの値は正しくない可能性があって、リクエスト時にBundleに入れたClientDataJsonのハッシュが正しい値だったりする (これは2日悩んだ)&lt;/p&gt; 

 
&lt;h3&gt;現在のCredential Managerがどの認証方法を対応しているか? &lt;/h3&gt;

&lt;p&gt;そんな方法はない。 &lt;/p&gt;

&lt;p&gt;とりあえず試してみて、サービスがTYPE_NO_CREATE_OPTIONSを返してくれれば、たぶん対応していないということがわかる。なお、1Passwordは最初のリクエストでサービス自体がクラッシュしたりするので正しく動かなかったりする。GeckoViewだと登録時はResident KeyがRequiredのときだけCrednetial Managerを使うようにしているが、Preferredの場合にどうするかは決めかねている。 &lt;/p&gt;

&lt;p&gt;また、認証を行おうとしてるクレデンシャルがGoogle Password Managerで認証可能かどうか？みたいなのはFIDO API経由で確認は可能なので、認証可能であればGMSのFIDO2 APIを使って、認証できない場合は Credential Managerを使ういうこともできる。GeckoViewもChromeもそのようなコードを入れている。&lt;/p&gt; 

&lt;h3&gt;結論 &lt;/h3&gt;

&lt;p&gt;GMSのFIDO APIがCredential Manager対応すれば、みんなハッピーだったのでは?やっとサードパーティ製品で対応が増えてきたところだしさ&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://wontfix.blogspot.com/feeds/4469052259605276941/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1330666698970423728/4469052259605276941' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/4469052259605276941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/4469052259605276941'/><link rel='alternate' type='text/html' href='http://wontfix.blogspot.com/2024/08/android-14-credential-manager.html' title='Android 14 (Credential Manager) におけるパスキー対応が面倒すぎる'/><author><name>Makoto</name><uri>http://www.blogger.com/profile/06587987793631355128</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinXKxU0AIbGa7nKqqjz4EBjrqADjfgtUpVm269aOoVenI57awO3_TFrq2ixuoSXfIZ7IBRQs49Cauln8b20a8YOzNNHhNZ2TeXK_wOLbUR_Q-iYvPUl4G5rOZ-SoRIPA/s107/newface2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1330666698970423728.post-2949512522115860185</id><published>2023-05-11T17:41:00.004+09:00</published><updated>2023-05-11T17:45:14.203+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Firefox"/><category scheme="http://www.blogger.com/atom/ns#" term="Web Standard"/><title type='text'>Firefox Androidにおけるresident key (Discoverable Credentials) 対応</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://wontfix.blogspot.com/2023/03/google-mobile-servicefidopasskey.html&quot;&gt;これ&lt;a/&gt;の続き&lt;/p&gt;

&lt;p&gt;Firefox AndroidにおいてはWebAuthnの実装をGoogleの&lt;a href=&quot;https://developers.google.com/identity/fido/android/native-apps&quot;&gt;FIDO2ライブラリ&lt;/a&gt;を使っている。このライブラリはWebAuthn APIをそのままJavaのインターフェイスにしたようなものなので、Firefox AndroidにおけるWebAuthnの対応はこのライブラリの実装内容に依存している。&lt;/p&gt;

&lt;p&gt;今年になってこのライブラリがアップデートされ、resident key (Discoverable Credentials) 対応が含まれた。ただ残念?なことにそのAPIを使うと、CredentialsがGoogle Password Managerで他のデバイスとGoogleアカウントを通じて同期するようになる。要は勝手にPasskey対応になってしまう。もちろん同期しないオプションなんてアプリケーション側が使えるAPIには存在しない。なお、デバイスがGoogleアカウントにサインインしてない場合、Passkeyが作成できないというエラーでWebAuthn APIは失敗する。&lt;/p&gt;

&lt;p&gt;このような状況なので、いくつか懸念点はあるんだが、Firefox AndroidのStable版はabout:configを使えるわけではないので、デフォルトオフで実装は入れておいた。Firefox 114のBetaおよびNightlyでabout:configで該当設定を変更すれば使えるようになる。&lt;/p&gt;

&lt;p&gt;PasskeysがGoogleアカウント経由で同期されるということは、例えば、ChromeでPasskeyを使ってサインインした場合、そこで利用されたCredentialがFirefoxでも使えてしまう (もちろん逆も同じ)。そのような感じでいろいろどうかと思う動作がいろいろあるので、&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1831137&quot;&gt;Bug 1831137&lt;/a&gt;に解決しないといけない問題は書いてある。個人的にはAndroid 14以上の場合だけ使えるようにしてもいいかもだけど、まだ最終的な結論は決めてない。なぜAndroid 14以降なのかというと、このバージョンではCredential Provier Serviceというものが導入される予定で、Autofill Serviceのようにシステム側で使うように設定しておけば、Google Passowrd Managerではなく、設定したサードパーティのサービスが使える予定らしい。Android 14が出てから考えよう&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://wontfix.blogspot.com/feeds/2949512522115860185/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1330666698970423728/2949512522115860185' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/2949512522115860185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/2949512522115860185'/><link rel='alternate' type='text/html' href='http://wontfix.blogspot.com/2023/05/firefox-androidresident-key.html' title='Firefox Androidにおけるresident key (Discoverable Credentials) 対応'/><author><name>Makoto</name><uri>http://www.blogger.com/profile/06587987793631355128</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinXKxU0AIbGa7nKqqjz4EBjrqADjfgtUpVm269aOoVenI57awO3_TFrq2ixuoSXfIZ7IBRQs49Cauln8b20a8YOzNNHhNZ2TeXK_wOLbUR_Q-iYvPUl4G5rOZ-SoRIPA/s107/newface2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1330666698970423728.post-942893229379296305</id><published>2023-04-22T08:24:00.003+09:00</published><updated>2023-04-22T08:24:50.917+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="apple"/><title type='text'>MacBook Air (2020) M1のUSB-Cポートが壊れたのでApple Storeで交換 (修理) した</title><content type='html'>&lt;p&gt;最近、ビデオ会議のときはMacBook Airを使っている。理由は自宅で使っているDebian/sidな環境でスピーカーフォンが使えたり使えなかったりと不安定だからなのだが (これはpipewireに変わってから頻発してるので、どうにか原因は突き止めたいと思っている)、ミーティングの時間にMacBook Airを使おうとしたら、電源が入らなくなっている。USB-Cポートが一つ壊れていたのだが、こっちのポートも壊れたか、マザーボード自体壊れたっぽい。新しいものを買うという選択肢もあるのだけど、すぐ直ったらラッキーなので、Apple Storeに修理の予約を入れた。&lt;/p&gt;

&lt;p&gt;Apple Storeで現象の説明 (電源が入らない) を説明した後、USB-Cポートも一つ壊れているので、両方壊れているのかもしれないという話をしたところ、一回中身見ますね、ってことで自分のMacBook Airをバックヤードに持っていって、分解して調査をしてもらった。&lt;/p&gt;
  
&lt;p&gt;その後、すぐ戻ってきて、&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;壊れたUSB-Cポートは、どうもゴムらしきものが挟まっていて、それが原因っぽい&lt;/li&gt;
  &lt;li&gt;今まで使えてたUSB-Cポートは洗浄してみてどうなるかを調べる&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;という話になり、作業した後にチェックすると、今まで使えてたUSB-Cポートはちゃんと動作する (= 充電が開始され、電源が入る) ようになり、もう一つの前から壊れてたポートは、動かなかったり動いたりと不安定な状態だった。「このままでもいいですけど、ボード交換という修理も可能です。交換の場合は15000円強になります」という説明を受けて、それだったら修理にするということで修理に出した。値段の大部分は作業料で、実際のボード部分は2000円らしい&lt;/p&gt;

&lt;p&gt;修理に出したのが夕方で翌日の夕方には修理完了ということで、Apple Storeでピックアップ可能になってた。一日でピックアップできるのは非常に満足だった。昔東芝が秋葉原のサービスセンター持ってた時に、運が良くてすぐピックアップ可能だったのだけど、販売元が修理の際にちゃんと説明してくれるのは非常に満足度高いよねと&lt;/p&gt;



</content><link rel='replies' type='application/atom+xml' href='http://wontfix.blogspot.com/feeds/942893229379296305/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1330666698970423728/942893229379296305' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/942893229379296305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/942893229379296305'/><link rel='alternate' type='text/html' href='http://wontfix.blogspot.com/2023/04/macbook-air-2020-m1usb-capple-store.html' title='MacBook Air (2020) M1のUSB-Cポートが壊れたのでApple Storeで交換 (修理) した'/><author><name>Makoto</name><uri>http://www.blogger.com/profile/06587987793631355128</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinXKxU0AIbGa7nKqqjz4EBjrqADjfgtUpVm269aOoVenI57awO3_TFrq2ixuoSXfIZ7IBRQs49Cauln8b20a8YOzNNHhNZ2TeXK_wOLbUR_Q-iYvPUl4G5rOZ-SoRIPA/s107/newface2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1330666698970423728.post-8922828181207748309</id><published>2023-03-24T12:32:00.012+09:00</published><updated>2023-04-03T19:02:47.493+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Firefox"/><category scheme="http://www.blogger.com/atom/ns#" term="risc-v"/><title type='text'>How to build Firefox for Linux/riscv64 on Ubuntu 22.10 + Unmatched</title><content type='html'>&lt;p&gt;A people asks me about how to build Firefox/riscv64. Since all patches to build it are merged, so the instruction is updated from &lt;a href=&quot;/2021/07/firefox-on-linuxriscv64.html&quot;&gt;previous&lt;/a&gt;. The following instruction is on Ubuntu 22.10 on riscv64gc&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Clone firefox code from mozilla official repository
    &lt;ul&gt;&lt;li&gt;&lt;code&gt;hg clone https://hg.mozilla.org/mozilla-central&lt;/code&gt; (Mercurial)&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;git clone https://github.com/mozilla/gecko-dev&lt;/code&gt; (git).&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
  &lt;li&gt;Change current directory to cloned directory
    &lt;ul&gt;&lt;li&gt;&lt;code&gt;cd mozilla-central&lt;/code&gt; (if using mercurial)&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;cd gecko-dev&lt;/code&gt; (if using git)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
  &lt;li&gt;Create &lt;code&gt;mozconfig&lt;/code&gt; file in current dicrectory. File content is the following
    &lt;pre style=&quot;background-color: #e0e0e0;&quot;&gt;mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/objdir
mk_add_options AUTOCLOBBER=1

ac_add_options --enable-application=browser
ac_add_options --disable-debug
ac_add_options --enable-optimize
ac_add_options --disable-tests
ac_add_options --without-wasm-sandboxed-libraries&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt;Install rust. See &lt;a href=&quot;https://rustup.rs/&quot;&gt;rustup.rs&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Install clang and nodejs
    &lt;ul&gt;&lt;li&gt;&lt;code&gt;sudo apt install clang nodejs&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
  &lt;li&gt;Run &lt;code&gt;./mach bootstrap&lt;/code&gt; and select &quot;2. Firefox for Desktop&quot;&lt;/li&gt;
  &lt;li&gt;Run &lt;code&gt;./mach configure&lt;/code&gt;
  &lt;li&gt;Run &lt;code&gt;./mach build&lt;/code&gt;. It spends 8-9 hours.
&lt;/ol&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://wontfix.blogspot.com/feeds/8922828181207748309/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1330666698970423728/8922828181207748309' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/8922828181207748309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/8922828181207748309'/><link rel='alternate' type='text/html' href='http://wontfix.blogspot.com/2023/03/how-to-build-firefox-for-linuxriscv64.html' title='How to build Firefox for Linux/riscv64 on Ubuntu 22.10 + Unmatched'/><author><name>Makoto</name><uri>http://www.blogger.com/profile/06587987793631355128</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinXKxU0AIbGa7nKqqjz4EBjrqADjfgtUpVm269aOoVenI57awO3_TFrq2ixuoSXfIZ7IBRQs49Cauln8b20a8YOzNNHhNZ2TeXK_wOLbUR_Q-iYvPUl4G5rOZ-SoRIPA/s107/newface2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1330666698970423728.post-8955621282986826446</id><published>2023-03-22T10:47:00.008+09:00</published><updated>2023-03-22T10:54:41.628+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Firefox"/><title type='text'>Google Mobile ServiceのFIDOパッケージを使うと勝手にPasskey対応になる</title><content type='html'>&lt;p&gt;Google Mobile Service (GMS) に&lt;a href=&quot;https://developers.google.com/android/reference/com/google/android/gms/fido/package-summary&quot;&gt;FIDOのパッケージがあるんだが&lt;/a&gt;、今年リリースされたVersion 19で&lt;a href=&quot;https://w3c.github.io/webauthn/&quot;&gt;WebAuthn&lt;/a&gt;におけるDiscoverable Credentials (Resident key)の対応ができる&lt;a href=&quot;https://developers.google.com/android/reference/com/google/android/gms/fido/fido2/api/common/AuthenticatorSelectionCriteria.Builder#setResidentKeyRequirement(com.google.android.gms.fido.fido2.api.common.ResidentKeyRequirement)&quot;&gt;API&lt;/a&gt;が追加されている。&lt;/p&gt;
&lt;p&gt;Blinkを使っていないとあるWeb BrowserのAndroid版におけるWebAuthn対応はこのGMSのパッケージを使っているおかげで、Resident keyの対応をしていなかったのだが、このパッケージのバージョンにアップデートすれば解決するかも？と考えて、手元で修正コードを書いてみたんだけど、以下のように表示されて勝手に&lt;a href=&quot;https://fidoalliance.org/passkeys/&quot;&gt;Passkey&lt;/a&gt;対応になるっぽい。&lt;/p&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-XEBeHt5W8sZbmBkQYQJWJht8jq_PnxXdILDW-dPqfJbip2ePN8_Px4QyvxzNehgV_g5fvMVmsLGCkkbKMFC8JRjlY4P7xW0OfzXWCTyLDL0Hine_6DLaruWGtSG_0Bh40li9dUJlmmZ9iWPc0cCw6GqOLdZKzCTiMFw8yNPTnB1xENWYYOLaJNdoPA/s1077/passkey.png&quot; style=&quot;display: block; padding: 1em 0; text-align: center; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;1021&quot; data-original-width=&quot;1077&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-XEBeHt5W8sZbmBkQYQJWJht8jq_PnxXdILDW-dPqfJbip2ePN8_Px4QyvxzNehgV_g5fvMVmsLGCkkbKMFC8JRjlY4P7xW0OfzXWCTyLDL0Hine_6DLaruWGtSG_0Bh40li9dUJlmmZ9iWPc0cCw6GqOLdZKzCTiMFw8yNPTnB1xENWYYOLaJNdoPA/s320/passkey.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;上記のように勝手にPasskey対応になってしまい、しかもGoogleアカウント内に同期されちゃうから、とあるWeb Browserの事情だと実装するには、いろんな人たちの許可取らないといけないので、Resident key対応は一時中断することにした。個人的にはPasskeyを使うかどうかのオプションが欲しいのだけどないっぽいし、あの検索会社自体の都合でそれをつけてくれるのはないだろうな、しかもこのパッケージ、GMSだし。&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://wontfix.blogspot.com/feeds/8955621282986826446/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1330666698970423728/8955621282986826446' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/8955621282986826446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/8955621282986826446'/><link rel='alternate' type='text/html' href='http://wontfix.blogspot.com/2023/03/google-mobile-servicefidopasskey.html' title='Google Mobile ServiceのFIDOパッケージを使うと勝手にPasskey対応になる'/><author><name>Makoto</name><uri>http://www.blogger.com/profile/06587987793631355128</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinXKxU0AIbGa7nKqqjz4EBjrqADjfgtUpVm269aOoVenI57awO3_TFrq2ixuoSXfIZ7IBRQs49Cauln8b20a8YOzNNHhNZ2TeXK_wOLbUR_Q-iYvPUl4G5rOZ-SoRIPA/s107/newface2.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-XEBeHt5W8sZbmBkQYQJWJht8jq_PnxXdILDW-dPqfJbip2ePN8_Px4QyvxzNehgV_g5fvMVmsLGCkkbKMFC8JRjlY4P7xW0OfzXWCTyLDL0Hine_6DLaruWGtSG_0Bh40li9dUJlmmZ9iWPc0cCw6GqOLdZKzCTiMFw8yNPTnB1xENWYYOLaJNdoPA/s72-c/passkey.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1330666698970423728.post-2240248848146154091</id><published>2023-03-16T13:37:00.001+09:00</published><updated>2023-03-22T11:48:54.700+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><title type='text'>Pixel 6aの画面が割れたのでiCrackedで修理した</title><content type='html'>&lt;p&gt;仕事でスマホOSの開発、デバイスリリースもやったし、今もスマホOS向けのWebブラウザ作ってる仕事をしてるわけだが、なんでもスマホに取り込むということはなおさら信用できない。今回旅先でPixel 6aを落として画面を割ったときも、ガラス面が割れるだけだと良かったのだけど、パネルごと割れてしまって、画面が映らなくなった。そんな状態になったら、画面を確認することはできないわけだから、飛行機のチケットとか (QRコード)、電子マネーのチャージとかもできないわけで。そもそも落とす自分が悪いわけだけど、スマホにすべて取り込むというのは正直ないなと改めて思う。&lt;/p&gt;

&lt;p&gt;そんな話はさておき、自分が所有しているアメリカン・エクスプレスではスマホの盗難・故障に対する保証制度 (&lt;a href=&quot;https://www.americanexpress.com/ja-jp/benefits/insurance/nac-insurance/smartphone-protection/&quot;&gt;スマートフォン・プロテクション&lt;/a&gt;) というものがあり、修理金額の一部を補填してくれるので、それを行った。そのときのお話。&lt;/p&gt;

&lt;p&gt;まず、この保証制度を申し込むためには、以下のものが必要になる&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;そのスマートフォンを買った際の領収書。Pixelの場合はGoogleから買った際に送られてくるメールで問題なし&lt;/li&gt;
    &lt;li&gt;故障を証明する写真。今回は画面が割れている本体の画像&lt;/li&gt;
    &lt;li&gt;修理内容、代金を証明する書類。今回の場合はiCrackedで修理を行ったので、その作業が書かれた書類。修理されたときに渡される&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;今回の修理は&lt;a href=&quot;https://www.icracked.jp/service/pixel/&quot;&gt;iCracked&lt;/a&gt;で行った。ここはGoogleの正規サービスプロバイダなので、ここで修理しても本体保証は変わらないらしい。店舗自体が都内にはいくつもあるのでネットで申し込んで空いていれば当日に修理を行ってもらえる。修理時間も1時間もかからないので、郵送よりも実店舗に直接行くのが便利だと思う。&lt;/p&gt;
&lt;p&gt;なお、AMEXのスマートフォン・プロテクション、申込みから実質2営業日くらいでお金が振り込まれるので、非常に便利でした。でもGoogleはUSでやっているPreferred Careを日本で展開できないのはなんでだろう。売れてないんだろうな&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://wontfix.blogspot.com/feeds/2240248848146154091/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1330666698970423728/2240248848146154091' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/2240248848146154091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/2240248848146154091'/><link rel='alternate' type='text/html' href='http://wontfix.blogspot.com/2023/03/pixel-6aicracked.html' title='Pixel 6aの画面が割れたのでiCrackedで修理した'/><author><name>Makoto</name><uri>http://www.blogger.com/profile/06587987793631355128</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinXKxU0AIbGa7nKqqjz4EBjrqADjfgtUpVm269aOoVenI57awO3_TFrq2ixuoSXfIZ7IBRQs49Cauln8b20a8YOzNNHhNZ2TeXK_wOLbUR_Q-iYvPUl4G5rOZ-SoRIPA/s107/newface2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1330666698970423728.post-3257991385483185661</id><published>2023-03-07T19:33:00.006+09:00</published><updated>2023-03-07T19:37:08.158+09:00</updated><title type='text'>Oliveに移行しようとしたら、利用可能な口座がありませんと言われる</title><content type='html'>&lt;p&gt;親への生活費とか家賃の振り込みを毎月行う必要があり、銀行自体も各々で違うので振り込み手数料をできる限り安くする方法をいろいろとっていたのだが、三井住友銀行 (SMBC) でOliveというサービスが始まり、手数料を下げられそうだったので、移行することにした。&lt;/p&gt;
&lt;p&gt;アプリをインストールして、SMBC IDというアカウントを作り、早速口座を移行しようとしたら、&quot;Oliveアカウントに切替可能な口座がありません&quot; というエラーが起きた。&lt;a href=&quot;https://www.smbc.co.jp/kojin/olive-account/update/simulation/&quot;&gt;Oliveアカウントの切替診断&lt;/a&gt; から辿れるFAQを見ても、不可能条件に合致しておらず、SMBC Directから口座の種類を見ても &quot;残高別金利型普通預金&quot; なので、全く理由がわからない。しいてあげれば、この口座はさくら銀行時代に作ったものをずっと使っている。キャッシュカードもSMBCに変更してるし、なにか内部で変な契約になっているしか思えない。&lt;/p&gt;
&lt;p&gt;悩んでも仕方ないので、SMBCのチャットサポートで問い合わせようにしても、混雑してて問い合わせできないので、SMBC Direct経由でメールで問い合わせた。&lt;/p&gt;

&lt;p&gt;一日後、返事があり、どうも自分の口座は「カードローン（総合口座型）」というものなっているらしく (検索してもほぼ情報が存在しない)、カードローン口座の契約を止めればOliveへの切替可能とのことで家の近くの支店でカードローン口座を止めてきた。銀行の受付で説明しても「？？？」な顔をされたので、これに合致する人はすくないのではと思う。&lt;/p&gt;

&lt;p&gt;なんで、こんな契約になってかをいろいろ思い出してみると、心当たりがあって、口座を作った時に「給料振り込み口座にしていただければ、10万円まで口座残高がマイナスになっても可能」というようなものを契約した覚えがたしかにあり (あの頃は新卒社会人でいろいろ借金あった)、それが銀行が変わってくにつれ、最終的に「カードローン（総合口座型）」という契約になったんだろうと推測される。ただ、SMBC Directやアプリで見ても &quot;残高別金利型普通預金&quot; としか表示されないので、わかるはずないよねと。&lt;/p&gt;

&lt;p&gt;利用可能な口座がありませんと言われる人は、SMBC Directのメール問い合わせで聞くといいと思う。結果として実店舗行くことになると思うけど&lt;/p&gt;

&lt;p&gt;なお補足だが、銀行に問い合わせた時、切替不可能な条件に以下があったのは笑った。そりゃそうか。&lt;/p&gt;

&lt;blockquote style=&quot;background-color: #e0e0e0;&quot;&gt;* 口座名義に銀行のシステム上反映することのできない漢字が含まれる場合&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://wontfix.blogspot.com/feeds/3257991385483185661/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1330666698970423728/3257991385483185661' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/3257991385483185661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/3257991385483185661'/><link rel='alternate' type='text/html' href='http://wontfix.blogspot.com/2023/03/olive.html' title='Oliveに移行しようとしたら、利用可能な口座がありませんと言われる'/><author><name>Makoto</name><uri>http://www.blogger.com/profile/06587987793631355128</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinXKxU0AIbGa7nKqqjz4EBjrqADjfgtUpVm269aOoVenI57awO3_TFrq2ixuoSXfIZ7IBRQs49Cauln8b20a8YOzNNHhNZ2TeXK_wOLbUR_Q-iYvPUl4G5rOZ-SoRIPA/s107/newface2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1330666698970423728.post-7596219736181439941</id><published>2023-01-06T22:16:00.002+09:00</published><updated>2023-01-06T22:16:22.935+09:00</updated><title type='text'>2022年に買ったもの</title><content type='html'>&lt;p&gt;今年は書く内容のあるものを買ってないなぁと思いながら。&lt;/p&gt;

&lt;h3&gt;clockwork DevTerm R1&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://wontfix.blogspot.com/2022/06/risc-vclockwork-devterm.html&quot;&gt;ここにすでに書いてある&lt;/a&gt;が、補足。&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;キーボードがしょぼくて、ゆっくりじゃないと入力がほぼ不可能。結果としてUSBキーボード差さないと使い物にならない。&lt;/li&gt;
  &lt;li&gt;ローエンドの阿里巴巴のチップ、GPUがまともに入ってないので、表示に関してはただ表示できるレベルの遅さ&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;初めてRISC-V64デバイス買うのであればいいけど、SiFiveのボード持ってるから、まぁ触らなくなっちゃった&lt;/p&gt;

&lt;h3&gt;&lt;a href=&quot;https://www.logicool.co.jp/ja-jp/products/mice/lift-vertical-ergonomic-mouse.910-006488.html&quot;&gt;Logicool LIFT&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.logicool.co.jp/ja-jp/products/mice/mx-vertical-ergonomic-mouse.910-005452.html&quot;&gt;MX Vertical&lt;/a&gt;ユーザーだったのだけど、トラッキングが調子悪くなってきて (今までのLogicool製品では経験なかった)、買い替えるデバイスをどれにしようか考えてるときに発売になったので。サイズ感はこっちのほうが好みなので、買ってよかった。&lt;/p&gt;

&lt;h3&gt;&lt;a href=&quot;https://store.google.com/jp/product/pixel_6a&quot;&gt;Google Pixel 6a&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;前まで使ってたPixel 4aの画面を割ってしまったので。Pixel 4aのAndroidのバージョンも13で打ち止めだし、14へ向けてのデバイスが欲しかったので購入。充電時とかに無駄に熱くなるとかちょっと重いとか、Pixel 4aに比べると出来がいいとは思わなないけど、しょうがないよね。&lt;/p&gt;
&lt;p&gt;なお、画面を割ったPixel 4aは、東急ハンズに入ってる &lt;a href=&quot;https://www.icracked.jp/service/pixel/&quot;&gt;iCracked&lt;/a&gt; (Googleの正規修理業者) に持ち込んで画面を交換してもらいました。1時間30分くらいで交換終了して約2万円ほど。壊してもいい検証機に格下げ。&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://wontfix.blogspot.com/feeds/7596219736181439941/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1330666698970423728/7596219736181439941' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/7596219736181439941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/7596219736181439941'/><link rel='alternate' type='text/html' href='http://wontfix.blogspot.com/2023/01/2022.html' title='2022年に買ったもの'/><author><name>Makoto</name><uri>http://www.blogger.com/profile/06587987793631355128</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinXKxU0AIbGa7nKqqjz4EBjrqADjfgtUpVm269aOoVenI57awO3_TFrq2ixuoSXfIZ7IBRQs49Cauln8b20a8YOzNNHhNZ2TeXK_wOLbUR_Q-iYvPUl4G5rOZ-SoRIPA/s107/newface2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1330666698970423728.post-1470054323639304327</id><published>2022-12-06T15:30:00.001+09:00</published><updated>2022-12-06T15:30:40.734+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Firefox"/><title type='text'>Firefox for macOS版をLinux上でビルドする</title><content type='html'>&lt;p&gt;自分用メモ&lt;/p&gt;

&lt;p&gt;Firefoxのビルド環境はカスタムビルドされたclangを使っているため、Linux上でmacOS版のビルドができたりする。実際AWS/GCP上のTaskCluster (MozillaのCI) ではmacOS版はLinuxでクロスビルドしてる。問題はSDKのヘッダとかなんだが、まぁ&lt;a href=&quot;https://github.com/phracker/MacOSX-SDKs&quot;&gt;ここら&lt;/a&gt;からもってくるなり別のmacOS環境からSDKのヘッダ・ライブラリ一式を持ってこればどうにかなる。&lt;/p&gt;

&lt;p&gt;mozconfigファイルはこんな感じでいけるはず&lt;/p&gt;
&lt;pre&gt;
mk_add_options MACOS_SDK_DIR=/other/MacOS-SDKs/MacOSX11.3.sdk
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/objdir-macos

ac_add_options --target=x86_64-apple-darwin
ac_add_options --enable-debug
ac_add_options --enable-optimize
ac_add_options --enable-tests
ac_add_options --with-macos-sdk=/other/MacOS-SDKs/MacOSX11.3.sdk
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://wontfix.blogspot.com/feeds/1470054323639304327/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1330666698970423728/1470054323639304327' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/1470054323639304327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/1470054323639304327'/><link rel='alternate' type='text/html' href='http://wontfix.blogspot.com/2022/12/firefox-for-macoslinux.html' title='Firefox for macOS版をLinux上でビルドする'/><author><name>Makoto</name><uri>http://www.blogger.com/profile/06587987793631355128</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinXKxU0AIbGa7nKqqjz4EBjrqADjfgtUpVm269aOoVenI57awO3_TFrq2ixuoSXfIZ7IBRQs49Cauln8b20a8YOzNNHhNZ2TeXK_wOLbUR_Q-iYvPUl4G5rOZ-SoRIPA/s107/newface2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1330666698970423728.post-1457791680125029929</id><published>2022-06-02T21:12:00.007+09:00</published><updated>2022-06-04T02:01:07.277+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="risc-v"/><title type='text'>RISC-VなClockwork DevTermがやってきた</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://www.clockworkpi.com/devterm&quot;&gt;Clockworkが発売してるDevTerm&lt;/a&gt;にRISC-V64なボードが追加されてたので買ったところ届きました。&lt;/p&gt;

&lt;div&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgg4reEHgI1qR46i3UT_QDpAc-NG_Q9UmN5AvOoElxZYx-gIMbNbJJGwQgD9IYzzT3Txs5LcWgmUjv-URwqOOKT9GiHSAPS6f7Y-ELROr9YZAYSFQqgZNlfKcIfWeXv08kIo4OgPIIcb3IuQTUipFOliOBOFUGLJ4ts3Zm6VuKa7UprGBBAuvdXPsz-oA/s1600/PXL_20220601_044004452.jpg&quot;  width=&quot;500&quot;/&gt;&lt;/div&gt;

&lt;p&gt;中のパーツは組み立てる必要がある。電源はUSB-C経由だが、18650バッテリー搭載可能。&lt;/p&gt;

&lt;div&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMzrSVKLGgqO9CW2MzPJqlNmq4zA_sWstdTGxkaiQ_mJytiyBISACN-7bnMXbkfZhUI3N5m3TysgboH8MP99mprHIownewC9eoYuOj0fczkJLfvsYmiVGwZ6L1I0jW8xalt3Pix8JX8Dxt1Po8avYCjs0FhvDQG7Q0JwEHZ7FZi7MmWAdqBytLNnyQKw/s1600/PXL_20220601_072450579.jpg&quot; width=&quot;500&quot;/&gt;&lt;/div&gt;

&lt;p&gt;なお、このボードは阿里巴巴のXuanTie C906コアなAllwinner D1使っているのでこんな感じ。&lt;/p&gt;
&lt;pre style=&quot;background-color: #e0e0e0; white-space: pre-wrap;&quot;&gt;
cpi@devterm-R01:~$ uname -a
Linux devterm-R01 5.4.61 #12 PREEMPT Wed Mar 30 14:44:22 CST 2022 riscv64 riscv64 riscv64 GNU/Linux

cpi@devterm-R01:~$ cat /proc/cpuinfo
processor	: 0
hart		: 0
isa		: rv64imafdcvu
mmu		: sv39
&lt;/pre&gt;
&lt;p&gt;だそうです。Vecter Extension!&lt;/p&gt;
&lt;p&gt;同梱のSDカードにUbuntu 22.04ベースの起動イメージが入っているのだが、これは&lt;a href=&quot;http://dl.clockworkpi.com/&quot;&gt;http://dl.clockworkpi.com/&lt;/a&gt;からダウンロード可能。なお、スクラッチから作る方法も&lt;a href=&quot;https://github.com/clockworkpi/DevTerm/wiki/Create-DevTerm-R01-OS-image-from-scratch&quot;&gt;公開されている&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;なお、参考にUnix Bench&lt;/p&gt;
&lt;pre&gt;
========================================================================
   BYTE UNIX Benchmarks (Version 5.1.3)

   System: devterm-R01: GNU/Linux
   OS: GNU/Linux -- 5.4.61 -- #12 PREEMPT Wed Mar 30 14:44:22 CST 2022
   Machine: riscv64 (riscv64)
   Language: en_US.utf8 (charmap=&quot;UTF-8&quot;, collate=&quot;UTF-8&quot;)
   16:18:46 up 3 min,  2 users,  load average: 0.92, 1.11, 0.53; runlevel 2022-06-02

------------------------------------------------------------------------
Benchmark Run: Fri Jun 03 2022 16:18:46 - 16:46:57
1 CPU in system; running 1 parallel copy of tests

Dhrystone 2 using register variables        2958013.9 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     1045.0 MWIPS (9.9 s, 7 samples)
Execl Throughput                                254.0 lps   (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks         44255.0 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           12537.2 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        116663.8 KBps  (30.0 s, 2 samples)
Pipe Throughput                              163270.2 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  26226.4 lps   (10.0 s, 7 samples)
Process Creation                                696.3 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                    567.4 lpm   (60.1 s, 2 samples)
Shell Scripts (8 concurrent)                     73.9 lpm   (60.5 s, 2 samples)
System Call Overhead                         383377.8 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0    2958013.9    253.5
Double-Precision Whetstone                       55.0       1045.0    190.0
Execl Throughput                                 43.0        254.0     59.1
File Copy 1024 bufsize 2000 maxblocks          3960.0      44255.0    111.8
File Copy 256 bufsize 500 maxblocks            1655.0      12537.2     75.8
File Copy 4096 bufsize 8000 maxblocks          5800.0     116663.8    201.1
Pipe Throughput                               12440.0     163270.2    131.2
Pipe-based Context Switching                   4000.0      26226.4     65.6
Process Creation                                126.0        696.3     55.3
Shell Scripts (1 concurrent)                     42.4        567.4    133.8
Shell Scripts (8 concurrent)                      6.0         73.9    123.1
System Call Overhead                          15000.0     383377.8    255.6
                                                                   ========
System Benchmarks Index Score                                         120.8&lt;/pre&gt;

</content><link rel='replies' type='application/atom+xml' href='http://wontfix.blogspot.com/feeds/1457791680125029929/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1330666698970423728/1457791680125029929' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/1457791680125029929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/1457791680125029929'/><link rel='alternate' type='text/html' href='http://wontfix.blogspot.com/2022/06/risc-vclockwork-devterm.html' title='RISC-VなClockwork DevTermがやってきた'/><author><name>Makoto</name><uri>http://www.blogger.com/profile/06587987793631355128</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinXKxU0AIbGa7nKqqjz4EBjrqADjfgtUpVm269aOoVenI57awO3_TFrq2ixuoSXfIZ7IBRQs49Cauln8b20a8YOzNNHhNZ2TeXK_wOLbUR_Q-iYvPUl4G5rOZ-SoRIPA/s107/newface2.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgg4reEHgI1qR46i3UT_QDpAc-NG_Q9UmN5AvOoElxZYx-gIMbNbJJGwQgD9IYzzT3Txs5LcWgmUjv-URwqOOKT9GiHSAPS6f7Y-ELROr9YZAYSFQqgZNlfKcIfWeXv08kIo4OgPIIcb3IuQTUipFOliOBOFUGLJ4ts3Zm6VuKa7UprGBBAuvdXPsz-oA/s72-c/PXL_20220601_044004452.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1330666698970423728.post-7373519885623325034</id><published>2022-05-24T20:42:00.002+09:00</published><updated>2022-05-24T22:35:31.531+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="Web Standard"/><title type='text'>Intl.MessageFormat</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://www.wantedly.com/companies/wantedly/post_articles/400195&quot;&gt;hi18n (i18nライブラリ) の紹介 (1) 設計思想と基本方針&lt;/a&gt;というのを見た。このブログ記事を見るとこれは文字列翻訳のメッセージフォーマットを行うライブラリの話らしい。翻訳というのは、Localizaiton (L10N) と呼ぶもので、Internationalization (i18n) とは違う。i18nというのは、文字翻訳じゃなくて、多言語を扱う、表示するということを基本指す。例えば日本語が表示できるとか入力ができるとか。まずwantedly社は正しい言葉を使うようにしてほしい。&lt;/p&gt;

&lt;p&gt;さて、本題。&lt;/p&gt;

&lt;p&gt;こういうメッセージフォーマットというのは、どうもいろいろ各社持っているらしく、車輪の再発明を各社でやっている状況らしい。そんな状態は労働力の無駄でしかないので、ECMA-402で&lt;a href=&quot;https://github.com/tc39/proposal-intl-messageformat&quot;&gt;Intl.MessageFormat&lt;/a&gt;というのを作ることになった。元のベースはFirefoxで使っている&lt;a href=&quot;https://projectfluent.org/&quot;&gt;Fluent&lt;/a&gt;と呼んでいるライブラリで、そもそもそれはFirefox OSのときに作られた仕組み (今は某社で働いてるZibiがFirefox OSのころからやってて、これをFirefox本体へ持ち込むときにECMA-402のいろんな仕様も追加してた)。&lt;/p&gt;
&lt;p&gt;Intl.MessageFormatはただのAPIだけど、メッセージフォーマットの仕様は&lt;a href=&quot;https://github.com/unicode-org/message-format-wg/blob/main/spec.md&quot;&gt;The MessageFormat 2.0 Specification&lt;/a&gt;に現時点のドラフトがある。ICU4Xで使えればWASMでも使えるので、自社で同じような機能の車輪の再発明を行っているのであれば、ここでいろいろ意見を言えば取り込まれると思うよ&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://wontfix.blogspot.com/feeds/7373519885623325034/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1330666698970423728/7373519885623325034' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/7373519885623325034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/7373519885623325034'/><link rel='alternate' type='text/html' href='http://wontfix.blogspot.com/2022/05/intlmessageformat.html' title='Intl.MessageFormat'/><author><name>Makoto</name><uri>http://www.blogger.com/profile/06587987793631355128</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinXKxU0AIbGa7nKqqjz4EBjrqADjfgtUpVm269aOoVenI57awO3_TFrq2ixuoSXfIZ7IBRQs49Cauln8b20a8YOzNNHhNZ2TeXK_wOLbUR_Q-iYvPUl4G5rOZ-SoRIPA/s107/newface2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1330666698970423728.post-144656539331685723</id><published>2021-12-31T11:12:00.032+09:00</published><updated>2022-01-04T18:29:42.391+09:00</updated><title type='text'>2021年に買ったもの</title><content type='html'>&lt;h3&gt;&lt;a href=&quot;https://store.google.com/product/pixel_4a&quot;&gt;Google Pixel 4a&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;XPERIA XZ2 Compactを使っていたのだが、3度目の修理になったタイミングでメイン端末の代わりとして購入。XPERIA XZシリーズはほんと出来が悪かったし、ドコモ経由で買ってたので、修理代が非常に安く、あれでは元を取れてないのではと思うものだった。&lt;/p&gt;
&lt;p&gt;Googleはこのくらいのミッドレンジの端末が一番コスパいいと思うので続けてほしいと思う。そもそも昔のNexusのときと違ってAOSPそのままではなくなってるし、どれがリファレンスなんだかわからなくなってはいるが。&lt;/p&gt;

&lt;h3&gt;&lt;a href=&quot;https://www.sifive.com/boards/hifive-unmatched&quot;&gt;HiFive Unmatched&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;2020年にオーダーしたものだったけど、5月くらいに到着。Mini-ITXなケースと電源、AMDのPCIeなGPUを用意すると、普通にLinuxが実用速度でボートするRISC-Vボードなので、いろんなコードを試しにポートしてみた。今年くらいにリリースされるようなSoCだと今度はSIMDとかCrypto Extensionとか実装されてそうし、新しいSoCが入ったボードが出たら買うだろうな。&lt;/p&gt;

&lt;h3&gt;&lt;a href=&quot;https://www.tp-link.com/jp/business-networking/unmanaged-switch/tl-sg105-m2/&quot;&gt;TP-Link 5ポート 2.5Gbps ハブ アンマネージ スイッチングハブ TL-SG105-M2&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;コスパはいいTP-Linkが最安クラスの2.5Gbpsハブを発売したので、早速購入。結構熱は持つけど、速度としては安定してる。そういえば、自分が100Mbpsなハブを買ったのもこのくらいの値段になったころだったなぁと思い出した。&lt;/p&gt;
&lt;iframe style=&quot;width:120px;height:240px;&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; src=&quot;https://rcm-fe.amazon-adsystem.com/e/cm?ref=qf_sp_asin_til&amp;t=goforboneyar-22&amp;m=amazon&amp;o=9&amp;p=8&amp;l=as1&amp;IS2=1&amp;detail=1&amp;asins=B08VH4Q3NR&amp;linkId=d1792dad745c2099e47dc7acce6e6559&amp;bc1=ffffff&amp;amp;lt1=_blank&amp;fc1=333333&amp;lc1=0066c0&amp;bg1=ffffff&amp;f=ifr&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;

&lt;h3&gt;&lt;a href=&quot;https://www.switchbot.jp/products/switchbot-smart-humidifier&quot;&gt;SwitchBotスマート加湿器&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;部屋が乾燥してて朝起きると喉の調子がわるいので、購入。加湿器を買うんだったらくだらないものを買おうと思い、SwitchBotにした。はっきりいうと加湿器なんてずっとつけっぱなしだし、タンクの水がなくなっているという情報をスマホで見ても、だから？って感じなので、スマホとかからコントロールするような機能は改めていらないなと。&lt;/p&gt;

&lt;h3&gt;&lt;a href=&quot;https://nestle.jp/brand/ndg/product/#product05&quot;&gt;ネスカフェ ドルチェグスト MINI ME&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;家でコーヒーの飲む時は一杯毎ドリップして飲んでいたのだけど、面倒になって、コストコでMINI MEを購入。自分のような面倒くさがりな人にとってはこういうカプセルのものが理にかなってた。&lt;/p&gt;
&lt;iframe style=&quot;width:120px;height:240px;&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; src=&quot;https://rcm-fe.amazon-adsystem.com/e/cm?ref=qf_sp_asin_til&amp;t=goforboneyar-22&amp;m=amazon&amp;o=9&amp;p=8&amp;l=as1&amp;IS2=1&amp;detail=1&amp;asins=B07PQ3686K&amp;linkId=a737ae6bc281aa85e7fcaba5b8d78d6a&amp;bc1=ffffff&amp;amp;lt1=_blank&amp;fc1=333333&amp;lc1=0066c0&amp;bg1=ffffff&amp;f=ifr&quot;&gt;&lt;/iframe&gt;

&lt;h3&gt;&lt;a href=&quot;https://book.yamazen.co.jp/product/cook/c_others/entry-9954.html&quot;&gt;山善 エアフライヤー YAF-C120&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;普通の電気フライヤーは持ってはいるのだけど、油の処理がもったいない気がしてて、エアフライヤーで代替できないかと思って購入。はっきりいうと中途半端過ぎて、代替にならなかった。200℃だと微妙に温度が足りない感。たしかにフライドポテトとかは簡単にできるのだけど、その程度かなぁ。今後も使い続けるかは微妙。&lt;/p&gt;
&lt;iframe style=&quot;width:120px;height:240px;&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; src=&quot;https://rcm-fe.amazon-adsystem.com/e/cm?ref=qf_sp_asin_til&amp;t=goforboneyar-22&amp;m=amazon&amp;o=9&amp;p=8&amp;l=as1&amp;IS2=1&amp;detail=1&amp;asins=B093PRWJPY&amp;linkId=c0644a7346c5e03c0a97d319ef8116be&amp;bc1=ffffff&amp;amp;lt1=_blank&amp;fc1=333333&amp;lc1=0066c0&amp;bg1=ffffff&amp;f=ifr&quot;&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://wontfix.blogspot.com/feeds/144656539331685723/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1330666698970423728/144656539331685723' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/144656539331685723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/144656539331685723'/><link rel='alternate' type='text/html' href='http://wontfix.blogspot.com/2021/12/2021.html' title='2021年に買ったもの'/><author><name>Makoto</name><uri>http://www.blogger.com/profile/06587987793631355128</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinXKxU0AIbGa7nKqqjz4EBjrqADjfgtUpVm269aOoVenI57awO3_TFrq2ixuoSXfIZ7IBRQs49Cauln8b20a8YOzNNHhNZ2TeXK_wOLbUR_Q-iYvPUl4G5rOZ-SoRIPA/s107/newface2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1330666698970423728.post-4006517012204729049</id><published>2021-11-30T10:19:00.005+09:00</published><updated>2021-11-30T10:20:18.779+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Chrome"/><category scheme="http://www.blogger.com/atom/ns#" term="Firefox"/><title type='text'>Web Speech APIのSpeechSynthesisEvent.elapsedTimeは秒を返すのだけど</title><content type='html'>&lt;p&gt;バグレポートを受け取って気づいたのだけど、&lt;a href=&quot;https://wicg.github.io/speech-api/#dom-speechsynthesisevent-elapsedtime&quot;&gt;SpeechSynthesisEvent.elapsedTime&lt;/a&gt;は秒を返すのが正しい。ただほとんどのブラウザがこの値を秒で返していなかった (例外はFirefox for Linuxくらいかも)。なので、Safariも最近直っていたので、&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1732498&quot;&gt;Firefox側も直した&lt;/a&gt;。&lt;/p&gt;

&lt;p&gt;ここまでは普通の話なのだが、バグ報告をした人がChromeでも同じ問題が起きるとしてバグを報告したのだが、&lt;a href=&quot;https://bugs.chromium.org/p/chromium/issues/detail?id=1253036&quot;&gt;このバグ&lt;/a&gt;が滑稽。Chromeはバグを受け付けるとQAが出てくるのだけど、そのQAがまずWeb APIの仕様を理解してないし、理解しようともしない。その人を乗り越えないと、Bug Triageさえちゃんとやってくれないようで、バグを認識させるためにはそのQAが投げ出すまで付き合ってあげないといけなくて、非常に無駄なコストがかかる。google.comじゃなくてchromium.orgのメアドを使っているからどこかのベンダーなんだと予想してるのだけど、そうだったらもっとまともな会社使おうよと、Google。&lt;/p&gt;

&lt;p&gt;そもそもWeb Platform test (wpt) でTest failure発生させられる話だったら、そういうテストケースを書いておいて、さくっとwptに入れちゃうのだけど、このissueに関してはwptを書きようがないので、まぁChromeチームはずっと放置すると読んでる。&lt;/p&gt;

&lt;p&gt;なお、Bug Triageに関してはMozillaは詳しい人かチームマネージャがやるので、大概ちゃんとした人が見ることになることが多い。こんな感じでBug Triageをちゃんとやらない製品はバグ修正とかにコストかけない (または評価システム上、評価されない) だろうなぁと勝手に思ってる。&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://wontfix.blogspot.com/feeds/4006517012204729049/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1330666698970423728/4006517012204729049' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/4006517012204729049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/4006517012204729049'/><link rel='alternate' type='text/html' href='http://wontfix.blogspot.com/2021/11/web-speech-apispeechsynthesiseventelaps.html' title='Web Speech APIのSpeechSynthesisEvent.elapsedTimeは秒を返すのだけど'/><author><name>Makoto</name><uri>http://www.blogger.com/profile/06587987793631355128</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinXKxU0AIbGa7nKqqjz4EBjrqADjfgtUpVm269aOoVenI57awO3_TFrq2ixuoSXfIZ7IBRQs49Cauln8b20a8YOzNNHhNZ2TeXK_wOLbUR_Q-iYvPUl4G5rOZ-SoRIPA/s107/newface2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1330666698970423728.post-5533659137844062565</id><published>2021-10-08T23:37:00.004+09:00</published><updated>2021-10-08T23:44:02.909+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Firefox"/><title type='text'>いまさらながらAndroidのAutofill Frameworkの困った話</title><content type='html'>&lt;p&gt;AndroidのAutofillというのは、カスタムコントロールを使わないアプリにとっては実装は難しくはないのだが、カスタムビューを実装しているアプリでは、自分でいろいろな情報を提供しないといけない。実際には、&lt;a href=&quot;https://developer.android.com/guide/topics/text/autofill-optimize?hl=ja&quot;&gt;自動入力用にアプリを最適化する&lt;/a&gt;に書かれているように、システムがAutofill用の情報を要求してきたら提供する、フォーカスの状態をシステムに通知するなどを追加実装する必要がある。&lt;/p&gt;

&lt;p&gt;全部のアプリケーションでそのような実装しているとは限らないので、実装していないような昔のアプリケーション用にAndroidはおせっかいな機能を追加している。&lt;a href=&quot;https://developer.android.com/reference/android/service/autofill/AutofillService#compatibility-mode&quot;&gt;互換モード&lt;/a&gt;だ。これはアクセシビリティの実装を用いたautofillのエミュレーションを提供するもので、カスタムビューがアクセシビリティ機能の実装をしている場合は、それを利用してAutofill情報を設定する。そもそもアクセシビリティの実装しててAutofillの実装しないアプリがあるのかと問い詰めたいところではあるが。&lt;/p&gt;

&lt;p&gt;この互換モードというのは自動的に切り替わるわけではなくて、Autofillサービス側で事前に設定をする。だから例えばアプリがAutofillの実装を入れたとしても、アプリ側からこの互換モードを無効にする方法は残念ながらない。この互換モードが動作してしまうと、アクセシビリティノードの走査が走ってしまうため、当然ながらパフォーマンス問題を引き起こす。アクセシビリティノードの走査はandroid.view.Viewの実装内で行われているから、&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1734552&quot;&gt;該当コードを実行しないようにすれば&lt;/a&gt;、アクセシビリティノードの走査が実行されなくなるので、ある程度は回避可能ではある。残念ながらある程度ね。&lt;/p&gt;

&lt;p&gt;この互換モードで実行しているかどうかは、こんな感じで調べられると思う。&lt;/p&gt;

&lt;pre style=&quot;background-color: #e0e0e0;&quot;&gt;
public boolean isCompatibilityMode(Context context) {
  try {
    final AccessibilityManager manager =
      (AccessibilityManager) context.getSystemService(
                               Context.ACCESSIBILITY_SERVICE);
    if (manager == null) {
      return false;
    }
    final List&amp;lt;AccessibilityServiceInfo&amp;gt; serviceInfoList =
      manager.getEnabledAccessibilityServiceList(0);
    if (serviceInfoList == null) {
      return false;
    }
    for (final AccessibilityServiceInfo info : serviceInfoList) {
      if (info.getId().equals(
        &quot;android/com.android.server.autofill.AutofillCompatAccessibilityService&quot;
      )) {
        return true;
      }
    }
  } catch (final Exception e) {
  }
  return false;
}&lt;/pre&gt;


&lt;p&gt;アクセシビリティノードを走査させないようにしたとしても、互換モードは引き続きおせっかいなコードを実行する。この互換モードが動作する際には、CompatibilityBridgeと呼ばれるものがアクセシビリティイベントをウォッチするようになる (これについては無効にする方法はない)。そのためアクセシビリティイベントを発火させるとそれに応じて勝手にAutofillの互換コードが実行されてしまう。例えば&lt;a href=&quot;https://developer.android.com/reference/android/view/accessibility/AccessibilityEvent#TYPE_VIEW_FOCUSED&quot;&gt;AccessibilityEvent.TYPE_VIEW_FOCUSED&lt;/a&gt;のイベントを受け取ると、&lt;a href=&quot;https://developer.android.com/reference/android/view/autofill/AutofillManager#notifyViewEntered(android.view.View)&quot;&gt;AutofillManager.notifyViewEntered&lt;/a&gt;を呼び指したりする。そのため内部でAutofillフォーカスがアクセシビリティノード上に移動する。たとえアプリケーションがAutofill情報を提供してたとしてもだ。AndroidのAutofillはフォーカスが移った際にAutofill用のリクエストをAutofillサービスに渡すので、互換モードでかつ、もしアプリがAutofillの実装をしてた場合、2度リクエストが飛ぶという困ったことになってる。&lt;/p&gt;

&lt;p&gt;今どきのWebブラウザというにはOSのAPIはUI Processで実行される。Webコンテンツ内のアクセシビリティ情報をコンテンツのロード時にContent Processで集められ、集まった後UI Processへ送られる。アクセシビリティ情報の収集というのは非常に重い処理なので、UI Processへ送られるのは、ブラウザにとっては相当後になる。なので下手をするとAutofillフォーカスが予期もしてないアクセシビリティノードに奪われた状態でAutofillサービスがAutofillのUIを出したりしようとするので、ブラウザにとっては予期しない動作になりがちになる。例えば、&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1693152&quot;&gt;Bug 1693152&lt;/a&gt;とか&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1715549&quot;&gt;Bug 1715549&lt;/a&gt;とか。&lt;/p&gt;

&lt;p&gt;このように残念な互換モードを使っているAutofillサービスで有名なのはBitwarden。昔Bitwardenの開発者になんで互換モードに設定しているの？って聞いたけどよくわからない答えを返してきたので、今度こそどうにか止めさせるつもり。このような問題に引っかかるのはたぶん自分だけだと思いたいし、Androidはこの互換モードをアプリ側から止める方法を提供してほしかった。&lt;/p&gt;

&lt;p&gt;なお、Bitwardenを使ってて、たまにChromeとかでもAutofillが動かないという話があれば、おそらくこのパターンの話。&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://wontfix.blogspot.com/feeds/5533659137844062565/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1330666698970423728/5533659137844062565' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/5533659137844062565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1330666698970423728/posts/default/5533659137844062565'/><link rel='alternate' type='text/html' href='http://wontfix.blogspot.com/2021/10/androidautofill-framework.html' title='いまさらながらAndroidのAutofill Frameworkの困った話'/><author><name>Makoto</name><uri>http://www.blogger.com/profile/06587987793631355128</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinXKxU0AIbGa7nKqqjz4EBjrqADjfgtUpVm269aOoVenI57awO3_TFrq2ixuoSXfIZ7IBRQs49Cauln8b20a8YOzNNHhNZ2TeXK_wOLbUR_Q-iYvPUl4G5rOZ-SoRIPA/s107/newface2.png'/></author><thr:total>0</thr:total></entry></feed>