묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! Querydsl
querydsl dto mapping & subquery 질문 남깁니다.
안녕하세요 열심히 수업듣고 따라하고있는 수강생입니다. 먼저 매번 답변주셔서 감사합니다. 질문으로는 dto mapping 에서 @queryprojection 으로 직접 조회를 해야하는 상황입니다. 글 : 채팅방 1 : N채팅방 : 채팅 1: N 일때 DTO 는 @Data public class QChatRoomDto { private QaType qaApart; private String qaContent; private String searchPlace; private String category; private Long chooseMemberIdx; // 채택 / 미채택 기준 private Long roomIdx; private Long otherMemberIdx; private String otherMemberNickname; private String otherMemberImgDto; private int qaCount; private String modifiedDate; private String recentlyMsg; private String recentlyMsgType; private Long notReadCount; @QueryProjection public QChatRoomDto(String qaContent, String searchPlace, String category, Long chooseMemberIdx, Long roomIdx, Long otherMemberIdx, String otherMemberNickname, String otherMemberImgDto, int qaCount, LocalDateTime modifiedDate, String recentlyMsg, String recentlyMsgType, Long notReadCount) { this.qaApart = QUESTION; this.qaContent = qaContent; this.searchPlace = searchPlace; this.category = category; this.chooseMemberIdx = chooseMemberIdx; this.roomIdx = roomIdx; this.otherMemberIdx = otherMemberIdx; this.otherMemberNickname = otherMemberNickname; this.otherMemberImgDto = otherMemberImgDto; this.qaCount = qaCount; this.modifiedDate = modifiedDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); this.recentlyMsg = recentlyMsg; this.recentlyMsgType = recentlyMsgType; this.notReadCount = notReadCount; } } querydsl public Page<QChatRoomDto> myQuestionChatRoomList(Member questionMember, List<Member> blockMembers, QaStatusType qaStatusType, Pageable pageable) { return applyPagination(pageable, contentQuery -> contentQuery .selectDistinct(new QQChatRoomDto( qa.content.as("qaContent"), qa.searchPlace.as("searchPlace"), qa.category.name.as("category"), qa.selectMember.idx.as("chooseMemberIdx"), chatRoom.idx.as("roomIdx"), chatRoom.aMember.idx.as("otherMemberIdx"), chatRoom.aMember.nickname.as("otherMemberNickname"), chatRoom.aMember.memberImg.as("otherMemberImgDto"), chatRoom.qMember.qaList.size().as("qaCount"), chatRoom.modifiedDate.as("modifiedDate"), ExpressionUtils.as( JPAExpressions.select(chat.content) .from(chat) .where(chat.chatRoom.eq(chatRoom), chat.idx.eq( JPAExpressions.select(chat.idx.max()) .from(chat)) ), "recentlyMsg") , ExpressionUtils.as( JPAExpressions.select(chat.chatType) .from(chat) .where(chat.chatRoom.eq(chatRoom), chat.idx.eq( JPAExpressions.select(chat.idx.max()) .from(chat)) ), "recentlyMsgType"), ExpressionUtils.as( JPAExpressions.select(chat.count()) .from(chat) .where(chat.chatRoom.eq(chatRoom), chat.member.ne(questionMember), chat.readMsg.isFalse()), "notReadCount") ) ) .from(chatRoom) .join(chatRoom.qa, qa) .join(chatRoom.aMember, member) .where(chatRoom.qMember.eq(questionMember), isQaSelectMember(questionMember, qaStatusType), blockAMembersNotIn(blockMembers), chatRoom.idx.notIn( JPAExpressions.select(chatRoom.idx) .from(chatRoom) .where(chatRoom.isLeave.contains("_" + questionMember.getIdx() + "_"))), member.phoneNum.isNotNull() ) .orderBy(chatRoom.modifiedDate.desc())); }이렇게 작업을 했습니다. 매우 이상한 쿼리이겠지만 저한텐 이게 최선이었습니다 ㅠ여기서 궁금한점은 채팅룸 리스트를 뽑아야 하는데 recentlyMsg, recentlyMsgType채팅 리스트의 최근 데이터를 가지고 오고싶었으나 subQuery에서 limit 1 이 먹히지 않아 저런 괴랄한? 쿼리를 만들어 작동은 되게 만들었습니다. 해서 dto mapping 할때 컬렉션 리스트를 뽑는 다른 방법이 있는지 궁금합니다. chatRoom.chatlist 를 반환하여 queryprojection에서 가공하려 했지만 에러가 뜨면서 chatList는 반환이 안되어 질문글 남깁니다. 감사합니다.
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
강의 자료 문의입니다.
안녕하세요.권철민 선생님 강의 너무 잘 듣고 있습니다.Classfication 완벽가이드 부터 컴퓨터 비전 수업을 듣고 머신러닝 강의를 들으러 왔어요.이번 강의도 기대가 됩니당.혹시 강의자료 따로 받아 볼 수 있을까요??자료에 필기하는게 습관이 되어서 꼭 있었으면 합니다 :)
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
em.persist에서 쓰기 지연 SQL 저장소의 성능에 관한 질문이 있습니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]영속성 컨텍스트 2 강의에 12분쯤 나오는 그림을 보면서 든 생각입니다. 예를 들어 회원 가입이나 게시글 및 댓글 올리기 같은 경우에는 insert가 하나씩 들어갈 것 같아 1차 캐시나 쓰기 지연 SQL 저장소에 차곡차곡 쌓이는 일이 없을 것 같은데요. 만약 한 트랜잭션 안에서 대량의 데이터를 select 해서 insert 하는 경우, 그런 데이터의 양이 1만건, 10만건을 넘어간다고 하면 1차 캐시 및 쓰기 지연 SQL 저장소에 10만건을 쌓아놓고 커밋할 때 DB에 차례대로 한 줄 씩 저장이 될 것 같습니다. 그럴 때 메모리가 터진다거나, 속도가 느려진다거나 과부하가 걸려 성능 제한이 걸리는 경우가 있을 것 같은데 이런 경우를 대비해서 따로 처리해야 하는 로직이나 개념이 있다면 알고 싶습니다!
-
미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
카프카 isr 질문 있어요
파티션 1번의 구성이 이렇게 나온다고 가정을 하면Partition : 1 leader : 3 Replicas: 3,1,2 Isr: 3,12번 브로커 에서 장애가 발생해서 ISR에서 제외가 되었고 2번 브로커가 복구가 되면 ISR : 3, 1, 2로 바뀌어야 된다고 생각을 하는데 시간을 두고 기다려도 ISR: 3,1에서 바뀌지를 않더라구요. 이거 왜 이런거일까요..?
-
미해결파이썬 무료 강의 (기본편) - 6시간 뒤면 나도 개발자
퀴즈에 대한 피드백 부탁드립니다.
from random import * # 1 ~ 50 ''' 1 ~ 50은 다 출력, 5분 ~ 15분 사이의 승객은 "O"를 표시 ''' newlist = [] sum = 0 for i in range(1, 51): # 1 ~ 50, 굳이 time = randint(5,50) # 5 ~ 50분 if 5<=time<=15 in range(1, 51): newlist = "O" sum += newlist.count("O") print(f"[{newlist}] {i}번째 손님 ( 소요시간 : {time}분)") else: newlist = "" print(f"[{newlist}] {i}번째 손님 ( 소요시간 : {time}분)") print(f"총 탑승 승객 : {sum} 분") 저는 강사님께서 사용하신 cnt가 생각이 안나서, newlist=[]와 sum = 0으로 놓고 조건에 맞으면 "O"로 하고count함수를 써서 sum에 업데이트 하는 방식으로 했는데요..(처음에 프로그램을 짤 때 강사님처럼 print 안에 "[O]"가 생각이 안났습니다 ㅠㅠ) 이 방식도 괜찮을까요??
-
미해결
자바 스터디
자바를 새롭게 배우고 싶은데 동기부여 차원에서 스터디에 가입하고 싶은데 자리가 남은 스터디가 있을까요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
@Transcational 로 생성되는 프록시 실제 코드
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용]@Transcational 로 Spring AOP 가 적용되어서 실제 객체를 담고있는 프록시 객체가 생성되는 것은 이해하였습니다.(질문1)실제로 스프링이 생성해주는 프록시 객체 코드를 확인해보고싶은데 어떤 클래스를 확인하면 좋을까요?(질문2)'어떻게동작하지?' 하고 확인하려고 할 때마다 막히곤 합니다. 어떤 코드로 인해서 생성된 bean인지 확인하는 것에 어려움이 있는 것 같습니다. 앞으로 공부할 때 스프링으로 인해 생성되는 프록시 객체들의 실제 코드를 확인하기 위해서는 어떤 방법을 통해 확인할 수 있을까요? 항상 좋은 강의 올려주셔서 감사합니다.도와주시는 서포터즈 분들도 수고가 많으십니다.
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
질문 있습니다.
안녕하세요. 1번 노드 check를 DFS 호출 전 check[1] = 1과 같이 하셨는데,아래와 같이 DFS 안쪽 첫째 라인에 하는 건 어떨까요?? // ... const DFS = (v) => { checkArr[v] = 1 if (v === n) { answer++ } else { for (let i = 1; i <= n; i++) { if (graph[v][i] === 1 && checkArr[i] === 0) { DFS(i) checkArr[i] = 0 } } } } DFS(1)
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-A 질문
안녕하십니까,1-A (난쟁이 문제)관련 질문 입니다.테스트 코드는 잘 돌아가는 데 문제가 계속 틀렸다고 해서 질문 드립니다.저는 조합으로 풀었습니다.https://www.acmicpc.net/source/54215134 항상 좋은 가르침을 주셔서 감사합니다.
-
미해결비전공자를 위한 풀스택 맛집지도 만들기 프로젝트!: Front, Back-end 그리고 배포까지
mysql완전 삭제 후 재설치
MySQL workbench연결이 잘 안되어서 이것 저것 하다 보니까 MySQL version이 8.0이 깔렸네요..MySQL version에 따라서 명령어가 달라지는 것 같구..MySQL을 완전 삭제하고 재설치 할려고 합니다.MySQL완전 삭제 절차 좀 알려 주세요.
-
해결됨Vue.js + TypeScript 완벽 가이드
`type MyVue<T> = VueConstructor<Vue & T>;` 가 필요한 이유는 무엇인가요?
type MyVue<T> = VueConstructor<Vue & T>; 가 필요한 이유는 무엇인가요?작동하는데 아무상관 없는 것 같습니다.
-
미해결AWS(Amazon Web Service) 입문자를 위한 강의
DB 인스턴스 awslearner 생성 요청이 실패했습니다.
[4-5] RDS 실습-1부에서 영상과 같이 작업을 완료한 후 데이터베이스 생성을 누르면 아래와 같이 에러가 발생하는데 어떻게 해결해야 될까요? The DB subnet group doesn't meet Availability Zone (AZ) coverage requirement. Current AZ coverage: ap-northeast-2a. Add subnets to cover at least 2 AZs. (Service: AmazonRDS; Status Code: 400; Error Code: DBSubnetGroupDoesNotCoverEnoughAZs; Request ID: adc0a208-3d58-4b88-876b-195b4f751aa5; Proxy: null
-
미해결스프링 핵심 원리 - 고급편
@target 적용 여부가 애플리케이션 로딩 이후에 결정되는 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]@target 의 동작 방식 자체는 이해가 되는데, @target 이 적용 여부가 애플리케이션 로딩 이후(빈이 모두 생성된 이후)에 결정되어야 하는 이유가 궁금합니다. 빈으로 등록될 객체가 생성된 직후, Spring 빈 후처리기가 동작할 때, 그 객체 클래스 및 상속 관계에 있는 클래스들에, 어떤 annotation 들이 달려있는지 판단 가능하다고 생각했습니다. 때문에, Spring 이 AspectJ Expression 사용 시 @target 조건만 주고 다른 조건으로 한정하지 않을 때, 모든 빈에 대해 proxy 를 생성하려 시도한다는 점이 잘 이해가 되지 않았습니다. 제가 뭔가 놓치고 있는 지점이 있는 것 같은데, 지적 부탁드립니다. 좋은 강의 감사합니다.
-
해결됨Vue.js + TypeScript 완벽 가이드
`canvasElement` 에 호버에서 타입을 확인할때, `Vue | Element | Vue[] | Element[]` 나오는게 아니라 설명이 길게 나오는데, 따로 설정할께 있을까요?
canvasElement 에 호버에서 타입을 확인할때, Vue | Element | Vue[] | Element[] 나오는게 아니라 설명이 길게 나오는데, 따로 설정할께 있을까요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Job 생성자 관련 질문입니다.
위의 생성자를 이용하여 아래와 같은 코드로 job 객체를 따로 생성해보려고 하였습니다.맞는 생성자 instance가 없다고 하며 코드가 정상 동작 하지 않았습니다.JobSerializer::PushJob의 과정을 똑같이 따라한 것 같은데 동작이 안되는 이유를 모르겠습니다.원인을 알고 싶어 찾아보았으나 제가 template 에 대한 이해가 미숙하여 어떤 이유로 객체 생성이 되지 못하는 건지 모르겠습니다.
-
미해결[개념은 호옹~, 실습 빡] SQL 데이터 분석, 활용!
퀴즈 답 혹시 틀린게 있을까요 ...? [ 홍빡님한테도 피드백 받고 싶고..]
퀴즈 정답 공유해도 괜찮나요 ?안된다면 삭제하겠습니당! 문제정답
-
미해결Vue.js + TypeScript 완벽 가이드
두번째 프로젝트 권한요청 드립니다.
ckdh336@gmail.com감사합니다.
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
for문 말고 for of문 쓰시는 이유가 있나요?
저는 for문이 더 익숙해서 for문을 주로 쓰는데 for of문을 쓰는게 더 나은가 해서요
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
2019로 다운받았는데요
첫번째 사진처럼 나와서 강의대로 두번째처럼 입력했는데 F5누르니까 디버깅창? 이 안뜨고 그냥 종료됩니다 ㅠㅠ 뭣때문에 그런건가요 ㅠㅠ
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
Quiz 2에서 질문있습니다.
quiz2 같은 경우에 키를 115 121처럼 특정한 키를 정해놓고 탑승 가능 여부를 판단하는 코드인데요,boolean 끼리는 비교가 안된다는 오류가 떠서 실행은 안됐지만 제가 시도한것처럼 특정한 키를 정해놓는 것이 아닌 120 이상인 사람은 탑승 가능, 미만인 사람은 탑승 불가능 하다는 코드를 짜는 법을 알고 싶습니다!