JavaRush /Blog Java /Random-MS /Bagaimana ujian temu duga bertukar menjadi perpustakaan s...

Bagaimana ujian temu duga bertukar menjadi perpustakaan sumber terbuka

Diterbitkan dalam kumpulan
Hello semua, komuniti JavaRush! Sedikit tentang diri saya: Saya telah bekerja sebagai Jurutera Perisian Java sejak musim bunga 2016. Saya suka datang ke sini dan menyelesaikan masalah yang tidak saya selesaikan semasa pengajian saya. Hari ini saya akan memberitahu anda tentang perpustakaan - Perbandingan Imej . Ini ialah perpustakaan sumber terbuka yang tersedia secara umum di GitHub . Bagaimana tugas ujian temu duga bertukar menjadi perpustakaan sumber terbuka - 1Tujuan artikel ini adalah untuk menyampaikan bahawa mencipta produk sumber terbuka bukan hanya membuang masa, bukan! Ini adalah pengalaman yang kaya yang diambil dari sisi yang berbeza, apabila anda mempunyai kawalan ke atas keseluruhan proses pembangunan, apabila anda perlu menyelidiki setiap butiran. Sumber Terbuka ialah dunia di sekeliling anda. Aku tak main-main, sepanjang kewujudan perpustakaan ini, aku berkomunikasi dengan orang dari pelbagai negara, seperti USA, India, China, Egypt, Russia, Germany, Ukraine, Sweden, New Zealand, Norway. Iaitu, ini adalah pengalaman sebenar dalam pembangunan bersama, mencari kompromi, memeriksa kod, dan sebagainya. Itulah pengenalan, sekarang mari kita mulakan mengikut urutan:

Ujian. Awal Ogos 2017

Semuanya bermula dengan hakikat bahawa saya mempunyai temu bual dengan salah satu syarikat, di mana langkah pertama adalah untuk menulis tugas ujian. Tugasnya adalah untuk menulis kod yang akan membandingkan dua gambar yang sama saiz, mencari perbezaan di antara mereka, mengumpulkannya dan melukis segi empat tepat di sekelilingnya. Terdapat gambar pertama:
Bagaimana tugas ujian temu duga bertukar menjadi perpustakaan sumber terbuka - 2
Terdapat gambar kedua:
Bagaimana tugas ujian temu duga bertukar menjadi perpustakaan sumber terbuka - 3
Ia adalah perlu untuk mencari perbezaan dan bulatkan mereka seperti yang ditunjukkan di bawah:
Bagaimana tugas ujian temu duga bertukar menjadi perpustakaan sumber terbuka - 4
Seperti yang anda lihat, terdapat perbezaan dalam medan Nama Pengguna , yang dibulatkan dengan segitiga merah. Penerangan lebih terperinci tentang tugasan . Saya memutuskan bahawa saya mahu melakukannya bukan sahaja dengan betul dari sudut pandangan fungsi, tetapi juga dengan cantik, supaya ia tidak memalukan. Untuk melakukan ini, saya memutuskan bahawa saya akan menerbitkan ini sebagai projek di GitHub . Saya telah lama ingin mempelajari GitHub dan memperoleh pengalaman bekerja dengannya. Selepas melihat sekilas, saya mendapati bahawa adalah baik untuk menambah perkhidmatan pihak ketiga untuk menganalisis kualiti kod, menjana liputan kod dengan ujian, dsb. Menambah alat berikut:
  • Codacy - kualiti kod. Memang patut diberi perhatian.

  • Travis CI ialah alat CI (integrasi berterusan) yang membina projek, menjalankan ujian dan memberitahu sama ada projek itu berjaya dibina. Sebagai contoh, jika salah satu ujian tidak lulus akibat daripada perubahan baharu, maka ia akan mengatakan bahawa binaan projek itu tidak berjaya dan akan mewarnakannya dengan merah.

  • Coveralls ialah alat yang menunjukkan peratusan kod anda yang diliputi oleh ujian.

  • BetterCode Hub ialah alat lain untuk menganalisis kualiti kod. Perkara yang sangat berguna yang bukan sahaja akan memberitahu anda apa yang buruk, tetapi juga menerangkan sebabnya dan memberi pautan ke buku di mana anda boleh mendapatkan pengetahuan mengenainya.

Setiap perkhidmatan ini mempunyai lencana sendiri dengan hasil data, seperti projek liputan kod. Dan lencana ini boleh ditambah dalam penerangan utama projek - fail README. Tugasan telah siap - saya menghantarnya untuk semakan. Selepas semakan, saya serta-merta, dari ingatan baru, mencipta Isu Github untuk setiap komen , yang kemudiannya akan membantu saya memperbaiki projek ini. Tiada tugas penambahbaikan daripada majikan, jadi saya terlupa projek itu untuk seketika...

Laluan Perpustakaan. Julai 2018

Logo

Pada satu ketika, saya mendapati bahawa orang sering melawat projek saya, dan ini berlaku setiap hari. Saya kagum dengan ini, dan lebih kagum dengan fakta bahawa kira-kira setahun kemudian ISU telah dicipta, di mana ia ditulis bahawa pereka grafik tertentu menawarkan saya untuk mencipta logo untuk projek saya. Mereka mengatakan dia suka melakukan ini untuk produk Opensource dan akan melakukannya secara percuma. Kami mula bekerjasama. Beberapa pilihan telah dicadangkan, tetapi akhirnya kami menyelesaikan perkara ini:
Bagaimana tugas ujian temu duga bertukar menjadi perpustakaan sumber terbuka - 5
Saya masih muda ketika itu dan tidak biasa dengan komuniti sumber terbuka, dan hakikat tawaran sedemikian adalah liar kepada saya dan saya bertanya, mengapa dia melakukan ini? Yang dia menjawab: "Lolz oh, hanya kerana saya suka menyumbang kepada projek sumber terbuka. Jenis matlamat hidup..." ( isu itu sendiri ada di sini ). Ketika itulah saya pertama kali merasakan betapa hebatnya apabila orang yang berbeza menemui anda melalui projek sumber terbuka dan menawarkan perkara yang menarik!

Kecacatan Sampingan Pertama

Saya perhatikan bahawa pembangun tertentu dari China mencipta isu untuk saya , di mana dia menerangkan bahawa dia telah menemui kecacatan dalam kerja perpustakaan, bahawa jika anda menggunakan imej besar, anda mendapat StackOverflowError . Lelaki itu memutuskan untuk mengambil kesempatan dan mendapati kesilapan. Dan saya bukan sahaja menemuinya. dan juga menulis tentang dia. Ini merupakan langkah baharu dalam pembangunan perpustakaan. Lebih-lebih lagi, saya tidak benar-benar mempunyai penyelesaian. Pada satu ketika, salah seorang penguji dari Rusia mencadangkan penyelesaian. Tetapi ia mentah dan tidak dibuat dengan betul dan saya tidak menerimanya. Dan apabila tiba masanya untuk menerbitkan perpustakaan di Maven Central, adalah perlu untuk menyelesaikan sesuatu dengan kecacatan ini; Saya tidak mahu menerbitkannya bersama-sama dengannya. Di samping itu, terdapat satu lagi kecacatan yang tidak pernah saya perbaiki dan ia juga membawa banyak kesulitan.

Penggunaan Baris Perintah. Musim luruh 2018

Peringkat seterusnya dalam pembangunan adalah komunikasi dengan orang Sweden (Renato Athaydes), yang ingin menggunakan perpustakaan melalui baris arahan dan untuk ini perlu membuat beberapa perubahan dan penambahan. Saya sekali lagi kagum dan terkejut dengan ini. Selepas pereka grafik menulis kepada saya, kejutan saya agak kurang, tetapi masih sangat tinggi. Pemikiran bahawa seseorang benar-benar memerlukan kod saya memenuhi saya dengan perasaan yang luar biasa. Dia membuat perubahan yang diperlukan dan menyediakan kod. Saya menjalankan semakan kod, iaitu, saya melihat perubahan, terdapat komen yang diubah dan perubahan sudah ada di perpustakaan. Saya menetapkan perubahan ini sebagai versi v2.0. Langkah seterusnya ialah menambah perpustakaan kepada Maven Central - repositori pusat, dari mana anda boleh memuat turunnya untuk sebarang projek dan menggunakannya sebagai pergantungan. Pada masa itu, saya tidak tahu bagaimana untuk melakukan ini, walaupun dari jauh, jadi saya berkata saya sibuk dan memintanya untuk melaksanakan semua langkah yang perlu untuk menyediakan projek itu. Tetapi ini ternyata tidak mencukupi sama sekali dan perkara yang paling menarik adalah untuk menyediakan sambungan dengan Maven Central. Ini adalah kesakitan yang luar biasa, yang saya tidak dapat lakukan buat kali pertama, dan hanya pada 15 April saya dapat menerbitkan projek itu di Maven Central. Ia tidak mudah, tetapi seperti yang orang lain suka katakan, "semua orang yang ingin menerbitkan kod Java mereka akan melalui perkara ini." Sebelum saya menerbitkan perpustakaan, saya akhirnya menemui apa dan bagaimana untuk melakukan dengan kecacatan yang telah berlaku untuk masa yang lama dan mengeluarkan versi baharu v2.0.2 , di mana saya mengucapkan terima kasih kepada semua orang yang membantu saya, menerangkan apa dan bagaimana saya lakukan .

Menerbitkan kepada Maven Central. Musim bunga 2019

Untuk menerbitkan pustaka dengan betul, anda perlu mempunyai pemahaman yang baik tentang versi dan cara menetapkan versi dengan betul. Saya akan berpegang kepada skim ini:
  • XX.YY.BBBB , di mana XX ialah kemas kini versi utama yang memerlukan perubahan yang tidak serasi dengan yang sebelumnya (contohnya, menukar hasil pulangan dalam kaedah);
  • YY ialah kemas kini kecil - perubahan dalaman atau pengembangan yang tidak mengubah apa itu BBBB - ini adalah kecacatan yang telah diperbaiki.
  • Sebagai contoh, versi 2.0.2 bermakna versi utama ialah 2, tiada kemas kini kecil dan terdapat dua kemas kini untuk kecacatan.
Seterusnya, adalah penting untuk memikirkan cara menetapkan groupId dan artifactId dengan betul . Mereka terpaksa dipilih sekali dan digunakan lagi. Dan mereka membentuk pakej di mana kod itu disimpan. Adakah: ua.comparison.image Sekarang: com.github.romankh3.image.comparison Dan ini jelas lebih baik, kerana semua orang tahu bahawa ini adalah projek daripada GitHub dan boleh didapati daripada orang yang mempunyai nama samaran romankh3. Apabila saya melakukan semua ini, saya mengeluarkan versi baharu v2.1.0 .

Komunikasi dengan Sweden. Mei 2019

Selepas saya menerbitkan perpustakaan, seorang lagi warga Sweden (Mika Kytöläinen) menghantar e-mel kepada saya dan meminta rakannya membuat perubahan pada perpustakaan saya. Dia mengatakan bahawa dia sangat memerlukan ini dan dia akan sangat gembira jika kita melakukannya dan melakukannya dengan cepat. Sudah tentu, saya tidak menentang perubahan yang diperlukan. Dia mencadangkan menambah konfigurasi ketebalan garisan yang melukis segi empat tepat. Seperti, bagi mereka yang mempunyai penglihatan yang lemah, ini akan menjadi perubahan yang berguna. Menyediakan kod . Setelah menambah beberapa lagi perubahan, saya mengeluarkan versi v2.2.0

Komunikasi dengan orang Jerman. Mei 2019

Selepas ini, seorang Jerman mencipta isu di mana dia mengatakan bahawa dia mahu menggunakannya untuk ujian, tetapi ia tidak mempunyai fungsi. Dia membuat banyak cadangan yang sangat menarik, dia mencadangkan bahawa daripada memulangkan hanya gambar yang terhasil dengan hasilnya sebagai hasil perbandingan, kembalikan set data: apa yang dibandingkan, hasilnya (jika perlu) dan keadaan di mana terdapat akan menjadi MATCH, MISMATCH, SIZE_MISMATCH . Malah membuat perubahan. Tetapi mereka tidak mengambil kira kod sebelumnya dan dibuat secara tergesa-gesa. Saya menolak mereka dan menawarkan untuk melaksanakannya seperti yang saya lihat patut. Walaupun begitu, dia bertindak balas lebih banyak dan saya memutuskan bahawa saya akan melakukannya sendiri dan mengeluarkan versi baharu. Pada masa yang sama, Mika Kytöläinen mencadangkan satu lagi fungsi menarik - menambah kawasan yang tidak akan disertakan dalam perbandingan. Ini adalah kes sebenar. Dan semua ini dikeluarkan dalam v3.0.0

Gunakan dalam projek sebenar

Pada akhir Mei, penguji automasi dari Kyiv menulis kepada saya, yang mula berminat dengan perpustakaan dan ingin menggunakannya dalam projek sebenar yang membawa masuk wang. Ia adalah satu kejayaan! Menggunakannya di suatu tempat dalam projek haiwan peliharaan adalah satu perkara, tetapi menggunakannya dalam projek sebenar adalah perkara yang sama sekali berbeza. Kami membincangkan apa dan bagaimana ia berfungsi. Aplikasi ini sangat menarik: dalam aplikasi mereka, mereka mempunyai cek yang dicetak dan ia adalah perlu untuk menyemak bahawa cek dibuat mengikut templat tertentu dan ia tidak berubah. Tetapi terdapat masalah bahawa bahagian seperti tarikh dan masa sentiasa berubah dan terpaksa diabaikan. Kami telah menambah kefungsian untuk mengabaikan beberapa kawasan, tetapi ternyata ia masih sangat mentah untuk kegunaan sebenar dan kami masih bekerjasama dengan baik selama beberapa minggu mengenai perkara ini. Hasilnya ialah keluaran versi v3.1.1

Mencari Niche

Selepas itu, saya menyedari bahawa niche sebenar untuk perpustakaan saya menggunakannya dalam ujian. Untuk melakukan ini, saya memutuskan untuk mencari beberapa jenis forum untuk penguji dan menulis kepada mereka mengenainya untuk mendapatkan maklum balas dan meningkatkan kemasyhuran. Saya menemui forum bahasa Rusia dan menerbitkan artikel di sana: Organisasi imej ujian - perbandingan dua yang serupa . Di dalamnya saya menerima maklum balas sebenar tentang kod dan fungsi, yang saya gunakan dan mengeluarkan versi baharu v3.2.0 , dan kemudian v.3.3.0 .

Sekarang

Perpustakaan pada masa ini mempunyai 60 bintang di Github dan mempunyai 33 garpu. Saya rasa ini sangat keren memandangkan fakta bahawa saya tidak mempromosikannya dalam apa cara sekalipun kecuali artikel di forum untuk automator. Terima kasih kepada semua yang membaca hingga habis. Ia sebenarnya ternyata menjadi artikel yang lebih panjang daripada yang saya jangkakan. Artikel tentang cara menerbitkan perpustakaan ke Maven Central. Jika anda mempunyai apa-apa untuk ditambah, tulis! Jika anda mempunyai apa-apa untuk dicadangkan untuk menambah baik perpustakaan, tulis! Saya akan membaca segala-galanya dan menumpukan masa yang sesuai untuknya. Sesiapa yang menyukai artikel itu dan mendapati ia berguna - nilaikannya dan tulis dalam komen. Juga, langgan akaun github saya romankh3 Lihat juga artikel saya yang lain:
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION