Tại sao người đàn ông in ấn gimme gimme gimme vào lúc 00:30?


1625

Chúng tôi đã nhận thấy rằng một số thử nghiệm tự động của chúng tôi thất bại khi chúng chạy vào lúc 00:30 nhưng hoạt động tốt trong phần còn lại của ngày. Họ thất bại với thông điệp "gimme gimme gimme" trong stderr, điều không được mong đợi. Tại sao chúng ta nhận được đầu ra này?



54
Tôi không hiểu Tại sao kịch bản kiểm tra của bạn gọi người đàn ông nên thất bại?
Joshua

19
@Joshua Bởi vì chúng tôi muốn "manpath" - 'man -w'. Xem câu trả lời.
Jaroslav Kucera

67
vì lợi ích của lịch sử, tại sao bạn cần phải làm một 'người đàn ông' mỗi phút? bạn đang thực sự thử nghiệm cái gì?
Olivier Dulac

22
@OlivierDulac Nó được kích hoạt chỉ một lần trong thử nghiệm. Chúng tôi đã sắp xếp lại thứ tự các bài kiểm tra và đột nhiên lỗi này xuất hiện khi nó được kích hoạt vào lúc 00:30 ...
Jaroslav Kucera

Câu trả lời:


2146

Gửi @colmmacuait , tôi nghĩ rằng nếu bạn gõ "man" vào 0001 giờ thì nên in "gimme gimme gimme". #abba @marnanel - ngày 3 tháng 11 năm 2011

er, đó là lỗi của tôi, tôi đề nghị nó. Lấy làm tiếc.

Khá nhiều toàn bộ câu chuyện là trong cam kết. Người duy trì con người là một người bạn tốt của tôi, và một ngày sáu năm trước tôi đã nói đùa với anh ta rằng nếu bạn gọi người đàn ông sau nửa đêm thì nên in " gimme gimme gimme ", vì bài hát Abba có tên là " Gimme gimme gimme a man sau nửa đêm ":

Vâng, anh ấy thực sự đã đặt nó vào . Một vài người đã thích thú để khám phá nó, và chúng tôi hầu như quên mất nó cho đến ngày hôm nay.

Rõ ràng tôi không thể nói cho Col , nhưng tôi không hy vọng điều này sẽ gây ra bất kỳ vấn đề nào: loại thử nghiệm nào sẽ phá vỡ khi phân tích cú pháp đầu ra của con người mà không có trang nào được chỉ định? Tôi cho rằng tôi không nên ngạc nhiên khi một người cuối cùng đã xuất hiện, nhưng phải mất sáu năm.

( Thông điệp cam kết gọi tôi là Thomas, đây là tên hợp pháp của tôi mặc dù tôi không sử dụng nó trực tuyến nhiều.)

Vấn đề này đã được khắc phục với cam kết 84bde8 : Running man with man -wwill không còn kích hoạt quả trứng Phục sinh này nữa.


361
Úi! Nó không bao giờ có nghĩa là ảnh hưởng đến các trường hợp không lỗi. Tôi đã không tính đến điều này khi tôi triển khai git.savannah.gnu.org/cgit/man-db.git/commit/ ,. Đã sửa lỗi trong master: git.savannah.gnu.org/cgit/man-db.git/commit/ mẹo
Colin Watson

3
Bình luận không dành cho thảo luận mở rộng; cuộc trò chuyện này đã được chuyển sang trò chuyện .
terdon

13
Các ý kiến ​​là để yêu cầu làm rõ và / hoặc thảo luận về các điểm kỹ thuật của một câu trả lời. Nếu bạn muốn thảo luận về giá trị của trứng Phục sinh, vui lòng mang nó đi trò chuyện .
terdon

8
Mamma mia, bây giờ tôi thực sự biết!
Enrico Maria De Angelis

3
có lẽ con người cần một thông số
Patrick Taylor

423

Đây là một quả trứng Phục sinh trong man. Khi bạn chạy manmà không chỉ định trang hoặc với -w, nó sẽ xuất "gimme gimme gimme" thành stderr, nhưng chỉ lúc 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

Mã thoát luôn là 0.

Đầu ra chính xác phải luôn là:

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

Chuỗi "gimme gimme gimme" có thể được tìm thấy trong RHEL, OpenSUSE, Fedora, Debian và có lẽ nhiều hơn nữa, vì vậy nó không thực sự phân biệt. Bạn có thể nhị phân grepcủa bạn manđể xác minh.

Mã này chịu trách nhiệm cho đầu ra , được thêm bởi cam kết này :

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");

Tôi đã liên hệ với bộ phận hỗ trợ của RHEL về vấn đề này.

Chuỗi đến từ bài hát nổi tiếng ABBA Gimme! Đưa tôi! Đưa tôi! (Một người đàn ông sau nửa đêm) .


Nhà phát triển của man-db, Colin Watson, đã quyết định rằng có đủ niềm vui và câu chuyện sẽ không bị lãng quên và loại bỏ hoàn toàn quả trứng Phục sinh .

Cảm ơn bạn Colin!


147
Trên các nền tảng có faketimesẵn, bạn có thể thử điều này mà không cần thay đổi thời gian hệ thống: faketime '00:30:00' man(Debian 8).
roaima


38
Tác giả hiện nay đã thắt chặt các quả trứng Phục sinh để chỉ chạy trên man, không man -w: git.savannah.nongnu.org/cgit/man-db.git/commit/src/...bình luận của Colin trên Confessio Marnanel của ^ Wanswer .
Martijn Pieters

21
Hãy đề cập rằng cam kết ban đầu được kích hoạt lúc 12:01 sáng. Một cam kết tiếp theo đã thay đổi thành 12:30 sáng với thông điệp nhật ký cam kết "mười hai giờ rưỡi", một lần nữa được trích dẫn từ cùng một bài hát.
egmont

6
@ 0x90 man -win đường dẫn tìm kiếm trang thủ công hiện tại, đây là loại thứ bạn có thể sử dụng khá hợp lý làm khối xây dựng cho thứ khác, ví dụ nếu thứ bạn đang tự động liên quan đến việc cài đặt hoặc kiểm tra các trang hướng dẫn.
Colin Watson

364

Sau một số phản ánh, tôi đã loại bỏ quả trứng Phục sinh này . Nó sẽ biến mất trong phiên bản man-db 2.8.0 sắp tới.

Tôi rất vui vì nó đã khiến một số người mỉm cười, mà sau tất cả là toàn bộ mục đích của nó, và các thông báo trên Twitter của tôi và hôm nay cho thấy hầu hết mọi người nghĩ rằng nó gây cười hơn là gây phiền nhiễu. Tuy nhiên, một số người đã cảm thấy phiền phức, và sáu năm có vẻ như là một hoạt động khá tốt cho những thứ đó; có lẽ nó sẽ không được tiếp xúc tốt hơn đáng kể so với câu hỏi này. Thời gian để đặt nó vào giường.


121
Tôi thực sự buồn vì bạn đã quyết định điều đó. IMO quá nhiều người có nó cho trứng Phục sinh.
Seth

36
Tôi sẽ không loại trừ việc thêm một cái gì đó khác trong tương lai, mặc dù cẩn thận hơn! Mặc dù vậy, nó đã trở nên hơi cũ và sự hài hước đòi hỏi sự mới lạ.
Colin Watson

31
Tôi phải đồng ý với @Seth, thật buồn khi thấy một điều gì đó khiến hầu hết chúng ta mỉm cười, chúng ta cần nhiều hơn thế thực sự trên thế giới này.
Videonauth

189
Tôi hy vọng điều này không phá vỡ bất kỳ quy trình công việc nào xkcd.com/1172
Lakshay Garg

73
@ColinWatson Tôi nghĩ rằng vô hiệu hóa điều này trong một luồng mặc định là một ý tưởng tốt, vì vậy nó không phá vỡ quy trình làm việc của bất kỳ ai. Nhưng đồng thời, thật xấu hổ khi một kiệt tác như vậy phải bị loại bỏ. Bạn có thể thêm một lá cờ đặc biệt như man -abbavà khi được bắn sau nửa đêm sẽ cho trứng Phục sinh.
Bartlomiej Skwira
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.