ความรู้ต้องสาป
(immich.app)- เป็นการแบ่งปันรายชื่อ ความรู้ต้องสาป ที่เกิดขึ้นในกระบวนการพัฒนา 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จะทำให้เกิดความสับสนมากขึ้นในการเข้าถึงและประมวลผลไฟล์
- ไฟล์ซ่อนของ Windows ไม่สามารถเปิดด้วยแฟล็ก
-
วันที่ 7 สิงหาคม 2024
- สคริปต์ Bash อาจเกิดปัญหา carriage return (CRLF)
- หาก Git แปลง
LFเป็นCRLFโดยอัตโนมัติระหว่าง checkout อาจทำให้สคริปต์ทำงานผิดพลาด
-
วันที่ 7 สิงหาคม 2024
- ใน Cloudflare Workers, การเรียก
fetchใช้httpเป็นค่าเริ่มต้นแม้จะระบุhttpsไว้ - ส่งผลให้เกิดปัญหาเครือข่ายเช่น redirect loop
- ใน Cloudflare Workers, การเรียก
-
วันที่ 21 กรกฎาคม 2024
- การแชร์ GPS บนมือถือ จะแบบเงียบๆ ลบข้อมูลตำแหน่งออกจากรูปเมื่อแอปไม่มีสิทธิ์เข้าถึงตำแหน่ง
- ส่งผลต่อความแม่นยำของบริการพึ่งพาตำแหน่งและเรื่องความเป็นส่วนตัว
-
วันที่ 3 กรกฎาคม 2024
- PostgreSQL
NOTIFYทำงานได้เฉพาะภายใน transaction - หากใช้ร่วมกับ socket.io postgres-adapter จะเกิดการเขียน WAL ทุกๆ 5 วินาที ทำให้เกิดภาระสูงขึ้น
- PostgreSQL
-
วันที่ 3 กรกฎาคม 2024
- การรันสคริปต์
npmจะส่งคำขอhttpไปยัง npm registry ทุกครั้ง - ดังนั้นการทำ health check ด้วยสคริปต์จึงไม่ค่อยมีประสิทธิภาพ
- การรันสคริปต์
-
วันที่ 28 มิถุนายน 2024
- ในชุมชน JavaScript มีผู้ใช้บางราย บังคับเพิ่มการพึ่งพาแพ็กเกจกว่า 50 ตัว โดยอ้างเหตุผลเรื่อง "ความเข้ากันได้ย้อนหลัง"
- แพ็กเกจทั้งหมดถูกดูแลโดยผู้ใช้นั้นเพียงคนเดียว
-
วันที่ 25 มิถุนายน 2024
- การใช้งาน bcrypt รองรับเฉพาะ 72 ไบต์แรกของสตริงเท่านั้น
- ตัวอักษรที่เหลือจะถูก ข้าม ทำให้รหัสผ่านที่ยาวกว่านี้ไม่มีความหมายเพิ่ม
-
วันที่ 31 มกราคม 2024
- JavaScript
Dateobject จะแสดงค่าปีและวันที่ด้วย index เริ่มจาก 1 แต่เดือนเริ่มจาก 0 - โครงสร้างนี้ทำให้สับสนได้ง่าย
- JavaScript
-
วันที่ 9 มกราคม 2024
- ใน Node.js ก่อน v20.8 หากโครงการ CommonJS ใช้ตัวเลือก
--experimental-vm-modulesแล้วโมดูล ES โหลดโมดูล CommonJS กลับเข้าไป- เกิดปัญหา segfault ทำให้ Node.js ล้มเหลว/Crash
- ใน Node.js ก่อน v20.8 หากโครงการ CommonJS ใช้ตัวเลือก
-
วันที่ 28 ธันวาคม 2023
- ขีดจำกัดพารามิเตอร์ของ PostgreSQL คือ 65,535
- เป็นข้อจำกัดด้านประสิทธิภาพในงาน bulk insert ของชุดข้อมูลขนาดใหญ่
-
วันที่ 26 มิถุนายน 2023
- มี Web API บางตัวที่ใช้ได้เฉพาะใน Secure Contexts เท่านั้น
- ตัวอย่างเช่น Clipboard API จะทำงานได้เฉพาะบนสภาพแวดล้อม
httpsหรือlocalhost
-
วันที่ 23 กุมภาพันธ์ 2023
- การทำงานของ
removeใน TypeORM มีผลต่ออินพุตที่ส่งเข้าไป - มันอาจลบ คุณสมบัติ
idของอ็อบเจกต์ต้นทาง ไปด้วย
- การทำงานของ
สรุป
ความรู้ต้องสาป เหล่านี้เป็นกับดักที่มักพบได้บ่อยในงานพัฒนาและดูแลระบบบริการจริง หากนักพัฒนาทราบข้อจำกัดและประเด็นที่ซ่อนอยู่ล่วงหน้าตามเครื่องมือ ภาษา และสภาพแวดล้อมที่ใช้ จะช่วยให้การแก้ปัญหาเป็นไปอย่างมีประสิทธิภาพและการพัฒนาบริการมีความเสถียรมากขึ้น
ยังไม่มีความคิดเห็น