1 คะแนน โดย GN⁺ 2025-04-29 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ใน Windows 7 และ Windows Server 2008 R2 หากใช้ พื้นหลังเดสก์ท็อปสีล้วน หน้าจอ Welcome ระหว่างการเข้าสู่ระบบอาจค้างอยู่นานสูงสุด 30 วินาที โดยสาเหตุคือสัญญาณแจ้งว่าพร้อมแล้วขาดหายไป
  • ระบบเข้าสู่ระบบจะเปลี่ยนออกจากหน้าจอ Welcome ก็ต่อเมื่อทาสก์บาร์, คอมโพเนนต์ของบริการระบบ, หน้าต่างเดสก์ท็อป, การแสดงวอลล์เปเปอร์ ฯลฯ ทั้งหมดรายงานว่า พร้อมแล้ว หรือเวลาผ่านไป 30 วินาที
  • โค้ดวอลล์เปเปอร์เรียก Report(WallpaperReady) เฉพาะเมื่อมี พื้นหลังแบบบิตแมป ทำให้พื้นหลังสีล้วนที่ไม่มีบิตแมปต้องรอจนเงื่อนไขครบเวลาสุดท้าย
  • Group Policy “Hide desktop icons” ก็เป็นแพตเทิร์นเดียวกัน หากการเรียก Report(DesktopIconsReady) ถูกผูกไว้ในเงื่อนไข ก็อาจพลาดการรายงานว่าไอคอนพร้อมแล้วได้
  • ไม่ได้หมายความว่าการเข้าสู่ระบบจริงยืดออกไป 30 วินาทีเสมอไป แต่เป็นปรากฏการณ์ที่หน้าจอ Welcome ยังคงอยู่จนถึง timeout 30 วินาที โดยไม่เกี่ยวกับกระบวนการเตรียมพร้อมที่เดิมอาจเสร็จใน 5 หรือ 25 วินาที

เหตุผลที่หน้าจอ Welcome ค้างนานเมื่อใช้พื้นหลังสีล้วน

  • หลังจากการยืนยันตัวตนเข้าสู่ระบบเสร็จ Windows จะจัดเตรียม สภาพแวดล้อมเดสก์ท็อป ของผู้ใช้
    • สร้างทาสก์บาร์
    • โหลดและเริ่มต้นคอมโพเนนต์ที่รับผิดชอบบริการระบบหลายรายการ
    • สร้างหน้าต่างเดสก์ท็อปและแสดงไอคอน
    • โหลดวอลล์เปเปอร์ในหน้าต่างพื้นหลังเดสก์ท็อปและวาดลงบนหน้าจอ
  • ระบบเข้าสู่ระบบจะรอจนกว่าแต่ละคอมโพเนนต์จะรายงานว่าพร้อมแล้ว
    • หากคอมโพเนนต์ทั้งหมดรายงานว่าพร้อมแล้ว ก็จะเปลี่ยนออกจากหน้าจอ Welcome
    • หรือหากผ่านไป 30 วินาที ก็จะเปลี่ยนออกจากหน้าจอ Welcome
  • ปัญหาพื้นหลังสีล้วนเกิดขึ้นเพราะการรายงานว่าวอลล์เปเปอร์พร้อมแล้วอยู่ ภายในโค้ดโหลดบิตแมป
    • หากมีการกำหนดพื้นหลังแบบบิตแมปไว้ ระบบจะหาไฟล์ โหลดเข้าเมโมรี วาดลงบนหน้าจอ แล้วเรียก Report(WallpaperReady)
    • หากไม่มีบิตแมป เช่น พื้นหลังสีล้วน เส้นทางโค้ดดังกล่าวจะไม่ถูกเรียก จึงไม่เกิดการรายงาน WallpaperReady
    • ระบบเข้าสู่ระบบจึงรอรายงานที่จะไม่มีวันมา จนถึงขีดจำกัด 30 วินาที

การขาดสัญญาณพร้อมแล้วที่เกิดซ้ำใน Group Policy

  • เอกสารซัพพอร์ตที่เกี่ยวข้องระบุว่า หากเปิด Group Policy “Hide desktop icons” ก็อาจพบความล่าช้า 30 วินาทีได้เช่นกัน
  • Group Policy มักถูกเสริมเข้าไปภายหลังบนโค้ดเดิม จึงมักถูกครอบด้วยเงื่อนไขอย่าง “ถ้านโยบายอนุญาตจึงทำงาน”
    • เดิมโค้ดเริ่มต้นไอคอนเดสก์ท็อปจะ bind กับโฟลเดอร์เดสก์ท็อป, enumerate ไอคอน, เพิ่มลงบนหน้าจอ แล้วเรียก Report(DesktopIconsReady)
    • เมื่อเพิ่มการรองรับ Group Policy แล้วทั้งบล็อกนี้ถูกย้ายเข้าไปอยู่ในเงื่อนไขของนโยบาย หากนโยบายซ่อนไอคอนเปิดใช้งานอยู่ การรายงานว่าพร้อมแล้วก็จะไม่ถูกเรียกด้วย
  • ปรากฏการณ์นี้ไม่ได้หมายความว่างานเข้าสู่ระบบเองใช้เวลาเพิ่มอีก 30 วินาที
    • ขึ้นอยู่กับประสิทธิภาพของระบบ เวลาที่รายงานความพร้อมทั้งหมดเสร็จแต่เดิมอาจเป็น 5 วินาที หรือ 25 วินาที ก็ได้
    • หากมีปัญหา หน้าจอ Welcome จะคงอยู่จนถึง timeout 30 วินาที โดยไม่เกี่ยวกับเวลาพร้อมจริง
  • อ้างอิงจาก timestamp ของเอกสาร ปัญหานี้ถูกแก้ใน พฤศจิกายน 2009 ซึ่งเป็นเวลาหลายเดือนหลังจาก Windows 7 เปิดตัวใน กรกฎาคม 2009
  • เหตุผลหนึ่งที่หลีกเลี่ยงพื้นหลังแบบบิตแมปคือ ในอดีตที่สภาพแวดล้อมมีหน่วยความจำ 4MB หรือ 8MB การใช้วอลล์เปเปอร์เพียงอย่างเดียวกินประมาณ 0.75MB ซึ่งถือเป็นภาระ

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

 
GN⁺ 2025-04-29
ความคิดเห็นจาก Hacker News
  • ในฐานะคนที่ชอบพื้นหลังสีล้วน ผม/ฉันแปลกใจเสมอที่รสนิยมเรียบง่ายแบบนี้มักพาไปสู่โพรงกระต่ายแปลก ๆ
    ใน macOS รุ่นล่าสุด ถ้าพยายามตั้งพื้นหลังสีล้วนแบบกำหนดเอง จะขึ้นมาแค่หน้าจอสีขาวจ้า: https://discussions.apple.com/thread/256029958?sortBy=rank
    GNOME เอา UI สำหรับตั้งพื้นหลังสีล้วนออกไปหมดแล้ว แต่ในทางเทคนิคยังทำได้ถ้าแก้คีย์การตั้งค่าหลายตัวด้วยมือ และดูเหมือนว่าคีย์เหล่านั้นก็เปลี่ยนไปแบบสุ่มในแต่ละเวอร์ชันด้วย: https://www.tc3.dev/posts/2021-09-04-gnome-3-solid-color-bac...
    สุดท้ายมันดูเหมือนฟีเจอร์ที่เหลือไว้ครึ่ง ๆ กลาง ๆ เพื่อผู้ใช้ส่วนน้อย และน่าจะดีกว่าถ้าจะสนับสนุนให้ถูกต้องหรือเอาออกให้สะอาดไปเลย ผม/ฉันแค่อยากใส่ค่า RGB ตรง ๆ แต่ถ้าเป็นสภาพตอนนี้ ระบบวอลเปเปอร์เดียวที่ดูแลดีน่าจะดีกว่าลอจิกสีพื้นหลังที่ไม่นิ่ง

    • ลองเช็กใน KDE แล้ว ถ้าเลือก wallpaper type: plain color ในการตั้งค่าวอลเปเปอร์ จะกำหนดด้วย ตัวเลือกสี ได้
      มีการแสดงหน้าจอที่จะนำไปใช้ให้ดูด้วย และมีตัวเลือกแบบบูลีนเพื่อใช้กับทุกหน้าจอในครั้งเดียว
    • ครั้งสุดท้ายที่ใช้โทรศัพท์ Android Galaxy ถ้าจะใช้พื้นหลังสีดำสนิท ต้องไปดาวน์โหลดภาพสีดำจากที่อย่าง Galaxy Store
      ทั้งที่บนจอโทรศัพท์สมัยใหม่มันสมเหตุสมผลในแง่การใช้พลังงานและก็ดูโอเค แต่สิ่งที่ควรเป็นตัวเลือกพื้นฐานหรือสวิตช์แตะครั้งเดียวในการตั้งค่า กลับกลายเป็นงานจุกจิกที่ต้องผ่านความไม่ไว้ใจ การค้นหา และการยอมจำนน
    • การที่ GNOME เอา UI สำหรับพื้นหลังสีล้วนออกไป แล้วเหลือไว้แค่การแก้คีย์การตั้งค่าด้วยมือ นี่คือจุดสูงสุดของ ประสบการณ์แบบ GNOME จริง ๆ
    • เมื่อไม่นานมานี้ใน macOS ผม/ฉันก็ตั้งสีล้วนไว้ แต่หลายครั้งมันกลับไปเป็นภาพป่าเริ่มต้น
      ใน OS X สมัยก่อน ฟีเจอร์นี้ใช้งานได้ดีมานานกว่า 20 ปี เลยดูเหมือนจะเกี่ยวกับ การเขียน System Preferences ใหม่
    • ผม/ฉันก็ชอบสีล้วนเหมือนกัน แต่รู้สึกว่าเปลี่ยนไปก็ไม่ค่อยมีความหมาย
      เพราะชอร์ตคัตบนเดสก์ท็อปถูกใช้เกินพอดีมาหลายยุค การโชว์เดสก์ท็อปจึงกลายเป็นการเปลืองพื้นที่หน้าจอ และต่อให้ระวัง สุดท้ายก็กลายเป็นแดนรกร้างรก ๆ อยู่ดี โดยเฉพาะบน Windows ผม/ฉันเลยชินกับการไม่ใช้เดสก์ท็อปทำอะไรเลย และเปิดหน้าต่างค้างไว้บนหลายจอตลอดเวลาแทน
  • หลังจากหลีกเลี่ยงโลก Windows มาตลอด 25 ปี แล้วเพิ่งกลับมาอยู่ในสภาพแวดล้อมองค์กรช่วงไม่กี่ปีนี้ ผม/ฉันเห็นแพตเทิร์นแบบนี้ซ้ำ ๆ ในเครื่องมือของ Microsoft
    เช่น Teams โหลดไม่ได้เพราะปัญหาความปลอดภัย แต่ในแจ้งเตือนกลับแสดงเนื้อหาข้อความทั้งหมด หรือใน Word เวอร์ชันคลาวด์ ต้องพิมพ์ไปสองสามคำหรือวางทั้งเอกสารก่อน การตรวจสอบความปลอดภัยถึงค่อยตามมาและขอให้ตั้งป้ายกำกับความละเอียดอ่อน
    มันดูเป็นสัญญาณว่าสถาปัตยกรรมซอฟต์แวร์เว็บแอปของ Microsoft แย่มาก และแอปเดสก์ท็อปก็ดูจะไม่ใช่ข้อยกเว้น

    • ไม่ใช่ปัญหาเฉพาะ Microsoft เท่านั้น จำได้ว่า Google Photos สมัยก่อนก็เคยส่งแจ้งเตือนพรีวิว อัลบั้มที่ AI สร้าง จากรูปของผม/ฉัน ทั้งที่แอปไม่มีสิทธิ์เข้าถึงรูปภาพ
      หลังจากนั้นค่อยมีคำขอสิทธิ์ตามมา และถ้าปฏิเสธ พรีวิวก็หายไป
    • มักพูดติดตลกว่า ผลิตภัณฑ์ของ Microsoft เสร็จ 80% เสมอ
      ใน use case ที่ชัดเจนมันทำงานได้ดีมาก แต่พอเจอ edge case ที่ไม่ได้ครอบคลุม ก็จะชนปัญหาแปลก ๆ ทันที นักพัฒนาไม่ได้มีชื่อเสียงว่าไร้ฝีมือ ดังนั้นอาจเป็นเพราะวัฒนธรรมองค์กรหรือวิธีทำงาน และสำหรับฐานผู้ใช้ขนาดมหึมา 80% อาจเหมาะที่สุดในเชิงธุรกิจก็ได้ แต่ในฐานะนักพัฒนาภายนอก ก็ยังทำให้พยายามเลี่ยงผลิตภัณฑ์ Microsoft ถ้าทำได้
    • สิ่งที่น่าหงุดหงิดที่สุดคือเครื่อง Windows สูญเสียความสามารถในการ deep sleep ไปแล้ว
      แล็ปท็อปที่เมื่อ 5 ปีก่อนเคยหลับได้สมบูรณ์ ตอนนี้กลายเป็นซอมบี้ 24 ชั่วโมงที่ CPU พัดลม และฮาร์ดดิสก์ยังหมุนตลอด
      ผม/ฉันมั่นใจว่าการเปลี่ยนแปลงโง่ ๆ คล้ายกับที่บทความพูดถึงได้ทำลายฟีเจอร์ที่เคยใช้ได้ดี และไม่มีใครแก้ เพราะกลัวจะไปขัดขวางไอเดียเพ้อเจ้อใหม่ ๆ ที่จะทำให้แล็ปท็อปอายุ 10 ปีรัน AI ระหว่างหลับเพื่อเสนอ广告จากสิ่งที่มันแอบฟัง
  • เรื่องนี้เชื่อมโยงกับแนวปฏิบัติที่น่าจะเริ่มขึ้นช่วงนั้น: การแสดง splash screen แค่ระยะเวลาหนึ่ง แล้วแสดงสภาพแวดล้อมผู้ใช้ก่อนที่ซอฟต์แวร์จะเริ่มทำงานสมบูรณ์
    สงสัยว่าทั้งระบบปฏิบัติการและแอปทำแบบนั้นเพื่อเลี่ยงความรู้สึกว่า “แอปใช้เวลานานเกินไป” ตอนนี้ผู้ใช้ต้องเดาเองว่าซอฟต์แวร์โหลดจริง ๆ เสร็จหรือยังก่อนจะใช้งาน

    • ในสภาพแวดล้อมระบบสารสนเทศขององค์กร ต้องรอให้ระบบความปลอดภัยและมอนิเตอร์หลายตัวสแกนและบล็อกหน่วยความจำ พร้อมบันทึกรายละเอียดลงคลาวด์ก่อน
      จากนั้นถึงจะได้เห็น UI thread ที่ไม่ตอบสนอง ซึ่งนั่งรอซอฟต์แวร์ชั้นล่างทั้งหมดโหลดจนเสร็จอย่างเหม่อลอย
    • เจตนาของ timeout 30 วินาที นี้ดูชัดเจน
      เดสก์ท็อปที่ถึงจะพังไปครึ่งหนึ่งแต่ก็ยังพอใช้ได้ ย่อมดีกว่าสถานการณ์ที่ติดอยู่บนหน้าจอโหลดตลอดกาลจนต้องบูตเข้า OS อื่นเพื่อแก้
    • วิธี “แสดงสภาพแวดล้อมผู้ใช้ก่อนที่ซอฟต์แวร์จะเริ่มทำงานสมบูรณ์” ได้ย้ายมาอยู่ใน เว็บแอป ทุกวันนี้
      พอทำอะไรสักอย่าง UI จะแสดงวงล้อโหลด/ความคืบหน้า แต่จริง ๆ แล้วค้างยาวไม่รู้จบ และตอนเริ่มหน้าเว็บก็ขึ้นจอว่างพร้อมแถบ placeholder หรือภาพสีเบลอ ๆ นี่แหละที่เขาเรียกกันว่า responsive design
    • ในกรณีแบบนี้ ถ้าไม่มี timeout ที่หลัง 30 วินาทีจะ “ถือว่าโหลดแล้ว” ผู้ใช้ที่เจอบั๊กก็จะติดอยู่บนหน้าจอโหลดไปตลอดกาล
      บางครั้งการที่ระบบ จัดการแบบมองโลกในแง่ดี ว่าโหลดเสร็จแล้วจริง ๆ อาจดีกว่าสำหรับผู้ใช้
  • ได้เรียนรู้วิธีใช้ค่าตั้งต้นแทบทุกที่
    การดูแลการปรับแต่งเองมันยุ่งยากเกินไป ดังนั้นวิธีที่ง่ายที่สุดคือไม่ต้องไปใส่ใจ ข้อยกเว้นคือการตั้งค่า VS Code ประมาณ 50 บรรทัดที่ซิงก์อยู่ในไฟล์ลึกลับที่ไหนสักแห่ง น่าจะอยู่บนเซิร์ฟเวอร์ GitHub แต่ไม่มีที่ไหนที่ฉันมองเห็นได้

    • เครื่องมือที่พึ่งพามีแค่ไม่กี่ตัว เช่น emacs, vim, lf, mpv, fish, foot เลยใช้เวลาตั้งค่าแล้วใส่ไว้ใน Git repository เพื่อซิงก์ได้ทุกที่
      บนคอมพิวเตอร์ส่วนตัวใช้ stow ส่วนบนเครื่องระยะไกลก็ copy-paste ชอบตรงที่เครื่องมือพวกนี้เสถียรมากจนย้ายไป Debian stable ก็ยังใช้ได้ดี
    • การดูแลการปรับแต่งเองมันยุ่งยากขนาดนั้นจริงหรือ? ส่วนใหญ่พอตั้งค่าตามที่ต้องการแล้ว ก็ปล่อยไว้อย่างนั้นได้เป็นปีๆ แบบแท้จริง
      แม้จะกู้คืนแบ็กอัป Sublime Text จากเมื่อหลายปีก่อนทันที การตั้งค่าผู้ใช้ของฉันก็ยังทำงานได้
    • การตั้งค่าที่ทำซ้ำได้และครบในตัวเองให้ประโยชน์แบบเดียวกันเป็นส่วนใหญ่แม้แต่ในการรายงานบั๊ก
      ถ้าจะพูดเหมือนการเตือนเป็นระยะๆ ก็คือ nix ดีจริงๆ
      สามารถพูดได้ว่า “มีบั๊กอยู่ และรับ VM สำหรับจำลองปัญหาได้ด้วย nixos-rebuild build-vm --flake "github:user/repo#test-vm" && ./result/bin/run-*-vm” โค้ดที่สร้าง VM นั้นก็ไม่ใช่ก้อน binary ที่เหมือนฝันร้ายด้านความปลอดภัย แต่เป็นนิพจน์ nix ธรรมดาที่ใครๆ ก็อ่านได้ และการนำไปใช้กับเครื่องใหม่ก็จบด้วยคำสั่งเดียว
    • การใช้ค่าตั้งต้นที่แย่ก็ยุ่งยากเหมือนกัน และต้องเจอบ่อยกว่าการดูแลการปรับแต่งเองมาก
    • เคยมีอาจารย์คนหนึ่งพูดว่า “ค่าตั้งต้นคงถูกใส่มาโดยคนที่รู้จักซอฟต์แวร์นั้นดีกว่าคุณ”
      ถ้าเข้าใจว่าค่าตั้งต้นทำอะไรอยู่ การไปแตะทุกตัวเลือกในโลกมักจะยุ่งยากกว่า
  • สำนวน “comfort food” นี่ตลกดี หลังจากย้ายจาก AIX มา Linux แล้วก็ยังใช้ motif window manager กับเดสก์ท็อปสี steelblue4 และพื้นหลัง xterm สี wheat อยู่
    มันเป็นค่าตั้งต้นที่ได้เจอครั้งแรกตอนอยู่มหาวิทยาลัยในปี 1989 และรู้สึกว่าหลังจากนั้นก็ยังไม่มีอะไรดีขึ้นเลย ของอย่าง GNOME, KDE ทำให้รู้สึกคลื่นไส้

    • “comfort food” ในบทความนี้คือการตระหนักว่า ไม่ว่าทีมจะใหญ่และหรูหราแค่ไหน ทุกทีมก็ปล่อยการเปลี่ยนแปลงที่โง่จริงๆ ขึ้น production ได้ทั้งนั้น
      wrapper if() ที่แปะเพิ่มมาแล้วขอบเขตกว้างเกินไปเล็กน้อยเป็นกรณีคลาสสิก
    • รู้สึกคิดถึง bb4win อยู่ ได้รู้จักตอนมหาวิทยาลัย และเป็นจุดเริ่มต้นให้ได้ลอง Linux
      ความคิดถึงอดีต เป็นยาที่ทรงพลัง
    • สงสัยว่าถ้าอยากใช้จอ 4K จะทำอย่างไร
      ไม่ได้ประชดนะ แต่อยากรู้จริงๆ ว่า HiDPI บน motif ใช้งานได้จริงหรือเปล่า
  • เมื่อนานมาแล้วสมัยใช้ Windows เป็นงานอดิเรก เคยแก้ค่าของ คีย์ Windows Registry บางตัวเพื่อเปลี่ยน explorer.exe เป็น cmd.exe
    แบบนั้น Windows จะไม่รัน explorer.exe เพื่อเปิดเดสก์ท็อปที่มีวอลเปเปอร์และไอคอน แต่จะกลายเป็นสภาพแวดล้อมที่แต่ละหน้าต่างเปิดเป็นเชลล์ Microsoft cmd.exe บนพื้นหลังสีล้วน คล้ายตัวจัดการหน้าต่างของ UNIX เป็นกล่องดำ Windows แบบคลาสสิกที่มีแถบชื่อเรื่องสีน้ำเงินและขอบสีเทาบางๆ และจาก command prompt ก็เรียกแอปอย่าง taskmgr.exe ใน C:\windows\system32 ได้
    สำหรับฉันมันรู้สึกเร็วและทนทานกว่าใช้ explorer.exe มาก และเบากว่าแน่นอน ต่อมาฉันเห็นภาพในบทความของ Arthur Whitney ที่บนเดสก์ท็อป Windows มีหน้าต่างที่เปิดอยู่แค่ cmd.exe อันเดียว ไม่ได้จะสื่ออะไรเป็นพิเศษ แต่มันติดอยู่ในความทรงจำเสมอ
    เมื่อไม่นานมานี้ก็เห็นสิ่งนี้ในเอกสารของ Microsoft ด้วย: https://learn.microsoft.com/en-us/windows/configuration/shel...

    • Windows Server มีหรือเคยมีโหมดแบบนี้อยู่
      จำได้ว่า Windows รุ่นราคาถูก/ฟรีสำหรับ IoT หรือ embedded ก็เคยมีเวอร์ชันที่ทำงานแบบ cmd-only โดยไม่มี explorer
  • เรื่องแบบนี้จัดอยู่ในหมวดที่ฉันเรียกว่า บั๊กเชิงระบบ หรือ “type bug”
    ถ้าส่ง token ให้คอมโพเนนต์ login แล้วให้ destructor ของ token ทำเครื่องหมายว่ากระบวนการเสร็จสิ้นโดยอัตโนมัติ บั๊กนี้แทบจะเขียนขึ้นมาไม่ได้เลย
    แต่กลับทำให้ runtime เป็นแบบ “คอมโพเนนต์ต้องจำเรื่องนี้เอง” ดังนั้นโครงสร้างโค้ดเองจึงเปิดทางให้เกิดบั๊ก
    เมื่อไม่กี่ปีก่อน Facebook ก็มีบั๊กคล้ายกัน คือจำนวนการแจ้งเตือนแสดงว่ามีแจ้งเตือน แต่พอกดแล้วไม่มีอะไร เส้นทางอัปเดตจำนวนกับเส้นทางเพิ่มรายการลงลิสต์ต่างกันจึงคลาดกัน และเมื่อเปลี่ยนให้ส่วนเดียวกันของระบบจัดการทั้งสองอย่าง บั๊กนั้นก็หายไปถาวร

    • ใน Reddit ก็มีไอคอนแจ้งเตือนผิดพลาดขึ้นตลอด
      ฉันคิดมาตลอดว่าเป็นเพราะ caching ที่แย่
  • ออกจะเมตานิดหน่อย แต่เริ่มคาดหวังชื่อเรื่องสไตล์ “Why did happen with” ที่แจ้งว่าเป็นบทความของ Raymond Chen แล้ว
    น่าสนใจเสมอ

    • The Old New Thing เป็นแหล่งรวม ความประหลาดของ Windows ที่ยอดเยี่ยม
      เป็นบล็อกเดียวที่ช่วยคลายความเชื่อแบบงมงายเกี่ยวกับ Windows ที่มีมาตั้งแต่เด็กๆ
  • โค้ดนั้นทำให้นึกถึงบั๊ก Kubernetes ที่ฉันชอบหลายตัว
    if (request.authenticationData) { ok := validate(etc); if (!ok) { return authenticationFailure; } }
    มีมแบบเดียวกันนี้สืบทอดข้ามหลายทศวรรษเลยทีเดียว

    • นี่เป็นตัวอย่างที่ดีของหลักการ “อย่า validate ให้ parse
      ถ้าทำให้ทุกฟังก์ชันที่ต้องการสิทธิ์บางอย่างรับสิทธิ์นั้นเป็น argument เช่นเขียนเป็น void doFoo(PermissionToDoFoo permission, ...){...} และทำให้การเรียกทำได้ผ่านเส้นทางที่รับสิทธิ์จากข้อมูลการยืนยันตัวตนเท่านั้น
      แบบนั้นสถานะผิดพลาดที่ทำ Foo โดยไม่มีสิทธิ์ก็จะไม่สามารถแสดงออกมาได้ตั้งแต่แรก
    • อ่านเรื่องบั๊กนั้นได้ที่ไหน? อยากรู้ด้วยว่าบั๊กจริงๆ คืออะไร
      ถ้าไม่มี authenticationData ก็ถือว่า authenticated โดยปริยายงั้นหรือ?
    • วิธีสร้างซอฟต์แวร์ไม่ได้เปลี่ยนไปเลยตลอดหลายสิบปี
  • แม้จะออกนอกประเด็นไปเล็กน้อย แต่ผมชอบวอลเปเปอร์พื้นหลัง Windows Spotlight ที่รีเฟรชอัตโนมัติบนหน้าจอเข้าสู่ระบบมาก
    เลยเคยเขียนสคริปต์เพื่อซิงก์มันมาเป็นวอลเปเปอร์เดสก์ท็อปด้วย แต่บน Windows 10 ของผมมันหยุดทำงานโดยไม่ทราบสาเหตุ จึงเขียนสคริปต์สำหรับดาวน์โหลด Bing Image of the Day แทน: https://blog.est.im/2025/stdout-03

    • บน Windows 11 สามารถตั้งค่า Spotlight เป็นวอลเปเปอร์เดสก์ท็อปได้
    • มี Bing Wallpaper App อย่างเป็นทางการสำหรับเรื่องนี้ (https://www.bing.com/apps/wallpaper) แต่มีองค์ประกอบน่ารำคาญที่พยายามเปลี่ยนเบราว์เซอร์เริ่มต้นให้เป็น Edge และ dark pattern แทรกอยู่ในสารพัดรูปแบบ
    • ใน KDE Plasma เป็นฟีเจอร์ในตัว