묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결홍정모의 따라하며 배우는 C++
강의 1.3에 17분 08초 초기화 안하고 강제 실행 방법
초기화 하지 않은 수식을 강제로 실행시켜서 런타임 오류가 나는 것을 보여주시는 장면인데, 저는 cmd창이 뜨지않고 "There were build errors. Would you like to continue and run the last successful build?" 라는 선택창이 뜹니다. 디버그 모드, 릴리즈 모드에서 모두 마찬가지입니다. 교수님처럼 똑같이 런타임 에러가 뜨려면 어떻게 해야할까요?
-
미해결실전! Querydsl
다대다 관계에서 효율적인 조회 쿼리 작성
안녕하세요. 강사님. 항상 친절한 답변 감사합니다^^ 다대다 관계에서 효율적인 조회 쿼리 작성에 대해 질문이 있습니다. 현재 저는 다음과 같은 엔티티 클래스를 개발했습니다.^^ 다대다 관계를 가지는 세개의 엔티티를 지니고있고 TagProjectOutput Entity는 다대다 연결을 엔티티로 두 엔티티를 필드를 가지고있습니다. 또한, Tag, ProjectOutput 엔티티와 다대일 단방향 매핑 연결을 했습니다. ProjectOuutput 목록을 조회할 때 가지고 있는 Tag 정보도 동시에 조회하는 메소드를 개발하는 중에 고민되는 부분이 있어서요^^ProjectOutput과 ProjectOutput이 지닌 Tag 목록을 보여주는 Dto를 만들어 List로 뽑아내야 하는 상황인데요.현재는 다대다 연결 엔티티인 TagProjectOutput List를 뽑아와 Key는 ProjectOutput, Value는 List<Tag>인 Map으로 가공 후 Service Layer에서 Dto로 변환하는 코드를 사용하고 있습니다. /** * 다대다 연결 엔티티인 TagProjectOutput List를 뽑아와 Key는 ProjectOutput, Value는 List<Tag>인 Map으로 가공 후 Service Layer에서 Dto로 변환 */ @Override public LinkedHashMap<ProjectOutput, List<Tag>> findMapByTagNameList(TagProjectOutputSearchCondition condition) { // 다대다 연결 엔티티 목록 조회 List<TagProjectOutput> fetched = queryFactory.selectFrom(tagProjectOutput) .where(tagProjectOutput.dataStatusCode.eq(DataStatusCode.USE), tagNamesEq(condition.getTagNames())) .join(tagProjectOutput.projectOutput, projectOutput).fetchJoin().join(tagProjectOutput.tag, tag) .fetchJoin().fetch(); // Key : ProjectOutput, Value : Tag List 형식의 LinkedHashMap 자료구조로 가공 LinkedHashMap<ProjectOutput, List<Tag>> map = new LinkedHashMap<>(); for (TagProjectOutput tagProjectOutput : fetched) { ProjectOutput projectOutput = tagProjectOutput.getProjectOutput(); if (map.containsKey(projectOutput)) { List<Tag> tags = map.get(projectOutput); tags.add(tagProjectOutput.getTag()); map.replace(projectOutput, tags); } else { List<Tag> tags = new ArrayList<>(); tags.add(tagProjectOutput.getTag()); map.put(projectOutput, tags); } } return map; } /** * Tag명 리스트 조건으로 TagProjectOutput를 조회하기 위한 동적 쿼리 메소드 */ private BooleanExpression tagNamesEq(List<String> tagNames) { return isEmpty(tagNames) ? null : tagProjectOutput.tag.tagName.in(tagNames); } 위와 같은 메소드를 Querydsl로 작성해 사용 중인데, 지금은 데이터가 얼마 되지않아 큰 문제는 없지만, 나중에 List를 가져와 다시 한 번, LinkedHashMap 자료 구조로 변환하는 과정이 성능에 문제가 될까 염려가 되네요.TagProjectOutput과 ProjectOutput 간 양방향 매핑은 ProjectOutput에 다른 컬렉션 필드가 추가될 수 있어서 왠만하면 단방향 매핑인 상태로 개발해야할 것 같은데, 추가적으로 고려해야하는 부분이 있을까요?
-
미해결레트로의 유니티 C# 게임 프로그래밍 에센스
참고)유니티 최신버전 사용시 오류해결법
유니티 2019.1버전이라 최신 유니티 사용시 오류가 생깁니다. 이의 해결법은 패키지매니져 - ProBuilder 업데이트 해주시면 오류 해결하실 수 있습니다. 참고하세용:)
-
해결됨실전! Querydsl
MappedBy 와 @Setter 관련 질문
안녕하세요! 강사님 강의를 듣다 궁금한게 있어서 질문 남깁니다. 1. 강의 초반 @Setter는 현업에서 가급적 사용하지 않는다고 하셨는데 그 이유에 대해서 좀 더 자세히 알 수 있을까요? 2. mappedBy = "team" 이렇게 설정 해주셨는데 연관관계 주인의 클래스명을 소문자로 적어주면 되는건가요?
-
미해결Kotlin Android부터 Firebase 서버 그리고 훌륭한 Chatbot 만들기
개인정보보호 설정에 의해 이 동영상은 Vimeo에서 재생할 수 없습니다.
죄송합니다 개인정보보호 설정에 의해 이 동영상은 Vimeo에서 재생할 수 없습니다. 이렇게 뜨는데... 뭘 확인해야되는건가용??
-
해결됨실전! Querydsl
실무에서 데이터 사용 유무 필드 활용에 대한 질문
안녕하세요. 강사님 이전에 데이터를 삭제하는 방법에 대해서 질문했었는데데이터를 삭제(delete)하기 보다는 Y, N 필드를 만들어 사용하도록 답변을 받았습니다. 말씀하신대로 엔티티에 Y, N 필드를 넣어서 잘 개발하던 중 궁금한 사항이 생겨서요^^ 엔티티를 사용 여부 필드가 Y인 데이터만 조회 또는 조인하고 싶을 때 마다 저는 다음과같이 Querydsl을 Where절에 조건을 추가하고 있습니다. //DataStatusCode(Enum)가 USE인 Tag 리스트를 조회 public List<Tag> findUseableList() { return queryFactory.selectFrom(tag).where(tag.dataStatusCode.eq(DataStatusCode.USE)).fetch(); } 다만, 매번 쿼리 메소드를 작성할 때마다, 데이터의 Y,N 여부를 체크하는 where절을 작성하는 반복되는 작업이 이어진다고 요즘들어 느껴져서요.이러한 반복적인 작업을 없앨 수 있는 방안이 있을지 질문드립니다. 감사합니다.
-
미해결테스트주도개발(TDD)로 만드는 NodeJS API 서버
블로그를 들어가보았습니다.
천천히 하나씩 읽어보라고 하셨는데, 어떤 부분부터 읽어야할지 감이 안와서요.. 어디부터 읽어야할까요?
-
미해결Typescript with Vue 실전 프로젝트
store 사용 방법 관련 질문입니다.
안녕하세요 우선, 좋은 강의 감사합니다. axios 를 통해 데이터 전송시에 궁금한점이 있는데요. 로그인 후 쿠키 또는 토큰등의 정보를 관리할때 일반적인 방법으로 store에 직접 저장해서 사용해도 되는걸까요 ?? 그리고 데이터의 양이 많다면 store에 저장하는 양도 한계가 있을까요?? 그러니깐 해당 정보가 필요할때만 불러온다던지.. 하는 방식으로 작업 해야 하는지 궁금합니다. 감사합니다.
-
미해결리액트로 나만의 블로그 만들기(MERN Stack)
오타인가요?
if (isNullOrUndefined(findResult)) { const newCategory = await Category.create({ categoryName: category, }); await Post.findByIdAndUpdate(newPost._id, { $push: { category: newCategory._id }, }); Post는 하나의 category만 갖는데 push가 맞나요? 이게 맞는건가요?? await Category.findByIdAndUpdate(newCategory._id, { $push: { posts: newPost._id }, }); await User.findByIdAndUpdate(req.user.id, { $push: { posts: newPost._id }, }); } else { await Category.findByIdAndUpdate(findResult._id, { $push: { posts: newPost._id }, }); await Post.findByIdAndUpdate(newPost._id, { category: findResult._id, }); 이게 맞는건가요?? 둘이 달라서 둘중하나는 틀린거 같아서 질문드립니당 await User.findByIdAndUpdate(req.user.id, { $push: { posts: newPost._id }, }); }
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
**kwargs 관련 질문입니다.
def kwargs_func(**kwargs): for v in kwargs.keys(): print('{}'.format(v), kwargs.get(v)) print('----------') kwargs_func(name1 = 'Lee') kwargs_func(name1 = 'Lee', name2 = 'Park',name3 = 'Cho') 이것이 선생님이 짜주신 코드였습니다. def info_func(**kwargs): for i in kwargs.keys(): print('{}, {}'.format(i, kwargs.get(i))) print('----------') 이것은 제가 비슷하게 만들어본 코드입니다. 여기서 궁금한 점은 for 문에서 왜 kwargs.keys()가 와야하는지 모르겠습니다. 그냥 kwargs를 사용하면 오류가 발생합니다. 또한 print문에서 .format(i,kwargs.get(i)))로 작성하였는데, 여기서 key 값을 출력할는 것을 i 대신에 kwargs.keys(i)로 입력했는데 오류가 발생하였습니다. 제가 알기로 kwargs.keys(i)가 key값을 출력하는 것인데 왜 오류가 발생했는지 모르겠습니다.
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
pop
리스트에서는 마지막원소를 꺼내올때 pop을 썼는데 딕셔너리에서는 popitem을 쓰네요 !! >>> 딕셔너리에서는 마지막원소(임의의 원소)를 꺼내올때 리스트와 달리 popitem을 쓰는 거죠? >>> 그리고 pop() 괄호안에는 value는 안되고.. key만 입력이 가능하죠??
-
미해결인공지능 기초수학
안녕하세요. 좋은 강의 감사합니다.
안녕하세요. 좋은 강의 감사합니다. 이제 결제를 하고 공부를 시작하려고 합니다!! 다름이 아니라 수업때 사용하신 교안을 받아 볼 수 있을까 해서 문의 드립니다. 아무래도 수학이라 필기가 많이 필요할 것 같네요^^;;; 부탁드립니다. 감사합니다.
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
한 서버에 백엔드와 프론트 둘 다 배포하려면 어떻게 해야하나요?
하나의 서버에 배포하기 이런 식으로 검색을 해보고 있는데요. 참고할만한걸 찾지 못해서 여쭤봅니다. 조언좀 부탁드립니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Knight 질문!!!
안녕하세요 ! 열심히 강의듣고 공부하고있는 학생입니다 . 동영상 11분쯤 까지 코드를 작성 하고 실행하면 knight의 LockTarget 이 자기신인 Knight로 잡혀 혼자 칼질하다가 죽습니다.그리고 로그창엔 Look rotation viewing vector is zero 라는게 뜨는데 이건 Knight 가 Knight를 잡아서 그런거같구... 아무리 코드를 봐도 모르겟습니다 ㅠㅠ
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
언팩킹질문
여기서 print(t2)랑 print(x1, x2, x3) 출력값이 다르게 나오는 이유가 뭔지 알려주실수 있을까요??? 제가 찾아보고 생각한 결과로써는 x1, x2, x3에 언팩킹(값을 대입해서) x1, x2, x3는 int형임(물론 저기서 1, 2, 3이 아니면 다른 형도 될수있다고 생각합니다) # >> print(t2) : tuple을 출력하는 것 # >> print(x1, x2, x3) : 각각의 int를 출력하는 것 이라고 느끼는데 맞는지 알려주세요 !!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
이클립스로 프로젝트를 하게되어서 진도를 이클립스로 따라가는 도중에 막혔습니다 ㅠㅜㅠ
안녕하세요... 5분대에 나오는 static class를 이용하여 json으로 출력하는 부분에서 이클립스로 구현하는 도중 막혔습니다 혹시 도와주실수 있나요
-
미해결윤재성의 Java 기반 Android 9.0(pie) App 개발 기본 1단계
버전이 많이 달라요
안드로이드 스튜디오 4.0.1 버전 사용중입니다. 액티비티xml에서 text탭도 없고, 디자인 탭위치도 다르고, 위젯의 모든상세속성아이콘도 없고 .. 도구가 많이 다릅니다.
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
다익스트라 알고리즘 질문드립니다.
안녕하세요 선생님, 다익스트라 알고리즘 질문드립니다. 제가 강의를 듣고 이해하면서 나름대로 주석을 적어 봤는데 맞는지 모르겠습니다. 한번 확인해 주시면 정말 감사하겠습니다. 선생님의 답변이 학습에 큰 도움이 되고 있습니다. #include <iostream> #include <vector> #include <queue> #include <algorithm> #include <limits> using namespace std; struct Edge { int destVertex; int distance; Edge(int dest, int weight){ destVertex = dest; distance = weight; } bool operator < (const Edge &edge) const { return distance > edge.distance; // minimum heap } }; int main(int argc, char** argv) { freopen("input.txt", "rt", stdin); int vertexSize, edgeSize; cin >> vertexSize >> edgeSize; vector<Edge> graph[vertexSize + 1]; for(int i = 0; i < edgeSize; i++){ int source, dest, cost; cin >> source >> dest >> cost; graph[source].push_back(Edge(dest, cost)); } vector<int> dists(vertexSize + 1, INT_MAX); priority_queue<Edge> myPQueue; myPQueue.push(Edge(1, 0)); dists[1] = 0; while(!myPQueue.empty()){ // 현재 시점에서 최소 거리로 이동할 수 있는 엣지를 꺼냄 Edge edge = myPQueue.top(); myPQueue.pop(); // 꺼낸 엣지를 통해 movedVertex 정점으로 이동해 왔다고 가정함 int movedVertex = edge.destVertex; int movedDist = edge.distance; // movedVertex에 더 작은 비용으로 왔던 적이 있다면 살펴볼 필요가 없음 if(movedDist > dists[movedVertex]) continue; // movedVertex과 연결된 엣지를 탐색 : 뻗어나가기 for(int i = 0; i < graph[movedVertex].size(); i++){ // connectedEdge = movedVertex와 연결된 엣지 Edge connectedEdge = graph[movedVertex][i]; // movedVertex와 엣지로 연결된 다른 정점 int nextVertex = connectedEdge.destVertex; // nextDist = movedVertex까지 오는 데 쓰인 거리 + 그 정점과 연결된 다른 정점까지의 거리 int nextDist = movedDist + connectedEdge.distance; // 지금 구한 거리가 최소값이라서 갱신해야 하는 경우 if(nextDist < dists[nextVertex]){ // edge -> connectedEdge를 거쳐 이동한 거리로 갱신 dists[nextVertex] = nextDist; // 이 엣지를 이용해 다른 노드로 갈 수 있도록 큐에 push myPQueue.push(Edge(nextVertex, nextDist)); } } } for(int i = 2; i <= vertexSize; i++){ if(dists[i] != INT_MAX) cout << i << " : " << dists[i] << "\n"; else cout << i << " : impossible" << "\n"; } return 0; }
-
미해결현존 최강 크롤링 기술: Scrapy와 Selenium 정복
[seeko 기사 가져오기] 강의, 사이트 바뀜
[seeko 기사 가져오기] 강의에 나온 사이트가 바뀌었습니다. https://www.seeko.kr/zboard4/zboard.php?id=mainnews 를 검색창에 치면 아래 사진처럼 드림워즈 라는 검색엔진으로 바뀝니다. seeko.kr 사이트가 드림워즈로 바뀐거 같아요. 강의와 관련있는 질문을 남겨주세요.• 강의와 관련이 없는 질문은 지식공유자가 답변하지 않을 수 있습니다. (사적 상담, 컨설팅, 과제 풀이 등)• 질문을 남기기 전, 비슷한 내용을 질문한 수강생이 있는지 먼저 검색을 해주세요. (중복 질문을 자제해주세요.)• 서비스 운영 관련 질문은 인프런 우측 하단 ‘문의하기’를 이용해주세요. (영상 재생 문제, 사이트 버그, 강의 환불 등) 질문 전달에도 요령이 필요합니다.• 지식공유자가 질문을 좀 더 쉽게 확인할 수 있게 도와주세요.• 강의실 페이지(/lecture) 에서 '질문하기'를 이용해주시면 질문과 연관된 수업 영상 제목이 함께 등록됩니다.• 강의 대시보드에서 질문을 남길 경우, 관련 섹션 및 수업 제목을 기재해주세요. • 수업 특정 구간에 대한 질문은 꼭 영상 타임코드를 남겨주세요! 구체적인 질문일수록 명확한 답을 받을 수 있어요.• 질문 제목은 핵심 키워드를 포함해 간결하게 적어주세요.• 질문 내용은 자세하게 적어주시되, 지식공유자가 답변할 수 있도록 구체적으로 남겨주세요.• 정확한 질문 내용과 함께 코드를 적어주시거나, 캡쳐 이미지를 첨부하면 더욱 좋습니다. 기본적인 예의를 지켜주세요.• 정중한 의견 및 문의 제시, 감사 인사 등의 커뮤니케이션은 더 나은 강의를 위한 기틀이 됩니다. • 질문이 있을 때에는 강의를 만든 지식공유자에 대한 기본적인 예의를 꼭 지켜주세요. • 반말, 욕설, 과격한 표현 등 지식공유자를 불쾌하게 할 수 있는 내용은 스팸 처리 등 제재를 가할 수 있습니다.
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
연달아서 runtime error가 뜹니다 어떻게 해야 될까요?
현재 redux-saga 게시글, 댓글 saga 작성하기 보고 있습니다. 1] 이런 에러가 뜨는데 어떻게 해결해야될까요? Images[0]에서 인덱스를 빼버리면 그다음 nickname이 Cannot read property 'nickname' of undefined이라고 뜹니다 postCardContent에서도 cannot read property 'src' of undefined라고 뜨고 해시태그 작성하는 컴포넌트에서도 .split이 cannot read property라면서 오류떠서 앞에 postData도 String으로 감싸서 해결했습니다. 2] 터미널과 브라우저 콘솔에서는 컴파일이 완료될 때마다 아래의 메시지가 계속 뜹니다 1. getProps created store with state { index: {}, user: { logInLoading: false, logInDone: false, logInError: null, logOutLoading: false, logOutDone: false, logOutError: null, signUpLoading: false, signUpDone: false, signUpError: null, changeNicknameLoading: false, changeNicknameDone: false, changeNicknameError: null, followLoading: false, followDone: false, followError: null, me: null, signUpData: {}, loginData: {} }, post: { mainPosts: [ [Object] ], imagePaths: [], postAdded: false, addPostLoading: false, addPostDone: false, addPostError: null, addCommentLoading: false, addCommentDone: false, addCommentError: null } } 3. getProps after dispatches has store state { index: {}, user: { logInLoading: false, logInDone: false, logInError: null, logOutLoading: false, logOutDone: false, logOutError: null, signUpLoading: false, signUpDone: false, signUpError: null, changeNicknameLoading: false, changeNicknameDone: false, changeNicknameError: null, followLoading: false, followDone: false, followError: null, me: null, signUpData: {}, loginData: {} }, post: { mainPosts: [ [Object] ], imagePaths: [], postAdded: false, addPostLoading: false, addPostDone: false, addPostError: null, addCommentLoading: false, addCommentDone: false, addCommentError: null } } 4. WrappedApp created new store with withRedux(withReduxSaga(NodeBird)) { initialState: { index: {}, user: { logInLoading: false, logInDone: false, logInError: null, logOutLoading: false, logOutDone: false, logOutError: null, signUpLoading: false, signUpDone: false, signUpError: null, changeNicknameLoading: false, changeNicknameDone: false, changeNicknameError: null, followLoading: false, followDone: false, followError: null, me: null, signUpData: {}, loginData: {} }, post: { mainPosts: [Array], imagePaths: [], postAdded: false, addPostLoading: false, addPostDone: false, addPostError: null, addCommentLoading: false, addCommentDone: false, addCommentError: null } }, initialStateFromGSPorGSSR: undefined }