목록전체 글 (73)
개발 기록
* 행동 패턴 : 클래스와 객체들이 상호작용하는 방법과 역할을 분담하는 방법을 다루는 패턴■0. 개요 상황 1: 길동이는 제품이 입고 됬는지 확인하기위해 매번 가게에 방문한다. 가게 사장님은 무의미한 발걸음을 하는 불쌍한 길동이를 위해 제품이 입고 됬을 때 안내 메일을 발송해 주기로 했다. 상황 2: 가게 사장님은 길동이뿐만 아니라 입고에 관심없는 고객에게까지 입고 메일을 발송해서 고객들을 화나게 했다. 여기서 사장님은 선택해야 할 것은 두가지이다. 고객들을 화나게 하면서까지 길동이에게 메일을 발송해야할지, 아니면 길동이가 헛걸음 하게 냅둘지 말이다. 둘다 좋은 선택은 아닌 것같다. 그러면 이 상황을 어떻게 해결할 수 있을까? 바로 구독 매커니즘을 가진 옵저버 패턴을 활용하는 것이다. ★구독 매..
인터페이스(interface) 는 객체 지향프로그래밍의 핵심인 추상화(abstraction)와 다형성(polymorphism)을 구현하는 도구이며 인터페이스를 구현한 클래스들은 인터페이스에 정의된 모든 메서드를 반드시 구현해야 한다. 근데 내부에 메서드도! 필드도! 아무것도 없는! 말 그대로 빈 껍데기 인터페이스가 있다. 이게 무슨 말일까? 아래의 설명을 봐보자!■1. 개념 마커 인터페이스는 내부에 메서드나 상수가 없는 인터페이스이며 태깅 인터페이스라고도 한다. 내부가 비어있기 때문에 존재의 의미를 의심할 수 있지만, 마커 인터페이스는 해당 인터페이스를 구현하는 클래스가 특정한 타입이나 기능을 갖추었음을 나타내는 데 사용한다. 이러한 인터페이스의 주된 목적은 컴파일러나 런타임 시에 클래스에 대한 정보를 ..
AWS EC2 프리티어 이용중 메모리가 부족하여 build를 실패하는 상황이 생겼다. 이럴때 SWAP 메모리를 활용하면 메모리 부족문제를 임시로 해결할 수 있다. (실제로는 메모리를 추가하는 것이 성능에 좋다.) ■1. 가상 메모리와 SWAP 메모리 개념 ▶ 가상 메모리란가상 메모리 메모리 관리 기법의 하나로, 컴퓨터 시스템에 실제로 이용 가능한 기억 자원을 이상적으로 추상화하여 사용자들에게 매우 큰 메모리로 보이게 만드는 것을 말한다. 각 프로그램에 실제 메모리 주소가 아닌 가상의 메모리 주소를 주는 방식이다. 가상 주소 공간은 메모리 관리 장치(MMU)에 의해서 물리 주소로 변환된다. 가상 메모리는 활성 RAM과 DASD 상의 비활성 메모리로 결합되어 있다.▶ SWAP 메모리란실제 메모리 RAM이..
* 생성 패턴 : 객체 인스턴스를 생성하는 패턴으로, 클라이언트와 생성하고자 하는 객체 인스턴스 사이의 연결을 끊어 주는 패턴이다. ■1. 팩토리 메서드 패턴 개념 (1) 개념Factory 클래스를 사용하여 객체를 생성한다. Factory 클래스내의 추상메소드는 new연산자를 통해 객체를 생성하고 반환한다. 즉 Clinet 는 직접 객체를 생성하지 않고, 객체 생성을 담당하는 공장(Factory) 클래스를 이용하여 객체를 생성한다.어떤 객체를 생성할지는 Factory 클래스를 상속받는 자식 클래스들이 결정하기 때문에 특정 유형에 국한 되지않고 다양한 유형의 객체를 생성할 수 있다. * 예를 들어 제품 기능 관리 프로그램을 개발 한다고 했을 때, 첫 번째 버전에서는 A기능을 하는 제품이 AA 가 유..
문제: 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성 ■ 1. 문제 분석 (1) 문제 설명* 팩토리얼(factorial): 양의 정수 n에 대해 그 수보다 작거나 같은 모든 양의 정수의 곱을 의미한다. 자연수의 계승이라고 한다. 기호는 느낌표(!)를 쓴다. 예를 들어, n의 팩토리얼은 n!로 나타낸다.* ex) 4!=4×3×2×1=24 (2) 입출력 예시▶ 입력 예시:첫째 줄에 N!을 출력한다.10 ▶ 출력 예시3628800 ■ 2. 문제 풀이(1) 방법 1 " 반복문 이용 " public void solution2() { Scanner in = new Scanner(System.in); int N = in.nextInt(); ..
■1. Github Webhook 생성 ※ Webhook특정 이벤트 발생했을 때 다른 서비스나 응용프로그램으로 알림을 보내는 기능※ GitHub Webhook 웹훅은 GitHub에서 특정 이벤트가 발생할 때마다 외부 웹 서버에 알림을 전달하는 방법 ☞ Github Repository -> Settings -> Webhooks -> Add Webhook ① Payload URL : 페이로드를 수신하는 URL - [Jenkins Server URL]:[Jenkins Server 포트]/github-webhook/ ② Content type 페이로드를 수신할 데이터 형식 선택- application/json : 페이로드를 POST Request Body 에 담아 전달한다. ( {key: value} )..
■1. Jenkins 접속 (1) {EC2 IP 또는 도메인}:8080 접속* ec2 의 경우 방화벽 인바운드 규칙에 젠킨스 port 를 추가해야지 접속이 가능하다. * 젠킨스는 기본적으로 8080 포트로 지정 되어 있는데, 8080 포트는 겹치는 경우가 많아서 변경해주어야 한다.Jenkins가 설치된 서버에서 아래 명령어로 설정 파일을 열고 JENKINS_PORT 값을 수정한다.# jenkins config 열기sudo vim /etc/sysconfig/jenkins /var/jenkins_home/secrets/initialAdminPassword 경로에 가면 젠킨스 비밀번호를 확인 할 수있다. # 젠킨스 컨테이너 접속docker exec -it 컨테이너_ID 또는 컨테이너_이름 /bin/..
CI(빌드/테스트 자동화) 서버로 jenkins 이미지를 Docker 에서 컨테이너로 실행시키고 있을 때, CD(배포 자동) 를 위해 젠킨스 컨테이너에서 도커 데몬을 제어해야 하는데 Jenkins 이미지에는 Docker 가 설치되지 않기 때문에 불가하다. 이때 DOOD, DIND 방법으로 Jenkins 컨테이너에서 내부에서 Docker 데몬을 실행시키는 방법이 있다. ☞ DIND (DOCKER IN DOCKER)① Docker 가 설치된 Jenkins 이미지 빌드② DIND 이미지를 실행하고 해당 TCP 소켓을 Jenkins 컨테이너에 노출 (젠킨스 공식문서에 나와있는 방법) ☞ DOOD (DOCKER OUT DOCKER)① Host Docker Unix 소켓을 Jenkins 컨테이너에 마운트 ■..