液晶風の画面は決まった形をオン・オフするだけなので、canvas にコードで描くのは大変なだけで無駄が多い。かといってセグメントを1つ1つ画像にわけて座標指定で配置していくのも面倒くさい。

と考えていくと SVG を埋めこんで、SVG の要素を JS で操作するのが効率が良い。ワークフローとしては SVG の作成と JS の実装で綺麗に境界を作ることができる。

Inkscape


Inkscape の良いところは以下の点

  • XML エディタが UI と連動している
    • レイヤーやオブジェクトを選択すると該当箇所にエディタ上で跳べる
  • 構造をコントロールしやすい
    • 画像を編集するというより SVG の XML を編集するUIというイメージ

Inkscape でオブジェクトに名前をつけると、svg 上では inkscape:label 属性に入る。これを利用して JS から操作すれば Inkscape で保存した SVG をそのまま利用できる。

JSで扱う

Inkscape で保存した SVG をそのままファイルとして置いて、fetch() で取得し、HTML5 な HTML で特定の要素の innerHTML に入れてしまうのが手っ取りばやい。(XML の Processing Instruction については Chrome ではコメントに変換されるが、仕様上パースエラーなので消しておく)

名前空間の扱いが謎だが、querySelector() の場合以下のような形で指定することができる (つまり名前空間を扱わず、prefix も含めて属性名とする)

svg.querySelectorAll('g[inkscape\\:label="digits"] > g')

あとは適当に style.visibility を操作するだけなので省略

svg の HTML Living Standard 的解釈

svg 要素は HTML では SVG 2 で定義されると書いてある。つまり「HTML は SVG を知っている」。SVG 2 では HTML 内でも svg が使えることを考慮して書かれている。

SVG の仕様上、HTML 内では SVG の名前空間は HTML パーサによって与えられると書いてある。このため、HTML 内 svg 要素には xmlns は必要ない。 https://svgwg.org/svg2-draft/single-page.html#struct-Namespace

HTML LS

In HTML, the xmlns attribute has absolutely no effect. It is basically a talisman. It is allowed merely to make migration to and from XML mildly easier. When parsed by an HTML parser, the attribute ends up in no namespace, not the "http://www.w3.org/2000/xmlns/" namespace like namespace declaration attributes in XML do.

また https://html.spec.whatwg.org/#elements-2 に例示があるが、HTML としては xmlns は何の効果もうみ出さない。例えば svg 要素の中に xmlns:foo="foo" という宣言と共に <foo:bar /> というのがあっても、これは HTML パーサによって自動的に与えられる svg の名前空間に属し、foo:bar という要素名になる。

  1. トップ
  2. tech
  3. JS+SVGで液晶画面風の表示をつくる

2016年の6月に組んでからCPUマザボを変更せずにきたが、この Core i7 6700 が Windows11 非対応だったり、今時さすがに4コア8スレだったり、PCIe レーン数が少なすぎて NVMe SSD が使いにくかったりで、そろそろかと思い組替えることにした。

ケースとグラボ以外はほぼ新調。ここに書いてない SATA のドライブは継続して接続している。あとはケースファンもすべて入れ替えた。

電源は 80+ Platinum で安かったやつ(1万円ぐらい)を買ってみたがパッケージやケーブルが良くできていて非常に豪華だった。

Intel か AMD か?

プロセスルールの数字が良いからなんとなく最近なら AM5 ソケットになった Ryzen 7000 シリーズかなと思っていたが、13th Intel が結構強いようだった。個人的には以下の点で Intel 優勢とおもった

  • アイドル時の電力が低め
  • DDR4 メモリが使える (DDR5 メモリが高い)
  • 12th (1年前) のマザーボードが使える
  • 性能的にはどっこいどっこい

DDR5 が十分性能と価格が落ちつくには何年もかかりそう。そして AM5 なマザーボードはだいぶ高い。Intel なら手元の DDR4 メモリも利用できる。

i5 か i7 か i9 か

i9 は水冷するような超ハイエンド向けというイメージがあり、i5 はちょっと微妙というイメージがある (別にそんなことないみたいだが)。

  • CPU ヘビーな状態が続くことはあまりないが時々ある
  • クーラーは空冷
  • Core i7 6700 でもそれほど苦痛になることはなかった (エンコードぐらい…)

と考えていくと理性的に最適なのは i5 ではないかと思うが、大は小を兼ねるので i7 とした。i9 は高すぎる。

フルロードせず電力制限をかけたとしても、その制限においてはクロックが上がるので上位CPUが無駄というわけではない。

Windows 11 のクリーンインストール

Windows 11 にアップグレード不可な PC に入っていた Windows 10 のライセンスだったが、普通に Windows 11 のインストールメディアをつくってインストールし、構成を変更したという宣言をしたら引き継ぐことができた。

電力消費

マザーボードデフォルト設定だとCPU電力無制限になるようだ。つまりサーマルスロットリングが常時起こるまで発熱し、クーラーの排熱性能上限ぐらいのパッケージ消費電力で落ちつくという挙動になる。

  • 電源にクランプして読むとアイドル時で50~60W程度
  • HWiNFO 読みで
    • CPU Package Power は最大 250W
    • GPU Power は最大 155W ぐらい

アイドル時の CPU の Package Power は 5W~10W ぐらい。GPU Power が 15W ぐらい。Z690チップセットが TDP としては 6W。

効率カーブが載っているPSU の評価結果 2% of spec = 13.2W 出力時の効率が 42% 程度で、20~30W ぐらいの効率は50~60%程度のように見える。つまりセンサ読み Package Power が 25W なら電源クランプで読むと 50W ぐらいになってしまう (実際はマザボ上のVRMの効率もあるわけで)。

なおこのマザボは多少光るけどオフにしても消費電力への影響は微々たるもの。

電力リミット

電力無制限で cinebench を回すと当然サーマルスロットリングが起き、最初は250Wぐらいだが徐々に Package Power が落ちて 220W 前後で落ちついてくる。これがこのクーラーの限界ということになる。実際、AS500 というクーラーはTDP 220Wまで対応と書いてあるので、実測でもその通りといえる。

あんまり限界性能を出すのも恐いので、UEFI から最大電力 (long / short duration power limit) を 180W に制限することにした。PL は原理的にシングルスレッド~数スレッドでは超えないので、全コア使い尽くすようなときに若干性能が下がるイメージだと思う。

定格は3.4GHz(Pコア)/2.5GHz(Eコア)ターボブーストで5.3GHz(Pコア)/4.2GHz(Eコア)。

なお Tjunction max はいわゆる絶対最大定格ではないようだ。Intel 的な絶対定格は内部に非公開で持っており、必要とあらばシャットダウンする仕掛けで、Tjunction max はこれを目標にサーマルスロットリングするぞという値。

つまり基本的には CPU 側で防衛しており、サーマルスロットリング自体も「問題ない」とされている。クーラーの性能上限(=サーマルスロットリングが起こる状態)までCPUは電力を消費して発熱する設計になっている。

  1. トップ
  2. tech
  3. 13世代のIntelにPC更新

Widgets.exe 関係で msedgewebview2.exe がやたら VRAM (GPUメモリ) を消費している。全く使わない機能なのでアンインストールする。

winget uninstall "windows web experience pack"
  1. トップ
  2. tech
  3. Windows11 msedgewebview2.exe/Widgets.exe をアンインストール

Windows を再インストールして、

wsl --import-in-place Ubuntu D:\wsl\ubuntu\ext4.vhdx

みたいなことをしたら以上のようなエラーをいわれるようになってしまった……

ただ、管理者権限だと起動できる。該当する .vhdx ファイルのプロパティのセキュリティタブを見てみると変更権限などが一般ユーザになかったため追加したらうまくいった。

  1. トップ
  2. tech
  3. Error code: Wsl/Service/CreateInstance/MountVhd/E_ACCESSDENIED

Windows11 にしたところ Intel X520-DA1 な NICが認識しなかった。

ドライバを検索しても「ないよ」と言われる。天下の Intel だぞおかしいと検索すると無情にも Intel 公式に「解決方法X520 対応の次のドライバーリリースは バグ修正のみであり、新しい機能や OS のサポートがないため、Windows 11 では X520 用のドライバーはありません。」 とか言われる。解決方法じゃない……

同様に困っている人はいるようだ。このエントリではセットアップファイルからドライバを抜き出して、手動で認識させる方法でうまくいっている。 のでこれを試してみた。

Windows 10 向けドライバダウンロードページから Wired_driver_27.6_x64.zip をダウンロードして、展開し、さらに 7-zip で Wired_driver_27.6_x64.exe を展開するとドライバファイルがでてくる。

デバイスマネージャからNIC選択し、ドライバを検索→手動でディレクトリを検索→展開したディレクトリを指定。でうまくいった。

2011年のQ2に発売された製品らしいから10年は経過してるから仕方ないのかもしれないけどウーン……

  1. トップ
  2. tech
  3. Windows 11でのIntel X520-DA1 (SFP+)

regedit.exe で適当な場所 (HKEY_CURRENT_USER など) に新規キーを作る。ここでは OLD とする。OLD を選択した状態で「ファイル」→「インポート」して、ファイル種別に「レジストリハイブ」を選択すると NTUSER.dat を選択できる。

NTUSER.dat を選択する「OLD」以下を削除して置き換えるが良いか?という旨のダイアログが出るのでOKする。

これで読みこめるのでキーを探してなんとかする。

ただ以下のような問題があるのでお勧めできるかというと微妙……

この方法のやっかいなところ

Administrator アカウントでもアクセス不可能で削除もできず、アクセス許可も編集できないエントリができてしまう。どうやら SYSTEM アカウントでだけアクセスできるらしい。

sysinternals というツール集に含まれている psexec という実行ファイルを使うと SYSTEM アカウントで実行することができる。

.\PsExec64.exe -i -s c:\windows\regedit.exe

さらに SYSTEM 所有のレジストリエントリの子で TrustedInstaller が所有者になっているみたいなややこしいことなっている場合がある。この場合、所有者を SYSTEM にしつつ、SYSTEM にフルコントロールを与えると消せるようになる。とても面倒くさい。

親エントリで所有者を SYSTEM にすると (既にSYSTEMでも)「サブコンテナーとオブジェクトの所有者を置き換える」というチェックボックスがでる。これで一括でサブオブジェクトなどの所有権を置き換えできる。

  1. トップ
  2. tech
  3. 別PCのNTUSER.datから値をコピーしたいとき

オフィシャルのアダプタはかなり高い<ので https://www.thingiverse.com/thing:2551379 をプリントして USB シリアルを組合せた。

回路

使ったのは

Thingiverse の方法 (RX と GND に直接フォトトランジスタをつける) だと、FT234X ではうまくいかない。オシロで見た感じ立ちあがりが遅すぎたので、RX の内部抵抗が高いようだ。

なので普通に電源をとるようにした。FT234X は 5V トレラントなのでこれで問題ないはず。

読み出し

プロトコルは

あたりを参照すればわかる。

baudrate は 9600

  1. トップ
  2. tech
  3. 3DプリンタでLCRメータDE-5000 のUSBシリアル出力アダプタを作る

UTi260B はなぜか表示されている文字を消す機能がない。常に時計やバッテリー表示などを含めてコピーされる。これが邪魔なので消したい。

スナップショットとして撮影して SD カードに保存される画像には bmp (画面のハードコピー) と jpg (光学カメラの画像) がある。bmp のほうは実は単純な画面のハードコピーではなく、グレースケールの元データと若干のメタデータも入っている。

このデータを元に画像を再生成するツールが UNI-T-Thermal-Utilities に uniTThermalImage.py として含まれている。

基本的にこれを使えばいいのだが、HTML+JS で作ってあればマウスホバーでカーソル位置の温度の表示とかいろいろ融通がききそうでいいかなと思い、移植した。

https://cho45.stfuawsc.com/uni-t-thermal-utils/

元の python 版と同様の温度補正機能もつけてあるので、ホバー時の温度の精度も若干マシになっている。

カラーパレットと最大・最小温度のマークを表示する機能もつけてある。

  1. トップ
  2. tech
  3. サーマルカメラ UNI-T UTi260B の画像から文字を消す

サーマルカメラ UNI-T UTi260B を買ったが、近い距離だと結構ボヤっとしていて解像度が低い感じになる。そんなものなのかなーと思っていたが、Thingiverse で UTi260B にマクロレンズをつける例を見つけたので試してみた。

レンズ

UTi260B のスペック上、扱う波長は 8~14μm (遠赤外線)

通常の光学ガラスは赤外線を通さないのでサーマルカメラのレンズには適さない。

比較的安く入手性が良い CO2 レーザー (波長 10.6μm) 用のレンズである ZnSe レンズはだいたい 7~12μm あたりの透過性が高いらしいのでそこそこちょうどいい。

Aliexpress の WaveTopSign China PVD ZnSe Laser Focus Lens Dia.12 18 19 20mm FL38.1 50.8 63.5 76.2 101.6mm For Co2 Laser Engraving Machine というやつ。直径 20mm 焦点距離は 101.6mm で選んだ。約1500円程度。

小さいレンズとしては高いが、特殊用途のレンズとしてはかなり安い。

結果

近距離での撮影がかなり良くなった。

メリット・デメリット

メリット

  • 至近距離でより分解能が上がる

デメリット

  • 若干温度は低くでる (いくぶん透過性が下がるので)
  • レンズ中央以外の精度があやしい (光学レンズと同様、できるだけ大きいレンズを使うほうが安定する)
  1. トップ
  2. tech
  3. サーマルカメラの近距離分解能をレンズで改善する UNI-T UTi260B

100W だと 20V 5A になる。1m

室温25℃で90Wの表示が出てる場合、しばらくすると52℃ぐらいまで上がる。

手元のケーブルテスタだと、ケーブル全体としてはコネクタも含め180mΩ。P = I^2 R なので 5A 流れているとき 4.5W はケーブル全体 (ケーブルそのものの抵抗 + 電流検出部) で消費される。

電流検出部のシャント抵抗が 10mΩ だとすると 0.25W 程度が電流検出部で消費される。定格1Wで定格電力比率25%程度だとすると25℃程度の温度上昇はだいたいそんなもんかという気がする。

AWG 24 の銅線だと 84.2 mΩ/m なので、シャント抵抗で無駄になる電力はそこまで支配的ではない (12cm 程度に相当する)。

  1. トップ
  2. tech
  3. 電力表示付きの Type-C 充電ケーブル

パナソニック 洗濯機 NA-VX7200L の修理。買ったのが2013年5月2014年7月にメーカー修理(乾燥不良)2016年にヒートポンプユニットから水漏れときて、購入から9年経過して、給水弁が壊れた。

給水弁は洗濯機の蛇口に繋がっている部品のことで、ソレノイドで給水するかを決めている。

どう気付いたか

給水時にギュオ~~というなんか変な音がするようになった。しばらくして給水が遅すぎるということに気付いた。給水エラーはまだ出ていない状態。

蛇口を閉じ、給水ホースを外して給水フィルタを見てみたが特段汚れはなし。この状態で蛇口をあけてみてもこちらの水圧は問題なし。

給水中に洗剤ケースを外してみるとちょろちょろとしか給水されていないことを確認。

「パナソニック洗濯機 給水 遅い」などで検索したところ、同様の症状で給水弁の故障のケースがいくつかヒットしたため、給水弁と断定した。

交換

まず交換部品の手配。NA-VX7200Lの場合はAXW29A-2330が給水弁の型番らしい。通販で頼んで、送料含めて3300円。

検索するとDIYの交換手段としては2つの選択肢がある

  • 上と後ろの一番上の鋼板を外し、強引に交換する
    • 外す部品・ねじが少ない。かなり無理にやらないといけない
    • 後ろからアクセスする必要がある (洗濯機を動かす必要がある)
  • 上から順番に外していき、給水弁がついているパーツを取り出す
    • 外す部品・ねじが多い。ドアや基板のコネクタをすべて外さなくてはいけない
    • おそらくこちらが正攻法

うちの洗濯機は嵩上げされており独りで動かすのがとても難しいため、後ろを開くのが難しい。ということで上から順にパーツを外していくことにした。

手順

ところどころ配線が本体などに止めてあるが根本の爪を押しながら引きぬくととることができる。

ビスは外したらすぐ養生テープにくるんで止まっていた場所の近くに貼っておく。分解するときはめんどくさいが組み立てるときとても楽になる。

  • 上のパネル(プラスチック)を外す
    • 隠しビス2箇所、後ろ3箇所、前は爪で止まっているので後ろにひっぱりながらパネルをとる
  • コントロールパネルを外す
    • 天板にビス1つ。コネクタがあるので気をつける。コネクタを外す
  • ドアの化粧板を外す
      • ビス2つ。ただの化粧板
  • ドアを外す
    • ビス2つ。ビスをとっても落ちてきたりはしない。少し持ちあげて外す
  • 前面パネルをとる
    • ドア付近に化粧板を止めていたものも含めて5つ
    • 四隅に4箇所
  • 基板のカバー(鉄)をはずす
  • 基板内のコネクタを外す
    • 前に出ているケーブルのコネクタから外していった
    • スマフォで外すコネクタ必ず1回ずつ撮影しながらやっていく。戻すとき逆順に1枚ずつ見ればいいように。
    • 爪を押しながら慎重に外す
    • 基本的に間違えたコネクタには挿さらないはずだが、順番を間違えると配線がぎりぎりなので厳しい。
  • 基板が入っているボックスを固定するビスを外す
    • 奥側が配線に隠れておりやりにくい。
  • 基板が入っているボックスが分離されたので、前方に引き抜く
  • 給水栓がついてるパーツに触れるようになる
  • 風呂水が入ってくるパーツからのホースを2つ外す
  • 給水弁についているコネクタを3つ外す
      • 1つは下向きに外すので給水弁を持ちあげる必要がある
  • 給水栓がついてるパーツが外れるので前に引き抜く
  • 給水弁のビス2つはずして交換する。パッキンは流用

逆順で組み立てる。

給水弁

洗濯機に使われているのはパイロット式電磁弁というらしく、圧力差がある場合に使え、低コストで動かせるというものらしい。

Anker Eufy (ユーフィ) Smart Scale P2 Pro(体重体組成計)【アプリ対応 / Fitbit連携 / 体脂肪率 / BMI / 心拍数 / 筋肉量 / 基礎代謝量 / 水分量 / 体脂肪量 / 骨量 / 内臓脂肪 / タンパク質 / 骨格筋量 / 皮下脂肪 / 体内年齢 / ボディタイプ】 - Eufy (ユーフィ)

Eufy (ユーフィ)

4.0 / 5.0

OMRON の体重計を使ってたが最近めっきり体脂肪測定ができなくなり、何度も乗りなおして10回に1回測定できるみたいなことになっていた。かなりストレスなのでさっさと買い替えることに。もう OMRON のを買うことはないだろう……

Anker Eufy Smart Scale P2 Pro は Wi-Fi + Bluetooth 対応の体重計ではかなり安い (7000円ぐらい)

複数人の挙動

デバイスをセットアップしたあと、セットアップしたスマフォからデバイスを共有とすると他のアカウントと共有状態になる。ただ、Bluetooth と Wi-Fi 同期の挙動がややこしい。

Bluetooth と Wi-Fi の同期がどちらもあるが、優先順位的にはアプリを起動しているときは Bluetooth で接続して、接続しているアプリに優先的に同期される。Wi-Fi 同期はたぶん使われてない(気がする)

Bluetooth 接続に失敗した場合(アプリを起動していない場合)、Wi-Fi で同期して、デバイスを共有しているメンバー間で一番近い体重の人に配信されるようだ。±3kgの人物を同一人物として認識するらしいので体重が近い家族がいる場合めんどうかもしれない。幸いうちにはいないので問題ない。

ログイン画面のユーザ画像はディレクトリサービスエントリに保存されている。これはコマンドラインでは dscl / dsimport などで操作できる。

https://apple.stackexchange.com/questions/117530/setting-account-picture-jpegphoto-with-dscl-in-terminal/367667#367667

この gist を使うのがてっとり早い。

userpic.sh USERNAME path/to/jpg

なんでこれをしたいか

ポリシーによって環境設定の「ユーザとグループ」を封じらている場合、ユーザ画像を設定する方法がアカウントを作るタイミングしかない (と思う)。うっかり変な画像を指定するとログイン画面が毎回不愉快になる。

sudo 権限が必要なので、「ユーザとグループ」は封じられているが管理者権限はあるみたいな特殊な状況でしか有用ではない。

  1. トップ
  2. tech
  3. Mac でコマンドラインからユーザ画像を変更する


家庭用ミシンの押さえ(pressure foot)はいろいろ市販されているが、最大公約数的なものが多く「あとちょっと小さいのが欲しい」みたいな場合にめんどくさい。安い押えから削り出すという手もあるが、3Dプリンタで作るというのを試してみた。

モデル

例によって Fusion360 でモデリング。手元にあった適当な押えを採寸している。家庭用ミシンの押えはスナップオンでとりつける方法と、シャンクに直接固定する方法とがあるが、これは前者。

スナップオンの場合 1/16" (=1.5875mm) の軸が押さえ側にあり、それをつかませる形になる。横幅は約6mm。軸の太さはだいぶおおざっぱで、市販の押えも1.4~1.6ぐらいのようだ。今回は手元に 1.5mm のアルミ線があったため、これを利用した。アルミ線は柔らかいが、6mm 程度で押さえを取り付ける用途なら特に問題なかった。

軸の中心から針の中心までは 5.75mm 程度。この針穴は2mm程度あける。これで手元のミシンでは完全に中心に針落ちしてくれる。

  1. トップ
  2. tech
  3. 家庭用ミシンの押さえを3Dプリンタで作る



洗濯機。前も書いたけど学習データにないような洗濯機+女の子を描いてもらおうとすると著しく打率が低下する。洗濯機そのものが描かれにくいのもそうだけど人物のクオリティも下がる。

今日は NovelAI が話題だったが試してはいない。似たような waifu diffusion でピンとこないのは、アニメチックすぎてエモくない感じがするからかも。作例としてシーン描いてるパターンがあんまりないのでよくわからない。

色として rose red を指定すると、rose 単体が発生しておもしろい。壁紙とかにさりげなく rose 入ってたりすると結構可愛いくてよい

  1. トップ
  2. photoshopped
  3. Stable Diffusion 日記 #31
  1. トップ
  2. stablediffusion
  3. Stable Diffusion 日記 #31
  1. トップ
  2. photo
  3. Stable Diffusion 日記 #31