Dockerでコンテナを作る際、明示的に名前を与えなかったら、自動的に 形容詞_偉人名
の形式で名前が付けられる。
そのソースコードを読んでみたところ、Steve Wozniakは退屈ではないので、 boring_wozniak
は選ばれないことが分かった。
変更のフリーズ宣言
この機能を実装しているパッケージは、今後、変更を受け付けないことが宣言された。
メンテナンス作業がつらくなってきたかったからだそう。中の人のコメントのDeepL訳を引用する。
ここに来た人たち(いくつかの反対票が見られます)のために、なぜこのようなことをするのかについて、もう少し詳しく説明します。
私たちはメンテナ会議でこの変更について話し合い、このパッケージの当初のアイデアは皆が気に入っていたものの、長年にわたってこのパッケージは望ましい以上のメンテナンスが必要になってきたという結論に達しました。
いくつか例を挙げると、長年にわたって、名前の組み合わせが不運な組み合わせを招く可能性があったり、形容詞がすべての状況に適しているわけではない、あるいは否定的な意味合いを持っていたり、リストの参加者が物議を醸す人物であったりといった理由から、リストの変更を行わなければならなかったことがありました。さらに、技術的な制限(名字が一意ではない、名前の長さ、名前がASCII文字に限定されているため、多くの地域の名前が暗黙のうちに除外されている)が事態を複雑にしています。
何百万人ものアクティブユーザーが、さまざまな大陸や文化に広がっているため、リストを包括的で多様性があり、バランスの取れたものに保つことがますます難しくなっています。私たちは、この件に関して優れた仲裁者であるとは考えていません。また、この作業には膨大な時間がかかり(追加する人物の経歴をすべて調査する必要がある)、維持管理者の負担も相当なものになります(この人物をリストに追加してよいか? 追加すべきでない理由があるか? リストはまだバランスが取れているか?)。時間とリソースは、他の方法で有効に使うべきです。
以上の理由から、私たちはリストを現状のまま「凍結」し、この機能の今後の方向性を再考することにしました。その方向性としては、ランダムな名前と形容詞のリスト、コンテナ(またはボリュームなど)のプロパティに基づいて名前をより決定論的にするテンプレートオプション、あるいは、ユーザーが独自の命名スキームを提供できるようにするプラグイン可能な名前生成機能などが考えられます。
この決定に至った理由をご理解いただけたでしょうか!🤗
例示されているコミットの変更内容を見てみると、こういった内容である。
- "cocky",
- "kickass",
+ "vigorous",
- "insane",
+ "infallible",
- // Marvin Minsky - Pioneer in Artificial Intelligence, co-founder of the MIT's AI Lab, won the Turing Award in 1969. https://en.wikipedia.org/wiki/Marvin_Minsky
- "minsky",
-
- // Richard Matthew Stallman - the founder of the Free Software movement, the GNU project, the Free Software Foundation, and the League for Programming Freedom. He also invented the concept of copyleft to protect the ideals of this movement, and enshrined this concept in the widely-used GPL (General Public License) for software. https://en.wikiquote.org/wiki/Richard_Stallman
- "stallman",
-
たしかにこれはメンテナンスしたくない。
コード
こちら にある。left
として、形容詞のリストを作り、 right
として、人名のリストを作る。
そして、このように、乱数を振って名前を決定している。
func GetRandomName(retry int) string {
begin:
name := left[rand.Intn(len(left))] + "_" + right[rand.Intn(len(right))] //nolint:gosec // G404: Use of weak random number generator (math/rand instead of crypto/rand)
if name == "boring_wozniak" /* Steve Wozniak is not boring */ {
goto begin
}
if retry > 0 {
name += strconv.Itoa(rand.Intn(10)) //nolint:gosec // G404: Use of weak random number generator (math/rand instead of crypto/rand)
}
return name
}
お分かりいただけただろうか。もう一度ご覧いただきたい。
if name == "boring_wozniak" /* Steve Wozniak is not boring */ {
goto begin
}
Steve Wozniakは退屈ではない
ので、乱数を振ったとき、 "boring_wozniak" が出てきたらやり直す。