Notice
Recent Posts
Recent Comments
Link
관리 메뉴

λͺ©λ‘μ „체 κΈ€ (1099)

KoreanFoodie's Study

[C++ ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°] νŒŒμ…œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό 컀링

ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μ— λŒ€ν•΄ μ•Œμ•„λ³΄λ©° 이λ₯Ό C++ λ₯Ό μ΄μš©ν•œ μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œμ— μ–΄λ–»κ²Œ μ μš©ν•˜λ©΄ 쒋을지 μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. 핡심 : 1. νŒŒμ…œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ N 개의 인자λ₯Ό 가진 λžŒλ‹€μ—μ„œ ν•˜λ‚˜μ˜ 인자λ₯Ό 바인딩해 N-1 개의 인자λ₯Ό κ°€μ§€λŠ” λžŒλ‹€λ‘œ λ³€ν™˜ν•˜λŠ” 연산을 μ˜λ―Έν•œλ‹€. 2. 컀링은 N 개의 인자λ₯Ό 가진 ν•¨μˆ˜λ₯Ό ν•˜λ‚˜μ˜ 인자λ₯Ό 가진 ν•¨μˆ˜ N 개둜 λΆ„ν•΄ν•˜λŠ” 과정을 μ˜λ―Έν•œλ‹€. 3. νŒŒμ…œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό 컀링을 μ΄μš©ν•˜λ©΄ 쀑볡을 μ œκ±°ν•  수 있고, 더 λ²”μš©μ μΈ μ½”λ“œλ₯Ό 생성할 수 μžˆλ‹€. μš°λ¦¬λŠ” 이번 κΈ€μ—μ„œ νŒŒμ…œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό 컀링을 배우며, 이 두 가지가 μ–΄λ–»κ²Œ μ—°κ΄€λ˜μ—ˆλŠ”μ§€ μ•Œμ•„λ³Ό 것이닀. νŒŒμ…œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ νŒŒμ…œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄λž€, N 개의 인자λ₯Ό κ°€μ§€λŠ” λžŒλ‹€μ—μ„œ ν•˜λ‚˜μ˜ 인자λ₯Ό 바인딩해 N-1 개의 인자λ₯Ό κ°€μ§€λŠ” λžŒλ‹€λ₯Ό..

R & D/Software Engineering 2023. 9. 28. 12:32
[C++ ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°] ν•¨μˆ˜ν˜• ν•©μ„± (C++ μ—μ„œ ν•¨μˆ˜ ν•©μ„±ν•˜κΈ°)

ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μ— λŒ€ν•΄ μ•Œμ•„λ³΄λ©° 이λ₯Ό C++ λ₯Ό μ΄μš©ν•œ μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œμ— μ–΄λ–»κ²Œ μ μš©ν•˜λ©΄ 쒋을지 μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. 핡심 : 1. ν•¨μˆ˜(λžŒλ‹€)λŠ” 값이닀. 고둜 ν•¨μˆ˜λŠ” 인자둜 전달할 수 있고, λžŒλ‹€λ₯Ό λ°˜ν™˜ν•  수 있으며 λžŒλ‹€λ„ λžŒλ‹€λ₯Ό λ°˜ν™˜ν•  수 μžˆλ‹€. 2. 순수 ν•¨μˆ˜μ˜ 쑰합을 ν†΅ν•œ μ„€κ³„λŠ” λΆˆλ³€μ„±μ„ 보μž₯ν•œλ‹€. μš°λ¦¬λŠ” κ°„λ‹¨ν•œ λžŒλ‹€λ₯Ό μ‘°ν•©ν•˜μ—¬ κ³ μ°¨μ›μ˜ ν•©μ„± ν•¨μˆ˜λ₯Ό λ§Œλ“€μ–΄λ‚Ό 수 μžˆλ‹€. 3. ν•¨μˆ˜ν˜• 합성을 톡해 쀑볡을 효과적으둜 μ œκ±°ν•  수 μžˆλ‹€. λ˜ν•œ μ—¬λŸ¬ 인자λ₯Ό 가진 λžŒλ‹€λ„ ν•˜λ‚˜μ˜ μΈμžμ™€ 캑쳐된 값듀을 가진 λ‹€μˆ˜μ˜ λžŒλ‹€λ‘œ λΆ„ν•΄ν•  수 μžˆλ‹€. ν•¨μˆ˜ν˜• ν•©μ„± μš°λ¦¬λŠ” 고등학ꡐ μ‹œκ°„μ— ν•¨μˆ˜ 합성에 λŒ€ν•΄ λ°°μ› λ‹€(ν˜Ήμ€ μ€‘ν•™κ΅μΌμˆ˜λ„ μžˆλ‹€). λ†€λžκ²Œλ„, μš°λ¦¬λŠ” C++ μ—μ„œ λ™μΌν•œ μž‘μ—…μ„ ν•  수 μžˆλ‹€. πŸ˜› μš°λ¦¬λŠ” 이제 λžŒλ‹€λ₯Ό ..

R & D/Software Engineering 2023. 9. 28. 00:43
[C++ ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°] 순수 ν•¨μˆ˜μ™€ λžŒλ‹€

ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μ— λŒ€ν•΄ μ•Œμ•„λ³΄λ©°, 이λ₯Ό C++ λ₯Ό μ΄μš©ν•œ μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œμ— μ–΄λ–»κ²Œ μ μš©ν•˜λ©΄ 쒋을지 μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. 핡심 : 1. ν•¨μˆ˜λŠ” 값이닀. ν•¨μˆ˜λŠ” 인자둜 전달할 수 μžˆλ‹€. κ°„λ‹¨ν•œ ν•¨μˆ˜λ₯Ό μ‘°ν•©ν•΄ 더 크고 λ³΅μž‘ν•œ ν•¨μˆ˜λ₯Ό λ§Œλ“€ 수 μžˆλ‹€. 2. 순수 ν•¨μˆ˜μ˜ 쑰합을 ν†΅ν•œ μ„€κ³„λŠ” λΆˆλ³€μ„±μ„ 보μž₯ν•œλ‹€. 3. λžŒλ‹€λ₯Ό 순수 ν•¨μˆ˜μ²˜λŸΌ μ‚¬μš©ν•˜μž. λ˜ν•œ 캑쳐에 λŒ€ν•΄ λͺ…ν™•νžˆ μ•Œμ•„λ‘μž. 사싀 ν•„μžλ„ ν•™λΆ€ κ³Όμ • λ•Œ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄ κ΄€λ ¨ μˆ˜μ—…μ„ λ“€μœΌλ©° ν•¨μˆ˜ν˜• μ–Έμ–΄λ₯Ό μ ‘ν–ˆμ§€λ§Œ, κ·Έ λ‹Ήμ‹œμ—λŠ” ν”„λ‘œκ·Έλž˜λ° μžμ²΄μ— λŒ€ν•œ ν₯λ―Έκ°€ 그닀지 μ—†μ–΄μ„œ κ·ΈλŸ°μ§€ 큰 관심을 갖지 μ•Šμ•˜λ‹€. μ—΄μ‹¬νžˆ ν•˜μ§€λ„ μ•Šμ•˜κ³ . πŸ˜… κ·ΈλŸ¬λ‹€ λ³΄λ‹ˆ ν•¨μˆ˜ν˜• 언어에 λŒ€ν•œ 지식은 머리 속 μ–΄λŠ ꡬ석에 앉아 λ¨Όμ§€λ§Œμ„ μˆ˜μ§‘ν•˜κ³  μžˆμ—ˆλ‹€. κ·ΈλŸ¬λ‹€ λ‹€μ‹œ 이 책을 μ½μœΌλ©΄μ„œ ν•¨μˆ˜ν˜•..

R & D/Software Engineering 2023. 9. 27. 11:48
[C++ κ²Œμž„ μ„œλ²„] 3-8. Select λͺ¨λΈ

[C++ κ²Œμž„ μ„œλ²„] 3-8. Select λͺ¨λΈ 핡심 : 1. Select λͺ¨λΈμ„ μ‚¬μš©ν•˜λ©΄ μ†ŒμΌ“μ˜ μœ νš¨μ„±μ„ 데이터λ₯Ό μ£Όκ³  λ°›κΈ° 전에 미리 체크할 수 μžˆλ‹€. 2. κ΄€μ°°ν•˜κ³ μž ν•˜λŠ” μ†ŒμΌ“μ„ fd_set 에 λ„£κ³ , select ν•˜λ©΄ 관찰이 μ‹œμž‘λ˜λ©°, 적어도 ν•˜λ‚˜μ˜ μ†ŒμΌ“μ΄ μ€€λΉ„λ˜λ©΄ λ¦¬ν„΄λœλ‹€(λ‚™μ˜€μžλŠ” μ•Œμ•„μ„œ 제거됨) 3. μ„Έμ…˜μ„ μ΄μš©ν•΄μ„œ μ†ŒμΌ“μ„ 관리할 수 μžˆλ‹€. μ„Έμ…˜μ€ 두 κΈ°κΈ°κ°„μ˜ 톡신이 μ—°κ²°λ˜μ—ˆμ„ λ•Œ κ΅¬μΆ•λ˜κ³ , λŠκ²Όμ„ λ•Œ νŒŒκ΄΄λ˜λŠ” μ–‘λ°©ν–₯ 링크라고 μƒκ°ν•˜λ©΄ λœλ‹€. 이번 μ‹œκ°„μ—λŠ” select ν•¨μˆ˜κ°€ 핡심이 λ˜λŠ” Selet λͺ¨λΈμ— λŒ€ν•΄ μ•Œμ•„λ³΄μž. Select λͺ¨λΈμ„ μ‚¬μš©ν•˜λ©΄ μ†ŒμΌ“ ν•¨μˆ˜ 호좜이 성곡할 μ‹œμ μ„ 미리 μ•Œ 수 μžˆλ‹€. 이것은 μ•„λž˜μ™€ 같은 μƒν™©μ—μ„œ 큰 이점으둜 μž‘μš©ν•œλ‹€ : λΈ”λ‘œν‚Ή μ†ŒμΌ“ : 쑰건이 λ§Œμ‘±λ˜μ§€ μ•Šμ•„μ„œ ..

Game Dev/Game Server 2023. 9. 25. 16:35
[C++ κ²Œμž„ μ„œλ²„] 3-7. λ…ΌλΈ”λ‘œν‚Ή μ†ŒμΌ“

[C++ κ²Œμž„ μ„œλ²„] 3-7. λ…ΌλΈ”λ‘œν‚Ή μ†ŒμΌ“ 핡심 : 1. λ…ΌλΈ”λ‘œν‚Ή μ†ŒμΌ“μ€, λΈ”λ‘œν‚Ή μ†ŒμΌ“κ³Ό λ‹€λ₯΄κ²Œ μ—°κ²° 및 μ†‘μˆ˜μ‹ μ΄ μΌμ‹œμ μœΌλ‘œ λΆˆκ°€λŠ₯ν•œ 경우, SpinLock 처럼 while 문을 돌며 λ‹€μ‹œ μ‹œλ„λ₯Ό ν•œλ‹€. 2. λ…ΌλΈ”λ‘œν‚Ή μ†ŒμΌ“μ„ λ§Œλ“œλŠ” 것은 κ°„λ‹¨ν•˜λ‹€. ioctlsocket 을 μ‚¬μš©ν•˜λ©΄ λœλ‹€. 3. λ…ΌλΈ”λ‘œν‚Ή μ†ŒμΌ“ μ‚¬μš©μ‹œ, WSAEWOULDBLOCK μ—λŸ¬κ°€ λ‚˜μ˜¬ 경우, λ‹€μ‹œ μ‹œλ„ν•œλ‹€. μ΄λŠ” μ†‘μˆ˜μ‹  λ²„νΌμ˜ μƒνƒœκ°€ λΉ„μ–΄ μžˆκ±°λ‚˜ 가득 μ°¨ μžˆμ–΄ μ†‘μˆ˜μ‹ μ΄ λΆˆκ°€λŠ₯ν•œ μž„μ‹œμ μΈ μƒνƒœμ΄κΈ° λ•Œλ¬Έμ΄λ‹€. μš°λ¦¬κ°€ 이전 κΈ€μ—μ„œ ν™œμš©ν–ˆλ˜ 것은 μ†ŒμΌ“μ€ λΈ”λ‘œν‚Ή μ†ŒμΌ“μ΄λ‹€. λ”°λ‘œ μ˜΅μ…˜μ„ μ„€μ •ν•œ 것 κ°™μ§€λŠ” μ•Šμ€λ°? κ·ΈλŸΌμ—λ„ λΆˆκ΅¬ν•˜κ³ , μš°λ¦¬κ°€ λ§Œλ“  μ†ŒμΌ“μ΄ 기본적으둜 λΈ”λ‘œν‚Ή μ†ŒμΌ“μœΌλ‘œ 작힌 것인데.. λ…ΌλΈ”λ‘œν‚Ή μ†ŒμΌ“μ„ μ΄μ•ΌκΈ°ν•˜κΈ° 전에 λ¨Όμ € λΈ”λ‘œν‚Ή μ†ŒμΌ“..

Game Dev/Game Server 2023. 9. 25. 11:07
[C++ κ²Œμž„ μ„œλ²„] 3-5. UDP μ„œλ²„ μ‹€μŠ΅

[C++ κ²Œμž„ μ„œλ²„] 3-5. UDP μ„œλ²„ μ‹€μŠ΅ 핡심 : 1. UDP λŠ” TCP 와 λ‹€λ₯΄κ²Œ, νŒ¨ν‚· κ°„μ˜ 경계가 있고 속도가 λΉ λ₯΄λ‹€. λ‹€λ§Œ νŒ¨ν‚·μ˜ μˆœμ„œκ°€ 보μž₯λ˜μ§€ μ•ŠμœΌλ©°, 데이터가 μœ μ‹€λ  μœ„ν—˜μ΄ μ‘΄μž¬ν•œλ‹€. 2. UDP μ‹€μŠ΅μ˜ 경우, TCP μ‹€μŠ΅ μ½”λ“œμ—μ„œ ::connect 와 ::listen 만 μ—†μœΌλ©΄ λ‘œμ§μ€ 거의 λ™μΌν•˜λ‹€. 3. UDP λŠ” Connected UDP(μΌμ’…μ˜ 즐겨찾기 κΈ°λŠ₯)을 ν™œμš©ν•˜λ©΄, sendto λŒ€μ‹  send λ₯Ό, recvfrom λŒ€μ‹  recv λ₯Ό μ‚¬μš©ν•˜μ—¬ API λ₯Ό 더 κ°„λ‹¨ν•˜κ²Œ μ‚¬μš© κ°€λŠ₯ν•˜λ‹€. μ €λ²ˆμ—λŠ” TCP λ°©μ‹μœΌλ‘œ 데이터λ₯Ό μ „μ†‘ν•˜λŠ” μ‹€μŠ΅μ„ ν–ˆμœΌλ‹ˆ, μ΄λ²ˆμ—λŠ” UDP λ°©μ‹μœΌλ‘œ 데이터λ₯Ό 전솑해 보자. 사싀 그리 λ‹€λ₯΄μ§€λŠ” μ•Šλ‹€. 쑰금 κ°„μ†Œν™”λ˜μ—ˆλ‹€κ³  ν•˜λ©΄ 될까? 3-2 에 보면 기본적으둜 μ†ŒμΌ“..

Game Dev/Game Server 2023. 9. 22. 14:18
[C++ κ²Œμž„ μ„œλ²„] 3-4. TCP vs UDP

[C++ κ²Œμž„ μ„œλ²„] 3-4. TCP vs UDP 핡심 : 1. TCP 와 UDP λŠ” λ„€νŠΈμ›Œν¬ ν”„λ‘œν† μ½œ 쀑, 트랜슀포트 λ ˆμ΄μ–΄μ— ν•΄λ‹Ήν•˜λŠ” κ·œμΉ™μ΄λ‹€. 2. TCP λŠ” μ•ˆμ „ν•˜λ©°(데이터 μœ μ‹€μ΄ μ—†μŒ), λ°μ΄ν„°μ˜ μˆœμ„œκ°€ 보μž₯λœλ‹€. ν•˜μ§€λ§Œ 각 νŒ¨ν‚·μ˜ 경계(Boundary)κ°€ μ—†μ–΄ 데이터가 ν•©μ³μ§€κ±°λ‚˜ μͺΌκ°œμ§ˆ 수 있으며, UDP 에 λΉ„ν•΄ μƒλŒ€μ μœΌλ‘œ λŠλ¦¬λ‹€. 3. UDP λŠ” λΉ λ₯΄λ©°(일단 데이터λ₯Ό 보내고 λ΄„), νŒ¨ν‚·μ˜ 경계가 μžˆμ–΄ 데이터가 μͺΌκ°œμ§€κ±°λ‚˜ 합쳐지지 μ•ŠλŠ”λ‹€. ν•˜μ§€λ§Œ νŒ¨ν‚· μ „μ†‘μ˜ μˆœμ„œκ°€ 보μž₯λ˜μ§€ μ•ŠμœΌλ©°, 데이터가 μœ μ‹€λ  μœ„ν—˜μ„±μ΄ μžˆλ‹€. 이번 κΈ€μ—μ„œλŠ” κ°„λ‹¨νžˆ TCP 와 UDP 의 차이에 λŒ€ν•΄ μ•Œμ•„λ³΄λ„λ‘ ν•˜μž. λ„€νŠΈμ›Œν¬ 곡뢀λ₯Ό 깊게 ν•˜μ§€ μ•Šμ•˜μ–΄λ„, μ˜€λ©°κ°€λ©° κ·Έ λ‘˜μ˜ 차이에 λŒ€ν•΄μ„œλŠ” μ•Œκ²Œ λ˜λŠ”λ°, 이번 κΈ€μ—μ„œλŠ” 그에 ..

Game Dev/Game Server 2023. 9. 21. 20:13
[C++ κ²Œμž„ μ„œλ²„] 3-3. TCP μ„œλ²„ μ‹€μŠ΅

[C++ κ²Œμž„ μ„œλ²„] 3-3. TCP μ„œλ²„ μ‹€μŠ΅ 핡심 : 1. TCP μ—μ„œλŠ” μ†‘μˆ˜μ‹  버퍼가 μ‘΄μž¬ν•˜λ©°, 톡신을 ν•  λ•Œ 버퍼에 데이터λ₯Ό λ‹΄κ³  κΊΌλ‚΄λŠ” λ°©μ‹μœΌλ‘œ 톡신이 이루어진닀. 2. ν΄λΌμ—μ„œ 솑신을 ν•˜λ €κ³  ν•˜λŠ”λ° 솑신 버퍼가 가득 μ°¨ μžˆκ±°λ‚˜, μ„œλ²„μ—μ„œ μˆ˜μ‹ μ„ ν•˜λ €κ³  ν•˜λŠ”λ° μˆ˜μ‹  버퍼가 λΉ„μ–΄ 있으면 Blocking μƒνƒœμ— λŒμž…ν•œλ‹€. 3. μ‹ κΈ°ν•˜κ²Œλ„, 버퍼 λ‚΄ 각 데이터 λ³„λ‘œλŠ” λͺ…ν™•ν•œ 경계가 μ—†μ–΄ λ°μ΄ν„°λŠ” ν•©μ³μ§€κ±°λ‚˜ μͺΌκ°œμ Έμ„œ 인식될 수 μžˆλ‹€. μ €λ²ˆμ— μ†ŒμΌ“ ν”„λ‘œκ·Έλž˜λ° 기초λ₯Ό λ‹€λ£¨λ©΄μ„œ, μ†ŒμΌ“μ„ λ§Œλ“€κ³ , μ£Όμ†Œλ₯Ό ν• λ‹Ήν•˜κ³ , μ†ŒμΌ“κ³Ό μ£Όμ†Œλ₯Ό ν• λ‹Ήν•œ ν›„, μ‹€μ œλ‘œ 톡신을 ν•΄λ³΄λŠ” μ‹€μŠ΅μ„ μ§„ν–‰ν–ˆλ‹€. 이번 μ‹œκ°„μ—λŠ” TCP μ‹€μŠ΅μ„ ν•΄ λ³Ό μ˜ˆμ •μ΄λ‹€. μ½”λ“œμ™€ PPT λ₯Ό λ³΄λ©΄μ„œ, μ‹€μŠ΅μ„ 진행해 보자. 일단 μ €λ²ˆ μ‹œκ°„μ— μ†ŒμΌ“ 바인딩 μž‘μ—… ..

Game Dev/Game Server 2023. 9. 21. 13:29