의문
-
클라이언트에서 특정 언어권 문자열이 깨져서 보였던 이슈프로그래밍/의문 2018. 9. 5. 15:01
각 언어권 별 텍스트 리소스를 만들어주는 툴을 몇 달 전에 만들었었고, 정상적으로 리소스가 뽑혀져 나오는지 확인했으며 문제가 없는 걸(없는 것처럼 보이는 걸) 확인했었다.그 뒤 한동안 잊고 살았다. 그리고, 본격적으로 관련 작업이 시작되는지 오늘에서야 그 툴을 사용할 일이 생겼다. 곧바로 문제가 발생했다. 일본어 텍스트에서 발생했는데 클라이언트에서 글자가 깨져 보이는 것이다. 0. 소스를 열어 인코딩이 시스템 디폴트로 되어있는 건 아닐지 확인했으나 utf8로 지정이 되어있었다. 문제가 아니었다.1. utf8 BOM 문제인가 했지만 클라이언트 내에서 utf8 bom을 체크하는 코드가 있어서 해당 문제도 아니었다.2. 예전에 얼핏 들었던 코드 페이지 라는 것과 관계가 있던 거 아닐지 찾아봤다 코드 페이지에 ..
-
sql에서 정수 괄호 숫자의 의미 bigint(5)프로그래밍/의문 2018. 7. 24. 15:51
CREATE TABLE account_battle_pet_slots ( accountId int(10) NOT NULL DEFAULT '0', slot1 bigint(20) NOT NULL DEFAULT '0', slot2 bigint(20) NOT NULL DEFAULT '0', flags tinyint(3) NOT NULL DEFAULT '0', PRIMARY KEY (accountId)) 같은 쿼리를 봤다. MSSQL은 쿼리 실행도 안 되더라.위 쿼리는 MYSQL에서 사용된 쿼리인데 의미를 찾아보니 다음과 같았다. 결과 값을 출력할 때 앞에 0을 몇 개 표기할 건지를 지정한다. bigint(5)로 지정된 slot1에 1을 설정했다고 치자. 그럼 select 시 00001 같은 형식으로 보여지게 된다..
-
논블럭 소켓으로 connect 시 EAgain만 발생하던 현상프로그래밍/의문 2018. 7. 3. 08:38
if (IsOpen()){ return false;} m_nativeSocket = nn::socket::Socket(static_cast(GetProtocolFamily()), Type::Sock_Stream, Protocol::IpProto_Tcp); const bool opened = m_nativeSocket != SocketError; if (opened){ SetSocketOptions();} return opened; 소켓을 열고, 소켓 옵션을 적용한다. 적용할 소켓 옵션은 Nonblock으로, Poll api와 함께 사용될 것이었다. 그런데 connect를 진행했을 때, 항상 EAgain 에러가 나오더라. 하지만 에러와 무관하게 연결이 맺어졌고, 때문에 WouldBlock 같은 건가 싶어서..
-
explicit specialization of 'function name' in class프로그래밍/의문 2018. 5. 1. 21:08
클래스 안에서 '함수 이름'의 명시적인 특수화를 했습니다. 윈도우 x64에선 발생하지 않았으나 닌텐도 플랫폼 설정으로 빌드 시 발생했다.템플릿 특수화 함수의 정의가 class 안에 있어서 발생하는 오류 메세지이다.예를 들면 다음과 같은 코드일 때 해당 에러가 발생할 수 있다. class Foo{ public: template Type GetValue() const { return Type{}; } template std::string GetValue() const { return std::string{}; }}; 다음 코드처럼 정의를 외부로 빼서 오류를 해결했다. class Foo{ public: template Type GetValue()..
-
tcmalloc은 비주얼 스튜디오에서 디버그모드로 실행 시 크래쉬를 일으킨다.프로그래밍/의문 2018. 4. 18. 17:59
visual studio 2015에서 다중 스레드 디버그 / 디버그 모드로 실행 시 크래쉬를 일으켰다. 이는 msvc c++ 런타임에서 디버그 검사 함수를 호출하면서 발생하는 현상으로 해결 방법은 없어보인다. 이에 대해서 공식적으로 등록된 이슈는 다음 링크에서 확인할 수 있다.https://github.com/gperftools/gperftools/issues/894 하지만 릴리즈 모드에서는 사용에 문제가 없다. 실제 중요한 건 릴리즈 모드이니 딱히 상관 없지 않을까 라고 생각함.
-
std::variant는 참 빠르다프로그래밍/c++ 2018. 4. 18. 00:35
빠를 수 밖에 없다. 요소의 인덱스를 메타프로그래밍을 이용해 컴파일 타임에 계산하니까.그리고 get은엑세스할 요소의 위치를 재귀적으로 찾는다. constexpr이니 마찬가지로 컴파일 타임. ++ 근데 get이 constexpr 함수인데 constexpr if도 아닌 일반 if가 있을 수 있나? constexpr은 모두 컴파일 타임에 결정되어야 한다고 알고 있다. 내가 잘못 알고 있는 것일 수도 있을 거 같은데, constexpr 함수 동작에 대해선 좀 더 알아봐야겠다.