คำถาม
- มีการตั้งคำถามว่าทำไมการทดสอบอัตโนมัติถึงล้มเหลวในเวลาหนึ่งโดยเฉพาะ การทดสอบล้มเหลวตอน 00:30 และพิมพ์ข้อความ "gimme gimme gimme" ไปยัง stderr โดยไม่คาดคิด
คำตอบ 1
- ปัญหานี้เกิดจากอีสเตอร์เอ็กของคำสั่ง
man
- เมื่อรันคำสั่ง
man ตอน 00:30 จะมีการพิมพ์ข้อความ "gimme gimme gimme"
- อีสเตอร์เอ็กนี้มาจากเพลงของ ABBA ชื่อ "Gimme! Gimme! Gimme! (A Man After Midnight)"
- ปัญหานี้ถูกแก้ไขผ่านคอมมิต 84bde8 ตอนนี้แม้รัน
man -w ก็จะไม่เกิดอีสเตอร์เอ็กนี้อีก
คำตอบ 2
- อีสเตอร์เอ็กนี้ถูกรวมอยู่ในซอร์สโค้ดของคำสั่ง
man และจะแสดงผลเฉพาะในเวลาที่กำหนด
- พบได้ในหลายดิสทริบิวชัน เช่น RHEL, OpenSUSE, Fedora และ Debian
- อีสเตอร์เอ็กนี้ถูกนำออกโดย Colin Watson ผู้พัฒนา
man-db
คำตอบ 3
- อีสเตอร์เอ็กนี้มีกำหนดถูกนำออกใน
man-db เวอร์ชัน 2.8.0
- อีสเตอร์เอ็กนี้สร้างเสียงหัวเราะให้หลายคน แต่ก็ทำให้บางคนไม่สะดวกใจ
- Colin Watson เปิดโอกาสไว้ว่าอาจเพิ่มอีสเตอร์เอ็กในรูปแบบอื่นในอนาคต
สรุปโดย GN⁺
- บทความนี้กล่าวถึงปัญหาที่เกิดจากอีสเตอร์เอ็กในคำสั่ง
man โดยอีสเตอร์เอ็กนี้ได้รับแรงบันดาลใจจากเพลงของ ABBA และทำงานเฉพาะในเวลาที่กำหนด
- ปัญหานี้ได้รับการแก้ไขเมื่อผู้พัฒนา
man-db นำอีสเตอร์เอ็กออกไป ส่งผลให้ป้องกันข้อผิดพลาดที่ไม่คาดคิดในสภาพแวดล้อมการทดสอบอัตโนมัติได้
- บทความนี้เป็นตัวอย่างที่ดีว่าทำไมอีสเตอร์เอ็กในซอฟต์แวร์และสภาพแวดล้อมการทดสอบจึงอาจก่อปัญหาได้ โดยโปรเจ็กต์อื่นที่มีฟีเจอร์คล้ายกันคือคำสั่ง
info
3 ความคิดเห็น
ถ้าจะใส่ Easter egg แบบนี้ การตรวจสอบสักครั้งว่า standard input/output เป็น TTY หรือไม่ก็เป็นวิธีที่ดีครับ ถ้าเป็นเชลล์สคริปต์ก็ตรวจสอบได้ด้วย
[[ -t 1]]แปล
manเป็น "ผู้ชาย" สินะครับ 555ความคิดเห็นใน Hacker News
เมื่อก่อนตอนพัฒนาเว็บแอป telemedicine เคยทำฟีเจอร์ให้ผู้ป่วยกรอกแบบสอบถามออนไลน์แล้วแสดงคำตอบให้แพทย์ดู แต่ละแผนกของระบบการแพทย์ใช้ตรรกะการแสดงคำถามต่างกัน ระหว่างดีบักได้เผลอทิ้งข้อความ "I SEE YOU!!!" ไว้ และผู้ป่วยจิตเวชคนหนึ่งมาเห็นเข้า หลังจากนั้นเลยเปลี่ยนมาใช้ aaa กับ 111 เป็น debug marker
ถ้าซอฟต์แวร์แจกฟรีและผู้ดูแลก็ไม่ได้รับเงินเดือน การมี easter egg สักเล็กน้อยก็นับว่าเป็นราคาที่เล็กน้อย บริษัทแห่งหนึ่งเคยมีนักพัฒนาเพิ่มข้อความใน T&C ว่าผู้ใช้ยกวิญญาณให้บริษัท เพื่อทดสอบว่าฝ่ายบริหารได้อ่าน T&C จริงหรือไม่
การเขียนโค้ดควรจะสนุก และที่โอเพนซอร์สดูจริงจังเกินไปก็เพราะบริษัทต่าง ๆ โดยส่วนตัวเวลาเขียนโปรแกรมก็มักใส่ easter egg ลงไปเพื่อเตือนผู้ใช้ว่ายังมีความเป็นมนุษย์อยู่เบื้องหลัง
Colin Watson ผู้พัฒนา man-db ได้ลบ easter egg ออกทั้งหมด เพราะมันอาจก่ออันตรายต่อผู้ใช้ได้
ตอนตั้งค่า FreePBX เคยใส่เสียงหัวเราะของ Vincent Price จากเพลง Thriller ของ Michael Jackson ไว้ที่ extension 666 แต่เกิดข้อผิดพลาดของระบบทำให้ทุกสายโทรเข้าไปที่ 666 จนเพื่อนร่วมงานรู้สึกไม่สบายใจ
เคยติดตั้ง Ubuntu ลงบน QNAP Celeron NAS แต่ที่เวลาหนึ่งระบบจะเกิด kernel panic สาเหตุคือบั๊ก silicon degradation ของอุปกรณ์ J1900
อยากได้สมมติฐานว่าทำไมถึงมีเทสต์ที่เรียกคำสั่ง man โดยไม่ส่งอาร์กิวเมนต์ อาจเป็นไปได้ว่าใช้เพื่อตรวจสอบว่ามีการติดตั้ง man แล้วหรือไม่