Bazı otomatik testlerimizin 00: 30'da çalıştıklarında başarısız olduklarını ancak günün geri kalanında iyi çalıştığını fark ettik. Beklenmeyen stderr'de "gimme gimme gimme" mesajı ile başarısız oldular. Neden bu çıktıyı alıyoruz?
Bazı otomatik testlerimizin 00: 30'da çalıştıklarında başarısız olduklarını ancak günün geri kalanında iyi çalıştığını fark ettik. Beklenmeyen stderr'de "gimme gimme gimme" mesajı ile başarısız oldular. Neden bu çıktıyı alıyoruz?
Yanıtlar:
Sevgili @colmmacuait , 0001 saatinde "man" yazarsanız "gimme gimme gimme" yazması gerektiğini düşünüyorum. #abba @marnanel - 3 Kasım 2011
bu benim hatamdı, önerdim. Üzgünüm.
Neredeyse tüm hikaye taahhüttedir. İnsanın sürdürücü benim iyi arkadaşım ve altı yıl önce bir gün şakayla gece yarısından sonra adamı çağırmak eğer "yazdırmak gerektiğini ona şöyle dedi Gimme gimme gimme çünkü" denilen Abba şarkının," Bir adam Gimme gimme gimme gece yarısından sonra ":
Eh, aslında yoktu koydu içinde . Birkaç kişi onu keşfetmek için eğlendirildi ve çoğunlukla bugüne kadar unutmuştuk.
Açıkçası Col için konuşamam , ama bunun herhangi bir soruna yol açmasını beklemiyordum: Sayfa çıktısı olmayan bir insanın çıktısını ayrıştırmada ne tür bir test yapılır? Sanırım sonunda ortaya çıktığına şaşırmamalıyım ama altı yıl sürdü.
( Taahhüt mesajı beni çevrimiçi kullanmasam da yasal adım olan Thomas'ı çağırıyor.)
Bu sorun 84bde8 taahhüdü ile çözüldü : Adamla koşmak man -w
bu paskalya yumurtasını tetiklemeyecek.
Bu bir paskalya yumurtası içeride man
. man
Sayfayı belirtmeden veya birlikte çalıştırmadan çalıştırdığınızda -w
, stderr'e "gimme gimme gimme" çıktısını verir, ancak yalnızca saat 00: 30'da:
# date +%T -s "00:30:00"
00:30:00
# man -w
gimme gimme gimme
/usr/local/share/man:/usr/share/man:/usr/man
Çıkış kodu her zaman 0'dır.
Doğru çıktı her zaman şöyle olmalıdır:
# 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" dizgisi RHEL, OpenSUSE, Fedora, Debian ve muhtemelen daha fazlasında bulunabilir, bu yüzden gerçekten kesin değil. Sen edebilirsiniz grep
senin man
ikili doğrulamak için.
Bu kod, bu taahhüt tarafından eklenen çıktıdan sorumludur :
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");
Bu konuda RHEL desteğine başvurdum.
Dize tanınmış ABBA şarkısı Gimme'den geliyor! Ver! Ver! Geceyarısından Sonra Bir Adam .
Man-db'nin geliştiricisi Colin Watson, yeterince eğlendiğine karar verdi ve hikaye unutulmayacak ve paskalya yumurtasını tamamen ortadan kaldırmayacaktı .
Teşekkürler Colin!
faketime
Kullanılabilir platformlarda , sistem saatini değiştirmeye bile gerek kalmadan bunu deneyebilirsiniz: faketime '00:30:00' man
(Debian 8).
man
değil man -w
: git.savannah.nongnu.org/cgit/man-db.git/commit/src/... ve Marnanel en Confessio ^ Wanswer üzerinde Colin'in comment .
man -w
, geçerli bir manuel sayfa arama yolunu yazdırır; bu, başka bir şey için yapı taşı olarak oldukça makul bir şekilde kullanabileceğiniz türden bir şeydir;
Biraz yansımasından sonra, bu Paskalya yumurtasını çıkardım . Yakında çıkacak olan man-db 2.8.0'da.
Bazı insanları gülümsetmesine sevindim, sonuçta bunun amacı bu, ve Twitter bildirimlerim ve bugün, çoğu insanın sinir bozucu olmaktan daha eğlenceli olduğunu düşündüğünü söylüyor. Yine de, bazı insanlar onu sinir bozucu buluyorlardı ve altı yıl bu tür şeyler için oldukça iyi bir koşuya benziyor; Muhtemelen beklenmedik bir şekilde bu soru ile elde edilenden çok daha iyi bir şekilde ortaya çıkmayacak. Yatma zamanı geldi.
man -abba
ve gece yarısından sonra ateş zaman paskalya yumurtası verecekti.