묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨Kevin의 알기 쉬운 RxJava 1부
cold/hot publisher 예제 코드와 관련해 질문 드립니다.
안녕하세요! 강의 잘 듣고 있습니다. 본격적인 첫 강의부터 궁금한 점들이 많아 질문 드리게 되었습니다 ㅠ.. 저는 해당 강의를 듣게 된 사유가 웹플럭스 같이 비동기 적으로 처리하는 것에 관심이 많아서 자연스럽게 기본부터 다지고자 해당 강의를 수강하게 되었는데요. 그래서 RxJava 코드가 비동기를 위한 코드라는 인식이 있습니다. 그런데 해당 강의 마지막 부분에 cold/hot publisher 예제 코드에서 콘솔에 데이터가 출려되는 형태를 보면 구독자1이 데이터를 모두 소비하고 구독자2가 그 다음으로 데이터를 소비하는, 동기적으로 처리하는 것처럼 보이더라구요. 혹시 제 생각처럼 동기적으로 처리되고 있는 것이 맞을까요? 그렇다면 사유가 궁금합니다 ㅠRxJava는 사실 단순 pub/sub 형태의 인터페이스를 구현한 구현체에 불과해서 RxJava를 이용해 소스코드를 작성하여도 이걸 비동기적으로 처리하기 위해서는 더 아랫단의 도움을 받아야 하는건지그렇다면 이 코드를 실행하는 was의 영향을 받는건지만약 그냥 java로 실행한다면 비동기적으로 실행할 수 없는 건지아니면 RxJava는 동기적 비동기적으로 소스코드를 작성할 수 있는데, 그냥 현재 예제 코드가 동기적으로 코드를 작성한 것인지아니면 메인 스레드가 구독자1과 2의 역할을 동시에 하고 있기 때문에 순차처리가 되는것인지 또한 비동기에 대한 정의에 대해 여쭤보고 싶습니다.비동기 처리라는 것을 스레드의 동작 방식을 제어하는 것이라고 이해하면 될까요??비동기 처리를 구현하기 위해서는 스레드 제어만 하면 되니까 OS단의 도움을 받지 않고 어플리케이션 단에서 구현을 할 수 있다고 이해해도 괜찮을까요??답변해주시면 감사하겠습니다!
-
해결됨Flutter 중급 1편 - 클린 아키텍처
뷰/뷰모델 작성 질문
강의를 수강하며 클린 아키텍쳐라는 개념을 처음 사용하다보니 미숙한 부분이 많다보니 질문이 많아지는 것 같습니다.^^; 페이지간 이동이 아닌, 하나의 페이지안에서 일부 위젯들만 변경되거나 노출/숨김되는 경우, 그러나 기능적으로는 분명한 차이가 있을 때, 뷰/뷰모델 작성은 어떻게 나누어서 하면 될까요?간단한 예를 들어보면 같은 배경에서 중앙에 배치 되는 위젯들만 PageScroll 또는 숨김/노출되는 상황입니다.첫 진입 -> 중앙에 시작 버튼 노출시작버튼 클릭 시 -> 시작 버튼 숨김/ 중앙에 비디오 선택창 노출비디오 선택 시 -> 비디오 선택창 숨김/비디오 플레이어 노출비디오 종료 시 -> 비디오 플레이오 숨김/ 다시보기 버튼 노출위젯의 배치로만 보았을 때는 1개의 view에 여러개의 component가 있는 형태이지만,기능적으로 구분하면 시작/비디오선택/비디오플레이/다시하기 이런식으로 4개의 view로도 구분할 수 있는 것 같아보입니다.강사님께서는 이럴 경우 어떤식으로 코드를 작성하시는지 궁금합니다.
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
Insight.bat 파일 실행 오류
배치 파일이 실행이 안됩니다 프로젝트 폴도 경로랑 공백을 확인해보았는데도 실행 오류가 뜹니다
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
설치 버전 관련 문의
안녕하세요 맛비님,설치 관련해서 궁금한게 있습니다. 현재 회사에서 vivado 2019 버전을 사용하여서 2019 버전으로 강의를 수강 시 문제가 될까요? 또한 이미 vivado 2019가 설치되어 있는 피씨라서, vivado를 따로 설치하려고 하는데 vitis와 vivado의 버전을 맞춰서 설치해야 할지도 궁금합니다. 감사합니다.
-
미해결[입문자를 위한 UE5] Part2. 언리얼 엔진 2D 게임 개발 입문
타일단위이동강의중....
우선 강의 잘보고 있습니다. 공부에 많은 도움이 되고 있습니다. 언어를 일도 모르는데 잘보고 따라 하고 있습니다. 다름이 아니라 강의 전까지는 나이트가 키보드 조작대로 움직였는데.. 타일단위이동강의를 따라하고 나니 움직이지를 않고 제자리에서 방향 과 동작만 이루어지고 있는 상황입니다 아.. 제 실수라는것은 알아요.. 중간 중간 픞레이를 해봤어야 되는데 그걸 안하고 무작정 따라하다 보니 어디서 꼬였는지를 모른다는 겁니다 죄송합니다 이걸 bp_playcontroller에서 문제인거 같은데 도통 모르겠습니다 이렇게 되어 있는데... 뭐가 문제 일까요??이렇게 되어 있습니다.
-
미해결
postman에서 authorization이 안보입니다.
jwt를 공부하던 중 JwtAuthenticationFilter에 있는 successfulAuthentication메서드에서 response.addHeader("Authorization", "Bearer "+ jwtToken); 이렇게 header값에 추가를 해주었는데 postman에서 send를 해도 response의 headers쪽에 authorization라는 키값이 안보입니다... 무슨 다른 설정을 해주어야 할까요?
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
형 변환에 대해 질문 드립니다.
형 변환를 하고 있는데 앞에서 선언한 float = 10.0 이라는 것 때문에print(float(b)) 를 하면 class가 아니라 변수로 받아지네요 그래서 파이썬에서오류가 나는데 어떻게 해야하나요?
-
미해결
OLS 모델 계수 역변환 방법
OLS를 이용해서 모델을 만들기 전에 인자들에 대해서 robustscaler를 이용해서 표준화를 했습니다.만들어진 모델에 실제값을 적용하기 위해서 모델의 계수들에 대해서 다시 역변환을 시키는 코드를 짜고 있는데방법을 잘 모르겠습니다. 1 . robustscaler로 표준화한 코드robustscaler = RobustScaler() df_scale = robustscaler.fit_transform(df_corr) df_scale2. 학습시킨 코드X = sm.add_constant(X)model = sm.OLS(y, X)model_trained = model.fit()3. 실습 내용모델 계수 출력을 위해 아래 코드 실행 했으나 코드 실행 : print("표준화된 모델의 계수:", model.coef_)오류 발생 : AttributeError: 'OLS' object has no attribute 'coef_' 코드 수정 : print("표준화된 모델의 계수:", model_trained.params)출력값 : 표준화된 모델의 계수: const 0.202 생산량 -0.106 투입량 0.265 초기농도 0.726 dtype: float64이 다음에 이러한 계수들을 역변환하려고 하는데 잘 안 되네요. 고수님들 조언 부탁 드려요~
-
미해결AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)
혹시 수업 자료가 제공되나요?
지금 강의 수강중인데 express 소스 코드는 확인했는데 그 외 수업자료는 제공이 안될까요? 공부한 내용을 화면 캡쳐해서 정리하고 있거든요.
-
미해결WPF (C#, 자막제공)
UserControl 관련
안녕하세요, Usercontrol 뷰와 뷰모델 파일을 만들어서 해당 유저컨트롤 뷰에 이벤트 컨트롤 (버튼 기능)을 Command를 통해 구현하고자 했는데 되지 않았습니다. 아마 코드 비하인드 단에 강의에서 MainViewModel과 MainView를 연동하는 법처럼 DataContext = 해당 뷰모델을 할당해주지 않아서 그런것 같은데. 해당 UserControl 뷰 비하인드에 UserContriolViewModel을 할당해주면 에러가 뜨더군요.(닫기/최소화/최대화 버튼 기능을 가진 유저컨트롤은 메인 뷰에 불러와서 사용할 예정입니다.)다른 뷰와 뷰모델을 만들시 이를 어떻게 동작시킬수 있는건지요? - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
코드 리팩토링 이렇게 해도 되나요??
수업 내용 코드는function checkPhone(myphone) { if (myphone.length < 10 || myphone.length > 11) { console.log("에러 발생!!! 핸드폰 번호를 제대로 입력해 주세요!!!"); return false; } else { return true; } } function getToken() { let result = String(Math.floor(Math.random() * 100000)).padStart(6, "0"); console.log(result); return result; } function sendTokenToSMS(myphone, result) { console.log(myphone + "번호로 인증번호" + result + "를 전송합니다."); } function createTokenOfPhone(myphone) { const isValid = checkPhone(myphone); if (isValid === false) return; const mytoken = getToken(); sendTokenToSMS(myphone, mytoken); } createTokenOfPhone("01012345678"); // 01012345678: 인자(argument) 이렇게 되어있는데createTokenOfPhone 함수에서 isValid 상수를 꼭 선언해야하나요?? function checkPhone(myphone) { if (myphone.length < 10 || myphone.length > 11) { console.log("에러 발생!!! 핸드폰 번호를 제대로 입력해 주세요!!!"); return true; } } function getToken() { let result = String(Math.floor(Math.random() * 100000)).padStart(6, "0"); console.log(result); return result; } function sendTokenToSMS(myphone, result) { console.log(myphone + "번호로 인증번호" + result + "를 전송합니다."); } function createTokenOfPhone(myphone) { if (checkPhone(myphone)) return; const mytoken = getToken(); sendTokenToSMS(myphone, mytoken); } createTokenOfPhone("01012345678"); // 01012345678: 인자(argument) 이렇게 checkPhone()이 문제있을 때만 true를 반환하고,checkPhone()이 true일 경우 return 처리하면 코드가 더 짧아지기는 하는데수업에서 말씀하시는 협업의 가독성을 위해서 isValid라는 상수를 선언해줘야 하는지 아니면 제가 생각한 방식으로 코드를 줄여도 괜찮은건지 궁금합니다.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
Entity에 toJSON 코드 입력 후 404 에러
Entity.ts에 추가한 toJSON() { return instanceToPlain(this); }이 코드가 들어가면 404에러가 뜹니다. 저 코드를 빼면 돌아가긴 합니다만 이미지(아바타)가 안보이고요.. 그리고 이런 에러가 나서 구글링 한 후 config를 이렇게 바꿨는데, 이게 문제인가.. 싶기도 하고요.. 너무 궁금한데 제발 꼭 좀 아시는 분 답변 부탁드려요
-
해결됨배달앱 클론코딩 [with React Native]
`UpdatePropsManager` is not available on non-native platform. 오류입니다.
환경 운영체제 : win 10 react-native : 0.72.7node : 20.5.0안녕하세요현재 위 처럼 BottomSheetModal이 열려져 있는 상태에서 위치를 검색하세요 라는 view를 클릭할경우 아래 제출한 코드의 <Modal> 컴포넌트가 나오게 되있습니다. 하지만 아래의 오류를 현재 내고 있어 질문드리게 되었습니다.. bottom-sheet 라이브러리로 @gorhom/bottom-sheet - npm (npmjs.com) 위 링크를 사용하였습니다. 에러 로그 내용의 전체부분은 다음과 같습니다. debuggerWorker.js:69 Error: [Reanimated] UpdatePropsManager is not available on non-native platform. at Handler (http://localhost:8081/index.bundle//&platform=android&dev=true&minify=false&app=com.nomansland&modulesOnly=false&runModule=true:123798:38) at BottomSheetDraggableViewComponent (http://localhost:8081/index.bundle//&platform=android&dev=true&minify=false&app=com.nomansland&modulesOnly=false&runModule=true:156784:33) at RCTView at http://localhost:8081/index.bundle//&platform=android&dev=true&minify=false&app=com.nomansland&modulesOnly=false&runModule=true:59381:44 at AnimatedComponent (http://localhost:8081/index.bundle//&platform=android&dev=true&minify=false&app=com.nomansland&modulesOnly=false&runModule=true:128894:38) at RCTView at http://localhost:8081/index.bundle//&platform=android&dev=true&minify=false&app=com.nomansland&modulesOnly=false&runModule=true:59381:44 at AnimatedComponent (http://localhost:8081/index.bundle//&platform=android&dev=true&minify=false&app=com.nomansland&modulesOnly=false&runModule=true:128894:38) at RCTView at http://localhost:8081/index.bundle//&platform=android&dev=true&minify=false&app=com.nomansland&modulesOnly=false&runModule=true:59381:44 at BottomSheetContainerComponent (http://localhost:8081/index.bundle//&platform=android&dev=true&minify=false&app=com.nomansland&modulesOnly=false&runModule=true:160869:32) at BottomSheetGestureHandlersProvider (http://localhost:8081/index.bundle//&platform=android&dev=true&minify=false&app=com.nomansland&modulesOnly=false&runModule=true:160962:38) at BottomSheet (http://localhost:8081/index.bundle//&platform=android&dev=true&minify=false&app=com.nomansland&modulesOnly=false&runModule=true:159277:74) at PortalHostComponent (http://localhost:8081/index.bundle//&platform=android&dev=true&minify=false&app=com.nomansland&modulesOnly=false&runModule=true:162079:21) at PortalProviderComponent (http://localhost:8081/index.bundle//&platform=android&dev=true&minify=false&app=com.nomansland&modulesOnly=false&runModule=true:162134:34) at BottomSheetModalProviderWrapper (http://localhost:8081/index.bundle//&platform=android&dev=true&minify=false&app=com.nomansland&modulesOnly=false&runModule=true:162297:25) at RNGestureHandlerRootView at GestureHandlerRootView at Map (http://10.0.2.2:8081/src\pages\map.bundle//&platform=android&app=com.nomans…d&modulesOnly=true&dev=true&minify=false&runModule=true&shallow=true:30:42) at StaticContainer (http://localhost:8081/index.bundle//&platform=android&dev=true&minify=false&app=com.nomansland&modulesOnly=false&runModule=true:170212:18) at EnsureSingleNavigator (http://localhost:8081/index.bundle//&platform=android&dev=true&minify=false&app=com.nomansland&modulesOnly=false&runModule=true:166073:25) at SceneView (익명)@debuggerWorker.js:69-TypeError: $$REQUIRE(...) is not a functionThis error is located at: in PanGestureHandler (created by BottomSheetDraggableViewComponent) in BottomSheetDraggableViewComponent (created by BottomSheet) in RCTView (created by View) in View (created by AnimatedComponent(View)) in AnimatedComponent(View) in Unknown (created by BottomSheet) in RCTView (created by View) in View (created by AnimatedComponent(View)) in AnimatedComponent(View) in Unknown (created by BottomSheet) in RCTView (created by View) in View (created by BottomSheetContainerComponent) in BottomSheetContainerComponent (created by BottomSheet) in BottomSheetGestureHandlersProvider (created by BottomSheet) in BottomSheet (created by BottomSheet) in PortalHostComponent (created by PortalProviderComponent) in PortalProviderComponent (created by BottomSheetModalProviderWrapper) in BottomSheetModalProviderWrapper (created by Map) in RNGestureHandlerRootView (created by GestureHandlerRootView) in GestureHandlerRootView (created by Map) in Map (created by SceneView) in StaticContainer in EnsureSingleNavigator (created by SceneView) in SceneView (created by BottomTabView) in RCTView (created by View) in View (created by Screen) in RCTView (created by View) in View (created by Background) in Background (created by Screen) in Screen (created by BottomTabView) in RNSScreen in Unknown (created by InnerScreen) in Suspender (created by Freeze) in Suspense (created by Freeze) in Freeze (created by DelayedFreeze) in DelayedFreeze (created by InnerScreen) in InnerScreen (created by Screen) in Screen (created by MaybeScreen) in MaybeScreen (created by BottomTabView) in RNSScreenContainer (created by ScreenContainer) in ScreenContainer (created by MaybeScreenContainer) in MaybeScreenContainer (created by BottomTabView) in RNCSafeAreaProvider (created by SafeAreaProvider) in SafeAreaProvider (created by SafeAreaInsetsContext) in SafeAreaProviderCompat (created by BottomTabView) in BottomTabView (created by BottomTabNavigator) in PreventRemoveProvider (created by NavigationContent) in NavigationContent in Unknown (created by BottomTabNavigator) in BottomTabNavigator (created by App) in EnsureSingleNavigator in BaseNavigationContainer in ThemeProvider in NavigationContainerInner (created by App) in App in RCTView (created by View) in View (created by AppContainer) in RCTView (created by View) in View (created by AppContainer) in AppContainer in NoMansLand(RootComponent)------------------------------------------------------------------------------------------------- 아래 부분은 사용하였던 코드입니다.. 긴글 읽어주셔서 감사합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
JPA Entity에 Bean Validation 적용시 오류 문제
[질문 내용]JPA 엔티티에 @NotNull 같은 Bean Validation을 사용하면 적용은 되지만 트랜잭션 에러가 발생하면서 BindingResult에 오류가 자동으로 담기지가 않아 타임리프 렌더링에서 오류 문구가 뜨는게 아니라 바로 오류 페이지로 넘어가는거 같은데 해결할 방법이 있을까요
-
해결됨포트폴리오 초간단 배포하기
강의 잘들었습니다! 포트폴리오 마무리에서 배포관련해서 궁금한점이 좀더 있어서 질문드립니다.
우선 프론트와 백엔드 , DB를 각각 인스턴스를 만들어서 배포하는 로직을 잘봤습니다.궁금한점이 jar파일을 github에 올리게되면application.yml or perterties 안에있는민감정보들이 노출되는 문제가 있다고 생각이드는데이런 민감정보는 어떤식으로 가리는게 좋을까요
-
해결됨실무에 바로 적용하는 프런트엔드 테스트 - 1부. 테스트 기초: 단위・통합 테스트
prop이나 state 값을 검증하지 않는다는 의미가 궁금합니다!
const textField = screen.getByPlaceholderText('텍스트를 입력해 주세요.'); expect(textField).toHaveClass('my-class');이부분에서 className이란 내부 props, state 값을 검증하는 게 아닌가 싶어서 질문을 드렸습니다. 물론, className에 따라 변경되는 DOM을 파악한다는 의미로도 해석이 될 수는 있을 것 같긴 하지만 더 정확한 문맥을 알고 싶어서 질문드렸습니다..!
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
안녕하세요! 강사님 예외처리에 대한 질문이 있습니다.
현재 강의에서는 정상적인 코드면 무한루프가 종료되는걸로 생각하고 있습니다.하지만1. 재고가 감소시켜야 하는 수량 보다 적을 경우는 무한루프를 도는것을 확인했습니다.어떻게 예외처리를 해야할 지 잘 모르겠어서 질문드립니다 ㅠ public class Stock { // ... public void decrease(Long quantity) { if (this.quantity - quantity < 0) { throw new RuntimeException("재고 수량이 부족합니다."); } this.quantity -= quantity; } }public class OptimisticLockService { private final StockRepository stockRepository; @Transactional public void decrease(Long id,Long quantity){ Stock stock = stockRepository.findByIdWithOptimisticLock(id); if (stock.getQuantity() < quantity) { throw new RuntimeException("재고 수량이 부족합니다."); } stock.decrease(quantity); } }stock 클래스에서 예외처리를 하는것이 좋을지 서비스 클래스에서 예외처리를 좋을지?!예외를 주고 OptimisticLockStockFacade에 대한 무한루프를 어떻게 처리할지..강의 잘 들었습니다 답변 부탁드려용 .. @Component @RequiredArgsConstructor public class OptimisticLockStockFacade { private final OptimisticLockService optimisticLockService; public void decrease(Long id, Long quantity) throws InterruptedException { while (true) { try { optimisticLockService.decrease(id, quantity); break; }catch(Exception e) { Thread.sleep(50); } } } } 현재 아래코드를 실행하면 무한루프가 나갑니다.! @Test @DisplayName("재고가 없을시 재고감소 로직 요청시 예외가 일어난다.") void decreaseStockZero() { //given //when //then assertThatThrownBy(() -> optimisticLockStockFacade.decrease(1L, 101L)) .isInstanceOf(RuntimeException.class) .hasMessage("이미 품절된 상품입니다."); }
-
해결됨실전! Querydsl
Querydsl 조회 시, DTO 필드를 List로 받는 방법을 알고 싶습니다.
안녕하세요.Querydsl 학습 중에 궁금한 점이 있어서 질문드립니다. Projection을 이용해서 조회 데이터를 DTO에 반환 받고 싶습니다.하지만, DTO 필드에 List 타입이 정의되어 있습니다.이런 경우에는 어떤식으로 데이터를 조회할 수 있는지 궁금합니다. 또한, 현업에서는 이런 형태의 데이터를 조회하기 위해서 어떤 방식으로 하는지 궁금합니다.객체 그래프 탐색을 이용한 Lazy 조회 후, 로직에서 조건 필터링 ?각 조건에 맞는 쿼리 여러번 호출 ?DTO Projection을 이용한 한방 쿼리 ?다른 방식 ? 조회 데이터를 반환 받기 위한 ProductDto는 다음과 같습니다.public record ProductDto( Long id, String name, int reviewScore, int reviewCount, int originalPrice, int salesPrice, List<String> productImages, List<String> productDetailImages ) { @QueryProjection public ProductDto { } } 데이터를 조회 하고자 하는 의도가 담긴 Querydsl은 다음과 같습니다.public ProductDto findSellingProductById(Long id) { return queryFactory .select(new QProductDto( product.id, product.name, product.reviewScore, product.reviewCount, productOption.originalPrice, productOption.salesPrice, productImage.imageUrl, productDetailImage.imageUrl )) .from(product) .leftJoin(product.productOptions, productOption) .on(productOption.isDefault.isTrue(), productOption.isSaleable.isTrue(), productOption.isDeleted.isFalse()) .leftJoin(product.productImages, productImage) .on(productImage.isDeleted.isFalse()) .leftJoin(product.productDetailImages, productDetailImage) .on(productDetailImage.isDeleted.isFalse()) .where(product.id.eq(id)) .fetchOne(); } Product, ProductOption, ProductImage, ProductDetailImage 엔티티는 다음과 같습니다.@Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Product extends BaseDateTimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "product_id") private Long id; @Column(length = 50) private String name; private int reviewScore; private int reviewCount; // ... 중략 @OneToMany(mappedBy = "product", cascade = CascadeType.ALL) private List<ProductImage> productImages = new ArrayList<>(); @OneToMany(mappedBy = "product", cascade = CascadeType.ALL) private List<ProductDetailImage> productDetailImages = new ArrayList<>(); @OneToMany(mappedBy = "product", cascade = CascadeType.ALL) private List<ProductOption> productOptions = new ArrayList<>(); // ... 중략 } @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class ProductOption extends BaseDateTimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "product_option_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "product_id") private Product product; @Column(length = 30) private String name; private int originalPrice; private int salesPrice; // ... 중략 private Boolean isDefault; private Boolean isSaleable; private Boolean isDeleted; // ... 중략 } @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class ProductImage extends BaseDateTimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "product_image_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "product_id") private Product product; private String imageUrl; private Boolean isDeleted; // ... 중략 } @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class ProductDetailImage extends BaseDateTimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "product_detail_image_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "product_id") private Product product; private String imageUrl; private Boolean isDeleted; // .. 중략 } 감사합니다.
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
ScrollController 동작이 안되서 질문드립니다.
"완성된 Pagination 로직 실행해보기" 강의에서 Scroll 위치를 찾기 위해서 반영한 ScrollController에서 Listener를 등록해도 스크롤 할때 동작을 하지 않아서 문의드립니다. - 리스너를 등록해도 스크롤 시 print('run') 이 동작을 안합니다..
-
미해결스프링 핵심 원리 - 기본편
통합 테스트를 돌리면 오류가 발생합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 영한님 수업을 따라가면서 전체테스트를 돌릴때 CoreApplicationTest의contextLoads()에서 java.lang.IllegalStateException: Failed to load ApplicationContext for [MergedContextConfiguration@46963479 testClass = hello.core.CoreApplicationTests, locations = [], classes = [hello.core.CoreApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@208e9ef6, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@34448e6c, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@7dc51783, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@3a43d133, org.springframework.boot.test.context.SpringBootTestAnnotation@1b8b1ee9], contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null]at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:180)at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:130)at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:142)at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:98)at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:260)at org.springframework.test.context.junit.jupiter.SpringExtension.postProcessTestInstance(SpringExtension.java:163)at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:310)at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:735)at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:734)at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762)at java.base/java.util.Optional.orElseGet(Optional.java:364)at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memberServiceImpl' defined in file [C:\SpringStudy\core\out\production\classes\hello\core\member\MemberServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'hello.core.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,memberRepositoryat org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:798)at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:237)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1354)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1191)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:561)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521)at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:975)at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:959)at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624)at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456)at org.springframework.boot.SpringApplication.run(SpringApplication.java:334)at org.springframework.boot.test.context.SpringBootContextLoader.lambda$loadContext$3(SpringBootContextLoader.java:137)at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:58)at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:46)at org.springframework.boot.SpringApplication.withHook(SpringApplication.java:1454)at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.run(SpringBootContextLoader.java:552)at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:137)at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:108)at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:225)at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:152)... 17 moreCaused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'hello.core.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,memberRepositoryat org.springframework.beans.factory.config.DependencyDescriptor.resolveNotUnique(DependencyDescriptor.java:218)at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1420)at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353)at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:907)at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:785)... 41 more오류가 발생하였습니다. 해결하는법을 찾지 못해 넘기고 다음 동영상 수업을 들으면서 2분29초 부분의 고의적으로FixDiscountPolicy클래스도 @Component를 등록하여 오류를 발생시킨 뒤 OrderServiceImpl클레스의 생성자에서 ratediscountPolicy로 변경하면 오류가 사라진다는 설명을 듣고 따라해도 오류가 발생되어 해결을 하지 못하고 있습니다. 어떻게 해야하나요?