본문 바로가기

ComputerScience69

1장-디자인 패턴) MVC 패턴 1. MVC 패턴이란 ? - Model, View, Controller 로 이루어진 디자인패턴이다. - 앱의 구성요소를 세가지로 구분하여 개발 프로세스에서 각각의 구성요소에만 집중해서 개발할 수 있다. - 재사용성과 확장성이 용이하지만, 복잡할 수록 모델과 뷰의 관계가 복잡해지는 단점이 있다. 2. 모델 - model은 앱의 데이터인 DB, 상수, 변수 등을 뜻한다. - 박스모델에서 박스의 위치, 글자, 포맷, 모양 등에 관한 정보들을 가지고 있어야 한다. - 뷰에서 데이터를 생성하거나 수정하면 컨트롤러를 통해 모델을 생성하거나 갱신한다. 3. 뷰 - inputbox, checkbox, textarea 등 사용자인터페이스(UI)를 나타낸다. - 모델을 기반으로 사용자가 볼 수 있는 요소 및 화면을 뜻한다.. 2023. 2. 27.
1장-디자인 패턴) 노출모듈 패턴 1. 노출모듈 패턴이란? - 즉시 실행함수를 통해 private, public 같은 접근 제어자를 만드는 패턴이다. - 자바는 킹로그래밍언어라서 접근 제어자 설정이 편하지만, JS는 노출모듈패턴을 통해 구현한다. 2. 예시 - a와 b는 다른 모듈에서 사용할 수 없으며, private 범위를 가진다. - c와 d는 다른 모듈에서 사용할 수 있으며, public 범위를 가진다. - CJS모듈 방식이 이런 걸로 만들어졌다. 2023. 2. 27.
1장-디자인 패턴) 이터레이터 패턴 1. 이터레이터 패턴이란 - 이터레이터를 사용하여 컬렉션의 요소들에 접근하는 디자인패턴. - 뭔소린가 하면, 순회할 수 있는 여러 가지 자료형의 구조와는 상관 없이 이터레이터라는 하나의 인터페이스로 순회하면서 각각의 요소에 어떠한 짓거리를 할 수 있다는 얘기다. 2. 예시 - 다른 구조인 map과 set임에도 같은 'for a of b' 라는 이터레이터 프로토콜을 통해 순회할 수 있다. - 이터러블 프로토콜이란 ? : 이터러블한 객체들을 순회할 때 쓰이는 규칙 - 이터러블한 객체란 ? : 반복이 가능한 객체로 배열을 일반화한 객체 2023. 2. 27.
1장-디자인 패턴) 프록시패턴과 프록시서버 참고로 앞서 포스팅한 프록시객체는 프록시패턴이 녹아있는 객체이다. 1. 프록시패턴 - 대상 객체애 접근하기 전, 그 접근에 대한 흐름을 가로채 대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴이다. - 프록시란 ? '대리' / '대신' 의 의미이다. - 이를 통해 객체의 속성, 변환 등을 보완하며, 보안, 검증, 캐싱, 로깅 등에 사용한다. - 프록시 서버로도 활용된다. 2. 프록시서버 - NGINX : 비동기 이벤트 기반의 구조와 다수의 연결을 효과적으로 처리 가능한 웹 서버이고, 주로 Node.js의 앞단의 프록시서버로 활용. - NodeJS의 창시자도 버퍼오버플로우의 취약점 예방을 위해 nginx를 프록시서버로 앞단에 놓는게 좋다고 했다. - 버퍼오버플로우란 ? 버퍼는 메모리공간이며, 메모리 공.. 2023. 2. 26.
[Lv.2] 튜플(카카오 인턴십 코딩테스트) 1. 문제 셀수있는 수량의 순서있는 열거 또는 어떤 순서를 따르는 요소들의 모음을 튜플(tuple)이라고 합니다. n개의 요소를 가진 튜플을 n-튜플(n-tuple)이라고 하며, 다음과 같이 표현할 수 있습니다. (a1, a2, a3, ..., an) 튜플은 다음과 같은 성질을 가지고 있습니다. 중복된 원소가 있을 수 있습니다. ex : (2, 3, 1, 2) 원소에 정해진 순서가 있으며, 원소의 순서가 다르면 서로 다른 튜플입니다. ex : (1, 2, 3) ≠ (1, 3, 2) 튜플의 원소 개수는 유한합니다. 원소의 개수가 n개이고, 중복되는 원소가 없는 튜플 (a1, a2, a3, ..., an)이 주어질 때(단, a1, a2, ..., an은 자연수), 이는 다음과 같이 집합 기호 '{', '}'.. 2023. 2. 20.
[Lv.2] 위장 (Hash와 경우의 수) 1. 문제 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다. 종류 이름 얼굴 동그란 안경, 검정 선글라스 상의 파란색 티셔츠 하의 청바지 겉옷 긴 코트 스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 clothes의 각 행은 [의상의 이름, 의상의 종류]로 이루어져 있습니다. 스파이가 가진 의상의 수는 1개 이상 30개 이하입니다. 같은 이름을 가진 의상은 존재하지 않습니다. cloth.. 2023. 2. 20.
1장-디자인 패턴) 옵저버패턴 1.1 Observer pattern 이란? - 주체가 어떠한 객체의 상태를 관찰하다가 변화가 있을 때마다 메서드 등을 통해 옵저 목록에 있는 옵저버들에게 변화를 알려주는 디자인 패턴. - 주체는 객체의 상태 변화를 보고 있는 관찰자. - 옵저버들은 이 객체의 상태 변화에 따라 전달되는 메서드 등을 기반으로 추가 변경 사항이 생기는 객체들이다. - 쉽게 말해 주체가 객체를 보고있다가 뭔가 바뀌면 옵저버들한테 뭐 하라고 알려준다. - 주체와 객체를 따로 두지 않고 상태변경 객체를 기반으로 구축하기도 한다. - 주로 이벤트 기반 시스템에 사용하며, MVC 패턴에도 사용된다. (리액트가 이거다) - model : 주체 - view : 옵저버 - controller : 작동하는 것 1.2 JavaScript에서.. 2023. 2. 20.
1장-디자인 패턴) 전략패턴 (정책 패턴) 1.1 Strategy pattern 이란? - 정책 패턴이라고도 하며, 객체의 행위를 바꾸고 싶은 경우 '직접' 수정하지 않고 전략이라고 부르는 '캡슐화한 알고리즘'을 컨텍스트 안에서 바꾸어 주면서 상호 교체가 가능하도록 만드는 패턴이다. - 컨텍스트란 ? : 상황, 맥락, 문맥을 의미하며, 개발자가 어떤 작업을 완료하는데 필요한 모든 정보이다. - 주로 결제시스템/passport 구현의 패턴에서 쓰인다. - passport : Node.js에서 인증모듈을 구현하는데 쓰이는 미들웨어 라이브러리이다. 여러가지 전략을 기반으로 인증할 수 있도록 하며, 서비스 내부 회원가입을 이용한 LocalStrategy와 네이버/구글/페북 등의 다른 서비스 인증을 기반으로 한 OAuth 전략을 지원한다. 1.1.1 Ja.. 2023. 2. 20.