JavaRush /Java Blog /Random-ID /Bagaimana tes wawancara berubah menjadi perpustakaan sumb...

Bagaimana tes wawancara berubah menjadi perpustakaan sumber terbuka

Dipublikasikan di grup Random-ID
Halo semuanya, komunitas JavaRush! Sedikit tentang diri saya: Saya telah bekerja sebagai Java Software Engineer sejak musim semi 2016. Saya senang datang ke sini dan memecahkan masalah yang tidak saya selesaikan selama studi. Hari ini saya akan bercerita tentang perpustakaan - Perbandingan Gambar . Ini adalah perpustakaan sumber terbuka yang tersedia untuk umum di GitHub . Bagaimana tugas tes wawancara berubah menjadi perpustakaan sumber terbuka - 1Tujuan artikel ini adalah untuk menyampaikan bahwa membuat produk open source tidak hanya membuang-buang waktu saja, bukan! Ini adalah pengalaman kaya yang diambil dari berbagai sisi, saat Anda memiliki kendali atas keseluruhan proses pengembangan, saat Anda perlu mempelajari setiap detailnya. Open Source adalah dunia di sekitar Anda. Tak main-main, selama keberadaan perpustakaan ini, saya berkomunikasi dengan orang-orang dari berbagai negara, seperti Amerika, India, China, Mesir, Rusia, Jerman, Ukraina, Swedia, Selandia Baru, Norwegia. Artinya, ini adalah pengalaman nyata dalam pengembangan bersama, menemukan kompromi, memeriksa kode, dan sebagainya. Itu tadi perkenalannya, sekarang mari kita mulai secara berurutan:

Tes. Awal Agustus 2017

Semuanya berawal dari fakta bahwa saya melakukan wawancara dengan salah satu perusahaan, di mana langkah pertama adalah menulis tugas tes. Tugasnya adalah menulis kode yang akan membandingkan dua gambar dengan ukuran yang sama, menemukan perbedaan di antara keduanya, mengelompokkannya, dan menggambar persegi panjang di sekelilingnya. Ada gambar pertama:
Bagaimana tugas tes wawancara berubah menjadi perpustakaan sumber terbuka - 2
Ada gambar kedua:
Bagaimana tugas tes wawancara berubah menjadi perpustakaan sumber terbuka - 3
Perbedaannya perlu ditemukan dan dilingkari seperti yang ditunjukkan di bawah ini:
Bagaimana tugas tes wawancara berubah menjadi perpustakaan sumber terbuka - 4
Seperti yang terlihat, terdapat perbedaan pada kolom Username yang dilingkari segitiga merah. Deskripsi tugas yang lebih rinci . Saya memutuskan bahwa saya ingin melakukannya tidak hanya dengan benar dari sudut pandang fungsional, tetapi juga dengan indah, sehingga tidak memalukan. Untuk melakukan ini, saya memutuskan untuk mempublikasikan ini sebagai proyek di GitHub . Saya sudah lama ingin mempelajari GitHub dan mendapatkan pengalaman bekerja dengannya. Setelah melihat sekilas, saya menemukan bahwa sebaiknya menambahkan layanan pihak ketiga untuk menganalisis kualitas kode, menghasilkan cakupan kode dengan pengujian, dll. Menambahkan alat berikut:
  • Codacy - kualitas kode. Ini sangat layak untuk diperhatikan.

  • Travis CI adalah alat CI (integrasi berkelanjutan) yang membangun sebuah proyek, menjalankan pengujian, dan memberi tahu apakah proyek tersebut berhasil dibangun. Misalnya, jika salah satu pengujian tidak lulus karena perubahan baru, maka akan dikatakan bahwa pembangunan proyek tidak berhasil dan akan mewarnainya dengan warna merah.

  • Coverall adalah alat yang menunjukkan berapa persentase kode Anda yang tercakup dalam tes.

  • BetterCode Hub adalah alat lain untuk menganalisis kualitas kode. Suatu hal yang sangat berguna yang tidak hanya memberi tahu Anda apa yang buruk, tetapi juga menjelaskan alasannya dan memberikan tautan ke buku di mana Anda dapat memperoleh pengetahuan tentangnya.

Masing-masing layanan ini memiliki lencananya sendiri dengan hasil data, seperti proyek cakupan kode. Dan lencana ini dapat ditambahkan di deskripsi utama proyek - file README. Tugas sudah siap - saya mengirimkannya untuk ditinjau. Setelah peninjauan, saya segera, dari ingatan baru, membuat Masalah Github untuk setiap komentar , yang kemudian akan membantu saya meningkatkan proyek ini. Tidak ada tugas perbaikan dari pemberi kerja, jadi saya lupa proyeknya sebentar...

Jalur Perpustakaan. Juli 2018

Logo

Pada satu titik, saya menemukan bahwa orang-orang sering mengunjungi proyek saya, dan ini terjadi setiap hari. Saya kagum dengan hal ini, dan bahkan lebih takjub lagi dengan kenyataan bahwa sekitar setahun kemudian sebuah ISSUE dibuat, di mana tertulis bahwa seorang desainer grafis tertentu menawari saya untuk membuat logo untuk proyek saya. Mereka bilang dia suka melakukan ini untuk produk Opensource dan akan melakukannya secara gratis. Kami mulai berkolaborasi. Beberapa opsi diajukan, namun pada akhirnya kami memutuskan:
Bagaimana tugas tes wawancara berubah menjadi perpustakaan sumber terbuka - 5
Saat itu saya masih muda dan belum terbiasa dengan komunitas opensource, dan fakta dari tawaran seperti itu sangat liar bagi saya dan saya bertanya, mengapa dia melakukan ini? Yang dia jawab: "Lolz oh, hanya karena saya suka berkontribusi pada proyek open source. Semacam tujuan hidup..." ( masalahnya sendiri ada di sini ). Saat itulah saya pertama kali merasakan betapa hebatnya ketika orang berbeda menemukan Anda melalui proyek sumber terbuka dan menawarkan hal-hal menarik!

Cacat Sisi Pertama

Saya perhatikan bahwa pengembang tertentu dari Tiongkok membuat masalah untuk saya , di mana dia menjelaskan bahwa dia telah menemukan cacat pada pekerjaan perpustakaan, bahwa jika Anda menggunakan gambar besar, Anda mendapatkan StackOverflowError . Pria itu memutuskan untuk mengambil keuntungan dan menemukan kesalahan. Dan saya tidak menemukannya begitu saja. dan juga menulis tentang dia. Ini merupakan langkah baru dalam pengembangan perpustakaan. Terlebih lagi, saya tidak punya solusinya. Pada titik tertentu, salah satu penguji dari Rusia mengusulkan solusi. Tapi itu mentah dan tidak dibuat dengan benar dan saya tidak menerimanya. Dan ketika tiba waktunya untuk menerbitkan perpustakaan di Maven Central, ada sesuatu yang perlu diselesaikan dengan cacat ini; saya tidak ingin menerbitkannya bersamaan dengan itu. Selain itu, ada satu lagi cacat yang tidak pernah saya perbaiki dan juga menimbulkan banyak ketidaknyamanan.

Penggunaan Baris Perintah. Musim gugur 2018

Tahap pengembangan selanjutnya adalah komunikasi dengan seorang Swedia (Renato Athaydes), yang ingin menggunakan perpustakaan melalui baris perintah dan untuk itu perlu dilakukan beberapa perubahan dan penambahan. Saya kembali takjub dan terkejut dengan hal ini. Setelah desainer grafis menulis kepada saya, keterkejutan saya agak berkurang, tetapi masih sangat tinggi. Pikiran bahwa seseorang benar-benar membutuhkan kode saya membuat saya merasa luar biasa. Dia membuat perubahan yang diperlukan dan menyiapkan kodenya. Saya melakukan review kode yaitu saya melihat perubahannya, ada komentar yang diubah dan perubahannya sudah ada di perpustakaan. Saya menetapkan perubahan ini sebagai versi v2.0. Langkah selanjutnya adalah menambahkan perpustakaan ke Maven Central - repositori pusat tempat Anda dapat mengunduhnya untuk proyek apa pun dan menggunakannya sebagai ketergantungan. Pada saat itu, saya tidak tahu bagaimana melakukan ini, bahkan dari jarak jauh, jadi saya katakan saya sedang sibuk dan memintanya untuk melakukan semua langkah yang diperlukan untuk menyiapkan proyek. Namun ternyata ini belum cukup dan yang paling menarik adalah menjalin koneksi dengan Maven Central. Ini adalah penderitaan yang luar biasa, yang tidak dapat saya lakukan pertama kali, dan baru pada tanggal 15 April saya dapat mempublikasikan proyek tersebut di Maven Central. Itu tidak mudah, tetapi seperti yang orang lain katakan, "setiap orang yang ingin mempublikasikan kode Java mereka harus melalui ini." Sebelum saya menerbitkan perpustakaan, saya akhirnya menemukan apa dan bagaimana melakukannya dengan cacat yang telah berlangsung lama dan merilis versi baru v2.0.2 , di mana saya berterima kasih kepada semua orang yang membantu saya, menjelaskan apa dan bagaimana saya melakukannya .

Menerbitkan ke Maven Central. Musim semi 2019

Untuk menerbitkan perpustakaan dengan benar, Anda harus memiliki pemahaman yang baik tentang pembuatan versi dan cara mengatur versi dengan benar. Saya akan tetap berpegang pada skema ini:
  • XX.YY.BBBB , di mana XX adalah pembaruan versi utama yang memerlukan perubahan yang tidak kompatibel dengan versi sebelumnya (misalnya, mengubah hasil yang dikembalikan dalam metode);
  • YY adalah pembaruan kecil - perubahan internal atau perluasan yang tidak mengubah BBBB - ini adalah cacat yang telah diperbaiki.
  • Misal versi 2.0.2 berarti versi mayornya 2, tidak ada update minor, dan ada dua update untuk cacat.
Selanjutnya, penting untuk mengetahui cara menyetel groupId dan artefakId dengan benar . Mereka harus dipilih satu kali dan digunakan lebih lanjut. Dan mereka membuat paket tempat kode disimpan. Tadinya: ua.comparison.image Sekarang: com.github.romankh3.image.comparison Dan ini jelas lebih baik, karena semua orang tahu bahwa ini adalah proyek dari GitHub dan dapat ditemukan dari seseorang dengan nama panggilan romankh3. Ketika saya melakukan semua ini, saya merilis versi baru v2.1.0 .

Komunikasi dengan Swedia. Mei 2019

Setelah saya menerbitkan perpustakaan tersebut, orang Swedia lainnya (Mika Kytöläinen) mengirimi saya email dan meminta temannya untuk melakukan perubahan pada perpustakaan saya. Dia mengatakan bahwa dia sangat membutuhkan ini dan dia akan sangat senang jika kita melakukannya dan melakukannya dengan cepat. Tentu saja, saya tidak menentang perubahan yang diperlukan. Dia menyarankan untuk menambahkan konfigurasi ketebalan garis yang menggambar persegi panjang. Misalnya, bagi mereka yang memiliki penglihatan buruk, ini akan menjadi perubahan yang bermanfaat. Siapkan kodenya . Setelah menambahkan beberapa perubahan lagi, saya merilis versi v2.2.0

Komunikasi dengan orang Jerman. Mei 2019

Setelah ini, seorang warga Jerman membuat masalah di mana dia mengatakan bahwa dia ingin menggunakannya untuk pengujian, tetapi fungsinya kurang. Ia banyak mengajukan usulan yang sangat menarik, ia menyarankan agar daripada hanya mengembalikan gambar yang dihasilkan dengan hasil perbandingan, kembalikan sekumpulan data: apa yang dibandingkan, hasil (bila perlu) dan keadaan di mana ada. akan menjadi MATCH, MISMATCH, SIZE_MISMATCH . Bahkan melakukan perubahan. Namun mereka sama sekali tidak memperhitungkan kode sebelumnya dan dibuat dengan tergesa-gesa. Saya menolaknya dan menawarkan untuk melaksanakannya sesuai keinginan saya. Meskipun demikian, dia merespons lebih banyak dan saya memutuskan untuk melakukannya sendiri dan merilis versi baru. Pada saat yang sama, Mika Kytöläinen mengusulkan fungsi menarik lainnya - menambahkan area yang tidak akan disertakan dalam perbandingan. Ini adalah kasus nyata. Dan semua ini dirilis di v3.0.0

Gunakan dalam proyek nyata

Pada akhir Mei, seorang penguji otomasi dari Kyiv menulis kepada saya, yang menjadi tertarik dengan perpustakaan dan ingin menggunakannya dalam proyek nyata yang menghasilkan uang. Itu adalah sebuah terobosan! Menggunakannya di suatu tempat dalam proyek kesayangan adalah satu hal, tetapi menggunakannya dalam proyek nyata adalah masalah yang sama sekali berbeda. Kami mendiskusikan apa dan bagaimana cara kerjanya. Penerapannya sangat menarik: dalam aplikasinya terdapat cek yang dicetak dan perlu dilakukan pengecekan apakah cek tersebut dibuat sesuai dengan template tertentu dan tidak berubah. Namun ada masalah dimana bagian seperti tanggal dan waktu selalu berubah dan harus diabaikan. Kami telah menambahkan fungsionalitas untuk mengabaikan beberapa area, namun ternyata masih sangat mentah untuk penggunaan nyata dan kami masih bekerja sama dengan baik selama beberapa minggu dalam hal ini. Hasilnya adalah rilis versi v3.1.1

Menemukan Ceruk

Setelah itu, saya menyadari bahwa ceruk sebenarnya untuk perpustakaan saya adalah menggunakannya dalam pengujian. Untuk melakukan ini, saya memutuskan untuk mencari semacam forum untuk penguji dan menulis kepada mereka tentang hal itu untuk mendapatkan masukan dan meningkatkan ketenaran. Saya menemukan forum berbahasa Rusia dan menerbitkan artikel di sana: Organisasi pengujian gambar - perbandingan dua gambar serupa . Di dalamnya saya menerima masukan nyata mengenai kode dan fungsionalitas, yang saya terapkan dan merilis versi baru v3.2.0 , dan kemudian v.3.3.0 .

Sekarang

Perpustakaan saat ini memiliki 60 bintang di Github dan memiliki 33 fork. Menurut saya ini sangat keren, mengingat saya tidak mempromosikannya dengan cara apapun kecuali artikel di forum automators. Terima kasih kepada semua orang yang membaca sampai akhir. Ternyata artikelnya jauh lebih panjang dari perkiraan saya. Artikel tentang cara menerbitkan perpustakaan ke Maven Central. Jika Anda memiliki sesuatu untuk ditambahkan, tulislah! Jika Anda memiliki saran untuk meningkatkan perpustakaan, tulislah! Saya akan membaca semuanya dan mencurahkan waktu yang tepat untuk itu. Siapa pun yang menyukai artikel ini dan menganggapnya bermanfaat - beri peringkat dan tulis di komentar. Juga, berlangganan akun github saya romankh3 Lihat juga artikel saya yang lain:
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION