목록전체 글 (213)
포도가게의 개발일지
https://semaphoreci.com/blog/what-is-monorepo What is monorepo? (and should you use it?) - Semaphore Monorepos can foster rapid development workflows. In this post, we’ll examine if they are the right fit for you and your company. semaphoreci.com 우선 대형 모노레포를 운영하는 회사로 Google, MS, Facebook, Twitter가 잘 알려져있다. Monorepo : 다양한 project들을 하나의 repository에서 통합하여 관리 Multirepo : 각각의 project들을 각각의 repository..
DI 시스템에는 두가지 역할인 provider와 consumer 역할이 있다. Angular는 injector를 이용하여 provider와 consumer의 interaction을 수월하게 해줍니다. dependency가 요청되었을때, injector는 registry에서 사용 가능한 instance가 있는지 확인합니다. 그렇지 않은 경우 새 instance가 만들어지고 registry에 저장됩니다. angular는 application bootstrap중에 root injector를 만들뿐만아니라 필요에 따라 다른 injector도 만들게 됩니다. 생성자 depedency를 확인하여 injector에 해당 instance가 등록되어있는지 확인 후 없는경우 생성 후 등록해줍니다. DI 프레임워크는 기본적..
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..
책임 할당하기 객체에 책임을 할당하는 기본적인 원리 데이터보다 행동을 먼저 결정해라(인터페이스를 먼저 작성하라고 생각됨: 뒤에서 잘못됬다고 느낌 인터페이스를 쓰라는게 아니라 메세지를 먼저 작성해라라고 본다) -> 객체에게 중요한것은 데이터가 아니라 외부에 제공하는 행동이다. 클라이언트 관점에서 객체가 수행하는 행동이란 곧 객체의 책임을 의미한다. 협력이라는 문맥 안에서 책임을 결정해라 메시지를 전송하는 클라이언트 의도에 적합한 책임을 할당해야 한다.(메서드 써놓고 이건 누가 가져가야하지? 즉 문맥을 먼저 작성하고 각책임을 할당해줘라라고 이해된다.) 메세지가 객체를 선택하게 해야 한다.("메세지를 전송해야 하는데 누구에게 전송하지?") 데이터 중심으로 작성하게 되면 캡슐화를 신경쓰면서 해야됨 누굴 인터페이..
설계 품질과 트레이드오프 역할은 책임의 집합이기 때문에(나는 해당역할에 여러 객체들이 교체될 수 있어 각 객체들의 추상화가 책임인줄알았는데..?) 설계는 변경을 위해 존재하고 변경에는 어떤 식으로든 비용이 발생한다. 훌륭한 설계는 합리적인 비용안에서 변경을 수용할 수 있는 구조를 만드는 것이다. 객체의 상태가 아닌 행동에 초점을 맞춰라? 데이터 중심의 관점에서 객체는 자신이 포함하고 있는 데이터를 조작하는데 필요한 오퍼레이션을 정의한다. 책임 중심의 관점에서 객체는 다른 객체가 요청할 수 있는 오퍼레이션을 위해 필요한 상태를 보관한다. 캡슐화 상태와 행동을 하나의 객체 안에 모으는 이유는 객체의 내부 구현을 외부로부터 감추기 위해서다. 여기서 구현이란 나중에 변경될 가능성이 높은 어떤 것을 가리킨다. 객..