[일일 독서] 2023-03-18 (토)
p.131~153 변경 가능한 데이터를 읽는 것은 액션, 불변 데이터를 읽는 것은 계산. 불변 데이터를 구현하기 위해 필요한 연산은 그렇게 비용이 크지 않다. 문제가 있다면 추후에 최적화. 객체의 카피-온-라이트, Object.assign(). shallow copy, deep copy. 방어적 복사(defensive copy). 처음부터 복사된 데이터를 전달한다.
p.131~153 변경 가능한 데이터를 읽는 것은 액션, 불변 데이터를 읽는 것은 계산. 불변 데이터를 구현하기 위해 필요한 연산은 그렇게 비용이 크지 않다. 문제가 있다면 추후에 최적화. 객체의 카피-온-라이트, Object.assign(). shallow copy, deep copy. 방어적 복사(defensive copy). 처음부터 복사된 데이터를 전달한다.
제목: 모던 자바스크립트로 배우는 리액트 입문 한줄평: 책의 제목을 정확하게 목차에 담은 리액트 입문자에게 추천하고 싶은 서적. 우선, 현업에서 리액트를 사용하고 있기 때문에 친숙한 내용이라 재밌게 읽을 수 있었습니다. 특히 입문자도 처음 배우는 기술이라는 것에 대한 부담없이 편하게 접할 수 있는 서적이라고 생각합니다. 책의 저자는 리액트를 학습하는 데 있어서 두 개의 큰 장벽이 있다고 얘기합니다. 1. 리액트 고유의 독특한 표기법이나 세계꽌으로 인한 장벽 2. 중급자에서 상급자가 될 때 만나는 장벽 이 책에서는 첫 번째 장벽을 해결할 수 있는 방법에 대해 제시하고 있습니다. 조금 디테일하게 들어가면 자바스크립트 자체에 대한 이해 부족과 잘못된 학습 순서를 이야기합니다. 1장 ~ 3장에서는 모던 자바스크..
사실 (Fact) 7주 차 강의는 React에서의 라우팅 처리에 대해 학습했다. window.location.pathname을 이용하여 직접 URL에 따라 다른 컴포넌트를 보여줄 수 있지만, 추상화가 이미 되어있는 react-router-dom을 사용했다. react-router-dom 버전 6.4부터는 라우터 객체를 지원하여 라우팅 정보만 별도의 파일로 관리할 수 있다. 테스트 코드에서는 memoryRouter, createMemoryRouter를 이용한다. 바닐라 자바스크립트로 SPA를 구현할 때는 URL만 변경시키기 위해 history.pushState를 활용하는데 이 동작은 Link 컴포넌트로 추상화가 되어있다. NavLink, useNavigate, Navigate 등을 추가로 학습했다. 느낌 ..
p.87~130 중복은 항상 나쁜 것은 아니지만, 코드에서 나는 냄새다. (DRY) 암묵적 입력과 출력은 줄일수록 좋다. 재사용하기 쉽고 테스트하기 쉽고 유지보수하기 좋다. 계산도 관심사(?)에 따라서 분리할 수 있다. cart와 item의 구조를 모두 알고 있는 함수라면, 별도의 함수로 분리한다. 계산도 유틸리티, 장바구니, 비즈니스 규칙으로 나누는데 나중에 분리된 계층으로 구성한다. (재밌을 것 같다) 카피-온-라이트. 쓰기를 읽기로 바꾼다. 불변성을 유지한다. 1. 데이터 복사본 생성 2. 복사본 수정 3. 복사본 리턴
체력의 중요성을 새삼스럽지만 다시 느낀다. 공부는 엉덩이 힘이라는 얘기를 어렸을 때부터 많이 들어왔지만 정말 요즘따라 공감되는 것 같다. 어찌 됐든 공부를 하려면 절대적인 시간이 필요하고 그 시간을 잘 쓸수록 좋은데 시간이 부족하면 애초에 준비물을 챙겨 오지 못한 것이기 때문이다. 체력이 좋지 않으면, 몸이 피곤하면 자연스레 공부에 마이너스가 되는 것 같다. 어차피 똑같은 수면 시간을 취할 것이라면 피곤함을 이끌고 공부를 하는 것보다는 피곤하면 바로 수면을 하고 일어나서 공부를 하는 게 더 좋은 것 같다.
새로운 것을 배울 때 스스로가 바보처럼 느껴지는 것은 당연한 것이다. 감정에 동요되면 안되고 이 과정 속에서도 기분이 좋아질 것을 찾자. 그러나 지속적으로 연습하자. 누구나 배움에 정체가 느껴지는 지점이 온다. 이것은 슬럼프라고 할 수 있다. 크게 동요할 필요 없다. 당연한 현상이니까. 우리는 당연한 것에는 별 감흥이 없지만, 학습에서는 감정에 많이 휩쓸리는 것 같다. 당연한 감정에 속지 말자. 전제는 지속적인 학습이다.
p.60~86 액션보단 계산, 계산보단 데이터. 액션에서 계산을 추출한다. 코드를 함수로 분리하고, 분리한 부분에서 함수를 호출한다. 암묵적 입력은 함수의 인자로, 암묵적 출력은 함수의 리턴값으로.
실패-피드백-실행의 사이클을 의식적으로 수행하기. 일반적으로 학습을 하다가 모르는 부분이 생기거나 개발을 하다가 에러가 발생하면 우리는 문제를 해결하기 위해 에러 메시지를 읽거나 구글링을 해보거나 케이스를 바꿔보는 등 여러 가지 시도를 하게 된다. 어쩌면 당연하다는 듯이 실패-피드백-실행을 수행하고 있다는 생각이 들 수도 있지만, 이 과정을 조금 더 의식적으로 행하는 것이 중요하다고 생각한다. #실패 사람은 일반적으로 실패를 싫어하는 것 같다. 어쩌면 쪽팔리기도 하고 스스로 실패했다는 것에 기분이 좋지 않아서 그렇지 않을까. 그래서 당장의 실패를 빠르게 무마하기 위해 그 상황을 피해버리거나 혹은 근본적인 문제를 해결하는 것이 아닌 당장 눈앞의 문제만 해결하고 덮어버리려고 한다. 나는 실패라는 상황..