오늘은 프로그래머스에 있는 네트워크라는 문제를 다른 사람의 풀이 방식을 보고 공부했다. 저번에는 재귀를 써서 풀었는데 이번에는 다른 풀이 방식인 스택으로 푸는 방식을 보고 공부했다.
오늘 성공적으로 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를 무시할 수 있게 만드는 명령어도 존재는 한다.)