บอร์ดสถานะมีไว้สำหรับ 'ผู้จัดการโครงการ'! ตอบโต้สิ่งก่อสร้างที่พังด้วยขีปนาวุธโฟมจำนวนมาก
การตอบโต้คือเครื่องตรวจสอบการสร้าง CI ของเจนกินส์ที่จะประสานงานการโจมตีตอบโต้ด้วยขีปนาวุธโฟมกับผู้พัฒนาที่ "ทำลายโครงสร้าง" โดยอัตโนมัติ ทำได้โดยการเล่นลำดับการควบคุมที่ตั้งโปรแกรมไว้ล่วงหน้ากับ เครื่องยิงขีปนาวุธโฟมแบบ USB เพื่อกำหนดเป้าหมายลิงรหัสที่กระทำผิด
ในระดับที่ลึกกว่านั้น การตอบโต้ เป็นมากกว่า "สคริปต์ python แบบธรรมดา" เป็นการคิดใหม่อย่างสิ้นเชิงเกี่ยวกับวิธีจัดการทีมพัฒนาซอฟต์แวร์และวงจรการพัฒนาซอฟต์แวร์ มันทำงานในระดับจิตวิทยาเชิงลึกเพื่อเสนอการปรับปรุงประสิทธิภาพการทำงานที่ไม่เคยเห็นมาก่อนใน "การเขียนโปรแกรมขั้นสูง" อื่น ๆ ทั้งหมดที่ที่ปรึกษาภายนอกพูดถึง ภัยคุกคามเบื้องต้นของการทำลายล้างที่แฝงตัวอยู่ในจิตใจของผู้เขียนโค้ดทุกคน ทำให้มั่นใจได้ว่าแม้แต่นักพัฒนาที่เลอะเทอะที่สุดของคุณก็จะไม่มีวันลืม "ตรวจสอบไฟล์ที่หายไป" อีกครั้ง!
การตอบโต้ทำให้เราได้รับการปรับปรุงประสิทธิภาพการทำงานในการเขียนโปรแกรมคู่ตามที่สัญญาไว้แต่ไม่สามารถบรรลุผลได้! เราพบว่าการแตกหักของบิลด์ลดลง 13.37% นับตั้งแต่มีการใช้งาน
วิลล์ หัวหน้าแฮกเกอร์โค้ด
จริงๆ แล้ว คุณจะทำงานในทีมผู้พัฒนาที่มีตัวแจ้งเตือนการสร้าง Lava Lamp หรือไม่? อะไรต่อไป? แผ่นรองเมาส์ Nyan Cat? นักเขียนโค้ดตัวจริงทำงานภายใต้การคุกคามของการตอบโต้!
แมตต์ เครื่องเข้ารหัส
ทำตามที่กล่าวไว้บนกล่อง ฉันได้เห็นการปรับปรุงในทีมของฉันและเรายังไม่ได้ติดตั้งเลย! การคุกคามที่แท้จริงทำให้การเขียนโค้ดของทีมของฉันเข้าที่เข้าทาง
ทอม หัวหน้ารหัสกัปตัน
คุณสามารถดูการดำเนินการ ตอบโต้ ได้ในวิดีโอนี้
ติดตั้ง Dream Cheeky Thunder USB Missile Launcher ของคุณในตำแหน่งศูนย์กลางและคงที่
ดาวน์โหลดสคริปต์ retaliation.py ลงบนระบบที่เชื่อมต่อกับเครื่องยิงขีปนาวุธของคุณ
แก้ไข COMMAND_SETS
ของคุณในสคริปต์ retaliation.py
เพื่อกำหนดคำสั่งการกำหนดเป้าหมายสำหรับโค้ดเดอร์ build-braking แต่ละตัว (ID ผู้ใช้ตามที่ระบุไว้ใน Jenkins) ชุดคำสั่งคืออาร์เรย์ของคำสั่งย้ายและยิง ขอแนะนำให้เริ่มแต่ละชุดคำสั่งด้วยคำสั่ง "ศูนย์" วิธีนี้จะจอด Launcher ไว้ในตำแหน่งที่ทราบ (ซ้ายล่าง) จากนั้นคุณสามารถใช้ "ขึ้น" และ "ขวา" ตามด้วยเวลา (เป็นมิลลิวินาที) เพื่อวางตำแหน่งการยิงของคุณ
คุณสามารถทดสอบชุดได้โดยการเรียก retaliation.py ด้วยชื่อเป้าหมาย เช่น:
python retaliation.py "[developer's user name]"
การลองผิดลองถูกเป็นแนวทางที่ดีที่สุด ลองทำเช่นนี้อย่างลับๆ หลังเลิกงานเพื่อผลลัพธ์ที่ดีที่สุด!
ตั้งค่าปลั๊กอินการแจ้งเตือนเจนกินส์ กำหนดจุดสิ้นสุด UDP
บนพอร์ต 22222
ซึ่งชี้ไปที่ระบบที่เป็นโฮสต์ retaliation.py
เคล็ดลับ: ตรวจสอบให้แน่ใจว่าไฟร์วอลล์ของคุณไม่ได้บล็อก UDP บนพอร์ตนี้
เริ่มฟังเหตุการณ์บิลด์ที่ล้มเหลวโดยการรันคำสั่ง:
python retaliation.py stalk
(ลองตั้งค่านี้เป็นสคริปต์บูต/เริ่มต้น บน Windows ให้เริ่มต้นด้วย pythonw.exe
เพื่อให้มันทำงานซ่อนอยู่ในพื้นหลัง)
รอ DEFCON 1 - เริ่มเกมสงครามได้เลย!
ขอขอบคุณทีมงาน dev ที่ PaperCut (ทำงานเกี่ยวกับซอฟต์แวร์การจัดการการพิมพ์) สำหรับ "การรับมือกับปัญหาบางอย่าง" ในระหว่างการทดสอบ!
เลือกตำแหน่งการติดตั้งอย่างระมัดระวัง เลือกทำเลใจกลางเมืองในพื้นที่สำนักงานของคุณ พยายามเพิ่มระยะห่างเชิงมุมระหว่างเป้าหมายให้สูงสุด วิธีนี้จะช่วยลดโอกาสที่จะเกิดเหตุการณ์ไฟไหม้ฝ่ายเดียวกัน... แต่อีกครั้ง สิ่งนี้มาพร้อมกับอาณาเขตและเป็นส่วนหนึ่งของความสนุก!
ลองติด Launcher ลงโดยใช้เทปสองหน้าเพื่อล็อคตำแหน่ง ซึ่งจะช่วยลดโอกาสที่ใครบางคนจะใช้ "แฮ็กทางกายภาพ" เพื่อขัดขวางระบบการกำหนดเป้าหมายแบบพิกัด
หากผู้กระทำความผิดที่ทำลายงานสร้างของคุณอยู่ในระยะเผาขน ด้วยเหตุผลด้านสุขภาพและความปลอดภัย เราขอแนะนำให้กำหนดเป้าหมายไปที่แป้นพิมพ์หรือจอภาพมากกว่าที่ศีรษะ
หากคุณมีพื้นที่กว้างให้ครอบคลุม ลองพิจารณาการยิงขีปนาวุธหลายครั้ง (เช่น การสนับสนุนคลัสเตอร์!) ตั้งค่าสคริปต์บนเครื่องหลายเครื่องและกำหนดค่าการแจ้งเตือนปลายทางหลายรายการใน Jenkins
เพื่อให้สิ่งนี้ใช้งานได้บน Windows คุณจะต้องติดตั้ง PyUSB และ libusb-win32 นี่อาจเป็นเรื่องยุ่งยากเล็กน้อย แต่ถ้าคุณเชี่ยวชาญสคริปต์บิลด์ CI แล้ว สิ่งนี้ก็น่าจะง่าย!
หากทีมผู้พัฒนาของคุณอยู่ในสถานะ Down Under และคุณพบว่า Retaliation กำลังสูญเสียเอฟเฟกต์ไป ให้ลองจุ่มมิสไซล์แต่ละลูกลงใน Vegemite เพื่อเพิ่มพลังโจมตี :-)
retaliation.py
ยังทำหน้าที่เป็น API การเขียนสคริปต์บรรทัดคำสั่งสำหรับ Dream Cheeky USB Missile Launcher คุณสามารถเรียกใช้เพื่อควบคุมอุปกรณ์จากสคริปต์หรือบรรทัดคำสั่งได้ดังนี้:
retaliation.py reset
retaliation.py right 3000
retaliation.py up 700
retaliation.py fire 1
หากคุณคิดจะใช้หรือไอเดียดีๆ อื่นๆ สำหรับการตอบโต้ โปรดแบ่งปันเรื่องราวของคุณ!