목록전체 글 (188)
포도가게의 개발일지
http://www.yes24.com/Product/Goods/74219491 오브젝트 - YES24 역할, 책임, 협력을 향해 객체지향적으로 프로그래밍하라!객체지향으로 향하는 첫걸음은 클래스가 아니라 객체를 바라보는 것에서부터 시작한다. 객체지향으로 향하는 두번째 걸음은 객체를 www.yes24.com 설계란 코드를 배치하는것 그렇다면 왜 좋은 설계를 해야할까 생각한다면 그것은 현재 기능은 온전히 수행하면서 추가되거나 변경되는 내용을 수용할 수 있게 설계해야한다. 이 책을 읽으면서 정리한 생각은 결국 변경에 유연하게 대처를 어떻게 해야할까 고민한다면 결합도를 낮추고 응집도를 증가시킴으로써 변경의 취약하지 않게 될 수 있다. 왜 응집도가 높으면 변경에 유연할까 고민했을 때 한 곳의 관련 변경내용이 몰려있..
public - contract method,state를 external, internal 모두 공개 external - contract method, state를 contract 외부에서만 접근할 수 있도록 공개 private - contract state, method를 현재 contract 내부에서만 쓸 수 있도록 설정 internal - contract를 상속받은 또는 해당 contract에서만 접근할 수 있도록 설정 view - storage 상태변수에 접근할 수 있으며 외부에서 data를 읽을 수 만있다. write가 발생하지 않으니까 gas가 비용이 발생하지 않는다. pure - local 상태변수에만 접근할 수 있으면 때문에 읽기와 쓰기 모두가 불가능하다.
IaC란? - 인프라 구성을 코드를 이용해 자동으로 구축, 관리, 프로비저닝하는 IT 인프라 프로비저닝 프로세스 why? - 수동으로 관리하였을때 일어날 수 있는 누락, 설정 미스들을 없앨 수 있다. - 이러한 IaC의 장점은 단순히 서버관리의 효율성만 있는 것이 아닙니다. 인프라를 코드로 관리함으로써 어플리케이션을 관리하듯이 코드 관리와 배포 프로세스를 지킬 수 있습니다. 예를 들면 github / codecommit(AWS) 에 인프라스트럭쳐 코드를 올려서, Jenkins 또는 Circle CI 같은 툴들로 지속적 배포 프로세스를 갖출 수 있죠. how? iac 툴 Chef Puppet Red Hat Ansible Automation Platform Saltstack Terraform AWS Clou..
CloudFront는 AWS에서 제공해주는 cdn 서비스이다. Signed Url & Cookie? why? 유료 사용자 또는 일부 사용자용으로 각종 컨텐츠, 비즈니스 데이터, 각종 문서에 대한 액세스를 제한하고자 할 때 사용되는 cloudFront의 기능입니다. 사용자가 특별한 CloudFront 서명된 URL 또는 서명된 쿠키를 사용하여 프라이빗 콘텐츠에 액세스하도록 합니다. 사용자가 오리진 서버(저희 서비스에 경우 S3)에서 직접 콘텐츠에 액세스하는 URL이 아닌 CloudFront URL을 사용하여 콘텐츠에 액세스해야 합니다. signed URL와 cookies의 차이 - Signed URL: 개별 파일에 대한 액세스를 제공한다. 즉, 파일 하나 당 하나의 URL을 얻는다. - Signed Coo..
책임 할당하기 객체에 책임을 할당하는 기본적인 원리 데이터보다 행동을 먼저 결정해라(인터페이스를 먼저 작성하라고 생각됨: 뒤에서 잘못됬다고 느낌 인터페이스를 쓰라는게 아니라 메세지를 먼저 작성해라라고 본다) -> 객체에게 중요한것은 데이터가 아니라 외부에 제공하는 행동이다. 클라이언트 관점에서 객체가 수행하는 행동이란 곧 객체의 책임을 의미한다. 협력이라는 문맥 안에서 책임을 결정해라 메시지를 전송하는 클라이언트 의도에 적합한 책임을 할당해야 한다.(메서드 써놓고 이건 누가 가져가야하지? 즉 문맥을 먼저 작성하고 각책임을 할당해줘라라고 이해된다.) 메세지가 객체를 선택하게 해야 한다.("메세지를 전송해야 하는데 누구에게 전송하지?") 데이터 중심으로 작성하게 되면 캡슐화를 신경쓰면서 해야됨 누굴 인터페이..
설계 품질과 트레이드오프 역할은 책임의 집합이기 때문에(나는 해당역할에 여러 객체들이 교체될 수 있어 각 객체들의 추상화가 책임인줄알았는데..?) 설계는 변경을 위해 존재하고 변경에는 어떤 식으로든 비용이 발생한다. 훌륭한 설계는 합리적인 비용안에서 변경을 수용할 수 있는 구조를 만드는 것이다. 객체의 상태가 아닌 행동에 초점을 맞춰라? 데이터 중심의 관점에서 객체는 자신이 포함하고 있는 데이터를 조작하는데 필요한 오퍼레이션을 정의한다. 책임 중심의 관점에서 객체는 다른 객체가 요청할 수 있는 오퍼레이션을 위해 필요한 상태를 보관한다. 캡슐화 상태와 행동을 하나의 객체 안에 모으는 이유는 객체의 내부 구현을 외부로부터 감추기 위해서다. 여기서 구현이란 나중에 변경될 가능성이 높은 어떤 것을 가리킨다. 객..
책: 테스트 주도 개발 시작하기 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..