![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cxJ9HA/btrnGkoCa9E/28288322VPkmgvbCyk6sO1/img.png)
자판기 3주라는 시간이 짧다면 짧고 길다면 긴 시간이지만 생각보다 벌써 3주차 미션을 끝내는 시간이 온 것 같아요. 1, 2주차 미션에 비해서 도메인 자체가 복잡하다고 느껴졌고, 객체를 잘 분리해도 분리한 객체를 가지고 어떻게 관계를 잘 맺느냐가 힘들었던 것 같아요. 추가로 최종 미션에서 5시간 제한이 걸려있어 이번 미션에서 5시간 제한을 두고 구현해보고 싶었는데 이것저것 욕심이 생기는 나머지 validation을 빡빡하게 한다거나, input부분에서 클린 코드를 지향하려다보니 5시간을 못지키고 구현하게 된게 엄청 아쉬운 것 같습니다. 프리코스의 3주차 [자판기]에 대해서 시작하겠습니다🙆♂️ 마찬가지로 2주차가 끝나고 3주차 미션에서 2주차의 피드백과 함께 시작하였습니다. 2주차 피드백 반영하는 과정 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cV2P1E/btrnHSdzGto/7lTxaVjW9RIGx7ADzXBur1/img.png)
Can’t automatically merge. 우테코 미션 내에서 Test 코드의 변경으로 인하여 메일이 2주차 그리고 이번 3주차에도 왔었습니다. 테스트코드가 변경되었기 때문에 Pr을 보낼 때 Can’t automatically merge. 문구를 노출시키지 않고 Git 파일 충돌을 해결하는 방법에 대해서 해결해보라는 내용이었어요. 과연 이게 무엇인지, 어떻게 해결하는지 알아볼까 합니다. 변경점이 없을 때의 상태 먼저 특정 아이디로 repository를 하나 fork해보겠습니다. 기존 repository에서는 변경점이 이루어지지 않았기 때문에 origin repository와 지금 fork한 repository에는 큰 문제점이 발생하지 않을 것입니다. 그 예로 fork repository에 새로운 기..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/crUlP6/btrnBszVrdE/nyyVyBqYFiZjTfZzEkUKtk/img.png)
자동차 경주 게임 어느덧 2주차 미션 제출을 진행하고 시간이 참 빠르게 흘러간 것 같습니다 :) 이번 미션에서는 느낀바가 참 많았던 미션인 것 같아요. 안다고 생각했던 부분들에 대해서 실수가 잦았고 모르는 부분도 엄청 많이 있었구요 🤣 문제없이 3주동안 진행되는 것보다 하나라도 제 문제가 드러난다면 고칠 수 있는 좋은 기회가 될 것이라고 생각해서 기분은 오히려 좋습니다 :) 프리코스의 2주차인 [자동차 경주 게임]에 대해서 회고를 시작하겠습니다🙆♂️ 이번에도 동일하게 메일과 함께 시작된 자동차 경주 게임이었어요. 다만 조금 달랐던 건 지난주차에 미션에 대한 공통 피드백을 받고 제 문제를 빠르게 파악해서 진행할 수 있었다는게 참 좋았던 것 같습니다. 지난주 회고의 마지막에 피드백에 대한 이야기를 잠깐 해..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/scgTS/btrmK75QpSR/32EI2g0ZCMvHyZqIlTVsGK/img.png)
우테코 서류 합격과 시작 우아한 형제들에서 지원하는 우아한 테크코스 교육과정의 4기에 서류합격이 되어 프리코스를 진행하게 되었습니다. 항상 테코톡이나 테코블을 통해서 "와... 교육이라도 이런 식으로 개발 교육을 받으면 얼마나 좋을까?"했던 우테코에 꿈인지 생시인지 서류합격을 하게 되었네요 :) 우테코의 심사 일정은 그냥 코테나 면접만 단시간 내로 진행하고 끝나는 것이 아닌 3주간의 미션이 있는데요. 원래도 코테나 면접은 개인피드백이 오지 않는 편이지만 3주동안 제가 이 프리코스를 통해서 얻고자하는 바가 있고, 또한 동일하게 미션을 진행하는 다른 지원자분들이 이 글을 보면서 제 회고록에서 배울점, 피드백할 부분을 공유할 수 있다고 생각해서 매주 회고를 남길 생각입니다. 서류를 쓸 때에 대한 회고와 첫 시..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bugmdd/btrlZLURmSN/6Lef8H61hTp5OfDwYRTW31/img.png)
JPA에 따라오는 꼬리표, N+1 최근들어 가장 많이 사용하는 API 중 하나인 JPA, 항상 JPA를 쓰면 따라오는 이야기가 있습니다. JPA를 쓰면 N+1 문제가 발생하는데 어떻게 해결해야하나요? JPA를 사용한다라고 하면 항상 나오는 질문입니다. 그때마다 머릿속에 정리가 잘 되지 않아 당황했던 기억이 있는데, 이 기회에 JPA에서 N+1이 발생하는 일반적인 케이스들을 모두 정리해보고자 글을 쓰게 되었어요 :) 흔히 알고있는 즉시로딩, 이 해결책으로 지연로딩 + fetch join을 해도 N+1이 생기는데요. 같이 모든 케이스를 확인해보면서 이야기를 이어나갈까 합니다 😀 모든 예제는 spring boot + spring data jpa환경으로 구성되어있습니다. 가장 많이 사용하는 조합이고, 많은 사람..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bLky3l/btrk9spGA9u/dKc1RuaQk5F0i8slnIKabK/img.png)
JWT(Json Web Token) 인증방식 사실 꾸준히 작성하고싶었던 글이지만 JWT를 제대로 개념을 정리하고 구현을 진행해본적이 없었는데 리얼월드 프로젝트를 진행하면서 JWT에 대한 내용에 대해서 제 나름대로 정리가 되었다고 생각하여 글을 쓰게 되었습니다 :) 왜 JWT가 만들어져야했으며 JWT가 뭔지, 어떻게 구현되어있는지를 중점적으로 글을 이어가볼까해요 🙆♂️ Cookie과 Session으로 가득차던 인증 체계 Cookie 클라이언트가 웹사이트에 접속할 때 그 사이트가 사용하게 되는 일련의 작은 기록 파일이라고 생각하면 됩니다. 서버가 클라이언트에 정보를 전달할 때 저장하고자하는 정보를 응답 헤더(Cookie)에 저장하여 전달합니다. Key Value 형식의 문자열 형태로 저장합니다. 구글이나 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/JXZ9j/btrdetQdo15/xZq9o8aV6UiTUszo19lm11/img.jpg)
자바에서 예외 처리 방법 (try, catch, throw, throws, finally) try - catch - finally 자바 내에서는 Exception을 처리하기 위해서 흔히 말하는 try - catch - finally구문을 활용한다. 말그대로 실행, 에러잡기, 최종 결과라는 뜻인데 다음 예제 코드를 보자. try { 실행 코드 } catch (NullPointerException e1) { e1 발생 시 실행되는 코드 } catch (ClassCastException e2 || IllegalArgumentException e3) { e2 혹은 e3 발생 시 실행되는 코드 } catch (RunTimeException e4) { e4 발생 시 실행되는 코드 } ... finally { 실행코..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bFNNEV/btrb0o25G2c/CriXrKPiNAsSLFKG0RED81/img.png)
객체 지향에서 연관관계를 만드는 목표가 뭘까? "객체 지향 설계의 목표는 자율적인 객체들의 협력 공동체를 만드는 것이다" -(객체지향의 사실과 오해) 일단 먼저 테이블에서 두 테이블의 연관관계를 매핑하기 위해서는 어떻게 매핑할까? FK(외래키)를 한 테이블에 두어서 각각의 테이블을 검색할 때 join을 하면 검색할 수 있다. 다음과 같은 테이블이 있을 때 우리는 두 테이블의 연관관계를 검색하고 확인할 수 있다. SELECT m.*, t.* FROM MEMBER m JOIN TEAM t ON m.TEAM_ID = t.TEAM_ID; SELECT m.*, t.* FROM TEAM t JOIN MEMBER m on t.TEAM_ID = m.TEAM_ID; 즉 하나의 테이블에 fk하나만 설정되어 있으면 서로의 ..
- Total
- Today
- Yesterday