묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 핵심 원리 - 기본편
생성자 주입에 관하여 질문드립니다!
좋은 강의 항상 감사드립니다! ^^다양한 의존관계 주입 방법 부분의 강의를 듣던 중 궁금한 점이 있어 질문 드립니다. OrderServiceImpl 객체를 생성하여 스프링 빈으로 등록하는 과정에서 궁금한 점이 있습니다. 우선 OrderServiceImpl을 스프링 빈으로 등록하기 전 OrderServiceImpl 객체를 생성하기 위해 아래와 같이 생성자를 호출하게 되고 -> new OrderServiceImpl(memberRepository, discountPolicy); 이 과정에서 생성자의 파라미터로 들어온 객체의 스프링 빈을 찾아와 OrderServiceImpl을 생성한다고 하셨습니다. 강의의 12:40 부분에서 memberRepository와 discountPolicy가 생성이 되어 있지 않다면 스프링이 생성을 한 후 가져온다고 하셨습니다. 저는 위 말씀을 생성자 주입 시 생성자의 파라미터로 들어온 객체가 스프링 빈으로 등록되어 있지 않다면 스프링이 그 객체도 자동으로 스프링 빈으로 등록한다고 이해를 하였습니다. 따라서 new OrderServiceImpl(memberRepository, discountPolicy); 코드 실행 시 만약 memberRepository와 discountPolicy가 스프링 빈으로 등록되어 있지 않아도 1. 먼저 스프링이 memberRepository와 discountPolicy를 스프링 빈으로 등록한 후2. OrderServiceImpl의 스프링 빈 등록과 의존 관계 주입이 동시에 일어난다고 이해하였습니다. 하지만 생성자 주입 사용 시 생성자의 파라미터로 들어오는 객체가 스프링 빈으로 등록되어 있지 않을 경우 NoSuchBeanDefinitionException 예외와 UnsatisfiedDependencyException 예외가 발생하였고, 제가 이해한 부분이 틀린 건지 헷갈려서 질문을 남기게 되었습니다. Q1. 12:40 부분에서 하신 말씀에서 memberRepository와 discountPolicy가 생성이 되어 있지 않다는 뜻이 '스프링 빈으로 등록되어 있지 않다'는 뜻이 아닌 건가요? Q2. memberRepository와 discountPolicy가 생성이 되어 있지 않아 스프링이 생성을 한 후 가져온다는 뜻이 '생성자의 파라미터로 들어온 객체를 스프링 빈으로 생성하여 가져온다'는 뜻이 아닌 건가요?
-
미해결Vue.js - Django 연동 웹 프로그래밍 (실전편)
vue cli run serve 중 오류
Vue-Django Read API 만들기 axos-list 기능 확인 강의에서 기능 추가 후 run serve를 했습니다. 그런데 첨부된 오류가 발생했습니다. 해결하기 위해 webpack 버전을 4.42.0으로 다운그레이드 시키고 다시 실행해 보았더니 Syntax Error: TypeError: eslint.CLIEngine is not a constructor 이런 에러가 발생합니다. INFO Starting development server... 12% building 22/22 modules 0 activeC:\projectlist\vue-django\front\frontend\node_modules\webpack\lib\Dependency.js:322 throw new Error( ^ Error: module property was removed from Dependency (use compilation.moduleGraph.updateModule(dependency, module) instead) at ProvidedDependency.set (C:\projectlist\vue-django\front\frontend\node_modules\webpack\lib\Dependency.js:322:9) at iterationDependencies (C:\projectlist\vue-django\front\frontend\node_modules\@vue\cli-service\node_modules\webpack\lib\Compilation.js:940:21) at C:\projectlist\vue-django\front\frontend\node_modules\@vue\cli-service\node_modules\webpack\lib\Compilation.js:950:8 at C:\projectlist\vue-django\front\frontend\node_modules\@vue\cli-service\node_modules\webpack\lib\NormalModuleFactory.js:409:6 at C:\projectlist\vue-django\front\frontend\node_modules\@vue\cli-service\node_modules\webpack\lib\NormalModuleFactory.js:155:13 at eval (eval at create (C:\projectlist\vue-django\front\frontend\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:14:1) at C:\projectlist\vue-django\front\frontend\node_modules\case-sensitive-paths-webpack-plugin\index.js:178:9 at C:\projectlist\vue-django\front\frontend\node_modules\case-sensitive-paths-webpack-plugin\index.js:125:7 at C:\projectlist\vue-django\front\frontend\node_modules\case-sensitive-paths-webpack-plugin\index.js:125:7 at CaseSensitivePathsPlugin.fileExistsWithCase (C:\projectlist\vue-django\front\frontend\node_modules\case-sensitive-paths-webpack-plugin\index.js:95:5) at C:\projectlist\vue-django\front\frontend\node_modules\case-sensitive-paths-webpack-plugin\index.js:118:10 at CaseSensitivePathsPlugin.getFilenamesInDir (C:\projectlist\vue-django\front\frontend\node_modules\case-sensitive-paths-webpack-plugin\index.js:52:5) at CaseSensitivePathsPlugin.fileExistsWithCase (C:\projectlist\vue-django\front\frontend\node_modules\case-sensitive-paths-webpack-plugin\index.js:101:8) at C:\projectlist\vue-django\front\frontend\node_modules\case-sensitive-paths-webpack-plugin\index.js:118:10 at Array.<anonymous> (C:\projectlist\vue-django\front\frontend\node_modules\case-sensitive-paths-webpack-plugin\index.js:72:5) at Storage.finished (C:\projectlist\vue-django\front\frontend\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:55:16)
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
권한 요청 합니다
인프런 아이디 : choidawoon96@naver.com 인프런 이메일 : choidawoon96@naver.com 깃헙 아이디 : choidawoon960717@gmail.com 깃헙 Username : choidawoon
-
미해결
인프런 동영상 재생 개선사항 요청 건
안녕하세요 인프런 관계자분들 다름이 아니라, 전체화면으로 강의 듣는 중 불편사항이 있어서 글을 남깁니다. [불편사항] 전체화면에서 해당 강의가 끝나면 일정 시간이 흐른 뒤(ex. 3초) 자동으로 다음 강의로 넘어갈 수 있게 개선해 주십쇼. 새해 복 많이 받으세여~
-
미해결딥러닝 CNN 완벽 가이드 - TFKeras 버전
loss 값의 해석
강사님 안녕하세요. 강의 마지막 부분 중 loss에 대한 질문이 있어 글 남깁니다. accuracy의 경우, 0~1의 값을 가지므로 본 강의의 trained model의 accuracy 값인 0.8828의 수준에 대한 직관적인 이해가 가능합니다. (11:15초 부분의 맨 마지막 코드 결과값) 하지만, loss 값의 경우, 테스트 한 1만개의 이미지에 대해 softmax output 값으로부터 거꾸로 loss가 구해지는 것으로 이해를 했는데요, 이런 경우 0.3675라는 loss값이 정확히 어느정도의 값을 나타내는지 직관적으로 이해하기 어려웠습니다. 0.3675라는 loss 값을 판단할 때, 무엇을 기준으로 보는게 가장 적합할지 여쭤봅니다. (ex, 총 10개의 클래스를 가지는 데이터셋이었으므로 10을 기준으로 판단? 혹은 1만개의 테스트 이미지를 사용하였으므로, 사용한 이미지의 개수를 기준으로 판단? 등)
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
선생님 질문있습니다!
항상 강의 잘듣고 있습니다 :) 새해복 많이 받으세요! 1)분류실습 하다가 궁금한점이 있는데 데이터세트가 불균일한 경우에 임계값을 조정해서 업무에 맞게 정확도, 정밀도, 재현율을 구하잖아요? 그런데 만약 train 데이터셋의 모델이 임계값 0.6을 기준으로 만들어졌다면 test 셋에도 임계값을 조정한후 모델을 평가하나요?? 같은 의미로 standardscaler도 test셋에똑같이 적용해야하나요? 2)신용카드 사기 검출시 이상값 제거에 대해서 신용카드 사기검출 실습하는 도중 이상치제거에 대해서 의문점을 가지게 되어 질문드립니다! 제가 이 데이터를 분석하면서 target 값은 "Amount" 칼럼에 따라 결정된다고 생각했는데(혹은 가장 큰영향을 미친다고) 이러한 이유로 amount 칼럼에 이상치로 판별되는값이 사기로 판별되는 값이 아닌가? 라는 의문점을 가질수밖에 없었습니다. 단순히 이상치 제거를 하는 과정을 설명해주시기 위해 코드를 넣으신건지 아니면 제가 가진 의문점 처럼 이러한 사기검출 데이터셋에 이상치값을 함부러 제거하면 안되는게 맞는건지 알려주면 감사하겠습니다 :)
-
미해결[백문이불여일타] 데이터 분석을 위한 중급 SQL
An unspecified error occurred.
강의 내용대로 따라해보았는데 결과값이 에러가 납니다. 제가 어느 부분을 놓친걸까요?
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
TSVD scipy와 scikit_learn
안녕하세요? 새해복 많이 받으세요~제가 책 p.402의 예제에서는 사이킷럿으로 나와있는데 이것을 사이파이로 바꿔서 한번 돌려봤습니다. 그 결과 y=-x에 대해 대칭인 결과가 나왔는데요. 제가 뭘 잘못 돌린걸까요? 사이파이 from sklearn.datasets import load_irisimport matplotlib.pyplot as pltimport numpy as npfrom scipy.sparse.linalg import svdsfrom scipy.linalg import svdiris = load_iris()iris_ftrs = iris.data# 2개의 주요 component로 TruncatedSVD 변환U, Sigma, Vt = svd(iris_ftrs, full_matrices=False)num_components = 2U_tr, Sigma_tr, Vt_tr = svds(iris_ftrs, k=num_components)print('\nTruncated SVD 분해 행렬 차원:',U_tr, Sigma_tr, Vt_tr.shape)matrix_tr = np.dot(U_tr,np.diag(Sigma_tr)) # output of TruncatedSVDplt.scatter(x=matrix_tr[:,0], y= matrix_tr[:,1])plt.xlabel('TruncatedSVD Component 1')plt.ylabel('TruncatedSVD Component 2')print(matrix_tr) 사이킷럿 from sklearn.decomposition import TruncatedSVD, PCAfrom sklearn.datasets import load_irisimport matplotlib.pyplot as pltiris = load_iris()iris_ftrs = iris.data# 2개의 주요 component로 TruncatedSVD 변환tsvd = TruncatedSVD(n_components=2)tsvd.fit(iris_ftrs)iris_tsvd = tsvd.transform(iris_ftrs)# Scatter plot 2차원으로 TruncatedSVD 변환 된 데이터 표현. 품종은 색깔로 구분plt.scatter(x=iris_tsvd[:,0], y= iris_tsvd[:,1], c= iris.target)plt.xlabel('TruncatedSVD Component 1')plt.ylabel('TruncatedSVD Component 2')print(iris_tsvd)
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
양방향 연관관계 질문
Table 명은 ORDERS로 했고 객체는 Order라고 이름을 지었습니다. mappedBy는 테이블명인 ORDERS로 해야하는게 맞지 않나요?
-
미해결스프링 핵심 원리 - 고급편
logTrace의 Level이 높게 출력되는 문제를 겪고있어 질문올립니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용 & 문제점] - 안녕하세요 강의 진행도중, "쓰레드로컬 동기화" 부분을 진행하다 조금 의하하게 동작하는 부분이 있어서 질문올립니다! - 제가 이해한 강의 흐름은 1) 필드변수를 사용해서 동기화한다 >> 동시성 문제 발생 2) 쓰레드 로컬을 사용해서 동시성 문제를 해결한다! - 위 순서인데, 쓰레드 로컬을 사용한 코드에서도 log의 depth 가 올바르게 정상적인 깊이로 표시되지 않고 여러번 반복되서 붙는 문제가 있습니다 - 문제증상이 발생할때의 로그는 아래처럼 찍힙니다 ``` 2022-01-01 11:54:07.809 INFO 2553 --- [nio-8080-exec-9] h.a.trace.logtrace.ThreadLocalLogTrace : [4202b619] | | | | | | | | | | | | | | | | | | | | |-->,OrderControllerV3-request()! 2022-01-01 11:54:07.809 INFO 2553 --- [nio-8080-exec-9] h.a.trace.logtrace.ThreadLocalLogTrace : [4202b619] | | | | | | | | | | | | | | | | | | | | | |-->,OrderServiceV3.orderItem() 2022-01-01 11:54:07.809 INFO 2553 --- [nio-8080-exec-9] h.a.trace.logtrace.ThreadLocalLogTrace : [4202b619] | | | | | | | | | | | | | | | | | | | | | | |-->,v3 Repository.save() 2022-01-01 11:54:07.810 INFO 2553 --- [nio-8080-exec-9] h.a.trace.logtrace.ThreadLocalLogTrace : OK:[4202b619] | | | | | | | | | | | | | | | | | | | | | |<--,OrderServiceV3.orderItem() time=1ms OK!! 2022-01-01 11:54:07.810 INFO 2553 --- [nio-8080-exec-9] h.a.trace.logtrace.ThreadLocalLogTrace : OK:[4202b619] | | | | | | | | | | | | | | | | | | | | |<--,OrderControllerV3-request()! time=1ms OK!! ``` - 제가 겪고 있는 문제를 시연하는 영상입니다 [https://youtu.be/hBYAinNtMxg] [시도한 방법] - 첫번째로 수업을 따라가며 작성한 코드가 있는지 검증했는데요, IDE 코드 비교 기능을 이용해서 교안과 제가 작성한 코드 사이의 다른 부분으로 인한 버그인지 순차적으로 탐색해봤는데 발견하지 못했습니다 - 두번째로 Debug 모드로 실행해봤는데, 실제로 addSpace() 함수에 level 에 값이 10, 11, 12~~ 로 점점 증가하게 들어왔습니다. 대략 브라우저에서 새로고침을 통해 Request를 10번 보낼때마다 level 값이 1스텍씩 증가합니다 [질문] Q1) 진행하시는 강의에서처럼 1초에 두번 세번정도까지 요청을 날리면 정상적으로 동작 하는데, 그 이상으로 브라우저에서 refresh 연타를 날리면 발생하는 문제인데, 혹시 해당동작은 "정상동작" 범주에 벗어나는 비정상적인 요청인가요?? Q2) 디버깅을 하는 중인데, Depth Level이 높게 들어오는 부분이 InteliJ에서도 확인 가능한데요, 이걸 근거로 요청을 보내는 브라우저의 문제가 아닌 코드상의 문제로 생각이 드는데 올바른 해결 방향일지 궁금합니다 [실행환경 & 재현하는 방법] - 코드 : https://github.com/d-h-k/Spring_PlayGround/tree/v0.220101/spring-advenced/advenced - 위 링크에서 tag v0.220101 로 만들어놓았고, /spring-advenced/advenced 디렉토리 하위의 인텔리제이 프로젝트로 실험을 진행했습니다 - (위 링크와 동일)증상은 여기 링크의 영상에서 확인 가능합니다 : https://youtu.be/hBYAinNtMxg
-
미해결
개복치님의 블로그가 어디 인가요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 개복치님의 불로그가 어디 인가요?
-
미해결차량 번호판 인식 프로젝트와 TensorFlow로 배우는 딥러닝 영상인식 올인원
강의자료요청
차량번호판 인식실전프로젝트 후반부 강의자료를 부탁 합니다 이메일주소 hakjuknu@gmail.com
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
안녕하세요 맛비님
설치 하려고 하는데 C드라이브가 기본으로 잡혀있고 그런데 왜 왜 저장공간이 부족하다는지 모르겠네요 혹시 저게 70기가가 넘어갈까요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
굳이 locale을 설정해야 하는 이유가 있나요?
유니코드 관련해 질문이 있습니다! UTF16 방식이 2바이트에 각종 문자를 할당하는 것이라면, 한글에도 문자 하나하나에 2바이트 크기의 어떤 고유한 데이터가 할당되어 있는 것이라고 이해했습니다. 그런데 이러면 굳이 왜 locale("kor")을 해야하는 것인지 의문이 듭니다. wchar_t와 L을 쓰면, 이 데이터가 유니코드이면서 utf16 방식임을 충분히 알려준 것 아닐까요..? 그러면 데이터를 보고 이것이 한글임을 바로 알 수 있지 않나요??
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
함수내에서의 동적할당
여기까지 공부하다가 궁금한 점이 생겨서 여쭈어봅니다 함수내에서 new로 동적할당을 하게 된다면 어떻게 해야하나요? 만약 Item이라는 클래스의 포인터를 반환하는 함수라면 new선언 후에 리턴값으로 이 new로 선언한 것을 반환하게 된다면 delete는 어디에서 선언해야하는 걸까요? 일단 생각해본건 return후 반한된건 new로 선언한 힙에 저장된 객체의 주소일테니 함수의 이름을 delete하는 걸로 생각하고있는데 궁금해서 여쭈어봅니다 Item* Find() { Item* item = new Item(); item->a = 100; return item; } int main() { Item* it = Find(); delete it; return 0; }
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
HOST, PORT 질문드리겠습니다.
새해복많이받으세요!밑의 질문글들 전부 읽어도 이해가 안가서 질문드립니다 배달의민족 백엔드서버host : www.delivery.comIP와 포트 : 200.200.200.2:8080 배달의민족 프론트엔드서버host: www.delivery.comIP와 포트 : 200.200.200.2:3000 위 두개의 서버를 한개의 서버(컴퓨터)에서 돌릴시처음에는 우선 Host정보를 바탕으로 찾고 그다음 패킷의 Port정보로 찾아들어간다고 보면 될까요? 두번째 질문은동일IP에 Host만(도메인명) 다르다고해서 동일 포트를 지정할수있나요? 만약 가능하다면 이경우 Host를 이용해서 찾아간다고 이해하면 될까요? host: www.delivery.comIP와 포트 : 200.200.200.2:3000 host:www.hungry.comIP와 포트 : 200.200.200.2:3000 같은 서버(컴퓨터)내에서 구동중
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
어셈블리 코드가 좀 다릅니다.
강사님 코드에는 함수를 call 하기 전에 a, b를 스택에 push를 하는데 제꺼에는 그러한 부분이 없고 mov로 처리를 하네요. 혹시 제가 visual studio 2022 버전을 사용해서 컴파일러가 달라서 이런건가요?? 아니면 x64와 x86의 차이인가요?
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
질문드립니다
어떤 경우에는 함수를 따로 쓰고 어떤 경우에는 함수를 print 안에 넣어서 사용하는데 어떤 차이가 있는지 궁금합니다 예를 들어, a. reverse () print ('a - ', a) 이렇게 쓰는 경우가 있는데 print ('a - ', a. pop()) 이렇게 적는 경우도 있는데 어떤 차이가 있는지 궁금합니다
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
number가 0이 안되는 상황이 이해가 않습니다.
public void Acquire() { while (_locked) // 화장실 문이 비어있을 때 까지 대기를 한다. { } // 들어가서 문을 잠그는 작업 _locked = true; } 이렇게 화장실에 들어가는 과정과 잠그는 과정이 달라서, 그 시간차 동안에 두 쓰레드가 동시에 공유 자원에 접근해서 number에 0이지 나오지 않는다고 설명해주셨습니다. 근데 이 설명이 잘 이해가 가지 않습니다. 위 코드에 화장실에 2명이 들어간다는 게 어떤 의미인가요? 제가 이해한 바로는 _locked이 false가 되어 while문을 빠져나왔을 때 다른 쓰레드도 Acquire함수에 접근하여, 두 쓰레드에서 _locked에 true를 대입하는 것으로 이해했습니다. 근데 이러한 이유 때문에 number++와 number-- 연산에서 에러가 나는 과정이 이해가 되지 않습니다. 결국 for문을 만번이든, 10만번이든 돈 다는 뜻은 number++ 혹은 nunber-- 연산을 했다는 뜻인데 왜 number에 0이 출력되지 않고 이상한 값이 출력되는지 잘 모르겠습니다. number++ 혹은 number-- 연산이 스킵이 되는 과정이 이해가 안갑니다.
-
해결됨스프링 핵심 원리 - 기본편
DIP위반 정확히 이해가 가지 않습니다
아래 질문들을 보면서 'appconfig를 사용하면 dIP위반이 아니다'라는 답변도 있고 '클라이언트 객체에서 구현체를 의존하니 DIP위반이다' 라는 답변도 있어 헷갈리네요ㅜ 결국 구현체에서 만든 객체를 가져다 쓰는것이 문제가 아닌, 호출하는 클라이언트에서 getInstance()라는 구현체에 속하는 매소드를 사용해서 DIP위반이라는 말씀이신가요? (클라이언트는 메인이나 test에서 appconfig or 구현체를 실행하는 부분) (클라이언트(구현체) <-> getInstance()(구현체매소드)) 그러면 이경우 appcofig에서도 getInstance()를 받아주는(객체.getinstance()를 리턴하는) 매소드를 만들어 주면 DIP가 만족된다는 말씀이신거죠? 그리고 위의 말이 맞다면 'private생성자(컴파일 에러나도록) + 각 구현체마다 static 객체생성 + AppConfig에서도 객체리턴이 아닌 객체.getInstance()를 넣어주는 것' 을 spring boot에서는 자동적으로 실행하여 주기에 엄청 편리하다. 해당 설명을 보여주기위해 영한님이 자바로 실행 했을 때와 스프링으로 했을 때를 비교해주신 거고요.. 맞나요?? 제가 머리가 나빠서 그런지 추상적으로 설명해주신 아래 글들로는 이해가 잘 가지않네요ㅜ 구체적으로 해당 편의 강의에서 어떻게 DIP가 위반된건지 설명해 주실 수 있으신가요??