묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Practical Testing: 실용적인 테스트 가이드
Order 단위 테스트
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요 박우빈님, 좋은 강의 잘 듣고 있습니다.강의 영상 속에서 Order 단위 테스트 중 orderProducts에 관한 단위 테스트는 실시하지 않아 혼자 직접 진행했습니다.가장 먼저 다음과 같이 단위 테스트를 작성해보았습니다.@DisplayName("주문 생성 시 주문에 해당 상품이 포함된다.") @Test void orderProduct() { // given LocalDateTime registeredDateTime = LocalDateTime.now(); List<Product> products = List.of( createProduct("001", 1000), createProduct("002", 2000) ); // when Order order = Order.create(products, registeredDateTime); // then assertThat(order.getOrderProducts()).hasSize(2) .extracting("Product") .containsExactlyInAnyOrder( createProduct("001", 1000), createProduct("002", 2000) ); }하지만 위 사진처럼 Product 객체가 다르다고 판단되어 단위 테스트가 실패합니다.(createProdcut()를 이용한 새 객체 생성이 원인이라고 생각합니다.)그래서 다음과 같이 createProduct()를 빼서 테스트를 진행하니 성공했습니다.@DisplayName("주문 생성 시 주문에 해당 상품이 포함된다.") @Test void orderProduct() { // given LocalDateTime registeredDateTime = LocalDateTime.now(); Product product1 = createProduct("001", 1000); Product product2 = createProduct("002", 2000); List<Product> products = List.of( product1, product2 ); // when Order order = Order.create(products, registeredDateTime); // then assertThat(order.getOrderProducts()).hasSize(2) .extracting("Product") .containsExactlyInAnyOrder( product1, product2 ); }결론적으로 단위 테스트는 성공했지만 몇 가지 궁금증이 있습니다.orderProducts의 대한 단위 테스트(위 코드)가 적합한지orderProducts는 Order(this), Product를 갖고 있는데 Order(this)도 함께 검증하는게 맞는지긴 글 읽어주셔서 감사합니다.
-
미해결스프링 핵심 원리 - 기본편
@PostConstruct 사용 목적
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@PostConstruct를 사용하는 근본적인 이유는 빈 등록 이후에 빈 객체의 필드를 초기화 하기 위함인가요? 아래 코드와 같이 동작하는 것이 맞을까요?//빈으로 등록하자 마자 init() 메소드를 호출해서 repositoryName 초기화 @Repository public class DatabaseMemberRepository{ private String repositoryName; @PostConstruct public void init(){ this.repositoryName = "DatabaseMemberRepository "; } }만약 1번 내용이 맞다면 아래 코드처럼 @PostConstruct를 사용하지 않고 그냥 main 메소드에서 setter로 초기화 해도 같은 로직이라고 보면 될까요?public class Application { public static void main(String[] args) { ApplicationContext ac = new AnnotationConfigApplicationContext(DatabaseMemberRepository.class); final MySqlMemberRepository bean = ac.getBean(DatabaseMemberRepository.class); bean.setRepositoryName("DatabaseMemberRepository"); } }그럼에도 불구하고 @PostConstruct를 사용하는 이유는 빈으로 등록되고 @PostConstruct가 붙은 메소드가 자동으로 실행되므로 개발자가 실수로 필드 초기화를 까먹고 NPE 같은 오류가 발생하지 않도록 방지하기 위함인가요?
-
미해결실전! Querydsl
QHello 빌드관련 질문드립니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]3.X 버전 설명처럼dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' // QueryDSL 추가 implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" annotationProcessor 'jakarta.annotation:jakarta.annotation-api' annotationProcessor 'jakarta.persistence:jakarta.persistence-api' } tasks.named('test') { useJUnitPlatform() } clean { delete file('src/main/generated') }위와 같이 코드를 넣어 빌드를 하면저는 build 안에만 QHello가 생성되고다른 분들과 같이 src/main에 generated는 전혀 생성되지않습니다.강의에서는 QHello를 임포트 할 때, src/main 쪽의 QHello를 사용하는것 같은데, 저는 build 경로에서 직접 사용해야 되는 문제가 있습니다.실제 사용하려면 src/main를 이용해야 될 것 같은데어떻게 해야 src/main에 generated의 QHello를 생성할 수 있을지 문의드립니다.
-
해결됨해커를 위한 iOS 앱 모의 해킹 전문 과정
Fairplay DRM 복호화
현재 윈도우랑 리눅스 둘 다 진행해 보았는데 윈도우는 iTunesDriver64_0205.exe파일이 설치가 완료되지 않고 중지되서 실습을 진행할 수 없고 리눅스에서는 Failed to enumerate applications: no USB CDC-NCM interface found 오류가 발생하는데 해결 방법 있을까요?
-
미해결F6-비전공자·일반인을 위한 기업재무회계의 이해와 활용
강의자료 요청 드립니다.
안녕하세요.강의자료 요청 드립니다.아래 개인메일로 보내주시면 감사하겠습니다.
-
미해결스프링 시큐리티 OAuth2
동의 후 인증 절차의 구현이 변경됐습니다.
Scope 동의단계2, 즉 최종사용자의 동의가 이루어졌을 경우이 요청은 POST /oauth2/authorize 로 보내지는데요이 과정에서 내부구현의 차이가 강의 버전과 맞지 않아서 코드를 확인해봤습니다.1. 0.4.0 버전부터이때 작동하는 AuthenticationConverter 는 OAuth2AuthorizationConsentAuthenticationConverter 입니다.여기서 OAuth2AuthorizationConsentAuthenticationToken 가 구성됩니다.2.OAuth2AuthorizationConsentAuthenticationToken 의 처리는 OAuth2AuthorizationConsentAuthenticationProvider 가 맡게 됩니다.여기서 code 생성 절차가 진행되는 차이가 있습니다.
-
해결됨김영한의 실전 자바 - 중급 2편
자바에서 구현된 hashset 에서 hashmap을 쓰는이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]굳이 value에 더미값을 집어넣어서까지 가져와 쓰는 이유를 잘 모르겠네요 애초에 value가 없는 set을 구현 해서 쓰면 되는 거 아닌가요? 메모리적으로 낭비라고 생각되는데 어떤 이유 인지 궁금합니다 감사합니다
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
ArrayEx2 질문입니다 ㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]똑같이 따라했는데 저는 5까지 정수를 입력한 후에 출력이 안나오고 그 후로 뭘 더 입력하면 오류가 나와버려요 ...ㅠㅠ.
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
AXI_LIte
안녕하세요.강의에서 나온 시뮬레이션 파형과 , 제가 직접 실행해본 파형이 차이가 있는데, 이것은 그냥 vivado 툴 버전 차이로 인한 것인가요?
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
C언어 기출문제 변형 배열과 포인터 증가 문제 질문있습니다
안녕하세요문제에서전치연산으로++*ptr은 포인터가 가르키는 값이 증가되는데왜 후치연산으로 *ptr++ 할때는 가르키는 값이 아니라 가르키는 주소가 증가되는건가요? 강의 설명을 봐도 이해가 잘 안가네요ㅠㅠ
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
MTV, MVC 질문
원래는 장고 프레임워크를 주로 이용했었습니다.MTV와 MVC의 View가 장고는 비즈니스로직을 처리해서 Template에 주고, M은 스프링의 Repository와 비슷하다고 생각했습니다. 조금 헷갈리는게,MVC일 때 V는 확실히 랜더링 부분만 담당하는 것이 이해가 갑니다. 다만 Controller가 비즈니스 로직을 담당하는데, Service와 의미가 겹치지 않나 싶었고보통 django에서는 view에서 처리한 데이터를 Model을 통해 넣는다던지 아니면 model을 통해 가져온 데이터를 view로 하여금 template에 전달한다는 느낌이었는데 오늘 강의의 그림을 보니 controller -> model -> view 인 것 처럼 보여서 그러면 MTV의 M과 MVC의 M은 또 많이 다른건가 싶었습니다. 심지어 이것을 더욱 헷갈리게 하는 것이 Repository인데... MVC인데 뭔가 MVC+Service+Repository인건가 싶기도 하고 헷갈리네요 ㅠㅠService - Controller : 프로젝트가 거대해지면 비즈니스로직은 서비스에서 처리하고 컨트롤러는 서블릿 형태의 역할로만 남는건가 싶기도 하고(추측)Model-Repository : 레포지토리가 아무리 봐도 후에 JPA ORM을 사용할 수 있는 영역일 것 같은데, 그렇다면 오늘 강의의 그림에서 보여진 Model은 단순히 컨트롤러에서 View로 데이터 전달을 위한 임시보관소인가 싶습니다. Model은 그림상 DB랑 연결되는 느낌은 없는데.. 아니면 Model은 껍데기고 Model이 리포지토리에 구축된 JPA ORM을 이용해서 DB랑 통신하는 개념일지... 질문이 장황한데... 헷갈려서 그렇네요 답변 주시면 감사하겠습니다:)
-
해결됨Godot Engine 으로 시작하는 첫 게임 개발
감사합니다!
캄사합니다! 언리얼 공부를 하다 쉬는겸 배우고 있습니다. 파이썬에 대해 공부한 적이 별로 없어 익숙해지는데 어려움을 겪었지만, 그래도 재미있게 공부할 수 있었습니다!. 앞으로 언리얼 하다 때려치고 싶을때 와서 열심히 가지고 놀겠습니다!
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
강의자료 요청드립니다.
강의자료 요청드려요. ssangkal84@naver.com
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
글로벌 Validatior, Bean Validation
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요. 선생님 학습 도중 이해가 되지 않아 질문 드립니다. 1. 스프링 부트는 자동으로 글로벌 Validator로 등록한다.위 말은 즉, 글로벌 Validator가 Bean Validation인가요 ?2. 필드 타입 오류의 발생유무의 상관없이 글로벌 Validator는 적용되고 Bean Validation(ex : itemValidator)는 적용이 되거나/안되거나 인가요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
소스가 전혀 실행이 안됨
강의 1편때의 소스로도 실행이 안되서,다시 2편 소스로 수행하면 에러메시지가 잔뜩 나오는데너무 시작부터 불성실하게 시작하는거 아님?지금 소스 받아서 환경을 맞춰주고 강의를 시작해야지 대뜸시작하면 실행도 안되는 소스로 뭐 어떡하라고.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
ScannerWhileEx3 에서 질문있습니다 !
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]조금 논외 질문이긴 하지만 while (true)로 무한루프를 돌려서 -1을 입력한 후 숫자들의 합계와 평균이 나오게 만들고나서도 프로그램이 종료가 안되고 다음 계산을 하는 형식으로는 어떤식으로 코딩을 할 수 있을까요? ㅠㅠex1234총합 10을 출력 후 그대로 이어서 프로그램이 종료가 되지않구 다음 숫자를 입력했을때 다시 이후부터 누적된 총합을 계싼하는 형식으로도 코딩이 가능할까요?그리구 아예 총합을 초기화 후 다시 출력하는 방식도 가능한지 궁금합니다 ...if로 넣어서 혼자 만들어보려고했는데 변수가 안만들어지는건지 계속 컴파일 오류가 떠서요 ㅠㅠ
-
미해결오라클 성능 분석과 인스턴스 튜닝 핵심 가이드
full scan 시 OS I/O 질문있습니다.
안녕하십니까. 강의 너무 잘 듣고 있습니다.질문이 생겨서 글을 남겨 봅니다.질문 1.index scan 시 buffer cache에 해당 블록이 없으면 디스크에 접근해야하는 random i/o가 발생하니까 sar 명령어로 보면 i/o wait 값이 20% 이상 올라가는건 이해가 됩니다.궁금점은 용량이 큰 테이블을 full scan 시, direct path read가 발생할 것이고, 이는 디스크에서 바로 서버프로세스로 블록을 로드 하잖습니까. 근데 이떄도 분명히 i/o가 발생할텐데 왜 sar 명령어에서 i/o wait 값이 많이 올라가지 않을까요?? full scan은 multi block 으로 i/o를 읽기 때문에 그런건가요??질문 2.그리고 강의에서 말씀해주셨던 것 처럼 full scan시 테이블 용량이 1M(default)가 넘으면 direct path read가 발생한다고 하셨는데, 사실 요즘 시스템의 테이블은 거의다 1M이 넘을 것 같습니다. 그런데도 db file scattered 이벤트는 잘뜨던데 왜 그런걸까요?감사합니다
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
@Transactional 했는데 롤백 문구가 안 떠요
다음과 같이 코드를 실행하면 강의 화면처럼 "Rolled back transaction for test"가 나와야 하는데 그렇지 않고 H2에서도 컬럼만 있는 빈 테이블입니다. 뭐가 문제일까요? package jpabook.jpashop; import com.fasterxml.jackson.databind.deser.std.StdKeyDeserializer; import org.assertj.core.api.Assertions; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.annotation.Rollback; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.annotation.Transactional; @RunWith(SpringRunner.class) @SpringBootTest public class MemberRepositoryTest { @Autowired MemberRepository memberRepository; @Test @Transactional public void testMember() throws Exception { //given Member member = new Member(); member.setUsername("memeberA"); //when Long saveId = memberRepository.save(member); Member findMember = memberRepository.find(saveId); //then Assertions.assertThat(findMember.getId()).isEqualTo(member.getId()); Assertions.assertThat(findMember.getUsername()).isEqualTo(member.getUsername()); } }
-
미해결스프링 부트 - 핵심 원리와 활용
톰캣설정 인텔리J 무료버전 설정
윈도우에서 가이드데로 진행했는데 실행이 실패했습니다.bulid.gradle에는 아래와 같이 똑같이 코딩했습니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
쓰기 지연 저장소?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.강의를 듣다보니 flush 과정에서 쓰기 저장 지연소에 SQL이 저장된다고 설명하셨는데 이것이 뭔지 알 수 있을까요?