목록분류 전체보기 (18)
히콩쓰 개발 일지
테스트 코드를 작성하던 중, 한 가지 괴리를 느꼈다. Test Code에서 일부러 안 되게 로직을 구현하고, 왜 안 되니까 성공이라고 하지? 왜 성공할 수밖에 없는 코드를 작성하고 되니까 성공이라고 하지? 테스트 코드를 작성하다 보니 이렇게 작성하는게 맞나? 싶어 스스로를 끊임없이 의심했다. 특히나 테스트 코드를 처음 작성해봐서, 어떻게 작성하는 것인지 알 수 없었고 코드에 확신을 가질 수 없었다. 괴리를 해결하기 위해, 고민을 해본 결과는 아래와 같았다. 테스트 코드에서 안 되는 로직을 구현했을 때 안 되는 것이 당연하다. 왜냐하면, 비즈니스 로직에서 걸려야 하기 때문이다. 만약 안 되는 로직을 구현했는데 테스트에 성공한다면, 그건 비즈니스 로직에 문제가 있다는 것이니 오히려 좋은 것이다. 반대로, 당..
Keep 게시글, 댓글 CRUD가 커뮤니티의 기본적인 기능이라고 생각하며, 이 부분이 잘 구현된 것 같음 PRG 패턴으로 생성, 수정, 삭제 등과 같은 작업 실행 후 조회 API를 호출하여 새로고침 된 듯한 자연스러운 연결을 구현함 Problem 게시글, 댓글 좋아요 기능 구현 완성을 목전에 두고 실패하여 아쉬움. 좋아요 수를 기준으로 가장 인기있는 게시글(질문), 댓글(답변)을 출력하지 못해 아쉬움. 예외상황에 대한 정리를 진행하지 않아 예외처리를 하는 데 어려움을 겪었고, 가능한 모든 상황에 대한 예외처리를 진행하지 못했음. Client에게 실행 결과 메시지를 출력하는 부분의 개발이 미흡함. Try 좋아요 기능은 거의 완성되었기 때문에, 좋아요 기능 구현을 완료할 것. 좋아요 기능 구현이 완료되면, ..

문제 분석 To-Do List를 개발하던 도중, "완료 된 할일 인가?" 를 표현하기 위해 아래와 같은 코드를 작성하였다. public class Card extends Timestamped{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "card_id") @Getter private Long cardId; @Getter private String cardTitle; @Getter private String cardContent; @Getter private boolean isCompletion; 이 때, private boolean isCompletion 이라는 필드에서 문제를 겪었다. 아래는 Service에서 전체 카드..
TO-DO LIST의 CRUD를 구현하던 중, Card를 선택해 조회하는 API 테스트를 진행했다. POSTMAN에서 http://localhost:8080/cards/{id} 로 요청을 보냈는데, 406 Not Acceptable Error가 발생했다. "406 Not Acceptable" 이란? 서버가 요청의 주도적인 콘텐츠 협상 헤더에 정의된 허용 가능한 값 목록과 일치하는 응답을 생성할 수 없으며, 서버가 기본 표현을 제공하지 않음을 나타낸다. 문제 발생 코드 @AllArgsConstructor public class CardViewResponseDto { private String cardTitle; private String cardContent; private String userName; ..
보호되어 있는 글입니다.
HTTP에서 제공하는 Method를 사용하면서, Header 와 Body에 대한 얘기를 많이 들어보았을 것이다. Request, Response시 사용되는 HTTP 메시지 구조와 Header, `Body'에 대해 정리해보았다. HTTP 메시지 구조 Start Line 요청 or 상태 라인 Header Blank Line Header의 끝을 빈 줄로 식별 Body Message(Data) 본문 Header의 종류 일반 헤더 : 요청/응답을 생성한 날짜 or 시간 데이터 요청/응답 헤더 : 요청 URL, 메소드 등 기타 정보 엔티티 헤더 : 메시지 바디에 관련된 정보 Body 앞서 Header에서 언급한 메시지 바디란 무엇일지 고민해보았을 것이다. 먼저, Body는 데이터를 담고있는 본문을 말하는데, 이 때..

게시판 CRUD를 개발하던 중, 아래와 같은 요구사항을 구현하다 문제에 직면했다. 선택한 게시글 삭제 기능 선택한 게시글을 삭제할 수 있습니다. 서버에 게시글 삭제를 요청할 때 비밀번호를 함께 전달합니다. 선택한 게시글의 비밀번호와 요청할 때 함께 보낸 비밀번호가 일치할 경우에만 삭제가 가능합니다. password를 매개변수로 전달해주고 이를 비교하는 로직을 작성하면 된다고 생각해 아래와 같이 Controller를 구현했다. @DeleteMapping("/board/{id}") public void removeBoard(@PathVariable Long id, @RequestBody String password){ boardService.removeBoard(id, password); }Postman에서..

commit 메시지를 수정한다고 -amend 를 사용하였다. 이후 local HEAD와 origin HEAD의 위치가 달라졌고, git log를 보니 아래와 같았다. 같은 commit을 가리키게 하기 위해 구글링을 하면서 해시 값도 복사해서 넣어보고 하다보니, 저렇게 꼬인 것 같았다. origin HEAD는 보라색이 끝난 지점을 가리키고 있었는데, force push를 하지 말라는 얘기가 많아서 고민하고 있었다. 와중에 노란색(HEAD)와 초록색(main) 두 개가 있는 것이 이상하다고 생각했고, git branch 명령어를 통해 위치를 확인했다. 여러 방법을 원인도 모른체 혼용하다보니, main branch가 아닌 다른 커밋 자체를 가리키고 있는 것을 확인했다. 이 프로젝트는 나 혼자 진행하는 프로젝트..