목록Tech (22)
포도가게의 개발일지
객체지향에서 제일 중요한것은 역할 책임 협력이다. 객체들이 애플리케이션의 기능을 구현하기 위해 수행하는 상호작용을 협력이라 부른다. 객체가 협력에 참여하기 위해 수행하는 로직을 책임이라 부른다. 객체들이 협력 안에서 수행하는 책임들이 모여 객체가 수행하는 역할을 구성한다. 객체지향 시스템은 자율적인 객체들의 공통체다.!! 객체는 고립된 존재가 아니라 기능이라는 더 큰목표를 달성하기 위한 사회적인 집단이다!! 책임주도설계 1. 시스템이 사용자에게 제공해야하는 기능인 시스템 책임을 파악한다. 2. 시스템 책임을 더 작은 책임으로 분류한다. 3. 분할된 책임을 수행할 수 있는 적절한 객체 또는 역할을 찾아 책임을 할당한다. 4. 객체가 책임을 수행하는 도중 다른 객체의 도움이 필요한 경우 이를 책임질 적절한 ..
chap 2 영화 - 영화에 대한 기본 정보를 표현한다. 상영 - 실제로 관객들이 영화를 관람하는 사건을 표현한다. 사용자가 실제로 예매하는 대상은 영화가 아니라 상영이다. 할인정책(금액할인, 비율할인)하나만 적용가능하며 할인 조건은 여러개 적용가능 협력, 객체, 클래스 - 대부분의 사람은 클래스를 결정한 후에 클래스에 어떤 속성과 메서드가 필요한지 고민한다. 안타깝게도 객체지향의 본직과는 거리가 멀다. 진정한 객체지향의 패러다임으로의 전환은 클래스가 아닌 객체에 초점을 맞출 때에만 얻을 수 있다. 첫째, 어떤 클래스가 필요한지를 고민하기 전에 어떤 객체들이 필요한지 고민하라. 클래스는 공통적인 상태와 행동을 공하는 객체들을 추상화 한것이다. 즉 클래스의 윤곽을 잡기 위해서는 어떤 객체들이 어떤 상태와 ..

chap 1. 1. 객체 설계 모듈이란? - 크기와 상관없이 클래스 형태, 패키지 형태, 라이브러리 형태로 프로그램을 구성하는 임의의 요소 - 모듈은 세가지 목적이 있으며 첫번째 : 정상 작동 되어야 한다. 두번째 : 변경을 위해 존재 -> 쉽게 변하기 위해서는 객체가 자율적이어야 한다. -> 책임을 각자 가진다. 세번째 : 의사소통이 가능하여야 한다. -> 코드가 직관적(? 상식적 or 일반적)이어야 한다. 객체지향의 목표는? - 서로 의존하면서 협력하는 객체들의 공통체를 구축하는 것 -> 의존성을 없애는게 아니라 불필요한 의존성을 없애는것이다! - 때문에 변경이 쉽기 위해서 최소한의 의존만 남기고 불필요한 의존성을 버려야 한다. - 의사소통이 쉽다는거는 직관적(? 상식적)이어야 한다는 것이다. -> ..
toBe vs toEqual vs toStrictEqual toBe - 비교 대상이 기본형(primitive type)이라면 두 원시 값이 같은지 비교하고, 오브젝트(object type)라면 같은 오브젝트에 대한 참조(동일한 메모리)인지를 비교(Shallow compare)한다. toEqual - 기본형인 경우 toBe와 같이 두 값이 같은지 비교하지만, 대상이 오브젝트인 경우 재귀적으로 프로퍼티를 비교하며 깊은 비교(Deep compare, 내용물 확인)를 수행한다. toStrictEqual - 깊은 비교를 하는 것은 toEqual과 동일하지만, undefined인 프로퍼티까지 비교한다. Jest CLI detectOpenHandles - 열려있는 리소스를 모두 닫아줍니다 forceExit - 테스트..

Docker? - 도커는 컨테이너 기반의 오픈소스 가상화 플랫폼입니다. 컨테이너? 배에 실는 네모난 화물 수송용 박스, 각각의 컨테이너 안에는 다양한 내용물을 넣을 수 있고 규격화되어 컨테이너선이나 트레일러등 다양한 운송수단으로 쉽게 옮길 수 있습니다. 서버에 입장에서 프로그램, 런타임 환경을 컨테이너로 추상화하여 어디서든 실행 가능하게 만들어준다. why? - 이미지는 컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 것으로 immutable 하다. 컨테이너는 즉 이미지를 실행한 상태이며 추가되거나 변하는 값은 컨테이너에 저장됩니다. 같은 이미지에서 여러개의 컨테이너를 생성(실행)할 수 있고 컨테이너의 상태가 바뀌거나 컨테이너가 삭제되더라도 이미지는 변하지 않고 그대로 남아있습니다. 즉 우리가 다..

레디스(Redis)는 Remote Dictionary Server의 약자로 Key/Value 형식의 in-memory 데이터베이스로 비관계형 데이터베이스인 NoSQL에 속한다. 디스크가 아닌 메모리에 데이터를 저장하므로 빠른 Read와 Write 속도를 보장해준다. 레디스의 다른 장점으로는 다른 in-memory 데이터베이스인 Memcached와는 다르게 String, List, Set, Sorted Set, Hash 등 다양한 자료구조를 지원한다. Why? 디스크가 아닌 메모리에 데이터를 저장하므로 빠른 Read와 Write 속도를 보장해준다. 자주접근하고 덜 자주 바뀌는 데이터를 메모리에 저장하여 더 빠르게 데이터를 얻기 위해(서버가 여러 대인경우 서로 다른 데이터를 가지게 될 수 도있기에 이용한다...