2 điểm bởi GN⁺ 2024-10-05 | 3 bình luận | Chia sẻ qua WhatsApp

Câu hỏi

  • Một câu hỏi được đặt ra về lý do các bài kiểm thử tự động lại thất bại vào một thời điểm cụ thể. Bài kiểm thử thất bại lúc 00:30 và in ra thông báo "gimme gimme gimme" không mong đợi vào stderr.

Trả lời 1

  • Vấn đề này là do easter egg của lệnh man.
  • Khi chạy lệnh man lúc 00:30, thông báo "gimme gimme gimme" sẽ được in ra.
  • Easter egg này bắt nguồn từ bài hát "Gimme! Gimme! Gimme! (A Man After Midnight)" của ABBA.
  • Vấn đề này đã được khắc phục qua commit 84bde8. Giờ đây, ngay cả khi chạy man -w, easter egg này cũng không còn xuất hiện.

Trả lời 2

  • Easter egg này được đưa vào mã nguồn của lệnh man và chỉ in ra vào một thời điểm cụ thể.
  • Nó đã được phát hiện trên nhiều bản phân phối như RHEL, OpenSUSE, Fedora và Debian.
  • Easter egg này đã bị gỡ bỏ bởi Colin Watson, nhà phát triển của man-db.

Trả lời 3

  • Easter egg này dự kiến sẽ bị loại bỏ trong phiên bản man-db 2.8.0.
  • Easter egg này đã mang lại tiếng cười cho nhiều người, nhưng cũng gây bất tiện cho một số người khác.
  • Colin Watson để ngỏ khả năng sẽ thêm các dạng easter egg khác trong tương lai.

Tổng hợp của GN⁺

  • Bài viết này đề cập đến vấn đề phát sinh do easter egg trong lệnh man. Easter egg này được thêm vào dựa trên cảm hứng từ bài hát của ABBA và chỉ hoạt động vào một thời điểm cụ thể.
  • Vấn đề này đã được giải quyết khi nhà phát triển của man-db gỡ bỏ easter egg. Nhờ đó, các lỗi bất ngờ trong môi trường kiểm thử tự động đã được ngăn chặn.
  • Bài viết là một ví dụ điển hình cho thấy easter egg có thể gây ra vấn đề như thế nào trong môi trường phát triển phần mềm và kiểm thử. Một dự án khác có tính năng tương tự là lệnh info.

3 bình luận

 
tribela 2024-10-07

Nếu định thêm kiểu easter egg này, thì cũng là một cách hay khi kiểm tra xem đầu vào/đầu ra chuẩn có phải là TTY hay không. Nếu là shell script thì có thể kiểm tra bằng [[ -t 1]].

 
y15un 2024-10-05

man đã được dịch là nam giới rồi nhỉ haha

 
GN⁺ 2024-10-05
Ý kiến trên Hacker News
  • Trước đây khi phát triển một ứng dụng web telemedicine, tôi đã triển khai tính năng để bệnh nhân điền bảng câu hỏi trực tuyến và hiển thị câu trả lời cho bác sĩ. Mỗi bộ phận trong từng hệ thống y tế lại cần logic khác nhau để hiển thị câu hỏi. Trong lúc debug, một thông điệp I SEE YOU!!! bị để sót do nhầm lẫn đã bị một bệnh nhân tâm thần phát hiện. Từ đó về sau, tôi dùng aaa và 111 làm dấu debug

  • Nếu phần mềm là miễn phí và người bảo trì không nhận lương, thì vài Easter egg cũng chỉ là cái giá nhỏ phải trả. Ở một công ty, có lập trình viên từng thêm vào T&C nội dung rằng người dùng chuyển nhượng linh hồn của mình cho công ty. Việc này nhằm kiểm tra xem ban quản lý có thực sự rà soát T&C hay không

  • Lập trình nên vui, và việc mã nguồn mở trở nên quá nghiêm túc là do các công ty. Cá nhân tôi khi viết chương trình thường thêm Easter egg để nhắc người dùng rằng phía sau đó vẫn có con người

  • Colin Watson, nhà phát triển của man-db, đã loại bỏ hoàn toàn Easter egg. Lý do là vì chúng có thể gây hại cho người dùng

  • Khi cấu hình FreePBX, tôi đã thêm tiếng cười của Vincent Price trong Thriller của Michael Jackson vào số máy nhánh 666. Nhưng do lỗi hệ thống, mọi cuộc gọi đều bị nối tới 666, khiến đồng nghiệp cảm thấy khó chịu

  • Tôi đã cài Ubuntu lên NAS QNAP Celeron, nhưng kernel panic xảy ra vào một thời điểm nhất định. Nguyên nhân là lỗi suy thoái silicon trên thiết bị J1900

  • Cần một giả thuyết giải thích vì sao lại có bài kiểm thử gọi lệnh man mà không kèm đối số. Có thể là để xác nhận rằng man đã được cài đặt hay chưa