전체 글
-
도커 컨테이너 실행하기BackEnd/도커 2021. 3. 7. 14:25
컨테이너 실행하기(run) > 웹 앱 실행하기 > mysql 에 워드프레스 설치하기 > 자주 사용하는 명령어 도커 실행 도커 허브를 켜야 도커 클라이언트를 사용할 수 있다. > cmd 에서 docker 명령을 하기 위해서는 로컬 pc 에 설치한 도커 허브를 시작해야한다. docker 라는 명령어를 통해 client 에서 server 로 명령을 전달할 수 있다. 컨테이너 실행하기 docker run [option] 이미지명:태그 [command] [arg..] * run 은 create + start 를 합친 명령어로, 명령어가 컨테이너를 생성, 실행함. - create 할 때 파일스냅샷을 컨테이너 하드디스크에 적재 - start 할 때 run 명령어를 컨테이너 실행 명령어로 적재 이미지가 cache 저장..
-
-
행위패턴 > 템플릿 메서드 *기타/디자인패턴 2021. 2. 12. 15:42
템플릿은 틀을 의미한다. 템플릿 메서드는 알고리즘의 틀을 만들기 위한 것이다. 템플릿 메서드 패턴에서는 알고리즘의 골격을 정의한다. 템플릿 메서드는 일련의 단계들로 알고리즘을 정의한 메서드를 의미한다. 여러 단계 중 일부는 서브 클래스에서 구현할 수 있다. 템플릿 메서드를 이용하면 알고리즘 구조는 유지하면서 서브클래스에서 특정 단계를 재정의할 수 있다. 커피와 차를 만드는 과정이 각각 아래와 같다. 커피 => 1.물을 끓인다. 2. 커피를 우린다. 3. 커피를 컵에 4. 설탕과 우유 추가 차 => 1.물을 끓인다. 2. 차를 우린다. 3. 차를 컵에 4. 레몬 추가 이 때 일반화를 통해 공통으로 사용 가능한 부분을 추상화한 클래스를 만든다. "1. 끓인다.", "3. 컵에"와 같은 완전히 동일한 행동이 ..
-
행위패턴 > 상태(State) *기타/디자인패턴 2021. 2. 12. 15:41
동일한 동작을 객체 상태에 따라 다르게 처리해야 할 때 사용. 일련의 규칙에 따라 객체의 상태(State)를 변화시켜, 객체가 할 수 있는 행위를 바꾸는 패턴이다. 이렇게 하나의 객체에 여러 가지 상태(예, 정지, 상승, 하강)가 존재할 때 패턴을 사용하지 않고 프로그래밍을 하면 if 문 또는 switch 문을 사용하여 처리한다. 그런데 신규 상태(예, 문 열림, 문 닫힘)가 발생하면 프로그램을 다시 수정해야 한다. 또는 상속을 통해 만든 클래스에 새로운 기능을 추가할 때 일부 하위 클래스에서는 신규 기능이 필요하지만, 일부 클래스와는 무관할 때는? 뽑기 기계를 예시로, 동전없음, 동전있음, 알맹이 매진, 알맹이 판매 라는 네개의 상태를 가지는 뽑기 기계가 있다고 하자. public class Gambl..
-
행위패턴 > 옵저버 *기타/디자인패턴 2021. 2. 12. 15:39
객체의 상태변화에 따라 다른 객체의 상태도 연동되도록 일대다 객체 의존 관계를 구성 데이터 변경이 발생했을 경우 상대 클래스나 객체에 의존하지 않으면서 데이터 변경을 통보하고자 할 때 유용 Subject 와 Observer 는 서로를 변수로 가지고 있는다. Observer 는 생성자에서 받은 subject 를 registerObserver(this)로 등록해두고, Subject 에서는 자신에게 변화가 있을 때 Observer notify 를 호출한다. push방식, poll 방식으로 구현할 수 있다. Product 에 상태에 변화가 생기면 Observer 에서 이를 감지하고 ProductDisplay 에게 알려준다. public class ObTest { public static void main(Str..
-
행위패턴 > 이터레이터 *기타/디자인패턴 2021. 2. 11. 15:19
객체를 컬렉션에 저장할 때는 배열, 스택, 해시테이블 등 장단점을 따져 적합한 컬렉션을 선택해 이용한다. 클라이언트에서 모든 객체들에 일일이 접근하는 작업을 하고자할 때, 어떤 식으로 저장했는지 노출하지 않으면서 접근할 수 있도록 하는 방법과 객체들로 구성된 슈퍼 컬렉션에 대해 알아본다. A 식당과 B 식당이 합병하기로 했는데 A 식당은 메뉴를 ArrayList 에 B식당은 배열에 저장한다. Waitress 는 메뉴를 출력하려면 배열과 리스트 각각의 순환문을 작성해야 한다. Waitress 가 구상클래스 MenuItem[] 과 ArrayList 에 직접 연결되어있다. public class Waitress { PancakeHouseMenu pancake; DinerMenu diner; public Wai..
-
행위패턴 > 커맨드 *기타/디자인패턴 2021. 2. 11. 10:14
Invoker 와 Command 의 생명주기 같음 ConcreateCommand 는 Command 의 일반화 Client 는 ConcreteCommand 를 의존 객체의 행위( 메서드)를 클래스로 만들어 캡슐화 하는 패턴 어떤 객체(A)에서 다른 객체(B)의 메서드를 실행하기 위해 객체(B)를 의존하는 것을 방지 또한 기능이 수정되거나 변경이 일어날 때 A 클래스 코드를 수정없이 기능에 대한 클래스를 정의하면 되므로 시스템이 확장성이 있으면서 유연해진다. Client 클래스 RemoteLoader 는 concreteCommand 를 생성하고 Receiver 를 생성한다. Receiver Light, Garage 는 요구 사항을 수행하기 위해 어떤 일을 해야 하는지 알고 있는 객체이다. ConcreteCo..
-
구조패턴 > 퍼싸드 *기타/디자인패턴 2021. 2. 11. 10:12
facade : 1(건물의) 정면[앞면] 2(실제와는 다른) 표면, 허울 퍼사드 패턴은 어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공하는 것을 말한다. 퍼사드에서 고수준 인터페이스를 제공하기 때문에 서브시스템을 더 쉽게 사용할 수 있다. 예를 들어 홈씨어터에 조명, 스크린, 프로젝트,dvd 기계들을 끄고 켜고 등 조작하는 행위들을 하는 여러 서브시스템을 가지고 있을 때, 그러한 여러 객체를 한 번에 호출하고 조작해주는 facade 객체를 생성하는 것이다. * 최소 지식 원칙 객체 사이의 상호작용은 될 수 있으면 아주 가까운 "친구" 사이에서만 허용하는 것이 좋다. 어떤 객체든 그 객체와 상호작용하는 클래스의 개수, 상호작용을 어떤식으로 하는 지에 주의를 기울여야 한다는 의미이다. 여..