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

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

Read More

Visual Studio - Structure Guidelines

Visual Studio 2017 에서 추가된 기능이다.
한국어로는 ‘구조 안내선 표시’ 라고 한다.

이 기능은 코드 블록 구조에 맞추어 에디터에 세로 선이 표시된다.
이 세로 선에 커서를 맞추면 그 블록의 모든 부모 블록을 나타내는 힌트가 팝업 표시된다.
...

Read More

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

boost 라이브러리에는 메모리 풀 라이브러리로 object_pool 이라는 것이 있다.
사용법은 아래와 같다.

boost::object_pool<int> pool; int* p = pool.construct(10); pool.destroy(p); 

사용하면 안 되는 이유는 사용한 오브젝트를 해제할 때 너무 느리기 때문이다.
검증 코드

느린 이유는 오브젝트의...

Read More

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

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

위 조작으로 설치를 위해 다운로드된 것이나 사용한 것이 지워지고, 리셋 된다.

%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\resources\app\layout\InstallCleanup.exe 를 찾을 수 없는 경우는 https://www.visualstudio.com/downloads / 보다 최신...

Read More

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

MongoDB의 데이터를 출력하는 툴로 mongoexport 와 mongodump가 있다.
둘 다 mongodb-tools 패키지에 포함되는 도구이다.

mongoexport는 CSV 또는 JSON 텍스트 데이터, mongodump는 BSON 형식의 이진 데이터로 출력한다.

사용법도 데이터 포맷 지정 외에는 거의 똑같이 이용할 수 있다.

... Read More

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

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

InnoDB의 default...

Read More

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

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

#define POCO_STATIC 


Poco 라이브러리는 default로는 동적라이브러리를 사용하는 것으로 설정 되어 있다. 그래서 위의 선언으로 정적...

Read More

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

Visual Studio 2017의 세번째 업데이트 버전이 얼마전에 나왔다.
Visual Studio 15.3 이다(이후 또 이버전의 패치 버전이 나와서 지금은 15.3.1 이다).


기존의 Visual Studio 버전 정책과 다르게 메이저 업그레이드도 아닌데 UI 변경이 꽤 많다. 새 프로젝트를 시작하면 어디에...

Read More

ISO 드래프트 종류

새로운 C++ 표준이 만들어 질 때 공개되는 문서에 ISO 드래프트 라는 단어가 나오는데 이 ISO 드래프트 종류에 대한 간단한 설명이다.


발행까지 6 단계이다.

  1. Proposal stage 만들고 있는 규격이 정말 필요한지 확인.

  2. Preparatory stage working...

Read More

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

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

Read More

golang - 버전 1.9

“Go 1.9”의 가장 중요한 변경은 타입 앨리어스의 도입으로

type T1=T2 

라고 선언함으로써 타입 T2의 앨리어스 이름을 T1으로 정의할 수 있다.

또 math/bit 패키지는 CPU의 특수 명령에 대응한 무부호 정수비트 계수/조작 기능을 갖추고 있으며 sync 패키지에는 안전한...

Read More

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

일본의 Akamai 기사 중 동영상 전달 서비스에 UDP를 사용하는 이야기가 흥미로워서 일부 번역했다.
원문


방송국은 지상파, 위성, 케이블 텔레비전을 통해서 프로그램을 전달하고 있다. Akamai로는 이러한 서비스의 IP 전개를 한층 촉진하고 싶다.

첫째 라이브 배급 워크 플로의...

Read More

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

검색 하기 원하는 단어를 선택 후 [Ctrl]+[T] 키를 누르면 아래와 같은 창에 검색 결과가 나온다.

그리고 만약 검색 단어가 타입으로 사용된 것만 찾고 싶다면 ‘t 검색어’를 입력한다.
또 멤버 변수로 사용된 것만 검색하고 싶다면 ‘m...

Read More

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

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

Read More

Visual Studio - 성능 관리

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

Read More

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

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


이전에는 WCF를 게임 서버 프레임워크로 사용했다면 이번에는 ASP.NET Web API를 사용합니다. 이유는 현재...

Read More

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

시작 페이지는 VS를 시작하면 첫 화면에 나오는 페이지다.
이 페이지의 유용성 향상은 VS 2015에서 시작되었고 VS 2017에서 더 향상 되었다.

  • 최근에 사용한 항목이 페이지 왼쪽에 크게 표시
  • 페이지 중앙부에서는 VSTS와 GitHub 등의 저장소에서 코드 가져 오기
  • 폴더 열기
  • ...
Read More

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

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


이전에는 WCF를 게임 서버 프레임워크로 사용했다면 이번에는 ASP.NET Web API를 사용합니다. 이유는 현재...

Read More

Visual Studio - 구성 요소 추가하기

VS를 설치 후 추가로 구성 요소를 설치하고 싶다면 아래와 같이 하면 된다.
(추가 구성 요소 예로는 MFC 라이브러리 추가 하기 등)

VS 실행 후 새 프로젝트 선택 후 아래 창에서 왼쪽 아래의 ‘Visual Studio 설치 관리자 열기’를 선택한다.

Read More

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

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

Read More

Visual Studio - VS2017의 성능 강화

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

  • ...
Read More

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

프로그래밍 언어 Go로 게임 서버를 만들기 위해 필요한 기술과 경험을 서로 공유하기 위해 스터디를 시작하려고 합니다.


스터디를 만드는 큰 이유는 이 모임을 통해서 꾸준히 Go를 공부하고, 다른 사람들과 Go 관련 지식이나 경험을 공유하기 위해서 입니다.
아마 Go로...

Read More

C/C++에 죽음을

역자주: 제목이 자극적이라서 보았는데 핵심은 Rust 사용하자는 글이다. 그런데 아직은 Rust의 개발 환경은 덜 만들어져서 시기 상조라고 생각된다.

프로그래밍 언어 C는 역겹다. 물론 훌륭함 것도 있다. 우리가 사는 세계의 대부분은 C 위에 만들어졌다. 그리고 대부분의 컴퓨터 프로그래밍의 기초를 이루고 있다....

Read More

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

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


  • at-least-once(최소한 한 번 전달) 메커니즘에 전달 된 각 메시지에 대해...
Read More

C# - proto.actor 프레임워크

proto.actor

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

Read More

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

MSDN에서…

개요

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

Read More

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

일본의 데브서밋 컨퍼런스에서

그랑 블루 판타지에 대해서

특징

  • 스마트 폰 RPG
  • 브라우저 게임
  • 협력 플레이, 멀티 플레이

시스템 규모

  • 등록 유저 수 1400만명
  • 월간 300억 PV
  • 100만 query/sec
  • 8만 req/sec
  • 트래픽 12Gbps(CDN 제외)

시스템 구성

...
Read More

warning C4996 'inet_addr'

몇 년전에 만들어진 Winsock API를 사용한 코드를 최신 VC++로 빌드하면 아래와 같은 경고를 볼 수 있다.

 warning C4996: 'inet_addr': Use inet_pton() or InetPton() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings 

inet_addr 라는 API는 비 추천이 되었으므로...

Read More

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

순차일관성(sequential consitency)이란?

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

병렬 처리 중인 실행 결과가 항상...

Read More

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

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

public static async Task SendImage() { var cam = new Unosquare.RaspberryIO.Camera.CameraController(); var result = await cam.CaptureImageJpegAsync(640, 480,System.Threading.CancellationToken.None); } 

Read More

Win32API - CRITICAL_SECTION의 OwningThread

Windows Vista부터 CRITICAL_SECTION의 내부 구조가 바뀌었다고 한다.
이 중 눈여겨 볼 것은 CRITICAL_SECTION의 멤버 변수 중 OwningThread 인데 이 변수에는 CRITICAL_SECTION을 소유중인 스레드의 ThreadID가 설정된다.
그래서 멀티스레드에서 CRITICAL_SECTION를 사용할 때 특정 스레드가 락을 획득하지 못하고 대기중이라면 어떤...

Read More

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

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

Read More

C++ - 메모리 영역

메모리 영역에 대해서

5 종류의 메모리 영역

C++ 에서는 다른 특성을 갖는 5 종류의 메모리 영역이 존재한다.
(※ 단 c++ 규격에는 스택이나 힙은 명시 하지 않고 Free-Store는 명시 하고 있다)

Const Data

컴파일 시 값을 알...

Read More

해외 게임 업계의 아웃소싱

여러 인기 작품에 관련있지만 아무도 모르는 게임 회사

Blizzard Entertainment의 인기 작품 “오버 워치”를 조사하고 있을 때 어떤 게임 업체 사이트에 맞닥뜨렸다.
회사 이름은 SuperGenius로 사이트의 톱 페이지에는 “오버 워치”의 친숙한 아트 워크가 큼직하게 게재되고 있었다. 그뿐인가 2K...

Read More

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

Gerald Marvin Weinberg의 “The Psychology of Computer Programming” 에서

  1. 자신이 잘못을 저지른다는 것을 이해하고 받아들이기.
  2. 자신과 자신의 코드는 별개이다.
  3. 아무리 “가라데”를 배워도 언제든지 당신보다 더 잘 아는 사람이 있다.
  4. 상의 없이 코드를 다시 쓰지 않는다.
  5. 자신보다 무지한 사람에 대해서도...
Read More

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

http://www.globalnerdy.com/2007/03/22/andres-taylor-top-ten-things-ten-years-of-professional-software-development-has-taught-me/ 에서

  1. 객체 지향은 생각보다 어렵다.
  2. 소프트웨어 개발에서 어려운 부분은 커뮤니케이션이다.
  3. NO라고 말 할 수 있게 된 것 같다.
  4. 모두가 똑같이 중요하다면 중요한 것이 없다는 것이다.
  5. 하나의 문제만 너무 생각하지 않는다.
    [악마는 디테일에 숨어 있지만 지불 방법은...
Read More

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

http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=a76eab63-70f0-48b4-8b75-66c366a651cd

  1. 첫번째 버전에서 너무 많은 것을 하려고 한다.
  2. 확립되지 않은 기술에 크게 의존하고 있다.
  3. 조직의 주 수입원이거나 강력한 후원자를 가지고 있는 사내의 다른 프로젝트와 경합하고 있다.
  4. 팀 인원 부족.
  5. 복잡한 문제에는 복잡한 해법이 필요, 복잡함 자체가 프로젝트의 목표이다.
  6. Read More

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

Omar Shahine

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

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

구입

며칠 전에 나왔습니다^^
NHN Next 에서 일하게 되면서 시간 여유가 생겨서 짧은 분량이지만 책을 집필 할 수 있었습니다.

책 내용은 제목 그대로 POCO 라이브러리 중 Net 부분의 라이브러리를 사용하여 네트워크 프로그래밍을 하는 방법을...

Read More

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

NLog.config 설정을 사용하지만 파일 패스만 바꾸고 싶다. 파일 경로는 프로세스나 인스턴스 마다 변경하기를 바란다.

프로세스나 인스턴스가 항상 일정하다면 NLog.config에 필요한 수만큼의 설정을 추가하면 되지만, 파일 패스만 다르므로 비슷한 설정 코드를 늘리는 것은 귀찮다.

그래서 로거마다 Variables 속성 값을 독립적으로 설정하는...

Read More

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

NLog는 동적으로 파일 이름을 설정할 수 있는 기능이 있다.

아래의 방법은 커스텀 플레이스 홀더를 설정하고, 그 플레이스 홀더에 임의의 텍스트를 설정하는 방법으로 파일 이름을 변경한다.

NLog.config

<?xml version="1.0" encoding="utf-8" ?> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi=
      
      Read More
    

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

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

내용

  1. Visual Studio 2017 Linux development with C++ (최흥배)
    https://channel9.msdn.com/events/Connect/2016/119
    ...
Read More

C# - 꼬리 재귀 최적화

// 꼬리 재귀가 아니다 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) {...
      
Read More

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

VS의 툴박스에 특정 코드를 보관하고, 이 코드를 선택하여 코딩 시 삽입할 수 있다.

툴박스에 보관하기 바라는 코드를 마우스로 선택 후 툴박스로 드래그 한다.

위에서 드래그한 코드가 툴박스에 들어가 있는 것을 볼 수 있다. 추가한 코드를 마우스...

Read More

C99의 sizeof와 가변길이 배열

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으로 해서 호출하면 아래와 같다.

...
Read More

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

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

...
Read More

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

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




출처: http://d.hatena.ne.jp/yohhoy/20170214/p1

Read More

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

2017년 3월 13일(미국)에 열렸던 ‘Node.js VM Summit’ 에서 Node의 네이티브 모듈의 ABI 호환성 문제에 대해서 회의를 하였다.
회의 동영상

Node의 네이티브 모듈 문제

Node의 네이티브 모듈은 C/C++로 만들었고 V8과 NAN API(Application Programming Interface)에 직접 의존하고 있다.
...

Read More

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

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,...

Read More

Microsoft MVP가 되었습니다

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

Read More

C++11 - alignof

개요

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

문법

alignof(타입)은 지정한 타입의 배치 크기를 반환한다....

Read More

C++11 - alignas

개요

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

문법

alignas()는...

Read More

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

문자 검색/치환

  • Ctrl+F: 문자 검색
  • Ctrl+H:문자의 치환

직사각형 선택

Alt 키를 누른 상태에서 마우스로 원하는 직사각형 모양의 범위를 만든다.

자동 인덴트(indent)

  • Ctrl+K, Ctrl+D: 파일 전체의 인덴트 조정
  • Ctrl+K, Ctrl+F: 선택 범위의 인덴트 조정
...
Read More

C++11 - type_info와 type_index

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

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

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

 
_MSC_VER 1910  

참고로 VS 2015는 1900.

MSVC 런타임은 2015와 바이너리 호환. 그리고 VS 2017를 설치할 때 옵션 선택에 의해 VS 2015.3의 MSVC도 별도 추가할 수 있다.

출처: https://blogs.msdn.microsoft.com/vcblog/2017/03/07/binary-compatibility-and-pain-free-upgrade-why-moving-to-visual-studio-2017-is-almost-too-easy/

Read More

Boost.Asio 공부하기

나는 2007년부터 Boost.Asio를 온라인 게임 서버 개발에 처음 사용하였다(업무에 사용하는 것을 말한다.그전에 공부는 했었다)

당시 주위의 게임 개발자를 통해서 생각외로 사용하는 곳이 꽤 있었다.
이 후 한국 및 해외의 유명 회사들도 C++ 네트워크 프로그래밍에 사용하고 있다고 들었다.

한국의 온라인...

Read More

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

구글은 2017년 3월 10일 Google Cloud Next 17의 3일째 기조 강연에서 15개 서비스의 영구 무료 쿼터를 발표.

영구 무료 한도 대상 서비스 이름과 월 제한은 다음과 같다(제품에 따라서는 아래 외에도 제한이 있다).

  • Google Cloud Engine(미국 지역의 f1-micro 1 인스턴스...
Read More

Visual Studio 제거하기

MS가 만든 Visual Studio Uninstaller를 사용하여 제거하는 것이 좋다.

설치 파일은 아래 링크에서 얻을 수 있다. 다운로드

사용법

다운로드 -> 압축 해제 -> Setup.ForcedUninstall.exe 실행 -> 질문에 Y 답변

콘솔 창 혹은 파워셀을 관리자 권한으로 실행해서 Setup.ForcedUninstall.exe 실행하는...

Read More

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

Node.js 7.6 이 출시 되었다.
async/await 지원이 기본적으로 유효하게 되어 낮은 메모리 디바이스에서의 성능이 개선되었다.

Node 7.6의 async/await 지원은 Chromium의 JavaScript 엔진인 V8를 버전 5.5로 업데이트한 데 따른 것이다. 이것이 의미하는 것은 async/await는 이제 실험적인 것이 아니라는 점이다.

async/await의...

Read More
Read More

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

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

Read More

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

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

S3의 장애는 미국 버지니아 주 북부의 “US-EAST-1” 지역에서 태평양 표준 시간 2월 28일...

Read More

C++11 - 예외 지정

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

// C++98/03 void f() throw( int, double ); 

만약...

Read More

C++11 - noexcept

noexcept 키워드 목적.

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

Read More

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

FunctionLength

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

몇 가지 가이드 라인에서는 한 화면에 잡히지 않는다면, 이 밖에도...

Read More

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

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

Quantic Foundry의 보고에 따르면 27만명 이상의 샘플 중 여성 게이머는 18.5% 정도이고, 조사 대상자에게 최대 9개의 “좋아하는 게임 타이틀/프랜차이즈”...

Read More

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

https://github.com/google/draco

Chrome Media팀이 개발한 압축 라이브러리로 ZIP 형식보다 효율적으로 데이터 압축을 실행할 수 있는 오픈 소스이다.
압축한 Mesh 파일의 크기 100MB 일 때 ZIP으로는 30MB 이지만, Draco에서는 10MB 이하가 되어 훨씬 압축 효과가 있다고 한다.

Draco는 메시와 점군 데이터를...

Read More

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

일본의 ‘fabcross for 엔지니어’ 라는 곳에서 제조업에서 임베디드 관련 프로그래밍을 하는 엔지니어를 대상으로 한 설문 조사에서

업무에서 자주 사용하는 언어는

  • C (36 %)
  • C++ (32.5 %),
  • Java (23.5 %),
  • Visual Basic (21 %),
  • Visual C++ (21 %),
  • 어셈블러...
Read More

C++11 - std::get_time

개요

» get_time(tmb, fmt) 식을 사용하여 현재 입력 스트림에서 전달 받은 로컬 시간 값을 변환 형식 문자열에 맞추어 tm 오브젝트로 변환한다.



문법

template< class CharT > /*unspecified*/ get_time( std::tm* tmb, const CharT*...
      
Read More

C++11 - std::put_time

개요

날짜 서식을 출력한다.



문법

template <class CharT> unspecified put_time(const struct tm* tmb, const CharT* fmt); 
  • tmb 은 유효한 tm 타입 오브젝트를 가리키는 포인터
  • fmt 는 유효한 문자 배열을...
Read More

GitHub Awards

개요

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

  • http://github-awards.com/
  • 프로그래밍 언어 구분
  • 지역 구분
...
Read More

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

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


Read More

.NET Core 2.0 봄에 출시 예정

원문

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

Read More

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

개요

실수를 정수로 변환할 때 ceil()로 소수점 올림하거나, floor()로 소수점 버림을 한다.

nearbyint는 정수로 변환할 실수의 가장 가까운 짝수로 올림 혹은 버림을 한다. 이러한 방식을 “bankers’rounding” 이라고 부른다



문법

cmath 헤더파일을 포함해야 한다.

Read More

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

개요

부모 클래스에서 정의한 생성자들을 자식 클래스에서 그대로 사용할 수 있는 편의 기능이다.



문법

자식 클래스에서 using 키워드를 사용하여 부모 클래스 이름과 부모 클래스의 생성자 이름을 :: 구분으로 호출한다.
자식 클래스는 복수의 부모...

Read More

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

개요

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

#include <iostream> namespace my_namespace { inline...
      
Read More

C++11 - long long 타입

개요

C99 호환을 위해 long long 정수 타입이 추가 되었다.

long long 과 unsigned long long 타입은 64비트 이상의 값을 표현할 수 있는 것을 보증한다.
long long 타입의 최대 값 매크로는 LLONG_MAX 이다.
long long을 뜻하는 정수...

Read More

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

개요

C99 에서 도입된 전처리 연산자 이다.

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

Read More

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

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

선언

bool(TEST::*m_pFunc[4])(const int, bool); 

멤버 함수 연결

Read More

이 블로그의 rss 피드 주소

나처럼 Feedly 서비스를 사용 중이라면 피드 추가에 이 블로그 url을 입력하면 된다.

이 블로그 주소로 rss 리더에 등록 되지 않는다면 아래의 주소를 사용해 보기 바란다. https://jacking75.github.io/feed.xml

Read More
  time_t→ tm 구조체 tm 구조체 → time_t
현지 시각 localtime