안녕하세요, JavaRush 커뮤니티 여러분! 제 소개: 저는 2016년 봄부터 Java 소프트웨어 엔지니어로 일하고 있습니다. 저는 여기에 와서 공부하는 동안 해결하지 못한 문제를 해결하는 것을 좋아합니다. 오늘은 라이브러리에 대해 말씀 드리겠습니다 - 이미지 비교 . 이는 GitHub 에서 공개적으로 사용할 수 있는 오픈 소스 라이브러리입니다 . 이 글의 목적은 오픈 소스 제품을 만드는 것이 단지 시간 낭비가 아니라는 점을 전달하는 것입니다. 이는 전체 개발 프로세스를 제어할 수 있고 모든 세부 사항을 조사해야 할 때 다양한 측면에서 끌어온 풍부한 경험입니다. 오픈 소스는 당신 주변의 세계입니다. 농담이 아닙니다. 이 도서관이 존재하는 동안 저는 미국, 인도, 중국, 이집트, 러시아, 독일, 우크라이나, 스웨덴, 뉴질랜드, 노르웨이 등 다양한 국가의 사람들과 소통했습니다. 즉, 공동 개발, 타협점 찾기, 코드 확인 등의 실제 경험입니다. 이상으로 소개였습니다. 이제 순서대로 시작하겠습니다.
두 번째 사진이 있습니다.
차이점을 찾아 아래와 같이 동그라미를 치는 것이 필요했습니다.
보시다시피 빨간색 삼각형으로 둘러싸인 사용자 이름 필드에 차이가 있습니다. 작업에 대한 자세한 설명 . 기능적으로도 올바르게 할 뿐만 아니라, 부끄럽지 않도록 아름답게 하고 싶다고 결심했습니다. 이를 위해 나는 이것을 GitHub 에 프로젝트로 게시하기로 결정했습니다 . 나는 오랫동안 GitHub를 연구하고 작업 경험을 쌓고 싶었습니다. 잠깐 살펴본 후, 코드 품질 분석, 테스트를 통한 코드 커버리지 생성 등을 위해 타사 서비스를 추가하는 것이 좋겠다는 것을 알았습니다. 다음 도구가 추가되었습니다.
그 당시 저는 아직 어렸고, 오픈소스 커뮤니티도 낯설었는데, 그런 제안을 했다는 사실 자체가 너무 황당해서, 저 사람이 왜 이러는 걸까요? 이에 그는 "ㅋㅋㅋ 아, 오픈 소스 프로젝트에 기여하는 것을 좋아하기 때문입니다. 일종의 인생 목표 같은 것..."( 문제 자체는 여기에 있습니다 ). 그때 저는 오픈소스 프로젝트를 통해 다양한 사람들이 당신을 찾아 이렇게 흥미로운 것들을 제공한다는 것이 얼마나 멋진 일인지 처음으로 느꼈습니다!
시험. 2017년 8월 초
모든 것은 제가 회사 중 한 곳과 인터뷰를 했다는 사실에서 시작되었습니다. 첫 번째 단계는 테스트 작업을 작성하는 것이었습니다. 임무는 같은 크기의 두 사진을 비교하고 차이점을 찾아 그룹화하고 주위에 직사각형을 그리는 코드를 작성하는 것이었습니다. 첫 번째 사진이 있습니다.-
Codacy - 코드 품질. 정말 주목할 가치가 있습니다.
-
Travis CI는 프로젝트를 빌드하고 테스트를 실행하며 프로젝트가 성공적으로 빌드되었는지 여부를 알려주는 CI(지속적 통합) 도구입니다. 예를 들어, 새로운 변경으로 인해 테스트 중 하나가 통과하지 못한 경우 프로젝트 빌드가 실패했다는 메시지가 표시되고 빨간색으로 표시됩니다.
-
작업복은 코드의 몇 퍼센트가 테스트에 포함되는지 보여주는 도구입니다.
-
BetterCode Hub는 코드 품질을 분석하기 위한 또 다른 도구입니다. 무엇이 나쁜지 알려줄 뿐만 아니라 그 이유를 설명하고 이에 대한 지식을 얻을 수 있는 책에 대한 링크를 제공하는 매우 유용한 것입니다.
도서관 경로. 2018년 7월
심벌 마크
어느 순간 사람들이 내 프로젝트를 자주 방문하고 이런 일이 매일 일어난다는 것을 알게 되었습니다. 나는 이것에 놀랐고, 약 1년 후에 특정 그래픽 디자이너가 나에게 내 프로젝트를 위한 로고를 만들 것을 제안했다는 내용의 ISSUE가 만들어졌다는 사실에 더욱 놀랐습니다. 그들은 오픈소스 제품에 대해 이 작업을 수행하는 것을 좋아하며 완전히 무료로 수행할 것이라고 말했습니다. 우리는 협력을 시작했습니다. 몇 가지 옵션이 제안되었지만 최종적으로는 다음과 같이 결정했습니다.첫 번째 측면 결함
저는 중국의 특정 개발자가 저를 위해 문제를 생성했다는 것을 알았습니다 . 그는 라이브러리 작업에서 결함을 발견했으며 큰 이미지를 사용하면 StackOverflowError가 발생한다고 설명했습니다 . 그 남자는 이점을 이용하기로 결정했고 실수를 발견했습니다. 그리고 나는 단지 그것을 찾은 것이 아닙니다. 그리고 그녀에 대해서도 썼습니다. 이는 도서관 발전의 새로운 단계입니다. 게다가 딱히 해결책도 없었어요. 어느 시점에서 러시아의 테스터 중 한 명이 해결책을 제안했습니다. 하지만 그것은 날것이었고 제대로 만들어지지 않았으며 나는 그것을 받아들이지 않았습니다. 그리고 Maven Central에 라이브러리를 게시할 때가 되었을 때, 이 결함을 뭔가 해결해야 했는데, 나는 그것을 함께 게시하고 싶지 않았습니다. 게다가 한번도 고치지 못한 결함이 또 있어서 많은 불편함을 안겨주었습니다.명령줄 사용법. 2018년 가을
개발의 다음 단계는 명령줄을 통해 라이브러리를 사용하기를 원하는 스웨덴인(Renato Athaydes)과의 통신이었으며 이를 위해 몇 가지 변경과 추가가 필요했습니다. 저는 이 사실에 또 놀랐습니다. 그래픽 디자이너가 나에게 편지를 보낸 후, 나의 놀라움은 다소 줄어들었지만 여전히 매우 높았습니다. 누군가 내 코드가 정말로 필요하다는 생각은 나를 믿을 수 없는 감정으로 가득 채웠습니다. 그는 필요한 변경을 하고 코드를 준비했습니다. 코드 검토를 수행했습니다. 즉, 변경 사항을 살펴보았는데 변경된 주석이 있었고 변경 사항이 이미 라이브러리에 있었습니다. 이러한 변경 사항을 버전 v2.0 으로 지정했습니다 . 다음 단계는 중앙 저장소인 Maven Central에 라이브러리를 추가하는 것이었습니다. 여기에서 모든 프로젝트에 대해 다운로드하여 종속성으로 사용할 수 있습니다. 당시에는 원격으로도 어떻게 해야 할지 몰랐기 때문에 바쁘다며 프로젝트 설정에 필요한 모든 단계를 그에게 해달라고 부탁했습니다. 그러나 이것만으로는 전혀 충분하지 않은 것으로 밝혀졌고 가장 흥미로운 점은 Maven Central과의 연결을 설정하는 것이었습니다. 이것은 처음에는 할 수 없는 엄청난 고통이었고, 4월 15일에야 Maven Central에 프로젝트를 게시할 수 있었습니다. 쉽지는 않았지만 다른 사람들이 말했듯이 "Java 코드를 게시하려는 모든 사람은 이 과정을 거친다." 라이브러리를 출판하기 전에, 오랫동안 계속되어 왔던 결함에 대해 마침내 무엇을 어떻게 해야 하는지 발견하고 새로운 버전 v2.0.2 를 출시했습니다 . v2.0.2에서는 저를 도와주신 모든 분들께 감사를 표하고 제가 무엇을 어떻게 했는지 설명했습니다. .Maven Central에 게시. 2019년 봄
라이브러리를 올바르게 게시하려면 버전 관리와 버전을 올바르게 설정하는 방법을 잘 이해해야 합니다. 나는 이 계획을 고수할 것이다:- XX.YY.BBBB , 여기서 XX는 이전 버전과 호환되지 않는 변경 사항(예: 메서드에서 반환 결과 변경)을 수반하는 주요 버전 업데이트입니다.
- YY 는 사소한 업데이트입니다. 즉, BBBB를 변경하지 않는 내부 변경 또는 확장입니다 . 이는 수정된 결함입니다.
- 예를 들어 버전 2.0.2 는 메이저 버전이 2이고, 마이너 업데이트가 없었고, 결함에 대한 업데이트가 2개 있다는 뜻이다.
GO TO FULL VERSION