it-gundan.com

왜 00:30에 사람이 "gimme gimme gimme"를 인쇄합니까?

우리는 자동 테스트 중 일부가 00:30에 실행될 때 실패하지만 하루 종일 제대로 작동한다는 것을 알았습니다. stderr에서 "gimme gimme gimme"메시지와 함께 실패하지만 예상하지 못했습니다. 이 결과를 얻는 이유는 무엇입니까?

1647
Jaroslav Kucera

man의 부활절 달걀입니다. 페이지를 지정하지 않거나 -wman을 실행하면 "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 확인할 수 있습니다.

이 코드는 출력을 담당합니다 , this commit 에 의해 추가되었습니다 :

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! Gimme! Gimme! (A Man After Midnight) 에서 온 것입니다.


Man-db 개발자 인 콜린 왓슨 (Colin Watson)은 재미가 충분하고 스토리가 잊혀지지 않을 것이라고 결정했으며 부활절 달걀을 완전히 제거했습니다 .

콜린 감사합니다!

429
Jaroslav Kucera

@ colmmacuait 님, 0001 시간에 "man"을 입력하면 "gimme gimme gimme"가 인쇄되어야한다고 생각합니다. # abba
@ marnanel -2011 년 11 월 3 일

그게 내 잘못이야 내가 제안 했어 죄송합니다.

거의 모든 이야기가 커밋됩니다. 사람의 관리자는 나의 좋은 친구이며, 6 년 전 어느 날 자정 이후에 사람을 불러 오면 "gimme gimme gimme" "Gimme gimme gimme a man at a midnight :

글쎄, 그는 실제로 입력in 을했습니다. 몇몇 사람들은 그것을 발견하기 위해 즐겁게 지 냈으며, 우리는 오늘날까지 대부분 잊어 버렸습니다.

Col을 말할 수는 없습니다 , 그러나 이것이 어떤 문제도 일으킬 것으로 예상하지 못했습니다. 페이지가 지정되지 않은 사람의 출력을 구문 분석 할 때 어떤 종류의 테스트가 중단됩니까? 나는 결국 하나가 나타났다는 것에 놀라지 말아야한다고 생각하지만 6 년이 걸렸다.

( commit message 는 온라인에서 많이 사용하지 않지만 법적 이름 인 Thomas라고 부릅니다.)

이 문제는 commit 84bde8 : 로 해결되었습니다. man -w로 사람을 실행하면 더 이상 이스터 에그를 트리거하지 않습니다. .

2166
Marnanel Thurman

약간의 반성 후, 나는 이 부활절 달걀을 제거했습니다 . 다가오는 man-db 2.8.0으로 넘어갈 것입니다.

나는 그것이 일부 사람들을 미소 짓게해서 기쁘다. 결국 그 목적이 전부 였고, 트위터 알림은 오늘날 대부분의 사람들이 성가신 것보다 더 재미 있다고 생각한다고 제안한다. 그럼에도 불구하고 어떤 사람들은 성가신 것을 알았고 6 년은 그런 종류의 일에 꽤 좋은 달리기 같았습니다. 아마도이 질문에 의해 이미 예상치 못한 노출보다 훨씬 더 나은 노출을 얻지 못할 것입니다. 잠자리에들 시간입니다.

369
Colin Watson