// 꼬리 재귀가 아니다 long SumNormal(long n) { if (n <= 0) return 0; return SumNormal(n - 1) + n; } // 꼬리 재귀 long SumTailCall(long n) { return SumTailCallAcc(n, 0); } long SumTailCallAcc(long n, long acc) { if (n...
더 읽기
NHN Next의 2016 ~ 2017년 게임서버 과정 수업에서 실습으로 만드는 채팅 서버 코드이다. Github Windows 플랫폼만 지원(Linux 지원 어렵지 않음) 64 비트 지원 C++ 로 구현 Visual Studio 2017 select 기반.동기 IO DB 연동은 구현 되지 않음. 로비 채팅, 방...
더 읽기
VS의 툴박스에 특정 코드를 보관하고, 이 코드를 선택하여 코딩 시 삽입할 수 있다. 툴박스에 보관하기 바라는 코드를 마우스로 선택 후 툴박스로 드래그 한다. 위에서 드래그한 코드가 툴박스에 들어가 있는 것을 볼 수 있다. 추가한 코드를 마우스 오른쪽 클릭하면 삭제, 수정...
더 읽기
C99 에서는 배열의 사이즈 지정에 변수를 사용할 수 있다. void test1( int n ) { int fixed_array[10]; int varlen_array[n]; printf( "sizeof(fixed_array)==%ld\n", sizeof(fixed_array) ); printf( "sizeof(varlen_array)==%ld\n", sizeof(varlen_array) ); } test1(10); 로 인수를 10으로 해서 호출하면 아래와 같다. sizeof(fixed_array)==40 sizeof(varlen_array)==40 그러나 보통의...
더 읽기
C++14 표준 라이브러리의 shared_timed_mutex 클래스는 적어도 10000 스레드 이상의 Reader 스레드에서의 공유 lock(shared lock) 동시 획득을 지원한다. 또 동시 획득 가능한 공유 lock 수 상한을 넘은 경우도 공유 lock을 획득 할 수 있을 때까지 Reader 스레드가 대기하는 것을 보증한다. 출처:...
더 읽기
C++11 표준 라이브러리의 recursive_mutex, recursive_timed_mutex 클래스는 동일 스레드에서의 재귀 lock 획득 횟수의 상한은 미정의로(unspecified) 되어 있다.
단 상한 회수를 넘는 try_lock 조작은 실패하고, lock 조작은 예외를 던지는 것을 보증 한다.
출처: http://d.hatena.ne.jp/yohhoy/20170214/p1
더 읽기
2017년 3월 13일(미국)에 열렸던 ‘Node.js VM Summit’ 에서 Node의 네이티브 모듈의 ABI 호환성 문제에 대해서 회의를 하였다. 회의 동영상 Node의 네이티브 모듈 문제 Node의 네이티브 모듈은 C/C++로 만들었고 V8과 NAN API(Application Programming Interface)에 직접 의존하고 있다. 이들 모듈은 Node.js의 메이저...
더 읽기
std::wstring을 utf-8 문자열로 변환 하는 방법은 아래와 같다. std::wstring wStr = L"우하하"; std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> utf8Conv; auto utf8Str = utf8Conv.to_bytes(wStr.c_str()); wchar_t의 크기는 windows, linux 각각 크기가 다르다. 그래서 만약 크기를 특정 길이로 고정하고 싶다면 wchar_t 대신 char16_t, char32_t를 사용하여 크기를 고정...
더 읽기
Microsoft MVP 몇 년 전에 2009,2010,2011년 3년 연속으로 Visual C++ 부분 MVP로 선정된 적이 있습니다. 그러나 2012년부터는 MVP 신청을 하지 않았습니다. 이유는 당시에는 MVP 자격 조건이 MS 제품만을 다루고, MS가 운영하는 포럼에 답글 다는 것을 중요하게 여겨서, 커뮤니티 활동을 하다...
더 읽기
개요 alignof()는 지정한 타입이 메모리의 어느 위치에 배치될지를(배치) 얻는 연산자이다. sizeof()와는 다르고 alignof()는 변수에는 사용할 수 없다. 예를 들면 타입 int가 4바이트 경계 위치로 배치되는 시스템이라면 alignof(int)은 4를 반환한다. 문법 alignof(타입)은 지정한 타입의 배치 크기를 반환한다. 반환 값 타입은 std::size_t이다....
더 읽기