2021年 07月 07日

WSL2 で pbcopy/pbpaste

pbcopy は簡単で、clip.exe を呼べばいいだけ。

pbpaste は一発でできる Windows コマンドがなぜかないので PowerShell の Get-Clipboard を利用する。

pbcopy

#!/bin/sh
exec /mnt/c/Windows/System32/clip.exe

pbpaste

#!/bin/sh
exec /mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe Get-Clipboard

これらをパスが通るところに置いておけば不便なし (シェルのエイリアスにするより実行ファイルにしたほうが他プログラムから呼ぶ場合など便利)

2021年 07月 05日

メインPCのWindows 移行

こまごま Windows Tips みたいのを書いてるけどメインPCを macOS から Windows に移す決心をしていろいろやってる。

macOS は本物の UNIX だけあってシステムそのもののトラブルシューティングとかがしやすいし、付属のユーティリティもよくできてて気に入ってる。けどどうも最近の macOS ハード・ソフトの不安定さと、Notarize 必須化みたいなコンピュータを不自由にしていく流れに耐え切れなくなってきた。

可能なら Linux Desktop にしたいけど、Lightroom Classic を筆頭にいろんなソフト・ハードの対応を考えて、Windows + WSL2 (Ubuntu) に移行することにした。

最低限の環境

  • IME: CorvusSKK (ほぼ設定なしで快適)
  • Google Chrome
  • PowerToys

実際、このぐらいで普段インタ~ネットする上では全く困らない。ほとんどブラウザ上でなんかしてることが多いので違和感ない。

開発環境

  • WSL2 Ubuntu を入れる

WSL 内からホスト側のファイルシステムも自動で見えるようになっているので、ダウンロードしたファイルをコマンドラインから処理したい、みたいなのは案外違和感なくできる。

Windows Terminal もよくでてきて今のところは不満ない。ときどき PowerShell で実行したいコマンドもあるのでどちらも使えるのは快適。

Windows Terminal 上で WSL2 の Ubuntu を開き、tmux を起動しておけば、作業環境としてはほぼ macOS で常に Terminal.app 開いておくみたいなのと似たようなものになる。

バックアップ

Time Machine の代替にはならないのだけど、Windows 標準で「ファイルの履歴」という機能があり、これでNAS上にバックアップをとるようにしてみてる。ただ、あんまり信用してない。AppData とかはデフォルトでバックアップされないので、(AppData 以下にある) WSL2 の vhdx とかがバックアップされない。

QNAP TS-473A で ZFS + 10G イーサな NAS を導入

NAS を導入した。導入したのはQNAP TS-473A

「旧モデル」QNAP(キューナップ) TS-473A AMD Ryzen クアッドコア搭載 2つの2.5GbE対応ポートと、NASの機能を拡張できる2つのPCIeスロットを備えたSMB向け4ベイNAS - QNAP(キューナップ)

QNAP(キューナップ)

5.0 / 5.0

動機

macOS → Windows 移行にともない、データディスクのファイルシステムをいろいろ考えた結果、中立にしたいという気持ちになった(特に恨みはないけど NTFS をデータディスクにしたくない)

構成

TS-473A 本体以外に

  • 4*6TB HDD (データ)
  • 2*500GB SSD (キャッシュ)
  • 16GB ECC メモリ

を買った。

QNAP の OS にはおもに QTS と QuTS hero の2系統がある。QTS はコンシューマ向け、QuTS hero ハイスペック向けという感じ。機種によって対応OSが違う。

TS-473A は OS としては QuTS hero に対応しており、なんとなくそちらを使うことにした。QuTS hero は ZFS ベースになっている (QTS は ext4)。

メモリはファイルサーバなのでECCメモリにしてみることにした。デフォルトの 8GB でもメモリが足りているように見えたが、どうやら搭載メモリ量によってARC(ファイルキャッシュ)量が変わるようで、16GB にすると8GB常に使用済みになる。メモリを増やすと管理画面の動作も若干はやくなるように感じる。

デフォルトのメモリ量である8GBだとオンライン重複排除 (ZFS dedup) は利用できず、16GB だと利用できるみたいだが、dedup は罠も多い雰囲気を感じたので、一旦まったく利用しない形にしている。

RAID6 vs RAID10

結論からいうと RAID10 (RAID1+0) にした。RAID10 はパフォーマンスが比較的良く、耐障害性では条件付きで2台故障まで可

RAID6 (2台までの障害対応) と比べると

  • RAID10 のほうがパフォーマンスが良い
    • パリティ計算をしないため
    • 通常のパフォーマンスもそうだがリビルドが早い
  • RAID10 のほうが耐障害性が低い
    • RAID1のディスクセット内で2台同時故障すると全て失われる
    • 別々の RAID1 に配置されていれば2台故障しても大丈夫
  • RAID10 のほうがディスク利用効率が低い (50%)

ネットワーク

当面、メインPCとNASの間だけ10Gにできればいいので、ネットワークカード2つとダイレクトアタッチケーブルを購入した。SFP+ シングルポートなカードがあんまり見当らないので Aliexpress で買った。若干あやしいが今のところ普通に動いている。ハブを導入しなければ1万円ちょっとぐらいで10Gにはできるので案外良いなと思う。

Intel X520-DA2 は QNAP の互換リストに入っているので、X520-DA1 もいけるだろうと踏んで購入してとりつけてみたが大丈夫だった。特にドライバインストールなども必要なく認識して使えている。メインマシン側も同様。注意点として PCIe v2.0 8レーン なので、PCIe レイヤーでの実効速度は1レーンあたり 0.5GB/sになる。最低でも x2 以上 (普通はx4)の PCIe スロットにつけないと頭打ちになる。スロットが足りなかったため、使ってなかった M2 SSD を1つ取り外した。

IPv6 で接続する場合、特に IPv4 アドレスは設定せず直結するだけが良さそう。IPv6 アドレスを UNC パスにするときは変な変換が必要なのでググって設定する。IPv6 は自動でつくリンクローカルアドレスを指定すれば特に設定はいらない。

IPv4 でも接続する場合、既存のネットワークとかぶらないように IP アドレスとサブネットマスクを設定する必要がある。どちらも試してみたがパフォーマンス的には IPv4 も IPv6 も変わらないので設定がいらないほうが楽そう。

計測ごとにバラつきが多いがこのぐらいの速度になった。実際は SMB のプロトコルオーバーヘッドが大きいので、綺麗に速度が出ることは少なそう。

備考:速度一覧

速度一覧

  • 10GBASE-T は 1.25GB/s
  • SATA 3.0 は 0.6GB/s
  • PCI Express 2.0 * 2 で 1GB/s
  • PCI Express 3.0 * 2 で 1.969GB/s
  • NVMe SSD は read 3.2G/s write 1.2G/s など ref
  • HDD はシーケンシャルで R/W 0.1GB/s 程度 (RAID10 の seq Read で 0.5GB/s 程度)

実際のところはネットワーク速度である 1.25GB/s か、HDD を採用するなら 0.1GB/s~0.5GB/sで律速される。キャッシュにヒットしてれば相応にSSDの速度まで上がる。

QNAP で機種を選択する場合、実行速度一覧があるのでこれを参考にするとよさそう。オールフラッシュで一番パフォーマンスがでる状態で測定されているので、スペックの上限を知ることができる。QNAP の実効速度

現実的にはまだフルフラッシュストレージはコスパ的に厳しいので HDD + SSDキャッシュが良いと思っている。

2021年 07月 02日

Windows PowerToys の Keyboard Manager を使って macOS からの移行を支援する

どうしても一部のキーバインドをなんとかしたい。こういうのは本当によく使う一部だけでもリマップするととても快適になる。Win+ナントカはほぼノーリスクで置き換えられる。

  • Win+Tab → Alt+Tab (「ウィンドウ一覧」→「アプリケーション切り替え」)
  • Win+A → Ctrl+A (「アクションセンターを開く」→「全選択」)
  • Win+C → Ctrl+C (「Cortona を開く」→「コピー」)
  • Win+N → Ctrl+N (「なし?」→「新規ウィンドウ」)
  • Win+S → Ctrl+S (「検索開始」→「保存」)

ユーザー権限のままだと昇格したアプリのウィンドウで変な挙動になってしまうので、設定から「常に管理者として実行」を有効にするしかない。

Ctrl-ナントカ を置き換えるか?

たとえば以下のようなことをしたいが、これをやってしまうと Windows Terminal で本来のキーを入力することができなくなってしまう。PowerToys は特定のアプリだけ除外することができない。

  • Ctrl+A → Home (「全選択」→「行頭に」)
  • Ctrl+E → End (「?」→「行末に」)
  • Ctrl+N → Down (「新規ウィンドウ」→「下矢印」)
  • Ctrl+P → Up (「プリント」→「上矢印」)

とりあえずこれらは諦めてる。

これらも PowerToys でリマップしつつ、Windows Terminal 側で以下のような設定をして再度マップしなおしてなんとかしてみている。

        {
            "command":  { "action": "sendInput", "input": "\u0008" },
            "keys": "backspace"
        },
        {
            "command":  { "action": "sendInput", "input": "\u0010" },
            "keys": "up"
        },
        {
            "command":  { "action": "sendInput", "input": "\u000e" },
            "keys": "down"
        },
        {
            "command":  { "action": "sendInput", "input": "\u0001" },
            "keys": "home"
        },
        {
            "command":  { "action": "sendInput", "input": "\u0005" },
            "keys": "end"
        },
2021年 06月 28日

Windows Terminal で Ctrl-V を殺すと Win+V も動かなくなる

https://github.com/microsoft/terminal/issues/322

Windows Terminal の setting.json から Ctrl-V によるペーストを外すと (Ctrl-V は Windows Terminal 標準で入力することができないが、これをすると入力可能になる)、Win+V による履歴から貼り付け機能も使えなくなる。

どうやら Win+V による履歴機能を実行すると、内部的には「選択した文字列をコピー」「Ctrl-V をアプリケーションに送信」としているらしく、困った挙動。

良い対処方法はない… 諦めて右クリックでペーストするか Ctrl-Shift-V に慣れるか、Ubuntu 側のキーバインドから地道に Ctrl-V を潰すしかない。

2021年 06月 26日

WSL2 の .vhdx はどこ?

dir "$env:LOCALAPPDATA\Packages\*UbuntuonWindows*\LocalState\*.vhdx"

でだいたい探せるっぽい。UbuntuonWindows の部分は入れたディストリビューションによって違う。

なお任意の場所に移動する場合、wsl --import を使うとできる

https://github.com/MicrosoftDocs/WSL/issues/412

移動してしまったあとどこかわからなくなったら?

レジストリエントリに書いてあるので、ここを読むと良いっぽい。

Get-ItemProperty -Path Registry::HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss\*

Lightroom 環境の変更 (macOS → Windows10)

元写真ファイルはNASへ。カタログは NAS などに置けないので iSCSI とかも考えたが、一旦ローカルへ置く、みたいな方針。

写真ファイルはまるっと移動。カタログは .lrcat だけ必要なので、これだけを Windows 環境へコピー。

Windows で Lightroom Classic を起動して、該当カタログを開く。当然パスが変わっているのですべて「見つからないファイル」扱いになる。左の「フォルダー」ペインから、ルートになっているフォルダを右クリックして見つからないフォルダの検索を実行する。これで移動先の NAS を指定すれば問題なくすべてひもづくはず。


ただ、なぜか起動のたびに「/ への書き込みができない」という旨のエラーが表示されて、挙動がおかしい (具体的には全て紐付きができているのに見つからないファイルのコレクションからも消えてくれない」。しかたないので以下のような手順でカタログ自体を作りなおした。

  1. カタログの新規作成
  2. カタログから読み込む (なぜかめちゃめちゃ時間がかかる)

これでエラーは消えてくれた。

2021年 03月 26日

Mojave で Android Emulator が起動しない

emulator: Android emulator version 30.5.3.0 (build_id 7196367) (CL:N/A)                                                                          
dyld: Library not loaded: /System/Library/Frameworks/IOUSBHost.framework/Versions/A/IOUSBHost                                                    
  Referenced from: /Users/cho45/Library/Android/sdk/emulator/qemu/darwin-x86_64/qemu-system-x86_64                                               
  Reason: image not found         

IOUSBHost.framework は Catalina 以降に導入されたものらしく Mojave にはない。

Stack Overflow のこのコメントが参考になる。https://stackoverflow.com/a/66768691

手順はこれで、 https://issuetracker.google.com/issues/183218284#comment3

API 30 で動かすには https://dl.google.com/android/repository/emulator-darwin-6855416.zip を使う。

2021年 03月 06日

GNSS アンテナの設置

安定して GPS 信号を受けたいなあとう漠然とした考えからTOPGNSS の GN-GGB0710 というのを買ってみた。いわゆる2波対応アンテナではあるけど、手元には1波対応の受信機しかない。

設置

アマチュア無線用のアンテナを取り付けている基台に相乗りする形で設置した。

これ系の穴は測量向けのポールと同じネジピッチ (5/8 x11 UNCネジ) を採用しているらしい。アルミニウムの測量用のポールの15cmぐらいをねじこみ、これを固定している。

ケーブル

エアコンの貫通穴に同軸ケーブル (5D-FB) を通している。エアコン穴部分は室内とベランダを繋ぐ最小限の長さの SMA 延長ケーブルにしている。

アンテナの出力は TNC メス。ここに TNC オス・SMAメスケーブルでエアコン穴のケーブルに繋ぎ、エアコン穴ケーブルから室内でさらに SMA を延長している。

受信してスカイビューをプロット

前につくったGPSDOで受信させつつ、出力される NMEA メッセージをパースしてみる。

前回やったときは室内かつ車載用と思われる安価な GPS アンテナだったので段違いにゲインが高い。

グラフの見方

上下左右が方角。右まわりに上から北・東・南・西

中心からの距離が仰角。中心が真上(90°)で、円周上が水平線(0°)

SNR によって色がついている。

北極・南極の上空は衛星の軌道がない。北半球に住んでいる場合、このプロットのように北極上空にあたる部分に空白ができる。

前回のもの(参考)

2021年 02月 25日

安価なテスラメータ(磁束密度計) TD8620 を買ってみた

磁束密度 (テスラまたはガウス) を計測したくなったので探してみると8000円弱ぐらいで買えるものがあったので買ってみた。5級品 (5%ランク) のもので、スペックは

  • レンジ: 200mT 2000mT
  • 分解能: 10μT
  • 精度
    • 0〜1000mT ±2%
    • 1000mT〜2400mT ±5%

磁石・電磁石の磁束密度を見るには十分と思われる。

使いかた

  • プローブ(ホールセンサ)を本体に接続する
  • ON/OFF キーで電源を入れる
  • プローブのキャップをとる
  • 可能なら磁力がないところ(磁性シールドされたところ)で Null キーを押してゼロセットする
    • 地磁気は東京付近だと 46000nT つまり 46μT なので 200mT レンジでは下一桁の表示に影響する
      • プローブを回転させると S0.00〜N5.00ぐらいまでの動きがあるオフセットが乗ってるかも?

プローブの向きはたぶん「T」が書いてあるほうが表で、表から裏方向への磁力線に対して正 (N) の表示をするらしい。磁力線は N から出て S に入る。つまり、プローブの裏 (距離が書いてある面) を見ながら磁石のある面に対してプローブの表をあてたとき、表示される極性が N なら、あててる磁石の面は N 極になる。

赤い線が N 極を示していて、このようにプローブをあてると表示も N となる。

ちょっと遊んでみる

磁石の種類

直方体形状のものをいくつか買ってみたので測ってみる。この形状の場合、磁束密度は面の端が大きくなり、中心で最低になる。

異方性フェライト 30×10×5 N40 (二六製作所)

https://www.26magnet.co.jp/webshop/cart.php?FORM_mode=view_goods_detail&FORM_goods_id=FK082

公称110mT 実測最大 115.26mT

実測最大はマックスホールドして測ってる。

ネオジム 30×10×5 N40 (二六製作所)

https://www.26magnet.co.jp/webshop/cart.php?FORM_mode=view_goods_detail&FORM_goods_id=NK137

公称380mT 実測最大 378.0mT

二六製作所のネオジム磁石は極性がわかるようになっている。赤い帯がついてて、これがついてるほうがN。はじめて利用してみたが、上のフェライト含め小さい磁石4つなのにしっかりした厳重な梱包で送ってきてくれてすごい。

ネオジム 40x10x4mm 自称N52 (Aliexpress)

実測最大 175.46mT

厚さが上記のものから1mm薄いとはいえ、N52 とは思えない。二六製作所の N40 のほうが強い。

磁力回路

機械工作で使われるマグネットベースには磁力回路によるON/OFF機能がある。このON/OFFによって外部に出てくる磁束密度がどの程度変化するかみてみる。

磁石を重ねた場合

磁石は重ねると磁束密度が上昇する。100円均一で売っている小さいネオジム磁石を重ねて計測してグラフ化してみた

見ての通り比例するわけではなく、ある程度で頭打ちする。

ref