Post by Category

.NET (26) AWS (1) Book (3) C (1) C++ (58) Cloud (2) DB (2) ETC (6) Golang (30) Network (31) Node.js (3) OS (2) Visual Studio (36) etc (7) threading (5) 모임 (15) 번역 (19) 사례 (2)

.NET (26)

. NET Core 2.1의 개선 및 신 기능

February 20, 2018

툴 도입이나 확장 기능으로 기존 .NET CLI 툴 대신 “.NET Core 글로벌 툴(Global Tools)”라고 칭하는 새로운 기능이 도입된다. Node의 글로벌 툴과 같은 것으로 구문도 이쪽을 따르고 있다. .NET의 툴에 관한 새로운 에코 시스템이 확립되는 것을 Mi...

.NET - Buffer.MemoryCopy 함수

December 21, 2017

메모리 복사 속도를 올리기 위해서는 Array.Copy 보다는 Buffer.BlockCopy를 사용하는 것이 좋다. 단 Buffer.BlockCopy는 작은 크기(10~30 바이트 이하)의 복사에서는 Array.Copy 보다 뛰어나다고 할 수 없다. 원래 Buffer.Block...

.NET - Enums.NET

May 30, 2018

Enums.NET C#의 enum을 직접 사용하는 것에 비해 Enums.NET을 사용하는 것이 더 빠름. 아래는 비교 코드. 출처 using EnumsNET; using System; using System.Diagnostics; using System.Text; public...

.NET - WCF

October 9, 2018

기초 WCF 기초(한글) http://akj61300.blog.me/80182137426 WCF Step by Step http://blog.naver.com/saeparam/90024967440 WAS에서 호스팅하기 http://blog.ruaa.me/23 W...

.NET Core - .NET Core 2.1에 의한 Microsoft Bing의 고속화

October 13, 2018

출처

.NET Core - RID 카탈로그

October 3, 2018

RID는 Runtime IDentifier(런타임 식별자)의 약어이다. RID 값은 응용 프로그램을 실행하는 대상 플랫폼을 식별하는데 사용된다. Docs의 설명

.NET Core 2.0 Ubuntu에 설치하기

September 27, 2017

공식 설치 문서 우분투에 아래와 같은 명령어를 터미널에 순서대로 입력하면 간단하게 설치가 끝난다. curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg sudo mv ...

.NET Core 2.0 봄에 출시 예정

January 18, 2017

원문 2017년 봄에 출시 예정. .NET Core 플랫폼에 있어서 큰 변화가 있는 버전이다. 버전 2이 되는 것으로 .NET Core 능력을 크게 확대하기 때문이다. .NET Standard의 버전이 2.0 이된다. .NET Standard 2.0 에서는 2배 가까운 AP...

.NET Core 2.0의 Random과 이전 버전(닷넷프레임워크 포함)과의 차이

June 20, 2018

.NET Core 2.0 이전 버전 및 닷넷프레임워크의 Random 클래스는 생성 시 직접 seed 값을 주지 않으면 Environment.TickCount 를 사용한다. 그래서 동시에 복수의 Random 클래스를 생성하면 seed 값이 같아서 복수의 Random 인스턴스에서 ...

.NET Core 2.1 preview2에서 네트워킹 개선

May 8, 2018

원문

.NET Core 설치 및 프로젝트 생성하기

November 29, 2017

원문 설치 Windwos - 다운로드 후 설치 - https://www.microsoft.com/net/core#windowscmd Ubuntu - 패키지 추가 - curl https://packages.microsoft.com/keys/microsoft.as...

.NET Core용 이미지 라이브러리

June 2, 2017

.NET Core를 사용하여 애플리케이션을 개발할 때 개발자가 알아야 할 결점 하나는 영상 기반 API가 없는 것이다. 보급된 API 중의 하나로 훌륭한 System.Drawing 이 있지만 이것은 Windows 기반의 GDI+ 인터페이스에 의존하고 있다. .NET Core에서는 ...

.NET의 모든 병렬 컨테이너는 lock-free 인가?

January 8, 2018

FAQ :: Are all of the new concurrent collections lock-free? 의 글을 일부 번역/정리. (이 대답은 .NET Framework 4를 기반으로 한다. 아래의 세부 정보는 문서화 되지 않은 구현 세부 사항이므로 향후 릴리스에서 변경 될 ...

ASP.NET MVC - 컨트룰러의 다른 뷰 사용하기, View 컨트롤

October 7, 2018

컨트룰러의 다른 뷰 사용하기 // 기본 뷰 public ActionResult Index() { var model = new MailModels(); .... return View(model); } // 핸들러 public ActionResult SendMail(MailM...

C# - 꼬리 재귀 최적화

April 19, 2017

// 꼬리 재귀가 아니다 long SumNormal(long n) { if (n <= 0) return 0; return SumNormal(n - 1) + n; } // 꼬리 재귀 long SumTailCall(long n) { return SumTai...

C# - 속성을 사용하여 항목 체크

February 23, 2018

DisplayName과 StringLength, Required 라는 기존 속성을 사용한다. Attribute.GetCustomAttribut 메소드로 대상( 이 코드에서는 프로퍼티)에서 속성을 얻을 수 있다. using System; using System.Reflection;...

C#에서 LZ4로 압축한 데이터를 다른 언어와 주고 받을 때

August 9, 2018

C#에서 LZ4 압축 라이브러리로 유명한 것으로 lz4net 이라는 것이 있음. 이 라이브러리를 사용하여 압축을 한 데이터를 python에서 압축을 풀 때 압축이 제대로 풀리지 않음. (파이썬에서는 python-lz4 사용. ) 이유는 lz4 라이브러리를 사용할 때 Frame ...

GPU를 타깃으로 한 C# 이용

August 25, 2018

원문 NVIDIA GPU를 이용하는 범용 프로그램을 만드는 것은 오랫동안 NVIDIA의 CUDA 플랫폼을 사용하는 것을 의미하고 있었다. CUDA는 몇몇 다른 프로그래밍 언어를 지원하고 있지만 고성능 코드를 기술하려면 보통 C 또는 C++ 이 필요했다. 최근까지 이 상황에 의해서...

NLog - Fluentd 노드로 로그를 보내는 방법

May 3, 2017

NuGet에서 아래 2개를 설치한다 NLog NLog.Targets.Fluentd Fluentd 노드로 로그를 보내기 위한 설정은 NLog.config에서 지정할 수 없으므로 코드 상에서 설정해야 한다. public class Configurator { // ...

NLog - 기존의 설정을 사용하면서 파일 패스만 동적으로 변경하기

April 28, 2017

NLog.config 설정을 사용하지만 파일 패스만 바꾸고 싶다. 파일 경로는 프로세스나 인스턴스 마다 변경하기를 바란다. 프로세스나 인스턴스가 항상 일정하다면 NLog.config에 필요한 수만큼의 설정을 추가하면 되지만, 파일 패스만 다르므로 비슷한 설정 코드를 늘리는 것은...

NLog - 동적으로 로그 파일 이름 설정하기

April 26, 2017

NLog는 동적으로 파일 이름을 설정할 수 있는 기능이 있다. 아래의 방법은 커스텀 플레이스 홀더를 설정하고, 그 플레이스 홀더에 임의의 텍스트를 설정하는 방법으로 파일 이름을 변경한다. NLog.config <?xml version="1.0" encoding="utf-8...

SignalR .NET Core - Realtime cross-platform open web communication

July 3, 2017

MS Build2017에서 발표된 SignalR .NET Core: Realtime cross-platform open web communication 의 간단 요약 ASP.NET Core에 맞추어서 재 작성하고, 재 설계 HTTP 이외에서도 이용(AMQP,MQTT,TC...

SignalR 정리

October 7, 2018

SignalR 정리 http://jacking.tistory.com/1139 self 호스팅 (영어) http://www.asp.net/signalr/overview/signalr-20/getting-started-with-signalr-20/tutorial-signalr-...

rasberry pi zero + C#으로 카메라 조작

June 14, 2017

nuget의 아래 모듈을 받는다. https://www.nuget.org/packages/Unosquare.Raspberry.IO/ GPIO 에 더해서 카메라 모듈도 조작할 수 있다. 이것을 사용하여 public static async Task SendImage() { v...

닷넷 코어 2.1은 어디로 향하고 있는가?

April 4, 2018

원문 Microsoft의 Scott Hunter씨는 .NET Core 2.1에서의 동사의 계획을 발표했다. CLI 툴이 개발자의 편리한 사용을 대폭 향상시키는 것으로 보인다. Microsoft는 매일 50만명에 가까운 개발자의 적극적인 이용을 감시할 수 있다고 Hunter씨는 말...

최소한으로 ASP.NET Web API 사이트 만들기

October 6, 2018

Visual Studio의 프로젝트 템플릿으로 만들면 불필요한 코드가 너무 많이 붙어 있음. 특히 Razor은 사용하지 않고 클라이언트 부분은 JavaScript를 사용하고 싶은 경우에 좋지 않음. Building Out a Clean, ...

AWS (1)

AWS - 1대의 EC2에서도 ELB을 사용하면 좋은 점

October 11, 2018

인스턴스 교체가 편리하다 운용을 시작한 후 EC2에 대해서 수정을 해야하는 경우 인스턴스 교체가 쉬워진다. DNS 변경을 할 필요 없이 백엔드 교체가 가능하다. ELB의 헬스 체크로 감시 ELB의 헬스 체크를 이용하여 WEB 서버가 죽었는지 감시를 할 수 있다. CloudWa...

Book (3)

책 - Unity 네트워크 게임 개발 실전 입문 UNET/니프티 클라우드 mobile backend(일서)

February 18, 2018

Unityネットワークゲーム開発 実践入門 UNET/ニフティクラウド mobile backend版 책 내용은 크게 두개로 나누어진다. 전반부는 일본의 모바일 백엔드 서비스를 사용하는 방법(즉 한국 독자는 별로 도움 되지 않는다), 후반부는 UNET을 사용하는 방법을 설명한다. 아직...

책 - 러스트 핵심 노트(e-book)

February 6, 2018

출판사: 한빛미디어 한빛미디어 2018년 2월에 읽은 책. 이전부터 미루다가 3~4일 동안에 다 보았다. Go 언어와 비슷한 부분이 있어서 Go 언어를 알면 공부하기 좋을 듯(물론 그 반대도) 원서가 Packt 출판사인데 책 내용이 좀 정리가 안 된 것 같고, 구성이 머...

책 - 모던 C 언어 프로그래밍 IDE, 디자인 패턴, XP, TDD, 리팩터링, 지속적인 통합

February 5, 2018

출판사: 위키북스 yes24 2016년에 읽었던 책이다. C 언어를 기초부터 가르쳐주는 책이 아니다. C 언어를 알고 있는 사람을 대상으로 하고 있다. 오래된(?) 언어인 C 언어를 현대에 맞게 사용할 수 있는 툴과 기법을 알려준다. 특히 C 언어에 디자인패턴을 사용하는...

C (1)

C99의 sizeof와 가변길이 배열

April 12, 2017

C99 에서는 배열의 사이즈 지정에 변수를 사용할 수 있다. void test1( int n ) { int fixed_array[10]; int varlen_array[n]; printf( "sizeof(fixed_array)==%ld\n", sizeof(fixed_...

C++ (58)

Boost.Asio 공부하기

March 17, 2017

나는 2007년부터 Boost.Asio를 온라인 게임 서버 개발에 처음 사용하였다(업무에 사용하는 것을 말한다.그전에 공부는 했었다) 당시 주위의 게임 개발자를 통해서 생각외로 사용하는 곳이 꽤 있었다. 이 후 한국 및 해외의 유명 회사들도 C++ 네트워크 프로그래밍에 사용하고 ...

C++ - 6-tips-to-supercharge-c11-vector-performance

May 19, 2017

NHN Next의 학생이 C++ Advance 수업의 과제로 번역 정리한 것이다. 원문 슬라이드 쉐어

C++ - A simple C++11 Thread Pool implementation

May 25, 2017

NHN Next의 학생이 C++ Advance 수업의 과제로 번역 정리한 것이다. Github의 코드 위 코드를 설명한 문서

C++ - Boost 라이브러리 빌드 링크 모음

November 6, 2017

Windows Boost 라이브러리 빌드 및 설치 - VC++ (VS2012, Boost 1.53) boost 간단 설치기 (Windows환경) - VS 2010 중심 Boost 64비트로 빌드하기 VS2008에서 Boost 빌드하기 버전 별로 이미 빌드된 라이브러리 배포하는 사...

C++ - Boost의 object_pool 사용은 비 추천

September 15, 2017

boost 라이브러리에는 메모리 풀 라이브러리로 object_pool 이라는 것이 있다. 사용법은 아래와 같다. boost::object_pool<int> pool; int* p = pool.construct(10); pool.destroy(p); 사용하면 안 되는...

C++ - C++03과 C++11 싱글톤 구현 차이

February 1, 2018

C++11에는 ‘C++11 - 블럭 범위를 가진 static 변수 초기화는 스레드 세이프 하다’ 라는 기능이 생겼다. 그래서 아래와 같이 쉽게 싱글톤 인스턴스 생성 가능하다. template <typename T> inline T& Singleton<T&g...

C++ - C++17시대 Herb Sutter씨에게 듣는다

December 19, 2017

원문 Herb Suttrer씨는 소프트웨어 개발의 제일인자로 “Exceptional C++” 이나 “C++Coding Standars”라는 책을 집필했다. ISO C++ 표준 위원회 위원장을 15년간 맡음과 더불어 Microsoft에서는 소프트웨어 아키텍트로서 C++/CLI, C...

C++ - C++의 dangling 검출, 제안 문서 버전 1.0 공개

October 21, 2018

출처 C++의 저명한 개발자, ISO C++ 표준위원회의 위원장 Herb Sutter씨가 dangling(잘못된 영역에 대한 잘못된 참조)의 검출 방법을 제안하는 문서 “Lifetime Safety: Preventing Common Danglng”의 버전 1.0을 공개 했다. C...

C++ - EASTL

January 24, 2018

GitHub EASTL 게임 회사 EA에서 오픈 소스로 공개한 것으로 C++ STL을 게임 개발에 맞게 고친 STL 이다. 크로스플랫폼을 지원하고 Visual Studio 2017을 지원한다. 빌드는 Cmake를 사용한다. 관련 글 일어로 된 글은 네이버 번역기로 보면 된...

C++ - JSON for Modern C++ 이 버전 3.1로

August 30, 2018

원문 JSON for Modern C ++ 3.1 에서는 Universal Binary JSON(UBJSON) 기능 지원 및 JSON Merge Patch가 새롭게 추가 되었다. UBJSON는 JSON for Modern C++에서 지원하는 여러 가지 형식의 하나로, 인코딩 크...

C++ - PPL 병렬 컨테이너와 Asynchronous Agents

May 23, 2017

NHN Next의 학생이 C++ Advance 수업의 과제로 번역 정리한 것이다. PPL 병렬 컨테이너 슬라이드 쉐어 Asynchronous Agents 슬라이드 쉐어

C++ - Recommendations to speed C++ builds in Visual Studio

May 22, 2017

NHN Next의 학생이 C++ Advance 수업의 과제로 번역 정리한 것이다. 원문 슬라이드 쉐어

C++ - SSO(Small-string optimization)

January 2, 2018

보통 std::string는 문자열을 확보할 때 동적으로 메모리를 확보하지만 작은 크기의 문자열의 경우는 동적 할당은 성능적으로 낭비이므로 동적 할당을 하지 않는 최적화가 구현 되어 있고 이것을 SSO 라고 한다. 아래처럼 std::string 안에 문자열을 저장할 수 있는 버퍼...

C++ - State 패턴으로 CSV 파일을 읽자

June 9, 2017

NHN Next의 학생이 C++ Advance 수업의 과제로 번역 정리한 것이다. [원문] State 패턴으로 CSV 파일을 읽자 슬라이드쉐어

C++ - The Observable C++ library

June 8, 2017

NHN Next의 학생이 C++ Advance 수업의 과제로 번역 정리한 것이다. [원문] The Observable C++ library – implementing the observer pattern Observable C++ expressions – using the Obs...

C++ - Ubuntu 18 에서 g++(gcc) 설치

September 16, 2018

출처: https://linuxconfig.org/how-to-install-g-the-c-compiler-on-ubuntu-18-04-bionic-beaver-linux 우분투 18 에서 apt-get으로 설치하는 g++ 버전은 7.3 이다. 7.3 버전은 C++17 표준을 지...

C++ - Ubuntu에 clang, libc++-, lldb 설치하기

October 8, 2018

wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add - echo deb http://apt.llvm.org/stretch/ llvm-toolchain-stretch-6.0 main>> /etc/ap...

C++ - VC용으로 빌드된 Boost 라이브러리 얻기

October 27, 2017

VC용으로 빌드된 Boost 라이브러리 Lib 파일을 제공하고 있다. 다운로드 페이지이다. Boost 라이브러리의 다양한 버전 및 VC의 버전 별로 준비 되어 있다.

C++ - Visual C++ 에서의 std::chrono의 고해상도 시계

January 16, 2018

Visual Studio 2015 이전에는 std::chrono(high_resolution_clock을 사용해도)로 시간 측정을 하면 nano 단위로는 측정할 수 없었다. 그래서 VC에서 nano 단위로 측정하려면 이전처럼 Win32 API인 PerformanceCounter...

C++ - Visual Studio 2017 15.7이 C++17 완전 준수

July 5, 2018

원문 Microsoft는 Visual Studio 2017 15.7 일반용 제공을 발표했다. InfoQ는 VS2017의 7번째 메이저 업데이트 개발을 쫓아왔다. 이것에 의해 IDE 전체의 많은 영역이 개선되었다. 이 업데이트는 현재 복사본을 덮어 설치할 수 있지만, 반면에 새로...

C++ - Visual Studio 2017 에서 최신 C++ 기능 사용하기

November 22, 2017

Visual Studio 2017에서는 C++17 및 C++20에 들어갈 기능이 일부 구현 되어 있다. 그러나 이 기능들은 그냥은 사용할 수 없고 컴파일러 옵션에서 사용함을 선언해야 한다. (C++17 기능 중 VS 업데이트를 통해서 구현된 기능은 보통 바로 사용할 수 없다.) ...

C++ - Windows 에서 hiredis 사용하기

March 2, 2018

MS에서 Windows용으로 redis를 포팅한 것이 있어서 여기서 hiredis 윈도우 버전을 구할 수 있다. 아래 글은 MS가 윈도우로 포팅한 redis 프로젝트를 기준으로 한 것인데 얼마전에 hiredis 부분만 따로 떨어져 나온 프로젝트가 공개 되었다(이 글은 2017년 ...

C++ - httpClient, json, redis 예제 코드

June 24, 2018

C++로 http client 요청, Json 데이터 조작, redis와 통신하는 짧은 예제 코드 들이다. 아래 링크에 가면 코드를 볼 수 있다. curl 라이브러리를 사용하여 http 클라이언트 Post, Get 요청 http 클라이언트 사용 방법 (Post) http 클라이언...

C++ - null 객체의 멤버 함수 호출

January 11, 2018

클래스를 메모리 할당(new 생성)하지 않고 생성한 후 멤버 함수를 호출하면 어떻게 될까? 호출된 멤버 함수가 자신의 멤버 변수를 호출하지 않는다면 무사히 호출된다. 당근 멤버 변수를 호출하면 세그먼트폴이 생긴다. 아래 코드는 gcc 8.0 에서 테스트 되었다. VC에서도 문제 ...

C++ - redis 사용하기

July 1, 2018

게임 서버를 개발할 때 사용하는 기술이 모바일 시대 이전에 비해서 많이 다양해졌는데 거의 대부분 꼭 사용하고 있는 것이 redis 이다. 다른 언어들은 redis 사용이 간단한데 C++은 간단하지는 않아서 정리를 해 봤다. boost를 사용하면 아주 쉽게 사용할 수 있고, boos...

C++ - 라이브러리를 사용한 프로그램 고속화

September 6, 2018

tcmalloc, jemalloc, nedmalloc malloc 대체에 의한 고속화. 아래와 같이 실행함으로써 malloc이 대체되어 실행된다. LD_PRELOAD=/usr/lib/libtcmalloc.so ./exefile 상황에 따라 다르겠지만 tcmalloc...

C++ - 메모리 영역

May 29, 2017

메모리 영역에 대해서 5 종류의 메모리 영역 C++ 에서는 다른 특성을 갖는 5 종류의 메모리 영역이 존재한다. (※ 단 c++ 규격에는 스택이나 힙은 명시 하지 않고 Free-Store는 명시 하고 있다) Const Data 컴파일 시 값을 알 수 있는 데이터(예를 들면 sta...

C++ - 분산환경에서의 uniqueId 생성 오픈 소스 snowflake-ModernCpp

October 18, 2017

snowflake ? Twitter에서 만든 오픈 소스 라이브러리로 주 목적은 분산 서버에서 일련 번호를 생성하는 것이다. 자세한 설명은 본인의 문서(https://www.slideshare.net/jacking/twitter-snowflake)를 보기 바란다. snowflake...

C++ - 오픈 소스 라이브러리 A better date and time C++ library

May 18, 2017

NHN Next의 학생이 C++ Advance 수업의 과제로 정리한 것이다. 슬라이드 쉐어 예제 코드

C++ - 온라인 C++ 컴파일러 리스트

December 15, 2017

C++ 공부를 할 때 기능이 어떻게 동작하는지 알고 싶을 때 웹브라우져만 있으면 바로 테스트 해볼 수 있다. List of Online C++ Compilers 생각 외로 온라인 C++ 컴파일러는 많다. VC도 있다. 이런 온라인 컴파일러를 사용하면 지금처럼 막 C++ 새 표준...

C++ - 포인터 변수에서 const 위치에 따른 차이

December 26, 2017

변수에 const를 사용하는 이유와 사용 방법은 아주 쉽다. 그런데 포인터 타입 변수에 const를 붙였을 때 포인터의 앞이나 뒤 어디에 붙여야 할지 헷갈릴 때가 있다. 포인터에 const를 붙이는 경우 아래에 따라서 차이가 발생한다. *앞에 const를 붙인 경우는 포인터를 ...

C++- Poco 1.8 Net 라이브러리 빌드 하기

November 15, 2017

본인이 집필한 poco 네트워크 프로그래밍 책의 예제가 poco 1.8 에서는 빌드 에러가 난다. 이유는 스태틱 라이브러리 사용, win32 lib 미 추가 문제이다. 아래 그림처러 하면 문제 없이 빌드가 된다.

C++- Poco 라이브러리 Visual Studio 2017 에서 빌드 하기

November 15, 2017

poco 라이브러리를 Visual Studio 2017 에서 빌드하려면 아직 쉽게 되지 않는다. 아래처럼 Visual Studio 2017 설치 메뉴에 있는 콘솔 프로그램을 실행해서 빌드 파일을 실행해야 한다. buildwin.cmd 150 rebuild static_md...

C++- Poco 라이브러리를 VC++에서 static 라이브러리로 사용할 때

September 6, 2017

Poco 라이브러리를 VC++ 에서 static 라이브러리로 사용할 때 lib 파일을 찾을 수 없다는 링크 에러를 만나는 경우는 아래의 선언을 추가하면 된다. #define POCO_STATIC Poco 라이브러리는 default로는 동적라이브러리를 사용하는 것으로 설정 ...

C++11 - _Pragma 전처리 연산자

December 22, 2016

개요 C99 에서 도입된 전처리 연산자 이다. _Pragma 연산자는 매크로에서 처리 계 정의 기능을 사용하기위한 기능이다. 처리 계 정의 기능을 사용하기 위해 기존에는 #pragma 지시자를 사용하여 왔지만 이 기능은 매크로 내에서는 사용할 수 없다. #pragma 지시자를 매...

C++11 - alignas

April 1, 2017

개요 alignas()은 컴파일러에 대한 변수를 메모리 상의 특정 위치에 배치(배열) 하도록 요구하는 키워드이다. 예를 들면 4바이트 경계 위치에 배치할 경우 변수는 4의 배수 주소로 배치되고, 8바이트 경계 위치에 배치할 경우 변수는 8의 배수 주소로 배치된다. 문법 alig...

C++11 - alignof

April 1, 2017

개요 alignof()는 지정한 타입이 메모리의 어느 위치에 배치될지를(배치) 얻는 연산자이다. sizeof()와는 다르고 alignof()는 변수에는 사용할 수 없다. 예를 들면 타입 int가 4바이트 경계 위치로 배치되는 시스템이라면 alignof(int)은 4를 반환한다. ...

C++11 - boost::shared_ptr 에서 std::shared_ptr로 변환 하는 가장 간단한 방법

March 8, 2017

#include <iostream> // std::shared_ptr #include <memory> // boost::shared_ptr #include <boost/shared_ptr.hpp> auto main() -> int { ...

C++11 - long long 타입

December 26, 2016

개요 C99 호환을 위해 long long 정수 타입이 추가 되었다. long long 과 unsigned long long 타입은 64비트 이상의 값을 표현할 수 있는 것을 보증한다. long long 타입의 최대 값 매크로는 LLONG_MAX 이다. long long을 뜻하는...

C++11 - noexcept

February 27, 2017

noexcept 키워드 목적. 1) throw 키워드에 의한 예외 사양 대체. 함수가 어떤 예외를 던질 가능성이 있는지를 열거하는 것이 아니라 예외를 던질 가능성이 있는지 없는지만 지정한다. 예외를 던질 가능성이 있는 함수에는 noexcept(false)을 지정하고, 예외를 던질...

C++11 - std::get_time

February 6, 2017

개요 » get_time(tmb, fmt) 식을 사용하여 현재 입력 스트림에서 전달 받은 로컬 시간 값을 변환 형식 문자열에 맞추어 tm 오브젝트로 변환한다. 문법 template< class CharT > /*unspecified*/ get_time( s...

C++11 - std::put_time

February 3, 2017

개요 날짜 서식을 출력한다. 문법 template <class CharT> unspecified put_time(const struct tm* tmb, const CharT* fmt); tmb 은 유효한 tm 타입 오브젝트를 가리키는 포인터 fm...

C++11 - type_info와 type_index

March 23, 2017

C++에서는 RTTI(Run Time Type Infomation/Identification)라고 불리는 기능이 있다. ( 타 언어의 리플렉션과 좀 비슷한데 기능은 훨씬 떨어짐 ^^;) std::type_info는 타입 정보를 표현하는 클래스이다. type_info 객체는 type...

C++11 - 문자열 리터럴과 wide 문자열 리터럴 결합

January 23, 2017

C99 호환을 위해서 만들어진 기능으로 문자열 리터럴과 wide 문자열 리터럴을 결합하면 wide 문자열로 결합한다. 문자열 리터럴인란 멀티바이트 문자열을 뜻하고, wide 문자열 리터럴은 유니코드 문자열을 뜻한다. C++11 이전에는 문자열 리터럴과 wide 문자열 리터럴 결합에...

C++11 - 블럭 범위를 가진 static 변수 초기화는 스레드 세이프 하다

February 14, 2017

개요 static 변수의 초기화가 완료할 때까지 다른 스레드는 초기화 처리 앞에서 대기한다. class singleton { public: static singleton& get_instance() { static singleton instance; // ...

C++11 - 생성자 상속(inheriting constructors)

January 9, 2017

개요 부모 클래스에서 정의한 생성자들을 자식 클래스에서 그대로 사용할 수 있는 편의 기능이다. 문법 자식 클래스에서 using 키워드를 사용하여 부모 클래스 이름과 부모 클래스의 생성자 이름을 :: 구분으로 호출한다. 자식 클래스는 복수의 부모 클래스를 상속한 경우에도...

C++11 - 예외 지정

March 2, 2017

C ++에서는 함수에 예외 지정이라는 것을 작성할 수 있다. 이것은 C++98에서 부터 있는 기능으로 throw (T1, T2, …)라는 문법으로 함수가 밖으로 던지는 예외를 지정하는 기능이다. // C++98/03 void f() throw( int, double ); 만...

C++11 - 우측값 참조. 함수의 가인수는 좌측값 참조이다

July 7, 2017

#include<iostream> using namespace std; void foo2( string& s) { cout << "lvalue" << endl; }; void foo2( string&& s) { co...

C++11 - 인라인 이름 공간(inline namespace)

January 2, 2017

개요 이름 공간 내에 있는 기능을 투과해서 접근할 수 있는 기능이다. 즉 이름 공간(my_namespace) 안에 또 다른 이름 공간(features)을 inline로 선언하고 있으면 features에 정의된 기능을 my_namespace를 통해서 접근 할 수 있다. #incl...

C++11 - 최근접 짝수 반올림 std::nearbyint

January 12, 2017

개요 실수를 정수로 변환할 때 ceil()로 소수점 올림하거나, floor()로 소수점 버림을 한다. nearbyint는 정수로 변환할 실수의 가장 가까운 짝수로 올림 혹은 버림을 한다. 이러한 방식을 “bankers’rounding” 이라고 부른다 문법 cmath ...

C++14 - recursive_(timed_)mutex의 재귀 lock 상한 수

April 7, 2017

C++11 표준 라이브러리의 recursive_mutex, recursive_timed_mutex 클래스는 동일 스레드에서의 재귀 lock 획득 횟수의 상한은 미정의로(unspecified) 되어 있다. 단 상한 회수를 넘는 try_lock 조작은 실패하고, lock 조작은 예외를...

C++14 - shared_(timed_)mutex가 지원하는 Reader 스레드 수

April 10, 2017

C++14 표준 라이브러리의 shared_timed_mutex 클래스는 적어도 10000 스레드 이상의 Reader 스레드에서의 공유 lock(shared lock) 동시 획득을 지원한다. 또 동시 획득 가능한 공유 lock 수 상한을 넘은 경우도 공유 lock을 획득 할 수 있을...

Trip report Fall ISO C++ standards meeting(Albuquerque) Sutter’s Mill

December 1, 2017

Trip report: Fall ISO C++ standards meeting (Albuquerque) | Sutter’s Mill 을 번역한 일본 문서를 일부 번역한 것이다. range-based for 에 초기화자를 쓸 수 있도록 되었다. for( auto res...

Win32API - CRITICAL_SECTION의 OwningThread

June 5, 2017

Windows Vista부터 CRITICAL_SECTION의 내부 구조가 바뀌었다고 한다. 이 중 눈여겨 볼 것은 CRITICAL_SECTION의 멤버 변수 중 OwningThread 인데 이 변수에는 CRITICAL_SECTION을 소유중인 스레드의 ThreadID가 설정된다....

std::codecvt_utf8로 wstring을 utf-8 문자열로 변환 하기

April 4, 2017

std::wstring을 utf-8 문자열로 변환 하는 방법은 아래와 같다. std::wstring wStr = L"우하하"; std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> utf8Conv; auto ...

tm 에서 time_t로 UTC로 변환 하는 함수

March 10, 2017

헤더 파일 time.h 혹은 헤더 파일 ctime 에서 time_t와 tm 구조체와의 변환을 하는 함수를 정리했다.   time_t→ tm 구조체 tm 구조체 → time_t 현지 시각 ...

멤버 변수에 대한 포인터를 이용하여 타입의 특성을 판정

April 21, 2017

멤버 변수에 대한 포인터라는 것은 우선, 예로서 단순히 정수를 래핑 한 클래스를 보자 class int_wrapper { public: int data; int_wrapper(int data) : data(data) {} }; 위 코드에서 int_wrapper::dat...

클래스 멤버 함수 포인터 배열 사용하기

December 16, 2016

함수 포인터 관련 검색을 하면 C 버전이 많이 나오고, 배열 타입을 사용하는 경우는 별로 없어서 공유한다. (사실 최신 C++에서는 std::function을 사용하면 되기 때문에 이걸 사용하지 않아도 된다) 선언 bool(TEST::*m_pFunc[4])(const int, ...

Cloud (2)

AWS - P2P에서 클라우드로의 전환. For Honor와 Friday the 13th The Game이 어떻게 플레이어 경험을 향상 시켰는가

May 13, 2018

원문 게임 개발자로서 출시에 이르기까지 열정을 잃지 않고 게임 개발과 팬 커뮤니티의 육성에 수 년의 세월 투자 되어 왔다고 생각한다. 최고의 사용자 경험을 제공 할 수 있는 것에 대해서는 예를 들어 네트워크 연결시 플레이어의 대기 시간에 대한 백엔드의 선택 등 백엔드 인프라는 가...

Google Cloud Platform의 15개 서비스를 영구 무료 한도를 제공

March 17, 2017

구글은 2017년 3월 10일 Google Cloud Next 17의 3일째 기조 강연에서 15개 서비스의 영구 무료 쿼터를 발표. 영구 무료 한도 대상 서비스 이름과 월 제한은 다음과 같다(제품에 따라서는 아래 외에도 제한이 있다). Google Cloud Engine(...

DB (2)

MongoDB - 데이터 추출 툴 mongoexport 와 mongodump 간단 비교

September 11, 2017

MongoDB의 데이터를 출력하는 툴로 mongoexport 와 mongodump가 있다. 둘 다 mongodb-tools 패키지에 포함되는 도구이다. mongoexport는 CSV 또는 JSON 텍스트 데이터, mongodump는 BSON 형식의 이진 데이터로 출력한다. 사용...

MySQL의 3가지 lock - Record lock, Gap lock, Next-key lock

September 8, 2017

Record lock(레코드 락): 단일 인덱스 레코드의 락. Gap lock(갭 락): 인덱스 레코드 사이의 갭의 락, 선두 인덱스 레코드의 앞이나 말미 인덱스 레코드의 뒤의 갭의 락 Next-key lock(넥스트 키 락):레코드 락과 이 레코드 직전의 갭 락의 조...

ETC (6)

2018 컴투스 경력직 원클릭 채용

March 29, 2018

4월 한달 동안 간단한 절차로 컴투스에 지원할 수 있습니다~~ 지원하기

POCO를 이용한 C++ 네트워크 프로그래밍

June 29, 2017

e-book으로 나온 후 몇 주전에 종이 책으로 나왔습니다. yes24 POCO를 사용하면 C++로 네트워크 프로그래밍을 이전 보다 훨씬 쉽게 할 수 있으니 꼭 한번 공부 해보기를 추천합니다^^

ebook - POCO를 이용한 C++ 네트워크 프로그래밍

May 1, 2017

구입 며칠 전에 나왔습니다^^ NHN Next 에서 일하게 되면서 시간 여유가 생겨서 짧은 분량이지만 책을 집필 할 수 있었습니다. 책 내용은 제목 그대로 POCO 라이브러리 중 Net 부분의 라이브러리를 사용하여 네트워크 프로그래밍을 하는 방법을 설명하고 있습니다. 아직...

구인 - 서버 프로그래머

March 9, 2018

저는 현재 가산디지털역에 있는 컴투스에서 일 하고 있습니다. 제가 소속된 회사에서 서버 프로그래머를 구인 중이라서 혹시나 하는 마음에 글 올려봅니다. 스카이랜더스 컴투스의 스카이랜더스 라는 프로젝트에서 서버 프로그래머를 구인 중입니다. 스카이랜더스는 해외 유명 IP로 애니메이션까...

스터디 인원 모집 - Go로 게임 서버 만들기

July 21, 2017

프로그래밍 언어 Go로 게임 서버를 만들기 위해 필요한 기술과 경험을 서로 공유하기 위해 스터디를 시작하려고 합니다. 스터디를 만드는 큰 이유는 이 모임을 통해서 꾸준히 Go를 공부하고, 다른 사람들과 Go 관련 지식이나 경험을 공유하기 위해서 입니다. 아마 Go로 실제 일을...

신입 게임 프로그래머가 될 분들께 간단한 조언

November 27, 2017

아는 내용일 수도 있지만 혹시나 하는 마음에 간단하게 글 적습니다. 큰 회사들은 공채로 신입을 많이 뽑고, 공채는 10월초부터 시작합니다. 요즘은 큰 회사(상장된, 혹은 규모가 큰)들은 신입을 공채로 많이 뽑고 있습니다. 대부분의 회사가 공채는 10월초부터 시작합니다. 그러니 1...

Golang (30)

Go 언어 2017년 조사는 제네릭 및 종속성 관리가 Go 언어에 가장 요구되는 기능임을 밝혔다

April 10, 2018

원문 최신 Go 언어 조사에 의하면 Go 언어는 제네릭 및 종속성 관리 기능이 부족하고, 이것이 이 언어의 양대 문제이다, 라고 개발자가 생각하고 있다는 것을 알았다. 이러한 상황에도 많은 응답자는 Go 언어를 개인 프로젝트가 아니라 전문적으로 사용하고 있다는 것이 조사에 의해 ...

golang - Build

September 28, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 빌드 go build -tags를 사용하여 Release/Debug를 바꾸기 디버깅/릴리스에서 기능을 바꾸고 싶은 경우 Build constrains를 사용하면 좋다. Build Constrains는?...

golang - The Go Playground에서 유닛테스트 하기

August 13, 2018

Go는 온라인 상에서 코드를 실행 해 볼 수 있다. The Go Playground The Go Playground에서는 유닛테스트 코드도 실행 할 수 있다. package main import "testing" func Hello(name string) string { ...

golang - Ubuntu에 최신 버전 설치하기

September 19, 2018

출처: https://medium.com/@RidhamTarpara/install-go-1-11-on-ubuntu-18-04-16-04-lts-8c098c503c5f Step 1  Install Go Language sudo apt-get update sudo apt-get -y...

golang - Windows에서 godep 설치 후 godep 명령어를 찾지 못하는 경우

April 29, 2018

godep은 Go언어의 라이브러리가 의존하고 있는 패키지를 관리하는 툴로 node.js의 npm이나 Ruby의 Gem과 비슷한 것이다. godep을 Windows에서 설치 후 실행하면 아래와 같은 에러가 나오는 경우는 설치한 godep 실행 파일이 있는 디렉토리가 path에 들어...

golang - atomic

September 15, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. atomic atomic 패키지는 int32, uint32, int64, uint64, uintptr의 5가지 타입 각각에 Add, CompareAndSwap, Load, Store, Swap 5 종류의...

golang - binary encoding

November 3, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 바이너리 엔코딩 개요 복수의 값과 바이트 열의 상호 교환을 한다 복수의 값은 고정 길이 값으로 해석된다. 고정 길이 값으로 다룰 수 있는 것 ...

golang - channel 사용하기

November 4, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 채널 사용하기 받기 전용, 보내기 전용 채널 선언 받기 전용 c <-chan int 보내기 전용 c chan<- int 다른 고루틴에 동기적으로 통신하고 싶은 경우 2개의 채널이 서로...

golang - defer

October 29, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. defer 테스트 테스트 1: 마지막으로 쓴 것이 가장 뒤에 쓴 것이 제일 처음 호출된다 http://play.golang.org/p/gb8tbGk4wr package main import...

golang - erning/gorun 패키지 소개

October 1, 2018

출처 Github : https://github.com/erning/gorun 용도는 매우 간단하다. “Go 소스 코드를 Python이나 Ruby 같은 실행 파일로 돌린다.”라는 느낌이다. 아이디어의 승리라는 느낌이다. hello.go #!/usr/bin/env gorun //...

golang - error

November 8, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. Error 스택 상태 출력과 에러 핸들링 github.com/pkg/errors 를 사용하여 error 오브젝트를 랩핑하면 스택 트레이스를 추가할 수 있다. error 중의 스택 트레이스는 “%+v”...

golang - goroutine이 교체 되는 타이밍

June 7, 2018

결론 Go언어에서 goroutine은 반드시 스위치 하는 것은 아니다. “for() {}” 같은 비지 루프를 GOMAXPROCS의 지정 수 이상 포함시키면 스위칭 되지 않는다. 경위 처리가 없는 비지 루프가 있으면 goroutine이 교환 되지 않고 처리가 멈추는 것을 알았다. ...

golang - nil

November 11, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. nil 타입을 가진 nil nil은 사실 타입이 있다. nil과 nil이 등가가 아닌 것처럼 보인다 nil이 타입 정보를 가지므로 nil==nil 이 true가 된다는 법은 없다. true가 되기 위해...

golang - serialization benchmarks (2018년 8월)

October 16, 2018

출처: https://github.com/alecthomas/go_serialization_benchmarks 2018-08-19 Results with Go 1.10 on a 2.5 GHz Intel Core i7 MacBook Pro (Retina, 15-inch, Mid 2...

golang - slice의 shuffle

November 1, 2018

Fisher–Yates shuffle 이라는 알고리즘 사용 package main import ( "fmt" "math/rand" ) func main() { n := 30 arr := generate(n) fmt.Println(arr) ...

golang - string to slice, slice to string, slice to array, array to slice, uint16 to []byte (Little Enddian), []byte to Uint32 (Little Enddian)

June 11, 2018

string => slice 출처: https://github.com/soshi8/GoLangTrans package main import ( "fmt" ) func main() { var aaa string aaa = "sample string" bbb ...

golang - sync.pool

May 22, 2018

쉽게 말하면 메모리풀 이라고 생각하면 좋다. Go 1.3 버전에서 표준 패키지로 들어왔다. sync.Pool로 극상의 메모리 효율 의 글 중 일부를 번역 정리 했다.

golang - thread pool과 GOMAXPROCS는 관계 없음

June 4, 2018

golang의 경우 스레드 풀을 사용하고 있으며 블러킹 하는 시스템 콜이라면 다른 스레드로 옮겨서 처리한다. 부족한 경우에는 OS가 허락하는 한도 내에서 만든다. 이 수는 GOMAXPROCS 와는 관계 없다.

golang - time

October 23, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 시간 및 날짜 표준 API 표준 라이브러리 사용 예 현재 날짜 package main import ( "fmt" "time" ) func main() { now := time....

golang - webFramework Echo

October 30, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 개요 웹 프레임워크. 경량 고속. 공식 페이지 https://labstack.com/echo 설치 go get github.com/labstack/echo 버전 2부터는 fastht...

golang - 기본 문법

September 29, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 지원 기능 tar, zip, zlib, gzip, bzip2 DES, AES, SHA1, SHA256, SHA512 PE, ELF, DWARF BASE64, ASN.1, JSON, XML,...

golang - 길이가 0인 slice는 nil로

July 10, 2018

출처 package main import ( "fmt" ) func testNil(p []byte) { fmt.Printf("p: %v\n", p) fmt.Printf("len(p): %d\n", len(p)) fmt.Printf("cap(p): %...

golang - 배열과 slice 기초

September 9, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 배열 배열 기초 배열 사용 // 크기 4, int 형 배열 var a [4]int // 0번째 요소에 1 대입 a[0] = 1 // 변수 i를 선언하고 a[0]을 i에 대입 i := a[0]...

golang - 버전 1.9

August 30, 2017

“Go 1.9”의 가장 중요한 변경은 타입 앨리어스의 도입으로 type T1=T2 라고 선언함으로써 타입 T2의 앨리어스 이름을 T1으로 정의할 수 있다. 또 math/bit 패키지는 CPU의 특수 명령에 대응한 무부호 정수비트 계수/조작 기능을 갖추고 있으며 sync 패키지...

golang - 설치와 GoPath

October 24, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 설치 (일어)Ubuntu에 GO 언어(golang)의 최신 버전을 apt로 설치 (일어)Homebrew로 Go 1.6 설치 (일어)Go 언어 개발환경 셋업 (일어)Go 개발 환경/빌드 환경...

golang - 성능 조사 map과 GC

May 25, 2018

테스트 환경: go version go1.7.3 windows/amd64 기본 용량 golang의 map은 용량을 확장 할 때 원 데이터의 복사와 재 해시를 하기 때문에 map을 만들 때 용량을 설정하는 것이 좋다. package main import "testing" fun...

golang - 성능 조사 slice vs array

May 28, 2018

출처 테스트 환경: go version go1.7.3 windows/amd64 package go1_6 const capacity = 1024 //배열 조작 array는 slice 보다 빠르다 func array() [capacity]int { // 배열 처리 테스트 함수 ...

golang - 실행 중인 코드의 행 수와 파일 이름 얻기

November 6, 2018

현재 실행 중인 Go의 코드 정보를 로그를 남기고 싶을 때는 코드의 파일 이름과 행 수를 알아야 한다. runtime.Caller 함수를 사용하면 이 정보들을 얻을 수 있다. package main import ( "runtime" "fmt" ) func main() ...

golang - 코드 정적 분석 툴 go vet

October 26, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. go vet go의 표준 패키지에 포함된 코드 정적 분석 툴이다. 공식 문서는 https://golang.org/cmd/vet/ go vet 사용 방법 ・flag 등 go vet packag...

golang - 파일 업로드 하기

October 18, 2018

출처 Go 언어에서 HTML 페이지에서 파일 업로드 된 경우 서버 측의 임의의 장소에 업로드 된 파일을 저장하는 샘플 코드. sever.go package main import (format "fmt"); import ("net/http"); import "os"; imp...

Network (31)

10GbE 에서는 Jumbo Frame가 효과적, 1G와의 혼재 환경에서는 MTU 사이즈에 주의

January 29, 2018

번역. 원본 10GBASE-T 회선의 성능이 6~7Gbps 정도로 포화 되는 경우가 많다. 이유는 MTU(Maximum Transmission Unit)이다. MTU는 요컨대 최대 프레임 크기로 이 숫자를 넘는 데이터를 전송하는 경우 프레임이 분할된다. Ethernet에서는 최...

APNS/GCM의 리퀘스트 제한

November 8, 2017

번역 글로 2016/10월 기준. 이후 바뀔 수 있음 APNS와 GCM에서 Push 통지를 할 때의 제한 정리 APNS iOS8 미만의 경우 페이 로드 데이터의 상한은 256 바이트까지. iOS8의 경우 페이 로드 데이터의 상한은 2K 바이트까지. iOS9 이후의 경우 페이 로...

Actor 프레임워크의 메시지 전달에서 사용하는 용어

July 14, 2017

at-most-once delivery는 메커니즘에 건네지는 각 메시지에 대해 해당 메시지가 0 번 또는 1 번 전달됨을 의미합니다. 보다 일반적인 용어로는 메시지가 손실 될 수 있음을 의미합니다. at-least-once(최소한 한 번 전달) 메커니즘에 전달 된...

BaaS - GameSparks

November 7, 2017

아래 글의 일부 번역이다. BaaSでゲームサーバを作る話 2016년 7월을 자료이므로 지금과 다른 부분이 있을 수 있다.

C# - proto.actor 프레임워크

July 12, 2017

proto.actor Akka와 비슷한 프레임워크이다. Akka.NET의 개발자가 만든 것이다. Akka.NET 이 있는데 이것을 만든 이유는 Akka.NET은 처음부터 모든 것을 다 만들어서 점차 유지 보수가 힘들었다고 한다. proto.actor는 이미 검증 받은 라이브러리를...

C++ http 클라이언트 요청하기 - HappyHttp

April 17, 2018

HappyHttp Visual Studio 2017에서 빌드하면 에러가 난다. 조금 수정이 필요하다. happyhttp.cpp 파일의 상단에 아래의 전처리를 선언한다. #define _WINSOCK_DEPRECATED_NO_WARNINGS 1 #define _CRT_SECURE_N...

C++ http 클라이언트 요청하기 - WinHttpClient

March 14, 2018

Win32 API인 WinHttp를 랩핑한 라이브러리이다. 원 출처는 코드 프로젝트이다. A Fully Featured Windows HTTP Wrapper in C++ 예제 코드 - ConsoleApplicationWinHttp

C++ http 클라이언트 요청하기 WinHttp

March 11, 2018

아직은 기본 C++ 라이브러리로 http 통신을 할 수 없다. (아마 C++ 20 에서는 가능하지 않을까 생각한다). C++로 웹서버에 http 통신을 하려면 외부 라이브러리를 사용하던가 혹은 OS에서 제공하는 API를 사용해야 한다. 이 글에서는 Windows 플랫폼 한정으로 ...

C++ http 클라이언트 요청하기. libcurl, cpp-netlib, cpprestsdk

March 21, 2018

libcurl 개요 공식 사이트. https://curl.haxx.se/libcurl/ 이 라이브러리를 C++ 클래스로 랩핑한 프로젝트도 있다. https://github.com/mrtazz/restclient-cpp VS2017도 지원한다(단 VS...

Cassandra의 스토리지 엔진을 바꾸어서 고속화한 Rocksandra를 Instagram이 오픈소스로 공개

March 18, 2018

원문 Instagram은 NoSQL 데이터베이스 Cassandra에서 발생했던 Java의 가베지 컬렉션에 기인한 지연을 해소한 고성능 개량 버전 Cassandra를 오픈 소스로 공개했다고 발표했다. https://engineering.instagram.com/open-sourci...

DPDK를 이용한 네트워크 스택, 고성능 통신 베이스

February 12, 2018

번역입니다. 원본

HyperV-Switch를 사용하여 Windows 10의 HyperV on-off 하기

October 11, 2017

Windows 10에서 VirtualBox에 linux를 설치할 때 64비트를 설치 못하는 문제가 있다. 이것은 Windows에서 HyperV를 사용하고 있기 때문이다. 해결을 위해서는 HyperV를 종료하면 된다. HyperV를 때때로 사용해야 하는 경우는 HyperV-Sw...

League of Legends Platform의 AWS 이행

March 5, 2018

AWS re:Invent 2017에서의 LoL 세션을 정리한 글. 원문(일본어) 강연자 Rob Cameron씨. Senior Infrastructure Engineer, Riot Games 세션 내용 무엇을 해결 했는가? LoL의 컴포넌트는 크게...

NHN Next 게임서버 수업 실습용 채팅서버 소스 코드

April 17, 2017

NHN Next의 2016 ~ 2017년 게임서버 과정 수업에서 실습으로 만드는 채팅 서버 코드이다. Github Windows 플랫폼만 지원(Linux 지원 어렵지 않음) 64 비트 지원 C++ 로 구현 Visual Studio 2017 select 기반.동...

RPS(Receive Packet Steering)와 RFS(Receive Flow Steering)

April 23, 2018

RPS(Receive Packet Steering) RPS는 수신한 패킷을 처리하는 네트워크 부하를 다중 코어로 분배할 수 있다. 이 기술은 TCP/IP 같은 프로토콜을 패킷으로서 병행적으로 처리할 수 있다. 매핑은 해시 테이블 메커니즘에서 행해진다. 수신한 큐에는 CPU에 대한 ...

TCP 혼잡 제어 알고리즘들

December 7, 2017

원문 TCPの輻輳制御アルゴリズム、どれが一番速い? 의 일부이다. TCP의 중요한 요소로 혼잡 제어 알고리즘이 있다. TCP는 시퀀스 번호를 사용한 응답 확인에 의해 데이터의 확실한 도착을 보장하고 있다. 응답 확인을 하지 않은 패킷에 대해서는 다시 같은 데이터를 송신하도록, ...

Ubisoft 사례 - For Honor에서의 Amazon ECS 사용법

March 8, 2018

AWS re:Invent 2017에서의 Ubisoft 세션을 정리한 글. 원문(일본어) AWS ECS 사전 지식 강연자 Ralf Mueller - Online Technical Architect, Ubisoft Louis-Michel Gélinas - DevOps Team...

Virtual Box 팁과 링크 모음

November 1, 2017

가상머신과 Host간에 클립보드 공유 Ctrl-Alt-Del 누르기 게스트 확장 설치 공유 폴더 만들고 사용하기 가상화 활성화 하기 http://ubuntu.or.kr/viewtopic.php?p=44555 http://www.ibora.net/board/?i...

VirtualBox에 설치한 가상PC를 외부에서 RDP로 접속하기

November 1, 2017

Web 서버에서의 Thundering Herd

December 12, 2017

원문 WebサーバでのThundering Herdは過去の話? Thundering Herd란 하나의 소켓에 대해서 select나 epoll 같이 통신 가능하게 되는 것을 기다리는 시스템 콜을 이용하여 복수의 프로세스(또는 스레드)가 대기하고 있다면, 통신 가능하게 되었을 때 원래...

Win32 API - 대기 체인 분석

November 10, 2017

Windows7 에서 새로 생긴 기능이다. 이것을 사용하면 프로그램을 종료 시켰는데는 프로세스는 죽지 않고 살아 있는 경우 어디서 문제가 되었는지 어느 정도 알아낼 수 있다. 이 프로그램은 내가 집에서 만든 서버 애플리케이션으로 X 버튼을 눌러서 종료시킨다. 그런데 작업...

Windows 10 에서 Unix Domain Socket 사용 가능

June 15, 2018

Windows 10 2018년 봄 대형 업데이트에서 Unix Domain Socket 기능이 추가 되었다. AF_UNIX comes to Windows – Windows Command Line Tools For Developers Unix Domain Socket을 사용하기 위해서...

Windows에서 IOCP를 사용하는 경우의 설계에 관한 문제

July 10, 2017

MSDN에서… 개요 이 자료는 Windows NT IOCP(I/O Completion Port)의 입출력 모델에 대해서 이미 이해하고 관련된 API에 대한 자세한 지식이 있는 유저를 대상으로 하고 있다. IOCP에 대해서는 IOCP의 구현과, IOCP를 사용하기 위해서 필요한 A...

socket의 accept에서 발생하는 에러와 의미

September 22, 2018

출처: https://qiita.com/kawasin73/items/3371d35166af733c2ce4

socket의 read에서 발생하는 에러와 의미

September 26, 2018

출처: https://qiita.com/kawasin73/items/3371d35166af733c2ce4

warning C4996 'inet_addr'

June 27, 2017

몇 년전에 만들어진 Winsock API를 사용한 코드를 최신 VC++로 빌드하면 아래와 같은 경고를 볼 수 있다. warning C4996: 'inet_addr': Use inet_pton() or InetPton() instead or define _WINSOCK_DEPREC...

내 PC에서 실행 중인 VirtualBox에 내트워크 연결하기

October 30, 2017

내 PC에서 실행 중인 VirtualBox에 설치된 애플리케이션에 네트워크로 접속하려면 VirtualBox의 ‘포트 포워딩’을 설정하면 된다. 아래는 VirtualBox에 설치된 MongoDB를 내 PC에서 접속하기 위해 포트 포워딩 설정을 하였다. VirtualBox에 설치된...

도서 '온라인 게임 서버'의 예제 코드

March 31, 2018

온라인 게임 서버(지은이 강정중) 책의 예제 코드를 리팩토링 한 것이다. Visual Studio 2017(2015도 가능하다) ChatClient와 GameClient는 MFC로 구현되어 있어서 포팅하지 않았다(원본 코드를 보기 바란다) 원본 디렉토리에 원본 코드가 있다.

동영상 전달 서비스에 UDP를 사용하는 Akamai

August 21, 2017

일본의 Akamai 기사 중 동영상 전달 서비스에 UDP를 사용하는 이야기가 흥미로워서 일부 번역했다. 원문 방송국은 지상파, 위성, 케이블 텔레비전을 통해서 프로그램을 전달하고 있다. Akamai로는 이러한 서비스의 IP 전개를 한층 촉진하고 싶다. 첫째 라이브 배급 워크...

잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback

February 19, 2017

C++ Korea와 함께하는 제3회 마이크로소프트 멜팅팟 세미나 에서 ‘잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback’ 라는 이름으로 했던 내 강연의 자료이다. 슬라이드쉐어 github github에는 문서와 예제 코드도 같이 ...

패킷과 프레임의 차이

May 2, 2018

출처 네트워크를 통해 전송되는 데이터는 패킷이나 프레임이라는 단위로 분할되어 회선 위를 왕래한다. 같은 것을 가리키면서 패킷 이라고하거나, 프레임이라고도 하지만 엄밀하게는 다른 것이다. 인터넷 기술 표준화를 추진하는 단체 IETF(Internet Engineering Task ...

Node.js (3)

Debugging Node.js Performance Issues in Production

March 25, 2017

아래 강연의 내용의 일부를 정리 Debugging Node.js Performance Issues in Production 느리게 되는 이유 single thread CPU intensive code Slow I/O Event Loop saturation R...

Node 7.6 에서 async/await를 기본으로 지원

March 13, 2017

Node.js 7.6 이 출시 되었다. async/await 지원이 기본적으로 유효하게 되어 낮은 메모리 디바이스에서의 성능이 개선되었다. Node 7.6의 async/await 지원은 Chromium의 JavaScript 엔진인 V8를 버전 5.5로 업데이트한 데 따른 것이다....

네이티브 모듈의 ABI 호환성 문제 대처

April 5, 2017

2017년 3월 13일(미국)에 열렸던 ‘Node.js VM Summit’ 에서 Node의 네이티브 모듈의 ABI 호환성 문제에 대해서 회의를 하였다. 회의 동영상 Node의 네이티브 모듈 문제 Node의 네이티브 모듈은 C/C++로 만들었고 V8과 NAN API(Applicat...

OS (2)

IDC Japan의 일본의 서버 OS 점유률

October 3, 2018

IDC Japan에 의하면 일본에서 서버 OS 점유률은 Windows Server 52%, Linux 24.8%. 클라우드에 의해 Linux가 높은 성장을 하고 있다고 한다. Windows Server는 대기업의 프라이베트 클라우드나 클라우드 벤더 등의 대 규모 데이터 센터용으로 ...

Linux에서의 최대 스레드 수

October 4, 2018

Linux에서 스레드의 최대 수를 변경하고 싶다면 커널의 파라메터를 조정하면 된다. kernel.threads-max와 kernel.pid_max, vm.max_map_count 수를 늘리면 된다. 예) sysctl -w kernel.threads-max=600000 sysctl...

Visual Studio (36)

VS2017 에 포함되어 있는 C++ 컴파일러 버전 매크로

March 20, 2017

VS2017 에 포함되어 있는 C++ 컴파일러의 버전 매크로는 _MSC_VER 1910 참고로 VS 2015는 1900. MSVC 런타임은 2015와 바이너리 호환. 그리고 VS 2017를 설치할 때 옵션 선택에 의해 VS 2015.3의 MSVC도 별도 추가할 수 ...

Visual Studio - C++ 라이브러리 프로젝트 시작하기

September 4, 2017

Visual Studio 2017의 세번째 업데이트 버전이 얼마전에 나왔다. Visual Studio 15.3 이다(이후 또 이버전의 패치 버전이 나와서 지금은 15.3.1 이다). 기존의 Visual Studio 버전 정책과 다르게 메이저 업그레이드도 아닌데 UI 변경이 꽤...

Visual Studio - C++ 솔루션 로딩과 빌드 고속화

September 29, 2017

MSDN에 있는 글 의 번역 입니다. C++ 솔루션 로딩 고속화 C++ 프로젝트를 향해서 “신속한 프로젝트 로딩”이라는 시험적인 기능이 도입되었다. C++ 프로젝트를 처음 열었을 때의 로딩 시간을 단축하는 것으로 2번째 이후에는 더 짧아진다. 이 시험 기능을 사용하는 경우는 아래...

Visual Studio - C++ 코드 분석 시 C++ 코어 가이드 적용하기

August 18, 2017

C++ 표준 위원회에서 C++ 코딩 규칙을 만들어서 깃허브에 공유했는데 이것이 C++ 코어 가이드 이다. VS2017 에서는 코드 분석 기능을 사용할 때 C++ 코드가 C++ 코어 가이드 룰에 맞게 코딩 되었는지 분석할 수 있다. 방법은 아래 그림처럼 설정한다.

Visual Studio - Find All References (모든 참조 검색)

August 14, 2017

코드 중의 변수나 함수가 다른 코드에서 어떻게 참조 되고 있는지 알고 싶을 때 ‘모든 참조 검색’을 사용한다. 단축키는 Shift + F12 이다. VS 2017에서는 이전과 다르게 검색 결과에 마우스를 올리면 해당 코드를 미리 볼 수 있다. 코드 미리 보기는 C++은 아직 되...

Visual Studio - Go To All (모두로 이동)

August 16, 2017

검색 하기 원하는 단어를 선택 후 [Ctrl]+[T] 키를 누르면 아래와 같은 창에 검색 결과가 나온다. 그리고 만약 검색 단어가 타입으로 사용된 것만 찾고 싶다면 ‘t 검색어’를 입력한다. 또 멤버 변수로 사용된 것만 검색하고 싶다면 ‘m 검색어’를 입력한다. 아래 그림에서...

Visual Studio - Go To 관련 키보드 단축키

September 25, 2017

VS에서 코딩 혹은 코드를 분석할 때 Go To 관련 단축키를 기억하고 있어서 편리하다. Go To 관련 키보드 단축키

Visual Studio - JSON, XML 데이터 붙여 넣기로 클래스 만들기

November 20, 2017

소스 코드에 JSON, XML 포맷의 데이터를 붙여 넣기를 할 때 붙여 넣을 데이터 구조에 맞는 클래스를 생성할 수 있다. 이 기능은 C#에서만 사용할 수 있다. 어떻게 사용하는지 아래 그림을 참고하기 바란다. 출처: Did you know – You can automat...

Visual Studio - Lightweight Solution Load

August 28, 2017

Lightweight Solution Load를 활성화 하면 프로젝트 지연 읽기를 할 수 있다. (프로젝트 로딩 시 전체 솔루션이 로딩 다 되지 않아도 활성화 되면서 순차적으로 솔루션을 로딩한다. 즉 모든 솔루션이 로딩 될 때까지 대기하지 않을 수 있다) 이 기능은 솔루션에는 수 ...

Visual Studio - Nuget 패키징 포맷이 packages.config 뿐만이 아닌 PackageReference도 사용 가능

November 10, 2017

Nuget으로 라이브러리를 설치하면 기존까지는 packages.config 파일이 만들어지면 이 파일에 관련 정보가 들어가 있었다. 그러나 VS2017부터는 .NetCore에서 사용 하는 방식처럼 PackageReference도 사용할 수 있다. PackageReference를 사...

Visual Studio - Productivity Power Tools

November 24, 2017

이전 버전의 Productivity Power Tools는 복수의 확장 기능을 모은 패키지로 제공되고 있었지만 VS 2017용 Productivity Power Tools에서는 아래의 기능이 개별 확장 기능으로서 VS Marketplace에서 배포된다(VS 2017의 [도구]-[확...

Visual Studio - Structure Guidelines

September 20, 2017

Visual Studio 2017 에서 추가된 기능이다. 한국어로는 ‘구조 안내선 표시’ 라고 한다. 이 기능은 코드 블록 구조에 맞추어 에디터에 세로 선이 표시된다. 이 세로 선에 커서를 맞추면 그 블록의 모든 부모 블록을 나타내는 힌트가 팝업 표시된다. (본인만의 문제인지 ...

Visual Studio - VC++ 의 디버그 모드 실행이 느린 경우 빠르게 하기

November 13, 2017

VC++에서 디버그 모드로 실행할 경우 프로그램 실행 속도가 엄청나게 느려질 수 있다. (특히 PC 온라인 게임 클라이언트) 이런 경우 컴파일러 옵션을 조정해서 실행 속도를 올릴 수 있다. 디버그 모드에서는 최적화 옵션이 off로 되어 있는데 이것을 on으로 한다. 그런데 최적화...

Visual Studio - VS2017의 성능 강화

July 24, 2017

프로젝트의 읽기를 경량화 하고, 로딩 시간을 단축: 100 종류등 많은 프로젝트가 포함 되어 있는 솔루션에서는 모든 파일이나 프로젝트가 동시에 사용되지 않는다. VS 2017에서는 모든 프로젝트를 읽기 전까지 기다리지 않고 편집과 디버깅을 시작할 수 있다. 확장 기능의...

Visual Studio - Visual Studio에서 버전 관리할 필요가 없는 파일을 정의한 .gitignore

October 15, 2018

출처 ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. ## ## Get latest from https://github.com...

Visual Studio - cpplint 사용하기

March 28, 2017

cpplint ? cpplint는 python으로 만든 C++ 소스 코드가 Google C++Style Guide를 지키고 있는지 검사하는 툴이다. cpplint 설치 python 2.7에서 pip로 설치한다. Visual Studio에 외부 툴로 cppl...

Visual Studio - editorconfig 사용하기

November 27, 2017

VS 2017에서는 프로젝트 마다 혹은 프로젝트의 특정 폴더마다 에디터 설정을 바꾸기 원한다면 .editorconfig 파일을 사용한다. VS 2015에서는 이와 동일한 기능을 사용하려면 플러그인을 사용해야 했으나 2017에서는 기본 기능으로 들어왔다. .editorconfig ...

Visual Studio - 구성 요소 추가하기

July 31, 2017

VS를 설치 후 추가로 구성 요소를 설치하고 싶다면 아래와 같이 하면 된다. (추가 구성 요소 예로는 MFC 라이브러리 추가 하기 등) VS 실행 후 새 프로젝트 선택 후 아래 창에서 왼쪽 아래의 ‘Visual Studio 설치 관리자 열기’를 선택한다. 설치하고 싶은 요소...

Visual Studio - 더 편리해진 시작 페이지

August 3, 2017

시작 페이지는 VS를 시작하면 첫 화면에 나오는 페이지다. 이 페이지의 유용성 향상은 VS 2015에서 시작되었고 VS 2017에서 더 향상 되었다. 최근에 사용한 항목이 페이지 왼쪽에 크게 표시 페이지 중앙부에서는 VSTS와 GitHub 등의 저장소에서 코드 가져 오기 ...

Visual Studio - 디버깅 기능 모음

December 28, 2017

Visual Studio의 디버깅 기능을 정리하는 글이다. 앞으로 이 글에 계속 업데이트 한다. 7 More Lesser-known Debugging Tactics for Visual Studio

Visual Studio - 디버깅 모드에서 역어셈블리 코드 보기

November 3, 2017

VC++ 에서는 디버깅 모드에서도 역어셈블리 코드를 볼 수 있다. 메뉴에서 “Debug” -> “Windows” -> “Disassembly”를 선택한다. 역어셈블리 코드 창이 나타난다. 이 화면을 보면 코드 바이트는 표시되지 않고 있다. 코드 바이트를 보고 싶다...

Visual Studio - 리팩토링 제안

October 10, 2017

VS2017에서는 리팩토링 기능이 강화되었다. 내가 만든 코드를 더 좋은 코드로 바꿀 수 있도록 새로운 코드를 제안해준다. 이 기능은 C#과 Visual Basic 에서 사용할 수 있다. 출처: http://codezine.jp/article/detail/9861?...

Visual Studio - 모든 프로젝트의 디렉토리 설정

October 16, 2017

VS2008까지는 ‘도구’ – ‘옵션’ 메뉴를 통해서 VC++ 디렉토리를 설정하였다. 이렇게 설정한 정보는 모든 VC++ 프로젝트에 적용된다. 그러나 VS2010에서는 각 프로젝트 별로 VC++ 디렉토리를 설정한다. 각 프로젝트 마다 독립적으로 설정을 할 수 있어서 편한...

Visual Studio - 성능 관리

August 10, 2017

VS 2017의 부팅 속도 및 솔루션 로드, 코드 편집에 악 영향을 미치는 확장 기능의 감시 기능의 도입되었다. (본인도 이전에 확장 기능 설치 후 VS의 시작이 엄청 느려져서 확장 기능을 하나씩 삭제하면서 문제 있은 확장 기능을 찾았다) 성능이 낮은 확장에 대한 통지가 온다. ...

Visual Studio - 솔루션 탐색기에 있는 폴더 중 이 폴더 안의 파일만 표시하기

August 25, 2017

Visual Studio - 업데이트 등에서 에러가 발생했을 때의 대처 방법

September 13, 2017

Open an elevated command prompt. Run: %ProgramFiles(x86)%\Microsoft Visual Studio\Installer\resources\app\layout\InstallCleanup.exe -i 위 조...

Visual Studio - 인텔리센스 필터링(IntelliSense filtering)

September 22, 2017

IntelliSense는 카테고리 마다 일련의 값을 압축함으로써 새로운 API를 재 빠르게 참조할 수 있는 필터링 기능이다. 이 기능을 사용하면 필요한 변수를 많은 타입 속에서 찾아낼 필요가 없어진다. 아래 스크린 샷은 필터를 사용하여 C++ 코드 파일의 IntelliSense의 ...

Visual Studio - 일치한 부분 강조 표시(Match highlighting)

October 20, 2017

VS2017 에서는 C++은 미 지원. 결과를 빨리 얻기 위해서 카멜 케이스 매칭(한 묶음으로 한 합성어의 각 대문자를 입력하여 보완) 등을 할 경우 아이템이 어느 부분에서 일치하는지 판단하기 힘들다. C#, VB, JavaScript, TypeScript의 IntelliSens...

Visual Studio - 자주 사용하는 단축키

March 30, 2017

문자 검색/치환 Ctrl+F: 문자 검색 Ctrl+H:문자의 치환 직사각형 선택 Alt 키를 누른 상태에서 마우스로 원하는 직사각형 모양의 범위를 만든다. 자동 인덴트(indent) Ctrl+K, Ctrl+D: 파일 전체의 인덴트 조정 Ctrl+K, Ctrl...

Visual Studio - 참조 어셈블리와 NuGet 패키지의 타입의 using/Imports를 추가

October 23, 2017

인식되지 않는 타입이 입력된 경우 참조 어셈블리와 NuGet.org를 검색하여 using/Imports를 추가하도록 간단한 수정을 제안한다. 이 기능은 default로는 무효로 되어 있다. 유효화 하려면 [Tools]-[Options]-[Text Editor]-[C#] 또는 [B...

Visual Studio - 커스텀 템플릿 만들기

November 6, 2017

게임 개발에 사용할 프로젝트가 틀이 잡혔다면 다음에도 이와 비슷하게 프로젝트를 만들어서 사용하기 위해 커스텀 템플릿을 만들어서 사용하면 좋다. 먼저 커스텀 프로젝트를 만들 프로젝트는 기본적인 것들만 있도록 정리한다. 이후 아래와 같이 템플릿을 만든다.

Visual Studio - 툴 박스에 코드 보관하기

April 14, 2017

VS의 툴박스에 특정 코드를 보관하고, 이 코드를 선택하여 코딩 시 삽입할 수 있다. 툴박스에 보관하기 바라는 코드를 마우스로 선택 후 툴박스로 드래그 한다. 위에서 드래그한 코드가 툴박스에 들어가 있는 것을 볼 수 있다. 추가한 코드를 마우스 오른쪽 클릭하면 삭제, 수정 ...

Visual Studio - 파일 인코딩 형식을 지정해서 저장하는 방법

September 18, 2017

VS2017 에서는 VS2015 때와 비교해서 파일 인코딩 형식을 바꾸어서 저장하는 방법이 조금 바뀌었다. 하는 방법은 아래 그림을 참고 한다.

Visual Studio - 폴더(디렉토리) 선택으로 열기

July 27, 2017

VS 2017 이전에는 VS 솔루션 파일이 소스 파일은 VS에서 사용할 수 없었다. VS에서 사용하려면 새로 솔루션을 만든 후 수동으로 소스 파일들을 추가해야 했다. 그러나 VS 2017의 새로운 기능으로 폴더 선택 열기만으로 솔루션 파일이 없는 소스 파일들을 사용할 수 있다. ...

Visual Studio - 확장 툴 Code alignment

October 25, 2017

Test.dsdsds = 10; Test.ds = 10; 이런 코드가 있을 때 아래처럼 = 중심으로 코드를 정렬하고 싶을 때가 있을 것이다. Test.dsdsds = 10; Test.ds = 10; 이런 것을 Visual Studio의 확장 툴인 ‘Code alignm...

Visual Studio 제거하기

March 15, 2017

MS가 만든 Visual Studio Uninstaller를 사용하여 제거하는 것이 좋다. 설치 파일은 아래 링크에서 얻을 수 있다. 다운로드 사용법 다운로드 -> 압축 해제 -> Setup.ForcedUninstall.exe 실행 -> 질문에 Y 답변 콘솔 ...

etc (7)

GitHub Awards

January 31, 2017

개요 Github 계정을 갖고 있다면 “GitHub Awards” 라는 Web 서비스를 사용할 수 있다. 자신의 레포지토리에 붙여진 “스타”의 수를 기준으로 전 세계 GitHub 사용자 중 자신의 “랭킹 순위”를 알 수 있다. http://github-awards.com...

GitHub의 markdown 문법의 코드 블럭에서 문법 하이라트 가능한 언어 리스트

August 23, 2017

Github의 markdown 에서 코드를 기술할 때 ``` ``` 라는 블럭으로 코드를 감싼다. 여기에 더해서 코드 블럭에 있는 코드의 문법 하이라이트 기능을 사용하고 싶다면 해당 언어 키워드를 적으면 된다. swift의 경우는 아래와 같다. ```Swift ``` ...

Microsoft MVP가 되었습니다

April 3, 2017

Microsoft MVP 몇 년 전에 2009,2010,2011년 3년 연속으로 Visual C++ 부분 MVP로 선정된 적이 있습니다. 그러나 2012년부터는 MVP 신청을 하지 않았습니다. 이유는 당시에는 MVP 자격 조건이 MS 제품만을 다루고, MS가 운영하는 포럼에 답...

editorconfig 파일

May 16, 2018

이것으로 프로젝트 디렉토리에 .editorconfig 파일을 준비해 두면 설정이 적용된다. (Visual Studio, Atom 등 유명 에디터에서 지원하고 있다) 즉 git의 관리 대상으로 하면 프로젝트에서 통일 시킬 수 있다. .editorconfig 파일의 예 # Edit...

본인이 집필한 C++ 책 리스트

February 2, 2017

본인이 집필한 C++ 책 리스트. 모두 e-Book 이다. eBook 모던 C++ : C++14의 핵심 기능을 중심으로 (한빛미디어) 2015.03.31 eBook 당신의 프로그래밍에 디버깅 더하기 : Visual C++ 디버깅 기초에서 고급까...

이 블로그의 rss 피드 주소

December 15, 2016

나처럼 Feedly 서비스를 사용 중이라면 피드 추가에 이 블로그 url을 입력하면 된다. 이 블로그 주소로 rss 리더에 등록 되지 않는다면 아래의 주소를 사용해 보기 바란다. https://jacking75.github.io/feed.xml

티스토리 블로그에서 이사

December 14, 2016

네이버 블로그 -> 티스토리 블로그를 걸쳐서 이번에는 깃허브로 왔다. 티스토리에 있는 블로그 주소는 http://jacking.tistory.com/ 이다.

threading (5)

Cache Coherence

July 19, 2017

QPI(퀵패스 인터커넥트) 출처: http://www.slideshare.net/kumagi/ss-40688480

Lockless Programming Considerations for Xbox 360 and Microsoft Windows

July 17, 2017

Lockless Programming Considerations for Xbox 360 and Microsoft Windows 라는 글의 결론 플랫폼 별 동작 차이 InterlockedXxx 함수에서 CPU에 의한 읽기/쓰기 순서 변경을 방지할 수 있는 것은 Windows로...

lock-free 알고리즘 - 순차일관성

June 16, 2017

순차일관성(sequential consitency)이란? 순차일관성은 컴퓨터 시스템에 관한 메모리 일관성 모델의 하나이며 정의를 Wikipedia에서 인용하면 “어떤 실행 결과도 모든 프로세서가 어떤 순서로 차례적으로 실행한 결과와 동일하며, 또한 각각의 프로세서의 처리 순서가 프...

병렬프로그래밍 - SMP(Symmetrical Multi Processing) 와 AMP(Asymmetrical multi processing)

April 24, 2017

참고 http://monoist.atmarkit.co.jp/mn/articles/0812/18/news123_2.html

병렬프로그래밍 - 호모지니어스 CPU와 헤테로지니어스 CPU

May 8, 2017

참고 http://monoist.atmarkit.co.jp/mn/articles/0812/18/news123_2.html

모임 (15)

2017년 03월 ‘온라인 서버 제작자 모임’ 정기 세미나

March 26, 2017

한국 MS의 멜팅팟 프로그램 지원을 받고 온라인 서버 제작자 모임 에서 3월 정기 모임을 합니다. 날짜: 3월 30일 (목) 19시 30분 ~ 21시 30분 장소: 토즈 강남점 내용 최흥배: 해외 강연 해설 ‘여기까지 할수 있다! Visual Studio 2015-...

2017년 04월 ‘온라인 서버 제작자 모임’ 정기 세미나

April 20, 2017

한국 MS의 멜팅팟 프로그램 지원을 받고 ‘온라인 서버 제작자 모임’에서 4월 정기 모임을 합니다. 날짜: 4월 26일(수요일) 19시 30분 ~ 21시 30분 장소: 토즈 강남점 내용 Visual Studio 2017 Linux development with C++ (최...

Boost보다 쉽고 빠른 POCO C++ 라이브러리로 채팅 서버 개발하기(9/16)

September 1, 2017

9월 16일 토요일에 ‘POCO 네트워크 프로그래밍’을 주제로 강연을 합니다. 실습도 같이 하기 때문에 오전 10시~18시까지 합니다. POCO를 사용한 네트워크 프로그래밍을 빨리 배우기 원하는 분들에게 좋을 것 같습니다. 그리고 네트워크 프로그래밍을 잘 모르는 분들을 위해 관련 ...

C#으로 대규모 모바일 게임 서버 만들기- ASP.NET Web API와 NoSQL

January 25, 2018

작년에 할 예정이었던 강의이었지만 수강자 부족으로 열리지 못했습니다. (작년에 하반기 예정했던 강의가 수강자 부족으로 모두 열리지 못했습니다) 제가 Next에서의 계약이 끝나서 구직 중이라 지금 잠깐 시간이 날 때 강의를 하려고 합니다. 유료 강의는 진행하기 쉽지 않은 것 같아서...

C#으로 대규모 모바일 게임 서버 만들기- ASP.NET Web API와 NoSQL(8월31일)

August 9, 2017

8월 31일에 2년만에 이전에 했던 ‘C#으로 대규모 모바일 게임 서버 만들기’라는 제목으로 세미나를 진행합니다. 시간의 흐름에 따라서 당연하지만 이전에 했던 것과 내용에 변경이 있습니다. 이전에는 WCF를 게임 서버 프레임워크로 사용했다면 이번에는 ASP.NET Web AP...

C#으로 대규모 모바일 게임 서버 만들기- ASP.NET Web API와 NoSQL(8월31일)

August 1, 2017

8월 31일에 2년만에 이전에 했던 ‘C#으로 대규모 모바일 게임 서버 만들기’라는 제목으로 세미나를 진행합니다. 시간의 흐름에 따라서 당연하지만 이전에 했던 것과 내용에 변경이 있습니다. 이전에는 WCF를 게임 서버 프레임워크로 사용했다면 이번에는 ASP.NET Web AP...

NDC 2018 go로 네트워크 프로그래밍 하기 강연 자료

April 26, 2018

NDC 2018. 4/24일에 강연한 ‘ go로 네트워크 프로그래밍 하기’의 강연 자료입니다. https://github.com/jacking75/conf_ndc_2018 25분짜리 강연이고, 초급자 대상이라 초급 레벨을 넘은 사람에게는 도움 안됩니다. go 공부로는 2년 전부...

네트워크&게임 서버 프로그래밍 강의를 계획 하고 있습니다.

December 17, 2017

제게는 큰 기술은 아니지만 다른 사람에게는 필요한 기술은 가능하면 공유하려고 합니다. 그래서 2018년 1월부터 네트워크와 게임서버 프로그래밍(프로그래밍 언어는 C++, C#) 중심으로 강의를 할 예정입니다. 교육 기관에서 하는 것이 아니고 개인적으로 하는 것이라서 강의비를 받지...

네트워크&게임 서버 프로그래밍 배우기 - 1

December 20, 2017

온오프믹스에 모임 개설했습니다. 신청 에서 하시면 됩니다.

네트워크&게임 서버 프로그래밍 배우기 - 2

January 9, 2018

온오프믹스를 통해서 참가 신청 받고 있습니다. 신청하기 이 모임에 대한 설명

네트워크&게임 서버 프로그래밍 배우기 - 3

January 22, 2018

온오프믹스를 통해서 참가 신청 받고 있습니다. 신청하기 이 모임에 대한 설명

네트워크&게임 서버 프로그래밍 배우기 - 4

February 9, 2018

온오프믹스를 통해서 참가 신청 받고 있습니다. 신청하기 3회와 같은 내용으로 채팅 서버 실습을 합니다. 3회에 참석하지 못한 분들은 참석해서 모르는 부분 질문 해주세요. 이 모임에 대한 설명

네트워크&게임 서버 프로그래밍 배우기 - 5

February 26, 2018

온오프믹스를 통해서 참가 신청 받고 있습니다. 신청하기 5회에는 IOCP에 대해서 설명하고, echo 서버를 만들어볼 예정입니다. 이 모임에 대한 설명

네트워크&게임 서버 프로그래밍 배우기 - 6

March 22, 2018

온오프믹스를 통해서 참가 신청 받고 있습니다. 신청하기 6회에서는 IOCP 코드 분석 및 실습입니다. 이 모임에 대한 설명

네트워크&게임 서버 프로그래밍 배우기 - 7

April 8, 2018

신청 시간: 4월 15일 (일) 10시 00분 ~ 12시 00분 장소: 투썸플레이스 낙성대역점 이론 공부는 어느 정도 했기 때문에 토즈와 같은 장소를 빌리지 않고 카페에서 모여서 각자 코딩을 하면서 막히는 부분이 있으면 저에게 질문하거나, 참석한 분들과 상의하면서 네트워크 라이...

번역 (19)

(일본)임베디드 개발자가에 인기 있는 언어와 OS

February 7, 2017

일본의 ‘fabcross for 엔지니어’ 라는 곳에서 제조업에서 임베디드 관련 프로그래밍을 하는 엔지니어를 대상으로 한 설문 조사에서 업무에서 자주 사용하는 언어는 C (36 %) C++ (32.5 %), Java (23.5 %), Visual Basic (21...

Amazon S3의 대규모 장애는 인위적 실수가 원인

March 6, 2017

미국 Amazon.com의 클라우드 사업 Amazon Web Services(AWS)는 “Amazon Simple Storage Service(S3)”서비스에서 발생한 대규모 장애에 관한 조사 보고를 현지 시간 2017년 3월 2일 공개하면서 인위적 실수가 원인이었음을 밝혔다. ...

C 언어의 현대화를 목표로 하는 C2

March 25, 2018

원문 C2는 부트 로더, 커널, 드라이버, 시스템 레벨의 도구와 같은 저 레벨 프로그램에 적합한 C 언어의 진화를 목표로 하는 새로운 프로그래밍 언어이다. C2의 기본 이념은 C 언어의 좋은 부분을 유지하면서 40년 이상을 거친 옛 언어 부분을 버리는 것에 있다고 작자 Bas ...

C/C++에 죽음을

July 20, 2017

역자주: 제목이 자극적이라서 보았는데 핵심은 Rust 사용하자는 글이다. 그런데 아직은 Rust의 개발 환경은 덜 만들어져서 시기 상조라고 생각된다. 프로그래밍 언어 C는 역겹다. 물론 훌륭함 것도 있다. 우리가 사는 세계의 대부분은 C 위에 만들어졌다. 그리고 대부분의 컴퓨터 ...

CTO에게 중요한 3가지 스킬

April 12, 2018

원문 읽는 것: 나는 언제나 날듯이 빠르게 읽어 왔다. 이것은 좋은 일이기도 했다. 왜냐하면 이제 읽어야 할 필요가 있기 때문이다. 기계 학습 논문과 Github의 README, API 문서, 그리고 테크니컬 튜터리얼. 야심적인 설계 문서와 고객의 요청서. e메일과 Slack의 ...

Google에서 3DCG를 위한 압축 라이브러리 「Draco」를 GitHub에 공개

February 8, 2017

https://github.com/google/draco Chrome Media팀이 개발한 압축 라이브러리로 ZIP 형식보다 효율적으로 데이터 압축을 실행할 수 있는 오픈 소스이다. 압축한 Mesh 파일의 크기 100MB 일 때 ZIP으로는 30MB 이지만, Draco에서는 10...

ISO 드래프트 종류

September 4, 2017

새로운 C++ 표준이 만들어 질 때 공개되는 문서에 ISO 드래프트 라는 단어가 나오는데 이 ISO 드래프트 종류에 대한 간단한 설명이다. 발행까지 6 단계이다. Proposal stage 만들고 있는 규격이 정말 필요한지 확인. Prepar...

LLVM 이란?

March 27, 2018

원문 LLVM 프로젝트는 모듈러와 재이용 가능한 컴파일러와 툴 체인 기술의 집합이다. 이 이름에도 불구하고 LLVM은 기존 VM과는 거의 관계가 없다. LLVM이라는 이름은 머리 글자를 딴 것이 아니라 프로젝트 이름이다. LLVM은 모던하고 SSA 베이스한 임의의 프로그래밍 언...

Microsoft가 클라우드 게이밍 서비스 PlayFab을 인수하여 Azure에 통합

January 31, 2018

원문 Microsoft가 PlayFab를 인수했다. 이것은 개발자들에게 간단한 백 엔드 서비스를 제공하고 타이틀의 기동을 재빨리 할 수 있도록 하는 서비스이다. Microsoft의 Azure 게임 그룹에 통합될 예정이다. 시애틀에 본거지를 둔 이 회사는 투자자로부터 약 1300...

WCF와 ASP.NET Core의 성능 비교

April 14, 2018

원문 Microsoft는 ASP.NET Core 개발에 많은 시간과 개발 능력을 지출했다. 그 결과, 새로운 기능을 가진 오픈 플랫폼이 탄생하고, 큰 개발자 커뮤니티와의 오픈된 노력에서 혜택을 받아왔다. ASP.NET Core는 WCF(Windows Communication Fo...

여성 게이머가 가장 좋아하는 장르

February 10, 2017

해외 컨설팅 기업 Quantic Foundry는 27만명 이상의 세계 게이머를 대상으로 조사 하여 “여성 게이머들이 좋아하는 게임 장르” 라는 리서치 결과를 보고했다. Quantic Foundry의 보고에 따르면 27만명 이상의 샘플 중 여성 게이머는 18.5% 정도이고, 조사 ...

영어로 기술 문의를 할 때의 영작문 Tips

January 5, 2018

첫 번째: 자신이 하고 싶은 것과 문제를 간결하게 설명한다 영어는 짧고 알기 쉽게 간단하게 설명하는 것이 매우 중요하다. 나는 가급적 직접 만든 템플릿에 맞추어 자신의 하려고 하는 것과 발생한 문제를 설명하도록 한다. I tried to $자신의 하고 싶은 일 however $일...

초보 프로그래머를 위한 9가지 조언

March 8, 2017

항상 하나의 일에 집중한다 나는 새로운 것을 배울 때는 언제든지 할 일을 분해하고 임한다. 프로그래밍을 할 때 작업에 따라서는 복잡하게 구조화하여 생각하는 것이 있을 것이다. 1개의 태스크를 소화하기 위해서도 다양한 방법이 있고 선택하는 것만으로 방황한다. 다만 무엇...

프로그래밍 어록 - Microsoft에서(또는 다른 곳에서) 일하기 위한 10가지 힌트

May 11, 2017

Omar Shahine 프로세스는 사고의 대용이 되지 않는다. 사무실에만 있지 않는다. 자신의 제품을 사용한다(당신의 고객이 사용하도록). 뭔가가 고장 나고 있으면 불평만 하지 않고 고친다. 행동은 불평보다 웅변이다. 어려운 문제를 쉽게 보이도록 한다. 간단한...

프로그래밍 어록 - egoless programming 10계명

May 11, 2017

Gerald Marvin Weinberg의 “The Psychology of Computer Programming” 에서 자신이 잘못을 저지른다는 것을 이해하고 받아들이기. 자신과 자신의 코드는 별개이다. 아무리 “가라데”를 배워도 언제든지 당신보다 더 잘 아는 사...

프로그래밍 어록 - 소프트웨어 프로젝트 실패의 10가지 징후

May 11, 2017

http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=a76eab63-70f0-48b4-8b75-66c366a651cd 첫번째 버전에서 너무 많은 것을 하려고 한다. 확립되지 않은 기술에 크게 의존하고 있다. 조직의 주 수입...

프로그래밍 어록 - 안드레 테일러의 10년간의 소프트웨어 개발에서 배운 10가지

May 11, 2017

http://www.globalnerdy.com/2007/03/22/andres-taylor-top-ten-things-ten-years-of-professional-software-development-has-taught-me/ 에서 객체 지향은 생각보다 어렵다. 소프...

함수의 적절한 길이는? 마틴 파울러씨는 길이보다 의도와 구현 분리 그리고 좋은 함수 이름이 중요하다고 지적

February 22, 2017

FunctionLength 내 경력에서 함수의 길이는 어느 정도여야지? 라는 논란을 자주 들었다. 이것은 더 중요한 물음으로 대체할 수 있다. 그것은 어느 정도 길이의 코드가 되면 그것을 함수로 삼아야 하느냐는 것이다. 몇 가지 가이드 라인에서는 한 화면에 잡히지 않는다면, 이...

해외 게임 업계의 아웃소싱

May 15, 2017

여러 인기 작품에 관련있지만 아무도 모르는 게임 회사 Blizzard Entertainment의 인기 작품 “오버 워치”를 조사하고 있을 때 어떤 게임 업체 사이트에 맞닥뜨렸다. 회사 이름은 SuperGenius로 사이트의 톱 페이지에는 “오버 워치”의 친숙한 아트 워크가 큼직하게...

사례 (2)

그랑 블루 판타지를 뒷받침하는 인프라 기술

July 5, 2017

일본의 데브서밋 컨퍼런스에서 그랑 블루 판타지에 대해서 특징 스마트 폰 RPG 브라우저 게임 협력 플레이, 멀티 플레이 시스템 규모 등록 유저 수 1400만명 월간 300억 PV 100만 query/sec 8만 req/sec 트래픽 12Gbps...

일본 소셜 게임 회사 gumi의 서버 사이드 기술 스택

August 20, 2018

출처