프로그래밍
-
Idempotent Key프로그래밍/기록, 개념, 용어 2020. 6. 14. 11:56
Idempotent(멱등): 여러 번 연산 해도 결과가 달라지지 않는. Idempotent key, Idempotentcy key, Idem... 등의 이름 네트워크 환경 위에서 구동되는 소프트웨어의 경우, 우연치 않게 같은 작업이 2번 이상 요청되는 것을 막기 위해 사용하는 키, 또는 값에 이 이름을 사용하기도 함. for safely retrying requests without accidentally performing the same operation twice. 이 개념을 활용하면 다음 상황을 어느정도 예방할 수 있음 0. 유저는 출금 요청을 보냄. 그러나 유저는 네트워크 환경이 안 좋아서 응답을 못 받음. 1. 유저는 요청이 처리 안 된줄 알고 한번 더 출금 요청을 보냄 2. 그러나 실제로는 ..
-
컴퓨터에서의 문자 표현프로그래밍/기록, 개념, 용어 2020. 5. 28. 22:53
ASCII 미국에서 나온 표준(ASCII, American Standard Code for Information Interchange) 0~255, 8비트 모두를 사용 UTF-8 인코딩과 호환 됨 MULTIBYTE 1바이트에 담을 수 없는 언어들을 위해 나옴 가변 크기 문자를 2바이트 내에 표현 아스키에 있는 문자들은 1바이트로 표현 언어마다 시작 비트 위치가 다르다 MULTIBYTE - EUC(Extended Unix Code) 아스키 외 문자를 지원하기 위한 MULTIBYTE 문자 인코딩. EUC-XX 네이밍(EUC-KR)을 가진다. 각 언어권 별 코드 페이지를 가지고 있으며, 코드 페이지가 매칭 되어야 정상적으로 표기 됨 다른 나라 언어의 게임을 하면 꿹뗅 같은 표현이 나왔던 이유 MULTIBYTE..
-
boost asio, Please define _WIN32_WINNT or _WIN32_WINDOWS appropriately.프로그래밍/c++ - boost::asio 2020. 5. 27. 01:26
1>Please define _WIN32_WINNT or _WIN32_WINDOWS appropriately. For example: 1>- add -D_WIN32_WINNT=0x0601 to the compiler command line; or 1>- add _WIN32_WINNT=0x0601 to your project's Preprocessor Definitions. 1>Assuming _WIN32_WINNT=0x0601 (i.e. Windows 7 target). 위는 boost asio를 포함하여 빌드하면 발생하는 "_WIN32_WINNT 또는 _WIN32_WINDOWS를 정의해주세요" 메세지. 다음 링크에서 윈도우에 해당하는 전처리 매크로에 정의하면 해당 메세지는 발생하지 않는다. https:..
-
게임에 가장 적합한 유사 난수 발생기(PRNG)는 뭘까프로그래밍/의문 2019. 11. 1. 18:51
일단 하드웨어 Random은 직접 Random으로 사용하는 게 아니다. 그 이유에 대해선 아래의 글을 참고. https://stackoverflow.com/questions/39288595/why-not-just-use-random-device c, c++에서의 rand() 함수도 고려 대상이 아니다. 일단 rand의 자체의 정밀도는 게임에 쓰기에 큰 무리 없다고는 생각하지만, 가장 문제되는 것은 랜덤 스테이트를 컨텐츠 별 지역화도 할 수 없다는 것 그리고 단일 호출로 발생되는 난수의 범위가 너무 작다는 것이다. Visual Studio 2019 기준 rand()가 반환하는 최대 값은 32767(RAND_MAX)으로, 이것을 강제로 스케일링 해서 원하는 최대 값에 맞춰도 값은 어차피 최대 값 까지 327..
-
FlatBuffer streaming 통신프로그래밍/의문 2019. 8. 11. 04:28
원했던 동작 별도의 패킷 헤더를 붙이지 않고 FlatBuffer 바이너리만 송신한다. 사전 작업 FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE를 정의한다.(#define FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE) (Verifier의 GetComputedSize를 사용하기 위해) 방법 1. flatbuffer::Verifier를 이용하면 패킷이 완성되었는지 체크한다. 2. flatbuffer::Verifier::GetComputedSize()를 사용해 메세지 사이즈 만큼 읽기 인덱스를 뒤로 넘긴다. 샘플 코드 FlatBufferBuilder builder; auto serializedPacket = CreatePacket( builder, PacketBa..