성장에 목마른 코린이

TIL 220816 (면접을 위한 CS 전공지식 노트 44 - 56) 본문

Today I Learned

TIL 220816 (면접을 위한 CS 전공지식 노트 44 - 56)

성장하는 코린이 2022. 8. 16. 20:59
728x90

오늘의 계획

1. 오전 10:00 - 12:00 이력서 2군데 제출하기 / 기업 분석

2. 오후 12:00 - 1:30 운동

3. 오후 2:00 - 3:00 함께 코칭

4. 면접을 위한 CS 전공지식 노트 중요한 내용 기록하기!

5. Redux 강의!

6. 프로그래머스 문제 풀기!

프록시 패턴 (proxy pattern): 대상 객체에 접근하기 전 그 접근에 대한 흐름을 가로채

대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴

 

이를 통해 객체의 속성, 변환 등을 보완하며 보안, 데이터 검증, 캐싱, 로깅에 사용합니다.

 

프록시 서버 (proxy server): 서버와 클라이언트 사이에서 클라이언트가 자신을 통해 다른 네트워크 서비스에

간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용 프로그램

 

nginx: 비동기 이벤트 기반의 구조와 다수의 연결을 효과적으로 처리 가능한 웹 서버

 

주로 Node.js 서버 앞단의 프록시 서버로 활용됩니다.

이를 통해 익명 사용자의 직접적인 서버로의 접근을 차단하고

간접적으로 한 단계 더 거침으로써 보안성을 더욱 강화할 수 있습니다.

 

CloudFlare: 전 세계적으로 분산된 서버가 있고 이를 통해 어떠한 시스템의 콘텐츠 전달을 빠르게 할 수 있는 CDN 서비스

 

CloudFlare를 통해 누릴 수 있는 이점:

1. DDOS 공격 방어

CloudFlare는 의심스러운 트래픽, 특히 사용자가 접속하는 것이 아닌

시스템을 통해 오는 트래픽을 자동으로 차단해서 DDOS 공격으로부터 보호합니다.

2. HTTPS 구축

CloudFlare를 사용하면 별도의 인증서 설치 없이 좀 더 손쉽게 HTTPS를 구축할 수 있습니다.

 

CORS (Cross-Origin Resource Sharing): 서버가 웹 브라우저에서 리소스를 로드할 때 다른 오리진을 통해

로드하지 못하게 하는 HTTP 헤더 기반 메커니즘입니다.

 

프론트엔드 개발 시 프론트엔드 서버를 만들어 백엔드 서버와 통신할 때 주로 CORS 에러를 마주치는데,

이를 해결하기 위해 프론트엔드에서 프록시 서버를 만들기도 합니다.

 

iterator pattern: iterator를 사용하여 컬렉션의 요소에 접근하는 디자인 패턴입니다. 

노출모듈 패턴(revealing module pattern): 즉시 실행 함수를 통해 private, public 같은 접근 제어자를 만드는 패턴

 

MVC 패턴: Model, View Controller로 이루어진 디자인 패턴

 

Model: 애플리케이션의 데이터인 데이터베이스, 상수, 변수 등을 뜻합니다.

View: inputbox, checkbox, textarea 등 사용자 인터페이스 요소를 나타냅니다.

즉, 모델을 기반으로 사용자가 볼 수 있는 화면을 뜻합니다.

또한, 변경이 일어나면 컨트롤러에 이를 전달해야 합니다.

Controller: 하나이상의 모델과 하나이상의 뷰를 잇는 다리역할을 하며 이벤트 등 메인 로직을 담당합니다.

모델과 뷰의 생명주기도 관리하며, 변경 통지를 받으면 이를 해석해 각각의 구성 요소에 해당 내용에 대해 알려줍니다.

 

MVC 패턴을 이용한 대표적인 라이브러리: React.js

리액트는 유저 인터페이스를 구축하기 위한 라이브러리입니다.

Virtual DOM을 통해 실제 DOM을 조작하는 것을 추상화해서 성능을 높였습니다.

 

MVP 패턴: MVC에서 C에 해당하는 컨트롤러가 프레젠터로 교체된 패턴입니다.

뷰와 프레젠터는 1:1 관계이기 때문에 MVC 패턴보다 더 강한 결합을 지닌 패턴이라 볼 수 있습니다.

 

MVVM 패턴: MVC의 C에 해당하는 컨트롤러가 View Model로 바뀐 패턴입니다.

여기서 뷰모델은 뷰를 더 추상화한 계층이며,

MVVM 패턴은 MVC 패턴과는 다르게 커맨드와 데이터 바인딩을 가지는 것이 특징입니다.

뷰와 뷰모델 사이의 양방향 데이터 바인딩을 지원하며

UI를 별도의 코드 수정 없이 재사용할 수 있고 단위 테스팅하기 쉽다는 장점이있습니다.

 

MVVM 패턴의 대표적인 프레임워크: Vue.js

Vue.js는 반응형이 특징인 프론트엔드 프레임 워크입니다.

함수를 사용하지 않고 값 대입만으로도 변수가 변경되며

양방향 바인딩, html을 토대로 컴포넌트를 구축할 수 있다는 점이 특징입니다.

오늘의 회고

운동을 조금 빡시게하다보니까 몸이 조금 힘드네요..

오늘은 함께 코칭을 진행했었는데요, 다른분들의 근황도 듣고

같이 어떤 사람과 같이 일하고/하고싶지 않은가 에 대해 얘기를 나눠보았습니다.

저는 개인적으로 적극적으로 소통하는 사람과 같이 일하면 좋을 것 같다고 얘기했습니다.

혼자서 일하는 상황이라면 다르겠지만, 개발자는 협업을 많이 하기에 소통없인

프로젝트가 진전이 되지않는다는 것을, 제가 프로젝트를 해보며 느꼈습니다.

그리고 저는 소통하지 않는 사람과 같이 일하고 싶지 않다고 대답했는데요,

소통하지 않는 사람은 하나하나 무엇을 하고 있는지 물어봐야하고 그런 상황이 지속된다면

기가 좀 많이 빨릴 것 같습니다.

다른 분들 대답도 얼추 비슷했던 것 같습니다! 개발자는 소통이 핵심인 것 같아요!

그리고 오늘 프로그래머스 레벨 2 문제를 풀어보는데, 어렵네요 ..

 뭔가 코딩테스트 관련 책을 하나 구매해서 좀 기본적인 공부가 좀 더 필요할 것 같습니다.

내일 중으로 책을 코딩테스트 책을 하나 주문해야겠습니다!

Comments