묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
springconfig datasource 주입시 자동주입이 되지않는다고 오류가 표시됩니다.
순수 JDBC 강의 15:15정도에 나오는 19~21 line 작성시 매개변수 dataSource쪽에서 '자동주입을 할수 없습니다. DataSource 유형의 bean을 찾을수 없습니다. 라는 표시가 나오는게 혹시 어떻게 해결해야하나요??
-
미해결바닥부터 시작하는 STM32 드론 개발의 모든 것
센서 한 개로는 PID 더블 제어가 불가능한가요?
ChriP님 안녕하세요. 질문 있습니다. 강의에서 싱글 PID만으로 부드럽고 빠른 제어가 불가능해서 각속도 데이터까지 포함하여 더블 PID를 사용한다고 하셨는데, 센서 한 개로도 가능할 것 같은데 왜 ChrisP님은 센서를 두 개 사용하셨는지 궁금합니다. 예를 들어, 제가 MPU6050(6축 센서)과 HMC5883L(지자기)을 사용하여 각도를 계산하고, MPU6050으로 측정한 각속도를 사용하는 경우처럼 한 개의 센서만 사용할 때 문제가 생기는가요? 아니면 보다 정확한 제어를 위해 센서 두 개를 사용한 것인가요?
-
미해결바닥부터 시작하는 STM32 드론 개발의 모든 것
1축 실험 때 사용한 드론 테스트 베드에 대해 질문 있습니다.
안녕하세요. PID 게인 실험할 때 사용하셨던 드론 테스트 베드는 직접 만드신건지 궁금합니다. 만약 구입하셨다면 어디서 구입하셨는지 알 수 있을까요?
-
미해결Flutter 입문 - 안드로이드, iOS 개발을 한 번에 (with Firebase)
_image == null ? Text('No Image') : Image.file(_image),
_image == null ? Text('No Image') : Image.file(_image), 여기서 괄호안에 있는 _image가 에러가 납니다.
-
미해결
slick slider 오류
위처럼 제가 만드려는 사이트에 슬릭 슬라이더를 적용하니 원래 크기는 320px인데 394px 이나 늘어났습니다 ㅠㅠ 검색해보니 슬릭 슬라이더 고유 style이 먹히는 바람에 저렇게 된 것 같은데 제가 커스텀한 css로 슬라이더 적용하는 방법 찾고 싶습니다... 버튼도 설정한 적 없는데 가운데로 와서 수정도 잘 안 돼 도움 남겨봐요... + 수정 위의 상황을 고치면 이런식으로 화살표 오류는 여전한 채 slidesToShow 가 안 먹힙니다ㅠㅠ 반응형인 responsive도 전혀 안 먹히고 있어요,,,
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
리액트의 기초 동작중 props로 값전달이 궁금합니다
부모컴포넌트에서 리덕스를 사용하지않고 props로 값을 전달할때에 자식 컴포넌트에서 props.state를 사용하여 앞에 프롭스를 항상붙여 써도 동작하는경우가있고 프롭스 없이 state를 바로사용할수있는경우가 있는데 어떤 차이가있고 어떤걸 사용해야하는지 궁금합니다 만약 프롭스를 붙이지않고 정상적으로 동작하여도 props. 형태를 매번 사용하는것이 좋을까요? 아래는 예시 상황입니다 // 부모에게서 randomstate 를 전달받아 바로 사용하는 자식컴포넌트 const Child1 = ( randomstate ) => { console.log(randomstate); return 자식 컴포넌트 ; }; ... // props를 매번 이용하여 사용하는 컴포넌트 const Child2 = ( props, randomstate ) => { console.log(props.randomstate); return 자식 컴포넌트 ; }; ...
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
"status": 500 오류 관련 질문입니다.
안녕하세요 현재 간단한 주문조회 V4 : JPA에서 DTO로 바로조회 부분을 수강 중에 생긴 오류입니다. 아래 그림과 같이 오류가 뜨는데, 서버가 실행 되지 않아 생긴 오류는 아닌 것 같습니다. package jpabook.jpashop.api;import jpabook.jpashop.domain.Address;import jpabook.jpashop.domain.Order;import jpabook.jpashop.domain.OrderStatus;import jpabook.jpashop.repository.OrderRepository;import jpabook.jpashop.repository.OrderSearch;import jpabook.jpashop.repository.OrderSimpleQueryDto;import lombok.Data;import lombok.RequiredArgsConstructor;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;import java.time.LocalDateTime;import java.util.List;import java.util.stream.Collectors;import static java.util.stream.Collectors.toList;/** * xToOne * Order * Order -> Member * Order -> Delivery */@RestController@RequiredArgsConstructorpublic class OrderSimpleApiController { private final OrderRepository orderRepository; @GetMapping("/api/v1/simple-orders") public List<Order> ordersV1() { List<Order> all = orderRepository.findAllByString(new OrderSearch()); for (Order order : all) { order.getMember().getName(); //Lazy 강제 초기화 order.getDelivery().getAddress(); //Lazy 강제 초기화 } return all; } @GetMapping("/api/v2/simple-orders") public List<SimpleOrderDto> ordersV2() { //ORDER 2개 //N + 1 -> 1 + 회원 N(2) + 배송 N List<Order> orders = orderRepository.findAllByString(new OrderSearch()); List<SimpleOrderDto> result = orders.stream() .map(o -> new SimpleOrderDto(o)) .collect(toList()); return result; } @GetMapping("/api/v3/simple-orders") public List<SimpleOrderDto> ordersV3() { List<Order> orders = orderRepository.findAllWithMemberDelivery(); List<SimpleOrderDto> result = orders.stream() .map(o -> new SimpleOrderDto(o)) .collect(Collectors.toList()); return result; } @GetMapping("/api/v4/simple-orders") public List<OrderSimpleQueryDto> ordersV4() { return orderRepository.findOrderDtos(); } @Data static class SimpleOrderDto { private Long orderId; private String name; private LocalDateTime orderDate; private OrderStatus orderStatus; private Address address; public SimpleOrderDto(Order order) { orderId = order.getId(); name = order.getMember().getName(); orderDate = order.getOrderDate(); orderStatus = order.getStatus(); address = order.getDelivery().getAddress(); } }} package jpabook.jpashop.repository;import jpabook.jpashop.domain.Order;import lombok.RequiredArgsConstructor;import org.springframework.stereotype.Repository;import org.springframework.util.StringUtils;import javax.persistence.EntityManager;import javax.persistence.TypedQuery;import javax.persistence.criteria.*;import java.util.ArrayList;import java.util.List;@Repository@RequiredArgsConstructorpublic 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()); } return query.getResultList(); } /** * JPA Criteria */ 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<Object, Object> 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건 return query.getResultList(); } public List<Order> findAllWithMemberDelivery() { return em.createQuery( "select o from Order o" + " join fetch o.member m" + " join fetch o.delivery d", Order.class) .getResultList();} public List<OrderSimpleQueryDto> findOrderDtos() { return em.createQuery( "select new jpabook.jpashop.repository.order.simplequery.OrderSimpleQueryDto(o.id, m.name, o.orderDate, o.status, d.address)" + " from Order o" + " join o.member m" + " join o.delivery d", OrderSimpleQueryDto.class) .getResultList(); }} package jpabook.jpashop.repository;import jpabook.jpashop.domain.Address;import jpabook.jpashop.domain.OrderStatus;import lombok.Data;import java.time.LocalDateTime;@Data public class OrderSimpleQueryDto { private Long orderId; private String name; private LocalDateTime orderDate; private OrderStatus orderStatus; private Address address; public OrderSimpleQueryDto(Long orderId, String name, LocalDateTime orderDate, OrderStatus orderStatus, Address address) { this.orderId = orderId; this.name = name; this.orderDate = orderDate; this.orderStatus = orderStatus; this.address = address; } } 2022-05-31 02:13:36.433 ERROR 1563 --- [nio-8080-exec-4] o.h.hql.internal.ast.ErrorTracker : Unable to locate class [jpabook.jpashop.repository.order.simplequery.OrderSimpleQueryDto] [cause=org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [jpabook.jpashop.repository.order.simplequery.OrderSimpleQueryDto]] 2022-05-31 02:13:36.436 ERROR 1563 --- [nio-8080-exec-4] o.h.hql.internal.ast.ErrorTracker : Unable to locate class [jpabook.jpashop.repository.order.simplequery.OrderSimpleQueryDto] [cause=org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [jpabook.jpashop.repository.order.simplequery.OrderSimpleQueryDto]] org.hibernate.hql.internal.ast.DetailedSemanticException: Unable to locate class [jpabook.jpashop.repository.order.simplequery.OrderSimpleQueryDto] at org.hibernate.hql.internal.ast.tree.ConstructorNode.resolveConstructor(ConstructorNode.java:177) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final] at org.hibernate.hql.internal.ast.tree.ConstructorNode.prepare(ConstructorNode.java:144) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final] at org.hibernate.hql.internal.ast.HqlSqlWalker.processConstructor(HqlSqlWalker.java:1271) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final] at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectExpr(HqlSqlBaseWalker.java:2409) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final] at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectExprList(HqlSqlBaseWalker.java:2275) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final] at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectClause(HqlSqlBaseWalker.java:1534) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final] at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:611) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final] at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:339) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final] at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:287) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final] at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:276) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final] at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:192) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final] at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:144) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final] at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:113) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final] at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:73) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final] at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:162) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final] at org.hibernate.internal.AbstractSharedSessionContract.getQueryPlan(AbstractSharedSessionContract.java:636) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final] at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:748) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final] at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:848) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final] at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:114) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:362) ~[spring-orm-5.3.19.jar:5.3.19] at com.sun.proxy.$Proxy110.createQuery(Unknown Source) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:311) ~[spring-orm-5.3.19.jar:5.3.19] at com.sun.proxy.$Proxy110.createQuery(Unknown Source) ~[na:na] at jpabook.jpashop.repository.OrderRepository.findOrderDtos(OrderRepository.java:105) ~[classes/:na] at jpabook.jpashop.repository.OrderRepository$$FastClassBySpringCGLIB$$9808961b.invoke(<generated>) ~[classes/:na] at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.19.jar:5.3.19] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793) ~[spring-aop-5.3.19.jar:5.3.19] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.3.19.jar:5.3.19] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) ~[spring-aop-5.3.19.jar:5.3.19] at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-5.3.19.jar:5.3.19] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.19.jar:5.3.19] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) ~[spring-aop-5.3.19.jar:5.3.19] at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708) ~[spring-aop-5.3.19.jar:5.3.19] at jpabook.jpashop.repository.OrderRepository$$EnhancerBySpringCGLIB$$3bdf9949.findOrderDtos(<generated>) ~[classes/:na] at jpabook.jpashop.api.OrderSimpleApiController.ordersV4(OrderSimpleApiController.java:70) ~[classes/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.19.jar:5.3.19] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.19.jar:5.3.19] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.19.jar:5.3.19] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.19.jar:5.3.19] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.19.jar:5.3.19] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.19.jar:5.3.19] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067) ~[spring-webmvc-5.3.19.jar:5.3.19] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) ~[spring-webmvc-5.3.19.jar:5.3.19] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.19.jar:5.3.19] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.19.jar:5.3.19] at javax.servlet.http.HttpServlet.service(HttpServlet.java:655) ~[tomcat-embed-core-9.0.62.jar:4.0.FR] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.19.jar:5.3.19] at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[tomcat-embed-core-9.0.62.jar:4.0.FR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.62.jar:9.0.62] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.19.jar:5.3.19] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.19.jar:5.3.19] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.19.jar:5.3.19] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.19.jar:5.3.19] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.19.jar:5.3.19] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.19.jar:5.3.19] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na] 2022-05-31 02:13:36.441 ERROR 1563 --- [nio-8080-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.hql.internal.ast.QuerySyntaxException: Unable to locate class [jpabook.jpashop.repository.order.simplequery.OrderSimpleQueryDto] [select new jpabook.jpashop.repository.order.simplequery.OrderSimpleQueryDto(o.id, m.name, o.orderDate, o.status, d.address) from jpabook.jpashop.domain.Order o join o.member m join o.delivery d]; nested exception is java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: Unable to locate class [jpabook.jpashop.repository.order.simplequery.OrderSimpleQueryDto] [select new jpabook.jpashop.repository.order.simplequery.OrderSimpleQueryDto(o.id, m.name, o.orderDate, o.status, d.address) from jpabook.jpashop.domain.Order o join o.member m join o.delivery d]] with root cause org.hibernate.hql.internal.ast.QuerySyntaxException: Unable to locate class [jpabook.jpashop.repository.order.simplequery.OrderSimpleQueryDto] [select new jpabook.jpashop.repository.order.simplequery.OrderSimpleQueryDto(o.id, m.name, o.orderDate, o.status, d.address) from jpabook.jpashop.domain.Order o join o.member m join o.delivery d] at org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:74) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final] at org.hibernate.hql.internal.ast.ErrorTracker.throwQueryException(ErrorTracker.java:93) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final] at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:282) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final] at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:192) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final] at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:144) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final] at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:113) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final] at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:73) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final] at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:162) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final] at org.hibernate.internal.AbstractSharedSessionContract.getQueryPlan(AbstractSharedSessionContract.java:636) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final] at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:748) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final] at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:848) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final] at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:114) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:362) ~[spring-orm-5.3.19.jar:5.3.19] at com.sun.proxy.$Proxy110.createQuery(Unknown Source) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:311) ~[spring-orm-5.3.19.jar:5.3.19] at com.sun.proxy.$Proxy110.createQuery(Unknown Source) ~[na:na] at jpabook.jpashop.repository.OrderRepository.findOrderDtos(OrderRepository.java:105) ~[classes/:na] at jpabook.jpashop.repository.OrderRepository$$FastClassBySpringCGLIB$$9808961b.invoke(<generated>) ~[classes/:na] at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.19.jar:5.3.19] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793) ~[spring-aop-5.3.19.jar:5.3.19] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.3.19.jar:5.3.19] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) ~[spring-aop-5.3.19.jar:5.3.19] at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-5.3.19.jar:5.3.19] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.19.jar:5.3.19] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) ~[spring-aop-5.3.19.jar:5.3.19] at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708) ~[spring-aop-5.3.19.jar:5.3.19] at jpabook.jpashop.repository.OrderRepository$$EnhancerBySpringCGLIB$$3bdf9949.findOrderDtos(<generated>) ~[classes/:na] at jpabook.jpashop.api.OrderSimpleApiController.ordersV4(OrderSimpleApiController.java:70) ~[classes/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.19.jar:5.3.19] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.19.jar:5.3.19] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.19.jar:5.3.19] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.19.jar:5.3.19] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.19.jar:5.3.19] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.19.jar:5.3.19] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067) ~[spring-webmvc-5.3.19.jar:5.3.19] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) ~[spring-webmvc-5.3.19.jar:5.3.19] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.19.jar:5.3.19] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.19.jar:5.3.19] at javax.servlet.http.HttpServlet.service(HttpServlet.java:655) ~[tomcat-embed-core-9.0.62.jar:4.0.FR] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.19.jar:5.3.19] at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[tomcat-embed-core-9.0.62.jar:4.0.FR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.62.jar:9.0.62] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.19.jar:5.3.19] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.19.jar:5.3.19] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.19.jar:5.3.19] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.19.jar:5.3.19] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.19.jar:5.3.19] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.19.jar:5.3.19] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.62.jar:9.0.62] at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na] 오류내용은 이러합니다. OrderSimpleApiController 클래스에 @GetMapping("/api/v4/simple-orders")public List<OrderSimpleQueryDto> ordersV4() { return orderRepository.findOrderDtos();} orderRepository 가 잘못된 것일까요?.. 오류 내용을 보면 저 부분을 얘기하는 것 같은데 어떤 부분이 잘못되었는지 이해가 잘 안됩니다 ㅜㅠ 도움 부탁드립니다!!!!..
-
해결됨비전공자를 위한 진짜 입문 올인원 개발 부트캠프
저는 1번 문제를 보고 이렇게 답을 했는데 그랩님이랑 답이 다른 것 같아서 제 답은 문제가 의도하는 바와 다른가 해서 질문드립니다. + 2번 문제도 궁금한게 생겼습니다.
function length(){ console.log(products.length); return; } length(products) 2 저는 문제만 보고 그냥 생각나는 대로 만들어봤는데 뭔가 제가 return 이나 함수 값을 잘 못 이해해서 다른 엉뚱한 답이 나온거 아닌가 싶은 의문이 듭니다..! 위에 답이 1번 문제의 답이 될 수는 없나요? 1번 문제의 답이 될 수 없다면 어느 부분에서 오류가 있을까요?? +(추가질문) 2번의 getproductsseller(products[0]); 라는 답에 products[0] 대신 '농구공' 을 넣는 것 만으로 '민수' 라는 seller가 나오도록 할려면 어떻게 코드를 바꿔야 하나요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Session
안녕하세요 궁금한게 있어서 질문드립니다.Session 이라는 인스턴스가 연결된 클라이언트 갯수만큼 만들어지는 걸로 이해했습니다.저 상황에서 만약 server에 연결된 client가 100개라면Server에 100개의 Session 인스턴스각 client는 1개의 Session 인스턴스 일텐데서버 입장에서 A라는 클라와 B라는 클라가 동시에 값을 보내어서 동시에 Send를 해야하는 상황를 생각한다면 서버에서 A 클라에서 받은 값과 B클라에서 받은 값은 각각 다른 Session 인스턴스로 받기 때문에 서로 아무리 멤버변수라고 해도 정적이 아닌 이상 서로 공유하고 있지 않을텐데 Lock를 사용하는 이유가 궁금합니다. send 할때 lock을 이용하는건 하나의 인스턴스 안에서 여러개의 Thread가 생기는것을 고려해서 만들어준건가요??
-
미해결1. 웹개발 기초 [HTML, CSS]
css 적용 문제
<!DOCTYPE html> <html lang="en"> <head> <title>animation information</title> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet"href="main.css"> <style> body { margin:0px; } header { position: relative; top: 0px; width:100%; min-width: 1280px; height:10vh; background-color: hotpink; } main { position: relative; top: 0px; width:100%; min-width: 1280px; height:90vh; background-color: rgb(130, 126, 231); } footer { position: relative; top: 0px; width:100%; min-width: 1280px; height:5vh; background-color: hotpink; } nav { position : relative; top: 0px; width: 1280px; margin:0px auto; min-width: 1280px; height:100%; background-color: rgb(255, 255, 255); } button1 { position: relative; float: left; top: 10px; width: 140px; cursor: pointer; } button2 { position: relative; top: 10px; float: left; width: 140px; cursor: pointer; } button3 { position: relative; top: 10px; float: left; width: 140px; cursor: pointer; } button4 { position: relative; top: 10px; float: left; width: 140px; cursor: pointer; } main section1 { position: relative; top: 100px; width: 600px; height: 600px; border: 1px solid black; } </style> </head> <body> <header class = "header"> <nav class= "nav" > <button class="button1">소개</button> <button class="button2">추천</button> <button class="button3">알림</button> <button class="button4">소통</button> </div> </nav> </header> <main class="main"> <section class="section1"> </section> </main> <footer class="footer"> </footer> </body> </html> visual studio code 사용해서 하고있는데, css 적용이 안됩니다 ㅠㅠ
-
미해결Node.js - Express
에러
npm ERR! syscall open npm ERR! path C:\Nodejs-master/package.json npm ERR! errno -4058 npm ERR! enoent ENOENT: no such file or directory, open 'C:\Nodejs-master\package.json' npm ERR! enoent This is related to npm not being able to find a file. npm ERR! enoent npm ERR! A complete log of this run can be found in: 어떻게 해결을 해야할까요
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
락만 뮤텍스로 바꿨을뿐인데 프로그램이 죽습니다
락 부분이 좀 어려워 흔히 쓰는 뮤텍스 방식으로 수정해보았습니다. 사진은 하나만 넣었지만 WRITE_LOCK을 쓰는 모든 부분을 위와같이 수정했습니다. 하지만 위와 같은 에러가 나오는걸로 보아 멀티쓰레드 동기화 문제로 보입니다. 혹시 선생님이 쓰신 락이랑 뮤텍스 기반 락이랑 어떻게 다르기에 평범한 락으로 바꿨더니 프로그램이 죽는걸까요? (혹시 안보이시면 우클릭 -> 새 탭에서 이미지 열기 해주시면 잘보일거에요)
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
파라미터 질문 있습니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]예를 들어 loginV3이나 logoutV3을 보면 HttpServletRequest 객체를 파라미터로 받아서 session 객체를 생성하는데 파라미터로 바로 HttpSession객체를 받아도 똑같이 동작하는 거 같습니다. 제 생각에는 session객체를 생성할 때 request.getSession(false||true) 여기 파라미터 차이같은데 무슨 차이가 있나요?
-
해결됨게임 프로그래머 취업 전략 가이드
안녕하세요. 게임 개발자의 재테크에 관해 질문드리고 싶습니다.
Rookiss님 강의 너무 잘봤습니다. 확실히 게임 개발의 로드맵을 그릴 수 있는 강의였습니다. 질문드리고 싶은것은 (1) Rookiss님께서 생각하시는 게임 개발자의 재테크는 어떤것이 가장 좋을지 여쭤보고 싶습니다. (2)그리고 괜찮으시다면 강의 수익외에도 Rookiss님께서 하고 계시는 다른 재테크가 있는지 알고 싶습니다. 흔히 말하기를 개발자는 자기 자신에게 투자하는 것이 가장 좋다고는 하는데 게임 개발자도 그에 해당하는 것인지 궁금하고 아무래도 고연봉 개발자가 되더라도 경제적 자유를 이루기에는 어려움이 있어보여 이런 질문을 드리게 되었습니다.
-
미해결C 프로그래밍 - 입문부터 게임 개발까지
질문 드립니다.
안녕하세요. 8번째 챕터 진행했는데, 컴파일 에러는 뜨지 않지만 이상하게 코드가 안 돌아가서 질문 드립니다. (참고로 비주얼 스튜디오가 깔리지 않아서, DEV-C++로 하고 있어 scanf_s가 아닌 scanf로 작성하고 있습니다) #include <stdio.h> #include <time.h> #include <iostream> #include <stdlib.h> #include <string> // 10마리의 서로 다른 동물 (각 카드 2장씩) // 사용자로부터 2개의 입력값을 받아서 -> 같은 동물 찾으면 카드 뒤집기 // 모든 동물 쌍을 찾으면 게임 종료 // 총 실패 횟수 알려주기 int arrayAnimal[4][5]; // 카드 지도 (20장의 카드) int checkAnimal[4][5]; // 뒤집혔는지 여부 확인 int foundAllAnimals(); const char * strAnimal[10]; void initAnimalArray(); void initAnimalName(); void shuffleAnimal(); int getEmptyPosition(); int conv_pos_x(int x); int conv_pos_y(int y); void printAnimals(); void printQuestion(); int main(void) { srand(time(NULL)); initAnimalArray(); initAnimalName(); shuffleAnimal(); int failCount = 0; // 실패 횟수 while (1) { int select1 = 0; //사용자가 선택한 처음 수 int select2 = 0; //사용자가 선택한 두번째 수 printAnimals(); // 동물 위치 출력 printQuestion(); // 문제 출력 (카드 지도) printf("뒤집을 카드를 2개 고르세요 : "); scanf("%d %d" , &select1, &select2); if (select1 == select2) // 같은 카드 선택 시 무효 continue; // 좌표에 해당하는 카드를 뒤집어 보고 같은지 안같은지 확인 // 정수 좌표를 (x,y) 로 변환 int firstSelect_x = conv_pos_x(select1); int firstSelect_y = conv_pos_y(select1); int secondSelect_x = conv_pos_x(select2); int secondSelect_y = conv_pos_y(select2); // 같은 동물인 경우 if((checkAnimal[firstSelect_x][firstSelect_y] == 0 //카드가 뒤집히지 않았는지 && checkAnimal[secondSelect_x][secondSelect_y] == 0) && (arrayAnimal[firstSelect_x][firstSelect_y] == arrayAnimal[secondSelect_x][secondSelect_y]) ) //두 동물이 같은지 { printf("\n\n빙고! : %s 발견\n\n" , strAnimal[arrayAnimal[firstSelect_x][firstSelect_y]]); checkAnimal[firstSelect_x][firstSelect_y] = 1; checkAnimal[secondSelect_x][secondSelect_y] = 1; } // 다른 동물인 경우 else { printf("\n\n 땡!! (틀렸거나 이미 뒤집힌 카드입니다)) \n"); printf("%d : %s\n" , select1 , strAnimal[arrayAnimal[firstSelect_x][firstSelect_y]]); printf("%d : %s\n" , select2 , strAnimal[arrayAnimal[secondSelect_x][secondSelect_y]]); printf("\n\n"); failCount++; } // 모든 동물을 찾았는지 여부, 1 : 참, 0 : 거짓 if (foundAllAnimals() == 1) { printf("\n\n 축하합니다 ! 모든 동물을 다 찾았네요 \n"); printf("지금까지 총 %d 번 실수하였습니다\n" , failCount); break; } } return 0; } void initAnimalArray() { for (int i = 0; i < 4; i++) { for (int j = 0; j < 5; i++) { arrayAnimal[i][j] = -1; } } } void initAnimalName() { strAnimal[0] = "원숭이"; strAnimal[1] = "하마"; strAnimal[2] = "강아지"; strAnimal[3] = "고양이"; strAnimal[4] = "돼지"; strAnimal[5] = "코끼리"; strAnimal[6] = "기린"; strAnimal[7] = "낙타"; strAnimal[8] = "타조"; strAnimal[9] = "호랑이"; } void shuffleAnimal() { // □□□□□ // □□□□□ // □□□□□ // □□□□□ for (int i = 0; i < 10; i++) { for (int j = 0; j < 2; j++) { int pos = getEmptyPosition(); int x = conv_pos_x(pos); int y = conv_pos_y(pos); arrayAnimal[x][y] = i; } } } // 좌표에서 빈 공간 찾기 int getEmptyPosition() { // □□□□□ 0 1 2 3 4 -> 0 0 0 0 0 // □□□□□ 5 6 7 8 9 -> 1 1 1 1 1 // □□□□□ 10 11 12 13 14 -> 2 2 2 2 2 // □□□□□ 15 16 17 18 19 -> 3 3 3 3 3 while (1) { int randPos = rand() % 20; // 0 ~ 19 사이의 숫자 반환 // 19 -> (3,4) int x = conv_pos_x(randPos); int y = conv_pos_y(randPos); if (arrayAnimal[x][y] == -1) { return randPos; } } return 0; } int conv_pos_x(int x) { // 19 -> (3,4) return x / 5; } int conv_pos_y(int y) { // 19 -> 19 / 5 ? 몫은 3, 나머지 4 return y % 5; // y를 5로 나눈 나머지 값 } void printAnimals() // 동물 위치 출력 { printf("\n===== 이건 비밀인데.. 몰래 보여줍니다===\n\n"); for (int i = 0; i < 4; i++) { for (int j = 0; j < 5; j++) { printf("%8s" , strAnimal[arrayAnimal[i][j]]); } printf("\n"); } printf("\n=======================================\n\n"); } void printQuestion() // 문제 출력 (카드 지도) { printf("\n\n(문제)\n"); int seq = 0; // seq // checkAnimal // □□□□□ 0 1 2 3 4 0 0 0 0 0 // □□□□ 하마 6 7 8 9 1 0 0 0 0 // □□□□□ 10 11 12 하마 14 0 0 0 1 0 // □□□□□ 15 16 17 18 19 0 0 0 0 0 for (int i = 0; i < 4; i++) { for (int j = 0; j < 5; j++) { // 카드를 뒤집어서 정답을 맞혔으면 '동물 이름' if (checkAnimal[i][j] != 0) { printf("%8s" , strAnimal[arrayAnimal[i][j]]); } // 아직 카드를 뒤집지 못했으면 (정답을 못맞혔으면) 뒷면 -> 위치를 나타내는 숫자 else { printf("%8d" , seq); } } } } int foundAllAnimals() { for (int i = 0; i < 4; i++) { for (int j = 0; j < 5; j++) { if (checkAnimal[i][j] == 0) { return 0; } } } return 1; // 모두 다 찾음 } 다음과 같이 작성했고, 컴파일시 에러는 뜨지 않지만 돌려볼 시 -------------------------------- Process exited after 3.839 seconds with return value 3221225725 계속하려면 아무 키나 누르십시오 . . .라고 나옵니다. 왜 이러는 걸까요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
캐시 제어 헤더 no-cache, must-revalidate
캐시 제어 헤더 no-cache, must-revalidate 를 사용해야 할 때 원 서버에 대한 접근이 있는데, 프록시 서버가 필수로 존재를 해야할까요? 프록시 서버가 없어도 된다면 no-cahce 에서의 원 서버 접근이 불가할때 프록시의 데이터를 줘서 200ok 를 내리는데, 프록시 서버가 없을때 해당 처리는 504로 되는것일까요?
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
오늘도 좋은 강의 감사합니다.
안녕하세요! 오늘도 좋은 강의 감사합니다.
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
tiny kitti 데이터로 MMDetection Train 실습 - 오류 문의드립니다.
안녕하세요. 강의 잘 듣고 있습니다. 감사합니다. train을 하려 했는데 (제가 따로 download한 coding file에 변경점을 준 것은 없습니다.) 'ConfigDict' object has no attribute 'device' 오류가 발생하여 문의드립니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
failed to lazily initialize a collection of role 에러 질문
강의를 들으면서 혼자 프로젝트를 진행중에 질문드립니다. Member 와 Post 가 1:N 양방향 관계에 있고 지연로딩으로 설정하였습니다. 아래는 postService 클래스의 post를 저장하는 메소드 입니다. public class PostService { private final PostRepository postRepository; @Transactional public Long createPost(Post post){ log.info("new post = "+post); postRepository.save(post); Post byId = postRepository.findById(post.getId()).get(); log.info("Member = " + byId.getMember()); log.info("MemberPosts = " + byId.getMember().getPosts()); return post.getId(); } 일단 post가 제대로 저장이 됩니다. 근데 위 코드의 log.info("memberPosts = " + byId.getMember.getPost()) 에서 failed to lazily initialize a collection of role 에러가 발생합니다. 해당 오류가 영속성 컨텍스트가 종료되어 지연로딩이 불가능 해서 나온 오류라고 하셨는데, createPost 메서드에 @Transactional 에노테이션을 붙혀놨는데도 영속성 컨텍스트가 종료되나요? 오류가 나는 로그 위의 byId.getMember() 의 로그는 정상출력이 되는데 여기서 member는 영속성 컨텍스트가 살아있어서 getMember.getPost()와는 다른 결과가 나온 것인가요? 해당 코드를 실행했을 때 로그입니다. 2022-05-30 23:32:58.015 INFO 35864 --- [nio-8080-exec-1] com.mytube.service.PostService : new post = Post(title=dwq, member=Member(id=1, userId=a, password=a, userEmail=a)) 2022-05-30 23:32:58.016 DEBUG 35864 --- [nio-8080-exec-1] org.hibernate.SQL : call next value for hibernate_sequence 2022-05-30 23:32:58.017 INFO 35864 --- [nio-8080-exec-1] com.mytube.service.PostService : Member = Member(id=1, userId=a, password=a, userEmail=a) 2022-05-30 23:32:58.017 INFO 35864 --- [nio-8080-exec-1] c.mytube.web.interceptor.LogInterceptor : RESPONSE [e95af4ef-3220-4391-bbae-7e6fb049c9d0][/posts/new] 2022-05-30 23:32:58.018 ERROR 35864 --- [nio-8080-exec-1] c.mytube.web.interceptor.LogInterceptor : afterCompletion error!! org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.mytube.domain.Member.posts, could not initialize proxy - no Session 그리고 문제가 되는 getMember.getPosts() 로그를 주석처리했을 때 로그입니다. 2022-05-30 23:35:19.862 INFO 39788 --- [nio-8080-exec-8] com.mytube.service.PostService : new post = Post(title=asd, member=Member(id=1, userId=a, password=a, userEmail=a)) 2022-05-30 23:35:19.869 DEBUG 39788 --- [nio-8080-exec-8] org.hibernate.SQL : call next value for hibernate_sequence 2022-05-30 23:35:19.873 INFO 39788 --- [nio-8080-exec-8] com.mytube.service.PostService : Member = Member(id=1, userId=a, password=a, userEmail=a) 2022-05-30 23:35:19.876 DEBUG 39788 --- [nio-8080-exec-8] org.hibernate.SQL : insert into posts (created_date, last_modified_date, created_by, last_modified_by, content, member_id, title, post_id) values (?, ?, ?, ?, ?, ?, ?, ?) 로그를 보니 post가 영속상태에 있어서 따로 select 쿼리가 나가지 않아도 Post byId = postRepository.findById(post.getId()).get(); 의 결과를 영속성 컨텍스트에서 가져오고 post의 member 또한 post가 영속상태에서 프록시 member가 아닌 실제 member를 가진것같습니다. 근데 member.getPost()는 왜 영속상태가 끝났다는 걸까요??
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
연관관계주인
연관관계주인이라는게 일대다 다대일에서 '양방향'관계에서 만 필요한거라고 이해하면될까요? 다른경우 단방향이나 일대일관계 등 에서는 필요가없고요