Mock 이란? 모조품이란 뜻으로, 테스트 시 당장 구현하기 어려운 객체를 대신해 가짜로 생성해놓은 객체이다. Mock 테스트 코드 @AutoConfigureMockMvc @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK) public class ProductRestControllerTest { @Autowired private MockMvc mvc; @Test // 전체 상품 목록 조회 public void findAll_test() throws Exception { // when ResultActions resultActions = mvc.perform( get("/products") ); String responseBody = ..
내가 작성한 코드에 대해 리뷰를 받는 시간을 가졌다. 꼼꼼하게 리뷰해주셔서 너무 감사하다 😊 Q&A Q1. 데이터 타입의 범위 데이터베이스 설계시 데이터 타입의 범위를 어느정도 설정해야 좋을지 궁금합니다. 50글자의 글을 저장할때, 여유를 두고 varchar(200)을 할지, varchar(500)을 하는 것이 좋은지 그 범위의 정도가 궁금합니다. 실무에서는 데이터베이스 설계하는 분과 함께 의논한다고 하셨는데, 어느정도까지 개발자가 임의로 결정해야하는지 궁금합니다.🤔 Answer 데이터의 범위에 정답은 없다고 생각합니다. 해당 테이블이 어떤 도메인에서 어떠한 데이터를 저장하는 컬럼인지 생각해보고 예상되는 데이터 범위를 생각하여 지정을 하고 있습니다. DBA분과도 얘기를 나누지만 개발단계에서 도메인에 대한..
프레임워크와 라이브러리의 차이 : 제어 흐름 프레임워크 : 애플리케이션 코드가 프레임워크 안에서 수동적으로 동작한다. 제어의 흐름이 프레임워크에게 있다. (제어의 역전 IoC) 라이브러리 : 필요할때마다 능동적으로 라이브러리를 호출한다. 제어의 흐름이 개발자(나)에게 있다. Spring Security 스프링 프레임워크 기반의 웹 어플리케이션에서 보안기능을 구현할 수 있도록 지원하는 프레임워크 인증 및 권한 부여를 위한 다양한 기능을 제공한다. ex) 폼 기반 인증, HTTP 기본 인증, OAuth2, JWT(JSON Web Token), CSRF 방어, XSS 방어 Spring Security - 로그인 과정은 아래와 같다. 1. /login 요청이 오면 톰캣은 request 객체를 만들어 보낸다. 2..
친구비 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 2 초 512 MB 9350 4004 3052 42.062% 문제 19학번 이준석은 학생이 N명인 학교에 입학을 했다. 준석이는 입학을 맞아 모든 학생과 친구가 되고 싶어한다. 하지만 준석이는 평생 컴퓨터랑만 대화를 하며 살아왔기 때문에 사람과 말을 하는 법을 모른다. 그런 준석이에게도 희망이 있다. 바로 친구비다! 학생 i에게 Ai만큼의 돈을 주면 그 학생은 1달간 친구가 되어준다! 준석이에게는 총 k원의 돈이 있고 그 돈을 이용해서 친구를 사귀기로 했다. 막상 친구를 사귀다 보면 돈이 부족해질 것 같다는 생각을 하게 되었다. 그래서 준석이는 “친구의 친구는 친구다”를 이용하기로 했다. 준석이는 이제 모든 친구에게 돈을 주지 않아도 된다! ..
엔비스카의 영혼 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 2 초 512 MB 1045 365 280 36.269% 문제 한길이는 수습 마법사이며, 마법사의 영혼을 받기 위해 줄을 서있다. 한길이는 강력한 힘을 얻기 위해 인성을 버렸다. 그리고 최고로 강력한 엔비스카의 영혼을 받기 위해서 새치기를 하기로 결심했다. 한길이의 앞에 N명의 사람들이 줄 서있다. 1초가 지날 때마다 줄의 맨 앞 사람은 영혼을 받고 집에 간다. 그리고 1초마다 한길이는 다음과 같은 행동을 할 수 있다. 기다리기 a명 앞으로 가기 (앞에 최소 a명 있을 때) b명 앞으로 가기 (앞에 최소 b명 있을 때) 단, 한길이는 새치기에는 도가 텄기때문에, 모든 행동을 0초만에 할 수 있다. 예를 들어 N = 5, a = 1, ..
Reflection(리플렉션) 실행중인 프로그램의 클래스,메서드,필드 등에 대한 정보를 얻거나 조작하는 기능을 제공하는 API 사용 상황 1. 런타임시 동적으로 클래스 로드 2. 클래스의 구조, 메서드, 필드 등에 대한 정보를 가져와서 분석 3. 클래스의 인스턴스를 생성하거나 메서드를 호출하거나 필드의 값을 변경해야하는 경우 Annotation(어노테이션) @어노테이션이름(속성1=값1, 속성2=값2, ...) 프로그램 코드에 메타 데이터를 추가하는 기능을 제공하는 것으로, 컴파일러나 런타임 시에 코드를 처리하는 도구들에게 추가적인 정보 제공 아픈 나무에게 약을 주어야한다. 모든 나무를 살펴서 아픈 나무를 찾는 것보다, 아픈 나무는 깃발로 표시해서 바로 찾을수 있으면 좋을 것이다. 여기서 깃발은 어노테이션..
ERD 다이어그램 연관관계 작성 User - Cart 1:N 관계 유저는 여러 장바구니 {선택 옵션, 옵션 개수}들을 가지고 있다. Product - Option 1:N 관계 상품은 여러 개의 옵션을 가지고 있다. Cart - Option 1:1 관계 유저의 장바구니 하나는 하나의 옵션을 가지고 있다. User - Order 1:N 관계 한명의 유저는 여러 번의 주문을 할 수 있다. Order - Item 1:N 관계 주문 하나는 여러개의 결제 상품을 가질 수 있다. Option - Item 1:N 관계 하나의 옵션은 여러개의 결제 상품을 가질 수 있다. ex1) 유저가 옵션을 재주문했을때 한 옵션에 대해 결제 상품 여러개를 가질 수 있다. ex2) 여러명의 유저가 같은 옵션을 구매했을때 한 옵션에 대한..