๋ชฉ๋ก์ ์ฒด ๊ธ (1104)
KoreanFoodie's Study

์ฌ๋ ์ดํธ ๊ตฌ์กฐ (์ํคํ ์ฒ) ์ฌ์ค ์ธ๋ฆฌ์ผ์๋ ์ด๋ฏธ UMG ๋ผ๋, ๋งค์ฐ ํธ๋ฆฌํ ์์ ฏ ๊ด๋ จ ํด์ด ์กด์ฌํ๋ค. ํ์ง๋ง ์ฝ๋๋ก UI ๋ฅผ ์ปจํธ๋กคํ ์ ์๋ค๋ ์ฅ์ ๋๋ฌธ์, ์ค์ ๋ก ๋ง์ ๊ณณ์์ ์ฌ๋ ์ดํธ(Slate) ๋ฅผ ํ์ฉํ๊ณ ์๋ค. ์ฌ๋ ์ดํธ๋ ์ด๋ค ๋ ์์ด๊ณ , ์ด๋ป๊ฒ ๋์์ธ๋์ด ์๋์ง, ๊ณต์ ๋ฌธ์(๋ฒ์ญ๋ณธ)๋ฅผ ํตํด ๋จผ์ ๊ฐ๋จํ๊ฒ ์ง๊ณ ๋์ด๊ฐ๋๋ก ํ์! ์ด๋ฒ ๊ธ์์๋ ์ฌ๋ ์ดํธ๊ฐ ์ถ๊ตฌํ๋ ๋ฐฉํฅ๊ณผ ์ฒ ํ์ ๋ํด ๋ค๋ฃฌ๋ค. ์ผ๋จ, ์๋ํฐ ์ธํฐํ์ด์ค์ ๋๋ถ๋ถ์ ์ฌ๋ ์ดํธ๋ก ์ ์๋์ด ์๋ค. Contents Browser ๋ฟ๋ง ์๋๋ผ ๋ธ๋ฃจํ๋ฆฐํธ ์๋ํฐ, ์ ๋๋ฉ์ด์ ์๋ํฐ ๋ฑ ์์ง ์ธํฐํ์ด์ค์ ๋๋ถ๋ถ์ ์ฐจ์งํ๊ณ ์๋ค. ์ฌ๋ ์ดํธ๋ ๋ค์๊ณผ ๊ฐ์ ์ ๊ทผ๋ฒ์ ์ฌ์ฉํ๋ค : (๋ถํฌ๋ช ์บ์์ ์ค๋ณต ์คํ ์ดํธ๋ฅผ ํผํ๊ธฐ ์ํด. ์ ํต์ ์ผ๋ก UI ๋ ์คํ ์ดํธ๋ฅผ ..

UUserWidget ์ Native ํจ์ //native SObjectWidget methods (see the corresponding BlueprintImplementableEvent declarations above for more info on each) friend class SObjectWidget; virtual void NativeOnInitialized(); virtual void NativePreConstruct(); virtual void NativeConstruct(); virtual void NativeDestruct(); virtual void NativeTick(const FGeometry& MyGeometry, float InDeltaTime); UserWidget ์๋ ์..

๋ํฐ ํ๋๊ทธ ํจํด์ด๋? ๋ํฐ ํ๋๊ทธ ํจํด์ ๋ํด์๋, ์ด์ ๋ธ๋ก๊ทธ ๊ธ์์ ๊ฐ๋จํ๊ฒ ์ธ๊ธํ ๋ฐ ์๋ค. ๋ํฐ ํ๋๊ทธ ํจํด์ ์ผ๋ฐ์ ์ผ๋ก ๋ ๋๋ง ๊ณผ์ ์์, ๊ณ์ธต ๊ตฌ์กฐ๊ฐ ์กด์ฌํ ๊ฒฝ์ฐ, ํ์ํ ๋ / ํ์ํ ํ์ด๋ฐ์ ํ๋ฉด์ ๊ฐฑ์ ํ๋ ๋ถ๋ถ์์ ์์ฃผ ์ฐ์ธ๋ค. ๋ํ ๋ํฐ ํ๋๊ทธ๋ฅผ ์ฒดํฌํด UI ๋ฅผ ๊ฐฑ์ ํ๊ฒ ๋๋ฉด, Tick ๋ง๋ค UI ์ ๋ฐ์ดํธ๊ฐ ์ค๋ณตํด์ ์ผ์ด๋๋ ๊ฒ์ ๋ง์ ์ ์๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด ํจํด์ ์ธ๋ฆฌ์ผ์์๋ ์ด๋ค ๋ฐฉ์์ผ๋ก ์ ์ฉํด ๋ณผ ์ ์์๊น? ์๋ฅผ ๋ค์ด, ์ฐ๋ฆฌ๊ฐ ์ด๋ค UI ๋ฅผ ๊ฐฑ์ ํ๋๋ฐ,Dirty Flag ๋ฅผ ๋์ด ํด๋น ๋ํฐ ํ๋๊ทธ๊ฐ ์ผ์ ธ ์์ ๋๋ง UI ๋ฅผ ๊ฐฑ์ ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด์. ์ผ๋จ, ์ค์ ๋ก UI ํด๋์ค๋ฅผ ๋ง๋ค๊ธฐ ์ ์, ๋ํฐ ํ๋๊ทธ ํจํด์ ์ฌ์ฉํ ์์ ฏ๋ค์ด ๊ณตํต์ ์ผ๋ก ์ฌ์ฉํ ์ธํฐํ์ด์ค๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ ์ํ ์..

์์ ฏ ๋ฆฌํ๋ ํฐ ์ธ๋ฆฌ์ผ์ ์์ ฏ ๋ฆฌํ๋ ํฐ ๊ธฐ๋ฅ์ ์ด์ฉํ๋ฉด, ํ์ฌ ํ๋ ์ดํ๊ณ ์๋ ์ฐฝ์์ ์ด๋ค ์์ ฏ์ด ์ด๋ค ๋ธ๋ฃจํ๋ฆฐํธ๋ฅผ ์ฌ์ฉํ๊ณ ์๋์ง, visibility ์ํ๋ ์ด๋ ํ์ง ๋ฑ์ ํ๋์ ํ์ ํ ์ ์๋ค(์์ ฏ ๋ฆฌํ๋ ํฐ : ์ฐฝ > ๊ฐ๋ฐ์ ํด > ์์ ฏ ๋ฆฌํ๋ ํฐ). ๋ ์์ธํ ์ฌํญ์ ์ด๋์ฐ๋ ๋ธ๋ก๊ทธ์ ์๋ํฐ ํ์ฅ ๊ธฐ์ด ๊ธ์ ์ฐธ๊ณ ํ์. ์์ ํํธ ํ ์คํธ ๊ฐ๋ฅ ์์ ฏ์ ๋๋ฅด๋ฉด, ๋ค์๊ณผ ๊ฐ์ด ํ๋ ์ด ํ๋ฉด๊ณผ ์์ ฏ ๋ฆฌํ๋ ํฐ ์ฐฝ์ด ๋ฐ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค(์ด๋ฏธ์ง๋ ๊ณต์ ๋ฌธ์์์ ๊ฐ์ ธ์ด) ํด๋น ์์ ฏ์ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ํ์ ํ ์ ์์ผ๋ฉฐ, ์ค์๊ฐ์ผ๋ก ์์ ฏ์ ๋๊ณ ํฌ ์๋ ์์ด ์์ ฏ ๊ด๋ จ ๋๋ฒ๊น ์ ๋งค์ฐ ์ ์ฉํ ๊ธฐ๋ฅ์ด๋ค!

Asio ๋ Asynchronous IO ์ ์ฝ์์ด๋ค. Asio ๋ฅผ ์ดํดํ๊ธฐ ์ํด์๋, ๋ค์๊ณผ ๊ฐ์ ์ฉ์ด๋ค์ ์๊ณ ์์ด์ผ ํ๋ค. IO Service ํด๋์ค : ์ปค๋์์ ๋ฐ์ํ ์ ์ถ๋ ฅ ์ด๋ฒคํธ๋ฅผ ๋์คํจ์น ํด์ฃผ๋ ๊ธฐ๋ฅ์ ์ํ. ๋์คํจ์น๋, ์ฐ์ ์์๊ฐ ๋์ ์์ ์ด ์ฐ์ ์ ์ผ๋ก ์ํ๋ ์ ์๋๋ก ์์คํ ์์์ ํ ๋นํ๋ ๊ฒ์ ์๋ฏธํ๋ค. IO Service ํด๋์ค๋ ์ปค๋์์ ๋ฐ์ํ ๋คํธ์ํฌ์์ ์ ์ ๋ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ค. ์ข ๋จ์ (Endpoint) : ๋คํธ์ํฌ ์์ ํน์ ์ปดํจํฐ์์ ์คํ๋๊ณ ์๋ ํ๋์ ํ๋ก๊ทธ๋จ. ๊ตฌ์ฒด์ ์ผ๋ก IP ์ฃผ์์ ํฌํธ ๋ฒํธ์ ํ ์์ ์ข ๋จ์ ์ด๋ผ๊ณ ํจ. DNS(Domain Name Server) : Boost Asio ์์๋ ๋๋ฉ์ธ ์ฃผ์๋ฅผ ์ด์ฉ, IP ์ฃผ์๋ฅผ ์์๋ด์ด ์ข ๋จ์ ์ ๊ตฌํ๋ค. ..

IOCP๋ CPU ๊ฐ์๋งํผ๋ง ์ฐ๋ ๋๋ฅผ ์ฐ๋ ์๋ฒ์ด๋ค. IOCP ๋ฅผ ์ฌ์ฉํ ๋ชจ๋ Send/Recv ๋ Overlapped I/O ๋ก ๋์ํ๋ค. ๋ฉํฐ์ฐ๋ ๋์์ ๋์ํ๋ฉฐ, ์ฝ๋ฐฑํจ์๋ค์ ๋์์ ๋์ํด์ ์ฑ๋ฅ์ ๋์ธ๋ค. IOCP๊ฐ ์ฌ์ฉํ๋ IOCP ๊ฐ์ฒด๋ ์ปค๋ ์์์ ๊ด๋ฆฌ๋๋ค. ์ปค๋ ๋ด์๋ DEVICE LIST ๋ผ๋ ์๋ฃ๊ตฌ์กฐ๊ฐ ์กด์ฌํ๋๋ฐ, ์์ผ์ IOCP ์ ๋ฑ๋กํ๋ฉด IOCP ๊ฐ์ฒด๋ DEVICE_LIST ์ ์์ผ๋ค์ ๋ฑ๋กํด์ ์ฒ๋ฆฌํ๋ค. ํ๋ก๊ทธ๋๋จธ๋ DEVICE_LIST ๋ฅผ ์ง์ ๋ณด๊ฑฐ๋ ์ ์ดํ ์ ์๋ค. ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ์ด ์์ฝํด ๋ณผ ์ ์์ ๊ฒ ๊ฐ๋ค : I/O ๋๋ฐ์ด์ค(์์ผ, FD) IOCP ์ ๋ฑ๋ก : CreateIoCompletionPrt ํจ์๋ฅผ ํตํด ๋๋ฐ์ด์ค์ CompletionPort(์ดํ CP) ๋ฅผ ๋ฐ์ธ..

์ด๋์ฐ๋์ '์ด๋์ฐ์ ๊ฒ์์ํ' ์ฑ ์ ๋ณด๋ฉฐ ์ข์ ๋ด์ฉ์ ์ ๋ฆฌํ๊ณ ์์ต๋๋ค. ๋ ์์ธํ ๋ด์ฉ์ด ๊ถ๊ธํ์๋ค๋ฉด, ์ฑ ์ ๊ตฌ๋งคํด ์ง์ ์ฝ์ด๋ณด์๊ธฐ๋ฅผ ์ถ์ฒ๋๋ฆฝ๋๋ค! ๋ณํ ํ๋ ฌ์ ์ญํ๋ ฌ ๋ค์ํ ๋ณํ ํ๋ ฌ๋ค์ ์ญํ๋ ฌ์ ์์๋ณด์. ํฌ๊ธฐ ๋ณํํ๋ ฌ ๊ฐ ๊ธฐ์ ๋ฒกํฐ์ ํฌ๊ธฐ๋ฅผ ๊ฐ๊ฐ a, b ๋งํผ ํค์ฐ๋ ํฌ๊ธฐ ๋ณํํ๋ ฌ์ ์ญํ๋ ฌ์ ๋ค์๊ณผ ๊ฐ๋ค. ์ ๋จ ๋ณํํ๋ ฌ ํํ์ฌ๋ณํ ์ฒ๋ผ ๋ฏธ๋๋ฌ์ง๊ฒ ์๊ธด ์ ๋จ ๋ณํํ๋ ฌ์ ์ญํ๋ ฌ์ ๋ค์๊ณผ ๊ฐ๋ค. ํ์ ๋ณํํ๋ ฌ ํ์ ๋ณํํ๋ ฌ์ ์ญํ๋ ฌ์ ๋ค์๊ณผ ๊ฐ๋ค. θ ๋งํผ ๋ฐ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ ์ํค๋ ํ๋ ฌ์ ์ญํ๋ ฌ์ ๊ตฌํ๊ธฐ ์ํด์๋, -θ ๋งํผ ๋ฐ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ ์ํค๋ ํ๋ ฌ์ ์๊ฐํด๋ณด๋ฉด ๋๋ค! ์ผ๊ฐํจ์์ ์ฑ์ง์ ์ด์ฉํ๋ฉด ๊ฐ๋จํ ๊ตฌํ ์ ์๋ค.

์ฝ ๋ ๋ฌ๊ฐ ์ฝ์ผ๋ฉฐ ์ ๋ฆฌํ๊ณ ์์ฝํ Effective C++ ์ Effective Modern C++ ๊ฒ์๊ธ๋ค์ ๋ํ ๋ฆฌ์คํธ ์์ฝ๊ธ์ ๋๋ค. ๊ฐ๋ฐํ์ค๋ ์ฐธ๊ณ ํ์๊ธธ ๋ฐ๋ผ๋ฉฐ, ์ง์ ์ฌ์ ์ฝ์ด๋ณด์๊ธธ ๊ฐ์ถ๋๋ฆฝ๋๋ค! 1์ฅ ํ์ ์ฐ์ญ ํญ๋ชฉ 1: ํ ํ๋ฆฟ ํ์ ์ฐ์ญ ๊ท์น์ ์์งํ๋ผ ํญ๋ชฉ 2: auto์ ํ์ ์ฐ์ญ ๊ท์น์ ์์งํ๋ผ ํญ๋ชฉ 3: decltype์ ์๋ ๋ฐฉ์์ ์์งํ๋ผ ํญ๋ชฉ 4: ์ฐ์ญ๋ ํ์์ ํ์ ํ๋ ๋ฐฉ๋ฒ์ ์์๋๋ผ 2์ฅ auto ํญ๋ชฉ 5: ๋ช ์์ ํ์ ์ ์ธ๋ณด๋ค๋ auto๋ฅผ ์ ํธํ๋ผ ํญ๋ชฉ 6: auto๊ฐ ์์น ์์ ํ์์ผ๋ก ์ฐ์ญ๋ ๋์๋ ๋ช ์์ ํ์์ ์ด๊ธฐ์น๋ฅผ ์ฌ์ฉํ๋ผ 3์ฅ ํ๋์ C++์ ์ ์ํ๊ธฐ ํญ๋ชฉ 7: ๊ฐ์ฒด ์์ฑ ์ ๊ดํธ(())์ ์ค๊ดํธ({})๋ฅผ ๊ตฌ๋ถํ๋ผ ํญ๋ชฉ 8: 0๊ณผ NULL๋ณด๋ค nullptr๋ฅผ ์ ..

์ฝ ๋ ๋ฌ๊ฐ ์ฝ์ผ๋ฉฐ ์ ๋ฆฌํ๊ณ ์์ฝํ Effective C++ ์ Effective Modern C++ ๊ฒ์๊ธ๋ค์ ๋ํ ๋ฆฌ์คํธ ์์ฝ๊ธ์ ๋๋ค. ๊ฐ๋ฐํ์ค๋ ์ฐธ๊ณ ํ์๊ธธ ๋ฐ๋ผ๋ฉฐ, ์ง์ ์ฌ์ ์ฝ์ด๋ณด์๊ธธ ๊ฐ์ถ๋๋ฆฝ๋๋ค! Chapter 1 C++์ ์์ผ๋ฉด C++์ ๋ฒ์ ๋ฐ๋ฆ ์๋ค ํญ๋ชฉ 1: C++๋ฅผ ์ธ์ด๋ค์ ์ฐํฉ์ฒด๋ก ๋ฐ๋ผ๋ณด๋ ์๋ชฉ์ ํ์ ํญ๋ชฉ 2: #define์ ์ฐ๋ ค๊ฑฐ๋ const, enum, inline์ ๋ ์ฌ๋ฆฌ์ ํญ๋ชฉ 3: ๋์๋ง ๋ณด์ด๋ฉด const๋ฅผ ๋ค์ด๋ ๋ณด์! ํญ๋ชฉ 4: ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ฐ๋์ ๊ทธ ๊ฐ์ฒด๋ฅผ ์ด๊ธฐํํ์ Chapter 2 ์์ฑ์, ์๋ฉธ์ ๋ฐ ๋์ ์ฐ์ฐ์ ํญ๋ชฉ 5: C++๊ฐ ์๊ทผ์ฌ์ฉ ๋ง๋ค์ด ํธ์ถํด ๋ฒ๋ฆฌ๋ ํจ์๋ค์ ์ด๊ฐ์ ์ธ์ฐ์ ํญ๋ชฉ 6: ์ปดํ์ผ๋ฌ๊ฐ ๋ง๋ค์ด๋ธ ํจ์๊ฐ ํ์ ์์ผ๋ฉด ํ์คํ ์ด๋ค์ ์ฌ์ฉ์ ..

C++ ํ๋ก๊ทธ๋๋จธ์ ํ๋ ์์ด์ ๋ฐ์ด๋ธ์ธ, ์ค์ฝง ๋ง์ด์ด์ค์ Modern Effective C++ ๋ฅผ ์ฝ๊ณ ๊ธฐ์ตํ ๋ด์ฉ์ ์์ฝํ๊ณ ์์ต๋๋ค. ๊ผญ ์ฝ์ด๋ณด์๊ธธ ์ถ์ฒ๋๋ฆฝ๋๋ค! ํญ๋ชฉ 42 : ์ฝ์ ๋์ ์์ฑ ์ฝ์ ์ ๊ณ ๋ คํ๋ผ ํต์ฌ : 1. ์ด๋ก ์ ์ผ๋ก, ์์ฑ ์ฝ์ ํจ์๋ค์ ์ข ์ข ํด๋น ์ฝ์ ๋ฒ์ ๋ณด๋ค ๋ ํจ์จ์ ์ด์ด์ผ ํ๋ฉฐ, ๋ ํจ์จ์ ์ธ ๊ฒฝ์ฐ๋ ์ ๋๋ก ์์ด์ผ ํ๋ค. 2. ์ค์ง์ ์ผ๋ก, (1) ์ถ๊ฐํ ๊ฐ์ด ์ปจํ ์ด๋์ ๋ฐฐ์ ๋๋ ๊ฒ์ด ์ปจํ ์ด๋์ ๋ฐฐ์ ๋๋ ๊ฒ์ด ์๋๋ผ ์ปจํ ์ด๋ ์์์ ์์ฑ๋๊ณ , (2) ์ธ์ ํ์(๋ค)์ด ์ปจํ ์ด๋๊ฐ ๋ด๋ ํ์๊ณผ ๋ค๋ฅด๊ณ , (3) ๊ทธ ๊ฐ์ด ์ค๋ณต๋ ๊ฐ์ด์ด๋ ์ปจํ ์ด๋๊ฐ ๊ฑฐ๋ถํ์ง ์๋๋ค๋ฉด, ์์ฑ ์ฝ์ ํจ์๊ฐ ์ฝ์ ํจ์๋ณด๋ค ๋น ๋ฅผ ๊ฐ๋ฅ์ฑ์ด ์์ฃผ ํฌ๋ค. 3. ์์ฑ ์ฝ์ ํจ์๋ ์ฝ์ ํจ์๋ผ๋ฉด ๊ฑฐ๋ถ๋นํ์ ํ์ ๋ณํ๋ค์ ..