출처 https://www.infoq.com/jp/news/2010/09/introduction-zero-mq/ PostRank의 설립자이자 CTO인 Ilya Grigorik씨가 지난주 ZeroMQ의 소개 기사를 썻다 . 버클리 소켓(BSD)는 모든 네트워크 통신의 기본 API이다. 1980년대 초로 기원을 가진 TCP/IP 스윗의 원래 구현이기도 한 BSD 소켓이 오늘 날 모든 운영체제에서 가장 널리 지원 되는 중요한...
더 읽기
처리하는 것에 비해 CPU 사용률이 오르지 않는 경우 .NET 런타임의 GC 설정을 변경해서 해결 할 수도 있다. .NET의 GC 모드를 서버GC로 변경한다. .NET Core 프로젝트 파일에 ServerGarbageCollection을 추가하고 값을 true로 한다. <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp2.0</TargetFramework> <ServerGarbageCollection>true</ServerGarbageCollection> </PropertyGroup> ... </Project>...
더 읽기
출처 연결이 끊어진 소켓에 쓰기(send(2) 혹은 write(2) 같은 것)를 하면 SIGPIPE 시그널이 발생하고 프로세스가 종료하기 때문에 제대로 SIGPIPE 시그널을 핸들링 해 두자는 이야기 이다. (Windows OS에서는 상관 없는 이야기이다) SISGPIPE를 받은 프로세스의 행동과 소켓 프로그래밍에서의 대응책 “sigpipe”로 검색하면 같은 이야기는...
더 읽기
Receive-Side Scaling(RSS) http://minimonk.net/2728 Windows Server 2012의 NIC 티밍(teaming)에 대응. TCP Chimney Offload http://vstarmanv.tistory.com/58 VM에서는 사용 불가. Windows Server 2012의 NIC 티밍에 비 대응. NetDMA 네트웍 수신 데이터를 네트웍 어댑터의 수신 버퍼에서 애플리케이션 버퍼에 복사하는 작업을 CPU로 하지 않고 칩셋을 포함한...
더 읽기
Draft FAQ: Why does the C++ standard ship every three years? – Sutter’s Mill 현재 C++ 표준은 3년 단위로 제정 되고 있는데 왜 3년 주기인지 C++ 표준 위원회 의장인 Herb Sutter씨의 설명. C++ 표준은 3년 간격으로 제정된다. 초안에 버그가 있기...
더 읽기
bcrypt는 자주 사용 되고 있는 패스워드의 해시 함수이다. Slack’s hashing function is bcrypt with a randomly generated salt per-password which makes it computationally infeasible that your password could be recreated from the hashed form. https://slackhq.com/march-2015-security-incident-and-the-launch-of-two-factor-authentication-3cdcc8efba29 bcrypt가 생성하는 해시는 $2a$10$OTKlbteacFY8DOeZY5imi.wvNLmJ1WDenLlDSzXfFxizVX.D1BNfu 형식의...
더 읽기
Linux 공식 사이트에서 최신 버전을 다운로드 한다. 압축을 풀고, 빌드한다. 아래는 64비트, static 라이브러리, 테스트와 샘플은 제외 하는 설정으로 빌드 한다 $ tar zxvf poco-1.7.8p2-all.tar.gz $ cd poco-1.7.8p2-all/ $ export OSARCH_64BITS=1 $ ./configure --static --no-tests --no-samples $ make 설정 정보는...
더 읽기
Linux (CentOS)에 Homebrew on Linux (Linuxbrew)를 설치하기 전에 출처: https://qiita.com/libra_lt/items/548fcbdfbcf992cba4ed CentOS Linux release 7.6.1810 (Core) Linuxbrew는 다음 특징을 가진 패키지 관리 도구이다. root가 아닌 사용자의 home에 설치하는 것이 가능하다. sudo가 필요 없다. 호스트 배포판에 패키지 되지 않은 소프트웨어를 설치할 수...
더 읽기
설치 Linux Boost 라이브러리 공식 사이트에서 다운로드 후 압축 풀기 압축을 푼 디렉토리로 이동 후 아래처럼 입력 $ ./bootstrap.sh 생성된 b2를 사용하여 Boost 라이브러리 빌드하기 $ ./b2 toolset=gcc link=static threading=multi address-model=64 빌드가 끝나면 Boost 라이브러리 디렉토리 안의 stage/lib 디렉토리에 빌드...
더 읽기
방 구조의 채팅 서버이다. 패킷 처리는 1개의 스레드만으로 처리한다. (네트워크 IO는 멀티 스레드) 프로젝트 구조는 아래와 같다. 파일 이름을 보면 대충 어떤 일을 맡고 있는지 알 수 있을 것이다 네트워크 관련 처리를 1개의 스레드에서 하기 위해 MainServer에서 바로 처리하지 않고,...
더 읽기