목록분류 전체보기 (198)
포도가게의 개발일지
설계 품질과 트레이드오프 역할은 책임의 집합이기 때문에(나는 해당역할에 여러 객체들이 교체될 수 있어 각 객체들의 추상화가 책임인줄알았는데..?) 설계는 변경을 위해 존재하고 변경에는 어떤 식으로든 비용이 발생한다. 훌륭한 설계는 합리적인 비용안에서 변경을 수용할 수 있는 구조를 만드는 것이다. 객체의 상태가 아닌 행동에 초점을 맞춰라? 데이터 중심의 관점에서 객체는 자신이 포함하고 있는 데이터를 조작하는데 필요한 오퍼레이션을 정의한다. 책임 중심의 관점에서 객체는 다른 객체가 요청할 수 있는 오퍼레이션을 위해 필요한 상태를 보관한다. 캡슐화 상태와 행동을 하나의 객체 안에 모으는 이유는 객체의 내부 구현을 외부로부터 감추기 위해서다. 여기서 구현이란 나중에 변경될 가능성이 높은 어떤 것을 가리킨다. 객..
책: 테스트 주도 개발 시작하기 chapter1. 저자가 TDD 도입전 개발했던 방식 ( 현재의 나와 같다. ) 1. 만들 기능에 대해 설계를 고민, 어떤 클래스나 인터페이스를 도출할지 고민하고 각 타입에 어떤 메서드를 넣을지 시간을 들여 생각 2. 과정 1을 수행하면서 구현에 대해서 고민, 대략 어떻게 구현하면 될지 머릿속에 그림 3. 기능에 대한 구현을 완료할 것 같으면 기능을 테스트 한다. 이 과정에서 원하는 대로 동작하지 않거나 문제가 발생하면 과정2에서 작성한 코드를 디버깅하면서 원인을 찾는다. 저자는 TDD가 더 나은 코드를 다 빠르게 개발하는데 도움이 된다고 한다. TDD로 개발할 대 먼저 해야할 것은 기능을 검증하는 테스트 코드를 작성하는 것이다. TDD를 처음에 익히기 위해 작은 단계를 ..
Basically CRUD data : insert나 변경되고나 하는 data 내용 filter : 찾고자 하는 data의 조건 MongoDB Reserved Operators https://www.mongodb.com/docs/manual/reference/operator/ Operators — MongoDB Manual Docs Home → MongoDB ManualQuery and Projection OperatorsQuery operators provide ways to locate data within the database and projection operators modify how data is presented.Update OperatorsUpdate operators are opera..
what? - 웹훅은 웹페이지 또는 웹앱에서 발생하는 특정 이벤트들을 callback으로 변환해주는 방버이다. 일반적인 API는 클라이언트가 서버를 호출하는 방식이다. 하지만 웹훅의 경우 서버에서 특정 이벤트가 발생했을 때 클라이언트를 호출하는 방식이면 "역방향 API"라고도 부른다.(sse같은건가?) Webhook 프로바이더는 해당 이벤트가 발행하면 HTTP POST 요청을 생성하여 callback URL(endpoint, 목적지)로 이벤트 정보을 보냅니다. why? - 메일을 수신할 수 있는 웹앱의 클라이언트와 서버가 있다. 구현할 것은 서버측에서 메일을 수신하였을 경우 클라이언트 측으로 알림 메세지를 전달하는 것이다.!! 알림!! (즉 busy waiting쓸데없는 overhead를 줄 일 수있다 ..
객체지향에서 제일 중요한것은 역할 책임 협력이다. 객체들이 애플리케이션의 기능을 구현하기 위해 수행하는 상호작용을 협력이라 부른다. 객체가 협력에 참여하기 위해 수행하는 로직을 책임이라 부른다. 객체들이 협력 안에서 수행하는 책임들이 모여 객체가 수행하는 역할을 구성한다. 객체지향 시스템은 자율적인 객체들의 공통체다.!! 객체는 고립된 존재가 아니라 기능이라는 더 큰목표를 달성하기 위한 사회적인 집단이다!! 책임주도설계 1. 시스템이 사용자에게 제공해야하는 기능인 시스템 책임을 파악한다. 2. 시스템 책임을 더 작은 책임으로 분류한다. 3. 분할된 책임을 수행할 수 있는 적절한 객체 또는 역할을 찾아 책임을 할당한다. 4. 객체가 책임을 수행하는 도중 다른 객체의 도움이 필요한 경우 이를 책임질 적절한 ..
CrowdSourcing? - 크라우드 소싱은 인터넷,소셜미디어,스마트폰에 존재하는 어떤 대규모의 사람들의 작업이나 정보, 제안을 포함한다. 사람들은 작은 봉사를 통해 약간의 pay를 지불받는다. - 기업은 크라우드소싱을 통해 국내 또는 전 세계 모든 곳의 사람들에게 업무를 위탁할 수 있습니다.그 결과, 크라우드소싱을 통해 사내 직원의 일반적인 오버헤드 비용을 들이지 않고도 다양한 기술과 전문 지식을 활용할 수 있습니다. Why? AWS CrowdSourcing === MTurk - MTurk은 요청자(Requester)와 작업자(worker)를 이어주는 일종의 크라우드 소싱 서비스로, 해결해야 하는 과제를 가진 요청자가 과제를 MTurk에 올리면, 전세계에 작업자로 등록된 사람들이 실시간 자발작으로 M..
chap 2 영화 - 영화에 대한 기본 정보를 표현한다. 상영 - 실제로 관객들이 영화를 관람하는 사건을 표현한다. 사용자가 실제로 예매하는 대상은 영화가 아니라 상영이다. 할인정책(금액할인, 비율할인)하나만 적용가능하며 할인 조건은 여러개 적용가능 협력, 객체, 클래스 - 대부분의 사람은 클래스를 결정한 후에 클래스에 어떤 속성과 메서드가 필요한지 고민한다. 안타깝게도 객체지향의 본직과는 거리가 멀다. 진정한 객체지향의 패러다임으로의 전환은 클래스가 아닌 객체에 초점을 맞출 때에만 얻을 수 있다. 첫째, 어떤 클래스가 필요한지를 고민하기 전에 어떤 객체들이 필요한지 고민하라. 클래스는 공통적인 상태와 행동을 공하는 객체들을 추상화 한것이다. 즉 클래스의 윤곽을 잡기 위해서는 어떤 객체들이 어떤 상태와 ..
1. shell이나 driver(나같은경우는 node.js driver)를 이용하여 mongodb server에 query를 보내면 mongodb server가 direct로 data를 write하지 않는다. mongodb server는 storage engine과 communication을 하며 storage engine은 내가 마음에 듣는것으로 바꿀 수 있다. default로는 Wired Tiger engine을 사용한다. storage engine은 결국 file에 data를 저장하게 된다. 1. storage engine은 data chunk를 memory에 load하고 자주 사용하는 data가 memory에 있도록 관리합니다. 2. storage engine은 먼저 in-memory에 data..