얼마전 테오님의 카톡에서 Type Challenge를 알게됐고
문제를 푸는 과정에서 생각보다 많은 것 들을 얻게 됐다.
(이미지를 클릭하면 해당 레포로 이동합니당!)
i18n이 적용되어 있어서 한글번역본도 있다.
Easy 수준의 문제 부터 차근차근 풀어 나갔다.
문제는 이런식으로 되어있고 도전하기를 누르면 Typescript 공식 홈페이지 내 Playground로 연결된다. Playground에서는
@type-challenge/utils에서 제공되는 테스트 유틸로 TDD가 구성되어있고
MyPick을 적절히 구현하면 에러가 해결되고 빨간줄이 사라진다.
따란!
문제를 풀고 나면 정답공유하기 버튼을 눌러 본인의 정답을 공유 할 수 있다.
하지만 여기서 하나의 별것 아닌 문제가 존재했는데...
영어, 일어, 중국어는 정답 공유하기를 누르게 되면
이런식으로 서식이 존재 했는데... 한글은
이렇게 텅텅 빈 이슈로 작성을 했어야 했다..ㅠㅠ
영어로 된 설명을 읽어보니 영어를 중2에 포기한 나도 대충은 해석이 됐고
'이 기회에 컨트리뷰터가 되어보자!' 해서 이유를 찾아보니
Issue Template에 한글 answer템플릿이 없어서 그렇다는것을 알게됐고
얼른 Fork를 떠와서 템플릿을 만들고 PR을 남겼다!
다음날 바로 merge가 됐고
한글도 이렇게 이쁜 서식이 나오게 됐다 키키키
첫 Open source 기여였다.
소스를 수정한게 아니라 기여라고하기 부끄럽지만
기여를 하면서 내가 불편하고 남들도 불편 할 것이라고 생각 한 것을
고쳐보려고 했던 내 자신은 칭찬한다! 키키
내가 수정한것이 적용되어 더 좋은 방향으로 나아갔다는것이 신기하기도 했다.
별것아닌 PR이었지만 PR규칙이 있는지 열심히 꼼꼼히 뒤져봤고 벗어나지 않으려 매우매우 노력했다.
이번 기회로 자신감을 얻어 내가 기여 할 수 있는 부분이 있는지 좀 더 찾아 볼 것 같고 더 어려운 PR도 날려 볼 수 있을 것 같다. 헿
Issue Template을 해석하다보니.. Issue가 너무 많아지는걸 걱정하시는 것 같았고 나의 풀이와 같은 풀이가 있는지 먼저 확인 하고 새로운 방법이 있으면 올리도록 합시당! (딱히 지키고 있는 사람이 없는거 같긴 합니다만...그래도..좋은 풀이들이 많이 묻히더라구여 ㅠㅠ)
저의 경우는 Fork를 해서 solutions branch를 만들고
solution/4-Pick 요런식으로 해당 문제에 대한 해답을 만들어서
soutions 브랜치에 PR을 날리는 식으로 사용 하고 있답.
참고: https://github.com/soorokim/type-challenges
문제를 풀다가 easy난이도 문제 하나를 8시간동안 부여잡고 있었다.
그 문제는... 898-Includes
문제는 아주 간단하다.
하지만 이 문제는 case를 모두 통과하는게 매우 어렵다.
이 중에서도 맨 마지막 2개의 case를 해결 하는 것에 문제가 있는데
object의 프로퍼티들의 속성은 어떻게 해도 비교되지 않았다...WTF
3시간 째 머리속에서 '알고리즘 문제는 2시간 정도만 투자 해보고 안풀리면 해답을 보고 이해 하고 다시 풀어보는겁니다.'라는 말이 머리속에 맴돌았지만 나는 고집쟁이었다.
'easy를 8시간 붙잡고 있는것도 수치스러운데 답을본다고?! 죽자! 죽어!'
8시간 만에 보게된 해답에는 납득할만한 풀이가 있었고 나는 부끄럽지 않아도 됐었다..헿헿
해당 풀이: https://github.com/type-challenges/type-challenges/issues/1568
하지만... 전혀 이해가 되지 않았고...여러가지 테스트를 진행 해봤다.
그래도 여전히 이해는 되지 않는다. 테스트 과정과 실력이 부족하여 추측 할 수 밖에 없으므로 대충 추론으로 마무리 지었다.
아마 내 추론이 맞다면 정확한 해답은 typescript 컴파일러에서 타입 체크하는 부분을 뒤져 봐야 하지 않나 싶다.
테스트 과정과 추론은 요기 있다.
(혹시 설명 해 주실 수 있는 분은 댓글 좀 남겨주세여 ...하아 저를 구해주세욤 이해가 되기 전 까지는 저 PR을 merge 할 수 없을 것 같네여 ㅠ)
기여를 한다는 것은 참 멋진거 같아요! 그리고 안 easy하네요.. 어려운데요ㅠㅠ 저도 공부를 더 해야 겠네요. ㅎ