Essays

ガルーンから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エンジン限定)。

ウェブサイトの差分を検知してメール通知するシェルスクリプト

ウェブサイトの差分を検知してメール通知するシェルスクリプト

2020年は数多くのブルベに参加することになったが、各BRMでウェブサイトの更新を監視するのは辛い。

無料のウェブサービスもあるが、登録件数が不足したり、どこが変更されたのか分からなかったりしたので、 変更を検知したら差分箇所をメールで送信するシェルスクリプトを書いてみた。

将棋倶楽部24をUbuntu + dockerで動かす

将棋倶楽部24をUbuntu + dockerで動かす

将棋倶楽部24は強者が集まるネット将棋として有名だが、残念なことにJava製である。

UbuntuをはじめLinuxではブラウザでJavaプラグインが動作しないようになっているので、ウェブ版は動かない。

アプリ版ももうかなり古くなったJava 8(しかもOpenJDKではなくOracle)を要求するので、そのために古いJavaを今の環境に入れたくない。

なのでdockerでコンテナにして動くようにしてみた。

Ubuntu Server 18.04 + SoftEther VPN + AdGuard Homeで広告ブロック機能付きVPNを構築する

Ubuntu Server 18.04 + SoftEther VPN + AdGuard Homeで広告ブロック機能付きVPNを構築する

どんなWi-Fiネットワークにいるときも広告をブロックしたいので、自前でAdGuard Home(DNSサーバ)とSoftEther VPN Serverを構築した。

しかし、Ubuntuではデフォルトでsystemd-resolvedがDNSサーバとして53/udpをListenしているので、自分で別のDNSコンテンツサーバを立ち上げる際にはこのStub Serverを止める必要がある。

さらにサーバ再起動後、VPNクライアントからのDNSリクエストが来た時、きちんとAdGuard Home DNSサーバに転送してくれないので、追加の設定が必要だった。