문제의 시작 Jwt의 인증을 처리하는 필터(JwtAuthenticationFilter)를 커스텀하여 시큐리티 필터체인에 등록을 해놨는데, 이때 Jwt를 검증하는 과정에서 에러가 발생할 시 JwtException이 발생한다. @Slf4j public class JwtAuthenticationFilter extends BasicAuthenticationFilter { // ... 생략 @Override protected void doFilterInternal(final HttpServletRequest request, final HttpServletResponse response, final FilterChain chain) throws IOException, ServletException { // ... ..
우테코 박재성(Jason)님의 특강이였다. 개인적으로 라이브 코딩을 통해 강의해주신 부분이, 어떤 플로우로 테스트 코드를 작성하면 좋을지를 파악하는데 너무 좋아서 만족했던 강의였다. 최고! 테스트 남들에게 실행 시키기 전에 수동 테스트 해봤던 경험이 있을 것 내가 원하는 방식으로 작동이 되는지 확인하기 위해 테스트의 진화 언어별, 국가별, 장치별 테스트를 모두 수동으로 할 수 있을까? QA 조직의 등장테스트 자동화된 테스트 자동화된 테스트의 필요성은 사람에 따라 다를 수 있음 못 느낄 수도 버그를 잡는 것은 테스트 해야 하는 많은 이유 중 하나일 뿐 소프트웨어의 변화를 지원하는 역할이란 것을 이해하자 네카라 같은 기업들은 지속적으로 코드를 개선한다 자동화된 테스트는 실수를 발견해주고 자신있게 코드를 작성..
설계 및 API 특강 해당 특강은 DDD Start! 등의 저서를 작성한 최범균 강사님께서 강의해주셨다 설계란 그렇다면 설계 시 고려해야할 것은? 구조, 데이터 모델, 알고리즘, 인터페이스 소프트웨어에서 실제로 사용할 모델, 물리적인 저장소에서 사용할 모델 -> 분리해서 사용할수도 설계시 고려할 사항으로는 데이터의 규모와 요구하는 응답 시간이 있다. 인터페이스 시스템 간 데이터를 주고 받는 연동방식, 규약 정의 프론트 백엔드간(Http), 백엔드간 API(TCP, GRP 등)이 잇다. 요구사항 설계는 요구사항이 무엇이냐에 따라 바뀐다. 즉, 요구사항은 설계의 출발점이라고 할 수 있다. 구성 요소 크기 3개의 그림의 차이(ListComp) 구성요소를 정말 작게 할수도 있고 아닐수도 다양함 그렇다면 기준으로..
저번주, 약 6주간의 카카오테크캠퍼스 1기의 2단계가 종료되었다. 1단계(9주차)에 비해 조금 더 짧은 기간이었지만, 2단계 기간은 방학 + 매일 그리고 주차별로 진행해야 할 과제, 특강, 데일리 스크럼이 있었기에 1단계에 비해 훨씬 성장을 많이 한 것 같은,,, 개인적인 느낌이 들었다. 아무튼! 2단계도 무사히 수료하였기 때문에 회고 겸 3단계를 위한 준비차 글을 작성한다! 2단계 회고 - KPT Keep(유지할 것) 과제 및 특강, 데일리 스크럼에 성실히 참여하였다. 과제 수행 시 최대한 요구사항을 충족하기 위해 노력하였다. 실시간 강의 시간에 최대한 집중하여 효율적으로 학습하려 했다. 깃허브 과제 제출 시 궁금한 점들을 질문하였다. 틈틈히 블로깅을 통해 과정 중 있었던 일들을 기록하려 하였다. Pr..
카테캠 실강을 따라하던 중 인텔리제이에서 빌드 할 경우, 계속 아래와 같은 오류가 나왔다. ✘ jiminkkk@jimin-ui-MacBookPro ~/Desktop/KakaoTechCam/lecture/kakao-6th-deploy main ± ./gradlew clean build > Task :compileJava FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':compileJava'. > java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member fiel..
컨트롤러 단위 테스트 4주차 과제는 컨트롤러 단위 테스트였다! 과제의 상세 설명은 아래와 같다. 컨트롤러 단위테스트를 작성한뒤 소스코드를 업로드, stub을 구현하시오. Stub이란? 과제를 구현하기 위해서는 일단 Stub에 대해 이해하고 있었어야 했는데 Stub에 대해 이해하는 것에 시간이 조금 걸렸던 것 같다. 여러 서치와 강의 자료를 통해 내가 이해한 Stub을 간단하게 말하자면 어떤 함수를 실행할 때, 그 결과값을 임의로 설정하는 것이다. 컨트롤러 테스트에서는 보낸 요청에 대해 응답이 적절한가를 검증하기 때문에 결과값이 실제 데이터인지는 중요하지 않다. Stub 적용 예제를 통해 Stub을 적용해보자. 아래는 장바구니 전체 내역 보기에 대해 진행한 테스트이다. 일단, 테스트를 하기전에 Contro..
2주차는 Dispatcher Servlet부터 Security까지 다양하게 학습하였다. 크게는 아래의 내용들에 대해 살펴보았다. 통신 과정 톰캣 Dispatcher Servlet DB Join과 제약조건 Spring Security의 인증과정(JWT) 블로깅을 통해 배운 내용 정리/추가 학습하기 https://mincanit.tistory.com/27 [CS] Tomcat에 대해 알아보자 톰캣 톰캣이란 Apache Software Foundation에서 개발한 오픈 소스 웹 서버 및 서블릿 컨테이너로 애플리케이션을 실행하는 프로그램 또는 컨테이너이다. 흔히, 아파치 톰캣이라고 부르지만 아파치 서버 mincanit.tistory.com 2023.07.11 추가 정리 중 2주차 회고 Keep 강의 시간에 최..
1주차 과제는 아래의 내용들로 이루어져 있었다. 요구사항 분석/API요청 및 응답 시나리오 분석 요구사항 추가 반영 및 테이블 설계도 과제를 진행하면서 강사님의 말씀처럼 최대한 러프하게 생각하고자 했다. 첫 요구사항 분석부터 디테일하게 가면 오히려 힘들어질 것 같아서 러프하게 하는 것을 추천하신 것 같다. 1주차 과제는 총 4문항으로 이루어져 있다. 💡 과제 설명 요구사항 시나리오를 보고 부족해 보이는 기능을 하나 이상 체크하여 README에 내용을 작성하시오. 추가 기능 도출 요구사항에 있는 화면에서 도출하자 전체 상품 목록 조회 전체 상품 목록 조회 라벨링별 목록 조회(무료배송 등) 개별 상품 상세 조회 상품 내용 조회 상품의 옵션 목록 조회 회원가입 이메일 중복 체크 중복 검사 이메일 형식 유효성 ..
카테캠 2단계 과정 이수 중 실시간 강의를 수강하며 학습한 내용들을 정리한 내용입니다. 1. DTO 객체의 필요성 프론트가 편하게, 최대한 바로 사용할 수 있게 json을 제공하는 것이 좋은데, 때문에 DTO 객체가 탄생되게 되었다. Response의 Body가 통일되지 않는다면 프톤트에서 공통된 처리를 하기가 힘들 수 있다. 또한, dto에는 해당 화면에 뿌려줄 값들을 바로 뿌릴 수 있도록 구성해야 한다. 2. JWT 로그인 시에 JWT를 사용할 수 있는데 보통 JWT는 요청 시 Authorization 헤더에 포함하여 통신하게 된다. 하지만 사실 JWT는 쉽게 Decode가 바로 가능하며, 때문에 JWT는 보안을 위한 것이 아닌, 신뢰성을 위한 것이라고 생각해도 좋다. 3. 백엔드 개발자 원칙 클라이..
강의 시작 전 테스트 코드를 짜야 하는 이유 프론트(React.js)는 3000번 포트 사용하고 백엔드(Spring Rest API)는 대게 8080번(또는 80번) 포트 사용하며, 배포를 하기전 프론트의 레퍼런스 코드를 실행할 수 있도록 주소요청 테스트를 연결하여 실행하게 된다. 더 자세히 말하자면, 아래의 클론코딩 전반적인 과정에 따라 우리는 도커 기술로 제작되어 있는 카카오 크램폴린의 가상화 컴퓨터를 사용한다. 그런 후 D2Hub를 통해 빌드하고 jar파일을 kargo에 배포하게 되는데, 우리가 배포한 jar 파일 속 코드들이 배포된 환경에서 잘 돌아간다고 확신할 수 없기에 테스트 코드를 작성해야 하는 것이다. 카카오 크램폴린이란? 도커 기술로 제작되어 있으며 카테캠 2단계 기간동안 우리는 카카오 ..