なぜ男性は00:30に「gimme gimme gimme」と印刷するのですか?


1625

自動テストの一部は00:30に実行すると失敗しますが、残りの日は正常に動作することに気付きました。それらはstderrのメッセージ「gimme gimme gimme」で失敗しますが、これは予期されていませんでした。なぜこの出力が得られるのですか?



54
わかりません。テストスクリプトが失敗する場所でmanを呼び出すのはなぜですか?
— ジョシュア

19
@Joshua「manpath」-「man -w」が必要だったからです。答えをご覧ください。
— ヤロスラフクセラ

67
歴史のために、なぜ毎分 'man -w'を実行する必要があるのですか?あなたは本当に何をテストしていますか?
— オリビエデュラック

22
@OlivierDulacテストで一度だけトリガーされます。...私たちは、テストの順番をrearangedきたし、それが午後12時30分でトリガされたとして、突然このエラーはapeared
— ヤロスラフクセラ

回答:


2146

親愛なる@colmmacuait、私はあなたが0001時間で「男」を入力した場合、それは「ギミーギミーギミー」を印刷しなければならないことだと思います。#abba @ marnanel- 2011年11月3日

ええ、それは私のせいでした、私はそれを提案しました。ごめんなさい。

ほぼすべてのストーリーがコミットされています。男のメンテナが、私の良き友人であり、6年前のある日、私は冗談めかして、あなたが真夜中の後に男を呼び出す場合、それは「印刷する必要があることを彼に言ったギミーギミーギミーため」と呼ばれるアバの曲の、」をギミギミーギミー男真夜中以降:

まあ、彼は実際にそれ を入れました。数人の人がそれを発見して面白がっており、今日までほとんど忘れていました。

私は明らかにColについて話すことはできませんが、これが問題を引き起こすとは思っていませんでした。私はそのうちの1つが最終的に現れたことに驚かないでくださいが、6年かかりました。

(コミットメッセージはトーマスと呼ばれます。トーマスは、オンラインではあまり使用していませんが、私の正式な名前です。)

この問題は、コミットで固定されていない84bde8:実行中の男はman -w、もはやこのイースターエッグをトリガします。


361
おっと!エラー以外の場合に影響を与えることを意図したものではありませんでした。git.savannah.gnu.org/cgit/man-db.git/commit/…を実装したとき、私はこれを考慮しませんでした。マスターに修正:git.savannah.gnu.org/cgit/man-db.git/commit/...
— コリン・ワトソン

3
コメントは詳細なディスカッション用ではありません。この会話はチャットに移動されました。
— テルドン

13
コメントは、説明を求めたり、回答の技術的なポイントを議論したりするためのものです。イースターエッグのメリットについて話し合う場合は、チャットに参加してください。
— テルドン

8
マンマ・ミア、今私は本当に知っています!
— エンリコマリアデアンジェリス

3
多分、男は
— パトリックテイラー

423

これはのイースターエッグですman。manページを指定せずに、またはを使用して実行すると-w、「gimme gimme gimme」がstderrに出力されますが、00:30のみです。

# date +%T -s "00:30:00"
00:30:00
# man -w
gimme gimme gimme
/usr/local/share/man:/usr/share/man:/usr/man

終了コードは常に0です。

正しい出力は常に次のようになります。

# man -w
/usr/local/share/man:/usr/share/man:/usr/man
# echo $?
0
# man
What manual page do you want?
# echo $?
1

文字列「gimme gimme gimme」は、RHEL、OpenSUSE、Fedora、Debianなどで見つかる可能性があるため、実際にはディストリビューション固有ではありません。バイナリを確認できgrepますman。

このコードは、このコミットによって追加された出力を担当します。

src/man.c-1167- if (first_arg == argc) {
src/man.c-1168-   /* 
http://twitter.com/#!/marnanel/status/132280557190119424 */
src/man.c-1169-   time_t now = time (NULL);
src/man.c-1170-   struct tm *localnow = localtime (&now);
src/man.c-1171-   if (localnow &&
src/man.c-1172-       localnow->tm_hour == 0 && localnow->tm_min == 30)
src/man.c:1173:     fprintf (stderr, "gimme gimme gimme\n");

この問題についてRHELサポートに連絡しました。

ストリングは、有名なABBAソングGimmeから来ています!ギミ!ギミ!(ミッドナイトアフターミッドナイト)。


man-dbの開発者であるColin Watsonは、十分な楽しみがあり、ストーリーが忘れられないことを決定し、イースターエッグを完全に削除しました。

コリンありがとう!


147
faketime利用可能なプラットフォームでは、システム時間を変更しなくてもこれを試すことができます:faketime '00:30:00' man(Debian 8)。
— ロアイマ

5
@rrauenza buzillaチケットがあります:bugzilla.redhat.com/show_bug.cgi
— Jaroslav Kucera

38
著者は、今だけで実行するようにイースターエッグを締めたman、ではないman -w:git.savannah.nongnu.org/cgit/man-db.git/commit/src/...とMarnanelのconfessio ^ Wanswerにコリンさんのコメント。
— マルタインピータース

21
最初のコミットが12:01 amにトリガーされたことに言及しましょう。フォローアップコミットはそれを12:30に変更し、コミットログメッセージ「half past 12」が同じ曲から引用されています。
— エグモント

6
@ 0x90 man -wは、現在のマニュアルページの検索パスを出力します。これは、自動化するものにマニュアルページのインストールやテストが含まれる場合など、他の何かの構成要素としてかなり合理的に使用できるものです。
— コリンワトソン

364

熟考した後、このイースターエッグを削除しました。今後のman-db 2.8.0でなくなる予定です。

私はそれが何人かの人々を笑顔にさせてくれてうれしいです、結局それはそれの全体的な目的であり、今日の私のTwitter通知などはほとんどの人々がそれが迷惑よりも面白いと思ったことを示唆しています それでも、一部の人々はそれを迷惑だと感じました。おそらく、この質問によって既に予想外に得られたものよりも大幅に良い露出を得ることはないでしょう。寝る時間です。


121
あなたがそれを決めたのは本当に悲しいです。IMOはあまりにも多くの人がイースターエッグを提供しています。
— セス

36
細心の注意を払っていますが、今後何か違うものを追加することを排除しません!しかし、少し古くなっていて、ユーモアには斬新さが必要です。
— コリンワトソン

31
@Sethに同意する必要があります。私たちのほとんどが笑顔になった何かを見るのは悲しいです、私たちは実際にこの世界でそれをもっと必要とします。
— Videonauth

189
これによりワークフローが壊れ
— Lakshay Garg

73
@ColinWatsonデフォルトのフローでこれを無効にするのは良いアイデアだと思うので、だれのワークフローを壊すことはありません。しかし、同時に、そのような傑作を除去しなければならなかったのは残念です。のような特別なフラグを追加することができ、man -abba真夜中の後に発射されるとイースターエッグが与えられます。
— バルトロミエスクウィラ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.