묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결파이썬 무료 강의 (활용편2) - GUI 프로그래밍 (4시간)
photoimage오류
이렇게 입력했는데도 오류가 계속 뜹니다ㅠㅠ tkinter.TclError: couldn't recognize data in image file "gui_basic/img.png" 이렇게 뜨네요..어떻게 해결 할 수 있을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part8: Entity Framework Core
EntityState.Unchanged로 처리 후 데이터베이스 조회시 다른 필드값이 null인 경우에 대한 질문
안녕하세요? Rookiss님. 몬스터가 드랍하는 아이템중에 stackable 아이템이 있어서 DB 조회없이 바로 갯수를 업데이트하고자 하여 아래와 같이 코드를 작성했습니다. 그 후에 다시 인벤토리 아이템을 클라에 통보하기 위하여 조회를 했으나 Stackable Item의 다른 Property가 모두 NULL이 되어 버리네요. 그래서 결국 아이템을 조회한 후에 갯수를 추가하니 정상적으로 처리가 되네요. 질문1 : 이런 경우 entityState를 사용하지 못하고 꼭 데이터베이스에 조회를 해야할 까요? 질문2 : stackable Item의 경우라면 어떤 로직으로 처리를 하는 게 바람직할 지 조언을 부탁드리고자 합니다. ------------------------------------------------------------------------------------ 구글링을 통해 stackoverflow에서 찾아본 결과는 아래와 같습니다. stackoverflow의 답변 https://stackoverflow.com/questions/28479933/after-setting-entitystate-unchanged-the-entity-properties-are-lost => 채택된 답변은 아이템의 갯수를 업데이트하기 전에 먼저 조회를 하라고 합니다. ------------------------------------------------------------------------------------ 제가 작성중인 Dbtransaction 클래스의 메서드입니다. ------------------------------------------------------------------------------------ public static void RewardStackableItem(Player player, GameRoom room, int itemDbId, int totalCount) { if (player == null || room == null || itemDbId == 0) return; ItemDb oldItemDb = new ItemDb() { ItemDbId = itemDbId, Count = totalCount }; // YOU Instance.Push(() => { S_UpdateItem updateItemPacket = new S_UpdateItem(); using (AppDbContext db = new AppDbContext()) { // 방법1. EntityState 로 처리 //db.Entry(oldItemDb).State = EntityState.Unchanged; //db.Entry(oldItemDb).Property(nameof(ItemDb.Count)).IsModified = true; // 방법2 : 데이터베이스에 조회를 한 후에 처리 ItemDb item = db.Items .Single(i => i.OwnerDbId == player.PlayerDbId && i.ItemDbId == itemDbId); item.Count = totalCount; bool success = db.SaveChangesEx(); if (success) { //문제가 발생하는 부분으로 인벤토리의 해당 아이템을 수정하지 않고 그냥 조회 후 인벤토리를 clear한 후에 다시 인벤토리의 아이템을 만들어서 클라에 통보하고자 하였습니다. List<ItemDb> items = db.Items .Where(i => i.OwnerDbId == player.PlayerDbId).ToList(); player.Inven.Items.Clear(); // Me room.Push(() => { foreach (ItemDb itemDb in items) { Item item = Item.MakeItem(itemDb); if (item != null) { player.Inven.Add(item); ItemInfo info = new ItemInfo(); info.MergeFrom(item.Info); updateItemPacket.Items.Add(info); } } player.Session.Send(updateItemPacket); }); } } }); }
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
thymeleaf관련
thymeleaf를 사용하다 의문점이 들어 질문을 남깁니다. 이 템플릿을 배우는 이유는 restapi상황에서 front와 back이 나눠져있는 상황에 지금 당장 front와 연결할 수 없을 때, 먼저 가상 시나리오를 실행시켜보기 위해서 알아야하는 템플릿을 익히는 것인가요 ??
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
벡터 동적할당에 대해서
안녕하세요 여쭈어볼 게 있습니다! 이동하거나 회전할 때 Vector 를 사용하지 않습니까? 그런데 업데이트 함수에서 매초 마다 new 로 동적할당하는 것은 Heap에 그만큼 엄청난 과부하를 준다고 생각이 듭니다. c#은 수동적으로 메모리 관리를 할 수 없으니 사용자가 강제로 삭제를 할 경우 오히려 성능에 악영향을 준다고 알고 있습니다. 그래서 그냥 가비지 컬렉터가 삭제를 알아서 하게 내버려 둬야 한다고 그러더군요. 그래서 굳이 왜 매번 new로 저렇게 해줘도 성능에 아무런 지장이 없을까? 저 방법 말고 임의 고정 값을 스택에 할당하고 그걸 활용하는 것이 성능 향상에 엄청 낫지 않을까? 이렇게 생각이 들기도 합니다. 궁금증을 꼭 풀고 싶습니다 감사합니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Long type
안녕하세요.. 먼저 초보적인 질문을 하여서 죄송합니다 이전 강의에서는 id 값을 int 가 아닌 Long 값이 빅인트여서 숫자 범위가 더 넓은것 까지 이해가 되었습니다만 그 이상으로 사용하는 의미를 제가 찾아봤습니다. 코드로 설명 드리자면 @Id @GeneratedValue@Column(name = "member_id")private Long id; 여기서 Long 타입을 주는 이유를 찾아보니 null 값을 허용하려고 사용한다고 찾아봤습니다. 그래서 제가 생각한 이유는, id 값이 값이 없으면 null 값이 허용되고, 자바상엔 오류가 나타나질 않고 실제로 디비에선 자동적으로 숫자값을 올려준다? 라고 이해를 하였습니다만 맞을까요? 만약에 int type 이면 null이 허용이 되는게 아니라 자바로부터 에러가 난다라고 이해를 하였습니다
-
해결됨Kevin의 알기 쉬운 RxJava 1부
concatEager( ) 연산자에 관하여
안녕하세요, 해당 강의에서 materialize / dematerialize 파트에서 언급된 concatEager( ) 연산자에 알아보면서 어떻게 사용해야하는 것인지 정확히 알고 싶습니다. - Observable.java (concat 연산자) @CheckReturnValue@NonNull@SchedulerSupport(SchedulerSupport.NONE)public static <T> Observable<T> concat(ObservableSource<? extends T> source1, ObservableSource<? extends T> source2) { ObjectHelper.requireNonNull(source1, "source1 is null"); ObjectHelper.requireNonNull(source2, "source2 is null"); return concatArray(source1, source2);} - Observable.java (concatEager 연산자) @CheckReturnValue@SchedulerSupport(SchedulerSupport.NONE)public static <T> Observable<T> concatEager(ObservableSource<? extends ObservableSource<? extends T>> sources) { return concatEager(sources, bufferSize(), bufferSize());} 위 API 소스를 보다시피 concatEager의 파라미터는 'ObservableSource<? extends ObservableSource<? extends T>>' 타입을 넣어야 한다고 명시가 되어있는데요, 저 모양이 예제 'ObservableMaterialExample02.java'처럼 Observable.just( ... )의 파라미터에 Observable 넣어야하는 형태인건가요? 저런 타입이 어떠한 모양인지 감이 안잡혀서 여쭤봅니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
다차원 배열 같은값으로 초기화
일차원 배열을 같은값으로 초개화할 때 Array.Fill이라는 함수를 사용하였고 이는 굉장히 편리했습니다. 이차원 이상의 다차원 배영을 비슷한 방법으로 다중 for문을 사용하지 않고 구현하는 방법이 있나요
-
해결됨RPA로 자동화 천재되기 (UiPath 응용편)
저도 같은 문제라 메일을 보냈습니다 iF
저도 같은 문제라 메일을 보냈습니다 iF
-
미해결
초보주의: 어셈블리어로 길이 제한 없는 문자열을 표현할 수 있는 법이 뭐가 있을까요
질문도 대충 했으니까, 그냥 힌트만 대충 주세요. 적당히 알아먹을만큼요. 나머진 제가 고민해볼게요
-
미해결페이스북 클론 - full stack 웹 개발
게시버튼 에러
삭제된 글입니다
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
파이썬 다운로드 질문입니다.
파이썬 영상에는 최신버전이 2019년 파이썬 3.7.3버전인데 최신버전으로 나온 3.9.6으로 설치해도 되나요? 최신버전에는 64비트가 embeddable 밖에없어서 질문드립니다.
-
해결됨Data Engineering Course (1) : 빅데이터 하둡 직접 설치하기
WordDriver 실행 시 NullPointerException Error 발생관련 문의드립니다.
안녕하세요 강사님 강의 유익하게 듣고 있습니다. 다름이 아니라 WordDriver를 실행시키면 Exception Error가 발생하여 구글링을 통해 찾아보았지만 완벽한 해답을 찾지 못하여 문의드립니다. 어떻게 하면 에러를 해결할 수 있을까요? 2021-07-12 17:22:08,281 WARN [main] util.NativeCodeLoader (NativeCodeLoader.java:<clinit>(60)) - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 2021-07-12 17:22:08,897 WARN [main] impl.MetricsConfig (MetricsConfig.java:loadFirst(136)) - Cannot locate configuration: tried hadoop-metrics2-jobtracker.properties,hadoop-metrics2.properties 2021-07-12 17:22:08,973 INFO [main] impl.MetricsSystemImpl (MetricsSystemImpl.java:startTimer(378)) - Scheduled Metric snapshot period at 10 second(s). 2021-07-12 17:22:08,974 INFO [main] impl.MetricsSystemImpl (MetricsSystemImpl.java:start(191)) - JobTracker metrics system started 2021-07-12 17:22:09,282 WARN [main] mapreduce.JobResourceUploader (JobResourceUploader.java:uploadResourcesInternal(149)) - Hadoop command-line option parsing not performed. Implement the Tool interface and execute your application with ToolRunner to remedy this. 2021-07-12 17:22:09,290 WARN [main] mapreduce.JobResourceUploader (JobResourceUploader.java:uploadJobJar(482)) - No job jar file set. User classes may not be found. See Job or Job#setJar(String). 2021-07-12 17:22:09,366 INFO [main] input.FileInputFormat (FileInputFormat.java:listStatus(292)) - Total input files to process : 2 2021-07-12 17:22:09,411 INFO [main] mapreduce.JobSubmitter (JobSubmitter.java:submitJobInternal(202)) - number of splits:2 2021-07-12 17:22:09,549 INFO [main] mapreduce.JobSubmitter (JobSubmitter.java:printTokens(298)) - Submitting tokens for job: job_local579481131_0001 2021-07-12 17:22:09,551 INFO [main] mapreduce.JobSubmitter (JobSubmitter.java:printTokens(299)) - Executing with tokens: [] 2021-07-12 17:22:09,688 INFO [main] mapreduce.Job (Job.java:submit(1569)) - The url to track the job: http://localhost:8080/ 2021-07-12 17:22:09,690 INFO [Thread-23] mapred.LocalJobRunner (LocalJobRunner.java:createOutputCommitter(501)) - OutputCommitter set in config null 2021-07-12 17:22:09,700 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1614)) - Running job: job_local579481131_0001 2021-07-12 17:22:09,714 INFO [Thread-23] output.FileOutputCommitter (FileOutputCommitter.java:<init>(141)) - File Output Committer Algorithm version is 2 2021-07-12 17:22:09,714 INFO [Thread-23] output.FileOutputCommitter (FileOutputCommitter.java:<init>(156)) - FileOutputCommitter skip cleanup _temporary folders under output directory:false, ignore cleanup failures: false 2021-07-12 17:22:09,715 INFO [Thread-23] mapred.LocalJobRunner (LocalJobRunner.java:createOutputCommitter(519)) - OutputCommitter is org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter 2021-07-12 17:22:09,844 INFO [Thread-23] mapred.LocalJobRunner (LocalJobRunner.java:runTasks(478)) - Waiting for map tasks 2021-07-12 17:22:09,845 INFO [LocalJobRunner Map Task Executor #0] mapred.LocalJobRunner (LocalJobRunner.java:run(252)) - Starting task: attempt_local579481131_0001_m_000000_0 2021-07-12 17:22:09,886 INFO [LocalJobRunner Map Task Executor #0] output.FileOutputCommitter (FileOutputCommitter.java:<init>(141)) - File Output Committer Algorithm version is 2 2021-07-12 17:22:09,886 INFO [LocalJobRunner Map Task Executor #0] output.FileOutputCommitter (FileOutputCommitter.java:<init>(156)) - FileOutputCommitter skip cleanup _temporary folders under output directory:false, ignore cleanup failures: false 2021-07-12 17:22:09,941 INFO [LocalJobRunner Map Task Executor #0] mapred.Task (Task.java:initialize(626)) - Using ResourceCalculatorProcessTree : [ ] 2021-07-12 17:22:09,948 INFO [LocalJobRunner Map Task Executor #0] mapred.MapTask (MapTask.java:runNewMapper(768)) - Processing split: hdfs://localhost:9000/user/mapreduce2/input/Ireland-And-The-home.txt:0+495572 2021-07-12 17:22:10,025 INFO [LocalJobRunner Map Task Executor #0] mapred.MapTask (MapTask.java:setEquator(1219)) - (EQUATOR) 0 kvi 26214396(104857584) 2021-07-12 17:22:10,026 INFO [LocalJobRunner Map Task Executor #0] mapred.MapTask (MapTask.java:init(1012)) - mapreduce.task.io.sort.mb: 100 2021-07-12 17:22:10,026 INFO [LocalJobRunner Map Task Executor #0] mapred.MapTask (MapTask.java:init(1013)) - soft limit at 83886080 2021-07-12 17:22:10,026 INFO [LocalJobRunner Map Task Executor #0] mapred.MapTask (MapTask.java:init(1014)) - bufstart = 0; bufvoid = 104857600 2021-07-12 17:22:10,026 INFO [LocalJobRunner Map Task Executor #0] mapred.MapTask (MapTask.java:init(1015)) - kvstart = 26214396; length = 6553600 2021-07-12 17:22:10,031 INFO [LocalJobRunner Map Task Executor #0] mapred.MapTask (MapTask.java:createSortingCollector(409)) - Map output collector class = org.apache.hadoop.mapred.MapTask$MapOutputBuffer 2021-07-12 17:22:11,334 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1635)) - Job job_local579481131_0001 running in uber mode : false 2021-07-12 17:22:11,336 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1642)) - map 0% reduce 0% 2021-07-12 17:22:11,351 INFO [LocalJobRunner Map Task Executor #0] mapred.MapTask (MapTask.java:flush(1476)) - Starting flush of map output 2021-07-12 17:22:11,374 INFO [LocalJobRunner Map Task Executor #0] mapred.LocalJobRunner (LocalJobRunner.java:run(252)) - Starting task: attempt_local579481131_0001_m_000001_0 2021-07-12 17:22:11,376 INFO [LocalJobRunner Map Task Executor #0] output.FileOutputCommitter (FileOutputCommitter.java:<init>(141)) - File Output Committer Algorithm version is 2 2021-07-12 17:22:11,376 INFO [LocalJobRunner Map Task Executor #0] output.FileOutputCommitter (FileOutputCommitter.java:<init>(156)) - FileOutputCommitter skip cleanup _temporary folders under output directory:false, ignore cleanup failures: false 2021-07-12 17:22:11,376 INFO [LocalJobRunner Map Task Executor #0] mapred.Task (Task.java:initialize(626)) - Using ResourceCalculatorProcessTree : [ ] 2021-07-12 17:22:11,378 INFO [LocalJobRunner Map Task Executor #0] mapred.MapTask (MapTask.java:runNewMapper(768)) - Processing split: hdfs://localhost:9000/user/mapreduce2/input/The-Plain-book.txt:0+33520 2021-07-12 17:22:11,387 INFO [LocalJobRunner Map Task Executor #0] mapred.MapTask (MapTask.java:setEquator(1219)) - (EQUATOR) 0 kvi 26214396(104857584) 2021-07-12 17:22:11,387 INFO [LocalJobRunner Map Task Executor #0] mapred.MapTask (MapTask.java:init(1012)) - mapreduce.task.io.sort.mb: 100 2021-07-12 17:22:11,387 INFO [LocalJobRunner Map Task Executor #0] mapred.MapTask (MapTask.java:init(1013)) - soft limit at 83886080 2021-07-12 17:22:11,387 INFO [LocalJobRunner Map Task Executor #0] mapred.MapTask (MapTask.java:init(1014)) - bufstart = 0; bufvoid = 104857600 2021-07-12 17:22:11,388 INFO [LocalJobRunner Map Task Executor #0] mapred.MapTask (MapTask.java:init(1015)) - kvstart = 26214396; length = 6553600 2021-07-12 17:22:11,388 INFO [LocalJobRunner Map Task Executor #0] mapred.MapTask (MapTask.java:createSortingCollector(409)) - Map output collector class = org.apache.hadoop.mapred.MapTask$MapOutputBuffer 2021-07-12 17:22:11,402 INFO [LocalJobRunner Map Task Executor #0] mapred.MapTask (MapTask.java:flush(1476)) - Starting flush of map output 2021-07-12 17:22:11,427 INFO [Thread-23] mapred.LocalJobRunner (LocalJobRunner.java:runTasks(486)) - map task executor complete. 2021-07-12 17:22:11,436 WARN [Thread-23] mapred.LocalJobRunner (LocalJobRunner.java:run(590)) - job_local579481131_0001 java.lang.Exception: java.lang.NullPointerException at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:492) at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:552) Caused by: java.lang.NullPointerException at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.collect(MapTask.java:1090) at org.apache.hadoop.mapred.MapTask$NewOutputCollector.write(MapTask.java:727) at org.apache.hadoop.mapreduce.task.TaskInputOutputContextImpl.write(TaskInputOutputContextImpl.java:89) at org.apache.hadoop.mapreduce.lib.map.WrappedMapper$Context.write(WrappedMapper.java:112) at com.wonjun.jun.WordMapper.map(WordMapper.java:21) at com.wonjun.jun.WordMapper.map(WordMapper.java:1) at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:146) at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:799) at org.apache.hadoop.mapred.MapTask.run(MapTask.java:347) at org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:271) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) 2021-07-12 17:22:12,339 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1655)) - Job job_local579481131_0001 failed with state FAILED due to: NA 2021-07-12 17:22:12,350 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1660)) - Counters: 0
-
미해결RPA로 자동화 천재되기 (UiPath 응용편)
영상에서 출력화면 오른쪽하단에 나오는데 안나오는 사람은 뭘눌러야 될까요
삭제된 글입니다
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
장치 초기화 오류
삭제된 글입니다
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 짜봤는데 혹시 예외가 있을까요...?
임의로 설정한 몇가지 케이스에선 제대로된 답이 다 나왔는데 혹시 문제가 있는 예외가 있을까요...? function solution(board, moves) { let answer = 0; const stack = []; //4, 3, 1, 1, 3, 2, 4 for (m of moves) { let idx = m - 1; for (let i = 0; i < board.length; i++) { if (board[i][idx] !== 0) { if (stack[stack.length - 1] === m) { stack.pop(); answer += 2; } else { stack.push(board[i][idx]); board[i][idx] = 0; } break; } } } return answer; } const board = [[0, 0, 0, 0, 0], [0, 0, 1, 0, 3], [0, 2, 5, 0, 1], [4, 2, 4, 4, 2], [3, 5, 1, 3, 1]]; const moves = [1, 5, 3, 5, 1, 2, 3, 4]; console.log(solution(board, moves));
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
HTTP API 설계 질문드립니다.
HTTP API를 POST 기반으로 등록하는 경우 회원 조회 - /mebers/{id} - GET 방식 회원 등록 - /mebers/{id} - POST 방식 회원 삭제 - /mebers/{id} - DELETE 방식 이라고 하셨는데, ID로 회원조회, 수정, 삭제하는 기능을@RequestMapping("/{id}") 로 동일하게 작성하는 경우 아래와 같이 오류가 발생합니다. hellospring.demo.controller.MemberController#getById(long) to { [/api/members/{id}]}: There is already 'memberController' bean method hellospring.demo.controller.MemberController#remove(long) mapped. Ambiguous mapping. Cannot map 'memberController' method hellospring.demo.controller.MemberController#getById(long) to { [/api/members/{id}]}: There is already 'memberController' bean method hellospring.demo.controller.MemberController#remove(long) mapped. GET 방식, PUT 방식, DELETE 방식으로 다르기 때문에 @RequestMapping("/{id}")로 동일하게 작성해도 되는것이 아닌지 질문드립니다. 이
-
미해결화이트해커가 되기 위한 8가지 웹 해킹 기술
해당 파일 없음 오류
해당 page 파라미터값에 강의영상과 동일하게 입력했는데 그런 파일이나 디렉토리가 없습니다. 라고 뜨는데 예전 강의라서 파일이 바뀐걸까요?
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
랜덤함수 관련 질문
랜덤함수를 넣어야하는데 위 사진처럼 랜덤함수가 뜨지 않습니다... 자세히 보니 내장되어있어야 할 랜덤함수가 없는 것 같은데 업데이트 문제인가요? 아니면 제가 만들어주어야 하는 건가요?
-
미해결홍정모의 따라하며 배우는 C++
배열 메모리 크기 할당 오류
질문있습니다. 26:30 쯤에서 궁금한 것이 생겼습니다. 저는 지금까지 #include <iostream> using namespace std; int main(){ int num; cin >> num; int arry[num]; return 0; } 이런식으로 변수 값을 입력 받은 후 그 크기만큼 배열을 할당했습니다. 오류가 안 생겼던 것 같은데요... 홍정모님 강의에서는 오류가 발생한다고 해서요. 런타임 이전에 크기가 할당 되어야 한다는 말씀을 하셔서요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
질문입니다.
1. https://www.inflearn.com/questions/48156 의 답변에서 @Bean으로 등록하면 자기 자신이 포함되어서 순환참조가 일어난다는 점은 이해했습니다. 하지만 "컴포넌트 스캔을 사용할 떄는 AOP의 대상이 되는 이런 코드 자체가 없기 때문에 문제가 발생하지 않았습니다." 이 말이 잘 이해가 되지 않습니다. 컴포넌트 스캔을 위해서 @Component로 두면 스프링 빈에 등록된다는 것과 상관이 있는것인지 모르겠습니다. 2. AOP를 등록한 후에 localhost를 실행시킬 때는 실행시간이 잘 나왔는데 test를 돌릴때는 따로 보이지 않아서 원래 그런것인지 궁금해서 질문을 남깁니다. 정말 좋은 강의 잘 듣고있습니다.