학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 아래의 update 후 조회 로직에서 왜 select 쿼리가 나가지 않는가에 대한 질문 글들을 읽어보면, 강의의 업데이트 로직상 memberService의 update() 메서드에서 트랜잭션 범위가 넘어가면 기본적으로 영속성 컨텍스트의 내용은 모두 지워져서 이후 조회 로직에서 select가 나가야 맞지만, 추후에 배울 성능 최적화 기능 덕분에 update한 그 Member가 아직 1차캐시에 남아있게 되어 select 쿼리가 나가지 않는다고 이해하였습니다. 그렇다면 여기서 트랜잭션 범위를 넘어가면 영속성 컨텍스트가 비워진다 라고 설명해주셨는데, JPA 기본강의에서는 트랜잭션이 커밋된다고 해서 영속성 컨텍스트가 비워지지는 않는다 라고 설명해주셨습니다. Q1. 그러면 트랜잭션 범위를 넘어가기 전 커밋되는 경우에는 영.컨이 비워지지 않지만, 트랜잭션이 아예 끝나면 영.컨이 비워지는것이 맞을까요? (ex. 메소드 중간에 transaction.commit()을 호춣하거나, 혹은 JPQL 실행 직전에 커밋되는 경우) Q2. 여기서 트랜잭션의 범위가, 메소드 level에 적용되는 @Transactional 에 의해 , 그 메소드가 리턴되기까지를 말하는 것인지 or 아니면 @Transactional이 적용된 update() 메소드에서 컨트롤러로 실행이 옮겨갔기 떄문에 범위를 넘어섰다고 말하는 것인지, 트랜잭션의 범위 라는 개념과, 그 범위를 넘어섰다는 개념을 잘 모르겠습니다. (만약 전자라면, @Transactional이 붙은 메소드 단위로 트랜잭션 범위가 넘어가니, 메소드 호출될 때 마다 영.컨이 비워질 것 같습니다.)
안녕하세요 강사님 좋은 강의 열심히 듣고 있습니다. profile_edit 부분을 CBV로 구현해봤는데 이런 형식으로 만드는게 맞는지 궁금합니다.. 기능은 정상적으로 작동하는데 코드가 너무 복잡해보여서 제대로 만든건지 의구심이 듭니다.. @method_decorator(login_required, name='dispatch') class ProfileUpdateView(UpdateView): model = Profile template_name = 'accounts/profile_form.html' form_class = ProfileForm pk_url_kwarg = "id" success_url = settings.LOGIN_REDIRECT_URL profile_edit
안녕하세요 강의듣던중 궁금한게 생겼는데 parseFloat이 정수형 문자열도 Number로 바꿔주는걸로 봐서 parseInt의 기능도 포함하는거 같은데 그럼 parseInt를 쓸 이유가 굳이 없어보입니다. parseFloat과 paserInt를 굳이 구분해서 사용하는 이유가 있나요??
@Entity class A { @Id private Long id @ManyToOne @JoinColumn(name = "b_id") private B b } @Entity class B{ @Id private Long id @OneToMany(mappedBy = "b") private List<A> aList @ManyToOne @JoinColumn(name = "c_id") private C c } Entiy class C{ @Id private Long id @OneToMany(mappedBy = "c") private List<B> bList } 이런식으로 A -> B -> C 가 종속적으로 1:N 관계가 있을 때 하나의 querydsl 문으로 하나의 쿼리로 Table C에 있는 값을 가져오고 싶습니다. 즉 c.bList[0].aList[0].id <- a.id 나올수 있도록 만들고 싶은데 .selectFrom(c) .join(c.bList, b).fetchJoin() .join(b.aList, a).fetchJoin() .fetch() 를 하면 query 생성시 에러가 나옵니다. 혹시 다른 방법이 있나요?
디스패치큐와 메인스레드에 대해 질문이 있습니다 🥲 Request.swift image 메소드 구현부에서 DispatchQueue.main.async { completion(image) }로 메인스레드에서 클로저를 실행하도록 만들어주었었는데 FriendTableViewCell.swift configure 메소드 내부의Request.image 메소드 호출부를 보면 completion 클로저에서도 또 메인스레드를 부르게 되어있어서 아래처럼 같은 일(메인스레드 부르는 일)을 중복으로 하게 되는 게 아닌지 궁금합니다! 제가 이해한 게 맞다면 이렇게 만들어주어야 하는 이유가 있을까요? DispatchQueue. main . async { DispatchQueue. main . async { guard let cell: FriendTableViewCell = tableView . cellForRow ( at : indexPath ) as ? FriendTableViewCell else { return } cell. profileImageView . image = image } }
Traceback (most recent call last): File "D:\anaconda3\envs\section2-2\lib\site-packages\pytube\__main__.py", line 181, in fmt_streams extract.apply_signature(stream_manifest, self.vid_info, self.js) File "D:\anaconda3\envs\section2-2\lib\site-packages\pytube\extract.py", line 409, in apply_signature cipher = Cipher(js=js) File "D:\anaconda3\envs\section2-2\lib\site-packages\pytube\cipher.py", line 43, in __init__ self.throttling_plan = get_throttling_plan(js) File "D:\anaconda3\envs\section2-2\lib\site-packages\pytube\cipher.py", line 405, in get_throttling_plan raw_code = get_throttling_function_code(js) File "D:\anaconda3\envs\section2-2\lib\site-packages\pytube\cipher.py", line 311, in get_throttling_function_code name = re.escape(get_throttling_function_name(js)) File "D:\anaconda3\envs\section2-2\lib\site-packages\pytube\cipher.py", line 297, in get_throttling_function_name caller="get_throttling_function_name", pattern="multiple" pytube.exceptions.RegexMatchError: get_throttling_function_name: could not find match for multiple During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\hansol ju\Desktop\Work\section2\youtube-downloader.py", line 4, in <module> videos = yt.streams.all() File "D:\anaconda3\envs\section2-2\lib\site-packages\pytube\__main__.py", line 296, in streams return StreamQuery(self.fmt_streams) File "D:\anaconda3\envs\section2-2\lib\site-packages\pytube\__main__.py", line 188, in fmt_streams extract.apply_signature(stream_manifest, self.vid_info, self.js) File "D:\anaconda3\envs\section2-2\lib\site-packages\pytube\extract.py", line 409, in apply_signature cipher = Cipher(js=js) File "D:\anaconda3\envs\section2-2\lib\site-packages\pytube\cipher.py", line 43, in __init__ self.throttling_plan = get_throttling_plan(js) File "D:\anaconda3\envs\section2-2\lib\site-packages\pytube\cipher.py", line 405, in get_throttling_plan raw_code = get_throttling_function_code(js) File "D:\anaconda3\envs\section2-2\lib\site-packages\pytube\cipher.py", line 311, in get_throttling_function_code name = re.escape(get_throttling_function_name(js)) File "D:\anaconda3\envs\section2-2\lib\site-packages\pytube\cipher.py", line 297, in get_throttling_function_name caller="get_throttling_function_name", pattern="multiple" pytube.exceptions.RegexMatchError: get_throttling_function_name: could not find match for multiple [Finished in 5.204s]
org.hibernate.QueryException: No data type for node: org.hibernate.hql.internal.ast.tree.IdentNode \-[IDENT] IdentNode: 'i' {originalText=i} 라는 오류가 나는데, 어떤 것인지 모르겠습니다.
강의에는 없는 내용인데 vue+django로 웹페이지를 만들다가 궁금증이 생겨서 질문 드립니다. 페이지에 Django DB로 요청하는 데이터가 많다보니 페이지 새로고침할때 속도가 점점 느려지는데, 새로고침 할때마다 DB를 건드리지 않게 html 파일을 만들어서 보여주게 하려면 어떤 방식으로 해야 될까요??
모두 정상인데, 여기서만 문제가 생깁니다. 다 체크하고 제출을 누르면, result로 넘어가지를 못하네요. views.py의 best_developer.count때문이라는데, 찬찬히 봐도 잘 모르겠습니다. 혹시 오타때문인가 싶어 노션에 올라온 코드를 그대로 가져다가 돌려봐도 동일한 문제가 발생합니다. 비슷한 질문이 이전에 올라왔지만 답변이 올라오지 않아 제가 다시 질문드립니다..