목록분류 전체보기 (718)
쌓고 쌓다
Slf4j는 라이브러리 인터페이스이고, 그 구현체로 LogBack이 있는것이다. resources 아래에 logback-spring.xml 파일을 생성하고 작성하여 로그 설정을 한다. LogBack은 Error > Warn > Info > Debug > Trace 순으로 로그 레벨이 나눠진다. logback-spring.xml 의 전체 코드를 이해하기전 부분부분 이해해보자. [%d{yyyy-MM-dd HH:mm:ss}:%-3relative][%thread] %-5level %logger{36} - %msg%n appender : 로그의 형태, 로그 메시지를 콘솔에 출력할지 파일로 출력할지 출력 대상을 정할 수 있다. name : STDOUT이라는 이름으로 변수를 저장했다고 생각하면 된다. class : ..
https://school.programmers.co.kr/learn/courses/30/lessons/160585# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 먼저 올바른 틱택토라고 가정하고 answer를 1로 초기화한다. 다음과 같은 올바른 틱택토가 될 수 없는 상황을 통해 answer를 0으로 초기화 하자. 판을 보니 승자가 한명이 아니다. 한번씩 번갈아 놓지 않은 상황이다. 누구 하나가 연속으로 둠 X는 후공이라 O의 개수보다 많을 수 없다. 선공이 이겼을땐 후공의 개수+1이 선공의 개수가 된다. 후공이 이겼을땐 선공의 개수와 동일하..
게시글, 게시글 좋아요, 회원 테이블이 관계를 맺고있는 상황이다. 이때 다음과 같이 임시 데이터를 생성하고 필요한 필드들만 관계 매핑을하고 QueryDSL로 쿼리를 날렸다. //given Member posterLiker = new Member(); memberRepository.save(posterLiker); Poster poster1 = new Poster(); Poster poster2 = new Poster(); posterRepository.save(poster1); posterRepository.save(poster2); PosterLike posterLike1 = new PosterLike(); posterLike1.setPoster(poster1); posterLike1.setMember..
댓글과 댓글 좋아요가 1:N으로 관계를 맺고 있는 상태이다. 즉, 댓글 좋아요에서 댓글PK를 외래키로 갖고 있다. Comment @Entity @Data public class Comment { ... @OneToMany(mappedBy = "comment", cascade = CascadeType.REMOVE) private List commentLikes = new ArrayList(); } CommentLike @Entity @Data public class CommentLike { ... @ManyToOne @JoinColumn(name = "comment_id") private Comment comment; } 실행한 테스트 코드는 다음과 같다. @Test @DisplayName("댓글 삭제")..
https://school.programmers.co.kr/learn/courses/30/lessons/258712 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 m을 통해 A가 B에게 보낸 선물 개수를 관리합니다. gift의 i번째 원소가 "muzi frodo" 값을 갖는다면 m에 "muzi frodo"를 Key로하는 Value의 값을 1 증가시킵니다. sendCnt, reveiveCnt를 통해 보내거나 받은 선물을 관리합니다. m의 값을 갱신할때 동시에 A가 보낸 선물 개수와 B가 받은 선물 개수를 증가시킵니다. month를 통해 다음달에 ..
API의 응답으로 위와 같이 JSON 데이터를 받는다. 나는 response -> body -> items -> item의 List를 받길 원한다. JSON의 List는 어떻게 처리할 수 있을까? 테스트용으로 데이터의 contentid만 받아서 저장해보자. 다음과 같이 클래스를 만든다. @Data @JsonIgnoreProperties(ignoreUnknown = true) public class LocationId { private String contentid; } JsonIgnoreProperties(ignoreUnknow) : item 리스트의 원소 데이터에 contentid 외에도 많은 필드들이 있다. 만약 내가 원하는 필드만 바인딩하길 원한다면 이 옵션을 주면 된다. 이 옵션을 쓰지 않는다면 ..
테스트 코드를 작성하며 실제로 업로드한 파일이 서버와 디스크에 저장되는지 확인할 필요가 있었다. 다음 메서드를 호출하여 정상적으로 파일이 저장되길 원한다. public Location addLocation(Location location, List files) List은 어떻게 생성해서 넘거야할까? 다음과 같이 MockMultipartFile을 사용하여 MultipartFile을 대체할 수 있다. String imgName1 = "abc1.jpg"; String imgName2 = "abc2.jpg"; MockMultipartFile file1 = new MockMultipartFile(imgName1, imgName1, MediaType.IMAGE_JPEG_VALUE, "img".getBytes());..
https://school.programmers.co.kr/learn/courses/30/lessons/258711 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 생성된 정점은 다음 특징을 갖는다. 생성된 정점으로 진입하는 노드의 개수는 0개이다. 생성된 정점으로부터 진출하는 노드의 개수는 2개이상이다. (이것이 빠지면 막대 그래프의 젤 마지막 노드를 생성된 노드로 오해 가능) 이제 위의 특징으로 생성된 노드를 찾았다면 생성된 노드로부터 진출하는 노드는 각각의 그래프의 임의의 정점을 가리킨다. 즉, 생성된 노드의 진출 노드 개수가 그래프의 총 ..