平常運転

アニソンが好き

過去記事とかは記事一覧で見れます

GitHub Discussions の更新を Slack に通知する (with GitHub Actions)

タイトルでほぼ全て。

f:id:astj:20211115184855p:plain
動いている様子

github.com

2021/11/15 現在の Slack の GitHub 連携では GitHub Discussions の更新を Slack に通知することが出来ない。そのうちできるようになるだろうとは思うものの、それまでの間のつなぎとして GitHub Actions による通知を作った。
Webhook ベースの物と比べると GitHub Actions の workflow 起動のオーバーヘッドがある分若干(十数秒程度?)通知が遅れてしまうことなどもあり少しイケてない節はあるが、そのうち公式のツールでできるようになるまでのつなぎとしては許容可能な品質だろうと思っている。
GitHub からの Webhook を変換して Slack に投げ直す HTTP エンドポイントを作る、とかだと格好いいけれど、つなぎとして使う前提であれば外部に何かプロビジョニングせずに GitHub と Slack の間で完結することにもいくらか価値があるのではないか、と思う。多分。

中身の実装は非常に素朴で、丁寧な手書きで JSON ペイロードを組み立てている。複数行入ることがある texttoJSONエスケープしていることがかわいらしいポイント。

          PAYLOAD: "{\"attachments\":[{\"mrkdwn_in\":[\"text\"],\"fallback\":\"New Comment on ${{ github.event.discussion.html_url}}\",\"author_name\":\"${{ github.event.comment.user.login }}\",\"author_link\":\"${{ github.event.comment.user.html_url }}\",\"author_icon\":\"${{ github.event.comment.user.avatar_url }}\",\"title\":\"Comment on #${{github.event.discussion.number}} ${{ github.event.discussion.title}}\",\"title_link\":\"${{ github.event.comment.html_url}}\",\"text\":${{ toJSON(github.event.comment.body) }},\"footer\":\"${{ github.event.repository.full_name}}\",\"ts\":${{ steps.timestamp_transform.outputs.comment_created_at}}}]}"

組織内のプライベートリポジトリの通知を Slack 通知するだけ、くらいのつもりで作ったのであまり人間の悪意は想定していない。何かあったらこっそり教えてください。

劇場版マクロスΔ絶対LIVE!!!!!! を見てきた

macross.jp

見てきたよ。

他にネタバレのない感想として書けるのは、マクロスΔが好きな人はうっかりネタバレ踏む前に全員見てくれ!!!!というくらい。

以下はネタバレでやるので見てない人は離脱して下さいね。

f:id:astj:20211009190942j:plain

続きを読む

Raspberry Pi 400 を買った

www.switch-science.com

キーボード一体型のラズパイが絶対かわいいじゃん……と思って買った。

  • かわいい
  • 使い道はない
    • ラズパイと聞くと IoT 的な?使い方のイメージがあるが、キーボード一体型なのでそうもいかない
  • キーボードっぽい見た目だけどバッテリーがない(=電源の Type-C を抜いたらおわり)というのが認知と一致しない
  • 本体の他に意外と必要な物が色々ある
    • micro SD (Nintendo Switch に刺さってた 128GB を転用して、代わりに Switch に 256GB のを新調した)
    • micro HDMI => HDMI のケーブル (Android 文化圏だとみんな持ってたりするんです?林檎の国では縁がなくて…)
  • マウスはあった方が楽だったけど持ち合わせがなかった

などなどの感想。かわいいのは間違いない。

以下はとりあえずセットアップのメモとして残しておくが本当に動いたヤッターでしかない。面白い使い方のアイデアは募集しています。

セットアップ

OS

microSD にイメージを焼くのは公式の Imager を使う。 Mac 版もあって安心。あんまりよくわかってないので Raspbian のオススメされたデフォルトのやつを入れた。

www.raspberrypi.org

pi@raspberrypi:~ $ uname -a
Linux raspberrypi 5.10.63-v7l+ #1457 SMP Tue Sep 28 11:26:14 BST 2021 armv7l GNU/Linux
pi@raspberrypi:~ $ cat /etc/debian_version
10.10

最初はディスプレイその1に繋いだらなかなか起動シーケンスが進まなかったんだけどディスプレイその2につなぎ替えたら進んだ気がする。これは単なる勘違い(初回起動時間は意外とかかるっぽい?のを理解してなかっただけ)かも。

SSH と画面

マウスがないととにかく気が狂いそうになるのと、 A の左に Caps Lock があると2秒に1回入力ミスをするので、なるべく早い目に SSH は有効にしておいて他のマシンから繋ぐと、慣れたターミナルエミュレータから接続できるしブラウザで調べ物しながら触れるので安心。

画面解像度の設定はウィザードで適当に弄ってたらめちゃくちゃになったので渋々マニュアルを見ながら /boot/config.txt を設定した。この辺を見つつやる:

www.raspberrypi.org

ちなみに SSH で外から入れるようにしておくと、最悪 HDMI の設定を変なのにして画面が映らなくなっても SSH で入ってなんとかできる、という観点でも安心感があってよかった。

VNC

マウスがない問題の対処と、モニタの出力切り換えが面倒ということで、 GUIVNCMac から接続して済ませることにする。折角のキーボードつきラズパイの価値を全く生かせていないのは一旦諦める。 macOS の画面共有アプリからはデフォルトのままでは接続できない。インターネットを見ると VNC Server を入れ換えて解決している人も見受けられるが、これまたインターネットを見たところ VNC Server の設定を変えたら繋げるようなのでそうしておく。参考文献を見つつ:

qiita.com

www.laddy.info

最終的にはこういう感じにしておく。マウスが使える人は GUI 上で設定を変えたらよいと思う……

pi@raspberrypi:~ $ cat /etc/vnc/config.d/common.custom
Authentication=VncAuth
Encryption=PreferOff

pi@raspberrypi:~ $ sudo vncpasswd -service
Setting "Password" VNC parameter for Service Mode server
Password:
Verify:
Successfully set "Password" VNC parameter in /root/.vnc/config.d/vncserver-x11
Please note users of third party VNC Viewer projects will be able to connect by
entering the first 8 characters of this password only.
pi@raspberrypi:~ $ sudo systemctl restart vncserver-x11-serviced
pi@raspberrypi:~ $ sudo systemctl status vncserver-x11-serviced

ここまでやると準備完了。 Mac 側で open vnc://(IP address) とかをやると画面共有で接続できる。ちなみに mDNS があるのでホスト名(典型的には raspberrypi.local)でも接続できるはずなんだけど、手元だと resolve できなくなってる事が多々あったので、ルーターで IP アドレスを固定してそれで繋ぐようにしてしまった。技術の敗北。

おまけ: mackerel-agent

mackerel-agent は手癖で入れておく。公式の apt リポジトリでは入らないけど、 GitHub の Releases にはラズパイで使える deb があるのでそれを apt で入れると完成。

pi@raspberrypi:~ $ curl -fsSLO https://github.com/mackerelio/mackerel-agent/releases/download/v0.72.2/mackerel-agent_0.72.2-1.systemd_armhf.deb
pi@raspberrypi:~ $ sudo apt install ./mackerel-agent_0.72.2-1.systemd_armhf.deb
pi@raspberrypi:~ $ sudo mackerel-agent init -apikey="xxx"
pi@raspberrypi:~ $ sudo systemctl start mackerel-agent

f:id:astj:20211005013322p:plain

HTMLFormElement.submit は validation を無視するし submit イベントを発火しない

日記です。タイトルでほぼすべてがオチてしまった。

const form = document.querySelector('form#ultra-form');
form.submit();

みたいな感じで、 <form>JavaScript から submit することができるんだけど、この HTMLFormElement.submit は HTML Living Standard ではこう定義されている:

Submits the form, bypassing interactive constraint validation and without firing a submit event.

https://html.spec.whatwg.org/multipage/forms.html#htmlformelement

つまり、例えば下のような HTML form の場合、 submit ボタンをクリックした場合は (1) username が入力されていないと validation が通らないので submit できない し、 (2) onsubmit が false を返せば submit は中止される のだけど、HTMLFormElement.submit はそれらをすべてバイパスして問答無用で実際に form を送信してしまう。

<form id="ultra-form" onsubmit="..." action="...">
  <input name="username" required />
  <input type="submit" />
</form>

若干直感に反する気もするけどそういう感じらしい。ので、 submit ボタンを押すのと同等のアクションとしてはこれを使ってはいけない。

じゃあこういう時に何を使うといいかというと HTMLFormElement.requestSubmit というのが数年前に提案されている。こいつは submit ボタンをクリックするのと同様のバリデーションが走るし、 onsubmit によってキャンセルされることもある、というより自然な仕草が実現される。

Requests to submit the form. Unlike submit(), this method includes interactive constraint validation and firing a submit event, either of which can cancel submission.

The submitter argument can be used to point to a specific submit button, whose formaction, formenctype, formmethod, formnovalidate, and formtarget attributes can impact submission. Additionally, the submitter will be included when constructing the entry list for submission; normally, buttons are excluded.

https://html.spec.whatwg.org/multipage/forms.html#htmlformelement

やったじゃん、と思うわけですが、

caniuse.com

Safari ではまだ使えません。 WebKit レベルでは実装されていて、最新の Safari Technology Preview では「開発」メニューから選べる実験的機能扱いになっている。

f:id:astj:20210716165550p:plain

こちらからは以上です。WebKit の話は id:cockscomb さんに教えてもらいました。

機動戦士ガンダム 閃光のハサウェイを見てきた

公開日に見てきたよ。後から振り返る時のために念のために言及しておくと三部作の第一作ですね。

率直なところ「よくできてる」と思ったし、ずっと昔から小説やゲームで目にしてきた閃光のハサウェイの光景が高品質な映像になって見られる単純な喜びは思った以上に大きかった。
UCやNTから続く作品として現代的な装いに改められたことによる新しい質感も、思っていたより遙かに良い肌触りだった。その装いに対する総括は三部作の最後まで持ち越すとして、今作は素直に楽しめる作品だったと思う。

ちなみに冒頭は YouTube で公開されてる。とりあえず様子を見たい人にはおすすめ。ぼくは新鮮な気持ちで映画を見るために見ませんでしたが……

www.youtube.com

あっ、例によってネタバレっぽい話の前には引き返すポイントを用意します。ポイントの前ではなるべく映画の具体的な中身は触れないようにしてふんわりした感想を書きます。

続きを読む

nosh を食べて暮らしてる

もうインターネットっぽい人の間では一通り話されきってる感じがするけど、nosh は冷凍の食事宅配サービスみたいなやつ。

nosh.jp

これを今年の2月から頼んでて4ヶ月くらいになるので食事の様子をご紹介する。

あ、念のために言及しておくと、 nosh にはいわゆる紹介キャンペーン的なのはあって、ページの末尾に僕からの紹介扱いになるリンクは載せる。そのリンクから登録したら登録者(あなたです!)とぼくの両方が割引クーポンを手にすることになるし、そういうのが嫌ならそれ以外のリンクから見てください。

続きを読む