どうしても一部のキーバインドをなんとかしたい。こういうのは本当によく使う一部だけでもリマップするととても快適になる。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"
        },
  1. トップ
  2. tech
  3. Windows PowerToys の Keyboard Manager を使って macOS からの移行を支援する

こまごま 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 とかがバックアップされない。

  1. トップ
  2. tech
  3. メインPCのWindows 移行

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キャッシュが良いと思っている。

  1. トップ
  2. tech
  3. QNAP TS-473A で ZFS + 10G イーサな NAS を導入

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

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

  1. トップ
  2. tech
  3. WSL2 で pbcopy/pbpaste

Windows PowerToys の Keyboard Manager を使って macOS 風のキーバインドを導入するというのをやっているけど、これをすると WSL2 が快適になる代わりに PowerShell が不便になるという問題があった。具体的には、Up/Down キーで ^P ^N が入力されてしまうので履歴が辿れないなど。

これは実は簡単に解決可能で、

Set-PSReadLineOption -EditMode Emacs

として PowerShell 上のキーバインドを emacs 風にするだけでよい。これで Ctrl-P / Ctrl-N などが適切にマッピングされるようになる。

毎回実行するのは面倒なので、echo $PROFILE で出てくるファイルパスに以下のように書いておくと良い。

echo "Running $PROFILE"
Set-PSReadLineOption -EditMode Emacs

$PROFILE は自分の環境だと C:\Users\[username]\OneDrive\Documents\PowerShell\Microsoft.PowerShell_profile.ps1 だった。

  1. トップ
  2. tech
  3. PowerToys で macOS 風キーバインドを導入したときに生じる PowerShell の不便の解消

なかなかやる気が湧かなくてやってなかったが GPSDO のメトリクスをしばらくとってみることにした。そのへんに転がっていた NanoPI NEO2 と GPSDO を繋ぎ、NanoPI NEO2 上で GPSDO の出力をとりこんで Prometheus exporter を立ちあげるようにした。

構成のメモ

自宅内にはメインに使っている Raspberry Pi があり、そこに LAN 内の Prometheus exporter からメトリクスを収集する Prometheus サーバが立っている。QNAP や RTX1200 のメトリクスもこの Raspberry Pi が収集している。

ただ、これだと外部から見れずに面倒なので、VPS 上にも Prometheus サーバが立っている。VPS 上の Prometheus は自宅内の Raspberry Pi から federate によってメトリクスを収集している。

Grafana も VPS 上に設置しており、VPS 上の Prometheus からすべてのメトリクスを表示している。

  1. トップ
  2. tech
  3. GPSDO のメトリクス

カフェインが入っていないOTCイブプロフェン

OTCのイブプロフェンにはだいたいコーヒー一杯分ぐらいのカフェインが入っていて「高熱のときにおとなく寝てる」みたいな用途に使いにくい。「頭痛薬」としてはカフェインが入ってるほうがいいかもしれないけど、ただ解熱鎮痛に使うには入ってないのがほしい。

【指定第2類医薬品】ナロンメディカル 16錠 - ナロン

ナロン

5.0 / 5.0

「ナロンメディカル」は明示的にカフェインフリーで比較的安い。100mg 24錠で650円ぐらい。ヨドバシにもある。(54円/200mg)

【指定第2類医薬品】ノーシンエフ200 16カプセル - アラクス

アラクス

4.0 / 5.0


「ノーシンエフ200」アマゾンで取り扱いがない (マーケットプレース)。ヨドバシにはある。200mg 16個入りで1000円ぐらい。(62円/200mg)

他にもあると思うけど

OTCは似たような名前(ブランド)でも成分が全然違う場合があるのでややこしい。バファリン系とかだと末尾のアルファベットで全然中身が違う。「バファリンルナJ」は「アセトアミノフェン」でカロナールの代わりに使えると思うけど「バファリンルナi」は「イブプロフェン・アセトアミノフェン・無水カフェイン」の複合でややこしい。

メモ:半減期

Wikipedia から

66EC(S) Ble 35g を買ってから自宅では結構ずっとこれを使っていてそこそこ満足している。これも含めて HHKB 風配列のキーボードを10年以上使っていて慣れているのだけど、不満がないわけではなく、それを解消するために自作キーボードしてみたりもしてきた。

ということで一旦普通のキーボードが欲しくなった。テンキーはさすがに必要ないので、

  • テンキーレス (87キー)
  • 英語配列 (Enter キーが変な形じゃない)
  • キーボード側で A の左隣のキーを Ctrl にできること
  • 35g 程度の軽いキータッチのもの
    • 一度軽いのに慣れると HHKB (45g) がやたら重く感じるようになってしまって戻れない……
  • 静電容量式

という条件で「普通のキーボード」を探した。静電容量式の時点で選択肢はほぼなくて、メーカーとしては国産であれば Realforce、中国産であれば NiZ の2択になる。

条件にあうモデルは Realforce だと R2TLS-US3-BK あたり。だいたい3万円弱

R2TLS-US3-BK(ブラック) REALFORCE TKL Sテンキーレス 87キー 英語配列 - 東プレ(Topre Corporation)

東プレ(Topre Corporation)

3.0 / 5.0

NiZ だと表題にある通り NiZ X87EC(S) (BTなしモデル) $165.00 で2万円弱

値段的には NiZ が少し安い。信頼性はさすがに Realforce にある。NiZ は Cherry MX 互換のキートップを使え、キーボード側ですべてのキーをリマップできる。

結論からいうと表題の通り NiZ を選んだが、決め手というのは正直あまりない。Realforce はさすがに普通に使えるだろうし不満もないだろうけど、あんまり面白くないかと思ったぐらい。

公式サイトから購入した。謎の輸送経路だったけど国内は佐川委託みたいで普通に受け取れた。

カスタマイズ

とりあえず A の左隣を Ctrl に。NiZ はどのモデルも「Officeモード」と「Customize モード」の切り替えがあり、Office モードだとキーコンフィグが効かないので気をつける。

今までずっと Mac だった関係で(仕事ではまだ Mac だし)、キーボード配列を Mac 風に入れかえ (WinキーとAltキーの入れ替え) ている。

なお、キー数が普通に多いので、特別キーコンフィグしなくてもキーボード組込みで Ctrl/Caps 入れ替え機能と、Win/Mac モード切り替え機能があるのであまり困らない。

  1. トップ
  2. tech
  3. NiZ X87EC(S) 35g (2021) を買ってみた