閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

Ankerのスピーカーフォンを買った

ネックスピーカーの性能は文句なく、快適に使えていたのですがいちいち充電するのが面倒になってしまい、スピーカーフォンというのに手を出してみました。

ネックスピーカーもバッテリーは1日持つし、1日の使用時間は1時間程度なので数日充電忘れても問題はないのですけどね。起動してからBluetoothで繋ぐのも1秒くらいで早いんですが、急に話しかけられたときにこの1秒がめんどくなる、というのはある(かといって1日中付けっぱなしにすると毎日充電することになるし)。

USBケーブルでPCと繋いで、繋いでいる間起動しつつ充電するので、始業時に繋いでおけばいつでも通話可能。仕事用PCは有線で認識しないのでなぜかBluetooth接続していますが、通話時の音質も良く満足しています。問題は向こうがどう聞こえているかがわからないところですかねぇ。何も言われていないのでまぁいいか…。

いまの仕事PCはマイクついてるみたいだし、ここまできたらもうこれでいいんじゃないか、という気もしてしまいましたが、性能はこちらの方がマシなんであろうと思うことにします。

ついでにモバイルバッテリー機能も付いているようなので、停電したらこれにスマホ繋いで生きていくつもり。

Process Explorerが更新されていた

forest.watch.impress.co.jp

ということで入れてみたんですが、アイコンも変わっていてタスクバーのどこにいるのか迷子になってしまいました。なんか爽やかになりましたね(?)。

UIも色々細かく変わっていて、いつのバージョンから追加されたのか分かりませんがプロセス名での絞り込みができるようになっていてめっちゃ便利です。

Process Explorerのスクリーンショット(ダークテーマ)

PowerToysみたいにSysinternal Suitesもソース公開されると、色々勉強になりそうだけどなー。ググるGitHubアカウントはあって、Linux版のツールはOSSでやっているっぽい。

Sysinternals · GitHub

Windows版もほしいなあ(贅沢)。

Vanara (C#でWindows APIを呼ぶときに使えるラッパーライブラリ)

C#Windows APIを呼びたい、という時に使えるパッケージとしてWindowsAPICodePackがあるのですが、結構前から更新されておらず.NET 6プロジェクトで使いたい時に面倒でした。

ふとFilesというソフトウェアのソースを読んでいたらVanaraというライブラリを使用していて、見るとWindowsAPICodePackの代替として使えそうなライブラリでした。NuGetで入れられるし、.NET 6もサポートしていて良い感じです。

P/Invokeとかいちいち書くの面倒なので一通り揃っていると楽できて良いですね。さらにめんどくさいShell APIのCOMインターフェイスとかもあって有り難いです。

本当はこんなの公式で用意してくれれば良いのですけどね…。

PowerShellの履歴をpecoでインクリメンタルサーチしたい

PSReadLineをインストールする

PowerShellの履歴は再起動すると消えてしまうので、PSReadLineを入れます。 PSReadLine について - PowerShell | Microsoft Docs

Install-Module -Name PSReadLine -AllowClobber -Force

Get-Historyだと起動中のコマンドしか覚えてくれないのですが、PSReadLineを入れるとコマンド履歴がファイルに保存されて再起動しても以前の履歴が再現されるようになります。 ちなみに履歴は (Get-PSReadLineOption).HistorySavePath の先にあるテキストファイルに書き込まれます。

peco.exeをPATHの通っているフォルダに配置する

peco/peco: Simplistic interactive filtering tool peco.exeは単一バイナリで動くので環境変数PATHの通っているところに置いておけばどこからでも使えるようになります。 (今ならwingetとか使う方がいいのかな?)

Ctrl+Rの動きを上書きする

PSReadLineを入れるとCtrl+RがReverseSearchHistoryコマンドに割り当てられ、履歴の補完ができるようになるのですがちょっと使いにくい。

profile.ps1を作って:

New-Item $PROFILE
# デフォルトでは以下のファイルが作成される
# C:\Users\user\Documents\PowerShell\Microsoft.PowerShell_profile.ps1

このファイルに以下のようなコマンドを追加してCtrl+Rを上書きし、履歴をpecoに渡して検索できるようにしてみました。

Set-PSReadLineKeyHandler -Chord Ctrl+r -ScriptBlock {
    $command = Get-Content (Get-PSReadLineOption).HistorySavePath | peco --select-1 --on-cancel error
    if (-not $command) {
        return
    }
    [Microsoft.PowerShell.PSConsoleReadLine]::InvokePrompt()
    [Microsoft.PowerShell.PSConsoleReadLine]::Insert($command)
}

ただPowerShellでpeco叩くとそれまでターミナルに表示されていた内容が消えちゃうんですよね。これなんとかできないかなぁ。

参考

新型コロナワクチン4回目

接種してきました。集団接種会場は予約が取れなかったのでクリニックの個別接種へ。個別接種というから1人ずつ打っていくものかと思いましたが100人以上人がいて結構規模が大きかったです。モデルナとファイザーの両方に対応していて、自分はモデルナでしたが自分1人だけで後は全員ファイザーのようでした。どれだけ不人気なの……。列が分かれていたので並んでいる人を横目にサクサク進めて、マクドナルドのモバイルオーダーでレジに並んでいる人をスルーした時の気分。

接種後の副反応は軽い腕の痛みと発熱で、これまでと同じ感じ。解熱薬を忘れてしまって1日38度超の熱でうんうん唸っていましたが1日で下がり、これまでより短く済みました。薬飲んでいないからなのか慣れとか加齢なのかは不明。

通院日に発熱すると面倒なので、副反応が2日出る場合金曜日しか選択肢がないのですが、1日で済むならいつ打ってもよさそう。今の感じだと5回目も普通に出てきそうですが、年2-3回打つのが当たり前となると副反応はもうちょっと軽くなってほしいですね。できればバフの持続期間自体もっと長いといいのですけど。まあインフルエンザも季節性だから年1で済んでいるけど通年だとこんなものなんですかね。

HORIのSwitch用コントローラを買ってみた

Switchのゲームはこれまでずっと携帯モードで遊んでいたけど、ゼノブレイド3はテレビモードで遊ぼうかなと思って、Proコンを買っておこうとしたけど売り切れで買えそうになかったので、HORIのコントローラにしてみました。こちらの方が安いしお試しにもいいかな、と。

USBケーブルでSwitchドックと繋ぐ方式ですが、これPCでも使えるのかな?と最近買ったゲーミングノートに繋いだら普通に認識して使えたので、ゼノブレイドまでの繋ぎにWindows版のドラゴンクエストXを遊んでいます。ノートでもこのくらいのゲームは普通に遊べるみたいなので、Streamとかで軽めのPCゲームはもっと手を出してもいいかもなー。

肝心のコントローラの操作感も普通に遊べるもので問題無いし、あとは週末を待つだけ。楽しみだなぁ。

pipのプログレスバー (rich.progress)

ソースを見たらrichというのを使っているみたいですね。tqdmしか知らなかったけど、色々ありますねぇ。

使い方はほとんど同じでrangeとかリストをラップした関数を呼ぶだけで良いみたい。

import time
from rich.progress import track

for n in track(range(100), description="Processing..."):
    time.sleep(0.05)