spring-boot-devtools 라이브러리
2022. 6. 9. 15:39
개발 지식/Memo
spring-boot-devtools 라이브러리를 사용하면 캐시 삭제 등 개발 시 유용한 기능들을 제공한다 가장 대표적인 예로 thymeleaf 등 개발 시 동적 값을 변경할 경우 서버를 재시작해야하는데 devtools 를 사용하면 리컴파일로 간단하게 처리할 수 있다 gradle 기준으로 작성 dependencies { .... implementation 'org.springframework.boot:spring-boot-devtools' .... } 라이브러리 추가 후 th:text 부분의 문구를 변경했을 경우 기본 문구 다시 컴파일 후 새로고침을 하면 바로 적용되는 것을 확인할 수 있다!
클린코드 - 6.객체와 자료 구조
2022. 6. 5. 00:18
개발 서적/클린코드
1. 자료 추상화 public class Point { public double x; public doulbe y; } public interface Point { double getX(); double getY(); void setCartesian(double x, double y); double getR(); double getTheta(); void setPolar(double r, double theta); } 두 클래스를 비교해보자 2차원 점을 표현하는 클래스인데 위 클래스의 경우 외부로 모두 노출되지만, 아래 클래스의 경우 구현을 완전히 숨긴 형태이다 또한 접근 시 좌표값을 읽을 때 위 클래스의 경우 각각 개별적으로 읽게 되지만 아래 클래스의 경우 두 값을 동시에 설정해야한다 구현을 감추기 위..
클린코드 - 5.형식 맞추기
2022. 6. 4. 16:32
개발 서적/클린코드
1. 형식을 맞추는 목적 코드 형식은 의사소통의 일환이다. 의사소통은 전문 개발자의 일차적인 의무! 오늘 구현한 기능이 다음 버전에서 바뀔 확률은 아주 높다 처음 잡아 놓은 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다 2. 적절한 행 길이를 유지하라 일반적으로 큰 파일보다 작은 파일이 이해하기 쉽다 소스도 신문 기사처럼 위에서 아래로 읽으며 첫 문단에 전체 기사의 내용을 요약하고 아래로 읽어 내려가면서 날짜, 이름, 발언, 주장 등 세세한 사실 알게된다 빈 행을 넣어 개념을 분리해야 한다 예를 들어 메서드와 메서드 사이에 빈 행이 없다면 가독성이 굉장히 떨어질 것 이다 반대로 같은 개념의 코드라면 공백 없이 밀접한 상태로 코드를 작성하는 것이 더 이해하기 좋다 private..
클린코드 - 4.주석
2022. 6. 4. 16:12
개발 서적/클린코드
나쁜 코드에 주석을 달지 마라. 새로 짜라 - 브라이언 w. 커니핸, P.J.플라우거 1. 주석은 나쁜 코드를 보완하지 못한다 코드에 주석을 추가하는 일반적인 이유는 코드 품질이 나쁘기 때문이다. 코드를 작성하고 보니 짜임새가 엉망이고 알아보기 어렵다면 주석이 아니라 코드를 다시 정리해야 한다 주석으로 설명하기보다는 깔끔하고 정돈된 코드가 훨씬 보기 좋다 2. 코드로 의도를 표현하라! 코드만으로 의도를 설명하기 어려운 경우 메서드를 분리하여 표현할 수 있다 // 직원에게 복지 혜택을 받을 자격이 있는지 검사한다. if ((employee.flags & HOURLY_FLAG) && (employee.age > 65)) { ... } if (employee.isEligibleForFullBenefits())..
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 절을 쓰지 않고 구현해야 한다. 이 요구사항을 만족하는 테스트 코드는 다음과..