Para pembangun di sebalik Immich , sebuah platform pengurusan foto sumber terbuka, telah mencipta sesuatu yang unik dalam dunia perisian: log awam pengetahuan terkutuk - penemuan teknikal yang menyakitkan yang membuatkan pembangun mempersoalkan pilihan hidup mereka. Koleksi pepijat yang mengecewakan, tingkah laku pelik, dan batasan teknikal yang benar-benar aneh ini telah menyentuh hati komuniti pengaturcaraan, yang melihatnya sebagai terapeutik dan mendidik.
Konsep ini melampaui penjejakan pepijat mudah. Setiap entri dalam pangkalan data pengetahuan terkutuk mereka dikemukakan bersama-sama dengan pembetulan sebenar, mencipta rekod kekal bagi kedua-dua masalah dan penyelesaiannya. Pendekatan ini mengubah halangan teknikal yang mengecewakan menjadi pengalaman pembelajaran berharga yang boleh memberi manfaat kepada pembangun lain.
Kekacauan Ekosistem JavaScript
Dunia JavaScript dipaparkan secara menonjol dalam koleksi pengetahuan terkutuk Immich , dan atas sebab yang munasabah. Satu isu yang sangat terkenal melibatkan ahli komuniti yang secara sistematik menambah keserasian ke belakang kepada projek JavaScript popular dengan memperkenalkan berpuluh-puluh kebergantungan pakej tambahan. Amalan ini telah menimbulkan kontroversi yang ketara, dengan sesetengah pembangun menghabiskan seluruh petang cuba mengeluarkan kebergantungan yang tidak perlu ini daripada projek mereka.
Perbincangan komuniti mendedahkan kebimbangan yang lebih mendalam tentang corak ini. Ada yang mengesyaki motivasinya mungkin berkaitan dengan pembinaan pengaruh atau bahkan potensi risiko keselamatan rantaian bekalan. Pakej-pakej yang dipersoalkan termasuk utiliti yang sangat mudah, menonjolkan bagaimana ekosistem JavaScript boleh menjadi kembung dengan kebergantungan remeh yang tidak mempunyai tujuan praktikal.
Isu JavaScript/Node.js:
- bcrypt hanya menggunakan 72 bait pertama daripada rentetan kata laluan
- Objek Date JavaScript: berindeks-1 untuk tahun/hari, berindeks-0 untuk bulan
- Skrip npm membuat panggilan HTTP ke registri pada setiap pelaksanaan
- Node.js <v20.8: pencampuran ESM/CommonJS boleh menyebabkan segfault dengan --experimental-vm-modules
Keanehan Pangkalan Data dan Sistem
PostgreSQL mempersembahkan set cabarannya sendiri yang mengejutkan pasukan Immich . Had pangkalan data sebanyak 65,535 parameter bermakna operasi sisipan pukal boleh gagal secara spektakular dengan set data yang besar. Walaupun ini mungkin kelihatan seperti batasan yang jelas kepada pakar pangkalan data, ia adalah jenis butiran yang hanya muncul apabila anda benar-benar cuba memasukkan beribu-ribu rekod sekaligus.
Kejutan PostgreSQL yang lain melibatkan ciri NOTIFY , yang beroperasi dalam transaksi dan boleh menyebabkan aktiviti log write-ahead yang tidak dijangka. Penemuan ini menonjolkan bagaimana sistem pangkalan data yang mapan pun mempunyai tingkah laku yang boleh mengejutkan pembangun yang bekerja pada skala besar.
Batasan PostgreSQL:
- Parameter maksimum setiap pertanyaan: 65,535
- Operasi NOTIFY menulis ke WAL setiap 5 saat apabila digunakan dengan socket.io postgres-adapter
- Semua operasi termasuk NOTIFY berjalan dalam transaksi
Mimpi Ngeri Sistem Fail Merentas Platform
Sistem fail merentasi sistem pengendalian yang berbeza menyediakan sumber pengetahuan terkutuk yang kaya. Fail tersembunyi Windows tidak boleh dibuka dengan kebenaran tulis, batasan yang menjadi sangat bermasalah apabila digabungkan dengan pilihan sembunyikan fail titik SMB . Sementara itu, macOS secara senyap menambah metadata dan fail pengindeksan kepada volum boleh alih, mengacaukan pemindahan fail yang sepatutnya bersih.
Dunia mudah alih menambah satu lagi lapisan kerumitan, dengan sesetengah telefon secara senyap melucutkan data GPS daripada imej apabila aplikasi tidak mempunyai kebenaran lokasi. Walaupun tingkah laku ini sebenarnya adalah ciri privasi yang berfungsi seperti yang dimaksudkan, ia boleh membingungkan pembangun yang tidak memahami mengapa pemprosesan imej mereka tiba-tiba kehilangan maklumat lokasi.
Keanehan Sistem Fail:
- Windows : Fail tersembunyi tidak boleh dibuka dengan flag "w"
- macOS : Nama fail tidak sensitif kepada huruf besar-kecil secara lalai, penukaran NFC→NFD
- Mudah alih: Data GPS dilucutkan daripada imej untuk aplikasi tanpa kebenaran lokasi
- Dimensi EXIF boleh berbeza daripada dimensi imej sebenar
Kesan Yang Lebih Luas
Entri pengetahuan terkutuk dikemukakan bersama-sama dengan pembetulan yang diperlukan untuk menanganinya. Log ini bukan sahaja katartik, tetapi mengubah setiap halangan yang mengecewakan menjadi pengalaman pembelajaran yang positif.
Pendekatan untuk mendokumentasikan titik kesakitan teknikal ini telah mengilhamkan pembangun lain untuk mempertimbangkan amalan serupa dalam projek mereka sendiri. Ketelusan ini membantu membina pengetahuan komuniti sambil menyediakan satu bentuk terapi teknikal untuk pembangun yang menghadapi isu-isu ini.
Koleksi pengetahuan terkutuk pasukan Immich berfungsi sebagai peringatan bahawa pembangunan perisian penuh dengan gotcha yang tidak dijangka, tanpa mengira tahap pengalaman. Dengan berkongsi penemuan ini secara terbuka, mereka telah mencipta sumber yang berharga yang membantu pembangun lain mengelakkan perangkap yang sama sambil membina empati untuk cabaran kompleks yang wujud dalam pembangunan perisian moden.
Rujukan: Cursed Knowledge