본문 바로가기

전체 글

(181)
TIL-231023(PUT vs PATCH) 📝오늘 공부한 것 PUT vs PATCH 공부 커리어톤 참여하기 프로그래머스 문제풀기 📌 PUT & PATCH 프로젝트를 진행하면서 PUT을 사용해야할지 PATCH를 사용해야 하는지 헷갈릴 때가 많았다. 'PUT은 모든 필드를 보내야하고, PATCH는 부분만 보내면 될 때 사용한다.'라고 생각을 했었다. 정확하게 개념이 잡히지 않아 PUT과 PATCH에 대해서 공부를 해보고자 한다. [ PUT ] 요청 payload를 사용해 새로운 리소스를 생성하거나, 대상 리소스를 나타내는 데이터를 대체한다. PUT 메서드는 request payload로 전달받은 값을 그대로 entity에 반영하기 때문에 request는 항상 전체 entity를 포함하고 있어야 한다(일부 필드만을 가지고 있으면 안된다.). 요청한 U..
WIL-2023/10월 (3) 2023.10.16. ~ 2023.10.22. 📝이번주 목표 1. 자바의 정석 스터디 2. 기술면접 스터디 3. 커리어톤 참여하기 4. 프로그래머스 문제풀기 5. 실전프로젝트 - 테스트코드 작성하기 ✍🏻이번주 목표 달성 여부 ✅ 자바의 정석 스터디 ✅ 기술면접 스터디 ✅ 커리어톤 참여하기 ✅ 프로그래머스 문제풀기 ✅ 실전프로젝트 - 테스트코드 작성하기 💡알게 된 점 총정리(TIL회고) 이번주에는 테스트 코드 작성을 완료하였다. 목표했던 코드 커버리지 수치도 달성했다. 이번 테스트 코드에서는 처음 작성하는 만큼 높은 코드 커버리지를 목표로 하였다. 코드 커버리지가 높다고 해서 좋은 코드가 아니며, 어떠한 기준을 잡고 테스트를 진행하냐에 따라 테스트 결과가 다르게 나올 수 있다는 것도 배웠다. 또, 테스트 ..
TIL-231021(자바의정석 Chapter12 '지네릭스, 열거형, 애너테이션') 📝오늘 공부한 것 자바 스터디 📌 자바의 정석 스터디 [ 지네릭스 ] 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크를 해주는 기능 지네릭스의 장점 타입 안정성을 제공한다. 타입체크와 형변환을 생략할 수 있으므로 코드가 간결해 진다. 지네릭 클래스의 선언 지네릭스의 제한 지네릭 클래스의 객체를 생성할 때 객체별로 다른 타입을 지정하는 것은 적절하다. 그러나 static멤버에 타입 변수 T를 사용할 수 없다. T는 인스턴스변수로 간주되기 때문이다. → static멤버는 타입 변수에 지정된 타입, 즉 대입된 타입의 종류에 관계없이 동일한 것이어햐 하기 때문이다. 지네릭 타입의 배열을 생성하는 것도 허용되지 않는다. 지네릭 배열 타입의 참조변수를 선언하는 것은 가능하지만, ‘ne..
TIL-231020(자바 Record) 📝오늘 공부한 것 Record 공부 커리어톤 참여하기 프로그래머스 문제풀기 이력서 수정하기 📌 Record record는 불변 데이터 객체를 쉽게 생성할 수 있게 해주는 새로운 타입의 Java 클래스이다. boilerplate code란 최소한의 변경으로 여러 곳에서 재사용되며, 반복적으로 비슷한 형태를 띄는 코드를 말한다.(getter, equals, hasCode, toString 등) 이러한 boilerplate code는 lombok이나 IDE로 코드를 간결하게 만들 수는 있지만 근본적으로 자바가 가지고 있는 한계를 해결할 수는 없다. 이를 극복하기 위해 추가한 기능이 record이다. record 레코드명(컴포넌트1, 컴포넌트2, ...) { } [ record의 목표 ] 객체 지향의 사상에 맞..
TIL-231019(Filter와 Interceptor) 📝오늘 공부한 것 Filter와 Interceptor 공부 커리어톤 참여하기 프로그래머스 문제풀기 이력서 수정하기 📌Filter와 Interceptor 웹 개발을 하다보면, 공통적으로 처리해야 할 업무들이 많다. 예를 들어, 로그인 관련 처리, 권한 체크, XSS(Cross site script)방어, 분기처리, 로그, 페이지 인코딩 변환 등이 있다. 공통업무에 관련된 코드를 모든 페이지 마다 작성 해야한다면 중복된 코드가 많아지게 되고 프로젝트 단위가 커질수록 서버에 부하를 줄 수도 있으며, 소스 관리도 되지 않는다. 이렇게 많은 로직에서 공통으로 관심이 있는 부분을 공통 관심사라고 한다. 웹과 관련된 공통 관심사를 처리할 때는 HTTP의 헤더나 URL 정보가 필요한데 서블릿 필터나, 스프링 인터셉터는..
TIL-231018(Jacoco로 코드 커버리지 측정(3)) 📝오늘 공부한 것실전프로젝트 - '행동대장' 테스트 코드 작성하기커리어톤 참여하기 📌 테스트 코드 결과JUnit과 Mockito를 활용하여 프로젝트의 테스트코드를 작성하였고, Jacoco를 이용해 total 코드 커버리지를 90% 이상 달성을 목표로 하였다.  [ 코드 커버리지 리포트 ]결과적으로 코드 커버리지 Total 95%를 달성하였다!!! 그러나 모든 요소들이 90% 이상 달성하는 것을 어려웠다. 팀원들과 함께 진행한 협업 프로젝트다 보니, 내가 직접 만들지 않은 클래스에서 사용되지 않는 코드들이 있어 완벽한 커버리지를 달성하지 못하였다. 이전에는' fostman으로 확인했을 때 잘 나오면 되는거 아니야? 왜 테스트 코드를 또 작성하지?'라고 생각했었는데, 막상 테스트 코드를 작성해 보니, 수..
TIL-231017(Jacoco로 코드 커버리지 측정(2)) 📝오늘 공부한 것실전프로젝트 - '행동대장' 테스트 코드 작성하기커리어톤 참여하기 📌 Jacoco로 코드 커버리지 측정하기[ JwtUtil의 Access Token 유효성 검사 메서드 ] public boolean validateAccessToken(String token) { try { Jwts.parserBuilder().setSigningKey(accessTokenKey).build().parseClaimsJws(token); return true; } catch (SecurityException | MalformedJwtException | SignatureException e) { log.error("I..
TIL-231016(인텔리제이 JUnit 한글 깨짐 문제) 📝오늘 공부한 것 실전프로젝트 - '행동대장' 테스트 코드 작성하기 커리어톤 참여하기 📌 ⛔문제 인텔리제이에서 테스트코드 실행 시 결과창에 한글이 깨져서 나온다. 인코딩 시 utf-8로 설정을 해놨는데도 junit 한글 인코딩을 할 때 계속 한글이 깨져서 나왔다. 💯해결 shift 키를 두 번 눌러 'Edit Custom VM Options' 을 검색하거나, Help 탭에서 Edit Custom VM Options를 들어간다. -Dfile.encoding=UTF-8 를 추가해준 뒤 프로젝트를 재실행한다! 실행 결과가 한글로 잘 뜨는 것을 확인할 수 있다.