프로그래밍/기록, 개념, 용어
-
난수 동기화프로그래밍/기록, 개념, 용어 2018. 2. 6. 19:37
컴퓨터에서 진정한 의미의 난수는 없다. 유사 난수 발생기가 동기화 불일치의 원인이 될 때가 있다. 게임에서 임의성은 필수적인 요소이므로 이것이 빠질 수도 없다.클라이언트/서버 구조라면 서버에서 임의의 값을 지정함으로 동기화를 어떻게든 할 수 있다. 하지만 클라이언트 난수 시뮬레이션이 필요한 p2p에서라면? c, 그리고 c++에서의 난수 발생srand는 난수 발생기의 시드 값을 지정하고, rand는 난수를 생성한다. srand로 특정 시드를 지정하고 나면 rand는 같은 순서로 일련의 숫자를 생성한다.c 표준의 난수 발생기는(rand, srand) 어떤 난수 발생 알고리즘을 쓸지 명시되어있지 않다.따라서 유저A의 PC와 유저 B의 PC는 같은 rand 호출에도 내부적으론 다른 알고리즘으로 돌아갈 여지가 있..
-
DNS와 DDNS프로그래밍/기록, 개념, 용어 2017. 5. 13. 22:47
DNS(Domain Name System)이름을 IP 주소로 바꿔주는 시스템. 우리에게 익숙한 zepeh.tistory.com 같은 사이트 주소는 이름에 불과하다.(이와 같은 이름을 도메인 네임(Domain Name)이라고 한다.) DNS는 도메인 네임을 실제 접속할 수 있는 IP 주소(IP Address)로 바꿔주는 시스템으로 역할을 해주는 컴퓨터를 네임 서버라고 부른다. 사용자: DNS! zepeh.tistory.com의 주소를 알려줘!DNS: 100.100.10.1사용자: 100.100.10.1 로 접속! DDNS(Dynamic Domain Name System)DNS에 zepeh.tistory.com에 해당하는 내 IP 주소가 등록되어 있다. 근데 내 IP 주소가 바뀌었다. DNS는 내 바뀐 IP..
-
함수 호출 규약 vectorcall프로그래밍/기록, 개념, 용어 2016. 4. 17. 02:33
글이 쓰여진 시점 visual studio 전용의 호출 규약으로(2013 이후 버전), 함수 인수가 가능한 한 레지스터에 전달되도록 지정하는 호출 규약. 비교적 최근에 추가 되었으며 레지스터를 최대한 활용하기 위한 호출 규약이다. 호출자가 오른쪽에서 왼쪽으로 스택에 푸시. x86에선 호출된 함수는 반환되기 전에 스택을 지운다지만, x64에선 호출자가 스택을 유지 관리한다고 다소 모호하게 설명 되어있다. 참고https://msdn.microsoft.com/ko-kr/library/windows/apps/dn375768(v=vs.120).aspxhttp://lunapiece.net/Article
-
방문자 패턴(Visitor Pattern) c++ 예제프로그래밍/기록, 개념, 용어 2015. 12. 23. 18:59
방문자 패턴 없이 기능 구현을 했을 때 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153class account{public: acc..
-
데이터 통로 통신 시스템프로그래밍/기록, 개념, 용어 2015. 10. 6. 18:00
함수 형태의 이벤트 시스템을 데이터 주도 시스템으로 바꿀 때 생기는 문제 중 하나는 서로 다른 이벤트끼리 호환되지 않을 수 있다는 점이다.예를 들어, EMP 총이 있다고 하자. 이 총을 사용하면 전자 장비 꺼지게 되고, 작은 동물들은 겁에 질려 도망가며, 주변에 있던 식물들은 휘청거린다.동물들은 Scare 이벤트에 반응해 도망간다. 전자 장비들은 TurnOff 이벤트에 반응해 꺼진다. 식물들은 Wind 이벤트 핸들러를 가진다.여기서 문제는, EMP 총이 이런 이벤트 핸들러와 호환되지 않는다는 점이다. 따라서 결국엔 새 이벤트 타입(ex: EMP Fire)을 만들고 모든 게임 객체가 이것에 반응하도록 짜야 하는 상황이 된다. 생각의 반전 이 문제는, 이벤트 타입이란 것을 아예 생각하지 말고, 게임 객체에서..
-
socket. shutdown과 close의 차이프로그래밍/기록, 개념, 용어 2015. 10. 4. 18:05
shutdown 네트워크 연결을 종료시키는 데 사용Shutdown의 인자로 송신/수신을 선택적으로 종료할 수 있음. close 소켓을 닫음. 닫힌 소켓은 더 이상 사용할 수 없다. 세부 사항: 송신 버퍼(send buffer)에 보낼 데이터가 남아있다면 모두 보낸 후에 연결 종료 절차를 따른다고 한다. 또, 참조 카운터를 하나 낮추고, 0이 되었을 때 소켓을 닫는데, 이 말은, 다른 소켓이 다른 프로세스 등으로 복사가 되면 참조 카운터가 1 증가되고, 모두 close 되면 소켓이 닫힌다는 뜻이다. 즉, open의 의미는 연결을 뜻하는 게 아닌, 소켓 참조 카운터가 0이 아니라는 것을 의미한다.(open의 의미가 곧 연결인줄 알았었던 기억이 … -_-..)
-
[스크랩] Graceful Shutdown에 관하여프로그래밍/기록, 개념, 용어 2015. 7. 11. 01:35
3. Graceful Shutdown에 관하여 위에서 검토한 바와 같이 Buffer에 데이터가 남아있는 상태에서 연결을 강제로 종료할 경우 SendBuffer에 있는 데이터가 유실될 수도 있는데, 이러한 종료방식을 "Abortive Shutdown"이라고 합니다. 반대로 TCP 프로토콜의 4-way Handshake에 따라 데이터 유실 없이 종료하는 것을 "Graceful Shutdown"이라고 합니다. 인터넷의 TIME_WAIT 관련된 글 중 일부는 Linger 옵션을 사용하여 TIME_WAIT를 남기지 않고 세션을 종료하는 것을 "Graceful Shutdown"이라고 표현한 글이 있는데, 이것은 잘못된 표현입니다. 오히려 TIME_WAIT는 Graceful Shutdown이 이루어지는 과정에서 자연..