Catatan blog ini adalah mengenai Keluaran 0.3. Saya ingin mulakan dengan sedikit pengenalan, menerangkan betapa sukarnya untuk mencari isu yang baik. Untuk Keluaran terakhir 0.2 saya telah menghabiskan sepanjang masa saya untuk projek JavaFX yang besar, saya tidak berpuas hati langsung, atas sebab saya terpaksa mencari dan menutup dua isu dalam masa beberapa hari. Kali ini saya hampir terperangkap dengan masalah yang sama, tetapi akhirnya saya melayannya sebaik mungkin. Biar saya memandu anda melalui garis masa.
Pada mulanya, saya telah menemui isu, di mana saya sepatutnya mengalihkan Ikon Apl daripada Dok ke Dulang untuk pengguna macOS. Bunyinya sangat mudah. Walau bagaimanapun, projek ditulis dalam Go yang saya tidak pernah gunakan sebelum ini. Jika anda seorang pembaca yang biasa dengan blog saya, anda pasti tahu berapa kerap saya mempelajari bahasa pengaturcaraan baharu. Melangkah ke hadapan, saya memutuskan untuk belajar Go lang dari awal.
Biar saya terangkan dengan cepat tentang projek ini. Ini adalah penyekat iklan dan pengawal privasi yang Mudah, percuma dan cekap untuk Windows, macOS dan Linux.
systray - Percubaan Pertama
Nasib baik, Go sangat mudah untuk dipelajari, jadi mari kita teruskan ke percubaan saya untuk mengalihkan ikon dari Dok ke Dulang.
Untuk percubaan pertama saya cuba melaksanakan menggunakan perpustakaan systray yang ditulis dalam Objektif-C. Ia membantu memanipulasi UI sistem macOS dan mengalihkan aplikasi daripada Dok ke Dulang. Saya telah menulis kod, menggunakan dokumentasi dalam masa 2 jam, sangat gembira. Walau bagaimanapun, saya mempunyai isu yang berkaitan dengan perpustakaan lain yang dipanggil raungan yang membantu melaksanakan UI juga ditulis dalam Objektif-C. Akhirnya, membina projek itu gagal, atas sebab kedua-dua perpustakaan ini bercanggah kerana mereka menggunakan penamaan yang sama. Saya terpaksa bergerak ke hadapan dan mencuba perpustakaan/kaedah yang berbeza.
tuan rumah dulang - Percubaan Kedua
Pada asasnya, perpustakaan ini berfungsi dengan cara yang sama seperti systray, dan saya mengalami isu yang sama.
Mana-mana perpustakaan lain untuk melakukan ini berfungsi dengan cara yang sama, jadi saya disusun.
Saya membatalkan projek systray dan menukar penamaan yang menyebabkan konflik. Mengimport garpu saya, kerana Go membenarkan untuk mengimport terus menggunakan git-url.
Malangnya, ia tidak berjaya langsung...
Anda boleh menyemak garpu saya dan melihat perubahan: Klik saya :D
Objektif-C - Percubaan Ketiga
Kali ini saya cuba menulis kod saya, menggunakan Objective-C dan Go lang. Selepas beberapa lama, saya mendapat penyelesaian, tetapi saya mendapat ralat ini:
r0 0x0 r1 0x0 r2 0x0 r3 0x0 r4 0x18fef62cb r5 0x16d28db00 r6 0x6e r7 0x0 r8 0x1e844b5b5be91e5a r9 0x1e844b5a36c1ee5a r10 0x200 r11 0xb r12 0x0 r13 0x1ff800 r14 0x7fb r15 0xd3c1205a r16 0x148 r17 0x202129928 r18 0x0 r19 0x6 r20 0x16d28f000 r21 0x1003 r22 0x16d28f0e0 r23 0x2 r24 0x0 r25 0x16d28ecc0 r26 0x1f9a37000 r27 0x828 r28 0x140001021c0 r29 0x16d28da70 lr 0x18ff3ac20 sp 0x16d28da50 pc 0x18ff02a60 fault 0x18ff02a60
Mesej ralat menunjukkan bahawa anda sedang cuba untuk memulakan tika NSWindow di luar urutan utama, yang tidak dibenarkan dalam aplikasi macOS. Ia adalah masalah besar, kerana saya tidak dapat melakukannya dalam urutan utama, atas sebab fungsi selebihnya tidak akan berfungsi.
Saya dan Maintainer mengadakan ceramah kecil di mana saya telah menerangkan segala-galanya. Akhirnya, dia bersetuju bahawa mustahil untuk dilaksanakan dengan struktur projek semasa... Saya tidak menyelesaikannya, dan tidak mempunyai PR :c
Komuniti sumber terbuka adalah cemerlang kerana orang ramai cenderung untuk membantu antara satu sama lain. Saya hanya mempunyai seminggu untuk menyelesaikannya, jadi saya meminta bantuan rakan saya Theo. Dia menghantar saya beberapa repo yang dia kerjakan, dan saya memutuskan untuk mengerjakannya.
MatterMost ialah platform sumber terbuka untuk kerjasama selamat merentas keseluruhan kitaran hayat pembangunan perisian. Ia adalah platform yang cukup popular dan mempunyai banyak isu, dokumentasi yang besar untuk pengguna dan pemaju. Tidak sukar untuk menyumbang kepada projek ini.
Kali ini saya telah mengambil sesuatu yang sepadan dengan tahap kemahiran semasa saya, dan saya tidak menembak kaki saya. Ia adalah isu mudah yang ditemui dalam perkara paling awal yang disebut.
Tujuan isu itu adalah untuk membetulkan ralat linter untuk salah satu fail. Saya menyediakan projek itu, dan mula mengusahakannya.
Perkara pertama dahulu, saya terpaksa menjalankan linter dan melihat semua ralat. Saya menyemak baris di mana ia berlaku, dan membetulkannya dengan cepat. Akhirnya, membuka PR.
Saya sangat suka bekerja pada alatan CLI kerana ia menyeronokkan bagi saya. Untuk PR kedua saya menemui projek yang dipanggil lumen. Lumen ialah mesej AI Git Commit segera, Git menukar ringkasan daripada CLI. Saya sangat seronok mengerjakan projek ini! Malangnya, mereka tidak mempunyai banyak isu, tetapi saya cukup bernasib baik kerana ditugaskan. Selain itu, alat ini ditulis dalam Rust, jadi saya terpaksa menyegarkan pengetahuan saya.
Saya menemui isu Tambah sokongan STDIN untuk arahan terangkan.
Alat ini mempunyai pilihan menerangkan yang digunakan dengan cara ini:
lumen explain <sha>
Arahan ini menerangkan segala-galanya tentang komit tertentu, perkara yang diubah dan sebabnya. Contoh:
Alat yang cukup berguna, ya?
Pelaksanaan saya sepatutnya membenarkan untuk menambah kefungsian pada arahan ini:
echo "HEAD" | lumen explain -
Jadi ia memerlukan nilai STDIN daripada gema, dalam contoh HEAD saya, dan menggantikan - dengan nilai HEAD itu.
Saya menyedari cara melaksanakannya. Syarat dibuat untuk menyemak sama ada - bukannya sha.
r0 0x0 r1 0x0 r2 0x0 r3 0x0 r4 0x18fef62cb r5 0x16d28db00 r6 0x6e r7 0x0 r8 0x1e844b5b5be91e5a r9 0x1e844b5a36c1ee5a r10 0x200 r11 0xb r12 0x0 r13 0x1ff800 r14 0x7fb r15 0xd3c1205a r16 0x148 r17 0x202129928 r18 0x0 r19 0x6 r20 0x16d28f000 r21 0x1003 r22 0x16d28f0e0 r23 0x2 r24 0x0 r25 0x16d28ecc0 r26 0x1f9a37000 r27 0x828 r28 0x140001021c0 r29 0x16d28da70 lr 0x18ff3ac20 sp 0x16d28da50 pc 0x18ff02a60 fault 0x18ff02a60
Selepas menukar 5 fail, saya mendapat keputusan:
Kini ia mempunyai dua pilihan:
lumen explain <sha>
dan
echo "HEAD" | lumen explain -
Kedua-dua pilihan ini berfungsi, pelaksanaan saya menambah fungsi baharu dan disimpan yang telah dilaksanakan sebelum ini! Inilah PR saya.
Beberapa minggu lepas bukan mudah, tetapi menyeronokkan. Saya belajar bahasa baharu Go. Berhubung dengan komuniti Sumber Terbuka yang membantu saya mencari salah satu repo yang saya sumbangkan!
Atas ialah kandungan terperinci Pembangunan Sumber Terbuka Adalah Hebat!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!