완전히 싹 다 지우고 환경변수도 이전으로 돌려놓고 재설치를 해야할까요 ㅠㅠ 선생님과 다른 점은 제껀 백슬래시 치기 힘들어서 원화로 쓴 것 밖에 없어요 ㅠㅠ Error in sys.which("make") : 함수 "sys. which"를 찾을 수 없습니다...라고 떠요.. 혹시 참고할만한 글이라도 있을까요 ㅠㅠ
[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
안녕하세요. 아래 코드에서 강의 중에 bestlists 변수안에 들어간 데이터들을 div.best-list 에서 가져왔는데 해당 클래스 명이 두개가 있어서 그 중 후자 이므로 bestlist[1] 로 한 것으로 알고 있습니다. 하지만 이 부분에서 아래와 같이 설정을 해주면 된다고 생각했는데 예상과 다르게 추출한 데이터들 위에 아래와 같이 공백이 몇줄 생겼는데 이유가 뭔지 알 수 있을까요?
안녕하세요 영환님! 최근에 우아한 토크 콘서트 영상을 보다가 하나 의문점이 있어서 질문드립니다. (영한님 영상도 재밌게 잘봤습니다ㅎㅎ) 이동욱님이 발표하신 영상 중 save시엔 연관관계에 있는 엔티티의 ID만 있으면 된다는 내용이 있었습니다. 지금까지는 save시에 연관관계에 있는 엔티티가 존재하면 해당 엔티티의 ID로 먼저 엔티티를 조회해오고 save를 할때 조회된 엔티티를 넘겨줬었는데요(아래와 같이) 영상에 나온 소스코드를 보니 아래와 같이 생성자에 직접 아이디를 넘겨주고 엔티티를 생성한 후 설정을 하더라구요(아래와 같이) 실제로 save시에 ID만으로 엔티티를 생성 후 저장을 해보니 이상없이 잘 저장은 됩니다. 근데 여기서 드는 의문이.. JPA는 DB 중심이 아닌 객체중심의 사고방식을 가지고 사용을 해야하고 PK(id) 또한 직접 설정하는게 아닌 repository 조회를 통하여 가져와야 된다고 알고 있었습니다. 그래서 엔티티 생성시에 setter는 만들지 않았고 id또한 절대 외부에서 값을 설정할 수 없게 해왔었는데요 저 영상을 보고 난 후 많이 혼란스럽네요ㅠㅠ 직접 id만으로 엔티티를 생성 후 save를 하자니 뭔가 예전의 레거시 코드를 작성하는것 같고(mybatis...) 아니면 상황에 따라 적절한 방법을 선택해서 사용을 해야 되는 걸까요..? 조언부탁드립니다! 감사합니다.
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
영상을 들으며 공부할 때 항상 잠시 멈춰두고 코드를 작성하고 영상을 듣곤 합니다. 그 과정에서 제가 생각했던 코드와 작은 차이가 생겨 질문드립니다. ProcessLobby() 나 ProcessTown() 코드를 작성하는 과정에서 _mode를 변경하는 부분은 이해했으나 모드만 변경해도 자동으로 다시 Process()가 돌아가지는 않을거라 생각하여 모드 변경 다음 줄에 Process(); 를 추가하여 작성했습니다. 그런데 강사님 영상에서는 그러한 과정 대신 while()문을 이용하여 반복시행하는 것으로 문제를 해결하는 과정을 봤습니다. 이번 강의 외에도 모든 강의에서 while(true) 문을 사용해서 코드를 작성하는 것을 보았는데 개발에 있어서 코드작성할 때 while() 안에서 작동되는 것을 고려하여 개발하는 것이 좋을까요?
java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:132) at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:123) at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:190) at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132) at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:244) at org.springframework.test.context.junit.jupiter.SpringExtension.postProcessTestInstance(SpringExtension.java:137) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeTestInstancePostProcessors$6(ClassBasedTestDescriptor.java:350) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.executeAndMaskThrowable(ClassBasedTestDescriptor.java:355) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeTestInstancePostProcessors$7(ClassBasedTestDescriptor.java:350) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:312) at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:735) at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:734) at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeTestInstancePostProcessors(ClassBasedTestDescriptor.java:349) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$instantiateAndPostProcessTestInstance$4(ClassBasedTestDescriptor.java:270) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.instantiateAndPostProcessTestInstance(ClassBasedTestDescriptor.java:269) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$2(ClassBasedTestDescriptor.java:259) at java.base/java.util.Optional.orElseGet(Optional.java:369) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$3(ClassBasedTestDescriptor.java:258) at org.junit.jupiter.engine.execution.TestInstancesProvider.getTestInstances(TestInstancesProvider.java:31) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$prepare$0(TestMethodTestDescriptor.java:101) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare(TestMethodTestDescriptor.java:100) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare(TestMethodTestDescriptor.java:65) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$prepare$1(NodeTestTask.java:111) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.prepare(NodeTestTask.java:111) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:79) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32) at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:96) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75) at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:71) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:220) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:53) Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'springDataJpaMemberRepository' defined in hello.hellospring.repository.SpringDataJpaMemberRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract void hello.hellospring.repository.MemberRepository.clearStore()! No property clearStore found for type Member! at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1788) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:609) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:531) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:925) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:923) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:588) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:767) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:426) at org.springframework.boot.SpringApplication.run(SpringApplication.java:326) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:122) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124) ... 67 more Caused by: java.lang.IllegalArgumentException: Failed to create query for method public abstract void hello.hellospring.repository.MemberRepository.clearStore()! No property clearStore found for type Member! at org.springframework.data.jpa.repository.query.PartTreeJpaQuery.<init>(PartTreeJpaQuery.java:96) at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:107) at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateIfNotFoundQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:218) at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:81) at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.lookupQuery(QueryExecutorMethodInterceptor.java:100) at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.lambda$mapMethodsToQuery$1(QueryExecutorMethodInterceptor.java:93) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133) at java.base/java.util.Collections$UnmodifiableCollection$1.forEachRemaining(Collections.java:1054) at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.mapMethodsToQuery(QueryExecutorMethodInterceptor.java:95) at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.lambda$new$0(QueryExecutorMethodInterceptor.java:85) at java.base/java.util.Optional.map(Optional.java:265) at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.<init>(QueryExecutorMethodInterceptor.java:85) at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:303) at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.lambda$afterPropertiesSet$6(RepositoryFactoryBeanSupport.java:326) at org.springframework.data.util.Lazy.getNullable(Lazy.java:230) at org.springframework.data.util.Lazy.get(Lazy.java:114) at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:329) at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:144) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1847) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1784) ... 83 more Caused by: org.springframework.data.mapping.PropertyReferenceException: No property clearStore found for type Member! at org.springframework.data.mapping.PropertyPath.<init>(PropertyPath.java:90) at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:437) at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:413) at org.springframework.data.mapping.PropertyPath.lambda$from$0(PropertyPath.java:366) at java.base/java.util.concurrent.ConcurrentMap.computeIfAbsent(ConcurrentMap.java:330) at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:348) at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:331) at org.springframework.data.repository.query.parser.Part.<init>(Part.java:81) at org.springframework.data.repository.query.parser.PartTree$OrPart.lambda$new$0(PartTree.java:249) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177) at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) at org.springframework.data.repository.query.parser.PartTree$OrPart.<init>(PartTree.java:250) at org.springframework.data.repository.query.parser.PartTree$Predicate.lambda$new$0(PartTree.java:383) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177) at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) at org.springframework.data.repository.query.parser.PartTree$Predicate.<init>(PartTree.java:384) at org.springframework.data.repository.query.parser.PartTree.<init>(PartTree.java:92) at org.springframework.data.jpa.repository.query.PartTreeJpaQuery.<init>(PartTreeJpaQuery.java:89) ... 109 more 도대체 이유를 모르겠습니다 ㅠㅠ 그전까지는 다 잘됐습니다. jpaMemberRepository 생성후 테스트부터 오류가 나네요
선생님 안녕하세요. 이번에 강의를 모두 수강하고 직접 앱개발을 하던 중 궁금증이 생겨 질문을 남깁니다. 1. 스토리 보드를 사용하지 않고 코딩하는 방법에 대해서 궁금합니다. 2. 디바이스 크기별 대응을 어떻게 하는 것인지 궁금합니다. 강의 내용을 바탕으로 문서도 찾아보고 여러 블로그 글도 보고 있는데 자료도 많지 않고 전혀 감이 안 잡힙니다. 혼자서 학습하기 쉽지 않네요. 답변 부탁드립니다. 늘 좋은 강의 감사합니다.
int main (){ freopen ( "input.txt" , "rt" , stdin ); int n , k , sum = 0 , max = 0 ; std :: vector < int > temp ( n ); //Create int type vector with the size of 'n', initialize it as 0 scanf ( "%d %d" , & n , & k ); for ( int i = 0 ; i < n ; ++ i ){ //Storing input values in the integer array scanf ( "%d" , & temp [ i ] ); } //Increment the sum of first mth numbers in a vector for ( int i = 0 ; i < k ; ++ i ){ sum += temp [ i ] ; } max = sum ; //Then from mth number use special formula to calculate the sum of adjacent numbers for ( int i = k ; i < n ; ++ i ){ sum = sum + ( temp [ i ] - temp [ i - k ] ); if ( sum > max ) max = sum ; } printf ( "%d" , max ); return 0 ; } 선생님이 주신 소스코드랑 변수명만 다르고 똑같이 한거같은데 이걸로 돌리면 std::bad_alloc 힙메모리가 터졌다는 에러가 뜨면서 실행이 안되더라구요... 정답코드는 잘 돌아갑니다! 혹시 제 코드랑 선생님 소스코드랑 다른점이 무엇인지 알 수 있을까요?
title = li.select("a.api_txt_lines")[0].text href = li.select("a.api_txt_lines")[0]["href"] summary = li.select("a.total_dsc > div.api_txt_lines")[0].text results.append((title, href, summary, "")) 1.올려주신 이 코드에서 title을 얻기위해 select할 때에 a.api_txt_lines이렇게 되있는데 제가 개발자도구를 보니 title을 가지고 있는 a태그의 클래스명은 api_txt_lines total_tit이렇게 되있던데 차이가 있는 건가요? 2.코드를 보면 summary는 클래스명이 total_dsc인 a태그의 자식태그인 클래스명이 api_txt_lines div태그에 접근하여 정보를 얻었다고 생각했습니다. 근데 여기서 a태그는 <div class="total_group">밑에있는 <div class="total_dsc_wrap> 태그에 속해있던데 이 두 태그는 왜 select할때 넣지 않은 건가요? li.select("div.total_group > div.total_dsc_wrap > a >div.api_txt_lines") 이렇게 해야하는 것이 아니라면 위의 a태그도 생략하고 그냥 li.select("div.api_txt_lines") 이렇게 해도 상관없지 않나요?
올려주신 강의 자료 pdf 파일의 문제 AddTwoNumbers를 보면 input을 입력한 순서 그대로 쓰는 게 아니라, 역순으로 사용하고 있습니다. 따라서 강의의 output 결과와도 다른데, 의도하신 건지 궁금합니다. 강의 자료대로 역순으로 문제를 해결하려면 어떤 식으로 접근하는 게 좋을지도 궁금합니다.
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
이번 코드에서 player나 monster 생성자 옆에 :base(Creature type) 을 써주는 이유가 무엇인가요? 플레이어의 경우에는 플레이어의 생성자의 내용을 그대로 자식이 쓰게 하기 위해서 :base(PlayerType.직업) 이런 식으로 해줬던것 같은데 플레이어의 상속자에는 왜 부모인 크리쳐의 상속자를 붙여준 것인지 알고 싶습니다. java에서 부모의 생성자를 반드시 생성해야 해서 super() 등을 사용하던 것과 비슷한 이유로 자식 클래스 생성자에 부모 생성자를 붙여줘야 하는 건가요? 오크를 생성한다고 치면 몬스터의 생성까지는 마쳐졌지만 크리쳐의 생성자를 안 붙이면 그 부모인 크리쳐에서 타입이 정해지지 않아서 오류가 생긴다는 등에 문제가 생기는 걸까요?