Por que o homem imprime "gimme gimme gimme" às ​​00:30?


1624

Percebemos que alguns de nossos testes automáticos falham quando são executados às 00:30, mas funcionam bem o resto do dia. Eles falham com a mensagem "gimme gimme gimme" no stderr, o que não era esperado. Por que estamos obtendo essa saída?



54
Eu não entendo. Por que seu script de teste chama o homem de onde deveria falhar?
— Joshua

19
@ Josué Porque queríamos o "caminho do homem" - 'man -w'. Veja a resposta.
— precisa

67
por uma questão de história, por que você precisa fazer um 'homem-w' a cada minuto? o que você está realmente testando?
— precisa

22
@OlivierDulac Está sendo acionado apenas uma vez no teste. Nós rearanged a ordem de testes e de repente esse erro apeared como foi desencadeada às 00:30 ...
— Jaroslav Kucera

Respostas:


2145

Caro @colmmacuait , acho que se você digitar "man" às 0001 horas, deverá imprimir "gimme gimme gimme". #abba @marnanel - 3 de novembro de 2011

er, isso foi culpa minha, eu sugeri. Desculpa.

Praticamente toda a história está no commit. O mantenedor do homem é um bom amigo meu, e um dia, seis anos atrás, eu disse a ele brincando que se você invocar o homem depois da meia-noite, ele deve imprimir " me dê, me dê, me dê ", por causa da música do Abba chamada " Me dê, me dê um homem depois da meia-noite ":

Bem, ele chegou a colocá-lo em . Algumas pessoas se divertiram ao descobri-lo, e quase o esquecemos até hoje.

Não posso falar por Col , obviamente, mas não esperava que isso causasse problemas: que tipo de teste seria interrompido ao analisar a saída de man sem nenhuma página especificada? Suponho que não deveria me surpreender com o fato de alguém aparecer, mas levou seis anos.

(A mensagem de confirmação me chama Thomas, que é meu primeiro nome legal, embora eu não a use muito online.)

Esse problema foi corrigido com o commit 84bde8 : executar o man with man -wnão acionará mais esse ovo de páscoa.


361
Opa! Nunca foi criado para afetar casos sem erro. Não levei isso em consideração quando implementei git.savannah.gnu.org/cgit/man-db.git/commit/… . Corrigido no mestre: git.savannah.gnu.org/cgit/man-db.git/commit/…
— Colin Watson

3
Comentários não são para discussão prolongada; esta conversa foi movida para o bate-papo .
— terdon

13
Os comentários são para pedir esclarecimentos e / ou discutir os pontos técnicos de uma resposta. Se você quiser discutir o mérito dos ovos de Páscoa, leve-o para conversar .
— terdon

8
Mamma mia, agora eu realmente sei!
— Enrico Maria De Angelis

3
talvez o homem precisa de um parâmetro --seriously
— Patrick Taylor

422

Este é um ovo de páscoa man. Quando você executa mansem especificar a página ou com -w, ele gera "gimme gimme gimme" para stderr, mas apenas às 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

O código de saída é sempre 0.

A saída correta deve sempre ser:

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

A string "gimme gimme gimme" pode ser encontrada no RHEL, OpenSUSE, Fedora, Debian e provavelmente mais, por isso não é realmente específico da distribuição. Você pode verificar o grepseu manbinário.

Este código é responsável pela saída , adicionada por este 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");

Entrei em contato com o suporte do RHEL sobre esse problema.

A string vem da conhecida canção do ABBA, Gimme! Gimme! Gimme! (Um homem depois da meia-noite) .


O desenvolvedor do man-db, Colin Watson, decidiu que havia diversão suficiente e a história não será esquecida e removeu completamente o ovo da páscoa .

Obrigado Colin!


147
Nas plataformas faketimedisponíveis, você pode tentar isso sem precisar alterar a hora do sistema: faketime '00:30:00' man(Debian 8).
— roaima

5
@rrauenza Não é o bilhete buzilla: bugzilla.redhat.com/show_bug.cgi?id=1515352
— Jaroslav Kucera


21
Vamos mencionar que o commit inicial foi acionado às 12h01. Um commit de acompanhamento mudou isso para 12:30 com a mensagem de log de commit "doze e meia", que é novamente citada da mesma música.
— egmont

6
@ 0x90 man -wimprime o caminho de pesquisa da página manual atual, que é o tipo de coisa que você pode razoavelmente usar como um componente básico para outra coisa, por exemplo, se a coisa que você automatizou envolvia a instalação ou teste de páginas de manual.
— Colin Watson

363

Após algumas reflexões, retirei este ovo de Páscoa . Ele será lançado no próximo man-db 2.8.0.

Fico feliz que isso tenha feito algumas pessoas sorrirem, o que afinal era o objetivo disso, e minhas notificações no Twitter e assim por diante hoje sugerem que a maioria das pessoas achou mais divertido do que irritante. Ainda assim, algumas pessoas acharam isso irritante, e seis anos parecem uma boa corrida para esse tipo de coisa; provavelmente não terá uma exposição significativamente melhor do que já inesperadamente tem por meio dessa pergunta. Hora de colocá-lo na cama.


121
Estou muito triste por você ter decidido isso. Na OMI, muitas pessoas têm ovos de páscoa.
— Seth

36
Não descartarei adicionar algo diferente no futuro, embora com mais cuidado! No entanto, estava ficando um pouco obsoleto, e o humor exige novidade.
— Colin Watson

31
Eu tenho que concordar com @Seth, é triste ver algo acontecer que fez a maioria de nós sorrir, precisamos de mais do que realmente neste mundo.
— Videonauth 22/11

189
Espero que isso não quebra qualquer workflows xkcd.com/1172
— Lakshay Garg

73
@ColinWatson Eu acho que desabilitar isso em um fluxo padrão é uma boa idéia, para não interromper o fluxo de trabalho de ninguém. Mas, ao mesmo tempo, é uma pena que uma obra-prima tenha sido removida. Você pode adicionar uma bandeira especial como man -abbae quando disparada depois da meia-noite daria o ovo da páscoa.
— Bartlomiej Skwira
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.