묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
OrderServiceTest 중 상품주문, 주문취소 메서드에서 오류가 납니다.
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. 지금 강의 내용과 동일하게 OrderServiceTest 진행중인데 아래와 같은 오류 때문에 진행이 되지 않고 있습니다 ㅠㅠ org.springframework.orm.jpa.JpaSystemException: Unknown integral data type for ids : java.lang.String; nested exception is org.hibernate.id.IdentifierGenerationException: Unknown integral data type for ids : java.lang.String 위의 오류대로라면 Order 엔티티에서 Id 매핑이 Long타입이 아닌 다른 것으로 돼있다고 하는 거 같은데 아래는 Order 엔티티 코드입니다. package jpabook.jpashop.domain;import lombok.Getter;import lombok.Setter;import javax.persistence.*;import java.time.LocalDateTime;import java.util.ArrayList;import java.util.List;@Entity@Table(name = "orders")@Getter @Setterpublic class Order { @Id @GeneratedValue @Column(name = "order_id") private Long id; //연관관계 주인 @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id") //fk 설정 private Member member; @OneToMany(mappedBy = "order", cascade = CascadeType.ALL) //order 저장 후 orderItem 자동으로 persist private List<OrderItem> orderItems = new ArrayList<>(); @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JoinColumn(name = "delivery_id") private Delivery delivery; private LocalDateTime orderDate; //주문시간 @Enumerated(EnumType.STRING) private OrderStatus status; //주문상태-enum type [ORDER, CANCEL] //==연관관계 편의 메서드==// /** * 양방향 연관관계 세팅 - control 하는 쪽에 작성 */ public void setMember(Member member) { this.member = member; member.getOrders().add(this); } public void addOrderItem(OrderItem orderItem) { orderItems.add(orderItem); orderItem.setOrder(this); } public void setDelivery(Delivery delivery) { this.delivery = delivery; delivery.setOrder(this); } //==생성 메서드==// -> 주문 생성은 다 여기서만. public static Order createOrder(Member member, Delivery delivery, OrderItem... orderItems) { Order order = new Order(); order.setMember(member); order.setDelivery(delivery); for (OrderItem orderItem : orderItems) { order.addOrderItem(orderItem); } order.setStatus(OrderStatus.ORDER); order.setOrderDate(LocalDateTime.now()); return order; } //==비즈니스 로직==// /** * 주문 취소 */ public void cancel() { if (delivery.getStatus() == DelieveryStatus.COMP) { throw new IllegalStateException("이미 배송완료된 상품은 취소가 불가능합니다."); } this.setStatus(OrderStatus.CANCEl); for (OrderItem orderItem : orderItems) { orderItem.cancel(); } } //==조회 로직==// /** * 전체 주문 가격 조회 */ public int getTotalPrice() { int totalPrice = 0; for (OrderItem orderItem : orderItems) { totalPrice += orderItem.getTotalPrice(); } return totalPrice; }} 위의 코드대로라면 저런 에러가 발생하면 안되는 거 아닌가요...ㅠㅠ 에러 전문은 아래와 같습니다. org.springframework.orm.jpa.JpaSystemException: Unknown integral data type for ids : java.lang.String; nested exception is org.hibernate.id.IdentifierGenerationException: Unknown integral data type for ids : java.lang.String at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:331) at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:233) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551) at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:698) at jpabook.jpashop.repository.OrderRepository$$EnhancerBySpringCGLIB$$b0700303.save(<generated>) at jpabook.jpashop.service.OrderService.order(OrderService.java:45) at jpabook.jpashop.service.OrderService$$FastClassBySpringCGLIB$$ad373727.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:783) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:698) at jpabook.jpashop.service.OrderService$$EnhancerBySpringCGLIB$$e8f1bf9d.order(<generated>) at jpabook.jpashop.service.OrderServiceTest.상품주문(OrderServiceTest.java:40) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:74) at org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:84) at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75) at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86) at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54) Caused by: org.hibernate.id.IdentifierGenerationException: Unknown integral data type for ids : java.lang.String at org.hibernate.id.IdentifierGeneratorHelper.getIntegralDataTypeHolder(IdentifierGeneratorHelper.java:224) at org.hibernate.id.enhanced.SequenceStructure$1.getNextValue(SequenceStructure.java:98) at org.hibernate.id.enhanced.NoopOptimizer.generate(NoopOptimizer.java:40) at org.hibernate.id.enhanced.SequenceStyleGenerator.generate(SequenceStyleGenerator.java:525) at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:115) at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:185) at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:128) at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:118) at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:798) at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:766) at org.hibernate.engine.spi.CascadingActions$7.cascade(CascadingActions.java:298) at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:510) at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:434) at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:220) at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:153) at org.hibernate.event.internal.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:427) at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:264) at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:193) at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:135) at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:185) at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:128) at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:55) at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:107) at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:774) at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:760) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:311) at com.sun.proxy.$Proxy113.persist(Unknown Source) at jpabook.jpashop.repository.OrderRepository.save(OrderRepository.java:16) at jpabook.jpashop.repository.OrderRepository$$FastClassBySpringCGLIB$$9808961b.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:783) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ... 49 more
-
미해결프론트엔드 개발자를 위한, 실전 웹 성능 최적화(feat. React) - Part. 1
lazy, React.lazy
lazy() 와 React.lazy() 의 차이점이 확실하게 구분되지 않는데 각각 언제 사용할 수 있는건지 알 수 있을까요?
-
미해결정말 쉽게 풀어보는 코딩 테스트 top 기본 문제 (with 자바)
나선형매트릭스 깃허브에 코드가 없는것같아요
나선형매트릭스 깃허브에 코드가 없는것같아요
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
회원등록 강의 진행 도중 오류가 생겼습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 강의 5분쯤에 회원 등록을 눌렀을 때 화면입니다. createMemberForm.html 을 계속 불러오지를 못해서 문의 드립니다. https://www.inflearn.com/questions/116313 여기에 작성된 글도 봤지만 해결이 안됐습니다. https://github.com/lee-ji-hoon/Spring_12-30 제가 현재 작성 중인 코드이며, 원래는 private로 저장하고 있었는데 잠시 코드 올리기 위해서 public으로 해서 링크 남깁니다. 링크는 cmd 클릭 했을 때 정상적이로 이동이 됩니다,
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
M0 클러스터는 한 계정당 하나밖에 생성을 못하는건가요?
전에 몽고디비를 사용한 적 이 있어서, 클러스터가 하나 생성되있는 상태인데, Create 클러스터를 눌렀을때 M10 부터 시작하더라구요. 혹시 M0 클러스터는 계정당 하나만 생성이 가능한건가요?
-
미해결프론트엔드 개발환경의 이해와 실습 (webpack, babel, eslint..)
npx 명령어
강의 중에 npx lite-server을 터미널에 입력하셨는데 혹시 npx와 npm의 차이점을 알 수 있을까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
비어있는 new BookForm() 넘기기
항상 강의 잘 듣고 있습니다 감사합니다. 다름이 아니라 ItemController에서 createForm의 Get메서드 에서 model.addAttribute로 "form" 변수에 텅 빈 new BookForm객체를 넘기는 이유는 무엇일까요? 화면에서 "form" 변수를 가져다 쓰는 코드가 있으므로 null을 방지하는 용도일까요? 미리 감사드립니다!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
실무에서는 어떤지 궁금합니다.
정말 재밌게 강의를 듣고있는 주니어 개발자입니다... 강의를 보면서 궁금한 점이 생겨서 질문드립니다. 1. 로그인 강의 내용을 보면 웹과 도메인 패키지가 분리되어있는데 레이어드 계층에서는 로그인을 하는 도메인 로직은 단순히 아이디, 비밀번호 체크만 하는걸까요? 그 이후 세션을 부여하고 체크하는 과정은 표현 계층에서 서비스를 따로 만들고 관리하는건가요? 도메인쪽에서 처리를 한다고 하면 servletrequest, response를 도메인까지 받아 내려와 처리를 해야하는걸까요?? 어떤것이 맞는지 모르겠습니다. 그리고 @RestController api 응답 같은 경우 DTO를 통해서 json 값으로 보내는데요 @Controller에서도 로그인 처리 이후 멤버객체를 뷰에 보낼 때는 DTO를 사용하는게 바람직한건가요? 2. 타임리프 필드에러나 글로벌에러 같은 경우에는 타임리프를 통해 메시지를 쉽게 전달하는 것을 확인했는데요. 리액트나 뷰같은 프론트엔드가 따로 분리되어 있는 경우 실무에선 API 규격에 맞게 에러메시지를 보내서 프론트쪽에서 메시지를 띄우는건가요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
세션에도 CreateIoCompletionPort를 해주는 이유가 뭔가요?
bool IocpCore::Register(IocpObjectRef iocpObject) { return ::CreateIoCompletionPort(iocpObject->GetHandle(), _iocpHandle, /*key*/0, 0); } Listener의 StartAccept 에서 이미 GetIocpCore()->Register를 통해 CP에 지정을 하는데 RegisterAccept()의 CreateSession()에서 iocpCore->Register(session)를 통해 또 한번 CP에 지정해주는 의미가 있나요?? 제가 봐온 다른 예제들에선 CreateIoCompletionPort는 전 프로그램 통틀어서 딱 2번(생성, 연결)만 있었거든요
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
카테고리 구현 관련 질문입니다.
안녕하세요. JPA 실전1 강의를 완강 후, 개인적으로 공부해 보고 있는 jpa초보 학생입니다. 홈페이지 관리자가 직접 카테고리를 추가/삭제할 수 있는 페이지를 구현하고 있는데, 개발 방향이 맞는지에 대해 의문점이 생겨 질문을 남기게 되었습니다. 카테고리를 추가하는 경우, view에서 부모 카테고리가 있는 경우 controller로 부모의 카테고리 form과 새로 생성할 자식 카테고리 명을 전달해 자식 카테고리를 생성할 목적으로 개발했습니다. 강의와 동일하게 Categories vo를 설계했고, Service 로직에 의문이 생깁니다. 클래스 정보는 아래 사진으로 첨부했습니다. 1. category 2. repository 3. service 4. categoryAdd test 시간 내주셔서 감사합니다.
-
미해결Vue.js + TypeScript 완벽 가이드
권한요청드립니다.
github : JaegyuJeong inflearn : h923313@gmail.com
-
미해결Vue.js + TypeScript 완벽 가이드
깃헙 권한요청드립니다!
안녕하세요! 이전에 글 올렸었는데 확인 못하신거 같아 재작성 합니다 ㅠㅠ 깃허브 권한요청드립니다. github 계정 : kih7485 korea4127@gmail.com 강의 잘 듣고 있습니다^^ 새해 복 많이 받으세요!
-
미해결메타스플로잇(Metasploit) 활용한 취약점 분석(초중급과정)
XP 실습 이미지 질문
안녕하세요. 강의에서 실습환경 구축 시 IE8 on XP를 사용한다고 하는데 어디서 받으면 될까요?? 구글 드라이브 링크 클릭하니 액세가 거부되었다고 하네용
-
미해결[No개발, No코딩] 개발자 없이 MBTI 테스트 만드는 법
결과 확인에서 질문이 있습니다!
안녕하세요:) 강의 너무 잘 들었습니다. 마지막에 각 MBTI 별로 몇 분이나 선택했는지 알고 싶은데 타입폼에서는 -2837와 같이 숫자만 확인할 수 있어서 어떤 방법으로 산출할 수 있는지 궁금합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
간단한 질문이 있습니다.
addForm 에서 submit 를 누르면 form action 을 타는데 여긴 method 가 post 만 있습니다. 그렇게 되면 post 방식으로 기존 url 을 그대로 수행해서 컨트롤러의 post 방식의 해당 url을 찾는 건가요??? 기존 소스와 는 좀 달라서요 form 소스 <form action="item.html" th:object="${item}" th:action method="post"> spring mvc1 소스 <form action="item.html" th:action="@{/basic/items/add}" method="post">
-
해결됨코딩은 실전이다! - Git알못을 위한 깃린이코스(Git, Github 실습위주)
슬랙 초대 부탁드려용
강의 잘 들었습니다. seong7517@gmail.com 초대 부탁드리겠습니다.
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
antDesign Warning
앤트디자인 사용 하니까 이런 경고 가 뜨는데 이건 왜뜨는 걸까요? react에서 사용할땐 이런거 없었는데 왜 이런건가요? 새로고침 할때마다 나타납니다. 에게 도움이 되는 질문과 도움이 되지 않는 질문이 있습니다.도움이 되는 질문을 하는 방법을 알려드립니다.https://www.youtube.com/watch?v=PUKOWrOuC0c0. 숫자 0부터 시작한 이유는 1보다 더 중요한 것이기 때문입니다. 에러가 났을 때 해결을 하는 게 중요한 게 아닙니다. 왜 여러분은 해결을 못 하고 저는 해결을 하는지, 어디서 힌트를 얻은 것이고 어떻게 해결한 건지 그걸 알아가셔야 합니다. 그렇지 못한 질문은 무의미한 질문입니다.1. 에러 메시지를 올리기 전에 반드시 스스로 번역을 해야 합니다. 번역기 요즘 잘 되어 있습니다. 에러 메시지가 에러 해결 단서의 90%를 차지합니다. 한글로 번역만 해도 대부분 풀립니다. 그냥 에러메시지를 올리고(심지어 안 올리는 분도 있습니다. 저는 독심술사가 아닙니다) 해결해달라고 하시면 아무런 도움이 안 됩니다.2. 에러 메시지를 잘라서 올리지 않아야 합니다. 입문자일수록 에러메시지에서 어떤 부분이 가장 중요한 부분인지 모르실 겁니다. 그러니 통째로 올리셔야 합니다.3. 코드도 같이 올려주세요. 다만 코드 전체를 다 올리거나, 깃헙 주소만 띡 던지지는 마세요. 여러분이 "가장" 의심스럽다고 생각하는 코드를 올려주세요.4. 이 강좌를 바탕으로 여러분이 응용을 해보다가 막히는 부분, 여러 개의 선택지 중에서 조언이 필요한 부분, 제 경험이 궁금한 부분에 대한 질문은 대환영입니다. 다만 여러분의 회사 일은 질문하지 마세요.5. 강좌 하나 끝날 때마다 남의 질문들을 읽어보세요. 여러분이 곧 만나게 될 에러들입니다.6. 위에 적은 내용을 명심하지 않으시면 백날 강좌를 봐도(제 강좌가 아니더라도) 실력이 늘지 않고 그냥 코딩쇼 관람 및 한컴타자연습을 한 셈이 될 겁니다.
-
미해결WEB2 - Node.js
pm2가 잘 안돌아갑니다 ㅠㅠ
https://opentutorials.org/module/3549/22110 보충수업까지 들어봤지만... 잘 안되네요 예를 들어 파일 수정하고 웹 페이지 새로고침을 해도 바뀐 부분이 없는 경우도 허다하고 삭제같은 경우도 위에 title 태그 옆에서 빙글빙글 돌기만 하고 수행이 되지 않습니다
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
이중포인터로 해결 불가능하다 하셨는데
처음에는 고민하다가 공격대상을 공격하기 직전에 대상을 확인하고 공격하는으로 해결했습니다만 (delete 코드 이후에 포인터를 받아서 썻습니다) 나중에 코드 추가등으로 인해 지금은 직전에 대상을 확인한다고 해도 그 사이에 대상 객체가 delete될수도 있겠다 싶어서 좀더 범용적인 해결방법을 위해 이중포인터로 해결을 했습니다. 전체 코드가 너무 긴 듯해 기본적으로 _target을 Player**로 들고있고 _target을 사용하는부분을 모두 (*_target)으로 수정했습니다. *Exercise_A.cpp Arrow 생성되는 구문 Arrow* arrow = new Arrow(reinterpret_cast<Player**>(&knight), archer->_attack); 이 방법이 조금 더 범용적이라 생각했던 이유는 delete를 했을때 자신이 가지고있는 포인터는 nullptr로 바꿀 수 있으나 이걸 복사해 간 다른 포인터 변수들은 초기화 되지 않기 해당 포인터 자체를 가르키는 이중포인터로 해결하면 된다 생각했습니다. 이때 포인터를 하나를 두고 해당 포인터를 참조하려고하는 모든 이중포인터는 해당 포인터를 가리키게 한 뒤 nullptr체크를 한다면 해결 가능하다 생각했는데 혹시 어떠한 경우에 문제가 발생하게 되는지 궁금합니다. 만약 이중포인터로 해결이 불가능하다면 결국 어떤 객체의 포인터는 해당 객체를 delete하는곳에서만 관리를 하고 다른곳에서는 포인터를 가져가는게 아니라 해당 객체를 관리하는곳에 말씀하시느 ID등을 이용해서 객체 접근을 시도하는것이 안전한 방법이다 라고 생각했습니다! 이 부분도 혹시 틀린부분이 있으면 지적해주시면 감사하겠습니다. 앗 추가로 이걸 고치면서 static_cast는 이중포인터는 허락 안해준다는걸 알게됬네요!
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
문제 4번 질문입니다.
문제는 금방찾았는데 어떻게 고쳐야할지가 고민이더라고요. 오버플로우 문제인데 체력이 회복하는 포션이 생겼는데 최대체력을 만들어도 되는지, 한번 회복량에 제한은 있는지 확실하지 않아 일단 _hp를 __int64로 바꿨습니다. 생각하보면 코드가 문제라기보다는 과도한 테스트가 문제인거 같아보이는데요. 만약 실제 현업에서 너무 오버한 테스트로인한 오버플로우라면 코드를 고치기보다는 해당 테스트를 수정하는편인가요?