2024/5/3(金)

Github Actionsの勉強をした。今まで公式のチュートリアルを見ても何も分からなかったのだが、定義から読んだら普通に理解できた。今までの混乱は何だったんだ。

  • ワークフロー: 処理の単位。1個以上のジョブからなる。
  • ジョブ: 処理の単位。一連のシェルスクリプトまたはアクションからなる。
  • アクション: Github Actions用に作られたアプリケーション。
  • ランナー: 処理を実行するサーバー。1個のランナーが1個のジョブを実行する。
  • イベント: ワークフローを発火する何らかの出来事。

ワークフロー>ジョブ>アクション という階層構造を真っ先に説明してほしい。公式チュートリアルは説明の順がカス。でもイベントをまずワークフローに対応して説明したい気持ちも分かる。図がカスなのは擁護しない。どうやら実行状況の表示UIがあれということのようだが。

zolaを使ってgithub-pagesにデプロイすることなどに成功した。なんかに使いたい。


zolaでドキュメントを書くのに良い感じのテーマを探していたのだが、bookもEasyDocsもなんか違う。RustのThe bookとかはどういうツールを使ってるんだろうと思って調べてみたのだが、zolaではなくmdBookというやつだった。なかなか良さそうなのでこっちも調べてみようかな。

SSGとして有名なのにはVitePressとかいうのもあるらしいが、必要以上にリッチでカッコいいのはあまり好きではない。インターネットはもっと無骨でなければならない。

Vulkan SpecificationはそもそもMarkdownですらなくasciidocという記法をベースにしているようだった。


cpprefjpを読み進めた。「decltype(auto)」~「範囲 for ループの制限緩和」まで。

decltype(auto)

参照を推論させたいケースがあるというのは分かるが、decltype(auto)という書き方の理由が今一つ肚に落ちない。auto&で良いのでは?というかそれで実際動いているような。

と思って調べてみたらちゃんと解説があった。左辺値参照か右辺値参照のどちらになるかも推論させたいというときに便利なようだ。なるほど、auto&では左辺値参照にしかならない。納得。

https://cpplover.blogspot.com/2014/09/c14-decltypeauto.html

constexprの制限緩和

これは素晴らしい、と思ったが非const参照受け取れるのはどうなんだろうという気持ちになった。constexprは関数型的な副作用の無いやっていき方の基礎となるものとして漠然と認知していたが、本当に単純に処理をコンパイル時に寄せるものとして認識するべきかもしれない。

[[deprecated]]属性

存在は知っていたが、改めて仕様を読むとメッセージが指定できることを知らなかった。確かに非推奨になるからには置換先が存在するはずなのだから、それを明示できるのは重要だ。

非推奨だった古い例外仕様を削除

開放/閉鎖原則という概念を知った。ちょっと戸惑ったが大体理解した。基底クラスを継承・拡張して何か作りたいというとき、拡張のために基底クラスをいじるようなことになるのはよろしくない。で、基底クラスの側で「あるメソッドが出せる例外」を縛ったりすると拡張性がカスになってしまう。なのでnoexceptがどうかだけを指定できるものとする。

noexceptを縛るのはええんか?という感じは若干するが、そもそも基底クラスでのメソッド定義というもの自体がある程度継承先の形を縛ることでインターフェースの役割を果たすものだろうからまあこのくらいの程度の縛りがちょうどいいんだろう。

非推奨だったregisterキーワードを削除

C++11で非推奨になったけど残されてはいたのか。これがC++17で完全に削除されましたという話らしい。

非推奨だった bool 型に対するインクリメント演算子を削除

boolにインクリメントとか気持ち悪すぎて見てられん。当然の処置。下の方にある「推測に基づく」削除の理由が面白かった。バグは怖いねえ。

std::exchangeというライブラリを初めて知った。地味に便利そうなのに知らなかった。

非型テンプレートパラメータのauto宣言

これは中々テンプレート関連のコードの書きやすさに響きそうな機能だが、いかんせんそんな激しい使い方をしないものだからそこまでありがたみを感じられない。

集成体初期化の拡張

そんな継承いちいちしねえっすよ。

範囲 for ループの制限緩和

どうしてそういうことをする必要があるのかと思ったが、なるほど、番兵は通常のイテレータと違って前後を参照できる必要はなく比較さえできればよい。そこで積極的に型を違わせる動機も出てくるわけだ。

Categories: