Plan 9とGo言語のブログ

主にPlan 9やGo言語の日々気づいたことを書きます。

2024-01-01から1年間の記事一覧

GitHub ActionsでC言語のコードをクロスコンパイルする

GitHub ActionsではARM64ランナーも公開されつつありますが、ここでは gcc を使ったクロスコンパイルを説明します。この記事ではホスト*1のアーキテクチャを x86_64、ターゲット*2のアーキテクチャを arm64 としていますが、他のターゲットでも同様の手順と…

Goで関数呼び出しを繋げてパイプライン演算子を再現する

Go

最近、Goで関数呼び出しを無限に繋げる書き方を気に入っています。文字で書いても伝わらないと思うので実例を挙げると、例えばこういう書き方。 repeat(yield)("しか", 1)("のこ", 3)("こし", 1)("たん", 2) どうやって実現しているのかというと、自身を参照…

Plan 9とInfernoにおけるtar(1)の変化

小ネタです。以下の記事を読んでいて、 tar(1) はなぜオプション引数にハイフンが不要なのか? 続・tar(1) はなぜオプション引数にハイフンが不要なのか?―tarとkey argumentsの起源を更に辿る なぜ不要なのかは元記事を読んでもらうといいのだけど、ここで…

Goでモンキーパッチするライブラリを作った

Go

Goで単体テストを実装する場合、動的な言語のように「テスト実行中に外部への依存を置き換える」といったことはできません。代わりに、 外部への依存を引数で渡す 外部への依存をインターフェイスで渡す のように、テスト対象をテスト可能な実装に変更してお…

Go製バイナリを配布するためのGitHubワークフロー

前置き 以前、BuildInfoからバージョンを取得する方法を紹介しました。 blog.lufia.org go installで正規の公開されたバージョンをインストールした場合は、以下の出力においてmodの行が示すように、sum.golang.orgでチェックサム等が検証されてバイナリのメ…

Steamクライアントが起動しなくなっていた

2024年2月ごろにSteamクライアントを更新してから、以下のログで停止して起動しなくなっていました。 $ flatpak run com.valvesoftware.Steam ... Steam Runtime Launch Service: starting steam-runtime-launcher-service Steam Runtime Launch Service: st…

Titan Security Keyの新しいバージョンがPasskeysに対応していた

2FA

Titan Security Keyがパスキーに対応していたようですが、Google Storeの製品ページを見ても、それがパスキー対応したバージョンのTitan Security Keyなのか分からなくて混乱しました*1。ストア上では全部同じ名前でバージョン表記も無いし、国内販売が遅れ…