일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Unity
- 내일배움캠프
- UE4
- 구현
- Unity3d
- 스파르타내일배움캠프
- 스파르타내일배움캠프TIL
- 언리얼엔진
- Unity2D
- 유클리드호제법
- 유니티
- BFS
- Inventory
- 포톤
- unityui
- c#
- 이분탐색
- 순열
- Firebase
- 해시
- QueryDSL
- Photon
- 프로그래머스
- 워크플로
- 알고리즘
- UnrealEngine
- C++
- 스택
- 문자열
- FSM
- Today
- Total
목록Java/Sparta (84)
개발 낙서장
오늘의 학습 키워드📚 FK 제약 조건 Entity에서 ManyToOne, JoinColumn 어노테이션을 통해 참조 테이블을 설정하면 자동으로 해당 테이블의 PK가 FK로 등록이 되고 제약 조건까지 생긴다. FK의 제약 조건이 걸려있으면 장점들도 있다. 데이터 무결성, 참조 무결성을 크게 신경쓰지 않아도 컴파일러 단계에서 걸러내어 지킬 수 있고 데이터를 일관되게 저장할 수 있고 테이블 간 분석이 직관적일 수 있다. 하지만 많은 부분에서 단점으로 작용한다고 생각한다. 먼저 DB의 유연성이 매우 떨어지게 된다. 제약 조건이라는 것은 결국 뭔가 행동할 때 신경 써야 할 부분이 생긴다는 것이고 이는 확장성, 유연성이 중요한 개발에서 큰 단점으로 작용한다. 예를 들어 User를 참조하는 Comment 테이블이 있..
오늘의 학습 키워드📚 커스텀 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 ..