JavaRush /จาวาบล็อก /Random-TH /การทดสอบสัมภาษณ์กลายเป็นห้องสมุดโอเพ่นซอร์สได้อย่างไร
Roman Beekeeper
ระดับ

การทดสอบสัมภาษณ์กลายเป็นห้องสมุดโอเพ่นซอร์สได้อย่างไร

เผยแพร่ในกลุ่ม
สวัสดีทุกคน ชุมชน JavaRush! เกร็ดเล็กๆ น้อยๆ เกี่ยวกับตัวฉัน: ฉันทำงานเป็น Java Software Engineer มาตั้งแต่ฤดูใบไม้ผลิปี 2016 ฉันชอบมาที่นี่และแก้ปัญหาที่ฉันไม่ได้แก้ระหว่างเรียน วันนี้ฉันจะบอกคุณเกี่ยวกับห้องสมุด - การเปรียบเทียบรูปภาพ . นี่คือไลบรารีโอเพ่นซอร์สที่เผยแพร่ต่อสาธารณะบน GitHub งานทดสอบการสัมภาษณ์กลายเป็นห้องสมุดโอเพ่นซอร์สได้อย่างไร - 1จุดประสงค์ของบทความนี้คือเพื่อสื่อว่าการสร้างผลิตภัณฑ์โอเพ่นซอร์สไม่ใช่แค่การเสียเวลาเท่านั้น! นี่เป็นประสบการณ์อันยาวนานที่ดึงมาจากด้านต่างๆ เมื่อคุณสามารถควบคุมกระบวนการพัฒนาทั้งหมดได้ เมื่อคุณต้องการเจาะลึกทุกรายละเอียด โอเพ่นซอร์สคือโลกรอบตัวคุณ ฉันไม่ได้ล้อเล่น ในระหว่างที่ห้องสมุดนี้มีอยู่ ฉันได้สื่อสารกับผู้คนจากประเทศต่างๆ เช่น สหรัฐอเมริกา อินเดีย จีน อียิปต์ รัสเซีย เยอรมนี ยูเครน สวีเดน นิวซีแลนด์ นอร์เวย์ นั่นคือนี่คือประสบการณ์จริงในการพัฒนาร่วมกัน ค้นหาการประนีประนอม การตรวจสอบโค้ด และอื่นๆ นั่นคือการแนะนำ เรามาเริ่มกันตามลำดับ:

ทดสอบ. ต้นเดือนสิงหาคม 2017

ทุกอย่างเริ่มต้นจากการที่ฉันได้สัมภาษณ์กับบริษัทแห่งหนึ่ง ซึ่งขั้นตอนแรกคือการเขียนงานทดสอบ ภารกิจคือการเขียนโค้ดที่จะเปรียบเทียบรูปภาพสองรูปที่มีขนาดเท่ากัน ค้นหาความแตกต่างระหว่างรูปภาพเหล่านั้น จัดกลุ่มรูปภาพเหล่านั้น และวาดรูปสี่เหลี่ยมผืนผ้ารอบๆ รูปภาพเหล่านั้น มีภาพแรก:
งานทดสอบการสัมภาษณ์กลายเป็นห้องสมุดโอเพ่นซอร์สได้อย่างไร - 2
มีภาพที่สอง:
งานทดสอบการสัมภาษณ์กลายเป็นห้องสมุดโอเพ่นซอร์สได้อย่างไร - 3
จำเป็นต้องค้นหาความแตกต่างและวงกลมตามที่แสดงด้านล่าง:
วิธีที่งานทดสอบการสัมภาษณ์กลายเป็นห้องสมุดโอเพ่นซอร์ส - 4
อย่างที่คุณเห็น มีความแตกต่างใน ช่อง ชื่อผู้ใช้ซึ่งล้อมรอบด้วยสามเหลี่ยมสีแดง คำอธิบายโดยละเอียด เพิ่มเติมของงาน ฉันตัดสินใจว่าฉันต้องการทำไม่เพียงแต่อย่างถูกต้องจากมุมมองการใช้งานเท่านั้น แต่ยังต้องสวยงามด้วยเพื่อไม่ให้น่าอาย เมื่อต้องการทำสิ่งนี้ ฉันตัดสินใจว่าจะเผยแพร่สิ่งนี้เป็นโปรเจ็กต์บนGitHub ฉันอยากศึกษา GitHub มานานแล้วและได้รับประสบการณ์ในการทำงานกับมัน หลังจากการดูคร่าวๆ ฉันพบว่าเป็นการดีที่จะเพิ่มบริการของบุคคลที่สามสำหรับการวิเคราะห์คุณภาพโค้ด การสร้างการครอบคลุมโค้ดด้วยการทดสอบ ฯลฯ เพิ่มเครื่องมือดังต่อไปนี้:
  • Codacy - คุณภาพของโค้ด มันคุ้มค่าที่จะให้ความสนใจ

  • Travis CIเป็นเครื่องมือ CI (การบูรณาการอย่างต่อเนื่อง) ที่สร้างโปรเจ็กต์ รันการทดสอบ และบอกว่าสร้างโปรเจ็กต์ได้สำเร็จหรือไม่ ตัวอย่างเช่น หากการทดสอบอย่างใดอย่างหนึ่งไม่ผ่านการทดสอบอันเป็นผลมาจากการเปลี่ยนแปลงใหม่ มันจะบอกว่าการสร้างโปรเจ็กต์ไม่สำเร็จและจะทำให้เป็นสีแดง

  • Coverallsคือเครื่องมือที่แสดงเปอร์เซ็นต์ของโค้ดที่ผ่านการทดสอบครอบคลุม

  • BetterCode Hubเป็นอีกหนึ่งเครื่องมือในการวิเคราะห์คุณภาพโค้ด สิ่งที่มีประโยชน์มากซึ่งไม่เพียงแต่จะบอกคุณว่าอะไรไม่ดี แต่ยังอธิบายสาเหตุและให้ลิงก์ไปยังหนังสือที่คุณสามารถรับความรู้เกี่ยวกับเรื่องนี้ได้

แต่ละบริการเหล่านี้มีป้ายสถานะของตนเองพร้อมผลลัพธ์ข้อมูล เช่น โครงการครอบคลุมโค้ด และสามารถเพิ่มป้ายสถานะนี้ในคำอธิบายหลักของโครงการ - ไฟล์ README งานพร้อมแล้ว - ฉันส่งไปเพื่อตรวจสอบ หลังจากการทบทวน ฉันได้สร้างปัญหา Github สำหรับแต่ละความคิดเห็นทันทีจากหน่วยความจำใหม่ ซึ่งจะช่วยฉันปรับปรุงโครงการนี้ ไม่มีงานปรับปรุงจากนายจ้างเลยลืมโครงการไปสักพัก...

เส้นทางห้องสมุด. กรกฎาคม 2018

โลโก้

มีอยู่ช่วงหนึ่ง ฉันพบว่ามีคนเยี่ยมชมโครงการของฉันบ่อยครั้ง และสิ่งนี้เกิดขึ้นทุกวัน ฉันรู้สึกประหลาดใจกับสิ่งนี้และประหลาดใจยิ่งกว่านั้นอีกในความจริงที่ว่าประมาณหนึ่งปีต่อมา ISSUE ได้ถูกสร้างขึ้น ซึ่งมีการเขียนว่านักออกแบบกราฟิกบางคนเสนอให้ฉันสร้างโลโก้สำหรับโครงการของฉัน พวกเขาบอกว่าเขาชอบที่จะทำสิ่งนี้กับผลิตภัณฑ์ Opensource และจะทำมันฟรีอย่างแน่นอน เราเริ่มร่วมมือกัน มีการเสนอทางเลือกหลายทาง แต่ในที่สุดเราก็ตกลงตามนี้:
งานทดสอบการสัมภาษณ์กลายเป็นห้องสมุดโอเพ่นซอร์สได้อย่างไร - 5
ตอนนั้นฉันยังเด็กและไม่คุ้นเคยกับชุมชนโอเพ่นซอร์ส และข้อเท็จจริงของข้อเสนอดังกล่าวนั้นช่างแปลกประหลาดสำหรับฉัน และฉันถามว่าทำไมเขาถึงทำเช่นนี้? ซึ่งเขาตอบว่า: “ฮ่าๆ แค่เพราะว่าฉันชอบมีส่วนร่วมในโครงการโอเพ่นซอร์ส คล้ายๆ กับเป้าหมายชีวิต…” ( ตัวปัญหาอยู่ตรงนี้ ) นั่นคือครั้งแรกที่ฉันรู้สึกว่ามันยอดเยี่ยมแค่ไหนเมื่อผู้คนต่างๆ พบคุณผ่านโครงการโอเพ่นซอร์สและนำเสนอสิ่งที่น่าสนใจเช่นนี้!

ข้อบกพร่องด้านแรก

ฉันสังเกตเห็นว่านักพัฒนาบางรายจากประเทศจีนสร้างปัญหา ให้ ฉันซึ่งเขาอธิบายว่าเขาพบข้อบกพร่องในการทำงานของไลบรารี หากคุณใช้รูปภาพขนาดใหญ่ คุณจะได้รับStackOverflowError ชายคนนั้นตัดสินใจฉวยโอกาสและพบข้อผิดพลาด และฉันไม่ได้เพียงแค่พบมัน และยังเขียนเกี่ยวกับเธอด้วย นับเป็นก้าวใหม่ในการพัฒนาห้องสมุด ยิ่งกว่านั้นฉันก็ไม่มีวิธีแก้ปัญหาจริงๆ เมื่อถึงจุดหนึ่ง ผู้ทดสอบคนหนึ่งจากรัสเซียเสนอวิธีแก้ปัญหา แต่มันดิบและไม่ได้ทำอย่างถูกต้องและฉันก็ไม่ยอมรับ และเมื่อถึงเวลาเผยแพร่ห้องสมุดใน Maven Central จำเป็นต้องแก้ไขบางอย่างที่มีข้อบกพร่องนี้ ฉันไม่ต้องการเผยแพร่พร้อมกับมัน นอกจากนี้ยังมีข้อบกพร่องอีกประการหนึ่งที่ฉันไม่เคยแก้ไขและนำมาซึ่งความไม่สะดวกมากมาย

การใช้บรรทัดคำสั่ง ฤดูใบไม้ร่วง 2018

ขั้นต่อไปของการพัฒนาคือการสื่อสารกับชาวสวีเดน (Renato Athaydes) ที่ต้องการใช้ห้องสมุดผ่านทางบรรทัดคำสั่ง และด้วยเหตุนี้จึงจำเป็นต้องทำการเปลี่ยนแปลงและเพิ่มเติมบางอย่าง ฉันประหลาดใจอีกครั้งและประหลาดใจกับสิ่งนี้ หลังจากที่นักออกแบบกราฟิกเขียนถึงฉัน ความประหลาดใจของฉันก็น้อยลง แต่ก็ยังสูงมาก ความคิดที่ว่ามีคนต้องการโค้ดของฉันจริงๆ ทำให้ฉันรู้สึกเหลือเชื่อมาก เขาทำการเปลี่ยนแปลงที่จำเป็นและเตรียมโค้ด ฉันดำเนินการตรวจสอบโค้ด นั่นคือ ฉันดูการเปลี่ยนแปลง มีความคิดเห็นที่มีการเปลี่ยนแปลง และการเปลี่ยนแปลงอยู่ในไลบรารีแล้ว ฉันกำหนดการเปลี่ยนแปลงเหล่านี้เป็นเวอร์ชันv2.0 ขั้นตอนต่อไปคือการเพิ่มไลบรารีลงใน Maven Central ซึ่งเป็นพื้นที่เก็บข้อมูลกลางซึ่งคุณสามารถดาวน์โหลดสำหรับโปรเจ็กต์ใดก็ได้และใช้เป็นข้อมูลอ้างอิง ตอนนั้นฉันไม่รู้ว่าต้องทำอย่างไร แม้จะอยู่ในระยะไกล ฉันเลยบอกว่าฉันไม่ว่างและขอให้เขาดำเนินการทุกขั้นตอนที่จำเป็นในการจัดทำโปรเจ็กต์ แต่กลับกลายเป็นว่ายังไม่เพียงพอ และสิ่งที่น่าสนใจที่สุดคือการสร้างการเชื่อมต่อกับ Maven Central นี่เป็นความเจ็บปวดครั้งใหญ่ ซึ่งฉันทำไม่ได้ในครั้งแรก และเมื่อวันที่ 15 เมษายนเท่านั้นที่ฉันเผยแพร่โปรเจ็กต์บน Maven Central ได้ มันไม่ง่ายเลย แต่อย่างที่คนอื่นๆ พูดกันว่า "ใครก็ตามที่ต้องการเผยแพร่โค้ด Java ของตนก็ต้องเจอกับสิ่งนี้" ก่อนที่ฉันจะเผยแพร่ห้องสมุดในที่สุดฉันก็พบว่าต้องทำอย่างไรกับข้อบกพร่องที่เกิดขึ้นมานานและเปิดตัวเวอร์ชันใหม่v2.0.2ซึ่งฉันขอบคุณทุกคนที่ช่วยฉันอธิบายว่าฉันทำอะไรและอย่างไร .

กำลังเผยแพร่ไปยัง Maven Central ฤดูใบไม้ผลิ 2019

หากต้องการเผยแพร่ไลบรารีอย่างถูกต้อง คุณต้องมีความเข้าใจเกี่ยวกับเวอร์ชันและวิธีการตั้งค่าเวอร์ชันอย่างถูกต้อง ฉันจะยึดตามโครงการนี้:
  • XX.YY.BBBBโดยที่XXเป็นการอัพเดตเวอร์ชันหลัก ซึ่งก่อให้เกิดการเปลี่ยนแปลงที่ไม่เข้ากันกับเวอร์ชันก่อนหน้า (เช่น การเปลี่ยนแปลงในผลลัพธ์ที่ส่งคืนในเมธอด)
  • YYเป็นการอัปเดตเล็กน้อย - การเปลี่ยนแปลงภายในหรือส่วนขยายที่ไม่เปลี่ยนแปลงBBBBซึ่งเป็นข้อบกพร่องที่ได้รับการแก้ไขแล้ว
  • ตัวอย่างเช่น เวอร์ชัน2.0.2หมายความว่าเวอร์ชันหลักคือ 2 ไม่มีการอัปเดตเล็กน้อย และมีการอัปเดตสองรายการสำหรับข้อบกพร่อง
ต่อไป สิ่งสำคัญคือต้องทราบวิธีตั้งค่าgroupIdและartifactId อย่างถูก ต้อง ต้องเลือกเพียงครั้งเดียวและใช้ต่อไป และพวกมันก็ประกอบเป็นแพ็คเกจที่เก็บโค้ดไว้ เคยเป็น: ua.comparison.image ตอนนี้: com.github.romankh3.image.comparison และสิ่งนี้ดีกว่าอย่างชัดเจนเนื่องจากทุกคนรู้ดีว่านี่เป็นโครงการจาก GitHub และสามารถพบได้จากบุคคลที่มีชื่อเล่น romankh3 เมื่อฉันทำทั้งหมดนี้ ฉันได้เปิดตัวเวอร์ชันใหม่ v2.1.0

การสื่อสารกับชาวสวีเดน พฤษภาคม 2019

หลังจากที่ฉันเผยแพร่ห้องสมุด ชาวสวีเดนอีกคน (Mika Kytöläinen) ส่งอีเมลถึงฉันและขอให้เพื่อนของเขาแก้ไขห้องสมุดของฉัน เขาบอกว่าเขาต้องการสิ่งนี้จริงๆ และเขาจะมีความสุขมากถ้าเราทำมันและทำมันอย่างรวดเร็ว แน่นอนว่าฉันไม่ได้ต่อต้านการเปลี่ยนแปลงที่จำเป็น เขาแนะนำให้เพิ่มการกำหนดค่าความหนาของเส้นที่วาดรูปสี่เหลี่ยมผืนผ้า เช่น สำหรับผู้ที่สายตาไม่ดี นี่จะเป็นการเปลี่ยนแปลงที่มีประโยชน์ เตรียมโค้ดไว้แล้ว หลังจากเพิ่มการเปลี่ยนแปลงเพิ่มเติมเล็กน้อย ฉันจึงเปิดตัวเวอร์ชันv2.2.0

การสื่อสารกับชาวเยอรมัน พฤษภาคม 2019

หลังจากนั้น ชาวเยอรมันคนหนึ่งได้สร้างปัญหาขึ้นมาโดยบอกว่าเขาต้องการใช้สำหรับการทดสอบ แต่ไม่มีฟังก์ชันการทำงาน เขาเสนอข้อเสนอมากมายที่น่าสนใจมาก เขาแนะนำว่าแทนที่จะส่งคืนเฉพาะรูปภาพผลลัพธ์พร้อมผลลัพธ์จากการเปรียบเทียบ ให้ส่งคืนชุดข้อมูล: สิ่งที่ถูกเปรียบเทียบ ผลลัพธ์ (ถ้าจำเป็น) และสถานะที่มี จะตรงกัน ไม่ตรงกัน SIZE_MISMATCH แม้กระทั่งทำการเปลี่ยนแปลง แต่พวกเขาไม่ได้คำนึงถึงรหัสก่อนหน้านี้เลยและถูกสร้างขึ้นอย่างเร่งรีบ ฉันปฏิเสธพวกเขาและเสนอให้ดำเนินการตามที่เห็นสมควร อย่างไรก็ตาม เขาก็ตอบสนองมากขึ้น และฉันก็ตัดสินใจว่าจะทำมันเองและออกเวอร์ชั่นใหม่ ในเวลาเดียวกัน Mika Kytöläinen ได้เสนอฟังก์ชันที่น่าสนใจอีกอย่างหนึ่ง โดยเพิ่มส่วนที่จะไม่รวมอยู่ในการเปรียบเทียบ นี่เป็นกรณีจริง และทั้งหมดนี้เปิดตัวในเวอร์ชัน 3.0.0

นำไปใช้ในโครงการจริง

เมื่อปลายเดือนพฤษภาคม ผู้ทดสอบระบบอัตโนมัติจาก Kyiv เขียนถึงฉันซึ่งเริ่มสนใจห้องสมุดและต้องการใช้ในโครงการจริงที่สร้างรายได้ มันเป็นความก้าวหน้า! การใช้มันที่ไหนสักแห่งในโปรเจ็กต์สัตว์เลี้ยงก็เรื่องหนึ่ง แต่การใช้มันในโปรเจ็กต์จริงนั้นเป็นอีกเรื่องหนึ่งที่แตกต่างไปจากเดิมอย่างสิ้นเชิง เราได้พูดคุยกันว่ามันทำงานอย่างไรและอย่างไร แอปพลิเคชันนี้น่าสนใจมาก: ในแอปพลิเคชันของพวกเขามีเช็คที่พิมพ์และจำเป็นต้องตรวจสอบว่าเช็คนั้นถูกสร้างขึ้นตามเทมเพลตที่แน่นอนและไม่มีการเปลี่ยนแปลง แต่มีปัญหาคือส่วนต่างๆ เช่น วันที่และเวลาเปลี่ยนแปลงอยู่เสมอและต้องถูกละเลย เราได้เพิ่มฟังก์ชันการทำงานเพื่อเพิกเฉยต่อบางพื้นที่แล้ว แต่กลับกลายเป็นว่ายังใช้งานไม่ได้จริงมากนัก และเรายังคงทำงานร่วมกันอย่างมีประสิทธิผลเป็นเวลาหลายสัปดาห์ในเรื่องนี้ ผลลัพธ์ที่ได้คือการเปิดตัวเวอร์ชัน v3.1.1

ค้นหาซอก

หลังจากนั้นฉันก็รู้ว่าช่องที่แท้จริงสำหรับห้องสมุดของฉันนั้นกำลังใช้มันในการทดสอบ ในการทำเช่นนี้ ฉันตัดสินใจค้นหาฟอรัมสำหรับผู้ทดสอบและเขียนถึงพวกเขาเพื่อรับคำติชมและเพิ่มชื่อเสียง ฉันพบฟอรัมภาษารัสเซียและตีพิมพ์บทความที่นั่น: องค์กรของการทดสอบภาพ - การเปรียบเทียบสองภาพที่คล้ายกัน . ในนั้น ฉัน ได้รับผลตอบรับอย่างแท้จริงเกี่ยวกับโค้ดและฟังก์ชันการทำงาน ซึ่งฉันใช้และเปิดตัวเวอร์ชันใหม่v3.2.0และv.3.3.0

ตอนนี้

ปัจจุบันห้องสมุดมี 60 ดาวบน Github และมี 33 ส้อม ฉันคิดว่ามันเจ๋งมาก เมื่อพิจารณาว่าฉันไม่ได้โปรโมตมัน แต่อย่างใดยกเว้นบทความในฟอรัมสำหรับรถยนต์ ขอบคุณทุกคนที่อ่านจนจบ จริงๆ แล้วกลายเป็นบทความที่ยาวกว่าที่ฉันคาดไว้มาก บทความเกี่ยวกับวิธีการเผยแพร่ห้องสมุดไปยัง Maven Central มีอะไรจะเพิ่มเติมก็เขียนได้เลย! หากคุณมีอะไรจะแนะนำเพื่อปรับปรุงห้องสมุด เขียนเลย! ฉันจะอ่านทุกอย่างและอุทิศเวลาให้กับมันอย่างเหมาะสม ใครก็ตามที่ชอบบทความนี้และพบว่ามีประโยชน์ - ให้คะแนนและเขียนความคิดเห็น นอกจากนี้ สมัครสมาชิกบัญชี GitHub ของฉันromankh3 ดูบทความอื่น ๆ ของฉันด้วย:
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION