Почему человек печатает «дай мне дай мне» в 00:30?

1625

Мы заметили, что некоторые из наших автоматических тестов не выполняются, когда они запускаются в 00:30, но работают хорошо в остальное время. Они терпят неудачу с сообщением «дай мне дай мне» в stderr, что не ожидалось. Почему мы получаем этот вывод?

Ярослав Кучера
источник
5
Ссылка
Джефф Шаллер
54
Я не понимаю Почему ваш тестовый скрипт вызывает man там, где он должен потерпеть неудачу?
Иисус Навин
19
@ Джошуа, потому что мы хотели "manpath" - "man -w". Смотрите ответ.
Ярослав Кучера
67
ради истории, почему вы должны делать 'man -w' каждую минуту? что ты на самом деле тестируешь?
Оливье Дюлак
22
@OlivierDulac Это срабатывает только один раз в тесте. Мы пересмотрели порядок тестов, и внезапно эта ошибка появилась, поскольку она была вызвана в 00:30 ...
Ярослав Кучера

Ответы:

2146

Уважаемый @colmmacuait , я думаю, что если вы наберете "man" в 0001, то это должно вывести "gimme gimme gimme". #abba @marnanel - 3 ноября 2011 г.

э-э, это была моя вина, я предложил это. Сожалею.

Практически вся история в коммите. Хранитель человека - мой хороший друг, и однажды шесть лет назад я в шутку сказал ему, что, если ты будешь призывать человека после полуночи, он должен напечатать « gimme gimme gimme », потому что песня Abba называется « Gimme gimme gimme a man» после полуночи ":

Ну, он на самом деле положил его в . Несколько человек были удивлены, обнаружив это, и мы в основном забыли об этом до сегодняшнего дня.

Очевидно, я не могу говорить за Col , но я не ожидал, что это когда-либо вызовет какие-либо проблемы: какой тип теста может прерваться при разборе вывода man без указания страницы? Полагаю, меня не должно удивлять, что кто-то появился в конце концов, но это заняло шесть лет.

(Сообщение коммита называет меня Томас, это мое официальное имя, хотя я не часто его использую в Интернете.)

Эта проблема была исправлена ​​с коммитом 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
возможно, мужчине нужен параметр
Патрик Тейлор
422

Это пасхальное яйцо 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, Колин Уотсон, решил, что было достаточно веселья, и история не забудется, и полностью удалил пасхальное яйцо .

Спасибо, Колин!

Ярослав Кучера
источник
148
На faketimeдоступных платформах вы можете попробовать это, даже не меняя системное время: faketime '00:30:00' man(Debian 8).
Ройма
5
@rrauenza Есть билет Buzilla: bugzilla.redhat.com/show_bug.cgi?id=1515352
Ярослав Кучера
38
Автор теперь затянул пасхальное яйцо, чтобы только бежать man, а не man -w: git.savannah.nongnu.org/cgit/man-db.git/commit/src/… и комментарий Колина по поводу признания Марнанела ^ Wanswer .
Мартин Питерс
21
Отметим, что первоначальный коммит сработал в 0:01 утра. Последующий коммит изменил это на 12:30 с сообщением журнала коммита «половина двенадцатого», которое снова цитируется из той же песни.
egmont
6
@ 0x90 man -wпечатает текущий путь поиска страниц справочника, который вы вполне можете использовать в качестве строительного блока для чего-то другого, например, если вы автоматизировали процесс установки или тестирования страниц справочника.
Колин Уотсон
362

После некоторых размышлений я удалил это пасхальное яйцо . В следующем man-db 2.8.0 он исчезнет.

Я рад, что это заставило некоторых людей улыбнуться, что, в конце концов, и было целью всего этого, и мои уведомления в Твиттере и так далее сегодня предполагают, что большинство людей думали, что это было скорее забавно, чем раздражает. Тем не менее, некоторые люди находят это раздражающим, и шесть лет кажутся довольно удачным ходом для такого рода вещей; Вероятно, он не получит значительно лучшую экспозицию, чем это было неожиданно благодаря этому вопросу. Время уложить это в постель.

Колин Уотсон
источник
122
Мне очень грустно, что вы решили это. ИМО слишком много людей имеют это для пасхальных яиц.
Сет
36
Я не исключаю, добавив что-то другое в будущем, хотя и с большей осторожностью! Это становилось немного несвежим, и юмор требует новизны.
Колин Уотсон,
31
Я должен согласиться с @Seth, грустно видеть, что что-то идет, что заставило большинство из нас улыбаться, нам нужно больше этого на самом деле в этом мире.
Видеонавт
190
Я надеюсь, что это не нарушит никаких рабочих процессов xkcd.com/1172
Лакшай Гарг
74
@ColinWatson Я думаю, что отключение этого в потоке по умолчанию является хорошей идеей, поэтому оно не нарушает чей-либо рабочий процесс. Но в то же время обидно, что такой шедевр пришлось убрать. Вы можете добавить специальный флаг, например, man -abbaи когда выстрел после полуночи даст пасхальное яйцо.
Бартломей Сквира