묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결딥러닝 CNN 완벽 가이드 - TFKeras 버전
입력 데이터 전처리 질문
안녕하세요. 11분 10초에서 labels 데이터 타입도 float32로 변경하셨는데, 혹시 이유가 있을까요? 항상 좋은 강의 감사합니다!
-
미해결딥러닝 CNN 완벽 가이드 - TFKeras 버전
멀티 레이블 관련 질문드립니다.
안녕하세요. 멀티 레이블 설명 관련해서 궁금한 점이 있어서 질문 남깁니다. 9분40초에서 한 모델에서 멀티 레이블할 수 있다고 하셨는데, 일반적으로 구현한다면 신발과 바지 각 모델을 만드나요? 아니면 한 모델에 멀티 레이블로 구현하나요?? 두 가지 방식중 어떤 방식을 선택할지 정하는 기준이 있나요?? 코로나에 걸리셨다고 들었는데, 하루빨리 쾌유하시길 바라겠습니다!
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
pm2 에러 질문입니다.
안녕하세요 제로초님!! 제가 현재 프론트 build 까지는 성공했고 sudo npx pm2 start npm -- start 를 하면 성공적으로 시작됐다고 뜨는데 막상 홈페이지에 들어가면 페이지를 찾을 수 없다고 하더라구요. monit 도 마찬가지로 로그에 아무것도 찍히지 않습니다. 다른 분들도 같은 현상을 겪는 분들이 많으신거 같은데 저는 sudo npx pm2 list 를 다시 하면 상태가 errored 라고 뜨더라구요 그래서 sudo npx pm2 logs 명령어로 로그를 쭉 봤는데요 잘 빌드가 되다가 이렇게 MODULE_NOT_FOUND 로 에러가 뜨더라구욥. 구글링 해보니까 rm -rf ~/.pm2 를 해보라 해서 작성 후 다시 start 해봐도 똑같은 에러가 발생합니다... 이 에러를 해결하려면 pm2 를 다시 재설치하는 수밖에 없을까요?? 추가로 front ec2 에서 보안포트 80도 추가된 상태입니다.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
connection 객체는 JSESSIONID를 가진 실제 conection을 생성해주는 객체인 것인가요?
DB 서버에 DB 클라이언트로 접근할 때는 JSESSIONID만 같으면 어떤 connection이든 같은 클라이언트로 여겨졌고 같은 트렌젝션을 가지게 되는 것 같았습니다.세션은 서버의 메모리에 남아서 커넥션보다 더 긴 생명주기를 가지고 stateless한 접속들을 stateful하게 처리하기 위한 방법이니까, 엄밀하게 말하면 어플리케이션에 있는 connection도 다른 connection과 JSESSIONID만 공유하면 같은 DB 세션과 트렌젝션을 가질 수 있어야 한다고 생각합니다.그런데 그런 것이 되지 않는 이유는 자바 스펙에서 connection이라는 객체가 connection 자체가 아니라 실제 connection들을 만들어주는, JSESSIONID를 보관하는 객체이기 때문이라는 생각이 들었습니다.한 마디로 getConnection()해서 커넥션을 획득해서 close()할 때가지 실질적으로는 하나의 커넥션이 생성되는게 아니라 preparedStatement의 executeQuery()와 executeUpdate()가 실행되어 tcp 통신이 이루어질 때마다 커넥션이 만들어졌다가 사라지고, 그때 connection 객체에서 관리되는 JSESSIONID에 의해서 같은 트렌젝션으로 관리된다는 생각이 들었습니다. 그리고 close()가 하는 역할은 커넥션의 종료라기 보다는 DB서버에 있는 세션을 메모리에서 내리는 역할을 한다는 생각이 들었습니다. 이런 제 생각이 맞을까요?
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
한 가지 확인차 질문드립니다!
안녕하세요! 매번 질문이 많은 것 같아 죄송하네요 ㅠㅠ 39초~40초 부근에서 'OpenCV DNN은 다크넷을 다운로드받아야 한다'고 설명하셨습니다. OpenCV DNN으로 YOLO를 사용하려면 다크넷을 다운로드받아야 한다는 게 맞는 표현인 것이죠? 혹시나 해서 확인차 여쭈어봅니다 ^^
-
미해결홍정모의 따라하며 배우는 C언어
char str1[10]에 10글자 이상 입력 시 뜨는 한자
char str1[10]에 10글자 이상을 입력해보았습니다. 아래 출력된 한자도 메모리에 포함되는 것일까요? 왜 한자가 뜨게 되는건가요~?
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
엔티티에서 관계 맺을 때 질문...
@Column('int', { name: 'OwnerId', nullable: true }) OwnerId: number | null; @ManyToOne(() => Users, (users) => users.Workspaces, { onDelete: 'SET NULL', onUpdate: 'CASCADE', }) @JoinColumn([{ name: 'OwnerId', referencedColumnName: 'id' }]) Owner: Users; https://github.com/ZeroCho/sleact/blob/master/nest-typeorm/src/entities/Workspaces.ts 에서 코드 가져왔습니다. name: "ownerId"가 서로 중복되어서 들어가 있는데, 이거를 어떻게 이해할 수 있을까요? --> 컴파일 과정에서 오류가 나지 않는 것이 궁금하다 이것입니다. 최소한 ambigious하다고 오류가 나야할 것만 같은 코드로 보입니다. https://www.inflearn.com/questions/248521 에서 보니 굳이 join을 하지 않고 참조 및 수정을 하기 위한 것으로 보이는데, (실제로 제로초님의 서비스를 보니 join 없이 senderId, ownerId 와 같이 바로바로 수정하는 것을 봤습니다.) joinColumn을 바로 수정하게 되면 join을 하지 않고도 그 안의 정보들이(실제 join되는) 수정 및 참조가 가능한 것인가요? //그런데 질문을 올리고 다시 생각해보니 @joinColumn은 자동으로 ownerId를 만들어 줄텐데, join column에서도 생성되고, 이미 생성을 또 해놓았는데 음... 사실 이 엔티티가 잘 이해가 되지 않습니다. //또 추가로 ManyToOne에서는 적지 않아도 joinColumn을 자동으로 만들어준다고 하면, 위의 코드를 이렇게만 적어도 문제가 안되지 않나 싶기도 합니다... @ManyToOne(() => Users, (users) => users.Workspaces, { onDelete: 'SET NULL', onUpdate: 'CASCADE', }) Owner: Users; //아니면 저렇게 적는 것이 join을 하지 않아도 joinColumn을 유지하기 위한 것인가요? --> 혹시 그렇다면 컴파일 과정에서 오류는 없는지 궁금합니다. 질문이 굉장히 두서없는 점 죄송합니다... 군대에서 연등시간에만 보고 빠르게 적고 하다보니 충분한 이해없이 질문한 거라면 죄송합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
3:14 앞글자만 대문자로 바꾸기
어떻게 바로 맨 앞글자만 대문자로 바꾸셨나요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
질문있습니다.
a[i][k] == a[j][k] 여기에서요, i 번 학생과 j 번 학생을 비교하는건 이해를 하였는데요 i = 1 이고, j =1 이라면 같은 학생(1번학생) 의 학년을 비교하고 있는것이 아닌가요? if ( i != j && a[i][k] == a[j][k] ) 이렇게 번호가 겹치지 않게 해주어야 할것같은데 제가 무엇을 놓치고 있는지를 모르겠습니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
NumberFormat 추상클래스 인스턴스화에대해서
추상클래스는 인스턴스화 될수없다고 알고있는데요. NumberFormat.getInstace();로 인스턴스를 생성하는것을 수업시간에봤습니다. 추상클래스가 어떻게 인스턴스화할수있는건가요?
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
http body에 데이터를 담는경우
강의를 보며 나름의 api를 만들어 보다가 궁금한점이 생겼습니다. 저는 http body가 들어갈 수 있다면, 대부분 body로 프론트에서 백으로 데이터를 보내고, 그렇지 못한 method에만 (get, delete와 같은) query, params를 이용했는데, 제로초님의 깃헙에서 코드도 보고 하니, post요청같은 경우에도 query와 params를 이용하시기도 하고 body를 이용하기도 하던데 본인만의 룰이 있어서 그렇게 하는건가요?? controller들을 잘 찾아보니 보통 생성하는 create에 해당하는 부분만 dto를 생성해서 데이터를 담던데, api를 깔끔하게 사용하기 위한 룰인지 궁금합니다...
-
미해결
[REACT] Module not found:~~~Can't resolve '라이브러리' 오류 문의입니다.
react에서 새로운 라이브러릴 다운받고 사용할때 자주 일어나는 오류로 알고있습니다.. 구글링의 결과 삭제후 재설치를 대부분 권장하시길래, 기본적으로 package-lock.json과 node_modules폴더를 삭제 진행후 npm install 이후 실행하는 것을 몇번을 반복해도 아래와 같이 같은 결과가 나오네요ㅠㅠ 해결책을 아시는 분이 있다면,, 알려주시면 감사드리겠습니다.. Compiled with problems:X ERROR in ./node_modules/fs.realpath/index.js 8:9-22 Module not found: Error: Can't resolve 'fs' in 'C:\Users\A\Videos\React class\shop1\shop1\node_modules\fs.realpath' ERROR in ./node_modules/fs.realpath/old.js 21:17-32 Module not found: Error: Can't resolve 'path' in 'C:\Users\A\Videos\React class\shop1\shop1\node_modules\fs.realpath' BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default. This is no longer the case. Verify if you need this module and configure a polyfill for it. If you want to include a polyfill, you need to: - add a fallback 'resolve.fallback: { "path": require.resolve("path-browserify") }' - install 'path-browserify' If you don't want to include a polyfill, you can use an empty module like this: resolve.fallback: { "path": false } ERROR in ./node_modules/fs.realpath/old.js 25:9-22 Module not found: Error: Can't resolve 'fs' in 'C:\Users\A\Videos\React class\shop1\shop1\node_modules\fs.realpath' ERROR in ./node_modules/glob/common.js 13:9-22 Module not found: Error: Can't resolve 'fs' in 'C:\Users\A\Videos\React class\shop1\shop1\node_modules\glob' ERROR in ./node_modules/glob/common.js 15:11-26 Module not found: Error: Can't resolve 'path' in 'C:\Users\A\Videos\React class\shop1\shop1\node_modules\glob' BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default. This is no longer the case. Verify if you need this module and configure a polyfill for it. If you want to include a polyfill, you need to: - add a fallback 'resolve.fallback: { "path": require.resolve("path-browserify") }' - install 'path-browserify' If you don't want to include a polyfill, you can use an empty module like this: resolve.fallback: { "path": false } ERROR in ./node_modules/glob/glob.js 52:11-26 Module not found: Error: Can't resolve 'path' in 'C:\Users\A\Videos\React class\shop1\shop1\node_modules\glob' BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default. This is no longer the case. Verify if you need this module and configure a polyfill for it. If you want to include a polyfill, you need to: - add a fallback 'resolve.fallback: { "path": require.resolve("path-browserify") }' - install 'path-browserify' If you don't want to include a polyfill, you can use an empty module like this: resolve.fallback: { "path": false } ERROR in ./node_modules/glob/glob.js 54:13-30 Module not found: Error: Can't resolve 'assert' in 'C:\Users\A\Videos\React class\shop1\shop1\node_modules\glob' BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default. This is no longer the case. Verify if you need this module and configure a polyfill for it. If you want to include a polyfill, you need to: - add a fallback 'resolve.fallback: { "assert": require.resolve("assert/") }' - install 'assert' If you don't want to include a polyfill, you can use an empty module like this: resolve.fallback: { "assert": false } ERROR in ./node_modules/glob/glob.js 67:11-26 Module not found: Error: Can't resolve 'util' in 'C:\Users\A\Videos\React class\shop1\shop1\node_modules\glob' BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default. This is no longer the case. Verify if you need this module and configure a polyfill for it. If you want to include a polyfill, you need to: - add a fallback 'resolve.fallback: { "util": require.resolve("util/") }' - install 'util' If you don't want to include a polyfill, you can use an empty module like this: resolve.fallback: { "util": false } ERROR in ./node_modules/glob/sync.js 12:11-26 Module not found: Error: Can't resolve 'util' in 'C:\Users\A\Videos\React class\shop1\shop1\node_modules\glob' BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default. This is no longer the case. Verify if you need this module and configure a polyfill for it. If you want to include a polyfill, you need to: - add a fallback 'resolve.fallback: { "util": require.resolve("util/") }' - install 'util' If you don't want to include a polyfill, you can use an empty module like this: resolve.fallback: { "util": false } ERROR in ./node_modules/glob/sync.js 14:11-26 Module not found: Error: Can't resolve 'path' in 'C:\Users\A\Videos\React class\shop1\shop1\node_modules\glob' BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default. This is no longer the case. Verify if you need this module and configure a polyfill for it. If you want to include a polyfill, you need to: - add a fallback 'resolve.fallback: { "path": require.resolve("path-browserify") }' - install 'path-browserify' If you don't want to include a polyfill, you can use an empty module like this: resolve.fallback: { "path": false } ERROR in ./node_modules/glob/sync.js 16:13-30 Module not found: Error: Can't resolve 'assert' in 'C:\Users\A\Videos\React class\shop1\shop1\node_modules\glob' BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default. This is no longer the case. Verify if you need this module and configure a polyfill for it. If you want to include a polyfill, you need to: - add a fallback 'resolve.fallback: { "assert": require.resolve("assert/") }' - install 'assert' If you don't want to include a polyfill, you can use an empty module like this: resolve.fallback: { "assert": false } ERROR in ./node_modules/node-sass/lib/extensions.js 4:10-27 Module not found: Error: Can't resolve 'os' in 'C:\Users\A\Videos\React class\shop1\shop1\node_modules\node-sass\lib' BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default. This is no longer the case. Verify if you need this module and configure a polyfill for it. If you want to include a polyfill, you need to: - add a fallback 'resolve.fallback: { "os": require.resolve("os-browserify/browser") }' - install 'os-browserify' If you don't want to include a polyfill, you can use an empty module like this: resolve.fallback: { "os": false } ERROR in ./node_modules/node-sass/lib/extensions.js 5:9-22 Module not found: Error: Can't resolve 'fs' in 'C:\Users\A\Videos\React class\shop1\shop1\node_modules\node-sass\lib' ERROR in ./node_modules/node-sass/lib/extensions.js 6:11-26 Module not found: Error: Can't resolve 'path' in 'C:\Users\A\Videos\React class\shop1\shop1\node_modules\node-sass\lib' BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default. This is no longer the case. Verify if you need this module and configure a polyfill for it. If you want to include a polyfill, you need to: - add a fallback 'resolve.fallback: { "path": require.resolve("path-browserify") }' - install 'path-browserify' If you don't want to include a polyfill, you can use an empty module like this: resolve.fallback: { "path": false } ERROR in ./node_modules/node-sass/lib/index.js 4:11-26 Module not found: Error: Can't resolve 'path' in 'C:\Users\A\Videos\React class\shop1\shop1\node_modules\node-sass\lib' BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default. This is no longer the case. Verify if you need this module and configure a polyfill for it. If you want to include a polyfill, you need to: - add a fallback 'resolve.fallback: { "path": require.resolve("path-browserify") }' - install 'path-browserify' If you don't want to include a polyfill, you can use an empty module like this: resolve.fallback: { "path": false } ERROR in ./node_modules/true-case-path/index.js 5:11-26 Module not found: Error: Can't resolve 'path' in 'C:\Users\A\Videos\React class\shop1\shop1\node_modules\true-case-path' BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default. This is no longer the case. Verify if you need this module and configure a polyfill for it. If you want to include a polyfill, you need to: - add a fallback 'resolve.fallback: { "path": require.resolve("path-browserify") }' - install 'path-browserify' If you don't want to include a polyfill, you can use an empty module like this: resolve.fallback: { "path": false } -
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
api 호출할 때 call 질문입니다.
saga에서 api호출 할 때 알려주신 방식과 function api(data) { return axios.get(http...); } function* addPost(action) { try { const result = yield call(api , action.data) } ************************** 다른 클래스에 api 호출하는 곳만 담아줘서 호출하는 방식이 있는데요이렇게 되면 call 안쓰고 실행하게 됩니다. 이 두개의 차이점이 있나요? import ItemService from '../../service/item/Item.service' function* addItem(action) { try { const result = yield PostService.addItemApi(action.data) yield put({ type: ADD_ITEM_SUCCESS, data: result.data }) } catch (err) { yield put({ type: ADD_ITEM_FAILURE, error : err.response.data }) } }
-
미해결뉴욕 프로덕트 디자이너가 알려주는, 입문자를 위한 UX디자인 개론
선생님 메일로 과제 보냈습니다!
과제 보냈습니다. 확인 및 피드백 부탁드립니다!
-
미해결언리얼 엔진4 (Unreal Engine) 3D 횡스크롤 게임 만들기
몬스터 회전 문의 드립니다.
강의 목자 : 보스 AI 동영상 시간 : 보스 버그 수정 : 10분 03 초 부분 영상에 나온 회전 노드는 플레이어 캐릭터 방향으로 너무 급격하게 2D 처럼 회전해서 너무 부자연 스럽습니다... 부드럽게 회전 하려면 어떤 노드로 해야 되는지 궁굼합니다. 자연스럽게 회전 하는 노드로 변경하고 싶어요 ㅠ_ㅠ
-
미해결홍정모의 게임 만들기 연습 문제 패키지
도형들의 움직임이 너무 빠릅니다...
안녕하세요! 다름이 아니라 깃허브에 있는 예제코드를 클론한 뒤, 아무것도 건들지 않고 영상에 나온것 그대로 rotate(time * 90.0f)를 하면 도형이 영상에서 나온것 처럼 천천히 도는게 아니라 진짜 미친듯이 빠르게 돕니다... 그리고 //jm::TankExample().run(); 예제를 실행시키면 살짝만 눌러도 탱크가 엄청 빠르게 움직입니다. 혹시 클론을 했을때 문제인가 싶어서 다시 클론해봐도 같은 문제가 발생하고, 전부 복사 붙여넣기 해봐도 같은 결과가 나옵니다.ㅠㅠ 혹시 뭐가 문제인지 알 수 있을까요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
REPEATABLE READ 등은 Serializable보다 완전히 안전하지는 않지만 성능이 좋기 때문에 사용하는 것인가요?
생각하다 보니까 고립도라는 것은 근본적으로 이런 경우에는 이런 고립도만 쓰지 않으면 100% 안전하기 때문에, 쓸 수 있는 고립도 중 가장 성능이 좋은 고립도를 쓰는게 아니라, 어떤 고립도를 쓰더라도 확률적으로 위험한 경우가 발생할 수 있지만 잘 일어나지 않기 때문에 Serializable 아닌 성능적으로 빠른 REPEATABLE READ 등을 사용하는 것인지 궁금합니다. ====================== 제가 생각한 일반적인 예는 아래와 같습니다. 아버지와 아들이 있습니다.아들은 다음날 수학 여행에 필요한 버스비가 1000원이라고 아버지께 말해놓았습니다. 그래서 아버지는 저녁때 아들의 계좌를 확인해서 1000원으로 맞춰놓기로 약속하셨습니다.그날 저녁 아버지의 행동을 함수로 구현하면 아래와 같습니다. 아들 계좌를 확인하고 1000원이 되도록 채워주기_f() {select해서 아들 계좌의 돈을 확인합니다. 1000 - 아들 계좌의 돈 만큼 다시 아들 계좌로 송금합니다.} 그날 저녁 아들 계좌에는 700원이 있었는데 자기 돈을 사용해서 200원짜리 포켓몬 빵을 사먹었습니다. (아들의 update문)그런데 그때 하필 아버지가 아들 계좌를 확인하고 1000원이 되도록 채워주기_f() 를 실행한 겁니다. 아버지가 select 할 때는 아들 계좌는 700원이었습니다. 그래서 아버지는 300원만 더 넣어주면 1000원이 되겠군, 이라고 결론을 내리고 300원을 아들 계좌로 송금합니다. 300원을 송금하는 부분을 쪼개어보면 select 해서 아들의 계좌 잔액을 가져오고 거기에 300원을 더한 값을 set 하는 방식이었습니다. (SQL에 add라는 기능이 없기 때문에)그래서 결국 락이 풀림과 동시에 set 1000이 될 겁니다. 아들은 분명 200원짜리 포켓몬을 샀는데도 계좌에는 800원이 아닌 1000원이 남게 됩니다. 무에서 유가 창출되는 사건이 발생하는 것입니다!============================================위의 예처럼 update문에만 락이 걸려도 무결성에 위배되는 경우가 생길 것 같습니다. Serializable이라는 고립 레벨이 있긴 해도 성능상의 이유로 Serializable은 잘 안 쓴다고도 알고 있습니다. 그럼 Serializable 아닌 경우라면 위와 같이 절묘하게 타이밍만 맞아 떨어지면 데이터 무결성이 깨지는 경우가 발생할 수 있다는 것인데... 그럼 일반적으로 REPEATABLE READ를 사용할 수 있는 논리와 아닌 논리로 나누어져 있다기 보다는 위와 같이 절묘한 순간이 잘 일어니지 않기 때문에 성능적으로 더 좋은 REPEATABLE READ 등을 사용한다고 보면 되나요?
-
미해결
오셔서 숟가락만 얹으시면 됩니다! (온라인 프로젝트 팀원)
현재 프론트엔드(2) + 백엔드 (2)명이서 프로젝트를 하고 있었는데, 프론트였던 제가 개인사정 (취업, 이사, 건강 문제 겹침)으로 지금 아예 프로젝트에 참여를 못하고 있습니다. 다른 팀원들께 민폐가 되는 것 같아 팀원분들께 말씀을 드리고, 새로운 팀원을 대체하려고 하고 있습니다.[장점] - api다 나왔고, 진행 상황 80% 이상입니다. - 지금 투입되시면 소셜로그인, 회원가입만 구현하시면 되고, 이부분도 ui,API 다 나온 상태입니다. - 모든 일은 문서로 노션에 정리되어 있습니다. - 제가 직접 코드 설명도 드리고, 또 막히는 부분있으면 제가 계속 도움 드리겠습니다! - 슬랙 통해서 매주 수요일 7시에 슬랙으로 회의하고 있고, 현재 배포도 완료되었습니다! 관심 있으신 분은 아래 오픈 채팅으로 들어오셔서 편하게 질문해주시면 됩니다.카카오톡 오픈채팅 (kakao.com) (들어오시면 저희 지금 배포된 사이트도 보여드리겠습니다!) 참고로 주제는 프로젝트 매칭 사이트(홀라 클론코딩)입니다.
-
미해결스프링 핵심 원리 - 기본편
@Qualify, @Primary보다 @Autowired + @RequiredArgsConstructor이 최고의 방법 아닌가요?
안녕하세요. 강의를 듣는 중 두 가지 궁금한 점이 생겨서 질문 남기게 됐습니다. 1. 제목의 내용과 같습니다. 쉽게 말해 두 개 이상의 동일한 타입의 빈이 등록 돼 있을 경우 아래와 같이 사용할 수 있더군요. 여기서 보면 RequiredArgsConstructor를 통해 두 final 변수를 매개변수로 생성자를 생성했습니다. 그리고 필드 명을 fixDiscountPolicy로 바꿔주므로써 DiscountPolicy 타입으로 등록된 두개의 빈 중 fixDiscountPolicy가 선택돼 주입되도록 했습니다. 이 방법이 최고의 방법이라고 생각한 이유는 DiscountPolicy에 의존하므로써 추상화에만 의존하는 법칙을 지키면서 해당 구현체로 뭘 쓰고 있는지 변수명으로 파악이 가능하기 때문입니다. 이 부분에 대해서 생각한 부분이 맞는지 궁금합니다. 2. @RequiredArgsConstructor를 사용하면 @Qualifier를 쓸 수 없나요? 감사합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
질문이 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]아래 처럼 reponse 에 값을 넣으면 스프링이 알아서 리스폰스를 리턴해 주는건가요? callbyreference 라고 생각하면될까요? @Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpRequest = (HttpServletRequest) request; ... ... httpResponse.sendRedirect("/login?redirectURL=" + requestURI); }