전체 글 94

[트러블 슈팅] 아웃소싱 프로젝트

1. 코드 구현 전 원활하고 구체적인 의사소통 필요1) 개요프로젝트 진행이 아직 미숙하여 초기에 팀원 간의 충분한 의사소통이 이루어지지 않아 프로젝트 진행 중에 기본 구조 및 코딩 규칙 등이 통일 되지 않았다. 이로 인해 코드 merge 후 여러 문제점 발생 2) 문제 상황기본 구조와 의존성 정의 X문제팀원이 각각 다른 방식으로 프로젝트의 기본 구조를 설계BaseEntity를 포함한 예외 처리 방식, 의존성 추가 등에 대한 사전 합의가 부족결과중복된 의존성이 추가됨 (ex. spring-boot-starter-validation 중복 추가)예외 처리가 전역 예외처리와 Service 계층에서 각각 처리되어 일관성 부족 및 혼란용어 정의 및 타입 불일치문제가게 주인과 관련된 용어를 각각 다르게 정의(Owne..

[TIL] HTTP 상태 코드 설계

1. 주제 선택팀원들과 프로젝트 S.A 설계를 완료한 후, 설계가 적합한지 확인하기 위해 튜터님께 피드백을 받았다. 이 과정에서 API 설계의 응답(response) 부분을 성공과 실패로 나눠 상태코드로 표현한 부분에 대해 긍정적인 평가를 받았고, 동시에 에러 상태를 조금 더 구체화하면 좋겠다는 제안과 함께 HTTP 상태코드 설계와 RESTful 여부에 대한 논의가 이루어졌다.피드백 후, 프로젝트 마감 기한이 짧아 팀원들과 깊이 논의할 시간이 충분하지 않아 혼자 고민해보고 정리하고자 이 주제를 선택하게 되었다. 2. 고민한 내용왜 RESTful한 상태 코드를 사용해야 하는가?RESTful하지 않은 설계는 어떤 상황에서 사용하는가?상태코드를 설계할 때 클라이언트를 고려한 방식은 어떤 것인가?만약 RESTf..

[프로그래머스/ 코딩테스트 연습문제] 크기가 작은 부분 문자열

Q. 크기가 작은 부분 문자열A.class Solution { public int solution(String t, String p) { int answer = 0; //p의 길이와 같은 부분 문자열을 찾아야하니까 p의 문자열 길이를 pLength로 선언 int pLength = p.length(); //문자열이 아닌 숫자로 비교하여 p가 크거나 같은 경우 횟수+1 long pValue = Long.parseLong(p); //t문자열에서 p와 같은 길이를 찾는거니까 t의 총 길이 - p의 길이까지 부분 문자열 탐색 for(int i=0; i

[TIL] 고객과 통화 연관관계로 환전요청 만들기

진행 날짜 : 2024.11.26 ~ 2024.11.29 프로젝트 요약 1. 프로젝트 목적RESTful API 설계 : Spring Boot와 JPA를 사용하여 CRUD API를 설계하고 구현데이터 검증 : Validation을 활용하여 입력값 검증 및 데이터 무결성 보장비즈니스 로직 분리 : 계층별 역할 분리를 통해 유지보수성 향상예외처리 : GlobalExceptionHandler를 통해 예외 처리 방식 학습JPQL 활용 : 데이터 조회 및 요약을 위한 JPQL 사용법 학습2. 프로젝트 구현 단계Lv0 : 프로젝트 설계API 명세서 작성 : postman 사용ERD 작성 SQL 작성Lv1 : 고객(User)과 통화(Currency) 복잡한 연관관계환전 요청 중간 테이블 생성필드 : 고객 고유 식별자,..

[트러블 슈팅] Spring 심화 개인과제

- 어떤 현상을 발견했는가?1. @RequestParam으로 Enum 값 처리 postman 오류 2. @NotNull과 Bean Validation이 작동하지 않음 3. @PostMapping 어노테이션 사용 불가 오류 4. Project JDK is not defined 이런 장애가 생길 수 있다는 것을 인지1. @RequestParam으로 Enum 값 처리 postman 오류-@RequestParam이 enum 타입 값을 처리하지 못하거나 올바르게 매핑되지 않으면 400 Bad Request 오류가 발생한다는 것을 인지-클라이언트가 enum 문자열 값을 정확히 전달하지 않거나, 서버가 enum을 변환하지 못할 시에 발생 2. @NotNull과 Bean Validation이 작동하지 않음-Dto에서 ..

[TIL] 뉴스피드 프로젝트

프로젝트 명 : 자주 취하지 않고 자취합니다.소개한 줄 정리 : 자취생들을 위한 꿀팁 모음집내용 : 자취생들의 생활에서 여러가지 꿀팁들을 공유하는 사이트진행 날짜 : 2024.11.19 ~ 2024.11.25 프로젝트 요약1. 프로젝트 목적협업 도구(Git & Github)를 사용하여 컨벤션 준수의 중요성 체득RESTful API 설계 및 JPA 기반 CRUD 구현Spring Boot와 JPA를 활용한 데이터 검증 및 인증/인가 로직 구현Cookie/Session을 활용한 인증 및 사용자 데이터 유효성 검증유지보수성이 높은 코드를 위한 비즈니스 로직 분리 및 예외처리2. 프로젝트 구현프로필 관리 : 사용자 프로필 CRUD, 비밀번호 변경, 본인확인 로직뉴스피드 게시물 관리 : 게시물 CRUD, 조회 시 ..

[프로그래머스/ 코딩테스트 연습문제] 이상한 문자 만들기

Q. 이상한 문자 만들기A1class Solution { public String solution(String s) { StringBuilder answer = new StringBuilder(); int start = 0; //문자열을 처음부터 끝까지 for문 반복으로 확인 for(int i=0; i 대문자 if((j-start) % 2 == 0){ answer.append(Character.toUpperCase(c)); //단어 내 홀수 인덱스 일 경우 -> 소문자 }else { ..

[트러블 슈팅] Spring 뉴스 피드 프로젝트

1. Git 충돌 해결1) 개요develop 브랜치에서 동시에 작업을 진행하면서 push, pull 하는 과정에서 다른 팀원이 작성한 내용을 pull로 가져올 때, 현재 작업하고 있던 내용과 충돌이 발생 2) 문제상황-모든 작업을 develop 브랜치에서 직접 진행을 하면서 문제가 생김-작업 중 서로 다른 파일을 수정하면서 충돌이 발생 3) 해결-작업을 개별 브랜치 feature에서 진행하도록 변경-작업 완료 후, 로컬에서 develop 브랜치로 병합하고, 충돌이 있다면 로컬에서 해결한 후에 git push-develop이 최신화되면 브랜치를 pull 받아 최신으로 유지하고 다시 feature에서 개발1. feature 브랜치 생성git checkout -b feature/2. 로컬에서 작업 후 병합gi..

[프로그래머스/ 코딩테스트 월간코드챌린지 시즌1] 3진법 뒤집기

Q. 3진법 뒤집기A.class Solution {    public int solution(int n) {//3진법으로 변환한 것을 문자열로 저장하기 위해서 str 선언        String str = "";        //3진법 변환//3으로 나눈 나머지 값을 저장하면 자연스럽게 거꾸로 저장됨//나머지를 문자열로 추가한 후에 다시 n에 3을 나눠서 몫으로 만들어줌//n이 0이 되기전까지 반복 = 3진법으로 변환되면 종료        while (n != 0){            str += n % 3;            n /= 3;        }        //문자열 str을 3진법으로 해석하여 10진법으로 변환        int answer = Integer.parseInt(str,..