버그를 수정하면서 문제를 해결하는 3가지 방법

오픈 소스 프로젝트에 기여할 때 임의의 문제로 좌절하는 것은 불가피합니다. 나는 issue의 기능 중 하나에 대한 데모 클라우드 기능을 작성하는 것에 대한 Appwrite을 해결하려고 시도하는 동안 같은 상황에 처했습니다. 문제를 해결하는 데 도움이 되는 3가지 리소스가 있습니다.
  • 문서
  • 커뮤니티 채널
  • GitHub 문제

  • 문맥



    전체적인 맥락에서 문제를 살펴보겠습니다.

    Your task is to implement generateOpenStreetMap function. You can look at the existing Appwrite Functions demo in the coding language you prefer to see how it works.

    This function should take latitude and longitude as an input, generate map preview using OpenStreetMap API and save it into Appwrite Storage.



    해결해야 할 3가지 주요 과제가 있었습니다.
  • Appwrite Cloud Function 생성(프로세스를 어느 정도 이해할 수 있음)
  • Ruby로 내 코드 작성(정말 나빠 보이지 않음)
  • OpenStreetMap API 구현(절대 우둔함)

  • 📜 문서



    새로운 기술을 실험하는 동안 먼저 해당 문서를 찾아야 합니다. 대부분의 질문에 대한 답변을 찾을 수 있습니다. 문서를 읽기 전에 도움을 요청하면 다음과 같은 응답을 받을 수 있습니다.



    글쎄, 그다지 무례하지는 않지만 대부분의 경우 먼저 읽으라고 말할 것입니다. 제 경우에는 그들의 문서 덕분에 Appwrite Function for Ruby를 쉽게 만들 수 있었습니다. 프로세스가 매우 간단해서 다른 사람과 논의하는 대신 직접 테스트했습니다.

    반면에 문서가 오래되었거나 필요한 부분으로 이동하기가 너무 어려울 수 있습니다. 사실 OpenStreetMap Wiki는 API에서 지도 이미지를 검색하는 방법을 찾는 데 꽤 많은 시간이 걸렸습니다. 검색창에서도 이러한 기능에 대한 명확한 예를 찾을 수 없기 때문에 다음 지원 소스인 커뮤니티 채널에 연락하기로 결정하기까지 며칠 동안 고군분투했습니다.

    💬 커뮤니티 채널



    기여자를 환영하는 거의 모든 오픈 소스 프로젝트는 커뮤니케이션을 위한 플랫폼(예: Discord, Slack 및 Matrix)을 사용합니다. 이렇게 하면 문서에서 찾을 수 없는 대부분의 문제를 해결하는 데 도움이 됩니다.



    농담이야. 대부분의 경우 더 유용한 조언을 얻을 수 있습니다. 예를 들어 OpenStreetMap API에서 지도 이미지를 가져오는 초기 접근 방식은 Appwrite의 Discord 서버에서 프로젝트 구성원과 논의한 후 막다른 골목이라는 것을 깨달았습니다. 고맙게도 타일 번호에서 정적 지도 이미지를 가져올 수 있는 OpenStreetMap 타일 서버를 소개받았습니다. 또한 위도, 경도 및 확대/축소 수준에서 타일 번호를 계산하기 위한 문서의 정확한 코드 스니펫도 찾았습니다.

    # Source: https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Ruby
    def get_tile_number(lat_deg, lng_deg, zoom)
      lat_rad = lat_deg/180 * Math::PI
      n = 2.0 ** zoom
      x = ((lng_deg + 180.0) / 360.0 * n).to_i
      y = ((1.0 - Math::log(Math::tan(lat_rad) + (1 / Math::cos(lat_rad))) / Math::PI) / 2.0 * n).to_i
    
      {:x => x, :y =>y}
    end
    


    🎫 GitHub 문제



    때로는 무언가가 예상대로 작동하지 않는 경우 귀하의 잘못이 아닙니다. 아직 감지되지 않은 버그일 수 있습니다. 그렇지 않더라도 GitHub에 제출하면 문제에 더 많은 관심을 갖게 됩니다.



    Appwrite Console에서 클라우드 기능을 테스트하는 동안 HTTP 요청에 이상한 오류가 발생했습니다. 온라인에서 많은 조사를 하고 Discord에 도움을 요청한 후에도 여전히 단서가 없었습니다. 포기하려고 할 때 Appwrite의 repo에 내 기능이 예상대로 작동하지 않는다는 내용의 issue을 제출하기로 결정했습니다. 잠시 후 response 을 받았습니다.



    그의 제안을 따른 후 버그를 수정하고 결국 pull request 을(를) 만들었습니다. 클라우드 기능을 구현하고 배포한 방법에 대한 자세한 내용은 내 최근 내용을 확인할 수 있습니다.


    이것은 Hacktoberfest 2021의 마지막 블로그 게시물입니다. 정말 놀랍고 놀라운 여정이었습니다! 내년에도 Hacktoberfest에 다시 참가할 수 있기를 기대하고 있습니다.

    좋은 웹페이지 즐겨찾기