4 คะแนน โดย GN⁺ 2024-06-27 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • One Million Checkboxes เป็นเว็บไซต์ที่สร้างประสบการณ์บนหน้าจอเดียวด้วย ช่องทำเครื่องหมาย 1,000,000 ช่อง และตอนนี้ทุกช่องถูกทำเครื่องหมายไว้แล้ว
  • ข้อความด้านบน “we checked every box!” บอกให้รู้ทันทีว่าสถานะคือทำเครื่องหมายครบทั้งหมดแล้ว
  • หลังจากทำครบแล้วก็ยัง “เล่นคนเดียว” ต่อได้ จึงไม่ใช่แค่หน้าผลลัพธ์แบบเรียบ ๆ แต่ยังคงมีปฏิสัมพันธ์อยู่
  • จำนวนช่องที่ผู้ใช้ปัจจุบันทำเครื่องหมายไว้แสดงเป็น “You checked 0 boxes” ทำให้สถานะการทำครบทั้งหมดแยกจากความคืบหน้าส่วนบุคคล
  • บนหน้าจอมีการทำงาน Jump! และรายการของช่องที่ถูกทำเครื่องหมายต่อเนื่องกัน ทำให้เห็นร่องรอยของการทดลองช่องทำเครื่องหมายขนาดใหญ่ได้โดยตรง

สถานะการทำเครื่องหมายครบทั้งหมด

  • One Million Checkboxes แสดงว่า 1,000,000 boxes are ✅
  • ข้อความ “🎉 we checked every box! 🎉” แสดงให้เห็นว่าช่องทำเครื่องหมายทั้งหมดถูกทำเครื่องหมายแล้ว

ยังเล่นต่อได้หลังทำครบ

  • แม้จะทำเครื่องหมายครบทุกช่องแล้ว ก็ยังมีข้อความแนะนำว่า “but you can still play alone if you'd like”
  • จำนวนที่ผู้ใช้ปัจจุบันทำไว้แสดงเป็น 0 boxes

องค์ประกอบที่เห็นบนหน้าจอ

  • หน้าเว็บมีข้อความ Jump!
  • ในเนื้อหามีรายการช่องทำเครื่องหมายที่อยู่ในสถานะถูกทำเครื่องหมายแสดงซ้ำ ๆ

ผู้สร้าง

  • เว็บไซต์นี้ระบุว่าเป็นเว็บไซต์ที่สร้างโดย eieio

1 ความคิดเห็น

 
GN⁺ 2024-06-27
ความคิดเห็นจาก Hacker News
  • จากมุมมองนักพัฒนา มันดังเกินคาดไปมาก คิดว่า เซิร์ฟเวอร์คงต้องเหนื่อยพอสมควร ไปอีกพักหนึ่ง

    • การทำงานมีปัญหาร้ายแรงอยู่ จุดตัดบรรทัดเปลี่ยนไปตามระดับซูม/ความกว้างของหน้าจอ ดังนั้นต่อให้ผมเขียน กราฟฟิตีคำว่า boobs คนอื่นก็จะอ่านไม่ออกถ้าจุดตัดบรรทัดไม่เหมือนกัน
    • นึกถึง เครื่องมือจัดเรียงข้อมูลดิสก์ สมัยก่อนมาก อยากเปิดทิ้งไว้เบื้องหลังเพื่อรำลึกความหลัง: https://www.youtube.com/watch?v=KR3TbL3Tl6M
    • ผมโพสต์ลง FediVerse แล้ว และหลังจาก 4 ชั่วโมงก็ถูก บูสต์เกือบ 700 ครั้ง แล้ว แถมแพร่ไปถึง Reddit ภายใน 2 ชั่วโมงด้วย คุณคงรู้เพราะผมตอบกระทู้ Reddit โดยตรงไปแล้ว แต่ทราฟฟิกพุ่งช่วงแรกนี่มาแน่ ๆ
    • “ดังเกินคาด” งั้นเหรอ ทุกคนก็รู้อยู่แล้วว่าบน HN อะไรคือสิ่งสำคัญ
    • เปิดเซิร์ฟเวอร์เพิ่มอีก 5 เครื่อง แล้วอัดการปรับแต่งบางอย่างเข้าไป ตอนนี้น่าจะพอไหวไปอีกพัก
  • มีคนถามว่าทำไมถึงสร้าง “เช็กบ็อกซ์หนึ่งล้านช่องที่ใครก็มาเช็กได้” คำตอบคือมันผุดขึ้นมาระหว่างคุยกันเมื่อวันศุกร์ที่แล้ว และรู้สึกขึ้นมาว่าต้องสร้างมันให้ได้ นี่คือ เหตุผลที่ดีที่สุด เลย :)

    • มันโง่เกินไปจนกลับกลายเป็นว่าจำเป็นต้องทำ
  • ตอนแรกผมคลิกอยู่ด้านบน แต่คนอื่นก็มาแก้สิ่งที่ผมทำไว้เรื่อย ๆ เลยคิดว่าทำไมพวกเราถึงร่วมมือกันเช็กให้ครบทุกช่องอย่างสามัคคีไม่ได้กันนะ
    เลยคิดว่าถ้าลงไปข้างล่างน่าจะทะเลาะกันน้อยลง แล้วก็อยู่คนเดียวอยู่พักหนึ่ง งานมันน่าเบื่อและไร้ความหมาย แต่ก็สงบดี
    แล้วผมก็เจอคนที่เช็กเหมือนผม แต่ยังไม่ถึง 5 วินาทีก็หายไป พอเลื่อนต่อไปเรื่อย ๆ และเช็กไปด้วย แล้วกลับขึ้นไปดูข้างบนเล็กน้อย ก็พบว่ามีช่องที่ถูกยกเลิกเช็กแบบสุ่มโผล่มา ทั้งที่ไม่เห็นใครยกเลิกเลย เหมือนมี ผียกเลิกเช็ก อยู่

    • ทำไมต้องทำลายด้วย ผมแค่พยายามคืนเช็กบ็อกซ์สู่ สภาพธรรมชาติดั้งเดิม ของมันเท่านั้น
    • ผมย้ายไปตำแหน่งสุ่มที่ลึกลงไปมาก แล้วพยายามเขียนคำว่า HELLO ด้วยการเช็ก แต่ยังเขียน H ไม่ทันเสร็จก็มีคนมาหาและทำพังเสียแล้ว ชวนให้คิดว่า สมุดบัญชีศิลปะเช็กบ็อกซ์หนึ่งล้านช่อง นี้คงต้องพังทลายลงด้วยความบ้าคลั่งในที่สุด
      เลื่อนเท่าไรก็ไม่มีอะไรที่แยกแยะได้ มีแต่ดินแดนรกร้างไร้ความหมาย มันคือความโกลาหลล้วน ๆ
    • แปลกมากที่ผมก็เคลื่อนไหวด้วยเจตนาและวิธีเดียวกันเป๊ะ เหมือนเป็นกระจกสะท้อนตัวเราเอง
      คงไม่ใช่แค่พวกเราหรอก น่าจะมีหลายคนที่ตั้งใจเช็กทีละแถว หรือทำตามแพตเทิร์นสม่ำเสมอแบบอื่น ๆ เพื่อปลอบก็อบลินในหัวที่ตะโกนเรียกร้องระเบียบ
      ถ้าเข้าหน้าเว็บมาแล้วทุกช่องถูกเช็กไว้หมด ผมคงรู้สึกว่าเสร็จสมบูรณ์และจากไปโดยปล่อยให้มันอยู่ในสภาพสมบูรณ์แบบนั้น แต่ยากจริง ๆ ที่จะเข้าใจคนบ้าที่จะทำลายความงามนั้นเพื่อเขียนคำว่า “boobs” ;)
  • ผมลอง $$('input[type=checkbox]').forEach(elt => elt.click()); แล้วมีคำเตือน "CHILL LOL" เด้งขึ้นมา เว็บสนุกดี

    • ตอนนี้ถึงตาเขียน สคริปต์ Playwright แล้ว
      แค่เปิดเบราว์เซอร์ด้วย chromium เข้าไปที่หน้าเว็บ หา input[type=checkbox] ทั้งหมดแล้วคลิกก็พอ
      ถึงอย่างนั้นผมก็แอบภูมิใจที่ไม่ได้รันสคริปต์ แต่ใช้นิ้วกดรัว ๆ จนขึ้นคำเตือน “CHILL” ได้
    • ต้องส่ง 42["toggle... ตรงผ่าน WebSocket แน่นอนว่าถ้าไม่ใช่เพื่อยกเลิกเช็ก แต่ต้องการเลี่ยงการสลับสถานะ ก่อนอื่นก็ต้องตรวจดูว่าช่องไหนถูกเช็กอยู่ก่อน
    • สงสัยว่าจะมีวิธีหลอกให้มันยอมรับ JavaScript ที่เช็กทุกกล่องไหม
    • document.querySelectorAll("input[type=checkbox]").forEach(i => { i.checked = false; }); ดูเหมือนจะทำงานได้ชั่วครู่ และไม่มีคำเตือนขึ้นด้วย
  • ทุกช่องควรถูกเช็ก ขอให้คนที่กำลังยกเลิกเช็กลองคิดดูใหม่ แล้วมาอยู่ ฝ่ายเช็ก กันเถอะ

    • หักมุม: สำหรับผู้ชมครึ่งหนึ่ง มันจะดูสลับกลับด้าน
    • ท่าทีแบบ “ทั้งสองฝ่ายก็เหมือนกัน” นี่แหละที่ทำให้เรามาถึงจุดนี้ตั้งแต่แรก เดือนพฤศจิกายนนี้ไป โหวตให้ Unchecked กัน
    • ผมเช็กเองไป 1,000 ช่อง หรือ 0.1% และถือว่าทำส่วนของตัวเองแล้ว ทำด้วยแรงงาน/อัลกอริทึมมนุษย์ล้วน ๆ ไม่ใช้สคริปต์
      สคริปต์ JS ง่าย ๆ คงทำให้เร็วขึ้นได้ 2–5 เท่า แต่คิดว่าน่าจะมี rate limit และไม่เข้ากับจิตวิญญาณของสิ่งแปลก ๆ นี้ด้วย
      ทำให้นึกถึง Curiosity ของ Peter Molyneux: https://en.wikipedia.org/wiki/Curiosity%3A_What%27s_Inside_t...
    • เอามือออกจากกล่องของผม ยิ่งเช็กมากเท่าไร เสรีภาพก็ยิ่งลดลง ผมสนับสนุนให้ปล่อยบางกล่องไว้โดยไม่ถูกเช็ก โดยเฉพาะถ้าเป็นกล่องที่มีของส่วนตัวของผมอยู่ในนั้น
    • ผมคิดใหม่แล้ว และตอนนี้อยู่ฝ่าย แก๊งยกเลิกเช็ก
  • คำพูดที่ชอบ: “น่าพึงพอใจสุด ๆ เหมือน MMO บับเบิลกันกระแทก”, “ของเล่นขยุกขยิกสำหรับคนทั้งโลก”, “ยอดเยี่ยม! เซิร์ฟเวอร์ WebSocket น่าจะกำลัง brrr อยู่แน่ ๆ”
    https://x.com/itseieio/status/1805986839058079896

  • ผมทำ สคริปต์ผู้ใช้สำหรับอัตโนมัติการเช็ก สำหรับ Tampermonkey ขึ้นมา มันค้นหาเช็กบ็อกซ์ทั้งหมดที่ https://onemillioncheckboxes.com/ เช็กช่องที่ยังไม่ถูกเช็ก และใช้ MutationObserver เพื่อรันซ้ำทุกครั้งที่ DOM เปลี่ยน

    • พูดตรง ๆ แบบนี้รู้สึกเหมือน ทำลายจุดประสงค์ของเว็บนี้เอง
    • วิธีนี้ไม่น่าจะใช้ได้กับเช็กบ็อกซ์ 1,000,000 ช่อง ใช้ requestAnimationFrame หรือหาเฉพาะช่องที่ยังไม่ถูกเช็กด้วย querySelectorAll('input[type="checkbox"]:not(:checked)') หรือไม่เรียก checkAllCheckboxes ทุกครั้งที่มีการเปลี่ยนแปลงจะดีกว่า
      หรือจะใช้ querySelector('input[type="checkbox"]:not(:checked)') หาไปทีละช่อง แล้วจัดการในลูปแบบ while(true) ก็ได้
  • ผมคิดว่าตารางเช็กบ็อกซ์ควรถูกล็อกความกว้างไว้แน่นอน เห็นอยู่ว่าคนพยายามวาดรูป แต่บนหน้าจอผมมัน ดูเบี้ยว

    • ในฐานะคนทำเว็บ ผมตั้งใจให้เป็นแบบนั้น การทดลองวาดภาพร่วมกันบนอินเทอร์เน็ตด้วยแคนวาสคงที่ที่วาดได้ง่ายมีมากพอแล้ว ผมเลยอยากรู้ว่าถ้าลองทำอะไรที่ต่างออกไปนิดหน่อยจะได้อะไร
      แน่นอนว่ามันอาจเป็นไอเดียโง่ ๆ ก็ได้ แต่ผมอยากลองดู
    • เสียดาย รูปอวัยวะเพศชายขนาดยักษ์ที่ผมวาดจะเห็นได้ถูกต้องเฉพาะที่ความกว้างที่ผมตั้งไว้เท่านั้น สงสัยว่าผมพลาดรูปสุ่ม ๆ ไปมากแค่ไหน
      การจัดเรียงใหม่ก็ใช้เวลาเหมือนกัน เลยไม่ง่ายที่จะปรับขนาดหน้าต่างแล้วดูแบบเรียลไทม์ว่าคนอื่นกำลังทำอะไรอยู่
    • การต้อง “สแกน” เพื่อดูให้ออกว่าเป็นภาพอะไรก็สนุกไปอีกแบบ และยังหมายความว่าศิลปินเลือกความกว้างของผลงานตัวเองได้ด้วย
      คนจำนวนมากใช้ความกว้างหน้าจอใกล้เคียงกัน ดังนั้นจำนวนคอมบิเนชันจริง ๆ ก็ไม่ได้มากอย่างที่คิด
  • งานเจ๋งมาก ผมอิจฉานิด ๆ เพราะอยากลองทำอะไรที่ต้องสเกลอย่างรวดเร็วพร้อมเห็นว่าการทดลองแบบนี้มีคนใช้มากแค่ไหน แต่หัวผมไหม้เกรียมกับเรื่องไร้สาระของบริษัทไปแล้ว และ ความคิดสร้างสรรค์อยู่ในห้องใต้ดิน
    ยังจะหาบริษัทที่ทำงานได้โดยไม่ต้องเสียเวลา 90% ไปกับประชุมและเอกสารได้จากที่ไหนกันนะ
    อาจเป็นเพราะคลิกเยอะเกินไป ตอนนี้สิ่งที่อยู่ในหัวเลยไหลออกมาที่นี่ แทนที่จะตายอย่างเงียบ ๆ ด้วยความเจ็บปวด :D

    • ความรู้สึกนั้นพบได้บ่อยมาก และผมก็เริ่มเขียนถึงความรู้สึกก้นบึ้งแบบนั้นแล้ว
      คำตอบคือ ถ้ามันไม่ใช่คำตอบสำหรับคุณ มันก็ไม่ใช่ คนมีสองประเภท คนที่งานไม่ครอบงำจิตใจ กับคนที่ถูกมันครอบงำ ถ้าถูกครอบงำแล้ว ก็ยากที่จะทำอย่างอื่นโดยไม่ปล่อยปละงาน
      งานส่วนใหญ่คือประชุมและเอกสาร 90% โดยคร่าว ๆ แล้วนั่นแทบจะเป็นนิยามของงานประจำเลย สตาร์ตอัปเป็นข้อยกเว้น แต่ฝั่งนั้นครอบงำจิตใจแน่นอน
      ความคิดสร้างสรรค์ของผมก็อยู่ในห้องใต้ดินมาประมาณหนึ่งปีแล้ว มีช่วงแบบนั้นอยู่ อย่าไปฝืนสู้ ลองพยายามมีความสุขจะดีกว่า จากประสบการณ์ของผม นั่นเป็นทางเดียวที่จะได้ความคิดสร้างสรรค์กลับมา
    • ช่วงนี้ดูเหมือน สตาร์ตอัประยะเริ่มต้น หรือไม่ก็สร้างบริษัทของตัวเองตั้งแต่แรก น่าจะใกล้เคียงกรณีแบบนั้นที่สุด ผมก็อยู่ในสถานการณ์เดียวกัน แต่โปรเจกต์ข้างเคียงช่วยให้ประคองตัวได้
    • ทำเองเลยไม่ได้เหรอ?
  • การยกเลิกเช็กกล่องทั้งหมดนี้เป็น งานที่ไม่มีใครเห็นคุณค่า