質問
- 特定の時間に自動テストが失敗する理由についての質問が提起された。テストは00:30に失敗し、予期しない「gimme gimme gimme」というメッセージをstderrに出力する。
回答 1
- この問題は
manコマンドのイースターエッグが原因。
manコマンドを00:30に実行すると「gimme gimme gimme」というメッセージが出力される。
- このイースターエッグはABBAの楽曲「Gimme! Gimme! Gimme! (A Man After Midnight)」に由来する。
- この問題はコミット84bde8によって解決された。現在は
man -wを実行してもこのイースターエッグは発生しない。
回答 2
- このイースターエッグは
manコマンドのソースコードに含まれており、特定の時間にのみ出力される。
- RHEL、OpenSUSE、Fedora、Debianなど複数のディストリビューションで見つかっている。
- イースターエッグは
man-dbの開発者であるColin Watsonによって削除された。
回答 3
- このイースターエッグは
man-db 2.8.0バージョンで削除される予定。
- このイースターエッグは多くの人を笑わせたが、一部の人には不便をもたらした。
- Colin Watsonは今後、別の形のイースターエッグを追加する可能性を残している。
GN⁺のまとめ
- この記事は
manコマンドのイースターエッグによって発生した問題を扱っている。イースターエッグはABBAの楽曲から着想を得て追加されたもので、特定の時間にのみ動作する。
- この問題は
man-dbの開発者がイースターエッグを削除したことで解決された。これにより、自動テスト環境での予期しないエラーを防げるようになった。
- この記事は、ソフトウェア開発およびテスト環境においてイースターエッグがどのように問題を引き起こしうるかを示す良い事例。類似の機能を持つ別のプロジェクトとしては
infoコマンドがある。
3件のコメント
こういう類いのイースターエッグを入れるのであれば、標準入出力が TTY かどうかを一度確認するのもよい方法です。シェルスクリプトなら
[[ -t 1]]で確認できます。manが「男性」と訳されてしまったんですね(笑)Hacker Newsのコメント
以前、テレメディシンのWebアプリを開発していたとき、患者がオンラインの問診票に記入し、その回答を医師に表示する機能を実装していた。各医療システムの部門ごとに異なるロジックで質問を表示する必要があった。デバッグの過程で誤って残した
I SEE YOU!!!というメッセージを精神科の患者に見つけられてしまった。それ以降、デバッグ用マーカーには aaa と 111 を使うようになったソフトウェアが無料で、メンテナーが報酬を受け取っていないなら、いくつかのイースターエッグは小さな代償だ。ある会社では、開発者がT&Cに、ユーザーが自分の魂を会社に譲渡するという文言を追加した。これは経営陣がT&Cを本当に確認しているかを見るためのものだった
コーディングは楽しいものであるべきで、オープンソースが真面目すぎるようになったのは企業のせいだ。個人的にはプログラムを書くときにイースターエッグを追加して、ユーザーに人間味を思い出してもらうようにしている
man-dbの開発者であるColin Watsonは、イースターエッグを完全に削除した。ユーザーに害を及ぼす可能性があるためだ
FreePBXを設定したとき、666の内線番号にMichael Jacksonの"Thriller"にあるVincent Priceの笑い声を追加した。しかしシステム障害で、すべての電話が666につながるようになり、同僚たちは不快に感じた
QNAP Celeron NASにUbuntuをインストールしたが、特定の時刻にカーネルパニックが発生した。これはJ1900デバイスのシリコン劣化バグが原因だった
manコマンドを引数なしで呼び出すテストがなぜ存在するのかについて仮説が必要だ。これはmanがインストールされているか確認するためかもしれない