2023年5月21日日曜日

Gentoo LinuxでpinentryがGNOME Keyringを参照しなくなった

 説明がややこしくてなんのこっちゃという感じですが、ようするにどういう影響があるかというと

  • Gitとかでデジタル署名をしている場合に
  • commitのたびに
  • 毎回パスフレーズを聞かれるようになる

ということです。デジタル署名を使っていないとか、そもそもGnuPGを使ってないという場合は影響ありません。あとUbuntuのようにGentoo Linux以外を使っている人も影響ありません。

今まではパスフレーズが必要なときはpinentryがGNOME Keyringに入っているパスフレーズを参照して自動入力してくれたので手動では何も入力する必要がなかったんですが、つい最近から急に入力ダイアログが出始めました。

PAMの設定も問題なく、ログイン時に自動的にGNOME Keyringが解錠される設定はこれまでと変わっていません。

原因

結論を書くと、Gentoo Linuxのpinentryパッケージv1.2.1-r2gnome-keyring USEフラグをkeyringに改名したのが原因です。

問題のコミットはこれこれ

対応は、インストール時に設定しているgnome-keyringフラグをkeyringにしてやればOK。

いや勝手なことすんなし。せめてeselect news readコマンドで注意喚起してくれ。

とりあえず、Gentoo Linuxユーザーで、2023年5月20日前後から急にGnuPGのパスフレーズプロンプトが表示されたというピンポイントな悩みの方がいたら本記事が役に立つかもしれません。

2023年5月14日日曜日

関西Node学園 10時限目でSingle Executable Applicationsの話をしました

去る5月9日に関西Node学園 10時限目を開催しました。コロナ鍋で中々オフライン開催できなかったのですが、3年ぶりに開催することになりました。

個人的にはJSConf JP(旧Node学園祭)の運営のお手伝いをしていますが、地元の関西Node学園の運営にはほとんど関わっていませんでした。今回はちょっとだけお手伝い。

そしてついでに登壇もしてきました。話したネタはv19.7で追加されたSingle Executable Applications。以前にちょっとここでも触れました

スライドはこちらです。以前のブログを書いた時から、仕組みをちょっとだけ調べました。

スライドに出てきた実装例はこちらにあります。好きに使ってください。

2023年5月7日日曜日

Goのrangeではメモリーを使い回している

最近ちょっとハマったところについてメモ。

要するにこういうことです。これを実行したらどうなると思いますか?おそらくfoo, bar, bazすべて同じ値になっていると思います。どんな値になるかは実行タイミングによって違うようです。

つまりrangeは各ループで毎回同じアドレスに値を入れているので、そのアドレスをあとで使おうと思っても想定外の値に変化していることがあります。

よく考えれば・・・というか考えなくても、「ループ内で毎回専用の領域を確保する」より「最初に領域を確保してループ内で使い回す」ほうが効率的なのは明らかなので、そういう仕様なのはまあ納得。

アドレスを後で使いたい場合は、一度別の変数にコピーして使いましょう