マルチモニタでセカンダリをON/OFFする方法。

せっかく大画面テレビ(といっても37インチですが)があるのだから、PCの動画をテレビ側に映したい、というときに、いくつか方法があります。

ひとつはChromeCast。
ChromeCastに対応した再生アプリ(VLC Media PlayerとかPowerDVDとか)を使えば、無線LAN経由で動画をキャストすることができます。

もうひとつは物理的に繋いでしまうこと。
HDMIケーブル(もしくはテレビ側で対応していればDPケーブルなど)でPCとテレビを繋げ、セカンダリディスプレイとして認識させます。するとWindows側では画面の複製 / 拡張 / PC側のみ / テレビ側のみの4つの状態を選択することができるようになります。
ただしこのとき、動画を見ないのに常時セカンダリを接続したままにしておくと、困ることがあります。
  1. ディスプレイが拡張されていると、マウスがセカンダリ側に行ってしまうと見えなくなる。
  2. オーディオがPCに接続されたスピーカではなくテレビ側のスピーカから再生される。
  3. セカンダリが電源オフなのに、セカンダリ側で使用したアプリはそちら側で起動されていまう。
これを防ぐには、デスクトップで右クリック→「ディスプレイ設定」→「マルチディスプレイ」のところでいちいち変えてやらなければいけません。ひと手間ふた手間かかるのでけっこう面倒です。

実は %windir%\System32\DisplaySwitch.exe というコマンドがあり、これを使えば画面右側にディスプレイの選択ができるようなバーを出してくれます。

デスクトップなどにこのコマンドへのショートカットを置いておき、切り替えたいときに起動すれば簡単に切り替えできるようになります。

また、オプション引数を指定することでワンクリックで切り替えることもできます。

拡張の場合には "/extend" オプションを、PC側のみの場合には "/internal" オプションを指定してやります。
また、"/clone" ではPC側の複製をテレビ側にも表示し、"/external" ではPC側をオフしてテレビ側のみにします。
/extendしたときにテレビ側のオーディオデバイスを選択しておくと、/internal したときにはPC側、/extend したときにはテレビ側のオーディオが選択されるようになるようです。

この動作をコンテキストメニューに割り当てる記事がありました。
WindowsスマートチューニングのWin 7/8/8.1編: マルチディスプレイをコンテキストメニューから切り替えるです。

この記事の通りにレジストリファイルを作成し、レジストリに格納することでコンテキストメニュー(デスクトップでの右クリック)で呼び出すことができるようになります。
一点、記事中ではUNICODEで保存となっていますが、うちの環境ではシフトJISで保存しておかないと文字化けしました。

元記事が削除されてしまう場合も考慮して、こちらにコードを引用させてもらいます。以下のコードをテキストエディタなどにコピーして multidisplay.reg などとファイル名をつけて保存すればOKです。

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\DesktopBackground\Shell\DisplayChange]
"ExtendedSubCommandsKey"="!DisplayChange"
"MUIVerb"="マルチディスプレイ(&D)"
"Position"="Bottom"
"Icon"="%SystemRoot%\\System32\\display.dll,-1"

[HKEY_CLASSES_ROOT\!DisplayChange\Shell\01]
"MUIVerb"="PC画面のみ"

[HKEY_CLASSES_ROOT\!DisplayChange\Shell\01\command]
@="DisplaySwitch.exe /internal"

[HKEY_CLASSES_ROOT\!DisplayChange\Shell\02]
"MUIVerb"="複製"

[HKEY_CLASSES_ROOT\!DisplayChange\Shell\02\command]
@="DisplaySwitch.exe /clone"

[HKEY_CLASSES_ROOT\!DisplayChange\Shell\03]
"MUIVerb"="拡張"

[HKEY_CLASSES_ROOT\!DisplayChange\Shell\03\command]
@="DisplaySwitch.exe /extend"

[HKEY_CLASSES_ROOT\!DisplayChange\Shell\04]
"MUIVerb"="セカンドスクリーンのみ"

[HKEY_CLASSES_ROOT\!DisplayChange\Shell\04\command]
@="DisplaySwitch.exe /external"

4K放送とHDMIケーブル。

アンテナケーブル。のところで、4Kに対応するには屋外はS5CFB、屋内はS4CFB以上がいいよという話を書いたのですが、そういえばHDMIケーブルはどうなんだっけ、と思ったのでまとめ。

まず、現行2Kで使用されているHDMIケーブルは大抵がHDMI 1.4もしくはHDMI 1.4a規格に対応したものだと思います。

規格としては、大雑把に以下のようになるかと思います。参考: HDMI各バージョンの機能詳細

バージョン 変更点
1.3 1440p対応
帯域 10.2Gbps対応
1.4 ARC対応の追加
HDMI Etherチャンネル追加
4K解像度(3840x2160/30p)対応
2.0 2160p60Hz対応
帯域18.0Gbps対応
2.1 4320p60Hz対応
帯域48.0Gbps対応

映像および音声信号はTMDSという差動信号を使って伝送していて、基本的にはジッタ(+/-の信号線長の違いによる信号のズレ)や損失、インピーダンスの不整合(反射による信号の汚染)が少ないほどいい、ということになります。

上記によれば、HDMI 1.4規格に対応したケーブルであれば4K/30pは出力できます。Wikipediaの記述によれば、1.4規格では「すべての信号線にシールド」となっていますが、これは各信号のツイストペアをそれぞれシールドする、という意味になります。そのため、外部ノイズおよび信号ペア間のクロストークが抑えられるようになっています。
一般には、ケーブルが太いものほどシールドなどがしっかりしていると考えてよいと思いますが、細いケーブルでも机の脚で踏み潰したり、直角に曲げるなどのことがなければ基本的には伝送はできると考えてもよいかと思います。

新規で購入する場合には、HDMIケーブルの認証プログラムをパスしたものを購入するのがよいでしょう。HDMIケーブルのパッケージには、認証を取得していることを示すロゴが表示されています。
規格としては "HIGH SPEED" "HIGH SPEED with ETHERNET" と、"STANDARD" "STANDARD with ETHERNET" の4種類があると考えてよいかと思います。この他に "STANDARD AUTOMOTIVE" というのがありますが、あまり目にすることはないでしょう。
このうち、STANDARDはもう市場ではほとんど見かけなくなっていますので、市販されているのはほぼハイスピードケーブルということになります。あとは使用する機器がHDMI Ethernet対応になっているかと、8Kまでの伝送が正常にできるかという点になります。HDMIでは2.0の認証を受けたケーブルは "Premium" というロゴを表示してもよいことになっているので、プレミアムケーブルを購入しておけばまず間違いはありません。が、一方でハイスピードケーブルでも4K/30pは伝送できるので、ハイスピードケーブルでも十分、ということは言えると思います。

MPC-BEでmadVRの設定。

ノートPCでMP4動画を再生するのに、VLCメディアプレーヤーは使いやすいし何も設定しなくてもインストールしただけで使えるので便利ですが、画質・再生品質的には今一つの印象があります。印象なので、ここから先は単なる自己満足の世界で、定量的な評価などはありません。動画を見ていて、再生時に「ん?」と思うような引っかかりがなくなればOKというレベルでの自己満足追求です。

ちょっと否定的な出だしになりましたが、そんな感じで MPC-BE + madVR です。

MPC-BEは、もともとはWindows Media PlayerとそっくりなUIのMPC(Media Player Classic)からの派生です。WMP6.4が結構人気があったのにWindows MEのときにWMP7で外観が大きく変わってしまったため、前のほうが好きだった人たちがオープンソースで開発していました。その後、MPC-HC(Home Cinema)が派生し、さらにそこからMPC-BE(Black Edition)へと派生しています。一方でMPC-HCのほうもGitHubで開発が再開しているようです。

MPC-BEはChromeCast(以下CC)へのキャストはできないので、大画面で見たい向きにはそこのところはちょっとカユイのですが、そもそもVLCなどでのCCへのキャストはMP4などのメディアファイルをCCへ流し込んでいるだけで、デコード処理自体はCC側で行うため、コーデック自体はCCで使っているSoCのライブラリによるはずです。なので、PCのディスプレイで高画質動画を観たい、もしくはPCからHDMIやDPなどで大画面テレビで再生したい、という場合の方法になります。
ただし、PCの構成、特にCPUやGPUの処理能力が不足するとけっこう悲惨なことになりますので要注意。

参考にしたのはこちら。"LOL, I has a web server"というサーバなんでしょうか。けっこういろいろと興味深いページがあるんですが、こちらから3.1 DXVA2 Focusedをベースにしています。

MPC-BEのインストールは他のサイトなどを参照していただいて、madVRの設定から始めます。

まずMPC-BEからレンダラとしてmadVRを設定します。
ここのビデオレンダラーの設定をmadVRにします。
するとタスクトレイにmadVRアイコンが出てくるので、そこを右クリックして "Edit madVR settings..." を選択し、設定画面を出します。

最初にデバイスの設定を行います。
液晶モニタなので2番めの "Digital Monitor / TV" を選択して "Apply" ボタンを押します。

次にプロセッシングのところです。
  • deinterlacing のタブはデフォルトのまま。
  • artifact のタブは、
    • "reduce banding artifacts" をチェックして両方とも "high"
    • "reduce compression artifacts" はチェック
  • "image enhancements" と "zoom control" はそのまま。

次はスケーリングアルゴリズム。
ここで、NGUというのは "Next Generation Upscaling" のことで、作者 madshi氏独自のものです。バージョンアップごとに速度面などでも改良されてきていますが、かなり重いために非力なCPUではコマ落ちが発生することもあります。
  • "chroma upscaling" は "NGU" → "Anti-Alias, very high quality" あるいは "Jinc" を好みで。参考 madVR chroma upscaling comparisons
  • "image downscaling" は "DXVA2" または "Jinc" を好みで。
  • "image upscaling" は "NGU Anti-Alias"→ luma doubling "very high" または "DXVA2" または "Jinc" を好みで。
  • "upscaling refinement" はそのまま。

次はレンダリング。
  • "general settings" はそのまま。
  • "windowed mode" はそのまま。
  • "exclusive mode" はそのまま。
  • "stereo 3d" はそのまま。
  • "smooth motion" は "enable smooth motion frame rate conversion" にチェック。
  • "dithering" は "Error Diffusion - option 2" にチェック。
  • "screenshots" はそのまま。
  • "trade quality for performance" はそのまま。

最後はユーザインタフェースですが、ここはそのままで。

PowerShell for Linux。

バッチファイルをPowerShellスクリプトに置き換えるにはどうすればいいのかと、ちょっと調べていたら、Wikipediaのほうで最新バージョンは6.1.2ですよと書いてありました。

PowerShellはGitHubでリリースされていますが、よく見るとLinux用のRPMやDEBパッケージもあるじゃないですか。

MicrosoftのInstalling PowerShell Core on Linuxには、どのディストロ/バージョンに対応しているのかが記載されています。そこには、家で使おうとしているManjaro LinuxのベースとなっているArchLinuxもサポートされているようです。Experimentalの但し書き付きですが。

ところで、Stack Overflowの2018年のプログラミング言語の人気ランキングでは、人気トップ3がRust、Kotlin、Pythonの順で、25位までにはPowerShellは入ってないようです。一方、嫌われている言語としてはVisual Basic 6が1位、Cobolが2位などで、なんとかつて一世を風靡したPerlが8位に入っています。

これを眺めているととても興味深いですが、PowerShellはどこにもないですね……。

話を戻して、PowerShell 6.1.2はMSIインストーラがあるようなので、インストールは簡単です。

ただ、興味は多少あるにしてもPythonでいいかな、と思う自分がいるのも確かですし、一応メモだけにとどめておきます。

gmailのニュースメールを一括で削除する方法。

注意: この記事は未完成です。一括削除する方法はまだ見つけられていません。


いろんなニュースメールがありますが、数が多いとどんどん未読が溜まっていくし、ニュースである以上古いものは不要です。読んだら削除、というスタイルで運用していても読まずに溜まっていくものもたくさんあり、それがGoogleの自分用ディスクスペースを圧迫しています。

だいぶ前ならば、「あとで、何かあったときにふと検索する用途」などという目的で保存しておいてもよかったのですが、最近ではそれこそググれば情報の取得はラクですし、何より古いニュースはリンクに飛んでも時効(expire)にされたり有料だったりと、あまり役に立ちません。なによりググったほうが検索エンジンが賢いので、手元にニュースメールをアーカイブしておく必要がなくなってきています。

だったらもういっそのことサクッとまとめて削除したい。なんとかできないだろうかと調べてみました。

まずGoogleのGmailヘルプから、Gmail で使用できる検索演算子

これで削除したいメールの条件を設定して、「検索」することはできます。が、それをゴミ箱に移動する「アクション」を記述する方法は記されていません。SQLみたいにdeleteコマンドとかはないのかしら。

いくつか方法を考えてみます。

1. 検索したメールに一括で「ゴミ箱」ラベルを付ける

もしできれば、これができれば一番まっとうなやり方かなと思います。おそらく「他のラベルを外す」かつ「ゴミ箱ラベルをつける」ことができればいいのですが、ラベルを付ける/はずすコマンドがわかりません。

2. IMAPSで接続して削除する - メーラー編

プリミティブな方法ですが、もしかしたらこれが一番手っ取り早いかもしれません。IMAPSをサポートしているメーラーを利用して一括削除するというものですが、メーラー側で「検索」→「マーク」→「削除」などができることが必要です。
自分が使っているBecky!2は、単純な検索はできても検索結果をマークはできなさそうです。

その他で自由がききそうなのは UNIX系の環境になりますが、mutt(IMAPとSSLを有効にする)やEmacsベースのMewWanderlustなどはあたってみるのもいいかもしれません。

3. IMAPSで接続して削除する - Python編

Python 3.6では、imaplibがIMAPSにも対応しています。マークして削除とかしなくても、「検索」→「削除」をループさせればいいんだと思いますが、もしかしたら時間がかかるかもしれません。

下に行くほど難易度が高くなってますね…。

win32kbase.sys。

どうも年が明けてから、メインPCの調子が今ひとつな感じです。
実は先程もいきなりBSOD(Blue Screen Of Death)して、「自動的に再起動します」と出ているのに再起動せず、メッセージにはwin32kbase.sysのSYSTEM_SERVICE_EXCEPTIONというものが表示されていました。

マイクロソフトのフォーラムを覗いてみると、BSOD System_Service_Exception win32kbase.sysというスレッドがありました。それに対しての返答をみると、

1. SFCを走らせてみる
コマンドプロンプトを管理者モードで起動し、sfc /scannow して結果をみる。
もしなにかあれば、
2. DISMを走らせてみる
コマンドプロンプトを管理者モードで起動し、次のそれぞれのコマンドを実行する。
DISM.exe /Online /Cleanup-image /Scanhealth
DISM.exe /Online /Cleanup-image /Restorehealth

あるいはここを読んで参考にする

ただ、このスレッドのリプライを見てみるとあまりうまい具合に解決したというものはないようです。

もう少ししたら時間をとって、メインPCをクリーンインストールし直そうかと思っています。もともとがWindows7からのアップグレードですし。

2K放送はどうなるのか。

アンテナケーブル。のところで4K/8Kのためには準備しなくちゃねということを書いたのですが、じゃあ2Kで十分な人はどうすればいいですか、という疑問がふと湧いてきたのでメモ。

総務省のよくある質問 1章 4K8Kについてに、以下のようにありました。
従来の衛星放送の継続について

問1-7: 新4K8K衛星放送の開始により、現在のBS及び東経110度CSのハイビジョン(2K)放送は終わるのですか?

答1-7: 新4K8K衛星放送が始まっても、現在の衛星放送(2K等)は続きます。現在の放送は、引き続き、現在お使いになっているテレビ、チューナー、アンテナで見ることができます。

期限とかは書いていなくて、2K放送は続きます、だそうです。

SWDなら3線でいいとはいうものの。

 安価で優秀なデバッグプローブはないかしら、と探したら、 Raspberry Pi Debug Probe というのがあったんですが、これは3線がにゅるんと出てるだけです。 もちろんSWDなら3線を繋げばいいのではありますが、汎用的に考えるなら5x2のリボンケーブルコネクタが欲し...