Plan 9とGo言語のブログ

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

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

Goのエラーハンドリングを集約するライブラリを作った + Goが管理するスタック周りの挙動について

Go

お試しで、Goのエラーハンドリングを省略するための try というライブラリを作っているので紹介します(最後にちょっとした告知があります)。 github.com これを使うと、よくある if err != nil を次のように記述できます。 // HandleとCheckは必ず同じスコー…

GitHubでサプライチェーン攻撃を防ぐ設定

ここ数ヶ月でサプライチェーン攻撃に関連していくつかベストプラクティスが出ていたので、GitHubのリポジトリに適用しておいたほうがいいものをまとめた。 被害を受けないために Dependabotにcooldownを設定する 過去のサプライチェーン攻撃では、ほとんどは…

Plan 9でTailscaleネットワークに参加する

Plan 9にはパスワード等シークレットを一元管理するための認証エージェントとしてfactotum(4)が存在しています。factotum はデータを永続化しませんし、そのメモリ領域はカーネルによって保護された状態にあって、デバッガは当然アタッチできないしプロセス…

Plan 9の9k(64bit)カーネルでGoを最初からビルドする

はじめに この記事は趣味の記録みたいなものです 他OSでPlan 9用にクロスコンパイルする方が圧倒的に早いので普通はそれがおすすめです ブートストラップ可能な下限バージョン GoはもともとCで実装されていましたが、Go 1.5以降はセルフホストされています。…

9legacy/9front/plan9portのrcシェルで`delim{cmd}構文が利用可能になりました

タイトル通りなんですが、主なPlan 9派生の rc シェルで `delim{cmd} 構文が使えるようになりました。この構文は9atomで最初に実装されたのですが、用途としては一時的に $ifs を置き換えたい場合に利用できます。 # 例です newline=' ' a=`$newline{cat fil…

systemdユニットの依存関係と実行順序を理解する: Wants=, Requires=, Requisite=, PartOf=, BindsTo=, Upholds=の違い

systemdには、依存関係を記述するためのディレクティブとして Wants=, Requires=, BindsTo= などがあり、順序を記述するために Before= と After= が用意されています。systemd.unit(5)に説明は書かれていますが、具体的にどう動くのか分からなかったので、…

Goで気に入っているテストの書き方と関数をモックするjest.fnのようなライブラリを作った話

Go

以前からずっとある方法だけど、関数の内部で xxxInternal という形で実装を分けて、単体テストでは xxxInternal を使ってテストする書き方を気に入っています。どういうことかといえば、例えばKinesisにPutする以下のようなメソッドがあったとき、 type Wri…

明日から松山でRuby Kaigi 2025が開催されるので地元の好きな食べ物紹介する

Ruby Kaigi 2025が開催されるようです。 rubykaigi.org 自分自身は過去に社内ツールとしてRedmineやGitlabを運用したくらいしかRubyとの関わりはありませんが、せっかく松山で開催される*1ので他県の人にもおすすめできる食べ物を紹介しようかなと思いました…

GitHubでコミットの署名を必須にする

先日、比較的広く使われているGitHub Actionsであるtj-actions/changed-filesに不正なコードが混入された問題があった。インシデントの発生した原因は後で詳しい人が書いてくれると思うけれど、少なくとも今(2025-03-16)の理解では、bot用のPersonal Access …