Untuk sumbangan Hacktoberfest terakhir saya, saya telah mengusahakan projek yang dipanggil Bytechef. Bytechef ialah penyepaduan API kod rendah dan platform automasi aliran kerja. Ia membolehkan anda berinteraksi dengan senarai besar perkhidmatan yang disokong melalui API mereka dengan menambah dan menyambungkan pelbagai komponen untuk mencipta aliran kawalan yang boleh menggunakan respons daripada API.
Laman Web - Dokumentasi - Discord - Twitter
KEMASKINI: ByteChef sedang dalam pembangunan aktif. Kami berada di peringkat alfa, dan beberapa ciri mungkin hilang atau dilumpuhkan.
ByteChef ialah sumber terbuka, kod rendah, penyepaduan API boleh dilanjutkan dan platform automasi aliran kerja. ByteChef boleh membantu anda sebagai:
Tugas saya ialah menambah ciri baharu pada komponen untuk perkhidmatan pangkalan data yang dipanggil Baserow. Ciri yang perlu saya usahakan ialah "tindakan" (iaitu fungsi komponen) yang membenarkan komponen mengemas kini baris dalam pangkalan data.
Laksanakan tindakan Baris Kemas Kini untuk komponen Baserow untuk membenarkan pengguna mengubah suai baris tertentu dalam jadual dalam pangkalan data Baserow mereka.
Sifat tindakan:
Output:
Rujukan Dokumentasi: https://baserow.io/api-docs
</div> <div class="gh-btn-container"><a class="gh-btn" href="https://github.com/bytechefhq/bytechef/issues/1645">View on GitHub</a></div>
Saya telah menggunakan Java dengan sangat minima sebelum mendaftar untuk isu ini. Saya hanya pernah melakukan program JavaFX kecil sebagai sebahagian daripada kursus sekolah, tetapi saya ingin mengetahui lebih lanjut. Saya telah mempelajari sedikit sebanyak pada masa saya sendiri jadi saya mempunyai beberapa tahap kebiasaan dengan konsep seperti pakej, pengubah suai akses, kebergantungan dan Gradle, yang merupakan alat binaan yang digunakan oleh projek itu. Mengetahui perkara ini pasti menjadikan ia lebih kurang menakutkan untuk menyertai projek ini. Saya memahami struktur projek kerana saya telah mengetahui cara projek Gradle terdiri daripada subprojek dan subpakej masing-masing dengan konfigurasi binaan yang berbeza.
Rakan sekelas saya Arina menyedari kami berdua sedang mengerjakan projek yang sama, dan dia cukup baik hati memberi saya beberapa petunjuk dengan memautkan kepada dokumentasi pembangun untuk menambahkan komponen dan kepada tindakan yang telah ditentukan untuk komponen itu, yang bermaksud saya tidak perlu melihat sendiri repositori untuk mencari fail/direktori yang berkaitan. Tetapi jika saya terpaksa, saya akan menggunakan git grep, carian kod GitHub atau carian IntelliJ. Saya menggunakan git blame untuk menyemak sejarah komponen yang akan saya kerjakan dan melihat bahawa semuanya telah dibangunkan dalam satu komit.
Dokumen penyumbang projek sangat mudah diikuti dengan arahan terperinci yang dibentangkan langkah demi langkah. Tetapi projek itu nampaknya sangat muda - saya perhatikan beberapa fail README yang baru sahaja berkata // TODO.
Saya cuba menyusun dan menjalankan program sebelum saya membuat perubahan untuk melihat cara ia berfungsi, tetapi ia adalah proses yang kasar. Berikut ialah imbasan nota yang saya ambil:
Selepas ia selesai menyusun (telah mengambil masa lebih sejam), saya menjalankannya supaya saya boleh menyemak komponen sedia ada. Saya cuba membuat akaun untuk menggunakan klien tetapi ia tidak membenarkan saya, jadi saya kembali ke dokumen penyumbang dan mendapati bahawa ia disertakan dengan akaun pentadbir yang boleh digunakan untuk pembangunan, yang saya fikir dicipta apabila anda menjalankan docker -karang.
Setelah saya log masuk, saya cuba membuat komponen Baserow, tetapi pelanggan agak perlahan jadi saya secara tidak sengaja membuat pendua. Apabila saya cuba memadamkannya, pelanggan membeku, jadi saya menekan muat semula, dan mula mendapat ralat pelayan dan pelanggan tamat masa. Saya cuba memulakan semula pelayan dan pelanggan tetapi ia mengambil masa yang lama - pada pandangan saya ia akan mengambil masa sejam lagi. Selepas menunggu kira-kira 16 minit, saya memanggilnya semalam dan memutuskan untuk mengusahakannya kemudian.
Saya takut untuk kembali ke projek ini dan terpaksa berhadapan dengan masa penyusunan selama sejam tetapi dengan Hacktoberfest semakin hampir tamat saya tidak mempunyai banyak pilihan. Jadi bayangkan saya terkejut apabila projek dibina tanpa ralat dan siap dan berjalan dalam masa kurang daripada lima minit. Apa yang berubah? Saya tidak tahu.
Jadi saya melompat pada pelanggan dan menemui komponen Baserow.
Rajah - Komponen Baserow dan tindakan sedia ada padanya
Untuk menambah tindakan Buat Baris, saya perlu melihat dokumentasi API Baserow, yang dipautkan kepada saya oleh penyelenggara. Saya terpaksa membuat akaun Baserow untuk melihat dokumen yang saya fikir agak ganjil tetapi ia juga bukan masalah besar.
Jadi saya menguji tindakan sedia ada, "Buat Baris", dan menghadapi pepijat di mana seluruh halaman bertukar menjadi mesej ralat. Saya fikir saya telah memasukkan nilai yang tidak dijangka tetapi saya kemudiannya mendapati pepijat ini telah dijejaki oleh isu berasingan yang tidak berkaitan dengan saya.
Pada percubaan ujian berikutnya, tindakan Cipta Baris berjaya, jadi saya memutuskan bahawa ia adalah calon yang baik untuk mengkaji untuk mencuba dan memahami cara tindakan dibuat. Saya mengikuti bersama dengan merujuk silang isu, tindakan sedia ada dan dokumen penyumbang.
Saya mengetahui bahawa tindakan dibuat dengan mentakrifkan parameter input yang diperlukan, skema output dan kaedah yang menentukan proses sebenar tindakan yang dilakukan.
Dalam tindakan Buat Baris, saya melihat terdapat kaedah untuk mendapatkan medan untuk baris jadual, yang digunakan untuk mentakrifkan parameter input. Saya sedar saya boleh menggunakan ini dalam tindakan saya, tetapi ia dinamakan seolah-olah ia hanya bertujuan untuk digunakan untuk tindakan Buat Baris. Saya fikir ia masuk akal untuk digunakan, jadi saya terus menggunakannya dan memutuskan untuk memberitahu penyelenggara.
Apabila membaca dokumen API Baserow, saya mengetahui bahawa untuk mengemas kini baris anda menggunakan kaedah HTTP yang dipanggil "PATCH", yang saya tidak tahu kewujudannya. PATCH adalah seperti PUT tetapi bukannya menggantikan sumber, ia mengubah sebahagiannya. Perkara yang menarik.
Jadi saya perlu menulis tindakan saya, dan saya dapat mengangkat hampir keseluruhan kod daripada tindakan sedia ada. Saya hanya perlu membuat sedikit pelarasan pada parameter yang diterimanya (saya menambah ID baris untuk mengenal pasti baris untuk dikemas kini), skema output dan kaedah yang dipanggil (menukar titik akhir dan kaedah HTTP). Untuk membenarkan ID baris saya perlu menambah pemalar pada fail dalam pemalar/ subdirektori yang mengandungi semua pemalar yang berkaitan dengan komponen Baserow.
Saya perasan semua fail kod sumber sedia ada mempunyai pengepala lesen, jadi saya menyalinnya ke dalam fail saya juga. Saya mengatur import saya, memformatkan kod saya dan sudah tiba masanya untuk mengujinya secara manual.
Pada ketika ini saya perasan perihalan untuk tindakan Buat Baris (yang sudah wujud) adalah salah - ia mengatakan ia mencipta baris dalam pangkalan data sampel dalam Baserow yang dirujuk dengan nama dan bukannya hanya mengatakan anda boleh mencipta sebaris. Saya membuat nota untuk menyebut perkara ini kepada penyelenggara juga:
Rajah - Penerangan yang salah untuk komponen Cipta Baris
Tindakan saya muncul dalam diri pelanggan dan secara visual semuanya kelihatan baik:
Tajuk dan penerangan dipaparkan:
Sifat (iaitu parameter input) muncul:
Aliran kerja berjalan dengan jayanya dan saya menerima respons yang berjaya:
Dan jadual telah dikemas kini dalam akaun Baserow saya:
Saya berpuas hati dengan perubahan saya jadi saya meneruskan dan menjalankan pemformat dan ujian, tetapi ujian gagal, kerana salah satu ujian menjangkakan Komponen Baserow hanya mempunyai satu tindakan padanya. Saya mengemas kini ujian untuk menampung tindakan baharu saya, dan menjalankan skrip yang menjana dokumentasi secara automatik untuk komponen tersebut. Semasa menjalankan semula ujian, mereka lulus, tetapi saya masih perlu menambah ujian unit untuk tindakan saya. Saya melihat ujian unit untuk komponen sedia ada dan dibiarkan menggaru kepala. Saya memutuskan bahawa saya telah mencapai kemajuan yang baik, jadi saya memanggilnya sehari, membuka draf PR dan memberitahu penyelenggara tahu tentang isu yang saya perhatikan.
Walaupun ujian sedia ada kelihatan menakutkan, saya tidak mempunyai banyak pilihan selain menambah satu untuk tindakan saya juga, jadi saya kembali dan cuba memahami apa yang berlaku dalam ujian sedia ada. Saya melihat sedikit perpustakaan ujian yang digunakan - JUnit Jupiter dan Mockito. Saya cuba memecahkannya sedikit demi sedikit dan menggunakan LLM untuk membantu saya memahami perkara yang berlaku pada setiap baris. Tetapi sejujurnya, saya masih mempunyai pemahaman yang samar-samar tentang apa yang sedang berlaku. Saya tahu saya mengejek API Baserow dan memanggil kaedah tindakan saya padanya, tetapi itu adalah tahap pemahaman saya.
Nampaknya, ia sudah cukup bagus. Saya menandai PR saya sedia untuk semakan, dan penyelenggara menerima perubahan saya! Mereka memberikan beberapa maklum balas - saya terlupa mengikuti beberapa bahagian aliran penyumbang walaupun saya telah membacanya. Untuk kali seterusnya, saya harus menyemak dokumen penyumbang sebelum membuat permintaan tarik.
Membetulkan #1645
Saya mendapati persediaan awal dan menulis ujian adalah bahagian yang paling menakutkan dalam isu ini. Sebenarnya menambah ciri adalah mudah berbanding. Tetapi perkara yang saya dapati sangat menarik tentang isu ini ialah saya dapat menyumbang kepada projek dalam bahasa yang saya tidak begitu faham, terima kasih kepada dokumen yang diselenggara dengan baik dan kod yang mudah difahami.
Dan itu adalah PR terakhir saya untuk Hacktoberfest 2024! Catatan ringkasan akan datang tidak lama lagi!
Atas ialah kandungan terperinci Mencelup ke dalam Projek Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!