묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
영속성 컨텍스트에 프록시 객체도 저장이 되나요?
영속성 컨텍스트에 프록시 객체도 저장이 되나요?강의 내용중 프록시 객체의 초기화를 보면 getName()을 요청했을때 최초의 요청이면 영속성 컨텍스트에서 조회를 하고 DB에서 조회를 한다고 나와있는데 .getReference를 했을때 생성되는 프록시객체도 영속성컨텍스트에서 관리를 하나요? 그리고 .getName을 요청해서 실제 엔티티를 받아오게되면 이 객체도 영속성 컨텍스트에서 관리를하나요?그리고 2번째 .getName 메서드를 요청해도 꼭 프록시 객체를 거쳐서 값을 받게되나요?
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
값타입 컬렉션 질문 있습니다 21분 50초
findMember.getFavoriteFoods().remove("치킨");findMember.getFavoriteFoods().add("한식");에서 치킨만 삭제되고 한식이 더해지는 것인지,아니면 뒤에 주소 변경하는것처럼 [치킨,족발, 피자] 모두 삭제한 다음에 [한식, 족발, 피자] 가 더해지는 것인지 궁금합니다. 이해하기로는 치킨만 삭제되고 한식이 더해지는 것으로 이해했는데 favoriteFoods 와 addressHistory 모두 값타입 컬렉션인데어떠한 차이 때문에favoriteFoods 의 값을 변경할 땐delete from favorite_food where member_id =? and food_name = ? 로 지정한 food_name 만 지우고addressHistory는 delete from address where member_id =? 해서 address 테이블을 통째로 지우나요? Address의 테이블을 보면 값을 변경하면 추적이 어렵기 때문에 통째로 지우고 입력하는 것이고favoriteFoods는 정확하게 food_name을 찾아서 지울 수 있기 때문에 그런건가요?
-
미해결홍정모의 따라하며 배우는 C++
이 수업 마지막에 lock() 이용해서 getname 하는 부분 질문입니다.
#include <iostream> #include <memory> #include <string> class Person { std::string m_name; //std::shared_ptr<Person> m_partner; std::weak_ptr<Person> m_partner; // ⭐⭐⭐ public: Person(const std::string& name) : m_name(name) { std::cout << m_name << " created\n"; } ~Person() { std::cout << m_name << " destroyed\n"; } friend bool partnerUp(std::shared_ptr<Person>& p1, std::shared_ptr<Person>& p2) { if (!p1 || !p2) return false; p1->m_partner = p2; p2->m_partner = p1; std::cout << p1->m_name << " is partnered with " << p2->m_name << "\n"; return true; } const std::shared_ptr<Person> getPartner() const // ⭐⭐⭐ { return m_partner.lock(); // ⭐⭐ lock 함수 실행 } const std::string& getName() const { return m_name; } }; int main() { auto lucy = std::make_shared<Person>("Lucy"); auto ricky = std::make_shared<Person>("Ricky"); partnerUp(lucy, ricky); std::cout << lucy->getPartner()->getName() << std::endl; return 0; }수업 중 마지막 코드 입니다. std::cout << lucy->getPartner()->getName() << std::endl;이 부분을 통해 Ricky를 출력하게 되는 과정을 다음과 같이 해석했는데 제가 해석한게 맞는지 확인 부탁드립니다.lucy->getPartner() 에서 lucy객체의 멤버 변수이자 weak_ptr인 m_partner의 lock()함수 호출한편 m_partner를 ricky라는 객체 역시 소유하고 있음(partnerUp함수로 인해)따라서 lock()는 ricky객체를 shared_ptr로 임시 변환해서 리턴오로지 weak_ptr로는 소유하고 있는 객체의 멤버에 접근하는 것이 불가능했지만 lucy->getPartner() 이런 방식으로 ricky라는 객체를 리턴하였고 따라서 ricky라는 객체의 맴버함수 및 맴버변수에 접근할 수 있게 되었다.1.저 코드 한줄에 대한 제 해석이 맞는지 확인 부탁드리고 2.혹시 lock()함수가 lucy객체의 멤버 함수지만 리턴한건 해당 객체의 멤버 변수(여기선 m_partner)를 해당 객체인 lucy객체와 공동으로 소유중인 ricky객체를 리턴했는데 그렇다면 lock함수는 자신이 속한 객체 이외에 공동으로 소유중인 또 다른 객체를 리턴한다로 이해해도 되겠습니까? 답변 부탁드립니다. 감사합니다.
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
-2147023174, 'RPC 서버를 사용할 수 없습니다.'
-2147023174, 'RPC 서버를 사용할 수 없습니다.'이렇게 뜨는데 뭐가 문제인 거죠?한글파일을 실행하고 해도 계속 오류가 뜹니다.--------------------------------------------------------------------------- com_error Traceback (most recent call last) d:\SHW\PROGRAM\PYTHON\hwp\data\practice.ipynb 셀 6 in <cell line: 1>() ----> 1 summ_info = hwp.XHwpDocuments.Item(0).XHwpSummaryInfo 3 summ_info.Title File c:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\win32com\client\__init__.py:583, in DispatchBaseClass.__getattr__(self, attr) 579 if args is None: 580 raise AttributeError( 581 "'%s' object has no attribute '%s'" % (repr(self), attr) 582 ) --> 583 return self._ApplyTypes_(*args) File c:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\win32com\client\__init__.py:572, in DispatchBaseClass._ApplyTypes_(self, dispid, wFlags, retType, argTypes, user, resultCLSID, args) 570 def ApplyTypes(self, dispid, wFlags, retType, argTypes, user, resultCLSID, args): 571 return self._get_good_object_( --> 572 self._oleobj_.InvokeTypes(dispid, 0, wFlags, retType, argTypes, *args), 573 user, 574 resultCLSID, 575 ) com_error: (-2147023174, 'RPC 서버를 사용할 수 없습니다.', None, None)
-
미해결스프링 시큐리티 OAuth2
OAuth2 클라이언트를 어디에 구성하는 것이 좋은지 고민이 되어 질문드립니다
안녕하세요 정수원님~!현재 front가 react로 되어있다보니 OAuth2 클라이언트 서버를 node 서버냐(프론트에서 처리) spring boot 서버(백엔드에서 처리)냐에서 고민이 되는데 보통 이럴경우 OAuth2 클라이언트 서버를 어디에 구성하는게 좋을지 궁금합니다~!
-
미해결Nuxt.js 시작하기
배포관련 해서
안녕하세요본강의를 기초로 backend를 라라벨로 사용하여 개발하여 배포를 할 예정입니다처음에는 히로쿠로 try하다가 잘 안되어 중지 해두었다가 4개월 후에 할려니 유료로 바뀌어서 고민이 됩니다현재는 개발 / production을 구분하는데 혹시나 동시에 하면 배포없이도 가능한지 궁금합니다만약 가능하다면 디렉토리를 서버의 www 폴더 밑에 도메일 폴더를 만들어서거기서 nuxt를 설치하여 개발하면 되는지 궁금합니다
-
미해결스프링부트 시큐리티 & JWT 강의
SecurityConfig 작성할때 새로운 설정방법으로 해도 안돼요
.authorizeRequests()가 계속 빨간줄로 되는데 어떻게 해야하죠 ...?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
generated 안에 Q 모델들이 생성이 되지 않습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.말 그대로 generated 까지는 생성되지만 그 안에 Q 모델들이 생성되지 않습니다.버전에 맞게 여러 라이브러리를 적용해보고, generated 디렉토리를 소스로 인식하게도 해봤지만 아직 해결되지 않았습니다. 어떻게 하면 좋을까요?아래는 제 build.gradle 입니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-J 질문드립니다.
안녕하세요 큰돌님! 3-J번 Queue를 두번사용하지 않고 풀어봤는데요.단순히 0일경우 visited를 카운트 안하고1일경우에만 카운트하여 풀이를 해봤습니다. 예제는 전부 맞는데 제출하니 틀렸다고 나옵니다.어떤 부분을 놓친걸까요?또 어떤 반례가 있을까요? http://boj.kr/b6ecc8c40aa24dee8f2c8dc46e5b2486
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
깃헙 권한 요청
권한 요청 드립니다.인프런 아이디 : online_uiux@mediawill.com인프런 이메일 : online_uiux@mediawill.com깃헙 아이디 : kimyj@mediawill.com깃헙 Username : yejinkeem
-
미해결
인텔리제이 New Project생성시 Detecting JDK에서 계속 머물러있습니다
JDK 설치 및 환경변수 셋팅까지 완료한 상태입니다.인텔리제이 실행 후 프로젝트 생성하면 해당과 같은 팝업에서 5분이상 머물러 있고 다음 단계로 넘어가지 않습니다. 자바 버전은 위와 같습니다. 왜... 저 detecting jdk에서 멈추는건가요 ?인텔리제이에서 JDK를 못찾는건가요 ?
-
미해결
[프로그래머스 Lv.3 여행경로] 계속 테케1에서 오류가 나는데 이유를 모르겠습니다 ㅠ (코드 첨부)
branch 변수에 분기가 이뤄지는 ticket의 인덱스를 저장해서 더 이상 사용할 ticket이 없으면 분기되는 공항으로 이동할 수 있게 만들었는데, 프로그래머스에서 제공하는 팁을 참고하더라도 유일하게 테케1에서만 계속 틀렸다고(런타임 에러X) 나오네요...혹시 제 코드 봐주실 수 있을까요?https://school.programmers.co.kr/learn/courses/30/lessons/43164?language=javascript function solution(tickets) { let candid = []; let used = new Array(tickets.length).fill(false); let branch = new Map(); // tickets, used, stack let stack = []; for(let i=0; i<tickets.length; i++) { if(tickets[i][0] === "ICN") { stack.push(i); } if(!branch.has(tickets[i][0])) { let arr = []; arr.push(i); branch.set(tickets[i][0], arr); } else { branch.get(tickets[i][0]).push(i); } } for(let [key, value] of branch) { if(value.length < 2) { branch.delete(key); } } DFS(used, tickets, branch, stack, candid); let answer = []; for(let i=0; i<candid.length; i++) { const path = candid[i].split(","); let arr = []; arr.push("ICN"); for(let j=0; j<path.length; j++) { arr.push(tickets[path[j]][1]); } answer.push(arr); } if(answer.length > 1) { answer = answer.sort((a, b) => { if(a<b) return -1; else if(a>b) return 1; }); } return answer[0]; } function DFS(used, tickets, branch, stack, candid) { let path = []; while(stack.length > 0) { let index = stack.pop(); path.push(index); used[index] = true; const start = tickets[index][1]; // 도착지를 출발지로 설정 let added = false; for(let i=0; i<tickets.length; i++) { if(!used[i] && tickets[i][0] === start) { stack.push(i); added = true; } } if(!used.includes(false)) { candid.push(path.toString()); path = find_children(stack[stack.length-1], tickets, branch, path, used) } else if(!added) { // 사용되지 않은 것이 아직 있는 데도 추가가 안된 것은 // 더 이상 순회할 것이 없음을 암시 path = find_children(stack[stack.length-1], tickets, branch, path, used) } } } function find_children(idx, tickets, branch, path, used) { if(idx === undefined) { return []; } let children = branch.get(tickets[idx][0]); for(let i=0; i<children.length; i++) { if(children[i] !== idx) { const branch_idx = path.indexOf(children[i]); let reset = path.slice(branch_idx); for(let j=0; j<reset.length; j++) { used[reset[j]] = false; } path = path.slice(0, branch_idx); return path; } } }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-J질문입니다!
의상 종류가 몇 개인지 알기 위해서 b를 _map[b]++;를 해주셨는데, int형인 cnt[]배열말고 자료구조 map을 쓴 이유가 들어가는 요소인 b가 string형이라서 map을 쓴건가요?for(char a : s) cnt[a - 'a']++; 가 가능한 이유는 요소가 문자일지라도 요소가 char형이기 때문인것이 맞나요?
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
블로그에 정리해서 올려도 될까요?
안녕하세요 나도 코딩님 강의 잘 듣고 있고 배운지 꽤 되서 감을 잊고있었는데 되새김질이 되서 좋습니다. 제가 또 잊어버릴까봐 걱정되서 그러는데 혹시 제가 블로그에 정리해도 되나요???퀴즈에 대한 강의는 나도 코딩님의 지적 재산이니 일절 올리지 않을것이고 강의로 인해 배운 지식에 대해서만 올리겠습니다.기본 예시에 대한 문제라면 제가 어레인지해서 올리도록하겠습니다. 허락 부탁드립니다...!!!!
-
미해결[중급편] 코인 가격 모니터링 앱 제작 (Android Kotlin)
init의 역할
'메인 화면으로 넘어가기 위한 준비' 챕터의 '처음 접속하는지 아닌지 Flag 값 부분에서 다음과 같이 instance가 null로 초기화되고 있는 것이 아닌가요..? init { } 안에 instance=this를 하지 않았을 때 앱이 죽어버리는 문제가 발생했는데 init 안에 instance = this는 어떤 의미를 담고 있는 것인가요..?
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
파이어 베이스 로그인 및 회원가입 질문입니다.
.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-J 문제 컴파일이 안돼요
안녕하세요 1-J 9375번 문제를 푸는데 계속 컴파일이 안돼요.devc++ 사용하고 있는데요, 강사님 코드로 컴파일 해도 오류가 나요. 뭐가 문제일까요?http://boj.kr/b8ffa79b7bbc43a7b291d205f9015698for(auto c : _map) 이 부분에서 [Error] 'c' does not name a type 이런 오류가 떠요.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
result부분에서 질문입니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]오류가 떠서 저는 static 을 넣어라고 되어 있는데 그대로 넣어서 해야하나요 아니면 어떤 부분이 잘못 되었길래 이러는 걸까요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
OrderService.findOrders() 결과인 orders의 order가 orderItems를 갖지 않습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]주문하기에서 HTML 오류가 떠서 같은 오류의 글들을 찾아보다가 order.orderList.html의 <tr th:each="item : ${orders}"> <td th:text="${item.id}"></td> <td th:text="${item.member.name}"></td> <td th:text="${item.orderItems[0].item.name}"></td> <td th:text="${item.orderItems[0].orderPrice}"></td> <td th:text="${item.orderItems[0].count}"></td> <td th:text="${item.status}"></td> <td th:text="${item.orderDate}"></td> <td> <a th:if="${item.status.name() == 'ORDER'}" href="#" th:href="'javascript:cancel('+${item.id}+')'" class="btn btn-danger">CANCEL</a> </td> </tr>부분에서 item.orderItems[0] 값이 있는지 확인하라는 글을 보고 OrderService.findOrders()의 결과를 디버깅하면서 확인했습니다.같은 오류의 다른 글들 모두 확인했고, 해당 사항 없었으며, 디버깅 시 DB에는 orderItem의 값이 정상적으로 저장되는 것을 확인했습니다.혹시나해서 OrderService.findOrders()의 내부 구현을 OrderRepository.findAllByString()과 OrderRepository.findAllByCriteria() 모두 해보았지만, 결론적으로 이 두 메서드가 반환한 orders가 orderItems을 갖지 못하는 것을 확인했습니다.현재 야생형 커리큘럼 중이어서 위 두 메서드의 코드를 분석하기에 어려움을 겪어 질문 올립니다. 아래는 OrderRepository 소스코드입니다.package jpabook.jpashop.repository; import jakarta.persistence.EntityManager; import jakarta.persistence.TypedQuery; import jakarta.persistence.criteria.CriteriaBuilder; import jakarta.persistence.criteria.CriteriaQuery; import jakarta.persistence.criteria.Join; import jakarta.persistence.criteria.JoinType; import jakarta.persistence.criteria.Predicate; import jakarta.persistence.criteria.Root; import java.util.ArrayList; import java.util.List; import jpabook.jpashop.domain.Member; import jpabook.jpashop.domain.Order; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; import org.springframework.util.StringUtils; @Repository @RequiredArgsConstructor public class OrderRepository { private final EntityManager em; public void save(Order order) { em.persist(order); } public Order findOne(Long id) { return em.find(Order.class, id); } public List<Order> findAllByString(OrderSearch orderSearch) { //language=JPAQL String jpql = "select o From Order o join o.member m"; boolean isFirstCondition = true; //주문 상태 검색 if (orderSearch.getOrderStatus() != null) { if (isFirstCondition) { jpql += " where"; isFirstCondition = false; } else { jpql += " and"; } jpql += " o.status = :status"; } //회원 이름 검색 if (StringUtils.hasText(orderSearch.getMemberName())) { if (isFirstCondition) { jpql += " where"; isFirstCondition = false; } else { jpql += " and"; } jpql += " m.name like :name"; } TypedQuery<Order> query = em.createQuery(jpql, Order.class) .setMaxResults(1000); //최대 1000건 if (orderSearch.getOrderStatus() != null) { query = query.setParameter("status", orderSearch.getOrderStatus()); } if (StringUtils.hasText(orderSearch.getMemberName())) { query = query.setParameter("name", orderSearch.getMemberName()); } List<Order> orders = query.getResultList(); return orders; } public List<Order> findAllByCriteria(OrderSearch orderSearch) { CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery<Order> cq = cb.createQuery(Order.class); Root<Order> o = cq.from(Order.class); Join<Order, Member> m = o.join("member", JoinType.INNER); //회원과 조인 List<Predicate> criteria = new ArrayList<>(); //주문 상태 검색 if (orderSearch.getOrderStatus() != null) { Predicate status = cb.equal(o.get("status"), orderSearch.getOrderStatus()); criteria.add(status); } //회원 이름 검색 if (StringUtils.hasText(orderSearch.getMemberName())) { Predicate name = cb.like(m.<String>get("name"), "%" + orderSearch.getMemberName() + "%"); criteria.add(name); } cq.where(cb.and(criteria.toArray(new Predicate[criteria.size()]))); TypedQuery<Order> query = em.createQuery(cq).setMaxResults(1000); //최대 1000건 List<Order> orders = query.getResultList(); return orders; } }
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Test부분에서 실행이 안돼서 질문드립니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]이렇게 뜨는데 어떻게 해야하는 부분인가요? 처음 실행했을때는 이 부분에서 return null이 없어서 오류가 떴는데 강사님과 다르게 return null을 넣어야 하는것도 잘 모르겠습니다