묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
퀴즈다시풀기
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]퀴즈들을 다시 풀어보고 싶은데 한번 풀면 정답이 공개돼 불편함이 있습니다.방법이 따로 없나요?
-
미해결김영한의 실전 자바 - 중급 1편
TemporalAdjusters의 lastDayOfNextMonth(), lastDayOfNextYear() 메서드 지원 안함
안녕하세요.ppt에 나와 있는 TemporalAdjusters 클래스가 제공하는 주요 기능표에 있는 lastDayOfNextMonth(), lastDayOfNextYear() 메서드는 존재하지 않는 듯 합니다.
-
미해결김영한의 실전 자바 - 기본편
캡슐화 문제풀이 ShoppingCart 요구사항에 문제가 있어보입니다. 피드백 주세요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.쇼핑카트 문제 요구사항이 명확하지 않아서 혼돈을 준다고 생각합니다.-상품을 최대 10개만 담을 수 있다.라는 것을 저는 상품의 '개수'(quantity 총 합) 를 생각했으나,문제 풀이하시는 것을 보니 상품의 '종류'가 총 10개 더군요. 둘의 풀이는 완전히 달라지기에, 더 명확히 해야한다고 봅니다.
-
해결됨누구보다 빠르게 배우는 코틀린 (1시간)
섹션 5 부터 사운드가 안 들려요.
안녕하세요.저만 그러진 않을 것 같은데 이상하네요.아래 영상을 시청하는데 사운드가 들리지 않습니다.섹션 5. 흐름을 제어하는 조건문9. 조건문 핵심 개념 혹시나 해서이후 영상들도 모두 시청해봤는데 모두 사운드가 들리지 않네요.
-
미해결김영한의 실전 자바 - 중급 1편
오타 제보도 되나요?
강의 자료 42페이지에 "날짜와 시간" 포매팅으로 되어있는데 날짜만 포매팅이 아닌가 합니다
-
해결됨C개발자를 위한 최소한의 C++
네임스페이스 스코프 내에서 정의된 변수, 함수들이 위치하는 곳 질문
안녕하세요! 질 좋은 강의에 감사인사부터 드립니다!해당 강의에서 네임스페이스 내부에 정의되는 변수, 함수들이 비록 특정(강의 속에서는 Test 라는) 네임스페이스에 소속되어 있기는 하지만 전역 변수 및 전역 함수로 간주된다고 하셨는데요! 그러면 디폴트로 제공되는 네임스페이스(ex. std) 또는 사용자가 새롭게 정의하는 네임스페이스 영역 내에서 정의되는 변수, 함수들은 스택과 힙 메모리 중 힙 메모리 영역에 저장되는 걸까요!?
-
해결됨3일 만에 끝내는 백엔드 면접 핵심 압축 공략집 [네카라쿠배당토]
강의내용 질문있습니다.
13:27초에 5단계로 나누어서문제 - 선택지 - 결정 - 구현 - 결과를 이력서에 적으라고하셨는데, 저의 이력서 같은 경우는 아래와 같이 적어두었습니다.프로젝트 개요 - 담당업무 - 성과 이런식으로 적는건 별로일까요??
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
Future4-이유 질문
1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요.Future를 거치는 SumTaskMainV2에서 future2.get()이 future1.get() 실행 후 task1의 call() 완료를 기다리지 않고 바로 실행되는 것을 콘솔 로그로 확인 가능했는데요.그렇다면 Future를 거치지 않고 결과를 반환한다 가정할 때, task2가 task1 완료를 기다린 후 수행된다고 나와있는데, "Future는 한 스레드 작업의 future1.get() 실행 후, 다른 스레드의 작업 future2.get()은 future1의 call() 완료까지 기다리지 않는 기능이 있다"이렇게 이해해도 될까요?
-
해결됨3. [노베이스/입문] 기초 C++ 스파르타 클래스
한글을 너무 많이 쓰시는것 같아요ㅠ
한글이 너무 과도하게 많이 사용되는것 같아요 강사님...ㅠ 처음에는 한글로 묘사해서 이해에 도움이 되는 부분도 있지만, 어떤 부분은 너무 헷갈리는 부분도 발생하는것 같아요..
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
네트워크 프로그램 자원종료 Socket 정리 시 closed 사용 문의
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]네트워크 프로그램 자원종료 관련 이해가 안되는 부분이 있어서 문의드립니다.[SessionManagerV6] public synchronized void closeAll() { for (SessionV6 session : sessions) { session.close(); } sessions.clear(); } [SessionV6] // 세션 종료시, 서버 종료시 동시에 호출될 수 있다. public synchronized void close() { System.out.println("closed : " + closed); System.out.println(Thread.currentThread().getName()); if (closed) { return; } closeAll(socket, input, output); // shutdown closed = true; log("연결 종료: " + socket); }서버에서 ShutdownHook이 발생했을 때 2개의 Client에 Socket이 연결되어 있었다고하면첫번째 Clinet의 Socket이 정리되고 난 후 2번째 Clinet의 Socket이 정리되는 시점에서는 closed 변수가 true이기 때문에 정리가 안되고 return되는거 아닌가요? 제가 잘 못 이해하고 있는걸까요? 추가적으로 로그를 찍어서 상태값을 확인해 봤는데 이해가 잘 되지 않아서 문의드립니다. 아래는 로그 정보입니다. 17:34:32.806 [ shutdown] shutdownHook 실행 closed : false shutdown 17:34:32.806 [ shutdown] 연결 종료: Socket[addr=/127.0.0.1,port=58474,localport=12345] closed : false shutdown 17:34:32.806 [ shutdown] 연결 종료: Socket[addr=/127.0.0.1,port=58480,localport=12345] 17:34:32.807 [ Thread-2] java.net.SocketException: Socket closed closed : true Thread-2 17:34:32.807 [ Thread-3] java.net.SocketException: Socket closed closed : true Thread-3 17:34:32.807 [ main] 서버 소켓 종료: java.net.SocketException: Socket closed 종료 코드 130 (interrupted by signal 2:SIGINT)(으)로 완료된 프로세스
-
미해결스프링 핵심 원리 - 기본편
Gradle로 바꿔도 오류가 똑같이 발생하네요 ㅠㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.관련 내용이 많아서 질문 검색으로 3~4가지 방식으로 시도해봤는데 gradle만 바꾸는 방식에서 실패했습니다.@Primary 사용, CoreApplicationTests에 따로 classes = AutoConfig.class 옵션넣기 요땐 성공하더라고요유료 intellij 사용하고 있고 자바 21 사용하고 있습니다. 17로 바꿔봐도 별 상관이 없더라고요 java.lang.IllegalStateException: Failed to load ApplicationContext for [MergedContextConfiguration@65b97f47 testClass = hello.core.CoreApplicationTests, locations = [], classes = [hello.core.CoreApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.OnFailureConditionReportContextCustomizerFactoryCaused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'orderServiceImpl' defined in file [C:\Users\hyukj\Downloads\core\core\build\classes\java\main\hello\core\order\OrderServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 1: No qualifying bean of type 'hello.core.discount.DiscountPolicy' available: expected single matching bean but found 2: rateDiscountPolicy,DiscountPolicyCaused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'hello.core.discount.DiscountPolicy' available: expected single matching bean but found 2: rateDiscountPolicy,DiscountPolicy
-
해결됨초심자를 위한 친절한 Java 한바퀴
소스코드 다운받을 수 있나요?
완강했습니다! 좋은 강의 감사합니다.소스코드 혹시 깃헙 등에서 제공이 가능한지궁금합니다.
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
FileInputStream의 transferTo 사용 시 Buffer 문의
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]FileInputStream의 transferTo를 사용할 경우 buffer는 어떻게 설정되는 건가요?웹 검색을 해보니 개발자가 직접 버퍼를 설정할 필요가 없다고 하는데 기본적인 버퍼의 크기가 정해져 있는건지? 만약 정해져 있다면 어떤 기준을 따라가는지 궁금합니다. 파일처리 시 자바의 메모리를 사용해야하고 이 부분을 잘 처리하지 못할 경우 OOM으로 이어지는 경우가 많아서 정확히 이해하고 싶어서 문의드립니다.
-
미해결스프링 핵심 원리 - 기본편
"중복 등록과 충돌" 강의에서 강사님과 다른 에러가 발생합니다.
spring.main.allow-bean-definition-overriding=true07:05~ 부분에서 위 코드를 작성하면 스프링 부트 애플리케이션을 에러가 발생하지 않는 모습을 보여주셨는데요.20:53:29.311 [main] DEBUG o.s.b.d.LoggingFailureAnalysisReporter --Application failed to start due to an exception org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'drj9812.spring.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,memberRepository at org.springframework.beans.factory.config.DependencyDescriptor.resolveNotUnique(DependencyDescriptor.java:192) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1739) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1651) at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:912) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:240) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1382) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1221) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:565) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:525) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:333) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:371) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:331) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:196) at org.springframework.beans.factory.support.DefaultListableBeanFactory.instantiateSingleton(DefaultListableBeanFactory.java:1218) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingleton(DefaultListableBeanFactory.java:1184) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:1121) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:983) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:620) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:765) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:454) at org.springframework.boot.SpringApplication.run(SpringApplication.java:321) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1374) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1363) at drj9812.spring.Application.main(Application.java:10) 20:53:29.311 [main] ERROR o.s.b.d.LoggingFailureAnalysisReporter -- *************************** APPLICATION FAILED TO START *************************** Description: Parameter 0 of constructor in drj9812.spring.member.MemberServiceImpl required a single bean, but 2 were found: - memoryMemberRepository: defined by method 'memberRepository' in class path resource [drj9812/spring/AutoAppConfig.class] - memberRepository: defined by method 'memberRepository' in class path resource [drj9812/spring/AppConfig.class] This may be due to missing parameter name information Action: Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumed Ensure that your compiler is configured to use the '-parameters' flag. You may need to update both your build tool settings as well as your IDE. (See https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-6.1-Release-Notes#parameter-name-retention)저의 경우엔 위와 같은 에러가 발생합니다.강사님과 다르게 저는 에러가 발생한 이유가 무엇인가요?로그 내용을 보아 AutoAppConfig과 AppConfig이 충돌이 난 것 같은데, 이미 AutoAppConfig에서 excludeFilters로 AppConfig은 스캔하지 않도록 설정했으니 에러가 발생하지 않아야 되는 거 아닌가요?
-
미해결Readable Code: 읽기 좋은 코드를 작성하는 사고법
DIP 개념에 대한 질문입니다.
DIP라는 개념을 상위수준의 모듈에서 하위수준을 의존해서는 안된다는 정의에 대한 설명에서 질문드립니다. 이때 의존성의 순방향이란, 자바로 따지면 상위 객체에서 하위 객체를 생성하여 활용하는 정도로 이해했습니다. 이떄 저수준의 모듈이 변경된다는게 메소드 단위의 개념인지 객체의 구현체 단위의 개념인지 정확히 모르겠습니다. 메소드라면, 저수준의 모듈이 변경된다는게 사실 메소드 시그니처가 변경되면 문제가 되겠습니다만, 안에 구현이 바뀐다고 해서 상위 모듈에서 하위 모듈의 메소드를 호출할 때 영향이 간다는 생각이 들지 않았습니다.구현체라면, 런타임 시점에 구현체가 결정되고/ 실행되기 때문에 이를 담는 추상 객체로 코딩된 고수준의 모듈에는 변화가 없다고보면 되는건지요..? 결국 주입되는 구현체의 변경에 유연하다는 정도로 보면될까요?
-
미해결스프링 핵심 원리 - 기본편
도메인의 정의?
[질문 템플릿][질문 내용]수업 시간에 도메인:비즈니스 도메인 객체라고 설명해주셨는데 , 그러면 주문 도메인이면 주문 영역에 대한 객체들을 명시하는걸까요. 강의 내에서 보면 단순 객체뿐만아니라 그냥 주문과 관련된 모든 것을 말하는 것 같아서요. 이 도메인 이란 개념이 너무 헷갈립니다;;
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
for, while문 작성
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]입문 > 반복문을 공부하고 있는 학생입니다. for, while문에 대해 1번 2번 문제와 풀이를 하는 중인데요, 답안을 보니 int num, int count라는 변수를 각각 사용했더라구요. 그런데 저는 num선언을 통해서만 작성했는데. 보통 반복문의 경우 count라는 변수를 별개로 선언하여 반복하는 횟수를 잡아 개발하는지 문의드립니다. 참고로 제가 작성한 코드는 아래와 같습니다. /* for(int count = 1; count<=10; count++){ System.out.println(count); } int count1 = 1; while (count1<=10){ System.out.println(count1); count1++; } */ int num = 2; while (num<=20){ System.out.println(num); num = num+2; } for(int num1=2; num1<=20; num1=num1+2){ System.out.println(num1); //num1++; }
-
해결됨3. [노베이스/입문] 기초 C++ 스파르타 클래스
setprecision명령어 질문
float test = 123.4567; cout << setprecision(20);가 에러나는데 setprecision가 <iomanip>에 정의된 입출력 조정자라는 것이라고 합니다. 그렇다면 #include <iomanip>라는 명령어를 추가해야 동작하는데 강의 영상에서는 해당 명령어 없이 코드가 잘 작동합니다. 이에 관하여 혹시 제가 모르는 어떤 방법이 있는지 여쭤보고 싶습니다.
-
해결됨진짜! 자바스크립트(Javascript) - 기초부터 고급까지
V8에서 undefined를 관리하는 방법에 대한 질문입니다
안녕하세요 좋은 강의 재밌게 잘 시청하고 있습니다V8에서 undefined, null 그리고 string을 어떻게 관리할까? 강의를 보다가 V8 문서를 찾아보게 되었습니다영어로 된 문서를 번역을 해서 질문하는 글 이기에 번역이 어색하거나 틀릴 수 있으며, 전체 내용을 담지는 않았습니다!강의 4분 26초에 LOAD_ROOT 함수 부분을 설명하시면서 힙 상수를 찾고 있다고 설명해주셨습니다그 후 다음 단계에서 캐시를 하고 힙 상수를 찾고, 만약 해당 위치가 존재한다면 해당 위치를 반환하고, 그 위치가 없다면 새로운 힙 상수를 생성하고 캐싱을 한다고 해주셨습니다그래서 실제로 저희가 자바스크립트에서 undefined를 사용할 때마다 캐싱해두었던 그 값을 찾기 때문에 해당 위치에 접근하여 사용할 수 있다 라고 이해를 했습니다여기서 추가적으로 궁금했던것이 V8 문서를 보면, undefined , true 등 자바스크립트의 핵심 객체들은 반드시 먼저 존재해야 하고, read-only heap에 존재한다고 합니다V8은 이들을 immovable immutable roots 라고 부른다고 합니다정의되지 않은 객체의 주소를 참조하기 위해 찾아볼 필요 없이, 포인터가 0x61 이런식으로 끝나는지만 확인한다면, 정의가 되었는지, 되지 않았는지 알 수 있다면 좋을 것 같다 이것이 V8의 static root 를 달성하는 것이다 라고 설명되어 있습니다지속적으로 사용되는 것들이기에 빠른 접근이 필수적이며, V8은 컴파일 시점에 이들을 생성한다고 나와있습니다읽기 전용 힙을 모든 포인터 compression cage의 시작 부분에 배치하여 알려진 위치를 제공하며, 예를 들어 V8의 힙에 있는 모든 객체 중에서 undefined는 항상 가장 작은 압축 주소를 가지며, 0x61 바이트에서 시작한다고 합니다V8을 컴파일 하기 위해서는 먼저 mksnapshot 이라는 V8 바이너리를 컴파일을 진행을 하고, 결과물로는 read-only heap 내의 모든 객체의 cage base 주소를 포함한다고 합니다두 번째 단계로 libv8을 다시 컴파일하여, 플래그를 통해서 undefined를 참조할 때마다 문자 그대로 cage_base + StaticRoot::kUndefined 을 사용하도록 보장한다고 나와있습니다d8이 실행되면 모든 read-only 객체는 메모리에서 고정된 위치를 가지며, 절대 이동하지 않는다고 합니다이를 통해 d8 바이너리에서 undefined의 압축 주소가 0x61로 하드코딩되도록 만든다고 합니다 이 글을 읽으면서 들었던 생각은 위 과정을 통해 "undefined 같은 기본 객체들의 cage base로부터의 오프셋이 컴파일 시점에 결정되어 있어서, 런타임에 배열에서 찾아볼 필요 없이 cage_base + 0x61 같은 계산식으로 바로 접근할 수 있다"라고 이해를 했습니다여기서 컴파일 시점에 결정된 주소 라는 것이 4분 26초부터 말씀해주신 캐시 과정이 포함되는 것이 맞을까요? 아니면 강의 내용과는 상관이 없는 내용일까요? 참고한 글 링크는 아래에 걸어두겠습니다!https://v8.dev/blog/static-roots
-
해결됨Readable Code: 읽기 좋은 코드를 작성하는 사고법
만약 보드를 이용한 게임의 종류가 더 다양해진다면 어떻게 될 수 있을지에 대한 고민
안녕하세요, 열심히 강의를 수강 중인 4년차 백엔드 개발자입니다.먼저 이렇게 퀄리티 높은 강의를 제공해주셔서 감사드립니다!저는 4년차임에도 아직 리팩토링할 때 '관심사의 분리' , '같은 관심사끼리의 응집'에 대한 느낌을 체득하지 못해서 듣고 있습니다.문득 SRP까지 강의를 들은 시점에 GameBoard를 보고 'GameBoard가 셀로 나눠진 보드판'을 의미하는 것이라면 현재 GameBoard는 '지뢰찾기'에 한정된 느낌인데, 나중에 체스, 오목, 장기와 같은 보드형 게임을 추가한다면 어떻게 바꿔야 할까를 고민해보게 되었습니다.질문을 올리는 이 시점에는 GameBoard를 더 포괄적인 개념의 보드판으로 두고 상속을 하는 구조로 바꾸고, open()이나 isLandMineCell()과 같이 '지뢰찾기'에 의존적인 역할은 "MineSweeperGameBoard 같은 자식에서 구현해야 하나?" 하는 생각이 들게 되어서요!좀 두서없는 질문이고 엉뚱할 수 있지만 공유자님이라면 게임의 종류가 다양해진다면 어떤 고민을 시작으로 변경해 나가시는지, 어떤 부분을 먼저 생각해보는 것이 좋을지 궁금합니다.(사고의 흐름..?) 좋은 강의 감사드리며, 앞으로도 더 좋은 강의 부탁드리겠습니다!감사합니다 😃