• เป็นการแบ่งปันรายชื่อ ความรู้ต้องสาป ที่เกิดขึ้นในกระบวนการพัฒนา Immich
  • สรุป ปัญหาที่ไม่คาดคิด ที่พบในซอฟต์แวร์และสภาพแวดล้อมโครงสร้างพื้นฐานที่หลากหลาย
  • กล่าวถึงปัญหากับเครื่องมือและภาษาเช่น เมตาดาต้า EXIF, การจัดการช่องว่างของ YAML และ PostgreSQL
  • บางเรื่องเชื่อมโยงกับ ความปลอดภัย, ความเข้ากันได้ของแพลตฟอร์ม, และการพึ่งพาซอฟต์แวร์โอเพนซอร์ส โดยตรง
  • มุ่งเน้นที่ กรณีจริงและสาเหตุ ที่นักพัฒนาควรระวัง

ภาพรวม

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

รายการความรู้ต้องสาป

  • วันที่ 4 มิถุนายน 2025

    • ฟีเจอร์ของ Zitadel Actions เป็นความรู้ที่เป็นอุปสรรค
    • ฟังก์ชัน custom scripting ของ Zitadel อิงเครื่องยนต์ JS แต่ ไม่รองรับ named capture group ของ regular expression ทำให้มีข้อจำกัดที่ชัดเจน
  • วันที่ 30 พฤษภาคม 2025

    • Microsoft Entra รองรับ PKCE แต่ไม่ได้ระบุไว้ในเอกสาร OpenID discovery
    • ส่งผลให้ความสามารถนี้ ไม่ถูกตรวจจับโดยไคลเอนต์
  • วันที่ 5 พฤษภาคม 2025

    • ข้อมูลขนาดใน EXIF metadata ของรูปภาพอาจต่างจากขนาดจริงของไฟล์รูปจริง
    • ความคลาดเคลื่อนนี้นำไปสู่ข้อผิดพลาดในงาน crop และ resize
  • วันที่ 1 เมษายน 2025

    • การจัดการ ช่องว่างของ YAML มักทำงานต่างจากที่คาด
    • เนื่องจากไวต่อการจัดรูปแบบ ทำให้มีความเสี่ยงที่เนื้อหาถูกตีความไม่ตรงตามเจตนา
  • วันที่ 20 กันยายน 2024

    • ไฟล์ซ่อนของ Windows ไม่สามารถเปิดด้วยแฟล็ก w
    • เมื่อรวมกับตัวเลือก SMB hide dot files จะทำให้เกิดความสับสนมากขึ้นในการเข้าถึงและประมวลผลไฟล์
  • วันที่ 7 สิงหาคม 2024

    • สคริปต์ Bash อาจเกิดปัญหา carriage return (CRLF)
    • หาก Git แปลง LF เป็น CRLF โดยอัตโนมัติระหว่าง checkout อาจทำให้สคริปต์ทำงานผิดพลาด
  • วันที่ 7 สิงหาคม 2024

    • ใน Cloudflare Workers, การเรียก fetch ใช้ http เป็นค่าเริ่มต้นแม้จะระบุ https ไว้
    • ส่งผลให้เกิดปัญหาเครือข่ายเช่น redirect loop
  • วันที่ 21 กรกฎาคม 2024

    • การแชร์ GPS บนมือถือ จะแบบเงียบๆ ลบข้อมูลตำแหน่งออกจากรูปเมื่อแอปไม่มีสิทธิ์เข้าถึงตำแหน่ง
    • ส่งผลต่อความแม่นยำของบริการพึ่งพาตำแหน่งและเรื่องความเป็นส่วนตัว
  • วันที่ 3 กรกฎาคม 2024

    • PostgreSQL NOTIFY ทำงานได้เฉพาะภายใน transaction
    • หากใช้ร่วมกับ socket.io postgres-adapter จะเกิดการเขียน WAL ทุกๆ 5 วินาที ทำให้เกิดภาระสูงขึ้น
  • วันที่ 3 กรกฎาคม 2024

    • การรันสคริปต์ npm จะส่งคำขอ http ไปยัง npm registry ทุกครั้ง
    • ดังนั้นการทำ health check ด้วยสคริปต์จึงไม่ค่อยมีประสิทธิภาพ
  • วันที่ 28 มิถุนายน 2024

    • ในชุมชน JavaScript มีผู้ใช้บางราย บังคับเพิ่มการพึ่งพาแพ็กเกจกว่า 50 ตัว โดยอ้างเหตุผลเรื่อง "ความเข้ากันได้ย้อนหลัง"
    • แพ็กเกจทั้งหมดถูกดูแลโดยผู้ใช้นั้นเพียงคนเดียว
  • วันที่ 25 มิถุนายน 2024

    • การใช้งาน bcrypt รองรับเฉพาะ 72 ไบต์แรกของสตริงเท่านั้น
    • ตัวอักษรที่เหลือจะถูก ข้าม ทำให้รหัสผ่านที่ยาวกว่านี้ไม่มีความหมายเพิ่ม
  • วันที่ 31 มกราคม 2024

    • JavaScript Date object จะแสดงค่าปีและวันที่ด้วย index เริ่มจาก 1 แต่เดือนเริ่มจาก 0
    • โครงสร้างนี้ทำให้สับสนได้ง่าย
  • วันที่ 9 มกราคม 2024

    • ใน Node.js ก่อน v20.8 หากโครงการ CommonJS ใช้ตัวเลือก --experimental-vm-modules แล้วโมดูล ES โหลดโมดูล CommonJS กลับเข้าไป
      • เกิดปัญหา segfault ทำให้ Node.js ล้มเหลว/Crash
  • วันที่ 28 ธันวาคม 2023

    • ขีดจำกัดพารามิเตอร์ของ PostgreSQL คือ 65,535
    • เป็นข้อจำกัดด้านประสิทธิภาพในงาน bulk insert ของชุดข้อมูลขนาดใหญ่
  • วันที่ 26 มิถุนายน 2023

    • มี Web API บางตัวที่ใช้ได้เฉพาะใน Secure Contexts เท่านั้น
    • ตัวอย่างเช่น Clipboard API จะทำงานได้เฉพาะบนสภาพแวดล้อม https หรือ localhost
  • วันที่ 23 กุมภาพันธ์ 2023

    • การทำงานของ remove ใน TypeORM มีผลต่ออินพุตที่ส่งเข้าไป
    • มันอาจลบ คุณสมบัติ id ของอ็อบเจกต์ต้นทาง ไปด้วย

สรุป

ความรู้ต้องสาป เหล่านี้เป็นกับดักที่มักพบได้บ่อยในงานพัฒนาและดูแลระบบบริการจริง หากนักพัฒนาทราบข้อจำกัดและประเด็นที่ซ่อนอยู่ล่วงหน้าตามเครื่องมือ ภาษา และสภาพแวดล้อมที่ใช้ จะช่วยให้การแก้ปัญหาเป็นไปอย่างมีประสิทธิภาพและการพัฒนาบริการมีความเสถียรมากขึ้น

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น