일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- UnrealEngine
- 포톤
- 이분탐색
- 해시
- 구현
- 알고리즘
- c#
- QueryDSL
- 워크플로
- Photon
- 문자열
- 프로그래머스
- Inventory
- FSM
- BFS
- 스파르타내일배움캠프
- UE4
- unityui
- 내일배움캠프
- Unity
- 유니티
- 순열
- Firebase
- Unity3d
- 스택
- 유클리드호제법
- Unity2D
- 스파르타내일배움캠프TIL
- C++
- 언리얼엔진
- Today
- Total
목록Java (100)
개발 낙서장
오늘의 학습 키워드📚 커스텀 Exception 주로 사용하는 Exception들은 많다. 보통 일반적으로 어떠한 상황에서 이런 예외가 발생하더라 해서 보편적으로 만들어진 예외들이다. (NullPointerException, IllegerArgumentException, NoSuchElementException ...) 이미 있는 예외들만 사용해도 충분히 서비스를 개발하는데 문제가 있지는 않지만 각 예외마다 어떠한 상황인지 정확히 구분되어야 할 경우에서는 표준 예외로는 확인이 어려울 수 있다. 예를 들어 POST, GET 등에서 데이터를 찾을 수 없다면 NoSuchElementException이나 NullPointerException을 사용할 것이다. 근데 POST, GET에서 예외 발생 시 처리되는 로직..
오늘의 학습 키워드📚 JWT 활용 유저 인증을 인가 필터에서 JWT를 발급받고 검증을 통해 진행했다. JWT에는 유저의 EMAIL, NAME, ADDRESS, ROLE 정보가 포함돼있다. 이전에는 JWT를 그냥 단순히 열쇠라고만 생각했다. 인증과 인가를 통과하기 위한 열쇠. 그 안에 담긴 정보들을 활용할 방법은 구상하지 않고 그냥 강의에서 나온 코드들을 복사-붙여넣기 했었다. public String createToken(User user) { Date date = new Date(); long TOKEN_TIME = 60 * 60 * 1000; Claims claims = Jwts.claims().setSubject(user.getEmail()); claims.put("userId", user.getU..
오늘의 학습 키워드📚 Git 유의사항 💥반드시 push하기 전에는 원격 브랜치를 pull하자!!!!! 💥 팀 프로젝트를 하면서 수정사항이 계속 생기기 때문에 PR을 하고 Merge 하자마자 수정 사항이 생겨 다시 PR을 올리는 경우가 있었다. 그 텀이 꽤 짧았어서 그냥 생각없이 바로 push하고 PR을 요청했는데 이전에 PR한 커밋이 중복돼 PR에 올라가는 문제가 생겼다. 별 건 아니지만... 그리고 엄청 당연한 거지만 생각보다 놓치기 쉬운 부분인 것 같다. 원격에 변경 사항이 없더라도 push를 하기 전에는 꼭꼭 pull을 하고 push하자! 오늘의 회고💬 팀 프로젝트가 마무리됐다. 추가하고 싶었던 기능도 더 많았고 좀 더 리팩토링할 거리도 남아있지만 시간이 촉박해서 어쩔 수가 없었다. 나름 하루 종일..
오늘의 학습 키워드📚 Controller 테스트 Controller 테스트란 해당 컨트롤러의 요청과 응답이 정상적으로 이루어지는지 테스트하는 것이다. 요청하는 값, 응답하는 값에 대한 검증 보다는 요청과 응답의 행위 자체를 중점으로 두고 테스트한다. 클래스 상단에 @WebMvcTest 어노테이션을 달아주면 MVC 기반 테스트가 가능하다. 어노테이션 내부에서 filter라던가 property 등 여러 설정이 가능하다. @WebMvcTest( controllers = {???Controller.class}, excludeFilters = { @ComponentScan.Filter( type = FilterType.ASSIGNABLE_TYPE, classes = WebSecurityConfig.class ) ..
오늘의 학습 키워드📚 쿼리 메소드 쿼리 메소드는 JpaRepository에서 메소드 네이밍을 통해 쿼리문을 작성할 수 있는 간편한 기능이다. 가령 User라는 테이블에서 username의 필드값을 통해 User를 찾고 싶다면 Optional findByUsername(String username); 이렇게 간단한 메소드 네이밍을 통해 쿼리문을 만들 수 있다. 실제로 저 메소드를 실행하면 이런 쿼리가 날아가게 된다. 이런 식으로 어떤 식으로 작성해야 할지를 추천해 줘서 작성하기도 편하다. 하지만 형식에 맞지 않는 메소드 네이밍을 할 경우 에러가 발생하니 주의해야 한다. (없는 필드로 찾으려 한다거나 오탈자가 있다거나 문법에 맞지 않다거나 등등...) 애초에 이런식으로 잘못 입력됐을 경우 IntelliJ에서..
오늘의 학습 키워드📚 좋은 테스트란 테스트 코드 개인 과제가 끝이 났다. 검토해보면 난 절대 좋은 테스트를 작성하지 못했다고 생각한다. 좋은 테스트란 과연 뭘까. Mock 라이브러리를 잘 활용해서 테스트 코드를 작성하는 것? 다양한 테스트 프레임워크를 사용해 테스트를 해보는 것? 그냥 간단하게 '테스트의 행위가 의도한 대로 완수되는지'가 좋은 테스트이다. 무슨 요청을 해서 값이 이렇게 들어가면 어떻게 처리가 돼서 이렇게 나와야 되고 1이라도 틀리면 안되고 응답 메세지는 반드시 이렇게 나와야 하고... 물론 목적에 따라 값의 아주 세밀한 검증이 요구될 수 있고 응답에 대한 메세지의 검증이 필요할 수 있다. 하지만 결론은 어떠한 목적으로 테스트를 진행했으며 테스트의 행위가 의도한 대로 동작했는가?를 가장 중..
오늘의 학습 키워드📚 Controller 테스트 404 에러 TodoCard Controller 테스트가 잘 진행돼서 Comment Controller 테스트 코드 작성을 하던 중에 진짜 도저히 이해가 안 되는 에러를 만났다. 바로 404 에러..... 404 에러는 99%의 경우로 URL을 잘못 입력했거나 GET, POST 등 메소드를 다르게 입력했을 때 발생한다. 근데 나는 URL도 그대로 입력했고 메소드도 제대로 했는데 계속 404가 발생해서 도저히 이유를 찾을 수 없었다. @RestController @RequiredArgsConstructor @RequestMapping("/api") public class CommentController { private final CommentService ..
오늘의 학습 키워드📚 BDDMockito를 활용한 Service 테스트 테스트 코드는 기본적으로 Given, When, Then 구조로 이루어져있다. Given은 테스트를 준비하는 과정으로 데이터의 변수를 설정한다거나 데이터를 추가하는 등의 작업을 수행한다. When은 실제로 테스트를 진행하는 과정이다. Then은 예상한 결과와 실제 테스트 값을 비교하는 과정이다. TodoCard 글을 작성하는 createCard라는 메소드가 Service에 있다고 하면 테스트 코드는 다음과 같이 작성하면 된다. @Test @DisplayName("Create Card") void createCard() { // given User user = new User("abc123", "abc12345", UserRoleEnu..