묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
java.lang.NullPointerException: Cannot invoke because is null 이 떠요
강의를 보며 따라하면서 기존 클래스들을 변형하여 진행할 때 test 코드 작성 시 다음과 같이 에러가 뜹니다처음에는 이런 문구가 뜨고 스프링부트 3.x 를 쓰고있어서 @ExtendWith(SpringExtension.class) //junit 5 로 변경하고 나서야 다음과 같은 문구가 뜹니다.강의에서 @RequiredArgsConstructor 를 쓰면 final을 선언해줘야한다고 해서 강의와 동일하게 진행했으나 service의 join에서 null값이 생기는 것 같은데 어디가 문제인지 모르겠습니다.java.lang.NullPointerException: Cannot invoke because "this." is nullbuild.grable 은 다음과 같습니다.plugins { id 'java' id 'org.springframework.boot' version '3.0.7' id 'io.spring.dependency-management' version '1.1.0' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies {implementation 'org.springframework.boot:spring-boot-starter-data-jpa' // implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-validation' //유효성 검증 implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' //web view implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' // runtimeOnly 'com.mysql:mysql-connector-j' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' // testImplementation 'org.springframework.security:spring-security-test' //JUnit4 추가 testImplementation("org.junit.vintage:junit-vintage-engine") { exclude group: "org.hamcrest", module: "hamcrest-core" } } test { useJUnitPlatform() } tasks.named('test') { useJUnitPlatform() }Userpackage domain; import jakarta.persistence.*; import lombok.Builder; import lombok.Getter; import lombok.Setter; @Entity @Getter @Setter //@NotNull public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id", updatable = false) private Long id; //auto increment @Column(name = "email", nullable = false) private String email; //id @Column(length = 200 ,name ="password") private String password; @Column(name = "name", nullable = false) private String name; @Column(name= "phone" ,nullable = false ) private String phone; @Builder public User(){ this.email =email; // this.name=name; } } UserRepositorypackage domain; import jakarta.persistence.EntityManager; import jakarta.persistence.PersistenceContext; import org.springframework.stereotype.Repository; import java.util.List; @Repository public class UserRepository { @PersistenceContext private EntityManager em; public void save(User user){ em.persist(user); } public User findOne(String email) { //email 값으로 멤버값 반환 return em.find(User.class, email); } //리스트조회 public List<User> findAll(){ return em.createQuery("select u from User u", User.class) .getResultList(); } //특정값으로 조회 public List<User> findByName(String name) { return em.createQuery("select u fromUser u where u.name = :name", User.class) .setParameter("name", name) .getResultList(); } } UserServicepackage domain; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; @Service @Transactional(readOnly = true) @RequiredArgsConstructor //final있는 field 로 생성자 public class UserService { private final UserRepository userRepository; // @Transactional public String join(User user){ validateDuplicateMember(user); // 중복 회원 검증 userRepository.save(user); //error : line 13 선언변수 그대로 가져와야함 return user.getEmail(); } private void validateDuplicateMember(User user){ List<User> findUsers = userRepository.findByName(user.getName()); if(!findUsers.isEmpty()) { throw new IllegalStateException("이미 존재하는 회원입니다."); } } } UserServiceTestpackage domain; import org.junit.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.annotation.Transactional; import static org.junit.Assert.assertEquals; //메모리 모드 DB 연계 테스트 //@RunWith(SpringRunner.class) //junit 4 @ExtendWith(SpringExtension.class) //junit 5 @SpringBootTest @Transactional //rollback public class UserServiceTest { @Autowired UserService userService; @Autowired UserRepository userRepository; @Test public void 회원가입() throws Exception { //Given User user = new User(); user.setEmail("fitplace@naver.com"); //email 로 검증 -> name은 중복 존재 가능성 o //When String saveEmail = userService.join(user); //Then assertEquals(user, userRepository.findOne(saveEmail)); } // @Test(expected = IllegalStateException.class) // public void 중복_회원_제외() throws Exception { // //Given // // //When // // //Then // // } // }
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
++i. i++에대한 간단한 질문
안녕하세요 항상 수업 잘 듣고 있습니다.다름이아니라 어셈블리 코드로 보면 ++i가 i++보다 아주 약간의 리소스가 덜든다고 배워물론 아주 미묘한 차이겠지만 필요한 상황이 아니면 늘 ++i를 쓰려는 습관을 들려고하고있습니다.근데 선생님 코드는 for문을 돌리든 뭘할때 필요한 상황이 아니면 항상 i++로 코드를 작성하시던데 혹시 어떠한 사유가 있는건지 하여 질문드립니다...
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
atomic<uint32> _popCount 관련
안녕하세요. 궁금한 게 있습니다._popCount에 관해 질문이 몇 개 보이는데 좀 다른 내용이지만 저도 관련해서 질문합니다._popCount 변수가 Pop 함수를 실행하는 쓰레드 개수를 추적하는 것인데요, Pop함수를 실행하는 쓰레드의 개수가 아닌, Node* oldHead = _head;이 코드에서 얻게 되는 동일한 포인터를 참조하는 쓰레드의 카운트를 추적해야 하는게 아닌가 하는 의문이 듭니다. 이를테면 Pop을 실행하는 쓰레드가 한 50개가 있다고 하면 계속해서 _popCount는 1이 될 수가 없을 거 같은데요, 실제로 테스트 해봤는데 Delete 함수로 진입을 안 합니다. 제가 잘 못 생각하는 부분이 있을까요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
회사에서는 Spring Data JPA를 사용하지 않고 , Query DSL 만 사용합니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 영한님.얼마전에 스타트업에 신입 백엔드 개발자로 입사하였고, 작년부터 영한님 강의를 꾸준히 들어오던 수강생 입니다!저희 회사는 데이터 접근 기술로써 Query DSL로 통일되어 있었는데요, 왜 Spring Data JPA를 사용하지 않냐고 대표님께 문의드리자, Query DSL로 모든 기능을 다 수행할 수 있기에,코드의 일관성과 학습 기술을 줄이기 위해서 라고 답변 받았습니다. 그러나 저는 애초에 JPA를 사용하는 근본적인 이유중 하나가 바로 직접 SQL을 작성하지 않기 때문이라고 생각하고 있기 때문에 , Spring Data JPA를 사용하는게 어떻겠냐고 다시 한번 문의드리고 싶은 상황입니다. 영한님 께서 신입으로 입사한 저의 입장이셨다면, 문의를 드렸을지 생각을 여쭙고 싶습니다. 항상 좋은 강의 및 답변 감사합니다.
-
미해결[하루 10분|C++] 누구나 쉽게 배우는 C++ 프로그래밍 입문
추상화와 클래스편에서요
main함수에서 Stock temp; 로 선언을 했는데Stock *temp; 로 선언하는 것과의 차이는 무엇인가요?어떤 경우에 위처럼 하는지 아래처럼 하는지 궁금합니다
-
해결됨Practical Testing: 실용적인 테스트 가이드
강의 내용중에 궁금한게 있습니다.
Presentation Layer 테스트 (2)0:59:00 부터 말씀해주신 내용이 대략 이렇습니다.서비스 로직이 커지게 되어 분리를 하거나 모듈화하여 사용한다면controller dto를 하위 레이어인 service에서 알고있으면필요없는 Bean Valid의 의존성을 추가해야하고, 하위레이어가 상위 레이어에 의존성이 생기게 되어 해당 서비스 로직을 다른 컨트롤러에서 사용하고 싶을때 발목을 잡는다.라고 말씀해주셨습니다. 전제 : 확장할 일도 없고, 이 서비스는 해당 컨트롤러에서만 사용하게 되는 구조일 경우Service용 Dto를 만들지 않고 Controller Dto에서 Entity로 변환해서 Service에 넣어주시나요 ?아니면 코드의 일관성을 생각해서 몇분 안걸리니까 만들어서 사용하시나요? 그리고 추가로 궁금한게 있습니다.service 패키지가 api 패키지 내에 존재하는데서비스가 확장되고 모듈화가 되어 사용한다거나 ,다른 컨트롤러에서도 그 서비스를 사용하게 된다면서비스 패키지는 도메인 패키지쪽으로 넣어서api (controller,advice,advice dto),domain( entity(entity,repository), service(service,dto)) 같은 구조로 변경을 하시는지 궁금합니다.그리고 현재 프로젝트에서 api 패키지 안에 service 패키지를 넣으신 이유도 궁금합니다. !! 질문의 영역을 벗어났다는 것을 알지만, 답변을 해주실 수 있으실까요 감사합니다(__)신뢰할만한 답변을 받을 곳이 없어서 질문을 남겨봅니다..답변하시기 어려우시다면 키워드라도 알려주시면 감사합니다!!
-
해결됨스프링 부트 웹 개발 입문 - 따라하며 배우기
가격수정...404오류
404 오류 입니다...소스는 구글로 공유했습니다..
-
해결됨Windows 시스템 프로그래밍 - 기본
소스코드 분석 팁 관련 질문입니다.
안녕하십니까, 시스템 프로그래밍 강의를 수강중인 문민철입니다.강의를 듣다가, F12 키를 이용해서 시스템 함수들을 확인해 보고 있습니다. (ex: synchapi.h의 CreateEventW 함수)헤더 파일은 함수의 선언만 되어 있고, 실제 내부 정의는 소스 파일에 되어 있을 텐데, visual studio에서 함수 선언 코드 -> 함수 정의 코드로 빠르게 넘어갈 수 있는 팀이 혹시 있을까 하여 질문드립니다.감사합니다!
-
미해결
강의만 듣고 프로젝트를 만들 수 있을까요??
전공자이긴 하지만 프로젝트 경험이 졸업 작품 뿐이며, 학교에서 배운 cs지식만 기억나요 ㅜㅜ 졸업 후 정처기와 sqld만 취득 후 국비 들으려고 했지만 지방이라 국비 학원 자체가 많이 없네요...강의 들으면서 개인 프로젝트 해볼까 하는데 다룰 수 있는 언어가 없어도 강의들으면서 하나씩 따라하면서 토이 프로젝트 정도는 만들 수 있을까요??? 혹시 프로젝트 따라할 만한 좋은 프로젝트 있으면 추천 부탁드립니다ㅜㅜ
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
양방향 괸계에서 관계 설정 위치에 대한 질문이 있습니다.
회원 - 주문 관계에서 관계를 설정할 때는 주문 엔티티에서 public void setMember(Member member) { this.member = member; member.getOrders().add(this); }이렇게 관계를 설점함과 동시에 주문- 주문상품 -상품 관계를 설정할 때도 주문 엔티티에서 관계를 설정하더라구요public void addOrderItem(OrderItem orderitem){orderItems.add(orderitem);orderitem.setOrder(this);}이 과정은 어느 엔티티에 하던 상관 없는건가요?
-
미해결고수가 되는 파이썬 : 동시성과 병렬성 문법 배우기 Feat. 멀티스레딩 vs 멀티프로세싱 (Inflearn Original)
경쟁상태,교착상태, 메모리영역
안녕하세요 선생님 !데드락 강의 내용 중 질문이 있어 글 남깁니다.[1] 경쟁상태, 교착상태 개념저는 mutex나 semaphore가 경쟁상태를 예방하기 위해 사용하는 개념으로 알고 있습니다. 그리고 mutex나 semaphore의 사용으로 인해 발생할 수 있는 문제가 교착상태라고 알고 있습니다. 그런데 강의에선 mutex나 semaphore가 경쟁상태나 교착상태를 예방하기 위해 사용된다고 해서잠시 개념의 혼동이 오고 있습니다.어떻게 mutex나 semaphore가 교착상태의 원인이 아니라 교착상태를 해결할 수 있는 개념인지 설명 부탁드립니다.[2] 메모리영역 질문class FakeDataStore: def __init__(self): self.value = 0 에서 저는 value는 스택영역에 쌓이고 0 이라는 숫자 객체는 힙영역에 쌓이는 걸로 이해하고 있는데 강의에선 0이라는 객체가 데이터영역에 올라간다고 하셔서 제가 잘못 알고 있는것인지 문의드립니다.
-
해결됨Practical Testing: 실용적인 테스트 가이드
테스트코드에서만 적용되는 yml 설정을 하고 싶습니다.
안녕하세요! 실무에서 겪었던 문제에 대한 조언을 구하고 싶습니다.test 하위에 application.yml을 만들면 테스트코드 돌릴 때 해당 yml 설정을 따른다고 배워서 적용했습니다. application-local.ymlapplication-prod.yml이런 식으로 뒤에 - 프로필이 붙은 형태이고테스트 폴더 하위에도application-local.yml파일을 만들었습니다. DB 연결이 안되길래 prod.yml 쪽으로 연결 시도를 하는거 같아테스트 코드에@ActiveProfiles("local")을 붙여주었고 테스트 서버 DB에 잘 붙어서 테스트코드를 작성했습니다.(main/applicatino-local.yml 역시 테스트 서버 DB에 연결되어 있는 상태)테스트코드를 작성하다보니 이게 불편하더라구요그래서 h2 인메모리 DB를 사용하고자 테스트 코드용 yml에 설정을 해주었습니다.jpa ddl auto 설정도 create 였구요..ㅎㅎㅎ 동료 개발자분이 테스트 서비스 로그인이 안된다길래 보니 테스트 디비 데이터가 다 날아갔습니다,,,하하하하정말 식은땀이 주륵..... 다행히 얼마 전에 다른 작업으로 백업을 해둔게 있어서 그걸로 복구했습니다만 정말 아찔했습니다 ㅠㅠ main/appication-local.yml 의 datasource url로 연결하고test/appication-local.yml 의 ddl-auto: create 설정을 따른 것으로 보여지는데왜 이런걸까요?저는 test/appication-local.yml 설정만 따를 거라고 생각했는데.. 제가 원하는 것은 local에서 서버를 직접 띄워서 사용할 때는 test 서버 db에 연결하고 싶고테스트 코드 돌릴 때는 인메모리 h2를 사용하고 싶습니다.이런 경우에 어떻게 사용하면 좋을까요? main/applilcation-local.ymldatssource: 테스트 서버 DB test/applilcation-local.ymldatssource: 인메모리 h2 DBjpa ddlauto: create -> 테스트 서버 디비 데이터 다 날아감내가 원하는 것 : 테스트 코드는 test/applilcation-local.yml 설정만을 따라 인메모리 DB 사용
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
main/application.yml, test/application.yml
안녕하세요! 실무에서 겪었던 문제에 대한 조언을 구하고 싶습니다.강의를 들으며 test 하위에 application.yml을 만들면 테스트코드 돌릴 때 해당 yml 설정을 따른다고 배워서 적용했습니다. application-local.ymlapplication-prod.yml이런 식으로 뒤에 - 프로필이 붙은 형태이고테스트 폴더 하위에도application-local.yml파일을 만들었습니다. DB 연결이 안되길래 prod.yml 쪽으로 연결 시도를 하는거 같아테스트 코드에@ActiveProfiles("local")을 붙여주었고 테스트 서버 DB에 잘 붙어서 테스트코드를 작성했습니다.(main/applicatino-local.yml 역시 테스트 서버 DB에 연결되어 있는 상태)테스트코드를 작성하다보니 이게 불편하더라구요그래서 h2 인메모리 DB를 사용하고자 테스트 코드용 yml에 설정을 해주었습니다.jpa ddl auto 설정도 create 였구요..ㅎㅎㅎ 동료 개발자분이 테스트 서비스 로그인이 안된다길래 보니 테스트 디비 데이터가 다 날아갔습니다,,,하하하하정말 식은땀이 주륵..... 다행히 얼마 전에 다른 작업으로 백업을 해둔게 있어서 그걸로 복구했습니다만 정말 아찔했습니다 ㅠㅠ main/appication-local.yml 의 datasource url로 연결하고test/appication-local.yml 의 ddl-auto: create 설정을 따른 것으로 보여지는데왜 이런걸까요?저는 test/appication-local.yml 설정만 따를 거라고 생각했는데.. 제가 원하는 것은 local에서 서버를 직접 띄워서 사용할 때는 test 서버 db에 연결하고 싶고테스트 코드 돌릴 때는 인메모리 h2를 사용하고 싶습니다.이런 경우에 어떻게 사용하면 좋을까요? main/applilcation-local.ymldatssource: 테스트 서버 DB test/applilcation-local.ymldatssource: 인메모리 h2 DBjpa ddlauto: create -> 테스트 서버 디비 데이터 다 날아감내가 원하는 것 : 테스트 코드는 test/applilcation-local.yml 설정만을 따라 인메모리 DB 사용
-
미해결마케터를 위한 SQL
데이터 연결할때
연결할때 에러떠서 재설치할떄 포트를 5433으로 설정해서 postgresql 설치했는데 강의처럼하니 5433이 아니라 5432로 연결시도해서 db랑 연결이 안됩니다.도와주세요
-
미해결쉽고 빠르게 끝내는 GO언어 프로그래밍 핵심 기초 입문 과정
vscode 환경설정 업데이트 부탁드립니다
아톰 서비스 종료로 인해 vscode를 사용해야하는데vscode로 환경 설정할 수 있는 영상은 없을까요..
-
미해결Microservice 설계(with EventStorming,DDD)
VO, Entity 궁금한 부분이 있습니다.
안녕하세요. 좋은 강의 감사합니다.섹션 8. 실습 - 마이크로서비스 별 도메인 모델 정의 장에서 궁금점이 생겼는데요.우선 제가 DDD 를 공부하며 이해한 VO 는 특별한 identity 가 존재하지 않는 immutable 한 값을 표현하는 객체로 이해했습니다. 실제로 강의에서도 동일한 내용을 이해할 수 있었어요.하지만 실습 장에서 설계된 RentalItem, LateFee 가 VO 즉, 불변 값 객체와는 거리가 있다고 느껴져서요.RentalItem 에서 "is_overdued: boolean", LateFee 에서 "point: Point" 는 각 addLateFee, removeLateFee, overdueItem operation 에 의해서 값이 변경될 것으로 모델이 확인됩니다.제가 그동안 DDD 를 공부하며 이해했더 내용 중 하나는 Aggregate Pattern 에서 Aggregate 가 되는 것은 Root Entity 로 명명되며 Root Entity 내부에 표현되는 것은 Entity 와 VO 로 학습을 했었는데요. 이러한 RentalItem, LateFee 는 Entity 가 되어야 하는 객체 아닌가 의문이 들어서 질문드려요!좋은 강의 감사합니다 :)
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
Ultralytics Yolo v3 Onnx PostProcessing C++ 코드
안녕하세요.선생님,강의 잘 듣고 있습니다. 다름이 아니오라, 현업에서 Ultralytics yolo v3 Onnx를 이용해서 Post Processing을 해보려하는데요, c++ code 참고할만한 것이 있을까요? python은 많이 봤는데 c++은 제대로 동작되는 code찾기가 어렵네요.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
postman 500 오류
안녕하세요!! 강의 내용에 따라 진행했는데 자꾸 검사결과 다음과 같이 오류가 뜹니다... 원인이 궁금해서 질문올립니다. 감사합니다.
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 기본편
검색어 입력 후 창이 꺼집니다.
스크롤 내리기 코드가 실행되기 전에 크롬 창이 꺼집니다. input()도 써봤지만 해결이 안 되어 질문합니다.
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
실행시간
if name == "__main__":start = time.time() n, m = map(int, input().split()) tmp = [0]*(n + m + 1) max = -2147000000 for i in range(1, n + 1):for j in range(1, m + 1):tmp[i + j] += 1 if tmp[i + j] > max:max = tmp[i + j] for idx, x in enumerate(tmp):if x == max:print(idx, end=' ') end = time.time() print() print(end - start, "sec")이렇게 해서 성공했는데 답보다 실행시간이 늦더라고여enumerate가 느린건가요?2중 for문에 if 가 들어가서 느린건가요?for문이 여러개인건 시간하고 크게 관계가 없는건가요?