목록목록 (211)
녕의 학습 기록

문제 상황서비스 레이어의 단위 테스트를 위해 TestRepository 코드를 작성하던 중 save() 내부에서 파라미터로 받은 엔티티의 id를 설정해주어야 했다. 하지만 id 필드의 접근 제어자는 private이고, setter를 열어두지 않았기 때문에 TestRepository에서 id값을 설정할 수가 없었다.public class GroupTestRepository implements GroupRepository { private Map storage = new HashMap(); private long sequence = 0L; @Override public Group save(Group group) { if (group.getId() != null) { ..

지난 12월 27일은 우테코 7기 최종 발표날이었다. 말로는 기대 안한다고 하면서도 잔뜩 긴장한 채 3시가 되기만을 기다렸다.일부러 2시쯤 집을 나와 1시간 거리에 있는 카페로 향하였고, 카페에 앉아 노트북을 켜니 3시가 되었다. 슬슬 오픈채팅방에 합격 메일이 왔다는 소식이 여럿 들려왔지만 내게는 아직 메일이 오지 않았다. 새로고침을 계속 해봐도 메일이 오지 않아 합격 메일만 빨리 보내주는구나... 하고 절망하던 중.메일이 도착했고 될대로 되라하고 바로 클릭해봤다. "합격"......................!!!!!!!!!!그렇게 기쁜 마음에 카페에서 혼자 격하게 들썩였다. 그리고 자기소개서부터 최종 발표까지 2달간 스트레스를 받으며 고생했던게 생각나 급 울컥했지만 끝내 눈물은 나오지 않았다. 친구..

문제 상황 JpaRepsitory의 구현체인 GroupJpaRepository에 직접 의존하고 있는 GroupService를 단위 테스트하고자 한다.@Service@Transactional(readOnly = true)@RequiredArgsConstructorpublic class GroupService { private final GroupJpaRepository groupJpaRepository; ...} 시도한 것 1. 실제 db를 사용해 통합 테스트 / 외부 Mocking 라이브러리 사용테스트하고자 하는 대상이 repository 구현체에 의존하고 있기 때문에 실제 repository 구현체를 사용하고 데이터베이스와 연동해 통합 테스트를 하거나, Mockito와 같은 외부 라이브러리를 사용..

1차 합격지난 12월 9일, 우테코 7기의 1차 결과 발표가 있었다. 1차는 자기소개서 및 프리코스를 기반으로 추려진다. 우테코가 너무나도 간절하게 하고 싶어 자기소개서와 프리코스에 최선을 다한 나였기에 내심 기대를 많이 하고 있었다. 발표는 3시였는데 정말 더럽게 시간이 가지 않아 카페에서 그림판에 부적을 만들기도 했다. 그러다가 3시가 되었고, 머지않아 네이버 앱에 우테코 1차 결과 메일 알림이 왔다.너무 떨려서 한 3분동안은 확인하지 못하다가 에라 모르겠다 하고 클릭을 했고.눈에 들어온 '합격'이라는 단어에 순간의 기쁨을 참지 못하고 카페에서 소리를 지를 뻔 했다. 너무 기뻐서 주변인 2명 정도에게 전화를 해 이 소식을 알리고 난 후에야 매우 큰일났음을 깨달았다.프리코스가 끝나고 1차 결과가 나오기..
1주차에 대한 피드백 중 한가지는 'Git으로 관리할 자원을 고려하라'였다. 예를 들면 자바의 .class 파일은 git으로 관리할 필요가 없다.자바 코드만 있으면 .class 파일을 생성할 수 있기 때문이다. 나는 평소 개발할 때 어떤 파일을 git으로 관리할지는 .gitignore로 관리했었다.주로 민감한 파일이 github에 올라가지 않게끔 자동으로 생성된 .gitinore파일에 추가하는 방식이었다.그러나 자동으로 생성된 .gitignore에 대해서는 궁금증을 가지고 알아본 적이 없었다. 1주차 피드백이기도 하고, 알아두면 나중에 관련한 문제가 생겼을 때 도움이 될 거 같아 알아보았다. 우선 기존의 .gitignore파일이다 HELP.md.gradlebuild/!gradle/wrapper/gradl..
1주차의 공통 피드백에는 다음 링크와 함께 커밋 메세지를 의미있게 작성하라는 내용이 있었다.https://meetup.nhncloud.com/posts/106 링크 속 내용을 쭉 정독하고 가장 고민 된 부분은그래서 제목을 명령조로 사용할 것인가?였다. 영어 기준으로 좋은 커밋 메세지는 제목을 명령조로 작성한다고 한다.예를 들어 A메서드를 변경했으면 -> Change A method 이렇게 말이다. 근데 한국어로 작성하면 커밋 메세지의 제목이 'A메서드를 변경하라' 가 되어버린다.작성하면서도 이게 맞나하는 생각과 함께 나도 영어로 커밋 메세지를 작성해야하나 싶기도 했다.하지만 커밋 메세지를 작성하는 사람과 읽는 사람 모두가 한국인일 것이기 때문에 한국어를 사용하기로 했다. 그렇다면, 한국어로 커밋 메세지의..
1주차가 끝나고 코드리뷰를 하면서 다른 사람들의 기능목록을 봤는데많은 분들이 내가 생각했던 것 보다더 세세하게 적어서 놀랐었다.그래서 2주차가 시작되는 지금 과연 기능 목록을 얼마나 세세하게 적으면 좋을 지 다시 고민했다. 우테코 프리코스에서는 기능 목록의 기능 단위로 커밋할 것을 권장하고 있다.만약 이 기능이라는 것을 너무 큰 범위로 잡아버리면 하나의 커밋 내에 너무 많은 변경사항이 생길 것이고.너무 작은 범위로 잡아버리면 실제로 구현할 때 유연성이나 자유성이 많이 저하될 거라고 생각했다. 그렇다면 기능 목록의 기능을 어떻게 잡아야할까?정답은 없을 것이기에 나만의 기준을 내려야 한다. 1주차 계산기 미션을 한 문단으로 쭉 설명해보자.사용자로부터 문자열을 입력을 받는다. 그리고 계산기의 구분자로 입력을 ..

백준에서 자바11로 StringBuilder의 isEmpty()를 사용하다 컴파일 에러를 마주침 isEmpty()는 CharSequence 인터페이스의 메서드로, 자바 15 이상부터 지원한다. 따라서 자바11에서는 isEmpty()대신 length()를 사용해 길이가 0인지를 비교해야한다. 실제로 isEmpty 메서드도 length가 0인지를 확인하는 방식으로 구현된다.

진행중인 프로젝트에서는 사진 저장이 필요하다. 이를 위해 amazon s3를 사용하기로 했다. 우선 프로젝트에서 사용할 AWS 계정이 없어 생성했다.1. AWS에 프로젝트를 관리할 root 계정 만들기2. 실질적으로 사용할 모든 권한을 가진 admin IAM 생성 이후 S3 관련 IAM을 생성하고 spring 프로젝트와 연동을 해주었다.1. S3에 관해 모든 권한을 가진 s3 IAM 생성2. 1에서 생성한 IAM의 access key와 secret key를 발급3. gradle에 aws s3 의존성 추가4. 아래 사진과 같이 S3를 연동 위 S3Config에서 등록한 AmazonS3Client 빈을 가지고 버킷의 파일을 관리한다. amazon s3를 사용해 파일을 업로드 하는 방식에는 다음과 같이 3가..

문제상황@WebMvcTest Controller 단위테스트를 마친뒤, Jpa Auditing 기능을 사용하기 위해 StockMateApplication에 @EnableJpaAuditing 애너테이션을 추가하자 기존에 성공하던 테스트들에서 다음과 같은 에러가 발생했다. 에러 메세지를 보아하니 jpaMappingContext 빈이 없어 발생하는 문제같다. 시도한 점@WebMvcTest는 컨트롤러 레이어를 테스트하는데에 특화되어있어 Controller, RestController, Resolver 등 Spring MVC와 관련된 빈들만 자동으로 등록한다. Testing Spring Boot Applications :: Spring BootTo test whether Spring MVC controller..