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

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

golang - 길이가 0인 slice는 nil로

출처 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): %d\n", cap(p)) for i := range p { fmt.Println("NG: %d\n", i) } fmt.Printf("p[:]: %v\n", p[:]) fmt.Printf("append(p, 0): %v\n", append(p, 0)) } func...
더 읽기

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

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

C++ - redis 사용하기

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

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

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

Windows 10 에서 Unix Domain Socket 사용 가능

Windows 10 2018년 봄 대형 업데이트에서 Unix Domain Socket 기능이 추가 되었다. AF_UNIX comes to Windows – Windows Command Line Tools For Developers Unix Domain Socket을 사용하기 위해서는 AF_UNIX를 사용하면 된다. 아래 예제 코드의 출처 코드를 보면 알겠지만 조금의 #ifdef로...
더 읽기

golang - goroutine이 교체 되는 타이밍

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

golang - thread pool과 GOMAXPROCS는 관계 없음

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