Notice
Recent Posts
Recent Comments
Link
๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก์ „์ฒด ๊ธ€ (1099)

KoreanFoodie's Study

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 4-1. Socket Utils

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 4-1. Socket Utils ํ•ต์‹ฌ : 1. IOCP ์„œ๋ฒ„ ๊ตฌ์ถ•์„ ์œ„ํ•ด, ::InetNtopW, ::setsockopt ํ•จ์ˆ˜ ๋“ฑ์„ ํ™œ์šฉํ•˜์—ฌ ํ•„์š”ํ•œ ๋„คํŠธ์›Œํฌ ํ•จ์ˆ˜๋“ค์„ Wrapping ํ•œ ํ—ฌํผ ํ•จ์ˆ˜๋“ค์„ ๋งŒ๋“ค์–ด ๋ณด์ž. 2. ์†Œ์ผ“์„ ์‚ฌ์šฉํ•  ๋•Œ, Connect/Disconnect/Accept ์— ํ•ด๋‹นํ•˜๋Š” ํ•จ์ˆ˜ ํฌ์ธํ„ฐ๋ฅผ ๋งŒ๋“ค๊ณ , ์†Œ์ผ“๊ณผ ๋ฐ”์ธ๋”ฉํ•˜์—ฌ ํ•ด๋‹น ์ฃผ์†Œ๋ฅผ ์–ป์–ด ์™€ ๊ฐ„ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ::WSAIoctl ํ•จ์ˆ˜๋ฅผ ์ฐธ๊ณ ํ•˜์ž. ์ด๋ฒˆ 4 ์ฑ•ํ„ฐ๋Š”, ๋„คํŠธ์›Œํฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ์ž‘ํ•˜๋Š” ๋ถ€๋ถ„์ด๋‹ค. ์‚ฌ์‹ค ์ด๋ฒˆ ์ฑ•ํ„ฐ๋Š” ์กฐ๊ธˆ ์ƒ์†Œํ•ด ๋ณด์ด๋Š” API ๋“ค์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ, ์•ž์œผ๋กœ ๊ตฌ์ถ•ํ•  IOCP ์„œ๋ฒ„๋ฅผ ์œ„ํ•œ ๋ฐ‘์ž‘์—…์„ ํ•˜๋Š” ๋ถ€๋ถ„์ด๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ๋‚ฏ์„ค์–ด ๋ณด์ด๋Š” ๋…€์„๋“ค์ด ๋งŽ์ด ๋ณด์ด๋”๋ผ๋„ '๊ทธ๋ ค๋ ค๋‹ˆ...' ํ•˜๋ฉด์„œ, ๋ฌธ์„œ๋ฅผ ๋ณด..

Game Dev/Game Server 2023. 10. 25. 23:50
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 3-12. Completion Port ๋ชจ๋ธ

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 3-12. Completion Port ๋ชจ๋ธ ํ•ต์‹ฌ : 1. IOCP ๋ชจ๋ธ์€ ์Šค๋ ˆ๋“œ๋งˆ๋‹ค ๊ฐ–๊ณ  ์žˆ๋Š” APC ๋Œ€์‹ , Completion Port ๋ฅผ ์ค‘์•™์—์„œ ํ•˜๋‚˜ ๊ด€๋ฆฌํ•œ๋‹ค. 2. ์Šค๋ ˆ๋“œ๋Š” Alertable Wait ์ƒํƒœ๋กœ ๋Œ์ž…ํ•˜๋Š” ๊ฒƒ ๋Œ€์‹ , ์„œ๋ฒ„๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์„ ๋•Œ GetQueuedCompletionStatus ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ •๋ณด๋ฅผ ์กฐํšŒํ•ด ์•Œ๋งž์€ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. 3. ๋งŒ์•ฝ ํŠน์ • ์“ฐ๋ ˆ๋“œ๊ฐ€ ํŠน์ • ์ด๋ฒคํŠธ๋ฅผ ํ•œ ๋ฒˆ ๋” ๋ฐ›๊ธธ ์›ํ•œ๋‹ค๋ฉด, iocpHandle ๊ณผ ๋ฐ”์ธ๋”ฉํ•œ ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ WSARecv ๋“ฑ์„ ํ˜ธ์ถœํ•ด ์ด๋ฒคํŠธ๋ฅผ ๋” ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค. ๋“œ๋””์–ด... ์„ธ๋ฒˆ์งธ ์ฑ•ํ„ฐ์˜ ๋งˆ์ง€๋ง‰์ด์ž ์ œ์ผ ์ค‘์š”ํ•œ, IOCP ๋ชจ๋ธ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. ๋จผ์ €, ๋ฐ”๋กœ ์ „์— ์•Œ์•„๋ณด์•˜๋˜ Overlapped..

Game Dev/Game Server 2023. 10. 18. 21:37
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 3-11. Overlapped ๋ชจ๋ธ (์ฝœ๋ฐฑ ๊ธฐ๋ฐ˜)

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 3-11. Overlapped ๋ชจ๋ธ (์ฝœ๋ฐฑ ๊ธฐ๋ฐ˜) ํ•ต์‹ฌ : 1. ์ฝœ๋ฐฑ์„ ํ™œ์šฉํ•˜์—ฌ Overlapped ๋ชจ๋ธ์„ ๋งŒ๋“ค๋ฉด, ์ด๋ฒคํŠธ์˜ ๊ฐฏ์ˆ˜ ์ œํ•œ ์—†์ด(64๊ฐœ) ์Šค๋ ˆ๋“œ๊ฐ€ ํŠน์ • ๋„คํŠธ์›Œํฌ ์ด๋ฒคํŠธ๋ฅผ ๋ฐ›์•˜์„ ๋•Œ ์›ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. 2. ๋น„๋™๊ธฐ ์ž…์ถœ๋ ฅ์„ ์‹œ์ž‘ํ•˜๊ณ  ๋‚˜์„œ ์Šค๋ ˆ๋“œ๋Š” Alertable Wait ์ƒํƒœ๋กœ ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๊ณ , OS ์—์„œ ๋น„๋™๊ธฐ ์ž…์ถœ๋ ฅ์ด ์™„๋ฃŒ๋œ ํ›„, APC ํ๋ฅผ ๋น„์›Œ์ฃผ๋ฉฐ(ํ•œ๊บผ๋ฒˆ์— ๋น„์›Œ์ค€๋‹ค) ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ๋˜๋ฉด, ์Šค๋ ˆ๋“œ๋Š” Alertable Wait ์ƒํƒœ๋ฅผ ๋น ์ ธ๋‚˜๊ฐ„๋‹ค. 3. ์ฝœ๋ฐฑ ๊ธฐ๋ฐ˜์€ ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ๊ฐฏ์ˆ˜ ์ œํ•œ(64๊ฐœ)๊ฐ€ ์—†์œผ๋‚˜, ๋ชจ๋“  ๋น„๋™๊ธฐ ์†Œ์ผ“ ํ•จ์ˆ˜์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜์ง€๋Š” ์•Š์œผ๋ฉฐ(accept), Alertable Wait ์ƒํƒœ๋กœ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์ „ํ™˜๋˜์–ด ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ..

Game Dev/Game Server 2023. 10. 18. 14:26
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 3-10. Overlapped ๋ชจ๋ธ (์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜)

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 3-10. Overlapped ๋ชจ๋ธ (์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜) ํ•ต์‹ฌ : 1. ๋ธ”๋กœํ‚น ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•จ์ˆ˜ ํ˜ธ์ถœ ํ›„, ์ž‘์—… ์™„๋ฃŒ์‹œ๊นŒ์ง€ ๋Œ€๊ธฐ๋ฅผ ํ•˜๋ฉฐ ๋…ผ๋ธ”๋กœํ‚น ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค๋ฅธ ์ž‘์—…์„ ํ•œ๋‹ค. 2. ๋…ผ๋ธ”๋กœํ‚น/๋น„๋™๊ธฐ ๋ฐฉ์‹์˜ ๋ชจ๋ธ์ด AIO(Overlapped IO) ๋ชจ๋ธ๋กœ, ์šด์˜์ฒด์ œ๋Š” ์ด๋ฒคํŠธ ๊ฐ์ฒด๋ฅผ Signaled ์ƒํƒœ๋กœ ๋งŒ๋“ค์–ด ์™„๋ฃŒ ์ƒํƒœ๋ฅผ ์•Œ๋ ค์ค€๋‹ค. 3. WSAWaitForMultipleEvents ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด์„œ ์ด๋ฒคํŠธ ๊ฐ์ฒด์˜ Signal ์„ ํŒ๋ณ„ ํ›„, WSAGetOverlappedResult ๋ฅผ ํ˜ธ์ถœํ•ด ๋น„๋™๊ธฐ ์ž…์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•œ๋‹ค. ์ด์ „ ๊ธ€์—์„œ ์ •๋ฆฌํ–ˆ๋˜ Select ๋ชจ๋ธ ๋ง๊ณ , ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•  IOCP ๋ชจ๋ธ์„ ์œ„ํ•œ ๊ธฐ์ดˆ ์ž‘์—…์„ ํ•ด ๋ณด์ž. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” Overlapped ๋ชจ๋ธ์— ๋Œ€ํ•ด ๋‹ค๋ฃฐ ๊ฒƒ์ธ๋ฐ..

Game Dev/Game Server 2023. 10. 17. 22:19
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 3-9. WSAEventSelect ๋ชจ๋ธ

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 3-9. WSAEventSelect ๋ชจ๋ธ ํ•ต์‹ฌ : 1. WSAEventSelect ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋ฉด, ํŠน์ • ์†Œ์ผ“๊ณผ ํŠน์ • ๋„คํŠธ์›Œํฌ ์ด๋ฒคํŠธ๋ฅผ ์—ฐ๊ฒฐํ•ด, ์‹ค์ œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ๋™ํ–ˆ์„ ๋•Œ ๋ฐ”์ธ๋”ฉ๋œ ์†Œ์ผ“์œผ๋กœ๋ถ€ํ„ฐ ์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. 2. Select ๋ชจ๋ธ๊ณผ ๋‹ฌ๋ฆฌ, ๋งค๋ฒˆ Set ์„ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•œ ์†Œ์ผ“์— ํ•ด๋‹นํ•œ ์ด๋ฒคํŠธ๋งŒ Reset ํ•ด ์ฃผ๋ฉด ๋œ๋‹ค. 3. ์ด๋ฒคํŠธ ๋ฐœ๋™ ์‹œ, ์ ์ ˆํ•œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด ์ฃผ์–ด์•ผ ํ•ด๋‹น ์ด๋ฒคํŠธ๋ฅผ ๋‹ค์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด์ „ ๊ธ€์—์„œ Select ๋ชจ๋ธ์— ๋Œ€ํ•ด ๋ฐฐ์› ๋‹ค. ๊ฐ„๋‹จํžˆ ์–˜๊ธฐํ•ด์„œ, Select ๋ชจ๋ธ์„ ํ™œ์šฉํ•˜๋ฉด ํŠน์ • ์—ญํ• ์„ ํ•˜๋Š” SET(READ_SET/WRITE_SET)์— ํŠน์ • ์†Œ์ผ“์„ ๋„ฃ์–ด '๊ด€์ฐฐ' ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ฆ์œผ๋กœ์จ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ํŠน์ • ๋™์ž‘์„ ํŠน์ • ์†Œ์ผ“์ด ์ˆ˜ํ–‰ํ•˜๋„..

Game Dev/Game Server 2023. 10. 16. 21:51
[C++ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ] ํŠน์„ฑ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ , ๋ชจ๋‚˜๋“œ, ์ด๋ฒคํŠธ ์†Œ์‹ฑ

ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ฉฐ ์ด๋ฅผ C++ ๋ฅผ ์ด์šฉํ•œ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์— ์–ด๋–ป๊ฒŒ ์ ์šฉํ•˜๋ฉด ์ข‹์„์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•ต์‹ฌ : 1. ํŠน์„ฑ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ๋ฅผ ์œ ๋‹› ํ…Œ์ŠคํŠธ์™€ ํ•จ๊ป˜ ํ™œ์šฉํ•˜๋ฉด ํ…Œ์ŠคํŠธ๋ฅผ ๊ฐ„๋žตํ™”ํ•˜๋ฉด์„œ ๊ฒฌ๊ณ ํ•œ ํ…Œ์ŠคํŠธ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. 2. ๋ชจ๋‚˜๋“œ๋Š” ํŠน์ • ์ธ์ž๋ฅผ ํƒ€์ž…์œผ๋กœ ๋ฐ›์•„, unit/bind operator ๋ฅผ ํ†ตํ•ด ํŠน์ • ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์— ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค. 3. ์ด๋ฒคํŠธ ์†Œ์‹ฑ์„ ํ™œ์šฉํ•˜๋ฉด, ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ค ์—ฐ์œ ๋กœ ํ˜„์žฌ ์ƒํƒœ์— ์ด๋ฅด๊ฒŒ ๋˜์—ˆ๋Š”์ง€ ์‰ฝ๊ฒŒ ํŒŒ์•…์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ํŠน์„ฑ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์—์„œ ์œ ๋‹› ํ…Œ์ŠคํŠธ๋Š” ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค. ๊ฒฐ๊ตญ ํ”„๋กœ๊ทธ๋žจ์ด๋ผ๋Š” ๊ฒƒ์ด ํŠน์ • ์ž…๋ ฅ์„ ๋„ฃ์œผ๋ฉด ํŠน์ • ์ถœ๋ ฅ์ด ๋‚˜์˜ค๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ, ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋Š”์ง€ ๋ฐฐํฌ ์ „์— ํ•ญ์ƒ ์ ๊ฒ€ํ•ด์•ผ ํ•œ๋‹ค. ๊ธฐ์กด์—๋Š” ์‚ฌ์‹ค ํŠน์ • ์ƒํ™ฉ์— ๋Œ€..

R & D/Software Engineering 2023. 10. 4. 14:26
[C++ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ] ํผํฌ๋จผ์Šค ์ตœ์ ํ™”(๋ฉ”๋ชจ์ด์ œ์ด์…˜๊ณผ ๊ผฌ๋ฆฌ ์žฌ๊ท€, ๋ณ‘๋ ฌ ์—ฐ์‚ฐ)

ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ฉฐ ์ด๋ฅผ C++ ๋ฅผ ์ด์šฉํ•œ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์— ์–ด๋–ป๊ฒŒ ์ ์šฉํ•˜๋ฉด ์ข‹์„์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•ต์‹ฌ : 1. ๋ฉ”๋ชจ์ด์ œ์ด์…˜์„ ํ™œ์šฉํ•˜๋ฉด, ์žฌ๊ท€์ ์ธ ์—ฐ์‚ฐ์—์„œ ์ด์ „ ์—ฐ์‚ฐ์˜ ์บ์‹ฑ๊ฐ’์„ ์ด์šฉํ•ด ๋ถˆํ•„์š”ํ•œ ์—ฐ์‚ฐ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. 2. ๊ผฌ๋ฆฌ ์žฌ๊ท€ ์ตœ์ ํ™”๋Š” ์ปดํŒŒ์ผ๋Ÿฌ ์ตœ์ ํ™” ํ”Œ๋ž˜๊ทธ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ฉด ๋œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์„ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ๋‹ค. 3. ์ˆœ์ˆ˜ ํ•จ์ˆ˜์˜ ๋ถˆ๋ณ€์„ฑ์„ ์ด์šฉํ•ด ๋ณ‘๋ ฌ ์—ฐ์‚ฐ์„ ์‰ฝ๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ future ๋“ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ‘๋ ฌ ์—ฐ์‚ฐ์„ ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค, sequential ํ•œ ๋ฐฉ์‹์˜ ์„ฑ๋Šฅ์ด ๋” ๋‚˜์„ ๋•Œ๋„ ์žˆ๋‹ค. ํผํฌ๋จผ์Šค ์ตœ์ ํ™” ์‚ฌ์‹ค ๋ชจ๋“  ๊ฒฝ์šฐ์™€ ์ƒํ™ฉ์— ์•Œ๋งž์€ ์ตœ์ ํ™” ๋ฐฉ๋ฒ•์ด๋ž€ ์—†๋‹ค. ์–ด๋–ค ๊ฒฝ์šฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํฌ์ƒํ•ด์„œ๋ผ๋„ ์†๋„๋ฅผ ๋†’์—ฌ์•ผ ํ•  ์ˆ˜๋„ ์žˆ๊ณ , ๋‹ค๋ฅธ ๊ฒฝ์šฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์•„๋ผ๊ธฐ ์œ„ํ•ด ๋น ..

R & D/Software Engineering 2023. 9. 28. 19:41
[C++ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ] ํ•จ์ˆ˜ํ˜• ์—ฐ์‚ฐ์ž๋ฅผ ํ™œ์šฉํ•œ ์ค‘๋ณต ์ œ๊ฑฐ

ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ฉฐ ์ด๋ฅผ C++ ๋ฅผ ์ด์šฉํ•œ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์— ์–ด๋–ป๊ฒŒ ์ ์šฉํ•˜๋ฉด ์ข‹์„์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•ต์‹ฌ : 1. ํ•จ์ˆ˜ํ˜• ์—ฐ์‚ฐ์ž๋ฅผ ํ™œ์šฉํ•ด ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ณ  DRY ์›์น™์„ ์ง€ํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. 2. ํŒŒ๋ผ๋ฏธํ„ฐ ์œ ์‚ฌ์„ฑ์ด๋‚˜ ํ•จ์ˆ˜ ์ค‘๋ณต ์‚ฌ์šฉ์˜ ์œ ์‚ฌ์„ฑ์€ ํŒŒ์…œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํŠน์ˆ˜ํ™”๋‚˜ ํ•จ์ˆ˜ํ˜• ํ•ฉ์„ฑ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. 3. ๊ณ ์ฐจ์› ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๊ตฌ์กฐ์  ์œ ์‚ฌ์„ฑ๊ณผ ์ˆจ์€ ๋ฃจํ”„๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ณผ๋„ํ•œ ์ถ”์ƒํ™”๋Š” ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์—๊ฒŒ ์ง„์ž…์žฅ๋ฒฝ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Œ์— ์œ ์˜ํ•˜์ž. ํ•จ์ˆ˜ํ˜• ์—ฐ์‚ฐ์ž๋ฅผ ํ™œ์šฉํ•œ ์ค‘๋ณต ์ œ๊ฑฐ ํ•จ์ˆ˜ํ˜• ์—ฐ์‚ฐ์ž๋ฅผ ์ ๊ทน ํ™œ์šฉํ•จ์œผ๋กœ์จ, ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ณ  DRY ์›์น™์„ ์ง€ํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. DRY ์›์น™์€ Don't Repeat Yourself ์˜ ์•ฝ์ž๋กœ, ์ฝ”๋“œ๊ฐ€ ์ง€์‹์„ ๋ณด๊ด€ํ•˜๋Š” ๋ฐฉ์‹์ด๋ผ๋Š” ์ดํ•ด์— ๋ฐ”ํƒ•์„ ๋‘”๋‹ค. ์ด์ƒ์ ..

R & D/Software Engineering 2023. 9. 28. 17:21
[C++ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ] ํ•จ์ˆ˜๋กœ ์„ค๊ณ„ํ•˜๊ธฐ (feat. ํ‹ฑํƒํ† ์™€ STL)

ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ฉฐ ์ด๋ฅผ C++ ๋ฅผ ์ด์šฉํ•œ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์— ์–ด๋–ป๊ฒŒ ์ ์šฉํ•˜๋ฉด ์ข‹์„์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•ต์‹ฌ : 1. ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์€ ์ˆœ์ˆ˜ ํ•จ์ˆ˜์˜ ์ง‘ํ•ฉ์œผ๋กœ ํ‘œํ˜„๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์ด ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ํ•จ์ˆ˜ ์ง‘ํ•ฉ์œผ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. 2. ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ ์ค‘์‹ฌ์œผ๋กœ ์‚ฌ๊ณ ํ•˜๋ฉฐ, ์ค‘๊ฐ„ ๋‹จ๊ณ„์˜ ๋ณ€ํ™˜ ๊ณผ์ •์„ ์ฐจ๋ก€๋Œ€๋กœ ๊ตฌํ˜„ํ•ด ๋ณด์ž. ํ•จ์ˆ˜ํ˜•์œผ๋กœ ์‚ฌ๊ณ ํ•˜๊ธฐ ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์€ ์ˆœ์ˆ˜ ํ•จ์ˆ˜์˜ ์ง‘ํ•ฉ์œผ๋กœ ํ‘œํ˜„๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์ด ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ํ•จ์ˆ˜ ์ง‘ํ•ฉ์œผ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•จ์ˆ˜๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ, ๋‹ค์Œ ์Šคํ…์„ ๋ฐŸ์œผ๋ฉด ํ•จ์ˆ˜๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋กœ๋ถ€ํ„ฐ ์ถœ๋ฐœํ•œ๋‹ค. ์ถœ๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ์ •์˜ํ•œ๋‹ค. ์ผ๋ จ์˜ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅ ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฐ ๋‹จ๊ณ„์ธ ๋ณ€ํ˜• ๊ณผ์ •(์ˆœ์ˆ˜ ํ•จ์ˆ˜)๋ฅผ ์ •์˜ํ•œ๋‹ค. ์‚ฌ์‹ค ์œ„ ๋‚ด์šฉ์€..

R & D/Software Engineering 2023. 9. 28. 13:19