◤ 2023๋…„ 1์›” 3์ผ ํ™”์š”์ผ

● 5๋ฉด์˜คํ”ˆ ํˆฌ๋ช… ํด๋”ฉ ๋ฐ•์Šค ๋ฆฌ๋น™ ํ”Œ๋ผ์Šคํ‹ฑ ์ˆ˜๋‚ฉํ•จ-์ค‘ํ˜•

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.



 





https://item.gmarket.co.kr/Item?goodscode=2379787038




● 5๋ฉด์˜คํ”ˆ ํˆฌ๋ช… ํด๋”ฉ ๋ฐ•์Šค ๋ฆฌ๋น™ ํ”Œ๋ผ์Šคํ‹ฑ ์ˆ˜๋‚ฉํ•จ-์ค‘ํ˜• ๊ตฌ๋งค

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.



 






http://item.gmarket.co.kr/Item?goodscode=2379787038


◤ 2022๋…„ 11์›” 12์ผ ํ† ์š”์ผ

● ์ฒดํฌ ๋‚จ๋ฐฉ ๊ตฌ๋งค

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.



 

https://shopping.interpark.com/product/productInfo.do?prdNo=10069551821


◤ 2022๋…„ 11์›” 1์ผ ํ™”์š”์ผ

● ๋„คํŠธ์›Œํฌ/์„œ๋ฒ„/ํด๋ผ์ด์–ธํŠธ : 7์ผ์ฐจ

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.



 


ejs๋ฅผ ํ™œ์šฉํ•œ ๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ


>npm install ejs



◤ 2022๋…„ 10์›” 28์ผ ๊ธˆ์š”์ผ

● MYSQL DB ํ…Œ์ด๋ธ” id ์ดˆ๊ธฐํ™”

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.



(1) ๋ช…๋ น์–ด ์ž…๋ ฅ์œผ๋กœ..

 ALTER TABLE userinfo AUTO_INCREMENT = 2;


※ ์ด ๋ฐฉ์‹ ๋๋˜๊ฒƒ ๊ฐ™์€๋ฐ ์˜ค๋Š˜ ๊ฐ‘์ž๊ธฐ ์•ˆ๋จ.. ใ…ก,.ใ…กa



์–ด์จŒ๋“  ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ์ด๊ฒƒ์ €๊ฒƒ ํ•˜๋‹ค๊ฐ€ id๊ฐ’ ์ˆœ์ฐจ์ ์ด์ง€ ์•Š์•„ ๋ณด๊ธฐ ์‹ซ์–ด์„œ ์ดˆ๊ธฐํ™” ํ•จ!



DB ์ž…๋ ฅ์‹œ ์—๋Ÿฌ๊ฐ€ ๋‚˜์„œ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ์ด ์•ˆ๋˜์–ด๋„ id๋Š” ๊ณ„์† ๋‚ด๋ถ€์ ์œผ๋กœ ์˜ฌ๋ผ๊ฐ. ๊ทธ๋ž˜์„œ ํ…Œ์ŠคํŠธ ํ•  ๋•Œ๋Š” ์ด๊ฒƒ์ด ๋ณด๊ธฐ ์‹ซ๊ฑฐ๋‚˜ ํ˜ผ๋™์„ ์ค„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ดˆ๊ธฐํ™”๋ฅผ ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ. (์‹ค์ œ ์„œ๋น„์Šค ์ค‘ ์ผ ๋•Œ๋Š” ๊ฑด๋“œ๋ฆด ์ผ์ด ์—†์„ ๋“ฏ ใ…‹ใ…‹)



(2) ๋ ˆ์ฝ”๋“œ ์ดˆ๊ธฐํ™” ๋ฉ”๋‰ด๋กœ..



◤ 2022๋…„ 10์›” 27์ผ ๋ชฉ์š”์ผ

● ๋„คํŠธ์›Œํฌ/์„œ๋ฒ„/ํด๋ผ์ด์–ธํŠธ : 3์ผ์ฐจ

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.



 * EQS

Environment Query System

https://docs.unrealengine.com/4.26/en-US/InteractiveExperiences/ArtificialIntelligence/EQS/




◤ 2022๋…„ 10์›” 25์ผ ํ™”์š”์ผ

● PC ์‚ฌ์–‘

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.




(์†Œ์Šค์ฝ”๋“œ)


AMD Ryzen 7 3700X

Nvidia GTX 1660

16GB RAM

● ๋„คํŠธ์›Œํฌ/์„œ๋ฒ„/ํด๋ผ์ด์–ธํŠธ : 3์ผ์ฐจ

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.




(์†Œ์Šค์ฝ”๋“œ)


# ์ด๋ฏธ์ง€ ํŒŒ์ผ ์—…๋กœ๋“œ form ๊ตฌ์„ฑ

https://www.npmjs.com/package/formidable

# v2
npm install formidable
npm install formidable@latest
npm install formidable@v2

# or v3
npm install formidable@v3



> npm install json ํŒจํ‚ค์ง€ ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹ค์‹œ ๋นŒ๋“œํ•ด์คŒ

์ƒˆํด๋”, ์ƒˆ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ํ›„ ํ•„์š”ํ•œ ๋ชจ๋“ˆ ๋นŒ๋“œ(์„ค์น˜ ํ•ด์คŒ)

>npm install supervisor

>npm install express // express ์„œ๋ฒ„ ๊ตฌ์„ฑ

>npm install connect-multiparty

>npm init -y


◤ 2022๋…„ 10์›” 24์ผ ์›”์š”์ผ

● ๋„คํŠธ์›Œํฌ/์„œ๋ฒ„/ํด๋ผ์ด์–ธํŠธ : 2์ผ์ฐจ

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.




(์†Œ์Šค์ฝ”๋“œ)


์š”์ฒญ
RESTFull API (์ฃผ์†Œ ์ฒด๊ณ„๋ฅผ ์ฒด๊ณ„ํ™” ํ•˜์ž!^^)
GET / POST / PUT / DELETE


GET ์š”์ฒญ (ํด๋ผ์ด์–ธํŠธ)
-> ํผ(Form)์„ ์ „๋‹ฌ ํ•  ์ˆ˜ ์žˆ๋Š” html ์ „์†ก (์„œ๋ฒ„)
-> ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ (ํด๋ผ์ด์–ธํŠธ)
-> ์„œ๋ฒ„์— ์ €์žฅ ํ›„ ๋ณด์—ฌ์ฃผ๊ธฐ (์„œ๋ฒ„)



server.js
index.js
router.js
requestHandler.js
>npm init // ---> pakage.json ์ƒ์„ฑ
>npm start







◤ 2022๋…„ 10์›” 21์ผ ๊ธˆ์š”์ผ

● ๋„คํŠธ์›Œํฌ/์„œ๋ฒ„/ํด๋ผ์ด์–ธํŠธ : 1์ผ์ฐจ

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.




(์†Œ์Šค์ฝ”๋“œ)

https://ko.wikipedia.org/wiki/Node.js

https://ko.wikipedia.org/wiki/V8_(%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8_%EC%97%94%EC%A7%84)

https://www.google.com/search?q=libuv&oq=libuv&aqs=chrome..69i57j69i60.4632j0j4&sourceid=chrome&ie=UTF-8

https://docs.unrealengine.com/4.27/en-US/API/Runtime/HTTP/


◤ 2022๋…„ 10์›” 18์ผ ํ™”์š”์ผ

● ํšŒ์ „

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.




(์†Œ์Šค์ฝ”๋“œ)


FVector dir = Dest - Start;
GoalDirection = dir.SafeNormal();
FVector::DotProduct(FVector::ForwardVector, GoalDirection);
float AcosAngle = FMath::Acos(dot);
float angle = FMath::RadiansToDegrees(AcosAngle);


https://amored8701.tistory.com/m/132

◤ 2022๋…„ 10์›” 13์ผ ๋ชฉ์š”์ผ

● 11์›” 9์ผ ๋จธํ…Œ๋ฆฌ์–ผ(์‰์ด๋”) ๋ฐœํ‘œ

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.




(์†Œ์Šค์ฝ”๋“œ)

◤ 2022๋…„ 10์›” 8์ผ ํ† ์š”์ผ

● ์–ธ๋ฆฌ์–ผ ๋จธํ…Œ๋ฆฌ์–ผ ๊ฐ•์˜ ์˜์ƒ

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.



https://www.youtube.com/watch?v=AEfMLaSB7is


- ์–ธ๋ฆฌ์–ผ ๋ธ”๋ฃจํ”„๋ฆฐํŠธ๋ฅผ ์ด์šฉํ•œ ๊ธฐ๋ณธ ๋จธํ…Œ๋ฆฌ์–ผ ์ƒ์„ฑ.
- ๋…ธ๋ง๋งต ํ…์Šค์ฒ˜ ์ ์šฉ. 
- ์•Œ๋ฒ ๋„(albedo) ๋ฐ ์ธํ…์‹œํ‹ฐ(intensity) ๋ฐ ์—ฌ๋Ÿฌ ์™ธ๋ถ€ ์ฐธ์กฐ ๋ณ€์ˆ˜ ์„ค์ •
- ๋จธํ…Œ๋ฆฌ์–ผ ๋‚ด๋ถ€ ๋กœ์ง์˜ ํ•จ์ˆ˜ํ™”.
- ๋จธํ…Œ๋ฆฌ์–ผ ์ œ์ž‘์— ์ด์šฉ๋˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์œ ์šฉํ•œ ๋…ธ๋“œ๋“ค ์†Œ๊ฐœ.

◤ 2022๋…„ 9์›” 25์ผ ์ผ์š”์ผ

● [๋””์ž์ธ์ œ์ž‘] ๋งˆํ”Œ์ƒต

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.



 ์žฌ๋ฏธ๋‚œ ์‚ฌ์ดํŠธ๋ฅผ ๋ฐœ๊ฒฌ ํ–ˆ๋‹ค.

https://www.marpple.com/kr/product/detail?bp_id=3203


์ปค์Šคํ…€ ๋””์ž์ธ ์˜๋ฅ˜ ๋ฐ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์•…์„ธ์‚ฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๊ณ  ์ž…์ ํ•˜์—ฌ ํŒ๋งค๊นŒ์ง€ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด ๋†“์€ ์‚ฌ์ดํŠธ์ด๋‹ค.


๋””์ž์ธ ์‹ค๋ ฅ์€ ์žˆ๋Š”๋ฐ ์‚ฌ์—…ํ•  ๋•Œ ์ด๊ฒƒ์ €๊ฒƒ ์•Œ์•„์•ผ ํ•  ๋ณต์žก์„ฑ(?)์— ๋จธ๋ฆฌ๊ฐ€ ์•„ํ”„๋‹ค๋ฉด ์ธํ๋ฒ ์ดํ„ฐ๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  ์ด ๊ณณ์—์„œ ํ•œ๋ฒˆ ์‹œ์žฅ ๋ง›(?)์„ ๋ณด๋Š” ๊ฒƒ๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.




์–ธ๋ฆฌ์–ผ ๋กœ๊ณ  ๊ตฌ๊ธ€๋ง์œผ๋กœ ์ฐพ์•„์„œ ๋‹ค์šด ๋ฐ›์•„ ํ‹ฐ์…”์ธ  ํ•จ ๋งŒ๋“ค์–ด๋ณผ๊นŒ ์‹ถ์–ด ๋Œ์•„๋‹ค๋‹ˆ๋‹ค๊ฐ€ ์ฐพ๊ฒŒ ๋œ ๊ณณ์ธ๋ฐ ์ด๋ฏธ ์œ ๋ช…ํ•œ ๊ณณ์ด๋ ค๋‚˜? ใ…‹ใ…‹



◤ 2022๋…„ 8์›” 25์ผ ๋ชฉ์š”์ผ

● ์–ธ๋ฆฌ์–ผ ๊ณต์‹ ๋Ÿฌ๋‹ (์˜จ๋ผ์ธ ๊ฐ•์ขŒ ์‚ฌ์ดํŠธ)

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.





์–ธ๋ฆฌ์–ผ ๋Ÿฌ๋‹


◤ 2022๋…„ 8์›” 12์ผ ๊ธˆ์š”์ผ

● 13์ผ์ฐจ (๋‹ค์Œ ์ฃผ 8์›” 19์ผ ๋ฐœํ‘œ)

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.




# enlightenn (https://www.siliconstudio.co.jp/middleware/enlighten/en/)

# ๋””ํ“จ์ฆˆ (https://kblog.popekim.com/2011/12/04-part-1.html)

# ๊ทธ๋ƒฅ๊ทธ๋Ÿฐ๋ธ”๋กœ๊ทธ (๋ผ์ดํŒ…, ์ด›๋ถˆ ๊ตฌํ˜„?)

# ๋ฆฌํ”Œ๋ ‰์…˜

# Effective Modern ์ดํŽ™ํ‹ฐ๋ธŒ ๋ชจ๋˜ C++ (http://www.yes24.com/Product/Goods/20288684)
    - ํ•ญ๋ชฉ 9,10 ๋ฐœํ‘œ ์ค€๋น„

# ์ „๋ฌธ๊ฐ€๋ฅผ ์œ„ํ•œ C++ (http://www.yes24.com/Product/Goods/77669043)

# C++ ํ•ต์‹ฌ ๊ฐ€์ด๋“œ๋ผ์ธ (https://www.cppkorea.org/CppCoreGuidelines/)

# https://fonts.google.com/specimen/Flow+Circular?preview.text=0&preview.text_type=custom

◤ 2022๋…„ 8์›” 11์ผ ๋ชฉ์š”์ผ

● ๊ทธ๋ž˜ํ”ฝ ์ˆ˜์—… 12์ผ์ฐจ

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.




# UNITE SEOUL 2016 - แ„†แ…ฎแ†ฏแ„…แ…ต แ„€แ…ตแ„‡แ…กแ†ซ แ„‰แ…ฐแ„‹แ…ตแ„ƒแ…ฅแ„‹แ…ด แ„’แ…ฅแ„‹แ…ช แ„‰แ…ตแ†ฏ

◤ 2022๋…„ 8์›” 10์ผ ์ˆ˜์š”์ผ

● ํˆดํ‚ท ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ปดํŒŒ์ผ

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.





# ํˆดํ‚ท ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ปดํŒŒ์ผ

https://github.com/microsoft/DirectXTK

๋‹ค์šด๋ฐ›์•„์„œ debug/x64๋กœ ์†”๋ฃจ์…˜ ๋นŒ๋“œ

(C:\Users\stl\Downloads\DirectXTK-main\DirectXTK-main\Bin\Desktop_2022\Win32\Debug)

● C++ ์ปดํŒŒ์ผ ์‹œ๊ฐ„ ์ค„์ด๋Š” ํŒ

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.





# C++ ์ปดํŒŒ์ผ ์‹œ๊ฐ„ ์ค„์ด๋Š” ํŒ (MS ๋ธ”๋กœ๊ทธ)
https://devblogs.microsoft.com/cppblog/recommendations-to-speed-c-builds-in-visual-studio/

#include remover

◤ 2022๋…„ 8์›” 8์ผ ์›”์š”์ผ

● ๊ทธ๋ž˜ํ”ฝ ํ”„๋กœ๊ทธ๋ž˜๋ฐ 10์ผ์ฐจ

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.





# ์†Œ๋ฉธ์ž์— virtual์€ ์™œ? ์–ธ์ œ?

◤ 2022๋…„ 8์›” 5์ผ ๊ธˆ์š”์ผ

● ๊ทธ๋ž˜ํ”ฝ์Šค 9์ผ์ฐจ ์ˆ˜์—…

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.







# 9์ผ์ฐจ

- RTTI ์ฝ”๋“œ ์ถ”๊ฐ€
    
    [Custom RTTI](https://www.notion.so/Custom-RTTI-1dd5033465a64f7db6a8e7200fbc65a0)
    
- ์ฐธ๊ณ  : [https://www.codeproject.com/Tips/1068171/Cplusplus-Custom-RTTI](https://www.codeproject.com/Tips/1068171/Cplusplus-Custom-RTTI)
- ์—”ํ‹ฐํ‹ฐ - ์ปดํฌ๋„ŒํŠธ ๊ตฌ์กฐ ์ ์šฉ
    - [https://gameprogrammingpatterns.com/component.html](https://gameprogrammingpatterns.com/component.html)
- ํŠธ๋žœ์Šคํผ ์ปดํฌ๋„ŒํŠธ ์ถ”๊ฐ€
- ๋ฌผ์ฒด ๋‘๊ฐœ ๊ทธ๋ฆฌ๊ธฐ

The Modernest C++ #4 - ์ปดํฌ๋„ŒํŠธ์™€ ํ…œํ”Œ๋ฆฟ ๋ฉ”ํƒ€ํ”„๋กœ๊ทธ๋ž˜๋ฐ ไธŠ
https://gamedevforever.com/m/347

◤ 2022๋…„ 8์›” 4์ผ ๋ชฉ์š”์ผ

● ๊ทธ๋ž˜ํ”ฝ์Šค ํ”„๋กœ๊ทธ๋ž˜๋ฐ 8์ผ์ฐจ ์ˆ˜์—… (๋ฏธ๋ฆฌ ์ปดํŒŒ์ผ ์„ค์ •)

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.






# ๋ฏธ๋ฆฌ ์ปดํŒŒ์ผ ์„ค์ •








# ์‚ฌ์›์ˆ˜ ์›๋ฆฌ (https://www.youtube.com/watch?v=yea8K3D2sxM)

# Lerpf ํ•จ์ˆ˜?

● ํ˜•์‹ ์—ฐ์—ญ? type deduction??

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.





ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ํ˜•์‹์„ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•˜์ง€ ์•Š์€ ์ฝ”๋“œ ์š”์†Œ(์ฃผ๋กœ ๋ณ€์ˆ˜)์˜ ํ˜•์‹์„ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ดˆ๊ธฐ์น˜์— ๊ทผ๊ฑฐํ•ด์„œ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์„ ํ”ํžˆ type inference๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. inference๋Š” ํ”ํžˆ ์ถ”๋ก ์ด๋ผ๊ณ  ๋ฒˆ์—ญํ•˜์ง€๋งŒ, ๋ฌธ๋งฅ์— ๋”ฐ๋ผ์„œ๋Š” ‘์ถ”๋ฆฌ’๋ผ๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ๋ฅผ ๋“ค์–ด ์ œ ๋ฒˆ์—ญ์„œ ์ธ๊ณต์ง€๋Šฅ: ํ˜„๋Œ€์  ์ ‘๊ทผ๋ฐฉ์‹์—์„œ๋Š” ์ถ”๋ก ์„ inference๋ณด๋‹ค ์ข€ ๋” ํฌ๊ด„์ ์ธ reasoning์—๊ฒŒ ์–‘๋ณดํ•˜๊ณ , inference๋Š” ‘์ถ”๋ฆฌ’๋กœ ๋ฒˆ์—ญํ–ˆ์Šต๋‹ˆ๋‹ค)1.

๊ทธ๋Ÿฐ๋ฐ Effective Modern C++์—์„œ ์ €์ž ์Šค์ฝง ๋งˆ์ด์–ด์Šค(SM)๋Š” ์ผ๊ด€๋˜๊ฒŒ type deduction, ์ฆ‰ ‘ํ˜•์‹ ์—ฐ์—ญ’์ด๋ผ๋Š” ์šฉ์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฒˆ์—ญ์„œ p.27์ด๋‚˜ p.45๋ฅผ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ์ง€๋งŒ, SM์ด ์• ์ดˆ์— ํ˜•์‹ ์ถ”๋ก ์ด๋ผ๋Š” ์šฉ์–ด๋ฅผ ๋ชฐ๋ž๋˜ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ํŠนํžˆ, p.45๋ฅผ ๋ณด๋ฉด type inference๊ฐ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์„ธ๊ณ„์—์„œ “ํ”ํžˆ ์“ฐ์ธ๋‹ค”๋Š” ์ ๋„ ์•Œ๊ณ  ์žˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.   

๊ณ„์† ๋ณด๊ธฐ => https://occamsrazr.net/tt/311



◤ 2022๋…„ 8์›” 1์ผ ์›”์š”์ผ

● Effective Modern C++ ๊ณต๋ถ€ 1์ผ์ฐจ

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.





1. ํ˜•์‹ ์—ฐ์—ญ(type deduction)์ด๋ž€?

2. ํ…œํ”Œ๋ฆฟ(template)์ด ๋ญ์•ผ?

3. ํƒ€์ž…์ด๋ฆ„(type name)์ด ๋ญ ์–ด์ฉŒ๋ผ๊ณ ?

4. ์—ฐ์—ญ์€ expr์˜ ํ˜•์‹์— ์˜์กดํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ParamType์˜ ํ˜•ํƒœ์—๋„ ์˜์กดํ•œ๋‹ค?


◤ 2022๋…„ 7์›” 31์ผ ์ผ์š”์ผ

● ์–ธ๋ฆฌ์–ผ ์—”์ง„์œผ๋กœ ๋งŒ๋“  ๋ฎค์ง ๋น„์ฅฌ์–ผ๋ผ์ด์ €

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.









◤ 2022๋…„ 7์›” 29์ผ ๊ธˆ์š”์ผ

● DirectXTex ์‚ฌ์šฉ

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.







๊นƒํ—ˆ๋ธŒ์— ๊ณต๊ฐœ๋œ ์†Œ์Šค๋ฅผ ๋‹ค์šด ๋ฐ›์•„ ์ด์šฉํ•œ๋‹ค
github.com/microsoft/directxtex ์ ‘์†ํ•˜์—ฌ ์ฝ”๋“œํŒŒ์ผ์„ ZIP์œผ๋กœ ๋‹ค์šด๋กœ๋“œ ํ•œ๋‹ค.



์••์ถ•์„ ํ’€๊ณ  DirectXTex_Desktop_2022.sln ์†”๋ฃจ์…˜ ํŒŒ์ผ์„ ๋น„์ฃผ์–ผ ์ŠคํŠœ๋””์˜ค๋กœ ์—ด๊ณ  ๋นŒ๋“œ๋ฅผ ํ•ด์ค€๋‹ค.




๋นŒ๋“œ๊ฐ€ ์ž˜ ๋๋‚˜๋ฉด ์œ„์˜ ํด๋”์—์„œ DirectXTex.lib ํŒŒ์ผ์„ ์ด์šฉ์„ ํ•  ๊ฑด๋ฐ..
 




์—ฌ๊ธฐ์— ๋ณต์‚ฌ๋ฅผ ํ•ด์ฃผ๊ณ 



ํ—ค๋” ํŒŒ์ผ์„ ๋ณต์‚ฌํ•ด์„œ..




Include ํด๋”๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋ณต์‚ฌํ•ด ์ฃผ์—ˆ๋‹ค


์—”์ง„ ์†์„ฑ์—์„œ DLL๊ณผ LIB ํŒŒ์ผ์„ ๋ถˆ์–ด์˜ฌ ํŒŒ์ผ์„ ์„ค์ •ํ•ด์ฃผ๊ณ ..



ํด๋” ๊ฒฝ๋กœ ์„ค์ •๋„ ํ•ด์ค€๋‹ค



์†์„ฑ์—์„œ C/C++์€ ํ—ค๋” ํŒŒ์ผ์„ ์—ฐ๊ฒฐ, ํฌํ•จํ•ด์ค„ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์„ค์ •ํ•ด ์ค€๋‹ค




C/C++ ์„ค์ •์€ ํ—ค๋”ํŒŒ์ผ, ๋ง์ปค๋Š” dll. lib ์—ฐ๊ฒฐ ์„ค์ •.










ํ”„๋กœ์ ํŠธ์— ํฌํ•จ ์‹œํ‚ฌ ๋•Œ๋Š” ๋งˆ์šฐ์Šค๋กœ ํŒŒ์ผ์„ ๋Œ์–ด๋‹ค๊ฐ€ ๋น„์ฃผ์–ผ ์ŠคํŠœ๋””์˜ค ํด๋” ํŠธ๋ฆฌ ์ฐฝ์— ๋“œ๋ž˜๊ทธ&๋“œ๋กญ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.



ํ…์Šค์ณ ํŒŒ์ผ์„ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•œ ID3D11ShaderResourceView ์ด์šฉ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.



์ฝ”๋“œ ์˜ˆ์ œ.

//by JSHong CodeBlock//
#include "Core.h"
#include "TextureLoader.h"
#include <DirectXTex.h>
#include <Utility/STLException.h>

namespace STL
{
std::unordered_map<std::wstring, ID3D11ShaderResourceView*> TextureLoader::textureMap;

ID3D11ShaderResourceView* TextureLoader::CreateShaderResourceView(ID3D11Device* device, const std::wstring& filename)
{
auto search = textureMap.find(filename);
if (search != textureMap.end())
{
return search->second;
}

std::wstring extension = filename.substr(filename.find_last_of(TEXT(".")) + 1);
std::transform(extension.begin(), extension.end(), extension.begin(), tolower);

static auto basePath = std::filesystem::current_path().parent_path();

auto finalPath = basePath;
finalPath /= "Content\\Textures";
finalPath /= filename;

DirectX::ScratchImage image;
HRESULT hr = E_FAIL;
if (extension == TEXT("tga") || extension == TEXT("targa"))
{
hr = DirectX::LoadFromTGAFile(
finalPath.c_str(),
nullptr,
image
);
}
else
{
hr = DirectX::LoadFromWICFile(
finalPath.c_str(),
DirectX::WIC_FLAGS_NONE,
nullptr,
image
);
}

ThrowIfFailed(hr, "Failed to load scratch image.");

ID3D11Texture2D* texture = nullptr;
hr = DirectX::CreateTexture(
device,
image.GetImages(),
image.GetImageCount(),
image.GetMetadata(),
reinterpret_cast<ID3D11Resource**>(&texture)
);

ThrowIfFailed(hr, "Failed to create texture.");

D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc;
memset(&srvDesc, 0, sizeof(srvDesc));
srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
srvDesc.Texture2D.MipLevels = 1;
srvDesc.Format = image.GetMetadata().format;

ID3D11ShaderResourceView* shaderResourceView = nullptr;
hr = device->CreateShaderResourceView(
texture,
&srvDesc,
&shaderResourceView
);

SafeRelease(texture);
ThrowIfFailed(hr, "Failed to shader resource view.");

textureMap.insert({ filename, shaderResourceView });

return shaderResourceView;
}

void TextureLoader::Release()
{
for (auto pair : textureMap)
{
SafeRelease(pair.second);
}
}
}


# ์…ฐ์ด๋” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ž…๋ฌธ ์ฑ… (http://www.yes24.com/Product/Goods/7366949)



◤ 2022๋…„ 7์›” 28์ผ ๋ชฉ์š”์ผ

● ๊นƒํ—ˆ๋ธŒ ๊ณต๋ถ€ํ•ด๋ณด๊ธฐ

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.







# TDD ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ
# DDD ๋„๋ฉ”์ธ ์ฃผ๋„ ๊ฐœ๋ฐœ(์„ค๊ณ„)
    - ์˜ˆ์ „์— ์ธ๊ธฐ์˜€๋‹ค๊ฐ€ ์‚ฌ์žฅ๋˜๋‹ค๊ฐ€ ๋‹ค์‹œ ๋– ์˜ค๋ฅด๋Š” ๋ฐฉ์‹

# ๊นƒํ—ˆ๋ธŒ ๋ฌด๋ฃŒ ๊ฐ•์ขŒ (https://www.inflearn.com/course/30%EB%B6%84-%EC%8B%9C%EC%A6%8C4-%EA%B9%83%ED%97%88%EB%B8%8C)

#ํ•œ๋น› ์ „์ž์ฑ… https://www.hanbit.co.kr/realtime/



◤ 2022๋…„ 7์›” 27์ผ ์ˆ˜์š”์ผ

● ๊นƒํ—ˆ๋ธŒ ์ฒซ ์‚ฌ์šฉ

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.





# MS์˜ COM๊ตฌ์กฐ๋Š” ๋ฉ€ํ‹ฐ ํ”Œ๋žซํผ์—์„œ ํ†ต์ผํ™”๋ฅผ ์œ„ํ•ด์„œ ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ.

# ์ˆ™์ œ Effective Modern C++ ํ•ญ๋ชฉ 2 (๋งค์ฃผ ๊ธˆ์š”์ผ ๋ฐœํ‘œ)

# GitHub ๋ ˆํฌ์ง€ํ„ฐ๋ฆฌ ์„ค์ • ๋ฐ ๋™๊ธฐํ™”
    - GitHub Desktop ์„ค์น˜ ๋ฐ ์„ค์ •
    - ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ
    - .gitignore ํŒŒ์ผ ์ˆ˜์ •

◤ 2022๋…„ 7์›” 25์ผ ์›”์š”์ผ

● 7์›” 25์ผ ์›”์š”์ผ

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.





# ์–ธ๋ฆฌ์–ผ ๋นŒ๋“œ ํˆด (https://docs.unrealengine.com/4.27/ko/ProductionPipelines/BuildTools/)
    - ๋นŒ๋“œ ํˆด ๊ณต๋ถ€ํ•ด์„œ ์˜ค๋ธŒ์ ํŠธ ๋งŒ๋“ค์–ด ๋ณผ ์ˆ˜ ์žˆ์Œ

# c++ unicode (ํ…์ŠคํŠธ ์ธ์ฝ”๋”ฉ)
https://www.youtube.com/watch?v=tOHnXt3Ycfo

#๋น„์ฅฌ์–ผ ์ŠคํŠœ๋””์˜ค ์ฝ”๋“œ (์—๋””ํ„ฐ) ์‚ฌ์šฉํ•ด ๋ณผ๊นŒ?

# ์†”๋ฃจ์…˜ ์„ค์ •
    - 'STL_RenderEngineV2'์ด๋ž€ ์ด๋ฆ„์œผ๋กœ ์†”๋ฃจ์…˜ ์ƒ์„ฑ์„ ํ•ด์ฃผ๊ณ 

    - 'Game'๊ณผ 'Engine'์ด๋ž€ ์ด๋ฆ„์œผ๋กœ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ์„ ํ•ด์ฃผ์—ˆ๋‹ค.

    - Game ๋ฐ Engine ํ”„๋กœ์ ํŠธ ์†์„ฑ์—์„œ [๊ตฌ์„ฑ ์†์„ฑ]-[์ผ๋ฐ˜] ์†์„ฑ์—์„œ '์ถœ๋ ฅ ๋””๋ ‰ํ„ฐ๋ฆฌ'์™€ '์ค‘๊ฐ„ ๋””๋ ‰ํ„ฐ๋ฆฌ' ์„ค์ •์„ ํ•ด์ฃผ์—ˆ๋‹ค

    - Engine ํ”„๋กœ์ ํŠธ ์†์„ฑ์—์„œ๋Š” [์ผ๋ฐ˜]-[๊ตฌ์„ฑ ํ˜•์‹] ์—์„œ '์‹คํ–‰ํŒŒ์ผ'์„ '๋™์  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ'๋กœ ๋ณ€๊ฒฝํ•ด์ค€๋‹ค

    - Engine ํ”„๋กœ์ ํŠธ ์†์„ฑ์—์„œ [๊ตฌ์„ฑ์†์„ฑ]-[C/C++]-[์ „์ฒ˜๋ฆฌ๊ธฐ] ์ „์ฒ˜๋ฆฌ๊ธฐ ์ •์˜์— ENIGNE_BUILD_DLL;๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค

    - Game์ด๋ž€ ํ”„๋กœ์ ํŠธ์™€ Engine์ด๋ž€ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค

    - Engine์—๋Š” Sourceํด๋”๋ฅผ ๋งŒ๋“ค๊ณ  Core ํด๋”์™€ Device ํด๋”๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค (์ด๋•Œ ํ•„ํ„ฐ๊ฐ€ ์•„๋‹ˆ๋ผ ์‹ค์ œ ๋กœ์ปฌ ํด๋”๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•จ ์ฃผ์˜!)

    - Core์—๋Š” Core.cpp ์™€ Core.h ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ 

    - Device์—๋Š” Window.cpp์™€ Window.h ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜์˜€๋‹ค

    - ์ด๋•Œ Device ์šฐํด๋ฆญ ํ›„ ํด๋ž˜์Šค ์ถ”๊ฐ€๋กœ 'Widnows'๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์ƒ์„ฑํ•˜๊ณ 

    - Windows.cpp ํŒŒ์ผ๊ณผ Windows.h ํŒŒ์ผ์€ ๋งˆ์šฐ์Šค๋กœ ๋Œ์–ด๋‹ค๊ฐ€ Device ํด๋”๋กœ ์˜ฎ๊ฒจ์ฃผ์—ˆ๋‹ค

    - Lib ์—ฐ๋™์„ ์œ„ํ•ด '์„ค์ •'์„ ํ•ด์ฃผ๊ณ 

    - Game ์†์„ฑ์—์„œ๋Š” ์ฐธ์กฐ ์ถ”๊ฐ€๋ฅผ 'Engine'์œผ๋กœ ํ•ด์ฃผ์—ˆ๋‹ค

    - Game ์†์„ฑ [๋งํฌ]์—์„œ ์ถ”๊ฐ€ ์ข…์†์„ฑ ์„ค์ •์„ ํ•˜์—ฌ Engine.lib๋ฅผ ๋ช…์‹œํ•ด์ฃผ์—ˆ๋‹ค

    - Game ์†์„ฑ [์ผ๋ฐ˜]-[์ถ”๊ฐ€ ํฌํ•จ ๋””๋ ‰ํ† ๋ฆฌ]์—์„œ '$(SolutionDir)Engine\Source\'๋ฅผ ๋ช…์‹œํ•ด์ฃผ์—ˆ๋‹ค




















# Engine.Lib ํŒŒ์ผ ๊ตฌ์กฐ
    - LoadLibrary("MyDLL") DLL์„ ๋ถˆ๋Ÿฌ์˜จ๋‹ค






์›๋ž˜ ๋”ฐ๋กœ ๋นŒ๋“œ ํ•ด์•ผ ํ•˜์ง€๋งŒ ์ฐธ์กฐ ์„ค์ •์„ ํ•ด์ฃผ๋ฉด ์ž๋™์œผ๋กœ Engine ๋นŒ๋“œ ๋‹ค์‹œ ํ•ด์ฃผ๊ณ  Game ๋นŒ๋“œ๋ฅผ ํ•ด์ค€๋‹ค (์ž๋™ํ™”)





๊ฒฐ๊ณผ


๋นŒ๋“œ๋ฅผ 2๊ฐœ ์„ฑ๊ณตํ–ˆ๋‹ค๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜์˜จ๋‹ค!






๊ฐ€๋” ์‹ค์ œ ์˜ค๋ฅ˜๋Š” ์•„๋‹ˆ์ง€๋งŒ 'warning'์ด ๊ท€์ฐฎ์„ ๋•Œ๊ฐ€ ์žˆ๋‹ค. ์ด๋•Œ ๊ฒฝ๊ณ  ๋ฉ”์„ธ์ง€๋ฅผ ๊บผ์ค€๋‹ค. (ใ…‹ใ…‹ใ…‹)





์™ธ๋ถ€์—์„œ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ํ”„๋กœ์ ํŠธ์— ์ถ”๊ฐ€ํ• ๋•Œ ๋งˆ์šฐ์Šค๋กœ ๋Œ์–ด๋‹ค ๋†“์•„๋„ ๋˜์ง€๋งŒ ์ถ”๊ฐ€ [๊ธฐ์กด ํ•ญ๋ชฉ] ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜์—ฌ ํŒŒ์ผ์„ ์ฐพ์•„ import๋ฅผ ํ•˜๋Š”๊ฒŒ ์•ˆ์ „(!)ํ•˜๋‹ค.





ํ—ˆ๋ฌดํ•˜์ง€๋งŒ... ์–ด์จŒ๋“  ์ฐฝ ํ•˜๋‚˜ ๋‹ฌ๋ž‘ ๋„์šฐ๊ธฐ ์„ฑ๊ณต ใ… ใ… 




# ์ˆ™์ œ '์ด๋“์šฐ์˜ ๊ฒŒ์ž„ ์ˆ˜ํ•™ ๋ธ”๋กœ๊ทธ' 16๋ฒˆ๊นŒ์ง€ ์ฝ์–ด๋ณด๊ธฐ