Til Home

2020-05-19-TIL

Fact

  • 오늘은 프로그래머스에 있는 네트워크라는 문제를 다른 사람의 풀이 방식을 보고 공부했다. 저번에는 재귀를 써서 풀었는데 이번에는 다른 풀이 방식인 스택으로 푸는 방식을 보고 공부했다.
  • 오늘 성공적으로 CD를 완성했다. 어제는 dockerHub를 pull 하고 pull 한 image으로 만든 container를 만들 시에 자동으로 실행(npm start)를 실행이 안돼서 CD 완성을 못했다. 오늘은 어제 못한 문제에 대하여 팁의 얻었다. dockerFile로 build 하고 나서 실행할 명령어를 CMD로 설정을 했었다. CMD를 ENTRYPOINT로 바꾸니 컨테이너 설치 후 내가 지정한 명령어가 잘 실행이 됐다.
  • CD를 완성 후 까먹고 test를 돌리라는 명령어를 안 넣어서 급하게 test를 수정하고 넣어서 CD를 완성했다.
  • CD를 완성 후에 프로젝트에 자잘한 에러들을 수정을 했다. 예를 들어서 로그아웃이 안되던 문제. 이 문제는 “Can’t perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in a useEffect cleanup function.” 라는 문제가 떠서 생겼던 문제이다. state를 업데이트를 하고 있는데 갑자기 중단을 시켜서 문제였다. 이것 때문에 다른 곳에서 그 state를 수정하려고 했을 때 문제가 생긴 것 같다. 로컬에서 발생하지 않았지만 로컬 아닌 배포한 곳에서 실행했을 때 이 문제가 발생했다. 아무래도 내 프로젝트에서 이 문제가 발생한 이유는 data 불러오는 게 로컬과 달리 시간이 걸리는데, 불러올 때 내가 갑자기 중단을 해서 생긴 에러라고 생각된 나의 뇌피셜이다. 이것을 수정하기 위해서 요청 두 번 하던 것을 dataSchema를 수정함으로써 요청 한번 할 수 있게 만들었다.

Feeling

  • 프로그래머스 풀이법을 보면 이제 나보다 못 푼 친구들이 몇몇 보인다. 성장했다는 느낌이 들어서 기분이 좋다.
  • CD를 완성해서 이제 자동 배포 CI/CD를 완성해서 기분이 너무나도 좋다. 배포 끝!

Findings

  • dfs 문제를 풀 때 재귀를 사용하지 않을 시에는 loop과 queue를 써서 재귀와 비슷한 방식으로 푼다. 재귀는 모든 경우의 수를 다 돌리지만 queue는 모든 경우의 수를 배열에 담아서 하나씩 shift 하면서 돌린다.
  • docker RUN vs CMD vs ENTRYPOINT.
  • RUN 은 한 layer에 새로운 image를 만들 때 쓰는 명령어다.
  • CMD는 run 후 쓰는 default 명령어다. default이므로 run 할 때 다른 명령어를 넣으면 overwrite가 된다.
  • ENTRYPOINT는 명령어들이 CMD처럼 덮이지 않고 거의 무조건 실행이 된다.(ENTRYPOINT를 무시할 수 있게 만드는 명령어도 존재는 한다.)
  • https://goinbigdata.com/docker-run-vs-cmd-vs-entrypoint/

Future action

  • 다른 사람들의 풀이법이 무조건 좋다고는 할 수 없다. 그러나 다른 사람들의 풀이법이 내가 모르는 풀이법이면 그것을 보고 지식을 흡수할 수 있도록 하자.
  • 자동 배포를 성공적으로 작성을 했으니 다음 프로젝트부터는 처음부터 자동 배포를 작성을 해서 나중에 고통받는 수고를 덜하도록 하자.
  • local에서 발생하지 않은 에러가 도메인에 올리고 생길 수 있으니 local에서 개발하는 것도 좋지만 배포를 하고 올린 도메인에서 확인하자.

Feedback