React는 push가 아닌 concat을 쓰는 이유
React 책이랑 강의를 보면 push, pop을 쓰기보다는 concat, slice, map, filter을 쓰는데 코테를 풀때 concat보다는 push나 pop을 쓰는 나는 그 이유가 궁금해졌다
이유는 리액트에서 상태(state)를 업데이트할 때 기존 상태를 두면서 새로운 값을 설정해주어야 한다
이를 불변성 유지라고 하는데, 불변성을 유지해 주어야 나중에 컴포넌트 성능을 최적화할 수 있기 때문이다
만약 상태를 계속 바꿔버리고 유지시키지 못하면 VirtualDom을 사용하는 이유도 없고 리액트의 큰 장점 중 하나인 원본과 비교해 변화된 부분만 계산해서 빠르게 렌더링 해주는 이점을 취하지 못하게 된다
push, splice, pop은 원본 배열을 변경하는 함수이고 concat, slice, map, filter는 원본 배열을 복사해서 새로운 배열을 만드는 함수이기 때문에 리액트의 불변성을 유지를 위하여 push 말고 concat을 쓰는 것이었다
프로그래머스 코테를 풀다 나타난 고난
행렬의 덧셈
오늘 프로그래머스를 풀면서 2차원 리스트 문제를 풀었다
2차원 리스트를 이용하는 문제를 푸는것이 처음이라 당황했지만 천천히 풀어보기로 했다
2차원 리스트도 잘 선언했고 배열접근도 잘한 것을 콘솔로 확인했기 때문에 문제 정답이 맡을 거야!! 하고 답안 제출을 했는데 정답이 틀리게 나오는 것이다
어디서 틀린것일까 여러 군데 콘솔로 찍어 확인해 보았더니 올바른 값이 잘 들어갔지만 나중에 값이 덮어 씌워지는 것이 확인 되었다. 예를 들어 정답은 [[4, 6], [7, 9]]인데 나의 코드는 [[7, 9], [7, 9]]로 나오는 것이다
이유에 대해 너무 알고 싶어서 구글링과 프로그래머스 질문을 뒤져 나와 같은 케이스가 있나 찾아보았다
이유는 2차원 리스트가 초기화할때 잘못된 형식으로 해서 묶음 처리가 된 2차원 리스트가 나와 같이 움직이는 거였다
이유를 알게되니 내가 잘못된 리스트를 구현하고 있다는 것을 깨닫게 되었고 for문을 이용해 제대로 된 2차원 리스트를 만들어 정답을 풀었다
달력 알고리즘
1월 1일이 금요일인것을 알려주고 월, 일을 주면 어떤 요일을 맞추는지에 대한 문제였는데 월마다 며칠 있는지 착각해서 정답이 안 나왔다. 잉? 내가 일수를 잘 모르나 했는데 아니나 다를까 하루가 빠진 거였다 그래서 이번에는 정답이 나오겠군 하고 돌려봤는데 이번에도 정답이 아니었다. 아무리 생각해도 틀린 걸 모르겠어서 내가 짠 로직을 천천히 살펴보았다
알고 보니 1일부터 시작인데 인덱스 0번부터 시작하기 때문이었다 +1을 해주는 것으로 잘해 결하였다
다음부터는 인덱스 확인을 잘해야겠다
티스토리 400 에러
나는 공부한 내용을 티스토리에 기재하기 때문에 편하게 오고 가기 위해 즐겨찾기를 해놓았다
오늘 티스토리를 들어가는데 400 에러가 뜨는 것이다
이게 무슨 일이지 오늘 아침에만 해도 잘 들어갔는데 하고 400 에러에 대해 찾아보았다
400 에러는 Bad Request로 서버가 클라이언트 오류를 감지해 요청을 처리할 수 없거나 하지 않는다는 것을 의미한다
구글링 해보니 400 에러에 대부분은 잘못입력학 url인 경우가 대부분이라는데 나는 아침까지도 잘 이용했고 인터넷에 검색하여 들어간 링크로도 똑같이 400 에러가 떴다
그래서 이번에 다른 원인을 찾아보아야 했다. 찾아보니 웹사이트 측의 오류가 아닌 경우 사용자가 400 Bad Request 오류를 해결하는 방법은 쿠키와 임시 파일을 삭제하는 것이었다
열림을 원하는 특정 사이트의 누적된 cookie와의 문제로 인하여 발생한 것이기 때문에 해당 cookie를 삭제하면 해결되는 것이다. 웨일, 엣지, 크롬등 다 같은 방법으로 해결할 수 있다
후기
티스토리의 에러를 처음 경험해 봐서 시간이 지나면 해결되겠지란 마음으로 낮에 티스토리 에러 탓을 하며 쉬는 시간을 가졌다 지금 보니 매우 양심의 가책이 느껴진다 시간이 흐르고도 400 에러가 떠서 시간이 해결해 줄 문제가 아니구나 생각은 했는데 진작 찾아보고 고쳤으면 좋았을 텐데... 다음에는 바로바로 에러를 찾아봐야지
'TIL & 일지' 카테고리의 다른 글
TIL, 06.18 (0) | 2023.06.19 |
---|---|
TIL, 06.17 (0) | 2023.06.17 |
TIL, 06.15 (0) | 2023.06.16 |
TIL, 06.14 (0) | 2023.06.15 |
TIL, 06.13 (0) | 2023.06.13 |
댓글