大家好,JavaRush 社群! 自我介紹一下:自 2016 年春季以來,我一直擔任 Java 軟體工程師。我喜歡來這裡解決我學習期間沒有解決的問題。今天我要跟大家介紹一下這個函式庫——圖像比較。這是一個開源庫,可在GitHub上公開取得。 本文的目的是傳達創建開源產品不僅僅是浪費時間,不!當你掌控整個開發過程,當你需要深入研究每一個細節時,這是從不同方面汲取的豐富經驗。開源是您周圍的世界。我不是開玩笑,在這個圖書館存在期間,我與來自不同國家的人們進行了交流,例如美國、印度、中國、埃及、俄羅斯、德國、烏克蘭、瑞典、紐西蘭、挪威。也就是說,這是共同開發、尋找妥協、檢查程式碼等等的真實經驗。介紹就到這裡了,現在讓我們按順序開始:
還有第二張圖:
有必要找出差異並圈出它們,如下所示:
正如您所看到的,用戶名字段存在差異,該字段以紅色三角形圈出。更詳細的任務描述。我決定不僅要從功能的角度正確地做到這一點,而且還要美觀,這樣就不會令人尷尬。為此,我決定將其作為專案發佈在GitHub上。我一直想學習 GitHub 並獲得使用它的經驗。快速瀏覽後,我發現添加第三方服務來分析程式碼品質、透過測試產生程式碼覆蓋率等會很好。新增了以下工具:
那時我還年輕,對開源社群不熟悉,而且這樣的提議對我來說很瘋狂,我問,他為什麼要這麼做?他回答說:「哈哈,哦,只是因為我喜歡為開源專案做出貢獻。有點人生目標…」(問題本身就在這裡)。那是我第一次感受到當不同的人透過開源專案找到你並提供如此有趣的東西是多麼偉大!
測試。2017 年 8 月開始
這一切都始於我接受了其中一家公司的面試,第一步是編寫測試任務。任務是編寫一個程式碼來比較兩張相同大小的圖片,找出它們之間的差異,將它們分組並在它們周圍繪製一個矩形。有第一張圖:-
Codacy——程式碼品質。確實值得關注。
-
Travis CI是一個 CI(持續整合)工具,用於建立專案、運行測試並判斷專案是否建置成功。例如,如果其中一項測試由於新變更而未通過,那麼它會說專案建置不成功並將其標記為紅色。
-
Coveralls是一個工具,可以顯示測試覆蓋了程式碼的百分比。
-
BetterCode Hub是另一個用來分析程式碼品質的工具。這是一個非常有用的東西,它不僅會告訴您什麼是不好的,還會描述原因並提供一本書的鏈接,您可以在其中獲得相關知識。
庫路徑。2018年7月
標識
有一次,我發現人們經常訪問我的項目,而且這種情況每天都會發生。我對此感到驚訝,更驚訝的是大約一年後創建了一個 ISSUE,其中寫到某個圖形設計師邀請我為我的專案創建一個徽標。他們說他喜歡為開源產品做這件事,並且完全免費。我們開始合作。提出了幾個選項,但最終我們決定這樣做:第一面缺陷
我注意到來自中國的某個開發人員為我創建了一個問題,他在其中描述了他發現該庫工作中的一個缺陷,即如果使用大圖像,則會出現StackOverflowError。男子決定乘虛而入,發現了一個錯誤。我不僅找到了它。還寫了關於她的事。這是圖書館發展的新措施。而且,我確實沒有解決辦法。在某個時刻,一位來自俄羅斯的測試人員提出了一個解決方案。但它是生的,製作不當,我不接受。當需要在 Maven Central 中發布該庫時,有必要解決這個缺陷;我不想將它與它一起發布。另外,還有一個缺陷我一直沒有修復,也帶來了很多不便。命令列使用。2018年秋季
開發的下一階段是與瑞典人 (Renato Athaydes) 進行溝通,他希望透過命令列使用該庫,為此有必要進行一些更改和添加。我再次對此感到驚訝和驚訝。平面設計師寫信給我後,我的驚訝程度有所減輕,但仍然很高。一想到有人真的需要我的程式碼,我就充滿了難以置信的感覺。他進行了必要的更改並準備了程式碼。我進行了程式碼審查,即查看了更改,有更改的註釋以及更改已經在庫中。我將這些變更指定為v2.0 版本。 下一步是將庫新增至 Maven Central - 一個中央儲存庫,您可以從那裡為任何專案下載它並將其用作依賴項。當時,我不知道如何執行此操作,即使是遠端操作,所以我說我很忙,並請他執行設定專案所需的所有步驟。但事實證明這根本不夠,最有趣的是與 Maven Central 建立連接。這是一個巨大的痛苦,我第一次做不到,直到 4 月 15 日我才能夠在 Maven Central 上發布該專案。這並不容易,但正如其他人喜歡說的那樣,“每個想要發布 Java 程式碼的人都會經歷這個。” 在發布該庫之前,我終於找到了長期存在的缺陷是什麼以及如何處理,並發布了新版本v2.0.2,其中我感謝所有幫助我的人,描述了我做了什麼以及如何處理。發佈到 Maven Central。2019年春季
要正確發布庫,您需要充分了解版本控制以及如何正確設定版本。我將堅持這個計劃:- XX.YY.BBBB,其中XX為重大版本更新,其中包含與先前版本不相容的變更(例如更改方法的返回結果);
- YY是一個小更新 - 內部更改或擴展,不會改變BBBB 的內容- 這些是已修復的缺陷。
- 例如,版本2.0.2表示主要版本為2,沒有次要更新,並且有兩個缺陷更新。
GO TO FULL VERSION