
H2 DB 최초 생성 시 not found 에러 처리
2022. 8. 9. 20:56
개발 지식/JPA
증상 H2 DB를 처음 생성하려고 하면 에러 메시지가 뜨면서 생성되지 않는다 만약 이 화면이 접근이 안된다면 주소창에 ip 주소를 localhost로 변경하면 된다 원인 JDBC URL은 원격 접근 주소이며, 아직 DB 파일이 생성 전이기 때문에 연결할 주소를 찾지 못하고 not found 에러가 발생한다 해결 방법 DB 원격 접근 주소: jdbc:h2:tcp://localhost/~/datajpa 파일 직접 접근 주소: jdbc:h2:~/datajpa 파일을 직접 접근하는 주소로 변경하면 파일이 생성되면서 접속된다 파일 주소를 직접 사용하게 되면 멀티로 연결이 안 되는 등 문제가 발생하기 때문에 접속 후 다시 원격 주소로 변경하고 접속하는 것을 권장한다

클린코드 - 10.클래스
2022. 8. 6. 19:14
개발 서적/클린코드
1. 클래스 체계 클래스를 정의하는 표준 자바 관례에 따르면, 가장 먼저 변수 목록이 나온다 static 상수 -> public 상수 -> private 변수 -> private 인스턴스 변수 -> public 변수 변수 목록 다음에는 public 함수가 나온다 private 함수는 자신을 호출하는 공개 함수 직후에 넣는다 즉, 추상화 단계가 순차적으로 내려간다 신문기사 처럼 읽혀야 한다 변수와 유틸리티 함수는 가능한 공개하지 않는 편이 좋다 비공개 상태를 유지할 방법을 강구하고, 캡슐화를 풀어주는 결정은 언제나 최후의 수단이다 2. 클래스는 작아야 한다! 단일 책임 원칙 클래스는 최대한 작게 만들어야 한다 '하나의 클래스는 하나의 책임만 가져야 한다 즉, 클래스나 모듈을 변경할 이유가 단 하나뿐이어야 ..

클린코드 - 9.단위 테스트
2022. 8. 6. 17:18
개발 서적/클린코드
1. TDD 법칙 세 가지 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다 위 세 가지 규칙을 따르면서 일하게 될 경우 매일 수십 개, 매달 수백 개, 매년 수천 개에 달하는 테스트 케이스가 나온다 이렇게 일하면 실제 코드를 사실상 전부 테스트하는 테스트 케이스가 나온다 하지만 실제 코드와 맞먹을 정도로 방대한 테스트 코드는 심각한 관리 문제를 유발하기도 한다 2. 깨끗한 테스트 코드 유지하기 '테스트는 유연성, 유지보수성, 재사용성을 제공' 테스트 코드를 깨끗하게 유지하지 않으면 결국은 잃어버린다그리고 테스트 케이스가 없으면 실제 코드를 유연하게 만드..

[Study] 2022/07/18
2022. 7. 30. 13:49
개발 서적/클린코드
참여인원 (2명) 본인 wony - https://youn12.tistory.com/ 스터디 진행 방식 - 1~9 챕터 각자 정리한 내용 발표 - 챕터 별로 기억에 남았던 내용 및 느낀 점 논의 - 해당 내용들과 관련된 경험 논의 기억에 남는 내용 - 주석 주석을 지양해야 하는 것은 맞지만 회사에서 팀 내 방침에 따라 조금씩 다를 수 있을 것 같다는 의견 레거시 코드 없는 회사는 찾기 힘듦.... 잘 정리되지 않은 코드들이 많다면 즉, 레거시 코드가 많은 경우 더 지키기 어려운 규칙이라는 생각 - 개행 처리 POSIX 표준에 따라 파일 끝에는 항상 개행을 추가한다 많은 시스템과 도구들이 이 표준을 따라 구현되어 있어서 지키지 않을 시 예기치 않은 동작이 일어날 수 있음 행의 끝(terminating)은 ..

9. 우아한 테크캠프 Pro를 마치며
2022. 7. 12. 19:10
개발 교육/우아한 테크캠프 Pro
마치며 이번 우아한 테크캠프 Pro 4기의 지원자는 400명 이상. 그중 60명을 선발하여 교육하기 때문에 경쟁률은 7:1 정도 되었다고 한다 지원했을 때는 '내가 뽑힐 수 있을까' 걱정을 했고, 처음 교육을 시작하기 전에는 '내가 수료할 수 있을까' 정말 많은 걱정을 했다 어렵게 시작한만큼 포기하지 않고 열심히 진행했고 결국 모든 교육 과정을 완료하여 수료자 명단에 들어갈 수 있었다 그것도 우수 수료생으로! 4기 기수의 수료율은 38/60 명으로 63% 였다 약 2달 동안 정말 많은걸 경험한 것 같다 이게 가능할까 싶을 정도로 많은 학습량을 요구했다 매일 새벽 늦게까지 공부해본 건 정말 오랜만이었던 것 같다 교육을 수료하고나서 코드 작성에 대한 자신감도 생겼고, 그러다 보니 재미도 붙은 것 같다 실제 ..

8. 안정적인 서비스 만들기
2022. 7. 12. 17:56
개발 교육/우아한 테크캠프 Pro
미션 후기미션을 통해 배운 점- Nginx 성능 개선 경험 - gzip 압축 - cache 사용 - TLS, HTTP/2 설정- was 성능 개선 경험 - redis 사용 - 비동기 처리- Nginx > 스케일 아웃 (with ASG) 교체 - Sprinboot: HTTP Cache, gzip 설정 - Launch Template 생성 - Auto Scaling Group 생성- 쿼리 인덱스 설계 경험 (execution plan 확인) 리팩터링 단계를 지나고 드디어 만난 마지막 미션!사실 처음엔 마지막 마무리는 좀 쉬어가는 미션이 될 것이라고 생각했다하지만 인프라는 항상 한번에 되는 꼴을 본적이...이번에도 역시 잘안풀려서 많이 고생했다리팩터링 미션으로 심신이 지칠 대로 지..

7. 레거시 코드 리팩터링
2022. 7. 12. 16:16
개발 교육/우아한 테크캠프 Pro
미션 후기 미션을 통해 배운 점 - mock을 통한 테스트 코드 활용 - 레거시 코드 리팩터링 경험 - DTO 활용 - 도메인 모델 Entity 작업 - 일급 컬렉션 작업 - DAO > Repository 교체 작업 - Service > domain 책임 리팩터링 - 의존성 리팩터링 경험 - 멀티 모듈 적용 방법 가장 힘들고 많은 고민을 하게 했던 미션이었다 대신 정말 정말 많은 걸 배웠던 미션이다 앞에서 진행했던 미션들을 응용해서 완성시키는 사실상 마지막 단계라고 봐도 무관할 것 같다 이번 미션을 통과하느냐 마느냐에 따라 수료가 결정된다고 할 정도로 어렵다고 미리 얘기를 들었었다 일단 이번 미션에서 테스트 코드의 진정한 쓰임새가 돋보이는 느낌이다 레거시 코드를 리팩터링하면서 코드를 보호하기 위해 moc..

6. 서비스 진단하기
2022. 7. 12. 15:13
개발 교육/우아한 테크캠프 Pro
미션 후기 미션을 통해 배운 점 - 웹 성능 측정 및 개선 - K6를 통한 부하 테스트 - grafana, cloudwatch를 통한 모니터링 - Nginx Access Log 설정 Jmeter와 NewRelic을 통해 부하 테스트를 하고 모니터링을 해본 경험이 있었다 (이전 글 참고: https://tong-dev.tistory.com/30?category=959546) 그때 부하테스트를 찾아보면서 K6, grafana를 들어본 적은 있었으나 사용해본 건 처음이었다 우선 두 개를 비교했을 때는 모니터링 툴은 느낌이 비슷했고 부하테스트 프로그램은 K6가 조금 더 편했던 것 같다 Jmeter가 그래픽 환경이라 편의성은 직관적이고 더 좋았지만 결과를 요약된 결과를 보거나 테스트를 돌릴 때 더 편했다 K6는 ..

5. 인수 테스트 기반 TDD
2022. 7. 11. 16:42
개발 교육/우아한 테크캠프 Pro
미션 후기 미션을 통해 배운 점 - 인수 테스트 기반 리팩터링 방법 학습 - 인수 테스트 기반 TDD 학습 - 주 생성자 지정하여 주 생성자 한 곳에서 인스턴스 변수 초기화 관리 - 인터페이스를 활용하여 외부 라이브러리 의존성 제거 3주 차 미션에서 인수 테스트(ATDD)에 대한 맛보기를 경험했다면 이번 미션은 조금 더 심화 과정의 느낌이었다 가장 중요한 포인트는 ATDD를 통해 코드를 보호하고 그 안에서 레거시 코드를 리팩터링 하는 경험을 하는 것이었다 확실히 인수 테스트의 장점은 느낄 수 있었다 사실 인수 테스트의 장점이라기보단 테스트 코드의 장점이기도 했지만 리팩터링 하다가 기능이 작동하지 않는 부분이 생기면 빠르게 캐치할 수 있었다 인수 테스트를 미리 작성하게 되면 가장 큰 장점은 '다음은 어떤 ..

4. 그럴듯한 서비스 만들기
2022. 7. 11. 15:37
개발 교육/우아한 테크캠프 Pro
미션 후기 미션을 통해 배운 점 - AWS 내부망/외부망 구축 방법 - 베스쳔 서버 활용 방법 - Nginx를 사용하여 Reverse Prox 구성 - 도커 기본 명령어 숙지 AWS에서 네트워크 망부터 구현해본 경험은 처음이라 많이 헤맨 것 같다 베스쳔 서버란 개념에 대해서도 처음 알게되었고 인프라 쪽은 비용 문제도 있고 해서 개인이 공부하기에는 어려운 부분이 있는데 AWS 계정도 지원해주고 너무 좋았다 (예전에 AWS 공부하려다가 20만 원 정도 날리고 계정 탈퇴했던 기억이...) 인프라 쪽은 항상 어려운 것 같다 문제가 생겨도 어느 부분이 잘못된 건지 찾기가 쉽지 않다..ㅜ 한 번에 되는 경우가 거의 없는 느낌 이번 미션을 진행하면서 가장 큰 복병이 있었는데 바로 집 네트워크 문제였다 AWS에서 네트..