프리코스가 끝이 났다.
혹시 가게될 코테까지 시간이 남아있기 때문에 공부를 해야지 싶었다.
그리고 싸피를 준비하는데에 너무 시간을 쓴 나머지 공부는 못했다...
(속상).
그래도 하나도 안한 것은 아니었는데, 코테까지의 목표는 세 개였다.
1. 새로운 파일 구성법 익숙해지기
1.은 내가 프리코스가 끝나고 처음으로 피어리뷰를 요청했는데, 2분께서 리뷰를 해주셨다.
그 중 한 분의 코드를 보면서
' 와,,, 이렇게 짤 수 있구나,,' 싶은 생각이 들었다.
소소하게 객체를 require할 때 { 객체, 객체 } 이런식으로 받아오는 거나,
boolean을 return값으로 내보내서 그걸 다음 함수에 바로 이용하는거,
constant의 존재.. 같은거..를 처음 알았다.
그래서 더 아쉬웠는데, 이런걸 처음부터 찾아보고 내 코드에 대입했다면 좋았을 것 같았다.
아예 며칠은 그분의 파일과 코드를 요모조모 뜯어보며 그림으로 정리했고,
이를 바탕으로 흐름이나 사용법 등을 익혔다.
그리고 이를 2주차 미션부터 도입해봤다.
baseballGame부터 bridgeGame까지 제한시간은 3시간으로 해보았다.
3시간..은 터무니 없었고 그래도 나중에는 어느정도 안정적으로 시간을 줄일 수 있었다.
알고있는 미션으로 연습을 끝내고는 코테 전 규칙을 몰랐던 레이스게임으로 5시간 내 구현을 시도했는데,
5시간 아슬아슬하게 세이프했다. 뭐.. 정확한 테스트 코드가 없어서 잘 모르겠지만.
뭐 html을 안쓰고 그냥 리눅스로 돌리는거라서 더 쉬웠을 수 있겠다 싶었다.
2. 테스트 코드 익숙하게 짜기
나는 기능구현보다 테스트 코드를 짜는게 더 어려웠다.
특히 모킹하는게 어려웠는데,
기본적인 테스트 짜는 법도 익숙하지 않은 상황에서
모킹까지 하는 것은 불가능이었다.
그래서 이전 게시물처럼 expect를 다양하게 테스트해보면서 익숙해지고자 했다.
이게 효과가 있던 것일까 그래도 어어어엄청 기본적인 것은 할 수 있게 되었다.
다만 시간에 쫒기는 코테에서 테스트코드를 짤 수 있을까는 걱정이 되었는데 그냥 내가 할 수 있는데까지만 하자고 마음 먹었다.
3. 짜는대로 add, commit 하기
나는 프리코스를 하면서 모든 기능구현을 끝내고 테스트코드까지 통과했을 때
그때 하나하나 다시 써가면서 add와 commit를 했다.
내 생각으로는 add, commit을 너무 난잡하게 하면 읽기도 힘들뿐더러 지저분하지만 할 것이었다.
한편으론 내 코드에 자신이 없어서도 그랬다.
짜고 엎고, 짜고 엎고를 여러번 하기도 했고,
그렇게 커밋을 다 해놓고 전부다 꼬여버리면 그걸 수정하기 너무 커밋이 난잡해질 것 같았다.
어찌되었든 우테코에서 원하는 건 이게 아닌것 같았다.
다른 사람들에게 이 이야기를 했을 때 다들 '오...에반데..'하는 표정이었다ㅋㅋㅋㅋㅋ
그리고 코테를 보는 동안 다 짜고 이걸 다시 처음부터 복붙해가며 커밋을 하기란 더 어려울 것 같았다.
그래서 결국 add, commit을 하는 연습을 했는데, 이건 1을 하면서 같이 진행을 했다.
이 과정에서 새 레파지토리를 만드는 법이나 새 프랜치를 만드는 법을 알 수 있었다.
그리고 대망의 발표날
정말 감사하게도 1차에 합격했다.
마지막 미션을 제출한 460명 중 재직자 등 지원불가자를 제외하면 적어도 400명이지 않을까 싶은데,
코테를 2배수정도 뽑는다고 알고 있으니
1차가 경쟁률 4 : 1 정도 였다고 생각이 든다.
뭐.. 아예 자기소개서 지원자만으로 하면 더 높고 말이다.
되어도 무섭고, 안되어도 불안한 상태였는데
이러나 저러나 되니 기분은 좋았다.
코테에 대한 내용은 다음 글에서 계속된다.
연습하며 참고한 사이트:
- 하드코딩: https://tecoble.techcourse.co.kr/post/2020-05-07-avoid-hard-coding/
- 스켈레톤 코드: 뼈대가 되는 코드
- bind : https://ko.javascript.info/bind
let test = { a: 3, b: 2, sum(){ return this.a + this.b ; }, } console.log(test.sum()) ; // 5 let test1 = test.sum ; console.log(test1) ; // [Function: sum] console.log(test1()) // NaN console.log(test1.bind(test)) ; // [Function: bound sum] console.log(test1.bind(test)()) ; // 5 let test2 = test1.bind(test) ; console.log(test2) ; // [Function: bound sum] console.log(test2()) ; // 5 ///////////////////////////////////////////////////////////////////////////// let ****test**** = { name: "sh", age: 26, speak(){ console.log(`${this.name}은 ${this.age}살입니다.`) return 4 ; }, } console.log(test.name) ; // sh console.log(test.age) ; // 26 console.log(test.speak()) // sh은 26살입니다. // 4 let print = test.speak ; console.log(print()) ; // undefined은 undefined살입니다. //4 let change = print.bind( ****test**** ) ; console.log(change()) ; // sh은 26살입니다. // 4
- 바인딩: https://hoony-gunputer.tistory.com/entry/jest-mock-함수
- test 관련:
- expect: https://www.js2uix.com/frontend/jest-study-step3/
- 모킹: https://inpa.tistory.com/entry/JEST-📚-모킹-mocking-jestfn-jestspyOn
- toBeCallWith: https://velog.io/@sinf/toBeCalledWith
- toBeCallWith_2: https://hoony-gunputer.tistory.com/entry/jest-mock-함수
- spyon: https://minoo.medium.com/번역-jest-mocks에-대한-이해-34f75b0f7dbe
- test.each: https://www.daleseo.com/jest-each/
- Matcher: toBe, toEqual…
- describe/test : https://www.js2uix.com/frontend/jest-study-step2/
- 정규표현식: https://poiemaweb.com/js-regexp
- freeze:https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze
- commit message: https://junhyunny.github.io/information/github/git-commit-message-rule/
- 레파지토리 만드는 법: https://velog.io/@kho5420/Git-GitHub-레파지토리Repository-생성하고-소스-올리기
'2022우아한형제들_우테코' 카테고리의 다른 글
[우테코] 최종 지원 결과, 합격 (0) | 2022.12.29 |
---|---|
[우테코] 코딩테스트 (1) | 2022.12.21 |
[우테코] 프리코스 4주차 (0) | 2022.12.21 |
[우테코] 프리코스 3주차 (0) | 2022.12.19 |
[우테코] 프리코스 2주차 (0) | 2022.12.19 |