雑記帳

PowerShellのCompare-Object(diff)の罠

PowerShellのCompare-Object(diff)の罠

PowerShellでdiff相当のCompare-Objectを使って、差分だけ処理するスクリプトを書こうとしたら、PowerShellの仕様による罠にハマった。

Windows 10の自動音量調整(フェードイン)を無効化する

Windows 10の自動音量調整(フェードイン)を無効化する

会社のノートPCをHDMIで外部モニタに映像と音声を出力していると、動画を再生開始しても最初の数秒が無音になってしまった。

動画ファイルや動画プレイヤー、モニタ、PCを変えて試したが、いずれも同じ現象が発生したため、Windowsに原因があると推定し、調べてみるとビンゴ。

しかし見つかった対処法では解決せず、ステレオミキサーを使う方法で解決した。

UbuntuでMathematicaノートブックを関連付ける

UbuntuでMathematicaノートブックを関連付ける

Ubuntuのアップデート時にMathematicaノートブックをNautilusから起動できなくなってしまって少し面倒だったので、再度設定を行った。

ついでに、すでにMathematicaが起動している時に2つ目のノートブックをNautilusから開いた時、デフォルトでは別プロセスのMathematicaが起動してしまってライセンスが要求されてしまう点にも対処した。

Argo Tunnelで複数のトンネルをサービスとして起動

Argo Tunnelで複数のトンネルをサービスとして起動

CloudflareのArgo Tunnelはサービスとして起動することができるが、現時点では設定ファイルが決め打ちになっているため、そのままでは1本のトンネルしか起動できない。

そこで、ユニットファイルを少し変更して1台のマシン上で複数のトンネルを起動できるようにした。

ガルーンからGoogleカレンダーに同期する(GAS使用)

ガルーンからGoogleカレンダーに同期する(GAS使用)

Cybozuのガルーン(Garoon)はよくできたソフトウェアなのだが、他のサービスとの連携、という点では使いにくかった。

以前からSOAP APIはあったものの、繰り返し予定が難関で、実際の日にちを都度計算しなければならず、同期ツールの作成を断念していた。

だがREST APIが登場し、繰り返し予定が1件ずつ返されるようになってとても処理しやすくなったので、GASで動作するガルーンからGoogleカレンダーへの一方向同期スクリプトを作成した。

Garmin Connectでこれまでのすべてのアクティビティを一括ダウンロードする

Garmin Connectでこれまでのすべてのアクティビティを一括ダウンロードする

Garmin Connectがサイバー攻撃を受けてダウンした。

ランサムウェアにやられたらしい、ということで最悪の場合、これまでの記録が消えてしまう可能性がある。

幸いにもとりあえず復旧したようなので、これまでの全アクティビティをローカルにバックアップした。

GASのgoogle.script.runをPromise化する

GASのgoogle.script.runをPromise化する

GASでクライアント側のJavaScriptから、サーバ側のJavaScriptを呼び出す時、google.script.runを使用する。

ただこれは非同期処理でありながらPromiseを返さず、独自にwithSuccessHandlerwithFailureHandlerにコールバックを設定する必要があるので、ちょっと面倒。

ということで、Promise化するコードを作ってみた(V8エンジン限定)。