재귀
재귀를 활용하기 좋은 상황은 언제인지 예시를 들어 설명해주세요.
- 재귀는 반복적인 작업을 해야하는 문제를 좀 더 간결하게 풀 수 있다. 예를 들면, 반복문으로 작성된 코드를 더욱 간결하고 이해하기 쉽게 작성하고 싶다던가, 중첩된 반복문이 많아 반복문의 중첩 횟수를 예측하기 어려운 상황일 때 사용하면 좋다.
UI/UX
UI, UX의 개념과 두 개념의 관계에 대해서 설명해주세요.
- UI란 사용자 인터페이스를, UX란 사용자 경험을 뜻합니다. UX는 UI를 포함하고 있지만 좋은 UX라고 좋은 UI를 보장하진 않습니다. 하지만 나쁜 UI는 보통 나쁜 UX를 유발합니다. UI와 UX는 뗄 수 없는 관계이며, 서로를 보완하는 관계라고 할 수 있습니다.
Custom Component
Styled Components를 사용해보면서 느낀 장점을 이야기해주세요.
- HTML, JS, CSS를 묶어서 하나의 JS 파일 안에서 컴포넌트 단위로 개발할 수 있게 되어 편리하였고, 이미 만들어진 컴포넌트를 재활용해 새로운 컴포넌트를 만드는 과정에서 styled에 변수로 재활용할 컴포넌트를 전달해준다는 점이 코딩을 할 때 코드를 좀 더 간략하게 짤 수 있을 것 같다고 생각이 들었습니다.
useRef가 필요한 상황을 예시를 들어 설명해주세요.
- 리액트를 사용할 때 DOM을 직접 조작하는 것을 지양해야 하지만 예를 들어, 리랜더링을 하지 않으면서 컴포넌트의 속성 정보를 조회하거나 수정이 필요한 상황이 찾아오면 DOM을 직접 조작해야합니다. 이때 useRef를 사용하면 문제를 해결할 수 있습니다. 하지만 useRef를 남용하는 것은 리액트의 기본문법에서 벗어나기 때문에 부적절하고, 리액트의 특징이자 장점인 선언형 프로그래밍 원칙에 반하기 때문에 조심해서 사용해야 합니다.
-선언형 프로그래밍 ?
선언적 프로그래밍이란 선언적 문장, 선언문들을 사용해 프로그래밍을 하는 것으로, 선언형 프로그래밍이란 당신이 무엇을 할 것인가에 관한 것이다.
예를 들면, 가게에 들어가 테이블에 앉기까지의 과정이 있을 때 명령형 접근은 저기 ㅇㅇㅇ가게에 카운트 앞에 테이블이 비어있다. 저기로 걸어가서 저 테이블에 앉도록 하겠습니다. 라고 생각할 것이다. 즉, 어떻게 자리에 앉을지에 관심을 가진다면, 선언형 접근은 2명 자리 주세요. 즉, 오로지 무엇을 원하는지에만 관심이 있다.
선언형 방식의 접근을 위해 명령형 방식으로 어떻게 접근하는 가에 대한 내용이 먼저 추상화 되어 있어야 한다는 것이다. 선언적으로 작성된 코드들은 최종적인 목표가 무엇인지에 대해서만 관심이 있지, 해당 목표를 이루기 위한 세부적인 단계들에는 관심이 없기 때문에 동일한 코드를 다른 프로그램에 쓰더라도 정상적으로 작동할 수 있을 것이다.
Redux
상태관리 라이브러리의 필요성에 대해서 설명해주세요.
- 하위 컴포넌트에서 props를 사용하려면 상위 컴포넌트부터 props를 내려줘야 하는데 이 과정에서 props가 필요없는 컴포넌트들한테까지 props를 내려줘야 합니다. 이러한 상황을 props 드릴링 발생했다고 하며, props 드릴링이 발생하면 후에 props에 문제가 생겼을 때 어떤 컴포넌트에서 문제가 생겼는지 확인하기 힘들기 때문에 state만 따로 보관하여 props없니 컴포넌트가 state를 가져와 쓸 수 있게 만들어주는 상태관리 라이브러리가 필요합니다.
Redux의 주요 개념들과 연결 관계를 설명해주세요.
- 리듀서에서는 데이터가 단방향으로 흐르게 됩니다.
우선 상태가 변경되어야 하는 이벤트가 발생하면, 변경될 상태에 대한 정보가 담긴 액션 객체가 생성되고
액션 객체는 디스패치 함수의 인자로 전달되며,
디스패치 함수는 액션 객체를 리듀서 함수로 전달합니다.
리듀서 함수는 액션 객체의 값을 확인하고, 그 값에 따라 스토어의 상태를 변경합니다.
상태가 변경되면 리액트는 화면을 다시 렌더링합니다.
웹 표준 & 웹 접근성
Semantic HTML의 필요성을 예시를 들어 설명해주세요.
- div 태그와 span 태그를 사용하여 화면을 구성한다면 해당 태그들이 어떤 역할을 하고 있는지 한눈에 알아보기 힘들지만 시맨틱 요소를 사용하여 똑같이 화면을 구성한다면 각 시맨틱 태그들이 가지고 있는 의미를 통해 해당 태그가 어떤 역할을 하는 지 한 눈에 알아볼 수 있습니다. 이는 개발자간의 소통을 원할하게 하고, 검색 엔진이 HTML 코드를 보고 문서의 중요도를 파악하게 쉬워지며, 웹 접근성을 향상시켜줄 수 있습니다.
네트워크 심화
IP 프로토콜의 한계에 대해서 설명해주세요.
- IP 프로토콜의 한계에는 비연결성과 비신뢰성이 있습니다.
비연결성은 패킷을 받을 대상이 없거나, 서비스 불능 상태여도 클라이언트가 서버의 상태를 파악할 수 없기 때문에 패킷이 전송되는 것이고, 비신뢰성은 중간에 패킷이 사라지거나 패킷의 순서가 뒤죽박죽으로 섞여도 이를 파악할 수 없다는 문제점이 있습니다.
HTTP 프로토콜의 특징에 대해 설명해주세요.
- HTTP 프로토콜의 특징은 클라이언트가 요청을 보내면 서버가 응답을 보내는 구조로 이루어져있다는 점입니다.
또한 무상태 프로토콜과 비연결성을 가지고 있는데,
무상태 프로토콜은 예를 들어, 카페에서 손님이 주문을 할 때 아메리카노 얼마예요? 라고 물어보고, 직원이 5000원 입니다. 라고 대답했을 때, 이어서 손님이 아메리카노 2잔 주세요. 라고 요청한다면 중간에 주문을 받는 직원이 바뀌더라도 주문을 이어 할 수 있습니다. 요청에 필요한 데이터를 모두 담아 보냈기 때문에 아무 서버나 호출해도 되며, 도중에 문제가 생기더라도 서버만 바꾸어 다시 호출하면 됩니다. 때문에 무상태는 무한한 서버 증설이 가능합니다.
비연결성은 실제로 요청을 주고 받을 때만 연결을 유지하고, 응답을 주고 나면 TCP/IP 연결을 끊는 것을 뜻합니다. 이는 최소한의 자원으로 서버 유지를 가능하게 되며, 트래픽이 많지 않고 빠른 응답을 제공할 수 있는 경우 유용합니다.
인증 / 보안
Cookie의 MaxAge, Expires 옵션이 무엇인지, 설정하지 않으면 어떻게 되는지 설명해주세요.
- 맥스에이지와 익스파이얼스는 쿠키의 유효기간을 정하는 옵션입니다.
맥스 에이지는 쿠키 유효시간을 초 단위로 설정 가능하며, 익스파이얼스는 맥스에이지와 비슷하지만 언제까지 쿠키가 유효할 수 있는지 날짜 지정이 가능합니다.
맥스에이지와 익스파이얼스의 옵션 여부에 따라 세션 쿠키와 영속성 쿠키로 나누어질 수 있고, 만약 맥스에이지와 익스파이얼스를 설정하지 않는다면 쿠키는 세션 쿠키가 되며, 클라이언트가 종료되면서 세션 쿠키가 제거됩니다.
Section 3 회고록
시간이 참 빠르다는 생각이 든다. 부트캠프를 시작했을 때 한참 여름이었는데 어느덧 9월이 되어 바깥 날씨가 선선해졌다. 나는 지나온 시간 동안 최선을 다했는가? 라는 질문에 당당히 대답을 할 순없지만 포기하지 않고 여기까지 왔다는 것에 의미를 두려고 한다.
Section 1, 2 보다 나는 좀 더 나약해졌고, 나태해졌으며, 노력하지 않았던 것 같다. 번아웃이라도 온 사람마냥 아무 것도 하고 싶지 않았고, 다 무슨 소용이 있나 싶었다. 공부를 해도 끝이 보이지 않으니 늪에 발을 들여놓은 사람 마냥 점점 질식되어 갔다.
이런 감상은 나답지 않다는 생각을 하면서도, 뭐... 여태 나름 열심히 달려왔으니 괜찮아질 때까지 조금만 나태해지지 뭐. 하는 생각이 들었다. 물론 프로젝트는 정말 걱정이 되지만... 계속 채찍질만 하다가 나가 떨어지는 것보단 휴식이 필요할 때 한 턴 쉬었다 가는 것도 중요하다는 생각이 들었다.
목표 상기
부트 캠프 무사 졸업
=> 코딩에 '코'도 모르는 사람을 이해시킬 수 있을 정도의 지식 갖추기
=> 1인분 하는 개발자 되기
2023년도 취업
=> 음... 가능할까? 우선은 부트 캠프 무사 졸업을 우선시 하자!
Keep
- 나 스스로가 선택한 길임을 잊지 말고 끝까지 최선을 다해보기
- 건강 관리하기
- 스트레스 관리하기
Problem
- 나 스스로가 선택한 길임을 잊지 말고 끝까지 최선을 다해보기
- 건강 관리하기
- 스트레스 관리하기
=> 남들보다 뒤쳐지는데 번아웃까지 온 거 같아서 그것 자체가 스트레스였다. 아무것도 하고 싶지 않고, 돈을 펑펑 쓰고 싶고~
=> 수면 패턴이 망가졌다. 다크서클도 심해지고, 건강에 적신호가 들어왔다. 수면 시간이 줄어들었는데 운동을 계속하다가 심장마비로 죽은 2n세로 뉴스에 나올 거 같아서 운동도 관뒀다(?)
=> 1번에서 언급했던 것처럼 지금 번아웃이 올 상황이 아닌데 번아웃이 찾아와서 나태해지고, 계획을 제대로 지키지 않는 나 자신을 보며 스트레스를 엄청 받았던 것 같다. TMI지만... MBTI가 극강의 ISTJ이기 때문에 계획대로(내 통제대로) 되지 않으면 굉장히 스트레스를 받는 편이다... ... 마인드 컨트롤을 해도 잠깐잠깐 드는 생각의 파편에 스트레스를 안 받을 순 없더라...
Try
1. 뻔뻔해지기
=> 뻔뻔하게 생각하기로 했다. 난 여태 내 나름대로 열심히 달려왔고, 끝이 보이지 않아 잠깐 지쳤을 뿐이니 뭐... 지금부터는 천천히 걸어가겠다! 라는 마인드를 가지기로 했다. 스트레스 받아봤자 나만 손해니까. 그리고 원래 나태한 인간은 아니여서 상태가 괜찮아진다면 전처럼 와아아악 하고 달릴 거라는 확신도 있기 때문에 크게 걱정되진 않았고, 스트레스를 풀기 위해 취미 생활을 열심히 하고 있다. (전독시 짱... 재밌다... ... 다들 전지적 독자 시점 보세요... 두 번 보세요... 세 번 보세요...)
2. 까먹지 말기
=> 이제는 건강을 열심히 챙길 나이가 되었다. 역류성 식도염도 어째 완전히 낫질 않고, 잠도 잘 못자는데 환절기라 컨디션이 2배로 꽝이다... 밀가루 음식은 최대한 먹지 않고, 비타민을 꼬박 꼬박 챙기며 (비타민 젤리는 맛있어서 2개씩 먹는다ㅋㅋ), 수면 시간을 지키기 위해 못해도 1시엔 자려고 노력해야 한다. 착각일 수도 있지만 노란 무드등을 잠 자기 1시간 전부터 틀어놓으면 금새 졸려지는 것 같더라...!
Section 3는 그 어느 누구보다 신나게 놀았다고 생각한다.
뭐,,, 탈주하는 것보다 쉬어가는 게 훨~~ 씬 낫지 않을까?
솔직히 취미 생활도 안 하고 공부, 일, 공부, 일만 하는 건 너무 잔인한 삶이지 않나... ...
내가 돈을 버는 이유는 안락한 삶을 위해서라고 생각한다.
그 안락한 삶을 위해 잠깐의 행복을 포기할 수 있는 사람도 있겠지만, 나는 그 잠깐의 행복을 포기했다가 부러지고 싶진 않다.
(멘탈도, 건강도 그렇고,,, 이러다 진짜 부러질 거 같다는 생각이 들더라...)
결승점까지 빨리 도착하면 물론 좋겠지만, 천천히 간다고 해서 도착하지 못한다고 생각하지 않는다.
빠르던, 느리던 도착하는 게 중요하다고 생각한다.
'Codestates > Section 3' 카테고리의 다른 글
[8/31] Reducer (0) | 2022.09.01 |
---|