전체 글

private 생성자나 열거 타입으로 싱글턴임을 보증하라 - [2장 객체 생성과 파괴(아이템3)]
해당 장에서는 싱글턴을 만드는 방식을 소개하고 있다. private 생성자를 이용하는 2가지 방식과 열거 타입을 이용하는 1가지 방식, 총 3가지 방식을 소개하고 있다. 각각의 장점과 단점에 대해서 알아보자. 1. 'private 생성자 + public static final 필드'를 이용하는 방법 public class Elvis{ /** * 싱글톤 오브젝트 */ public static final Elvis INSTANCE = new Elvis(); private Elvis(){} public void leaveTheBuilding(){ System.out.println("Whoa baby, I'm outta here!"); } public void sing(){ System.out.println("..

AWS를 활용한 초간단 배포 - 2
이전 글에서 1) EC2 생성 2) 보안 그룹 설정 3) RDS 생성 4) RDS 보안 그룹과 파라미터 그룹 설정을 알아보았다. 초간단 배포의 마지막 시간으로 5) PUTTY 설정 6) PUTTY에서 RDS연결 및 DB 생성 7) 프로젝트 설정 8) PUTTY에서 서버 작동시키기를 계속해서 알아보자. 5. PUTTY 설정 PUTTY에 접속하여 Connection - SSH - Auth로 이동한다. 그리고 Browse... 를 클릭하여 EC2 인스턴스를 생성하면서 다운로드한 ppk를 가져온다. 그리고 다시 Session으로 이동한다. Host Name에는 ec2-user@인스턴스의 퍼블릭IPv4 DNS를 입력하고, Saved Settings 부분에 ppk를 등록할 이름을 설정한다. 그리고 Save 클릭!!..

AWS를 활용한 초간단 배포 - 1
AWS의 EC2와 RDS를 활용하여 간단하게 서버를 배포하는 방법을 기록하고 공유하고자 한다. 오직 간단하게 배포를 하는 것에 초점을 두었기 때문에 보안 등에서 미흡한 부분이 많다. 그렇기 때문에 부족한 부분에 대해서 추가적으로 계속해서 공부를 하길 바란다.💪 배포는 아래의 8단계를 통하여 진행된다.(물론 이것은 내가 정한 단계이다.) '1단계 ~ 4단계'까지는 해당 글에서, '5단계~6단계'까지는 다음 글에서 다루어질 것이다. EC2 생성 보안 그룹 설정 RDS 생성 RDS 보안 그룹과 파라미터 그룹 설정 PUTTY 설정 PUTTY에서 RDS연결 및 DB 생성 프로젝트 설정 PUTTY에서 서버 작동시키기 🚩 AWS에서 지역이 '서울'이 맞는지 확인하고 시작하도록 하자. (로그인 후 오른쪽 위에서 확인 ..

생성자에게 매개변수가 많다면 빌더를 고려하라 - [2장 객체 생성과 파괴(아이템2)]
아래 코드처럼 생성자와 생성자의 파라미터가 많은 경우에는 어떻게 해야 할까? public class NutritionFacts{ // 필드(기본값이 있다면) 기본값으로 초기화된다. private final int servingSize; // (mL, 1회 제공량) - 필수 private final int servings; // (회, 총 n회 제공량) - 필수 private final int calories; // (1회 제공량당) - 선택 private final int fat; // (g/1회 제공량) - 선택 private final int sodium; // (mg/1회 제공량) - 선택 private fianl int carbohydrate; // (g/1회 제공량) - 선택 public Nut..

생성자 대신 정적 팩터리 메서드를 고려하라 - [2장 객체 생성과 파괴(아이템 1)]
이펙티브 자바를 통해 자바를 조금 더 깊게 공부해보고자 한다. 혼자서 읽고 정리하면서 공부하려고 했지만 생각보다 책이 어렵다. 그래서 백기선 님의 '이펙티브 자바 완벽 공략' 시리즈(총 5부) 강의를 들으면서 공부하려고 한다. 혹시나 해당 블로그에서 이해가 되지 않는 부분이 있다면 백기선 님의 강의를 적극 추천한다. '2장 객체 생성과 파괴'의 첫 번째 아이템으로 '생성자 대신 정적 팩터리 메서드를 고려하라'라는 것을 소개하고 있다. 클라이언트가 클래스의 인스턴스를 얻는 전통적인 수단으로 public 생성자를 이용하는 방법이 있지만 아래와 같이 정적 팩터리 메서드로도 클래스의 인스턴스를 얻을 수 있다. public class Order{ public static Order OrderByStaticFact..

프리코스 4주차(다리 건너기 미션) - 우아한 테크코스
1. 📃 미션 설명 4주 차의 미션은 '다리 건너기 게임'을 구현하는 것이다. 오징어 게임에 나오는 '유리 징검다리 건너기'를 기억한다면 쉽게 이해할 수 있다. 다리 건너기 게임의 기본적인 규칙은 아래와 같다. - 위아래 두 칸으로 이루어진 다리를 건너야 한다. - 다리는 왼쪽에서 오른쪽으로 건너야 한다. - 위아래 둘 중 하나의 칸만 건널 수 있다. - 다리의 길이를 숫자로 입력받고 생성한다. - 다리를 끝까지 건너면 게임이 종료되고, 다리를 건너다 실패하면 게임을 재시작하거나 종료할 수 있다. - 시각적으로 나타내면 아래와 같다. (다리 길이가 3인 경우) [ O | | ] [ | O | O ] 추가된 요구 사항은 아래와 같다. 함수(또는 메서드)의 길이가 10라인을 넘어가지 않도록 구현한다. 메서드..

프리코스 3주차(로또 미션) - 우아한 테크코스
1. 📃 미션 설명 3주 차의 미션은 '로또 게임'을 구현하는 것이다. 로또 게임의 기본적인 규칙은 아래와 같다. - 로또 번호의 숫자 범위는 1~45까지이다. - 1개의 로또를 발행할 때 중복되지 않는 6개의 숫자를 뽑는다. (로또 1장의 가격은 1,000원이다.) - 당첨 번호 추첨 시 중복되지 않는 숫자 6개와 보너스 번호 1개를 뽑는다. - 당첨은 1등부터 5등까지 있다. - 1등: 6개 번호 일치 / 2,000,000,000원 - 2등: 5개 번호 + 보너스 번호 일치 / 30,000,000원 - 3등: 5개 번호 일치 / 1,500,000원 - 4등: 4개 번호 일치 / 50,000원 - 5등: 3개 번호 일치 / 5,000원 - 사용자가 구매한 로또 번호와 당첨 번호를 비교하여 당첨 내역 및..

프리코스 2주차(숫자 야구 게임 미션) - 우아한 테크코스
1. 📃 미션 설명 2주 차의 미션은 '숫자 야구 게임'을 구현하는 것이다. 숫자 야구 게임의 기본적인 규칙은 아래와 같다. 기본적으로 1부터 9까지 서로 다른 수로 이루어진 3자리의 수를 맞추는 게임이다. 같은 수가 같은 자리에 있으면 스트라이크, 다른 자리에 있으면 볼, 같은 수가 전혀 없으면 낫싱이 되게 된다. 정답이 425인 경우를 생각해보자. 123을 제시하면 '1 스트라이크', 456을 제시하면 '1 볼 1 스트라이크', 789를 제시하면 '낫싱'을 얻게 된다. 이 같은 과정을 반복해 3개의 숫자를 모두 맞힌 경우(3 스트라이크)에 게임이 종료된다. 추가된 요구 사항은 아래와 같다. indent(인덴트, 들여 쓰기) depth를 3이 넘지 않도록 구현한다. (예를 들어 while문 안에 if문..

프리코스 1주차(온보딩 미션) - 우아한 테크코스
1. 📃 미션 설명 1주 차의 미션은 말 그대로 '온보딩'적인 성격이 강하다. (온보딩 = 새로운 직원이 조직에 잘 적응할 수 있도록 지식이나 기술을 교육하는 과정) '어떻게 미션을 진행하는지'와 '어떻게 미션을 제출하는지'를 기본적으로 배운다고 생각하면 될 거 같다. 미션에는 총 7가지 문제가 있었다. 문제들은 기본적인 알고리즘을 이용해서 푸는 방식이다. 2. 📢 공통 피드백 과제 마감기간(매주 화요일 23:59)이 끝나고 새로운 과제가 나오는 날(매주 수요일 15:00)에 피드백을 받을 수 있다. 각 개인에게 피드백을 주는 형식이 아닌 미션 제출자들에게 '공통 피드백'을 주는 형식으로 피드백이 이루어진다. 피드백을 받아보면 알겠지만 신기하게도 내 코드를 보고 공통 피드백을 만든 게 아닌가 싶을 정도로..