저번주, 약 6주간의 카카오테크캠퍼스 1기의 2단계가 종료되었다. 1단계(9주차)에 비해 조금 더 짧은 기간이었지만, 2단계 기간은 방학 + 매일 그리고 주차별로 진행해야 할 과제, 특강, 데일리 스크럼이 있었기에 1단계에 비해 훨씬 성장을 많이 한 것 같은,,, 개인적인 느낌이 들었다. 아무튼! 2단계도 무사히 수료하였기 때문에 회고 겸 3단계를 위한 준비차 글을 작성한다! 2단계 회고 - KPT Keep(유지할 것) 과제 및 특강, 데일리 스크럼에 성실히 참여하였다. 과제 수행 시 최대한 요구사항을 충족하기 위해 노력하였다. 실시간 강의 시간에 최대한 집중하여 효율적으로 학습하려 했다. 깃허브 과제 제출 시 궁금한 점들을 질문하였다. 틈틈히 블로깅을 통해 과정 중 있었던 일들을 기록하려 하였다. Pr..
기본키 매핑 직접 할당: 기본키를 애플리케이션에서 직접 할당 자동 생성: 대리 키 사용 방식 IDENTITY: 기본 키 생성을 데이터베이스에 위임 SEQUENCE: 데이터베이스 시퀸스를 사용해서 기본 키를 할당 TABLE: 키 생성 테이블을 사용 IDENTITY 전략 기본 키 생성을 데이터베이스에 위임 주로 MySQL, PostgreSQL 등에서 사용 개발자가 엔티티에 직접 식별자를 할당하면 @Id 어노테이션을 사용 식별자가 생성되는 경우에는 @GeneratedValue 어노테이션을 사용하고 식별자 생성 전략을 선택해야 함 사용 예시 @Entity public class Board { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Lon..
모던 자바 인 액션을 보고 리액티브 스트림스의 백프레셔는 무엇이고 왜 좋은지 라는 의문이 생겨 정리하였습니다. 참고한 글 Armeria로 Reactive Streams와 놀자! - 1 [리액티브 프로그래밍] Publisher, Subscriber 그리고 Subscription - 2 관찰자(Observer) 패턴이란? 리액티브 프로그래밍의 기초 관찰자 패턴에는 이벤트를 발생시키는 역할(주체)와 이벤트를 수신하는 역할(관찰자)가 있다. 주체(subject)는 관찰자(observer)에게 상태변경을 알려준다. 관찰자 패턴의 문제점과 결합 옵저버 패턴에서는 발행자(publisher)가 구독자(subscriber)에게 밀어 넣는 방식으로 데이터가 전달 발행자는 구독자의 상태를 고려하지 않고 데이터를 전달하는 ..
패스트캠퍼스 남궁성님 강의 보고 정리하였습니다 filter란? 공통적인 요청 전처리와 응답 후처리에 사용됨(로깅, 인코딩 등) 여러 서블릿들에서 위의 그림처럼, 공통적으로 발생하는 전처리, 후처리를 필터를 통해 중복 제거가 가능 따라서 서블릿들에서는 본래의 맡은 처리만 즉 하나의 책임만 가질 수 있게 됨 filter의 처리 과정 아래의 과정을 거쳐 요청이 처리된다고 할때 ( ->) 처리되는 과정은 다음과 같다. 요청이 오면 처음 filter1의 전처리 진행 filter2 호출 filter2 전처리 서블릿 호출 후 메서드 처리 filter2 후처리 filter1 후처리 filter의 사용 예시 아래와 같은 서블릿이 있을 때, 전처리, 후처리 등 분리해야 할 코드가 보인다. ExampleServlet.jav..
카테캠 실강을 따라하던 중 인텔리제이에서 빌드 할 경우, 계속 아래와 같은 오류가 나왔다. ✘ 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..
어느날 내가 포크한 레포를 Clone할 때 아래와 같은 오류를 발견했다. remote: Write access to repository not granted. fatal: unable to access 'https://github.com/(내 레포)/': The requested URL returned error: 403 아니... push도 아니고 Clone 받는 건데... 뭐가 문제니...?? 구글링을 계속해서 해봤지만 나온 해결책은 push 시에 저 오류가 뜨는 것에 대한 것이라 적절하지 않았다. 그렇다가 찾은 해결 방법 저 오류를 만나기 전에 유저 네임과 비밀번호를 입력해야 하는데, 이때 비밀번호에 토큰을 입력하게 된다. 나는 토큰이 만료되어 오류가 나는 줄 알고 새로 발급하고 그랬는데,,, 이 ..
컨트롤러 단위 테스트 4주차 과제는 컨트롤러 단위 테스트였다! 과제의 상세 설명은 아래와 같다. 컨트롤러 단위테스트를 작성한뒤 소스코드를 업로드, stub을 구현하시오. Stub이란? 과제를 구현하기 위해서는 일단 Stub에 대해 이해하고 있었어야 했는데 Stub에 대해 이해하는 것에 시간이 조금 걸렸던 것 같다. 여러 서치와 강의 자료를 통해 내가 이해한 Stub을 간단하게 말하자면 어떤 함수를 실행할 때, 그 결과값을 임의로 설정하는 것이다. 컨트롤러 테스트에서는 보낸 요청에 대해 응답이 적절한가를 검증하기 때문에 결과값이 실제 데이터인지는 중요하지 않다. Stub 적용 예제를 통해 Stub을 적용해보자. 아래는 장바구니 전체 내역 보기에 대해 진행한 테스트이다. 일단, 테스트를 하기전에 Contro..
우리 프로젝트에서 관리자의 역할은 크게 2가지이다. 필수정보 수정 시 수락/반려 문서 생성 시 수락/반려 필수 정보 수정 시 시나리오 먼저 수락했을 경우 유저가 문서의 필수 정보인 카테고리, 위치, 이름 중 수정할 정보를 입력한다. 요청이 접수되면 관리자가 요청을 수락한다. 수락된 요청을 통해 문서의 필수 정보들을 업데이트한다. 수정 전의 문서는 문서 아카이브 테이블로 저장한다. 처리된 요청은 삭제한다. 반려했을 경우 유저가 문서의 필수 정보인 카테고리, 위치, 이름 중 수정할 정보를 입력한다. 요청이 접수되면 관리자가 요청을 반려한다. 처리된 요청은 삭제한다. 새 문서 생성 시 시나리오 먼저 수락했을 경우 유저가 새 문서의 필수 정보인 카테고리, 위치, 이름을 입력한다. 요청이 접수되면 관리자가 요청을..
DTO란 Data Transfer Object, 말 그대로 데이터를 전송하기 위한 객체이다. 왜 DTO를 사용해야 하는가 위와 같은 사용자의 정보를 저장하는 엔티티가 있다고 생각을 해보자. 우리는 해당 엔티티를 통해 DB에 사용자의 정보를 저장하게 된다. 만약 사용자들의 정보를 조회하는 요청을 왔다고 할 때, entity를 바로 전달하게 되면 password와 같은 불필요한 정보들이 노출될 수 있다. 또한 UI 계층에서 엔티티 내의 메서드를 호출하여 Model의 값이 변경될 수도 있다. 때문에 DTO 객체를 통해 필요한 데이터만 전달하고 Model을 보호 할 수 있다. 보일러 플레이트 코드 보일러 플레이트 코드는 반복적으로 재사용되는 코드를 말한다. 보통 데이터 무결성을 위해 개발을 하다 보면 gette..
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 강의 시간에 최..