雑記帳

VBAで要件(ポリシー)に沿ったランダムパスワードを生成

VBAで要件(ポリシー)に沿ったランダムパスワードを生成

VBAでのランダムパスワード生成なんて出尽くされていると思ったけれど、意外とスマートな実装がなかったので自分で書いてみた。

単純に使用可能な文字種全体からランダムに1文字ずつ選択して連結するだけでは、「英小文字、英大文字、数字を必ず1文字以上含む」などのポリシーに沿っていない文字列が生成されてしまう可能性があるが、 1回の処理で必ずポリシーに沿った文字列を生成する関数を作成した。

LXDホストのIPアドレスを変更する

LXDホストのIPアドレスを変更する

LXD(lxc)でネットワークアクセスを有効にしていて、特定のIPアドレスに限っている場合、ホストのIPアドレスを変更した際にlxcコマンドがエラーとなる。

設定を行うlxc config edit自体が動作しないので対処法に困ったが、何とか見つけることが出来た。

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がサイバー攻撃を受けてダウンした。

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

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