2 คะแนน โดย GN⁺ 2024-10-05 | 3 ความคิดเห็น | แชร์ทาง WhatsApp

คำถาม

  • มีการตั้งคำถามว่าทำไมการทดสอบอัตโนมัติถึงล้มเหลวในเวลาหนึ่งโดยเฉพาะ การทดสอบล้มเหลวตอน 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 ความคิดเห็น

 
tribela 2024-10-07

ถ้าจะใส่ Easter egg แบบนี้ การตรวจสอบสักครั้งว่า standard input/output เป็น TTY หรือไม่ก็เป็นวิธีที่ดีครับ ถ้าเป็นเชลล์สคริปต์ก็ตรวจสอบได้ด้วย [[ -t 1]]

 
y15un 2024-10-05

แปล man เป็น "ผู้ชาย" สินะครับ 555

 
GN⁺ 2024-10-05
ความคิดเห็นใน 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 แล้วหรือไม่