git branch 가져오기
2022. 5. 10. 21:48
개발 지식/Memo
single-branch 를 통해 clone 한 경우 브랜치를 추가로 가져올 경우 아래 명령어를 입력 git remote set-branches --add origin 브랜치명 git fetch origin git checkout --track origin/브랜치명 https://velog.io/@burningjeong/fatal-originmain-is-not-a-commit-and-a-branch-main-cannot-be-created-from-it
JPA 기초 정리
2022. 5. 2. 23:15
개발 지식/JPA
연관관계 맵핑 toString(), lombok 무한 루프 주의 ex) Team - Member 연관관계가 있을 경우 Team.getMember.toString -> Member.getTeam.toString -> Team.getMember.toString -> Member.getTeam.toString -> Team.getMember.toString -> Member.getTeam.toString -> Team.getMember.toString -> Member.getTeam.toString -> 무한 반복됨 Json 생성 라이브러리 Controller에서 Entity 절대 반환 금지 무한루프 발생 가능성 엔티티 변경 시 API의 스펙 자체가 변경되어버림 (단순 값만 있는 DTO 변환 후 반환하는 방법..
Java8 실습 - Lamda, Stream, Optional
2022. 4. 7. 22:18
개발 교육/플레이그라운드 with TDD, 클린코드
람다 람다(lambda) 람다와 클로저 람다는 익명 함수의 다른 표현이다. 즉, 함수는 함수인데 이름이 없는 경우를 의미한다. Collection의 모든 값을 출력 // nextstep.fp.Lambda의 printAllOld method List numbers = Arrays.asList(1, 2, 3, 4, 5, 6); for (int number : numbers) { System.out.println(number); } 람다가 없던 시절 List numbers = Arrays.asList(1, 2, 3, 4, 5, 6); numbers.forEach(new Consumer() { public void accept(Integer value) { System.out.println(value); } }..
ngrok - 외부에서 사내 IP 환경 접속 시
2022. 3. 31. 21:13
개발 지식/Etc.
ngrok 로컬 환경으로 테스트 중에 외부 PC에서 테스트해야 하는 경우가 가끔 생긴다 보통 회사에서는 공유기를 사용하기 때문에 외부에서 테스트하기가 까다롭다 테스트 하나 잠깐하려고 포트포워딩을 할 수도 없고.. 공유기 설정 권한도 없고.. 이럴때 쓰기 좋은 프로그램 하나를 소개하고자 한다 https://ngrok.com/ ngrok - secure introspectable tunnels to localhost @Botto ngrok, probably the best tool I have started to use for my webwork since firebug also great support ngrok.com 외부에서 접속할 수 있는 주소를 생성해준다 사용법도 아주 간단해서 편리했다 로그인 후 ..
좌표계산기 구현 - 리팩토링 포함
2022. 3. 26. 18:19
개발 교육/플레이그라운드 with TDD, 클린코드
좌표계산기 구현 좌표계산기(선 길이) 기능 요구사항 사용자가 점에 대한 좌표 정보를 입력하는 메뉴를 구성한다. 좌표 정보는 괄호"(", ")"로 둘러쌓여 있으며 쉼표(,)로 x값과 y값을 구분한다. X, Y좌표 모두 최대 24까지만 입력할 수 있다. 입력 범위를 초과할 경우 에러 문구를 출력하고 다시 입력을 받는다. 정상적인 좌표값을 입력한 경우, 해당 좌표에 특수문자를 표시한다. 좌표값을 두 개 입력한 경우, 두 점을 있는 직선으로 가정한다. 좌표값과 좌표값 사이는 '-' 문자로 구분한다. 직선인 경우는 두 점 사이 거리를 계산해서 출력한다. 실행 결과 좌표를 입력하세요. (10,10)-(14,15) 두 점 사이 거리는 6.403124 좌표계산기(사각형 면적) 요구사항 좌표값을 두 개 입력한 경우, 두..
Factory Method 실습 - 연료 주입
2022. 3. 16. 22:30
개발 교육/플레이그라운드 with TDD, 클린코드
차량에 따른 연료 주입 실습 기능 요구사항 우리 회사는 렌터카를 운영하고 있다. 현재 보유하고 있는 차량은 Sonata 2대, Avante 1대, K5 2대로 총 5대의 차량을 보유하고 있다. 우리 회사는 고객이 인터넷으로부터 예약할 때 여행할 목적지의 대략적인 이동거리를 입력 받는다. 이 이동거리를 활용해 차량 별로 필요한 연료를 주입한다. 차량 별로 주입해야 할 연료량을 확인할 수 있는 보고서를 생성해야 한다. 각 차량별 연비는 다음과 같다. * Sonata : 10km/리터 * Avante : 15km/리터 * K5 : 13km/리터 프로그래밍 요구사항 - 1단계 상속과 추상 메소드를 활용한다. 위 요구사항을 if/else 절을 쓰지 않고 구현해야 한다. 이 요구사항을 만족하는 테스트 코드는 다음과..
자동차 경주 게임 구현 - 리팩토링 재시도
2022. 3. 14. 23:47
개발 교육/플레이그라운드 with TDD, 클린코드
자동차 경주 게임 다시 구현2 기능 요구사항 각 자동차에 이름을 부여할 수 있다. 자동차 이름은 5자를 초과할 수 없다. 전진하는 자동차를 출력할 때 자동차 이름을 같이 출력한다. 자동차 이름은 쉼표(,)를 기준으로 구분한다. 전진하는 조건은 0에서 9 사이에서 random 값을 구한 후 random 값이 4이상일 경우이다. 자동차 경주 게임을 완료한 후 누가 우승했는지를 알려준다. 우승자는 한명 이상일 수 있다. 실행 결과 위 요구사항에 따라 3대의 자동차가 5번 움직였을 경우 프로그램을 실행한 결과는 다음과 같다. 경주할 자동차 이름을 입력하세요(이름은 쉼표(,)를 기준으로 구분). pobi,crong,honux 시도할 회수는 몇회인가요? 5 실행 결과 pobi : - crong : - honux :..
자동차 경주 게임 구현
2022. 3. 12. 21:24
개발 교육/플레이그라운드 with TDD, 클린코드
자동차 경주 게임 기능 요구사항 각 자동차에 이름을 부여할 수 있다. 자동차 이름은 5자를 초과할 수 없다. 전진하는 자동차를 출력할 때 자동차 이름을 같이 출력한다. 자동차 이름은 쉼표(,)를 기준으로 구분한다. 전진하는 조건은 0에서 9 사이에서 random 값을 구한 후 random 값이 4이상일 경우이다. 자동차 경주 게임을 완료한 후 누가 우승했는지를 알려준다. 우승자는 한명 이상일 수 있다. 실행 결과 위 요구사항에 따라 3대의 자동차가 5번 움직였을 경우 프로그램을 실행한 결과는 다음과 같다. 경주할 자동차 이름을 입력하세요(이름은 쉼표(,)를 기준으로 구분). pobi,crong,honux 시도할 회수는 몇회인가요? 5 실행 결과 pobi : - crong : - honux : - pobi..
TDD/리팩토링 실습 - 문자열 덧셈 계산기
2022. 3. 9. 16:04
개발 교육/플레이그라운드 with TDD, 클린코드
문자열 덧셈 계산기 기능 요구사항 쉼표(,) 또는 콜론(:)을 구분자로 가지는 문자열을 전달하는 경우 구분자를 기준으로 분리한 각 숫자의 합을 반환 (예: “” => 0, "1,2" => 3, "1,2,3" => 6, “1,2:3” => 6) 앞의 기본 구분자(쉼표, 콜론)외에 커스텀 구분자를 지정할 수 있다. 커스텀 구분자는 문자열 앞부분의 “//”와 “\n” 사이에 위치하는 문자를 커스텀 구분자로 사용한다. 예를 들어 “//;\n1;2;3”과 같이 값을 입력할 경우 커스텀 구분자는 세미콜론(;)이며, 결과 값은 6이 반환되어야 한다. 문자열 계산기에 숫자 이외의 값 또는 음수를 전달하는 경우 RuntimeException 예외를 throw한다. 프로그래밍 요구사항 indent(들여쓰기) depth를 ..
숫자야구게임 다시 구현 - 피드백 적용 후
2022. 3. 6. 18:18
개발 교육/플레이그라운드 with TDD, 클린코드
숫자야구게임 다시 구현 다시 재정비하는 마음으로 TDD에 대해서 정리부터 시작 1. TDD를 하는 이유 1. 디버깅 시간을 줄여준다 2. 동작하는 문서 역할을 한다 3. 변화에 대한 두려움을 줄여준다 2. TDD 사이클 1. 실패하는 테스트를 구현한다 2. 테스트가 성공하도록 프로덕션 코드를 구현한다 3. 프로덕션 코드와 테스트 코드를 리팩토링 한다 3. TDD 원칙 1. 실패하는 단위 테스트를 작성할 때 까지 프로덕션 코드를 작성하지 않는다 2. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다 3. 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다 다시 초기화하고 새로 코드를 짰음 1. Ball 객체 - Ball.java import java.util.ArrayLi..