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 . Tujuan 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:
Terdapat gambar kedua:
Ia adalah perlu untuk mencari perbezaan dan bulatkan mereka seperti yang ditunjukkan di bawah:
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:
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!
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:-
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.
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: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.
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.0Komunikasi 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.0Gunakan 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.1Mencari 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:- Soalan teknikal semasa temuduga
- Macam mana nak cari kerja? Petua untuk menghantar resume
- Keletihan profesional. Bagaimana untuk menentang?
- Sejarah kejayaan. 20 jam pengaturcaraan seminggu, ijazah sarjana dan kehidupan peribadi
- Mencipta sistem pemantauan harga tiket penerbangan: panduan langkah demi langkah [Bahagian 1]
- Panduan untuk mencipta pelanggan untuk API Skyscanner dan menerbitkannya dalam jCenter dan Maven Central [Bahagian 1]
- Pembalakan: apa, bagaimana, di mana dan dengan apa?
- Nyahpepijat dalam Intellij IDEA: panduan untuk pemula
GO TO FULL VERSION