묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링부트 시큐리티 & JWT 강의
마지막 27강에 세션 저장에 대해 궁금한점이 있습니다.
이 부분에서 잘 이해가 안가는것이 있어 질문드립니다. 첫번째는, 저 밑줄 친 부분은 이미 정상적으로 jwt토큰 검증이 끝난 케이스인데 저 때 해당 권한처리를 위한 세션을 저장한다고 하면 권한 요청이 필요한 uri에 들어갈때 마다 계속해서 세션을 저장하게 되는것인가요? 예를들어 게시글 작성, 프로필 보기 이런 링크를 탈 때마다 밑줄 친부분이 실행이 될텐데 그렇다면 동일한 user의 권한을 중복되서 저장되는게 아닌가 싶어서 질문드립니다. 두번째는,처음에 로그인할때 권한을 세션에 저장하는 것이 아니라 저렇게 권한 요청이 있을때 세션에 권한을 저장하는 형식으로 만드는 이유가 궁금합니다. 끝으로, 정말 수업 재밌게 잘들었습니다. 궁금해서 답답했던 부분이 이 강의 하나로 "뻥"하고 해소된 느낌입니다. 좋은 강의 감사합니다!
-
미해결스프링 데이터 JPA
Multiple DataSource 사용 시 transaction 관련 질문 드립니다.
아래 비슷한 질문이 있네요. 추가로 질문 드리겠습니다 :) 3개의 database에 access하는 application을 작성 중입니다. 1개는 조회만(A라고 하겠습니다) / 나머지 2개(B, C라고 하겠습니다)는 수정도 하기 때문에 transaction이 필요합니다. 각 DB의 Configuration을 만들어, LocalContainerEntityManagerFactoryBean 및 TransactionManager를 설정하여 각각의 DB 접속에 성공하였습니다. 서비스 로직 중에, 하나의 메소드에서 B,C에 insert / update 하는 로직이 있어서 둘 다 commit / rollback 이 되어야 합니다. ChainedTransactionManagerConfiguration를 사용하니 가능하였습니다.configuration 파일은 다음과 같습니다. @Configuration public class ChainedTransactionManagerConfiguration { @Qualifier("abTransactionManager") @Bean public ChainedTransactionManager chainedTransactionManager( @Qualifier("BTransactionManager") JpaTransactionManager aTransactionManager, @Qualifier("BTransactionManager") JpaTransactionManager bTransactionManager ) { return new ChainedTransactionManager(aTransactionManager, bTransactionManager); } } abTransactionManager를 @Transactional 어노테이션에 설정하니 둘 다 롤백이 잘 되었습니다. 그런데, springboot 2.5부터 ChainedTransactionManagerConfiguration 이 deprecated 된다고 하네요. 이유는 2개의 AbstractPlatformTransactionManager 를 사용할 때에 side effect가 발생해서라고 합니다(https://github.com/spring-projects/spring-data-commons/issues/2232 를 참고하시면 됩니다.) 이와 같은 상황에서 ChainedTransactionManagerConfiguration 를 대체하여 추천해 주실 만한 것이 혹 있을까요? 그 외에 TransactionManager를 사용하지 않고서라도 할 수 있는 방법이 혹 있을지요? 대부분의 경우에는 그냥 사용해도 될 것 같기도 한데 좀 찜찜해서요 질문이 너무 길었네요. 감사합니다. ^^;
-
미해결스프링 핵심 원리 - 기본편
setUrl null
안녕하세요 사진의 set에 url을 설정하였는데 왜 null값이 나오는지 이해가 되지않습니다. 어떠한 이유때문인지 알고싶습니다. 감사합니다!
-
미해결스프링 핵심 원리 - 기본편
관심사 분리에서 문법 관련하여 질문 드립니다.
첫번째 사진에선 OrderApp 클래스에서 appConfig를 선언하고 다음줄에 변수가 자동완성이 되던데 test에 속해있는 MemberServiceTest 클래스에서는 자동완성이 안되더라구요, appConfig를 치고 . 찍어도 메소드도 안불려와지구요 MemberService memberservice = appConfig.memberservice() 처럼 그냥 앞에서 MemberService를 먼저 선언하고 쭈욱 적으면 가능하긴 하던데.. 위의 선언이 안되는 이유는 무엇인가요?
-
미해결실전! Querydsl
querydsl 작성과 최적화에 문제가 있습니다! 도와주세요!
해당 유저(to_user)가 팔로우한 유저(from_user)가 작성한 모든 게시글(playlist)을 가져오는 쿼리를 작성하고 싶습니다. 정확히 말씀드리자면 작성은 하고 제대로 가져는 오는데 오답같습니다... public List<Playlist> findFolloweesMakePlaylist(Long userSeq){ return jpaQueryFactory .selectFrom(playlist) .join(userLikes).fetchJoin() .on(playlist.user.userSeq.eq(userLikes.toUser.userSeq)) .where(userLikes.fromUser.userSeq.eq(userSeq)) .fetch();} 제가 작성한 코드는 위와 같습니다. 나의 userId인 userSeq를 받아서 게시글 작성자 ID와 내가 좋아요 한 사람ID가 같은 부분을 on절로 join 하고, 플레이리스트 작성한 사람에게 좋아요를 한 사람이 저인지 where절로 체크하였습니다. 테스트 돌리면 답은 나오지만 team member처럼 직접적으로 이어져있지 않으니 join 과정에서 막대한 곱하기 연산이 나올것 같고 애초에 잘못짠것 같습니다... 도와주세요!
-
미해결Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념
스토어 속성 모듈화
본 강의의 내용이 index.js가 비대해지기 때문에 actions.js, mutation.js를 만들어서 모듈화를 진행한다고 이해했는데요. actions.js와 mutations도 점차 비대해질 것으로 보이는데, 이 경우에는 어떻게 하나요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
V2 HandlerAdapter 적용하기
안녕하세요. 수업을 듣다가 V2 또한 Adapter 로 만들어 보려고 하였습니다. 김영한님이 V2 를 적용하려면 아마 FrontController 도 건드려야 할 거라고 하셨는데, ControllerV2HandlerAdapter도 MyHandlerAdapter 인터페이스를 구현하니 어떻게든 ModelView 를 리턴하게 만들 수밖에 없더라고요. (잠깐 디폴트 메소드 써볼까 했는데…어차피 추상메소드는 구현해야하니까 그것도 안되더라고요 ㅜㅜ) 그래서 차라리 ControllerV2HandlerAdapter로 ModelView 를 구현하게 만들었는데, public class ControllerV2HandlerAdapter implements MyHandlerAdapter { @Override public boolean supports(Object handler) { return (handler instanceof ControllerV2); } @Override public ModelView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException, IOException { ControllerV2 controller = (ControllerV2) handler; MyView view = controller.process(request, response); String viewPath = view.getViewPath(); // 모델뷰 만들기 String viewName = parsingViewName(viewPath); ModelView mv = new ModelView(viewName); // 모델뷰에 모델 넣기 Map<String, Object> model = new HashMap<>(); request.getAttributeNames().asIterator() .forEachRemaining(attributeName -> model.put(attributeName, request.getAttribute(attributeName))); mv.setModel(model); return mv; } private String parsingViewName(String viewPath) { String[] splitList = viewPath.split("/"); int lastIndex = splitList.length - 1; String viewNameWithJSP = splitList[lastIndex]; String[] splitJSP = viewNameWithJSP.split("[.]"); String viewName = splitJSP[0]; return viewName;} 작동은 잘 되는데, 저 parsingViewName 메소드로 너무 억지로 ModelView로 반환하려는 느낌이 들어서… 조금 아쉽습니다. FrontController 에서 쉽게 바꿀 수 있는 아이디어가 있을까요? 아직 저는 구현 Adapter들이 MyHandlerAdapter 를 구현하는 것 때문에 FrontController 에서는 어떻게 바꿔야할지 모르겠습니다. 또 한편으로 Adapter의 역할이 말 그대로 110V 이나 50V 뭐든 220V 으로 맞춰주는 거라고 생각한다면, ControllerV2HandlerAdapter 에서 억지로라도 ModelView 로 반환해주는 것이 맞는 것 같다는 생각도 듭니다. 그래서, 만약 FrontController 와 구현 Adapter 중 하나를 수정해야한다면 무엇을 수정하는 것이 더 효율적인가요?(유지보수면에서요!)
-
미해결머신러닝/딥러닝으로 이어지는 선형대수
벡터공간 조건 관련 질문드립니다.
안녕하세요. 강사님 벡터성질 - 벡터공간 관련 학습 중에 질문이 있습니다. 강의에서 벡터 성질 12개를 설명하시고, 벡터 공간과 관련된 조건은 8개라고 하셨는데요. 나머지 4개 성질(0u = 0 등)은 왜 불필요한지 궁금합니다. 8개 조건이 만족되면 나머지 4개도 자동으로 만족이 되는건가요?
-
해결됨스프링 핵심 원리 - 기본편
강의에서 사용하는 개발방법론과 그 단계에 대해 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. 회원 도메인 설계 강의를 듣고 궁금한 점이 생겼습니다 아래의 1~5번의 제가 쓴 답변 각각에 대해서 YES/NO인지 궁금합니다. 제가 영어를 못해서 검색한 결과를 제대로 해석했는지 모르겠습니다. 맞는지 확인 부탁드립니다. 1. 도메인 설계가 무엇인가 -> 어플리케이션을 로지컬한 단위로 나누어 각각 설계하는 것이다. 질문게시판에 이미 동일한 질문이 있었고 위키피디아에서 도메인이라는 부분을 읽었습니다(해답은 얻었으나 내용은 생략) 여기서 '요구사항 분석'이라는 두 번째 키워드를 얻었습니다. 2. 요구사항 분석은 무엇인가 -> 소프트웨어 개발 방법 모델 중 '폭포수 모델'의 첫 번째 단계이다. 3. 그럼 강의에서 폭포수 모델을 사용하는 것인가 -> 아니다. 자세히 찾아보니 요구사항 분석은 소프트웨어 개발모델 중 어떤 것이든 다 포함되는 부분입니다. 게다가, 폭포수 모델은 굉장히 오래된 방법이고 요즘은 애자일에 기반한 방법론을 사용한다라는 글을 읽어서 이건 아니라고 판단했습니다. 여기서 '애자일에 기반한 방법론'이라는 키워드를 얻었습니다. 4. 방법론에는 무엇이 있고 이 중 강의에 나온 방법론은 대체 무엇인가 -> DDD일 것이다. 강의에 제시된 그림은 UML이라고 하는 것입니다. 소프트웨어 개발 방법론이라고 검색을 해서 XP, 스크럼, RUP, DDD 이 네 가지를 찾았는데 강의에 나온 그림과 비슷한 UML그림이 등장하는 건 RUP개발 단계 중, Elaboration단계 그리고 DDD의 도메인 레이어 설계부분이었습니다. RUP는 OOA이고 DDD는 도메인 주도 설계인데 이 둘 중 이름부터가 도메인이 들어가는 DDD가 맞을 것이다. 5. 그럼 스프링 강의를 다 듣고 내 어플리케이션을 직접 만드는 단계가 오면 DDD를 공부하면 되는것인가? -> 그렇다 웹 어플리케이션을 만들 때 트랜잭션 스크립트 패턴, 도메인 모델 패턴 이 두 가지 중 하나를 사용한다? 도메인 모델 패턴이 주로 사용된다? 그래서 DDD책을 구해서 읽으면 될 것이다? 소프트웨어 공학과목을 공부해야 할 것이다? 이틀동안 영어를 너무 많이 읽었더니 머리가 혼란스럽다? 저 전자과라서 주변에 펌웨어 개발자밖에 없는데 다들 헛소리 하지 말라 그러고 답을 안줘서 너무 슬픕니다. 누구든 좋으니 대답해주세요. 이틀동안 검색도 많이하고 유튜브 영상도 많이 봤는데 아직도 모르겠습니다. 뭐라고 검색해야 하는지 키워드도 몰라서 이것저것 싹다 검색했습니다. 컴공에서 배우는 소프트웨어 공학과목에 나오는 개념인 것 같은데 그걸 배워야 하나요. 아~정말 야속한 세상 왜 하필 전자과를 들어가가지고 증말. 긴 글 읽어주셔서 감사합니다.
-
미해결MERN STACK 커뮤니티 : 시작부터 배포까지 알려주는 React
안녕하세요. 이미지 네이버 클라우드 저장 시점 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 이미지가 네이버 클라우드에 저장되는 시점을 submit을 하고 저장되게 할려면 어떻게 할 수 있을까요???
-
미해결Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념
API 응답 상태
안녕하세요. 다음과 같은 API 응답 형태에 대해서는 어떻게 처리할 수 있을 지궁금합니다. { "code": "0000", "message": "Success", "info": //실제 데이터가 담김. } 위와 같은 API 응답 메시지가 있다고 했을 때, vue에서 code 값이 "0000"은 성공이므로 데이터를 뿌려주고, 1000은 alert('잘못된 파라미터입니다'), 2000은 alert('인증에 실패했습니다.') 처럼 동작해야 한다면 어떻게 해야 할까요? 컴포넌트에서 vuex의 actions에 요청하고, this.$store.news.code의 값에 따라서 alert을 띄워주면 될까요?
-
미해결PWA 시작하기 - 웹 기술로 앱을 만들자
깃헙 권한 요청드립니다.
인프런 아이디 : leesujeong 인프런 이메일 : leesujeong@lotte.net 깃헙 아이디 : callu9 감사합니다.
-
해결됨오라클 성능 분석과 인스턴스 튜닝 핵심 가이드
swingbench 과정에서 oewizard.bat 실행 시 오류
안녕하세요. 수업 관련해서 문의 드립니다.. swingbench 는 잘 작동 됩니다. 다만, oewizard.bat 실행 시 오류가 발생하여 해결방법이 있는지 문의 드립니다. 감사합니다.~! swingbench version : OS version : windows 10 64bit java -version : oewizard.bat 실행 시 오류 사항:
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
typeorm 관련 질문입니다
nest 강의에 블로그 만들기를 해보던 중에 문의 드리고 싶은 부분이있어서 질문 드립니다 Blog 클래스에 @ManyToMany에 JoinTable을 'blog_tag'로 만들어서 db에 정상적으로 테이블 생성도 정상적으로 되었습니다 그런데 blog_tag테이블에 insert나 delete를 해야하는데 Repository를 어떻게 만들어야 할지 궁금하여 문의 드립니다... getManager().query()로 쿼리 문자열을 만들어서 추가 하는 방법으로만 사용을 해야 한는지 'blog_tag'에 Repository를 만들어서 insert나 delete를 할 수 있는 방법이 있는 방법이 있는지 문의 드립니다
-
해결됨풀스택 리액트 토이프로젝트 - REST, GraphQL (for FE개발자)
next.config.js 파일미생성
안녕하세요. 환경설정 영상에도 next.config.js 파일이 없는데 이번영상에서 next.config.js파일을 수정하는 부분이 있습니다. 해당 파일은 영상을 따라해도 생성되지 않는데 확인을 요청드립니다. server쪽 폴더에도 작업한 내용이 없는데 영상에는 파일들이 있는것 같습니다. 아마 이전영상에 이어 촬영되지 않은것 같은데 확인을 요청드립니다.
-
미해결처음 배우는 리액트 네이티브
빌드 관련 문의
expo build:android 로 빌드시에는 정상적으로 빌드가 되지만 expo build:ios 빌드시 시뮬레이터를 하거나 아카이브를 선택을 해도 동일한 빌드 오류가 발생을 하는데 특별한 빌드오류 정보가 없는데... 어떤 부분을 찾아 봐야될지 문의 드립니다. expo.dev 에 아래와 같은 오류만 계속 나오고 빌드가 되지 않아 문의 드립니다. Error: ibtool exited with non-zero code: 255 at ChildProcess.completionListener (/usr/local/turtle-js/node_modules/@expo/xdl/node_modules/@expo/spawn-async/build/spawnAsync.js:52:23) at Object.onceWrapper (events.js:421:26) at ChildProcess.emit (events.js:314:20) at ChildProcess.EventEmitter.emit (domain.js:483:12) at maybeClose (internal/child_process.js:1022:16) at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) ... at spawnAsync (/usr/local/turtle-js/node_modules/@expo/xdl/node_modules/@expo/spawn-async/build/spawnAsync.js:17:21) at spawnAsyncThrowError (/usr/local/turtle-js/node_modules/@expo/xdl/build/detach/ExponentTools.js:201:45) at Object.configureLaunchAssetsAsync (/usr/local/turtle-js/node_modules/@expo/xdl/build/detach/IosLaunchScreen.js:330:53) at async Object.configureAsync (/usr/local/turtle-js/node_modules/@expo/xdl/build/detach/IosNSBundle.js:714:7) at async Object.configureAndCopyArchiveAsync (/usr/local/turtle-js/node_modules/@expo/xdl/build/detach/IosShellApp.js:367:3) at async Object.runShellAppBuilder [as default] (/usr/local/turtle-js/build/builders/utils/ios/shellAppBuilder.js:67:12) at async Object.buildSimulator [as default] (/usr/local/turtle-js/build/builders/ios/simulator.js:11:5) at async Object.iosBuilder [as ios] (/usr/local/turtle-js/build/builders/ios/index.js:33:13) at async build (/usr/local/turtle-js/build/jobManager.js:181:33) at async processJob (/usr/local/turtle-js/build/jobManager.js:118:32) at async Object.doJob (/usr/local/turtle-js/build/jobManager.js:49:5) at async main (/usr/local/turtle-js/build/server.js:66:13)
-
해결됨풀스택 리액트 토이프로젝트 - REST, GraphQL (for FE개발자)
서버오류발생
선생님. 환경세팅 화면 그대로 따라했습니다. localhost:3000에서 아래와 같은 오류가 뜨네요.. 혹시 코드 챕터별 commit된 github은 없는지 궁금합니다.
-
미해결차량 번호판 인식 프로젝트와 TensorFlow로 배우는 딥러닝 영상인식 올인원
"OXford Pet-IIIT 데이터셋 학습 코드리뷰 - Training" 에러 관련 문의드립니다.
안녕하세요. "OXford Pet-IIIT 데이터셋 학습 코드리뷰 - Training" 수업에서 강의대로 colab에서 진행해 보고 있는데요. 마지막에서 아래와 같이 import 에러가 발생합니다. 아직 강의를 보면서 따라해 보는 수준이라 혼자서 해결이 어려워 문의드립니다. 어떻게 하면 될까요?
-
해결됨풀스택 리액트 토이프로젝트 - REST, GraphQL (for FE개발자)
yarn 문의
yarn 말고 npm을 init과 script에서 써도 될까요?
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
error, done, loading 상태 질문
각 비동기 데이터마다 loading, error, done을 모두 만들어주던데 실제로 쓰지않는 상태는 애초에 작성안해도될까요?? 그리고 비동기 성공할때(done === true)가 될때 useEffect 안에서 다른 로직을 작성하려는데 done이 true가 되면 해당 비동기요청 디스패치를 하기전까지는 true로 남아있어서 문제가되던데 done === true 상태를 false로 넘어가는 액션을 따로만들어서 useEffect의 흐름이 useEffect(() => { if(done) { ...done이 true일경우 비즈니스로직}dispatch(doneFalse)// *done을 false로 바꿔주는 액션 디스패치로 실행}, [done]);이런식으로 해야하나요? 다른 좋은 방법이 따로 있을까요!>?