공부하고 기록하는, 경제학과 출신 개발자의 노트

분류 전체보기 499

[Design Pattern] Decorator

Decorator 객체 결합으로 기능을 동적으로 유연하게 확장할 수 있게 하는 패턴. 기본 기능에 추가할 수 있는 기능 종류가 많은 경우, 각 추가 기능을 Decorator 클래스로 정의한 뒤 필요한 Decorator 객체를 조합하는 식으로 설계함 상속을 통해 확장할 수도 있지만, 디자인 유연성 면에서 상속은 비추천 기존 코드를 수정하지 않고도 확장할 수 있도록 Decorator 패턴 사용 ex) 자바 입출력의 Filter Stream 기능. 단점 자잘한 객체가 많이 추가되므로, Decorator 패턴을 너무 많이 사용할 경우 코드가 필요 이상으로 복잡해질 수 있다. Component를 초기화하기 위한 코드가 복잡해진다. Decorator로 Wrapping해야 하는 경우가 종종 생김. 따라서 보통 Fac..

빅데이터를 활용한 예측마케팅 전략

데이터로 마케팅하는 방법과 전략의 큰 틀’만’ 제공하는 책. 데이터 리터러시가 없는 회사가 ‘측정하고 반응할 줄 아는 기업’을 추구한다면 괜찮게 볼 만한 지침서 2014년에 발간된 책이라서 그런지, “예측”가능성을 지나치게 낙관하고 있다. 201217 장단점이 정말 뚜렷한 책이다. 장점 마케팅 전략에 데이터를 활용하고 싶다면, 어떤 철학을 토대로 전략을 세워야 하는지 명확한 메시지를 전달한다. “고객을 파악하고, 고객이 만들어낼 현금흐름을 예측하며, 더 오래도록 현금흐름을 만들어낼 수 있는 방법을 탐구한다.” 즉 마케팅에서 데이터를 활용해서 해결해야 하는 과제는 , , 세 가지가 기본이다. 여기에 ‘특정 고객 클러스터 (ex) 할인에 민감하게 반응하는 고객군) 에게는 어떤 프로모션을 어떤 방식으로 고객에..

세줄요약 독서 2020.12.21

KubeCon 2018 - Rightsize Your Pods with Vertical Pod Autoscaling

https://youtu.be/Y4vnYaqhS74?si=gMsGSJ4ruJawJJPd Beata Skiba. Software Engineer @ Google, working on Kubernetes Autoscaling 발표자료: https://kccna18.sched.com/event/GrYe/rightsize-your-pods-with-vertical-pod-autoscaling-beata-skiba-google k8s 리소스 배포하는 방법은 아주 쉽다. resource request를 정의하면 됨. 그런데 적절한 request 수치는 어느 정도인가? resource request는 k8s scheduler와 workload 간 일종의 '계약'이다. workload는 resource request만..

[Design Pattern] Adapter

Adapter Pattern 한 클래스의 인터페이스를, 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환하는 역할. 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스를 연결하는 역할. 이미 제공되어 있는 것 / 필요한 것 사이의 차이를 없앤다고 보면 된다 Wrapper 패턴이라고도 불림. 다른 용도로 사용할 수 있도록 변경해주는 개념 두 가지 종류가 있다. Class 기반 Adapter (상속을 사용한 방법) Instance 기반 Adapter (위임을 사용한 방법) 기존의 클래스를 개조해서 필요한 클래스를 생성하는 방법. 일반적으로 기존의 클래스 == "잘 만들어졌고, 버그가 발생하지 않는다는 걸 오랜 시간 사용하며 증명한 코드". 이 클래스를 더 많은 곳에서 다양한 방식으로 사용하기 위해 고..

[Design Pattern] Observer

Observer 패턴 한 객체의 상태가 바뀌면, 해당 객체에 의존하는 다른 모든 객체에게 notice 전송 + 자동으로 내용이 갱신되는 one to many 방식의 의존성을 정의한 객체. Subject 객체의 bCheck 변수 - 해당 객체가 변경되었는지 여부를 알리는 boolean. bCheck가 false이면, Subject 객체에 의존하는 Observer 객체에게 값 변경이 있음을 알린다. Observer 객체는 update() 메소드로 Subject값이 어떻게 변경되었는지 확인하고, 변경된 값에 대응되는 메소드를 실행한다. 자바의 Observer 내장패턴 사용하기 Push방식, Pull방식 모두 사용가능함. java.util.Observer 인터페이스 구현 후 Observable 객체의 addOb..

[Design Pattern] Builder

Builder 패턴 객체 생성 시 흔히 사용되는 패턴. Dot chain 문법이라고도 부른다. 빌더 패턴을 다루는 두 가지 설명 GoF Design Pattern: 객체의 생성 / 조립 방법을 분리할 목적 Effective Java의 builder Pattern GoF의 패턴보다는 좀 더 코딩위주의 활용법. 코드 가독성 / 유지보수성을 위해 빌더 패턴을 권장함 객체 일관성, 불변성 (변경불가능) 등의 특징을 강조 규칙, 생성자 인자가 많을 경우 builder 패턴을 권장하는 편. effecitve java의 builder pattern은 깔끔하고 유연하게 객체를 생성하기 위한 기법. @Getter @Setter @AllArgsConstructor // 생성자에서 특정 필드만 제거한 채 구현하려면, 그만큼..

[Design Pattern] FlyWeight

FlyWeight 패턴 생성 비용이 큰 객체를 공통으로 사용할 수 있도록 만드는 패턴. 중복 생성될 가능성이 높은 객체 동일한 리소스가 자주 사용될 가능성이 높다는 의미이므로, 공통자원 형태로 관리하는 편이 효율적이다 생성비용은 크지만 사용빈도는 낮은 객체 이런 경우 매리 객체를 생성해두는 건 낭비. 요청이 있을 때에만 생성해서 제공한다. FlyWeight 패턴은 위 두 가지 목적을 위해 존재함. 객체 생성을 담당하는 Factory 역할과 객체 관리 역할을 분리하는 편이 유용한 경우도 있으나, 일반적으로는 역할의 크기가 크게 다르지 않으므로 하나의 클래스 안에 있어도 무방하다. 장점 많은 객체를 생성할 때 생성시간 / 메모리소모를 줄일 수 있음 state pattern과 결합이 용이함 단점 개별 설정이 ..

그렇게 물어보면 원하는 답을 들을 수 없습니다

설득의 심리학 / Start with Why / 어떻게 원하는 것을 얻는가. 세 가지 책의 한국 직장인 버전 좋은 질문은 지식 획득의 수단일 뿐만 아니라, 설득과 관계 형성에도 큰 역할을 한다 좋은 질문의 실 예시와 놓칠 수 있는 디테일까지 정리한, 좋은 질문 입문서 올바른 질문의 출발은 겸손한 마음과 상대 존중이다. 201212 로버트 치알디니의 , 사이먼 사이넥의 , 스튜어트 다이아몬드의 책의 핵심 내용을 한국 평균 직장인 눈높이에 맞게 소화해서 떠먹여주는, 매우 친절한 책이었다. 조직문화를 위한 경영서이면서도 일반 직장인을 위한 실용서. 조직 컨설턴트로 일하는 저자는 많은 기업의 조직문화를 컨설팅하면서 질문의 부재, 소통의 오류 문제를 다루었다. 생각한 바를 명확히 표현하지 못하는 조직이 어떤 문제..

세줄요약 독서 2020.12.14

[Design Pattern] Singleton

SingleTon 객체가 많아지면 리소스 사용이 많아지고, 리소스가 많으면 프로그램 전체 속도가 떨어진다. -> 생성할 수 있는 객체의 최대 개수를 제한할 필요가 생김 Singleton 패턴: 객체 생성을 단 한번만 허용하는 패턴. 객체의 생성개수 제한이라는 조건이, 객체를 활용하려는 쪽에서 일일이 신경쓰지 않아도 되도록 하는 게 핵심. 용례 DB Connection Pool Log Writer ... @Getter public class Database { private static Database singleton; private String name; // getInstance()로 객체 불러오기. // 객체가 없을 경우 singleton 변수에 새 인스턴스를 할당하고, // 있으면 해당 객체를 그..

OAuth 정리

OAuth 데이터를 간편하고 안전하게 주고받기 위한 표준. ID와 비밀번호 대신 Access Token으로 사용자를 식별한다. 토큰은 API를 제공하는 리소스 서버만 발급할 수 있으며, 일정시간이 지나면 폐기할 수 있다. 토큰마다 필요한 권한만 부여할 수 있으므로, 서버가 클라이언트의 접근권한을 쉽게 제어할 수 있다. ex) 페이스북 API를 사용하는 모바일 앱의 경우 Read Only 권한을 지닌 Access Token을 생성할 수 있다. 모바일 앱이 페이스북 인증을 지원할 때 이 토큰만 발급받는다면, 해당 모바일 앱 사용자는 페이스북에 글을 게시할 수 없다. 사용자 ID와 비밀번호가 필요하지 않다. 페이스북 페이지에서 로그인하면, 페이스북 측에서 해당 모바일 앱에 사용자가 승인한 권한만 있는 토큰을 ..