Dev./Error. (14) 썸네일형 리스트형 [Error] MySQL 버전 충돌 (macOS/Homebrew) 예전에 공부용으로 homebrew로 설치된 mysql이 있었는데 이번에 예제 따라간다고 웹에서 MySQL 8.4 dmg를 추가 설치하면서 두 버전이 같은 포트와 데이터 디렉토리를 공유하며 지속된 충돌문제가 발생했다.발생된 로그로그설명Unable to lock ./ibdata1 error: 35InnoDB 데이터 파일(ibdata1)을 중복 프로세스가 잠그려 함Can't connect to local MySQL server through socket '/tmp/mysql.sock'이미 다른 인스턴스가 포트를 점유하거나 소켓 경로 다름Access denied for user 'root'@'localhost'root 인증 플러그인 꼬임 (caching_sha2_password ↔ mysql_native_pas.. [Error] JPA 양방향 연관관계에서 무한 루프문제 해결 문제단건 조회시 해당 엔티티에 딸린 댓글들을 가져올 때 엔티티를 그대로 반환하면서 무한 루프 문제가 발생했다.Todo와 Comment는 서로 양방향 연관관계로 연결되어있다. 원인@RestController는 반환값을 자동으로 JSON 직렬화한다고 한다. 그때 양방향 연관관계에서 Jackson이 Todo 객체를 JSON으로 변환하려 함Todo 내부의 comments를 직렬화하려 함각 Comment는 다시 todo를 가지고 있어서 Todo 직렬화 시도Todo → Comment → Todo → Comment … 🔁와 같은 순환문제가 발생한다. 즉, 객체가 서로를 참조하고 있어서 JSON 변환이 무한 루프에 빠지는 것해결해결방법은 여러가지가 있다고 하는데 나는 @JsonManagedReference / @Js.. [Error] 일정 트러블 슈팅 어려웠던 부분1.JPA 관계 설정ERD도 그려봤고 엔티티에도 다대일 일대다 양방향 관계 설정도 했다. 문제는 DTO. 사실 그냥 내 문제잘못된 설계Comment comment = new Comment( request.getContent(), request.getUsername(), request.getPassword(), request.getTodo() // ❌ request에서 Todo를 직접 받음);이건 request DTO에 Todo 엔티티가 직접 들어있다는 전제인데, 클라이언트는 Todo 엔티티 구조를 모름 Todo의 id만 알고있음DTO는 엔티티를 몰라야함!!또한 JPA가 관리하지 않는(영속되지 않은) Todo 객체가 들어가면 연관관계가 깨질 수 있음DTO는 단순히 데이.. [Error] 자바에서 객체의 동등성과 동일성 문제 상황 요약Cart 클래스에서 Map 구조로 장바구니 관리.MenuItem은 이름(name)과 가격(price)을 가진 단순한 객체.같은 메뉴 이름을 여러 번 담을 때 수량이 합쳐져야 하는데, 서로 다른 MenuItem 인스턴스로 인식되어 중복 저장되는 문제가 발생할 수 있음.MenuItem m1 = new MenuItem("Americano", 2000);MenuItem m2 = new MenuItem("Americano", 2000);cart.addCartItem(m1, 1);cart.addCartItem(m2, 1); // ❌ 중복 추가됨 원인 분석자바에서 HashMap은 Key를 비교할 때 동일성(==)이 아니라 동등성(equals)을 사용하지만 다음과 같은 두 단계가 필요하다hashCode() →.. [Error] 키오스크 트러블 슈팅 3 - 장바구니 구조 설계 [Error] 키오스크 트러블 슈팅 1 - 상태 패턴enum 상수과 switch문으로 관리하던 상태에서 상태 패턴 적용 해보는 것도 괜찮을 것 같다고 하셔서 검색 후 내 코드에 적용해 보았다. 기존에 키오스크 실질적인 기능을 담당하는 start() 메소드가devz0.tistory.com [Error] 키오스크 트러블 슈팅 2 -책임 분리이전 글에서 이어지는 내용 [Error] 키오스크 트러블 슈팅 1enum 상수과 switch문으로 관리하던 상태에서 상태 패턴 적용 해보는 것도 괜찮을 것 같다고 하셔서 검색 후 내 코드에 적용해 보았다. 기devz0.tistory.com오래되긴 했지만 API 만들어본 경험이 있어서 과제 로직 구현 자체는 어렵지 않았다. 객체 지향 적인 코드 흐름 문제 제외하고 가장 생.. [Error] 키오스크 트러블 슈팅 2 -책임 분리 이전 글에서 이어지는 내용 [Error] 키오스크 트러블 슈팅 1enum 상수과 switch문으로 관리하던 상태에서 상태 패턴 적용 해보는 것도 괜찮을 것 같다고 하셔서 검색 후 내 코드에 적용해 보았다. 기존에 키오스크 실질적인 기능을 담당하는 start() 메소드가devz0.tistory.com키오스크 프로그램을 작성하면서 상태패턴을 도입했다.Kiosk 클래스가 State를 관리하고, 각 상태(START, MAIN_MENU, SUB_MENU, CART, ORDER)는 사용자의 입력에 따라 다음 상태로 전이된다.초기 설계에서는 Kiosk 내부에서 상태 전이(currentState = State.MAIN_MENU)를 직접 수행했지만,점차 책임 분리의 중요성을 알게되며 로직을 수정하다 State와 Kios.. [Error] 키오스크 트러블 슈팅 1 - 상태 패턴 enum 상수과 switch문으로 관리하던 상태에서 상태 패턴 적용 해보는 것도 괜찮을 것 같다고 하셔서 검색 후 내 코드에 적용해 보았다. 기존에 키오스크 실질적인 기능을 담당하는 start() 메소드가 굉장히 길었는데 그 부분은 간략하게 생략되었지만 고려해봐야할 몇가지 문제가 생겼다. 그 과정을 정리해보려고 한다.목표기존 enum + switch 구조에서 상태 패턴(State Pattern)을 적용하여 Kiosk 클래스의 start 메소드 단순화 및 코드 재사용성 향상을 시도상태 패턴 적용 후 장점 start() 메소드가 간단해지고, 상태 전환 로직이 상태 객체로 분리됨.상태별 클래스(StartState, MainMenuState, ...)를 독립적으로 관리 가능 → 재사용성, 확장성 향상.새로운 .. [Error] 계산기 만들기 트러블 슈팅 기능 구상Level1. 클래스 없이 만드는 계산기양의 정수 2가지 , 사칙연산기호 한가지 입력양의정수는 각각 하나씩 입력, 정규식 검사 후 int 타입으로 변수에 저장사칙연산 기호는 char 타입으로 변수 저장연산 진행switch문을 사용해 각 연산자에 맞게 진행나눗셈 연산에서 두번째정수에 0이 입력될 경우 오류 출력exit 문자열 입력 전까지 계산 진행각각의 인풋값 입력단계에서도 exit 입력시 연산 끝낼 수 있도록 로직 작성각각의 계산이 종료될때도 exit 입력할 수 있도록 작성대소문자 관계없이 비교하는 String.equlsIgnoreCase를 발견해서 적용Level2. 객체 지향 계산기기능으로 클래스 분리 Calculator 클래스사칙연산 수행인풋값 입력시 검증 메소드결과값 반환, 연산 결과 리.. 이전 1 2 다음