Today, I Learned


  • About git : merge Conflict가 발생했을 때, vs code에서 제공하는 선택지 중에 current change는 내가 변경한 것을 선택하는 것이고, incoming change는 상대방의 변경 사항을 선택하는 것이다.
  • git에서 conflict가 너무 많이 발생할 때 혹은 발생이 예상될 때 그리고 conflict를 수정하기보다는 remote repo에 있는 것을 그대로 pull 하는 것이 효율적일 때 쓸 수 있는 방법( 참고 사이트 ):
    git fetch --all
    git reset --hard Origin/master

    이에 더해서, git fetch와 git pull의 차이점 알아보기 : 깃 풀은 merge를 하는 것이기 때문에 충돌이 발생할 여지가 있다. 그러나, 깃 fetch는 다른 두개를 합치는 개념이 아니라 단순히 최신 리모트 레포지토리를 가져올 뿐이다. 달리 말해, 다운만 받을 뿐임. 다운 받은 후에 병합하는 작업은 따로 해줘야함(신중하게 쓸 때). 이와 달리, pull은 한번에 다운로드와 병합을 하는 것. 이 것을 fetch와 반대로 신중하지 못하다고는 할 수 없으나, pull을 하면 merge conflict가 발생하고, 이를 해결해줘야하는 상황으로 이어질 수 있다는 점 생각하기. + ( 깃 명령어 관련 참고 사이트 )
  • reduce 메서드에 대해서 복습 : reduce 메서드를 생각없이(제대로 된 이해 없이) 쓰다보니 결국, 어려운 문제에서 활용을 하려하니까 잘 쓸 수 가 없는 문제가 발생했다.
    먼저, reduce란? : reduce는 Array.prototype의 메서드로 배열의 요소 하나하나를 처음부터 탐색하면서, accumulator에 accumulate,즉, 하나하나 탐색을 하면서, 그와 동시에 뭔가를 쌓아간다. 여기서, 뭔가란 대소 비교를 했을 때, 더 큰 값이 토너먼트 형식으로 그 자리를 차지하고, 빼앗기고 한다던지, 각 값들을 더해간다던지 하는 것들을 말한다. 이러한 reduce메서드에는 매개변수로 첫 번 째, 함수를 받는다. 이 함수는 reduce를 통해 배열의 요소 하나하나에 적용해줄 로직을 넣을 함수이다. 다음으로, initial value를 매개변수로 받는데, 이것은 필수는 아니다. 다음으로, reduce의 첫 번 째 매개변수인 함수에 넣어주는 매개변수로는 accumulator, current value가 있는데(optional 매개변수로 currentIndex를 줘서 reduce 함수 로직 내에서 현재 처리 중인 current value의 인덱스를 참조해서 쓸 수 있다), accumulator는 위에서 말한 뭔가가 쌓여가는 값이 들어가는 부분이다. current value는 배열을 탐색하면서, 현재 reduce가 처리 중인 배열의 요소를 말한다. 이 때, 아까 말한 initial value를 넣어줬다면, 시작하는 current value는 인덱스 0부터 시작하고, initial value를 넣지 않았다면 시작하는 current value는 인덱스 1부터 시작한다. 그러면, initial value를 넣어줬을 때 accumulator의 초기값은? initial value이고, 반대로, 넣어주지 않았을 때는 accumulator의 초기값은 배열의 인덱스 0의 값이 된다. reduce를 쓸 때는, 주로 for문을 써야하는 상황일 때, 즉, 반복하면서 요소를 탐색하는데, 그 탐색 과정에서 어떤 값을 쌓아갈 필요가 있을 때, for문으로 만들 수 있는 로직을 reduce를 통해 좀 더 편하게 할 수 있다고 생각해보자(절차형 vs 선언형 참고 => reduce는 선언형, for문으로 구현하면 절차형)
  • 사소한 부분이지만, String 데이터도 for of를 써서 탐색할 수 있다는 것 기억하자
  • fork 해온 레포지토리에 대해서 commit을 하면 contribution 기록(일명 잔디 심기)이 안 남는다..방법은 pull request를 하거나, 아니면 fork한 것을 떼어내서 독립된 레포지토리에 새로 넣는 방법이 있다.( 참고 사이트 )
  • npm install을 해줄 때, 끝에 --save를 해주면, 자동으로 package.json의 dependencies에 등록이 됨(사실 save는 디폴트와 같아서 그냥 install해도 dependencies에 등록됨). 이 때, --save -dev 해주면, devDependencies에 등록이 된다는 것 알아두기. 이걸 잘 구분해놔야 내 코드를 사람들이 쓸 때, 코드 실행에 필요한 패키지 모듈이 뭔지, 실행과 개발 환경에 필요한 패키지 모듈이 뭔지 구분해서 알 수 있다.
  • ESLINT 사용법 및 에러 처리(에러 발생을 잠시 끄는 방법, 특정 js 파일에서만 끄는 방법 등등)를 배웠다.

Planning to Study


  • test문제 3,4,5,6 좀 더 효율적으로 만들어보기
  • vscode 나만의 formatter 고르고, 설치하기
  • npm install -g 에서 g는 global인데, 언제 이것을 쓰는지 공부해보기
  • ESLINT 공식 홈페이지 공부하기
  • Entries 메서드 공부하기

Comment


페어 프로그래밍에서 얻은 개선점, 어떻게 보면, 내가 그 행동을 했던 당시에 나는 이런게 잘못 됐구나 생각을 했었는데, 그 부분을 딱 짚어주신 것에 오히려 감사했다. 어떻게보면, 나만의 '고집' 혹은 '피해의식' 이라고 생각해볼 수 있는 것 같다. 남이 뭔가가 잘못된 것 같다고 말을 해주면, 이유없는 비난이 아닌 이상 나에게 분명 뭔가 문제가 있을 수 있는 것이고, 조언이 되는 말일텐데, 그리고 사실 머리 속으로는 그것을 아는데, 반자동적으로 피해의식이 발동해 '아냐 내가 맞아' 식으로 흔히 말해, '똥고집'을 부리는 것 같다(유아기적 행동같이 타인의 말을 제대로 듣지 않고, 내가 맞음을 증명해보이려고만 하는 것). 하지만, 너무나 명확한 점은 이것은 고쳐야한다. '내가 틀리다는 것을 인정할 줄 알기 그리고, 그것이 창피하고, 내가 지는 것이 아니라는 것을 명확히 인식하기'

profile
완벽함 보다는 최선의 결과를 위해 끊임없이 노력하는 개발자

0개의 댓글