학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 강의를 들으면서 웬만하면 repository 에서 entity 를 받아와서 이걸 Dto 로 변환해서 반환하게끔 처리하는 것을 배웠습니다. 다만 실무에서 연관관계 매핑을 쓰지 않을 경우 어떤 전략을 취해야 하는지 모르겠어서 질문드립니다. 단일 entity 만을 반환하는 경우 크게 문제되지 않지만, join 을 하게될 경우 entity 가 2개 이상이 필요한데 이 경우 Dto 를 쓸 수밖에 없는 상황이라고 생각됩니다. (혹은 querydsl 에서 Tuple 을 쓸 수 있다고 생각합니다) 이런 경우 어떻게 repository 에서 service 로 데이터를 올려주나요?
4번 스레드 제어와 생명 주기2 PDF의 24페이지 "그리고 스캐줄링 큐 ..." -> "그리고 스케줄링 큐 ..." 7번 고급동기화 PDF의 1페이지 "LockSupport의 대표적인 기능은 가능과 같다 " -> "LockSupport의 대표적인 기능은 다음과 같다 "
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part5: UE5 & IOCP 서버 연동
Spawn #2 따라하고 실행해보는데 메모리 충돌로 인해 언리얼 크래쉬가 발생하네요 혼자 열심히 시도해 본 결과 UE FMemeory와 ProtoBuf 소멸자에서 delete 되는 부분에서 UE delete 오버라이드 문제인 것 까진 알게 되었으나 어떻게 해결해야 할 지 모르겠어서 질문 드립니다 UE 5.6 버전이고, ProtoBuf는 C++ 5.29.5(29.5) 버전입니다 vcpkg를 사용해서 라이브러리 다운 받았고 /MD 동적 라이브러리로 UE 프로젝트에 포함시켰습니다 (dll로 인해서 new/delete 오버라이드로 인한 메모리 충돌 문제가 더 쉽게 발생하여 /MT로 포함하는 것이 나을 수도 있겠다고 LLM(gpt, grok) 등이 말한 내용을 적용하고자 하였으나 빌드를 실패하여 그 부분은 진행하지 못하였습니다) 다음 이미지는 실행했을 때 크래쉬가 발생하는 부분과 로그 일부 입니다 LoginId:468bde9140a0ef5bd78746b7d5b86a2c EpicAccountId:e6607fa7037e41448797c486f54e5315 Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x0000023d9d00116f UnrealEditor_Core UnrealEditor_Core UnrealEditor_S1!operator delete() [C:\Program Files\Epic Games\UE_5.6\Engine\Source\Runtime\Core\Public\HAL\PerModuleInline.inl:9] UnrealEditor_S1!Protocol::PlayerInfo::`scalar deleting destructor'() libprotobuf!google::protobuf::internal::RepeatedPtrFieldBase::DestroyProtos() [C:\Users\yudle\vcpkg\buildtrees\protobuf\src\v5.29.5-5bafd96eab.clean\src\google\protobuf\repeated_ptr_field.cc:90] UnrealEditor_S1!Protocol::S_LOGIN::~S_LOGIN() [D:\GitHub\S1\Source\S1\Network\Protocol.pb.cc:586] UnrealEditor_S1!std::_Func_impl_no_alloc ServerPacketHandler::Init':: 2'::<lambda_1>,bool,TSharedPtr<PacketSession,1> &,unsigned char *,int>::_Do_call() [C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\INCLUDE\functional:810] UnrealEditor_S1!PacketSession::HandleRecvPackets() [D:\GitHub\S1\Source\S1\Network\PacketSession.cpp:37] UnrealEditor_CoreUObject UnrealEditor_CoreUObject UnrealEditor_CoreUObject UnrealEditor_CoreUObject UnrealEditor_CoreUObject UnrealEditor_CoreUObject UnrealEditor_CoreUObject UnrealEditor_CoreUObject UnrealEditor_CoreUObject UnrealEditor_CoreUObject UnrealEditor_CoreUObject UnrealEditor_Engine UnrealEditor_Engine UnrealEditor_Engine UnrealEditor_Engine UnrealEditor_Engine UnrealEditor_Core UnrealEditor_Core UnrealEditor_Core UnrealEditor_Core UnrealEditor_Engine UnrealEditor_Engine UnrealEditor_Engine UnrealEditor_Engine UnrealEditor_UnrealEd UnrealEditor_UnrealEd UnrealEditor UnrealEditor UnrealEditor UnrealEditor UnrealEditor UnrealEditor kernel32 ntdll S_LOGIN 패킷의 소멸자에서 오염된 메모리 접근 문제로 크래시가 발생한 것으로 보입니다
Visual Studio에서 빌드 오류가 발생합니다. .Net관련 오류와 dll파일 관련 오류가 발생합니다. 공식 포럼 설치가이드대로 받아야할 필수 워크로드, 컴포넌트, 버전 호환성 등 모두 점검했는데도 불구하고 오류가 발생합니다... 솔루션 쪽에서 Restore NuGet Packages 마저 실패합니다. 이틀 동안 이것저것 계속 시도해봐도 도저히 해결할 수가 없습니다.... .unproject에서 Generate visual studio project files도 설정 만질때마다 해주고 있는데 전혀 변함이 없습니다... 제발 도와주십쇼 ㅠㅠㅠㅠ Unreal 5.6버전이고 Visual Studio는 17.14로 최신버전입니다. .NET버전은 8.0런타임과 9.0 런타임 설치되어 있습니다.
22:14초의 코드에서 %s arr[0][0]의 의미는 포인터 강의에서 배운 바로는 %s는 가리키고 있는 주소의 첫번째 값부터 널문자를 만날때까지 출력한다라고 배워서 Hello를 출력하는 것을 이해했었습니다 하지만 23:46부분에서 포인터를 사용할때는 arr[0][0][0]을 출력할때는 Hello중 H를 가리키는 주소를 가지고 있는건가요? 그럼 arr[0][0]과 같은 값을 가리키고 있는건데 제가 잘못 알고 있는건지 궁급합니다
[제보 내용] 대상 강의록: 7. 중첩 클래스, 내부 클래스1.pdf 위치: p.3 의 두 번째 코드 블록(= process() 있는 곳) 오타 내용: 수정 전: int lcoalVar = 0; 수정 후: int localVar = 0; 궁금한 내용이 생겨 복습하러 왔다가 겸사겸사 오타도 발견하고 가네요. 항상 좋은 강의 감사합니다!
하루 박아도 도저히 해결이 안되서 올립니다... unreal 5.6버전 설치했고, visual studio 최신버전 설치했습니다. 공식 포럼 따라서 설치해야할 파일 다 받았습니다. visual studio빌드를 하면 Automation종류의 dll파일을 찾을 수 없다는 오류와 error NU1701: 경고를 오류로 처리: 프로젝트 대상 프레임워크 'net8.0' 대신 '.NETFramework,Version=v4.6.1, 4.6.2, 4.7,4.7.1, 4.7.2, 4.8, 4.8.1'을(를) 사용하여 패키지 ' Microsoft.Build 17.14.28'을(를) 복원했습니다. 이 패키지는 프로젝트와 완벽하게 호환되지 않을 수 있습니다. 라는 오류가 발생합니다... 레딧과 포럼 공식 사이트 커뮤니티 등등 다 뒤져봤는데 도저히 해결할 수가 없습니다... 다음 진도를 나갈 수가 없습니다 제발 도와주십쇼 dll 오류의 자세한 메시지는 다음과 같습니다. 'C:\Program Files\Epic Games\UE_5.6\Engine\Platforms\VisionOS\Binaries\DotNET\AutomationTool\AutomationScripts\ref\VisionOS.Automation.dll' 메타데이터 파일을 찾을 수 없습니다. 'C:\Program Files\Epic Games\UE_5.6\Engine\Source\Programs\AutomationTool\AutomationUtils\bin\Development\ref\AutomationUtils.Automation.dll' 메타데이터 파일을 찾을 수 없습니다. 'C:\Program Files\Epic Games\UE_5.6\Engine\Source\Programs\AutomationTool\AutomationUtils\bin\Development\ref\AutomationUtils.Automation.dll' 메타데이터 파일을 찾을 수 없습니다.
강의 앞부분에서는 JAVA에서는 print 뒤에 ln을 붙여서 개행한다고 설명해 주셨습니다. 그런데 뒷부분 예제에 Systenm.out.print("Character:"+ch+"\n"); 이런 명령문구가 있는데 정답 해설하실 때도 \n에 대해서는 설명 안해주시네요. 작성해 주신 출력 결과를 보면 Character:A가 출력되고 개행이 되는 것 같은데, JAVA에서 +"\n"으로도 개행을 할 수 있는건가요?
강의를 보면 UPROPERTY 를 사용할 수 없는 일반 C++ 객체 내부의 UObject 를 상속받은 객체의 경우 C++ 객체에 FGCObject 를 상속받고 AddReferencedObjects 함수를 통해 가비지에 UObject 에 상속받은 객체를 선언하는 식으로 하여 가비지의 개입을 막는 것으로 보이는데요. 다만 이때 이럴 경우가 없겠지만 C++ 클래스 생성자에서 UObject 를 상속받은 객체를 생성 후 C++ 클래스 소멸자에서 UObject 를 상속받은 객체를 삭제하고 싶다면 저는 소멸자에서 무언가를 할 필요는 없는지요? C++ 객체 가 삭제되면 가비지는 알아서 그 안에 있는 UObject 들을 모두 알아서 메모리를 회수 하는지 궁금합니다. 더불어서 C++ 클래스 내에서 n 개의 UObject 를 상속받는 객체를 관리한다면, 모두 AddReferencedObjects 에 등록하면 되는지도 궁금합니다. 마지막으로 예를 들면 UMyGameInstance 에서 UPROPERTY() 를 선언한 UObject 를 상속받은 객체 A 가 있다면 이를 FStudentManager 에 포인터로 넘겨서 FStudentManager 내에서 A 에 대한 무언가 관리를 한다면 A 는 이미 외부(UMyGameInstance ) 에서 UPROPERTY() 를 선언하였으니 FStudentManager ->AddReferencedObjects 를 통해서 등록할 필요는 없는지 궁금합니다.
인벤토리는 정렬을 지원합니다. 데이터의 삽입과 삭제, 수정이 빈번할 수 있습니다. 이럴 때는 TArray / TSet 중 무엇이 올바를까요? TArray/TSet 을 Unity C#의 ArrayList( 혹은 List) / LinkedList 의 관계가 아닌가 생각했는데요. 강의를 듣고 보니, TSet 는 순서가 중요되지 않고, 빈 메모리가 들어 있다는 점에서 어떤지 궁금합니다.
강의를 보다보니 궁금한 점이 있어 질문 남깁니다. 첫번째로 궁금한 점은 AbstractPagingItemReader의 코드를 doRead 함수 안에서 lock을 잡고 있으며, doReadPage가 끝난 후 lock을 푸는 것을 확인할 수 있었습니다.. doReadPage에 실제로 paging 로직이 존재하니 사실상 paging 로직은 직렬로 수행되는 것과 다를 바 없을 것이며, 성능적으로 크게 증가하지 않을 것 같다는 생각이 드는데요.. (거의 직렬 처리와 유사할 것 같다는 생각이 드네요..) 사실상 병렬 처리라해도 Reader쪽에서 성능 향상이 거의 없다고 보면 될까요? 두번째로 궁금한 점은 AbstractPagingItemReader 상위 클래스인 AbstractItemCountingItemStreamItemReader의 read 함수를 보니 멤버 변수인 currentItemCount를 증가시키는 로직이 존재하더라구요.. 이 부분도 병렬처리에 문제가 될 것 같다는 생각이 들고 해당 클래스의 주석에도 "Subclasses are inherently <b>not</b> thread-safe." 라고 적혀있는 것으로 봐서는 문제가 존재하는 것 같은데요.. 그럼에도 불구하고 기능상 영향이 없으니 하위 클래스인 AbstractPagingItemReader는 thread-safe하다고 나와있는 것이라고 생각하면될까요??