Perché l'uomo stampa "gimme gimme gimme" alle 00:30?


1625

Abbiamo notato che alcuni dei nostri test automatici falliscono quando vengono eseguiti alle 00:30, ma funzionano bene per il resto della giornata. Falliscono con il messaggio "gimme gimme gimme" in stderr, che non era previsto. Perché stiamo ottenendo questo risultato?



54
Non capisco Perché il tuo script di test chiama man dove dovrebbe fallire?
Giosuè,

19
@Joshua Perché volevamo il "manpath" - 'man -w'. Vedi la risposta
Jaroslav Kucera,

67
per il bene della storia, perché devi fare un 'uomo -w' ogni minuto? cosa stai davvero testando?
Olivier Dulac il

22
@OlivierDulac Viene attivato una sola volta nel test. Abbiamo riorganizzato l'ordine dei test e all'improvviso questo errore è apparso quando è stato attivato alle 00:30 ...
Jaroslav Kucera,

Risposte:


2146

Caro @colmmacuait , penso che se scrivi "man" a 0001 ore dovrebbe stampare "gimme gimme gimme". #abba @marnanel - 3 novembre 2011

ehm, è stata colpa mia, l'ho suggerito. Scusate.

Praticamente l'intera storia è nell'impegno. Il manutentore dell'uomo è un mio caro amico, e un giorno sei anni fa gli dissi scherzosamente che se invochi l'uomo dopo mezzanotte dovrebbe stampare " dammi dammi dammi ", a causa della canzone di Abba chiamata " Dammi dammi dammi un uomo dopo mezzanotte ":

Beh, lui ha in realtà messo in . Alcune persone si sono divertite a scoprirlo, e per lo più ci siamo dimenticati fino ad oggi.

Non posso parlare per Col , ovviamente, ma non mi aspettavo che questo potesse mai causare problemi: che tipo di test si sarebbe interrotto analizzando l'output di man senza una pagina specificata? Suppongo che non dovrei essere sorpreso che alla fine uno sia arrivato, ma ci sono voluti sei anni.

(Il messaggio di commit mi chiama Thomas, che è il mio nome legale anche se non lo uso molto online.)

Questo problema è stato risolto con commit 84bde8 : Running man with man -wnon attiverà più questo uovo di Pasqua.


361
Oops! Non è mai stato pensato per influenzare i casi senza errori. Non ne ho tenuto conto quando ho implementato git.savannah.gnu.org/cgit/man-db.git/commit/… . Risolto in master: git.savannah.gnu.org/cgit/man-db.git/commit/…
Colin Watson,

3
I commenti non sono per una discussione estesa; questa conversazione è stata spostata in chat .
terdon

13
I commenti servono per chiedere chiarimenti e / o discutere i punti tecnici di una risposta. Se vuoi discutere i meriti delle uova di Pasqua, ti preghiamo di portarlo in chat .
terdon

8
Mamma mia, ora lo so davvero!
Enrico Maria De Angelis,

3
forse l'uomo ha bisogno di un - gravemente parametro
Patrick Taylor,

422

Questo è un uovo di Pasqua dentro man. Quando si esegue mansenza specificare la pagina o con -w, viene visualizzato "gimme gimme gimme" su stderr, ma solo alle 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

Il codice di uscita è sempre 0.

L'output corretto dovrebbe essere sempre:

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

La stringa "gimme gimme gimme" può essere trovata in RHEL, OpenSUSE, Fedora, Debian e probabilmente di più, quindi non è specifica per la distro. Puoi verificare il greptuo manbinario.

Questo codice è responsabile dell'output , aggiunto da questo 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");

Ho contattato l'assistenza RHEL per questo problema.

La corda proviene dalla famosa canzone ABBA Gimme! Dammi! Dammi! (Un uomo dopo mezzanotte) .


Lo sviluppatore del man-db, Colin Watson, decise che ci sarebbe stato abbastanza divertimento e che la storia non sarebbe stata dimenticata e rimosse completamente l'uovo di Pasqua .

Grazie Colin!


148
Su piattaforme con faketimedisponibile puoi provare questo senza nemmeno dover cambiare l'ora di sistema: faketime '00:30:00' man(Debian 8).
roaima,

5
@rrauenza C'è il biglietto buzilla: bugzilla.redhat.com/show_bug.cgi?id=1515352
Jaroslav Kucera

38
L'autore ha ora stretto l'uovo di Pasqua per continuare a correre man, non man -w: git.savannah.nongnu.org/cgit/man-db.git/commit/src/… e il commento di Colin sulla confessione di Marnanel ^ Wanswer .
Martijn Pieters,

21
Ricordiamo che il commit iniziale è stato attivato alle 00:01. Un commit di follow-up lo ha modificato alle 12:30 con il messaggio di registro "dodici e mezza" che è nuovamente citato dallo stesso brano.
egmont,

6
@ 0x90 man -wstampa il percorso di ricerca della pagina del manuale corrente, che è il tipo di cosa che potresti ragionevolmente usare come blocco predefinito per qualcos'altro, ad esempio se la cosa che stavi automatizzando riguardava l'installazione o il test delle pagine del manuale.
Colin Watson,

363

Dopo qualche riflessione, ho rimosso questo uovo di Pasqua . Andrà nel prossimo man-db 2.8.0.

Sono contento che abbia fatto sorridere alcune persone, il che dopo tutto era lo scopo e le mie notifiche su Twitter e così via oggi suggeriscono che la maggior parte delle persone pensava che fosse più divertente che fastidioso. Tuttavia, alcune persone l'hanno trovato fastidioso, e sei anni sembrano una buona corsa per quel genere di cose; probabilmente non otterrà un'esposizione significativamente migliore di quella che ha già inaspettatamente fatto con questa domanda. È ora di metterlo a letto.


122
Sono davvero triste che tu l'abbia deciso. Troppe persone dell'IMO ce l'hanno per le uova di Pasqua.
Seth,

36
Non escluderò l'aggiunta di qualcosa di diverso in futuro, anche se con più attenzione! Stava diventando un po 'stantio, però, e l'umorismo richiede novità.
Colin Watson,

31
Devo essere d'accordo con @Seth, è triste vedere qualcosa che ha fatto sorridere la maggior parte di noi, di cui abbiamo davvero bisogno in questo mondo.
Videonauth,

190
Spero che questo non interrompa i flussi di lavoro xkcd.com/1172
Lakshay Garg

74
@ColinWatson Penso che disabilitarlo in un flusso predefinito sia una buona idea, quindi non interrompe il flusso di lavoro di nessuno. Ma allo stesso tempo, è un peccato che un tale capolavoro abbia dovuto essere rimosso. Potresti aggiungere una bandiera speciale come man -abbae quando sparata dopo mezzanotte darebbe l'uovo di Pasqua.
Bartlomiej Skwira,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.