기술 면접에서 자주 등장하는 질문 중 '웹 브라우저에 구글을 검색하면 어떤 일이 벌어지나요?'를 쉽게 이해할수 있게 정리해 봤다. (참고로 깊이있는 정리글이 아니다.) (면접 때 이 질문을 받았는데.. ^^.. 답변을 잘하지 못했기 때문에 자기반성 겸 개념을 다시 정리하기로 했다.) 1.사용자가 웹 브라우저의 주소창에 "구글" 또는 "www.google.com"과 같이 구글의 도메인 주소를 입력한다. 2. 사용자가 입력한 도메인 주소를 바탕으로 브라우저는 먼저 로컬 DNS 캐시에 저장된 DNS 레코드를 검색한다. 3. 저장되어있는지 확인을 한 후 없으면 DNS(Domain Name System) 서버를 통해 구글의 IP 주소를 알아낸다. 4. 브라우저는 알아낸 IP 주소를 바탕으로 구글 서버에 HTTP ..
MVVM 패턴 (MVVM pattern) MVVM 패턴은 MVC 패턴에서 컨트롤러(Controller)를 빼고 *뷰 모델(View Model)을 추가한 패턴이다. MVC 패턴과 다르게 커맨드와 데이터 바인딩을 가진 것이 특징이다. 중간의 뷰모델이 양방향 데이터 바인딩을 지원하기 때문에, UI를 별도의 코드 수정 없이 재사용할 수 있다는 점과, 단위 테스트(unit test)하기 쉽다는 장점이 있다. 뷰 모델(View Model) 뷰 모델은 뷰를 추상화한 계층이며 뷰와 모델 사이에서 양방향 데이터 바인딩을 지원한다. 참고로 MVVM 패턴을 가진 대표적인 프레임워크로 뷰(Vue.js)가 있다.
MVP 패턴 (MVP pattern) MVP 패턴은 MVC 패턴으로 파생되었으며 C인 컨트롤러가 프레젠터 P로 교체된 패턴이다. MVC 패턴의 컨트롤러가 입력을 받아 모델과 뷰에게 전달했다면, MVP 패턴은 뷰가 입력을 받아 프레젠터를 통해 모델에 접근할 수 있다. 프레젠터가 뷰와 모델의 매개체 역할을 한다. 모델과 뷰의 결합도를 낮추면 업데이트 또는 수정 시 관련된 코드만 수정하면 되기 때문에 확장성이 개선된다. 단, 애플리케이션이 복잡해질수록 뷰와 프레젠터 사이의 의존성이 강해질 수 있다. 이미지 출처 - 면접을 위한 CS 전공지식 노트
MVC 패턴 MVC 패턴은 모델(Model), 뷰(View), 컨트롤러(Controller)로 이루어진 디자인 패턴이다. 애플리케이션의 구성 요소를 세 가지 역할로 구분하여 개발 프로세스에서 각각의 구성 요소에만 집중해서 개발할 수 있어 재사용과 확장성이 용이하다는 장점이있지만, 애플리케이션이 복잡해질수록 모델과 뷰의 관계가 복잡해지는 단점이 있다. MVC 패턴을 이용한 대표적인 라이브러리로 리엑트(React.js)가 있다. 모델(Model) 모델은 애플리케이션의 데이터인 데이터 베이스, 상수, 변수를 뜻함. 뷰에서 데이터를 생성하거나 수정하면 컨트롤러를 통해 모델을 생성하거나 갱신한다. 뷰(View) 뷰는 사용자 인터페이스 요소를 나타낸다. 즉 사용자가 볼 수 있는 화면을 뜻함. 모델이 가지고 있는 정..
반복자 패턴(iterator pattern) 객체 지향 프로그래밍에서 반복자(이터레이터)를 사용하여 요소들에 접근하는 디자인 패턴이다. 구글에 이터레이터 패턴에 대해 검색하면 많은 글들이 나오는데 읽어봐도 이해가 잘 되지 않았지만, 네이버 지식백과가 좀 더 쉽게 풀어 설명해주고 있어 내용을 발췌했다. 더보기 반복에 사용되는 자료구조에는 배열, 리스트, Set, Map 등 있다. 이들의 특징은 어떤 데이터의 집합체라는 것이다. 따라서 개별 원소로 여러 가지 작업을 하게 된다. 이때 데이터들의 집합체를 모두 동일한 인터페이스를 사용하여 조작할 수 있게 하면 데이터들의 집합체를 쉽게 사용할 수 있을 것이다. 이 역할을 하는 것이 iterator 패턴이다. 예를 들어 배열의 경우 for 문을 사용하여 변수 i ..
프록시 proxy ? 대리, 대리(행위)나 대리권, 대리 투표, 대리인 등을 뜻한다. 프록시 패턴(proxy pattern) 프록시는 다른 무언가와 이어지는 인터페이스의 역할을 하는 클래스인데, 객체의 속성, 변환 등을 보완하며 보안, 데이터 검증, 캐싱, 로깅에 사용한다고 한다. 또 프록시 객체로 쓰이기도 하지만 프록시 서버로도 활용된다고 한다. 아래 이미지를 보면 Aunty가 Bride 대신 모든 것을 처리해주고있는데 프록시가 이러한 역활을 한다고 보면 조금 쉽게 생각할 수 있는 것 같다.. (그래도 어려움🙄) (출처: https://medium.com/@mithunsasidharan/understanding-the-proxy-design-pattern-5e63fe38052a) 아래 프록시 패턴 예제..
옵저버 패턴(observer pattern) 주체(Subject, 관찰자)가 옵저버 또는 리스너(listener)라 불리는 하나 이상의 객체를 관찰 대상이 되는 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 옵저버 목록에 있는 옵저버들에게 변화를 알려주는 디자인 패턴이다. 발행/구독 모델로 알려져있기도 하다. 이 옵저버 패턴을 활용한 서비스로는 대표적으로 트위터가 있다. 면접을 위한 CS 전공 지식 노트 예제에서는 topic(주체 ≒ 객체)을 기반으로 옵저버 패턴을 구현한 예제가 나와있다. /* 면접을 위한 cs 전공 지식 노트 예제 4. Observer pattern 하나 이상의 객체를 관찰 대상이 되는 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 옵저버 목록에 있는 옵저버들..
전략 패턴(strategy pattern) ≒ 정책 패턴(policy pattern) 전략이라고 부르는 '캡슐화'한 알고리즘을 선택할 수 있게 하는 소프트웨어 디자인 패턴이다. 면접을 위한 cs 전공 지식 노트 예제에서는 이커머스 사이트에서 결제를 할 때 다양한 방법을 선택할 수 있듯이, 예제에서 제품을 결제 방법의 '전략' (결제수단?)만 바꿔서 LUNACard로 사는 것과 KAKAOCard로 사는 것을 구연한 예시를 보여줬다. /* 면접을 위한 cs 전공 지식 노트 예제 3.전략 패턴(strategy pattern) 객체의 행위를 바꾸고 싶은 경우 '직접'수정하지 않고 '캡슐화한 알고리즘'을 선택할 수 있도록하는 소프트 웨어 디자인 패턴이다. */ import java.text.DecimalForma..
팩토리 패턴 (factory pattern) 객체를 사용하는 코드에서 객체 생성 부분을 따로 떼어내어 추상화한 패턴이자, 상속관계에 있는 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 대한 구체적인 내용을 결정하는 패턴이다. 상위 클래스와 하위 클래스가 분리되어 많은 유연성을 갖게 되고, 유지 보수성이 좋다. 면접을 위한 cs 전공 지식 노트 예제에서는 하위 클래스를 바리스타 공장으로, 상위 클래스를 레시피로 정의하여 예시를 보여주었다. /* 면접을 위한 cs 전공 지식 노트 예제 2. Factory pattern 상위 클래스인 객체 생성 부분을 추상화하고, 하위 클래스에서 객체 생성에 대한 구체적인 내용을 결정하는 패턴이다. 상위 클래스와 하위 클래스가 분리되어 많은 유연성을 갖게..
오늘의 일기 "장고 튜토리얼을 공부할 때 MVC 패턴에 대해서 짧게 배웠는데, 이게 뭘 어떻게 한다는 건지 대충 넘어갔었.... 다.... 그래도 다시 공부하는 겸.. 꼼꼼히 살펴봐야겠다...🙄" 프로그램을 설계할 때 발생하는 문제를 객체 간의 상호관계 등을 이용하여 해결할 수 있도록 형식화된 규약?이라고한다. 싱글톤 패턴 (singleton pattern)부터 MVVM 패턴까지 10가지의 패턴들이 있다. 싱글톤 패턴 (singleton pattern) 싱글톤 패턴은 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴, 데이터 베이스 연결 모듈에 많이 사용된다. (데이터베이스 연결 모듈이라고 하니까 확 와닿았다. 감을 잡..았달까나..?) → Django에서 데이터베이스 연결 예시 DATABASES = ..
- Total
- Today
- Yesterday
- 회원가입
- git공부
- 디자인 패턴
- 웹페이지
- path variable
- 회원 로그인
- API
- git
- Django tutorial
- 톰캣
- 환경 변수 설정
- 검색 결과 내 페이지네이션
- 배열
- django.contrib.auth
- Spring
- 면접을 위한 CS 전공 지식 노트
- 암호화
- Java
- python3
- git 공부
- 한글 형태소 분석기
- musma
- Python
- 혼자 공부하는 파이썬
- error: failed to push some refs to 'https://github.com/
- django-environ
- authenticate()
- django
- Magazine K
- 커맨드 객체
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |