안녕하세요 강사님!! 좋은 강의 항상 감사드립니다! 강의를 보며 서비스를 구현중에 생긴 고민입니다! JPA 에서 영속성 컨텍스트를 바라보는 범위에 대해 질문드립니다. respository.save(entity) 기능을 update 할때는 merge 사용하지 않기 위해 기존에 모르고 사용해왔던 .save 를 제거하고, 메소드에 @Transactional 을 사용하였습니다. 그런데 변경사항이 적용이 안되고 있는데, 영속성 컨텍스트에 등록이 안된상태이거나 범위를 넘어가서 적용이 안되는 것 같습니다. Controller @PutMapping ( "/modify" ) public ResponseEntity updateProfile ( @RequestPart MultipartFile file) throws IOException { Member member = Optional. ofNullable (((UserDetailsVO) (SecurityContextHolder. getContext (). getAuthentication().getPrincipal())).getMember()) .orElse( null ) ; String profileImg = memberService .profileChange(member , file).getProfileImg() ; } Service @Transactional public Member profileChange (Member member , MultipartFile file) throws IOException { ... member.changeProfileImage(memberProfileImg) ; return member ; } API 서버를 생각하고 만들어, member의 정보를 JWT 토큰에 담아서, Security를 통해 검증합니다. SpringSecurity를 통해 검증하는 과정에서 MemberJpaRepository를 이용하여 member를 로드해오고 쿼리도 나가게 되지만 Controller에 @transaction 도 붙여보고 profileChange 메소드에서 SecurityContextHolder로 member를 가져와도 변경되지 않았고, 영속성 컨텍스트와 연결이 끊어졌거나 연결이 되지 않는다는 생각이 들었습니다 . 그래서 Controller에서 MemberId를 전달하여, profileChange 메소드에서 member 객체를 찾아온 후 변경하고 리턴한다면 저장이 되지만, Controller에서 SecurityContextHolder를 통해 가져올때 이미 member를 조회하는 쿼리가 나가게 됩니다. 서비스에서 member를 조회할 경우, 영속성 컨텍스트 연결을 위한 조회쿼리를 날리는게 되어서 쿼리가 1+1이 되는데 이런경우엔 save를 통해 변경을 시키는것인지, 이렇게 수정하는게 맞는지 의문이 듭니다.
AddUIEvent(go, (PointerEventData data) => { go.transform.position = data.position; }, Define.UIEvent.Drag); 여기서 Action<PointerEventData> action 자리에 저 람다식을 넣을 수 있는 이유가 뭔가요? 그리고 GetButton((int)Buttons.PointButton).gameObject.AddUIEvent(OnButtonClicked); 여기서 ObubttonClicked를 Action<PointereventData>에 넣을수 있는 이유가 뭔가요?
((PointerEventData data) => {evt.gameObject.transform.position = data.position;}) 처음에는 transform.position = data.postion이라고 했다가, image UI가 드래그 해도 움직이지 않게 되는걸 보여주셨고 그래서 뒤에 evt.gameObejct를 추가해서 UI_EventHandler를 들고 있는 게임오브젝트의 트랜스폼을 변경하는걸로 고쳐주시잖아요 이 부분을 이해하는건 딱히 어렵지 않았습니다만 그 과정에 발생하지 않은 어떤 부분이 이해가 안됩니다 처음에 transform.position = data.position만 있을때는 말 그대로 이 스크립트(UI_Button.cs)가 붙어있는 UI_Button이라는 게임오브젝트의 트랜스폼을 변경하는거잖아요 당연히 이 오브젝트는 Transform 대신에 RectTransform을 들고 있으니까 저 변경이 적용될리가 없다고 이해했습니다 그런데 왜 여기서 NullReferenceException이 뜨질 않는건가요? 어쨋든 Transform이라는 컴포넌트가 있는건 아닌데 말이죠 지금 그 다음강의를 보고 있다가 혹시나 하는 생각으로 글에다 추가 중인데요 혹시 저기서 NullReferenceException이 뜨질 않는 이유가, RectTransform이 Transform을 상속하고 있는것과 관련이 있나요? 그리고 한가지 더 질문을 드리면, 수정전 코드로 이미지UI를 드래그해서 움직이려고 하면 UI_Button 오브젝트의 transform을 변경하게 되는거였다고 했잖아요 그런데 UI_Button의 RectTransform 컴포넌트의 좌표를 보고 있어도 변하질 않던데 이건 왜 그런가요?
안녕하십니까 선생님. 양질의 강의 감사드립니다. patch에 대한 궁금증이 생겨 질문을 남깁니다. patch에 대해 찾아보던 중 데이터의 일부를 변경하는 경우 실무에서는 patch를 거의 사용하지 않고 put을 사용한다는 것을 보았습니다. 이유는 로직 구성 중 $set을 빠뜨릴 경우 중요한 이슈가 발생하기에 모든 데이터를 받아와 put method를 사용해 데이터를 변경한다고 합니다. 이 부분에 대해서 선생님의 의견이 듣고싶습니다. 감사합니다!
이 예제에서 만약에 묵시적 조인이 아닌 명시적 조인을 하려면 이렇게 하면 되나요? 좀 뭔가 많아진거같기도 하고... 테이블 3개 조인이 되기는 되네요 ㅎㅎ... 콘솔창에 쿼리문은 이렇게 나가더라구요. 이런식으로 하면 되는건가요? JPQL이 확실히 처음엔 어렵긴 한데 수도쿠 숫자퍼즐 푸는거같아서 점점 재밌어지려하네요 ㅋㅋㅋ
원본데이터 갯수가 n개이면 n_estimators=10이라고 하면, 부트스트래핑을 하면 중첩을 허용하여 n개씩 10개의 데이터 서브세트가 만들어지는건가요? 그렇다면, 213쪽에 "10000개의 데이터를 10개의 분류기가 배깅방식으로 나누더라도 각 1000개의 데이터 내에는 중복된 데이터가 있다"고 나와있는데 1000개씩 10개의 데이터 서브세트가 만들어지는게 아니라, 10000개씩 10개의 데이터 서브세트가 만들어지는것이 아닌가요?
특정 사이트의 경우 start_urls 부터 안되던데, 이 경우 어떻게 크롤링을 해야할까요? "2021-02-09 23:27:33 [scrapy.spidermiddlewares.httperror] INFO: Ignoring response <403 http://bodyluv.kr/product/3%EC%B0%A8-renewal-%EB%B0%94%EB%94%94%EB%9F%BD-%EB%A7%88%EC%95%BD%EB%B2%A0%EA%B0%9C/44/category/1/display/2/?crema-product-reviews-1-page=1>: HTTP status code is not handled or not allowed" 구체적으론 위와 같은 에러가 발생합니다.
제가 제공되는 예제파일과 구분하기위해 제가 작성한 파일 뒤에 (mine)이라고 붙여놨습니다. 현재 이 파일을 import chapter06_02(mine) 으로 호출하려고하면 에러가 발생합니다. 이때, 파일의 이름을 'chapter06_02(mine)' -> 'chapter06_002' 로 변경하고 import chapter06_002 로 다 시 호출할 때는 에러가 없이 제대로 동작이 됩니다. 파이썬 자체에서 모듈화 할때는 파일 명에 '( )'가 들어가면 안되는 건가요?