- 재귀
- 재귀 함수는 함수가 자기자신을 호출하는 구조로 만들어졌습니다 그렇다보니 반복문이 많거나 중첩횟수 자체가 예측불가할때와 특정한 해결로직이 반복적으로 발생될때 사용하면 좋습니다
- 추가질문
- 재귀 함수의 단점
- 재귀 함수는 메모리를 많이 차지하고 성능이 반복문에 비해서 느리기때문에 자신을 호출 하면서 스택 메모리가 커지고 호출횟수가 많아지면 스택 오버플로우가 발생 할 수 있기때문에 상황에 따라 적절하게 사용해야한다는 단점이 있습니다
- UI,UX
- 우선 UX에 대해서 먼저 말씀 드리겠습니다 UX는 유저의 경험에서 나오는 종합적인 만족을 이야기 합니다
- 그리고 UI에 대해서 말씀드리면 사용자가 직접적으로 보게되는 서비스의 시각적 디자인을 이야기 합니다 그렇기 때문에 UI는 UX에 만족스러운 경험을 제공하기 위해서 사용자 중심적으로 설계가 되어야 하는 부분이라고 볼 수 있습니다.
- 제가 스타일드 컴포넌트를 사용하면서 느낀 장점은
- 첫번째는 재사용성이 좋다 입니다
- 변수 선언으로 말그대로 컴포넌트화 시켜서 사용할수 있다보니 기존 CSS 모듈처럼 한태그 한태그 Class Name을 주지 않아도 된다는 장점이 있고
- 두번째는 컴포넌트의 props 참조가 가능합니다
- 기본적인 지정해둔값은 동일하지만 원하는 속성만 props로 받아서 스타일링이 가능하다는게 큰 장점인것 같습니다
- 세번째는 첫번째와 연관되는 부분인데 import 할수 있다 입니다 결국 styled Components로 만들어진 변수도 결국 컴포넌트의 일종이기 때문에 앞에 export만 붙혀준다면 다른곳에서 import 해서 사용이 가능하다는 장점이 있습니다
- 추가질문
- CSS vs Styled Component
- 둘중에 뭐가더 좋다라고 말하기는 어렵습니다 전체적인 코드가 랜더링 될때 CSS 모듈은 JS를 처리하는 과정이 없기 때문에 퍼포먼스 적으로 더 빠릅니다
- 하지만 가독성이나 재사용성같은 장점들이 Styled Component가 더 좋기 때문에 상황에 따라 맞춰야 한다고 생각합니다
- 저같은 경우는 재사용성이 필요한 부분은 Styled Component를 사용하고 그게 아니면 CSS속성, 그리고 선적용이 되어야 하는 부분은 인라인 스타일링을 하고있습니다
- 그래서 정리해서 말씀드리면 CSS정말 취향차이이고 어떤 기준점은 회사에서 정해주면 그거에 따라가는게 맞다고 생각합니다
- 상태관리 라이브러리를 쓰는 이유는
- 자식들간의 다이렉트적인 데이터 전달이 불가능하고 무조껀 부모를 통해서만 전달을 받아야 하기 때문에 최상위 부모의 상태가 필요한 자식들은 그위 부모에게 상속 받아야하기 때문에 props 드릴링 이슈가 있을수 있습니다
- 그렇기 때문에 전역 상태 저장소가 제공되는 상태관리 라이브러리를 사용해서 해당 이슈를 해결 할 수 있습니다
- Redux의 주요개념과 연결관계는 Redux를 쓰는 최종목표를 확인하고 가면 좋을것 같습니다
- 결국엔 State를 컴포넌트 내부말고 완전히 다른 공간에 저장해놓고 필요할때 수정하길 원하는게 사용하는 이유이고
- Redux안에 있는 주요개념들도 그걸 실연 할수있게 도와주는 역활을 합니다
- Store에 저장된 state를 reducer로만 유일한 수정이 가능하고 action이라는 객체를 전달해서 구체적으로 어떻게 수정할껀지 정의를 하게 됩니다 하지만 action을 바로 reducer에게 전달이 불가하기 때문에 dispatch라는 함수로 전달을 해줘서 상태값을 최종 변경하게 되고 이런 연결관계가 확립됩니다.
- Semantic하게 작성한다는건 적절한 의미의 태그를 사용해서 정보 구조에맞게 마크업 한단것이기 때문에 시각적으로도 해당 엘리먼트의 의미를 자세하게 알수있다는 장점이 있기때문에 자동으로 웹 접근성도 올라가게 되는데요 누구나 웹사이트에 접근해서 사용이 가능하고
- 웹접근성이 올라가면 검색이 잘되고 매출적인 부분에서도 상승한다는 예시가 있었습니다 그렇기 때문에 의미없는 div나 span을 통한 코딩보다 시멘틱한 코딩을 하게되면 얻는 이점들이 많기때문에 필요하다고 생각합니다
- IP프로토콜의 한계는 여러가지가 있는데 비연결성과 비신뢰성 프로그램 구분 불가능이라는 단점이 있어서 보내는 정보가 잘 도착했는지 확신 할 수가 없습니다
- 그리고 서버 상황을 클라이언트가 알 방법이 없기 때문에 서비스가 불능 상태여도 패킷전송이 되고 내가원하는 순서대로 서버에 도착할꺼란 보장이 없는 한계들이 있습니다
- HTTP 프로토콜의 특징으로는
비연결성과 상태 정보를 유지하지않는 stateless라는 두가지 큰 특징이 있습니다
- 비연결성은 클라이언트가 웹서버에게 서비스 요청을 하게되면 서버는 요청에 결과를 제공하고 클라이언트는 요청한 서비스를 제공받으면 연결을 종료시키는게 비연결성이고
- 스테이트레스는 현재온 요청과 이전요청을 구분하지 못하는걸 연결상태를 유지하지 않는특징입니다.
- MaxAge와 Expires옵션은 쿠키의 유효기간을 설정하는 설정이고 MaxAge는 초단위의 설정 그리고 Expires도 MaxAge와 비슷하지만 언제까지 유효기간을 설정 할 수 있는 설정입니다
- 이때 옵션값은 클라이언트의 시간을 기준으로 하고 지정된 시간,날짜를 초과하면 쿠키는 자동 파괴되는 설정입니다.
- 만약 이 두 설정을 하지않으면 브라우저를 닫을때 쿠키도 함께 삭제가 되는데 이를 세션쿠키라고 합니다
그리고 둘을 함께 적용하면 max-age가 우선적용됩니다