[Error] Google Maps JavaScript API error: RefererNotAllowedMapError 도메인을 변경한 후 Google Map이 안 불러와지는 문제가 생겼다.허용할 도메인을 추가해줘서 해결했다 ! Google Maps JavaScript API error: RefererNotAllowedMapErrorhttps://console.cloud.google.com/google/maps-apis/api-list?project=quick-weft-457812-u6Maps JavaScript API에 들어간다. 웹사이트를 추가해준다. Web 2026.05.09
Spotless로 백엔드 코드 포맷팅 자동화하기 플러그인 추가id 'com.diffplug.spotless' version "8.2.1"Gradle을 사용하고 있고, https://plugins.gradle.org/ 를 참고하면 된다.build.gradle에 Spotless 설정spotless { java { target("**/*.java") targetExclude("**/SecurityConfig.java", "**/SwaggerConfiguration.java", "**/generated/**") googleJavaFormat().aosp() // 구글 자바 포맷 적용 importOrder('java|javax|jakarta', 'org.springframework', '', 'org.junit|org.mockito', '\\#', '.. Framework/Spring Boot 2026.01.31
[Error] org.gradle.api.internal.tasks.testing.TestSuiteExecutionException: Could not complete execution for Gradle Test Executor 8. org.gradle.api.internal.tasks.testing.TestSuiteExecutionException: Could not complete execution for Gradle Test Executor 8.Caused by: org.junit.platform.commons.JUnitException: TestEngine with ID 'junit-jupiter' failed to discover testsCaused by: java.lang.NoClassDefFoundError: org/junit/jupiter/api/io/CleanupModeCaused by: java.lang.ClassNotFoundException: org.junit.jupiter.api.io.CleanupMode 공.. Test/Junit 2025.05.09
[Error] No connection established MySQL Workbench를 접속하니 No connection established가 떴다.MySQL Server가 설치되어있지 않다는 것을 알았다.MySQL Installer를 통해 MySQL Server를 설치해서 해결했다.설치 후에도 안 된다면, 서버를 켜야한다. 작업 관리자 > 서비스에서 MySQL을 검색하고 상태가 실행 중인지 확인한다.종료된 상태라면 오른쪽 마우스를 클릭해서 '시작'해주면 된다. DB/MySQL 2025.04.26
Factory Pattern을 적용한 리팩토링 두 가지 방법 중에서 고민하다가 첫 번째 방법으로 구현했다.첫 번째 방법이 코드가 더 깔끔하다. 🧶 리팩토링 전status 종류가 더 늘어날 경우 변경에 취약하다.public Object getFundingList(String status) { Object result = null; switch (status) { case "progress": result = fundingRepository.getProgressRanking(); break; case "request": result = fundingRepository.getRequestRanking(); .. JAVA 2024.09.03
설계 품질과 트레이드오프 | 책임 할당하기 | 메시지와 인터페이스 조영호의 '오브젝트'를 읽고 알게 된 내용을 정리한다 😊4장. 설계 품질과 트레이드오프🌈 TIL객체지향설계는 올바른 객체에게 올바른 책임을 할당하는 것이다. 이를 통해 낮은 결합도와 높은 응집도를 가진 구조를 만들 수 있다.응집도는 모듈에 포함된 내부 요소들이 연관되어있는 정도다.결합도는 의존성의 정도다.캡슐화를 지키면 응집도는 높아지며 결합도는 낮아진다.데이터 중심의 설계는 캡슐화 위반, 높은 결합도, 낮은 응집도의 문제가 있을 가능성이 높다.접근자와 수정자 메서드를 사용하는 게 캡슐화를 한다고 생각했는데 아니라는 것을 알았다. 속성의 가시성을 private로 설정했다고 해도 접근자와 수정자를 통해 속성을 외부로 제공하면 캡슐화를 위반한 것이다.추측에 의한 설계전략(design-by-guessing.. JAVA 2024.08.25
could not create task ':funding:generatequerydslproto'. 🐛 문제 상황funding 모듈이 빌드가 되지 않고, 아래와 같이 funding만 Tasks도 뜨지 않았다.검색해도 해결방법이 나오지 않았다. Could not create task ':funding:generateQuerydslProto'.Invalid state: INIT* Try:> Run with --info or --debug option to get more log output.> Run with --scan to get full insights.* Exception is:com.intellij.openapi.externalSystem.model.ExternalSystemException: Could not create task ':funding:generateQuerydslProto'.In.. IDE/Intellij 2024.08.10
[Ubuntu] MySQL 자동 백업 설정 🧀 폴더 생성 및 권한 수정755는 앞자리 수부터 사용자, 그룹, 다른 사용자를 의미한다.7은 사용자에게 읽기(r), 쓰기(w), 실행(x) 권한을 준다.그룹과 다른 사용자에게는 읽기(r), 실행(x) 권한을 준다.mkdir db_backupchmod 755 db_backup drwxr-xr-x디렉토리읽기(4)쓰기(2)실행(1)읽기(4)0실행(1)읽기(4)0실행(1) 🍍 스크립트 파일 생성 및 작성백업 파일명은 년도, 달, 일, 시, 분, 초가 들어가게 했다.위에서 생성한 폴더 아래에 백업된 파일이 생성된다.백업 파일이 생성된지 14일이 지나면 그 파일은 삭제된다.-p와 {비밀번호} 사이에 공백이 있으면 안 된다.스크립트를 작성한 후 sh {스크립트 파일명}으로 실행해보는 게 좋다. 권한 문제가 .. Linux 2024.07.23
이상한 나라의 객체 | 역할, 책임, 협력 요즘 가장 관심 있는 분야는 객체지향 설계다.최근에 했던 프로젝트를 리팩토링 하면서 디자인 패턴을 적용하여 문제도 해결하고 있다.리팩토링을 하는 것도 좋지만, 만약에 프로젝트 초기로 돌아간다면 좋은 객체지향 설계를 하는 것에 집중할 것 같다.이번 기회에 어쩌면 잘못 이해하고 있었을 수 있었던 객체지향 설계에 대해 제대로 알고 싶었다.이 책은 ' 객체지향의 사실과 오해'의 저자로 유명하신 조영호님이 쓰셨다.예전에 '객체지향의 사실과 오해'는 조금 읽다가 이해하기 어려워서 다 읽지 못했었다. 🥹'오브젝트'는 목차랑 내용을 살펴보니 예제도 많고 이해하기 쉬울 것 같아서 구입했다.'오브젝트'를 다 읽으면 '객체지향의 사실과 오해'도 읽을 예정이다. 😁알게 된 내용은 프로젝트에도 적용해야지!!! 2장. 이상.. JAVA 2024.07.15
Facade Pattern 한 서비스에서 여러 레포지토리를 참조하고 있는 게 서비스 입장에서 과도한 책임을 가지게 된다는 것을 알게 되었다.이를 해결하기 위해 디자인 패턴 중 하나인 Facade Pattern을 적용하였다. 🍗 Facade Pattern 적용 후 PaymentServiceFacade Pattern을 적용한 후 PaymentFacadeRepository클래스만 참조하면 되기 때문에 책임이 줄어들었다.Interface를 만들지 고민했는데 기능을 확장할 가능성이 없으면, 구현체를 사용하는 것만으로 충분하다고 생각했다.@Slf4j@Service@RequiredArgsConstructorpublic class PaymentService { private final PaymentsConfirmClient payme.. JAVA 2024.07.03