C++ - 안전한 문자열 조작 함수

문자열 복사 strcpy_s, strcpy, _tcscpy_s, wcscpy, wcscpy_s 대체 추천 함수 strncpy_s(char), _tcsncpy_s(TCHAR) , wcsncpy_s(wchar_t) errno_t wcsncpy_s( wchar_t *strDest, strDest의 크기, const wchar_t *strSource, 복사할 문자 수 ); wchar_t szDest[256] = {0,}; wchar_t szSource[] = L"TEST"; wcsncpy_s( szDest, 256, szSource, 4...
더 읽기

C++ - C++/CLI

클래스(class), 핸들(^) C++/CLI에서 관리 클래스는 ‘ref’라는 키워드를 사용하여 만든다. 비 관리 클래스 class Test { }; 관리 클래스 ref class Test { }; 관리 클래스는 ‘ref’를 제외하고는 외관상으로는 비 관리 클래스와 비슷하지만 관리와 비 관리가 많이 다르듯이 관리 클래스는 비...
더 읽기

golang - 패닉 발생 시 stack trace 출력

아래 코드는 어떤 오픈 소스에서 본 것을 아주 약간 변경한 것이다. 보기 좋게 출력하기 위해 go-spew 라는 오픈 소스 라이브러리를 사용하였다. import ( "fmt" "runtime" "github.com/davecgh/go-spew/spew" ) func PrintPanicStack(extras ...interface{}) { if x := recover(); x != nil { fmt.Println("%v",...
더 읽기

ASP.NET Core 하나의 호스트에서 http와 socket 통신 같이 하기

Github ASP.NET Core의 Kestrel을 사용하여 TCP Socket 프로그래밍을 할 수 있다. MultiProtocolAspNetCore 프로젝트의 Program.cs 파일의 내용은 아래와 같다. public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseKestrel(options => { // TCP 8007 options.ListenLocalhost(8007, builder => { builder.UseConnectionHandler<MyEchoConnectionHandler>(); }); // HTTP 5000...
더 읽기

Homebrew 1.9.0에서 Linux/WSL을 실험적으로 지원

출처 macOS용 패키지 관리자 “Homebrew」의 최신판인 Homebrew 1.9.0 이 1월 9일에 공개 되었다. 본 버전에서는 Linux 및 Windows10의 “Windows Subsystem for Linux (WSL)”가 베타 버전으로 지원되고 있다. “Homebrew”는 응용 프로그램과 구성 요소 및 라이브러리 관리를 원활하게 할 수 있는 구조....
더 읽기

LinuxBrew

특징 macOS의 Homebrew를 리눅스로 이식한 것 http://linuxbrew.sh/ root 권한이 필요 없다. home dir 에 설치 할 수 있다. 배포 package manager 에 의존하지 않는다 패키지 검색은 http://braumeister.org/ 설치 Debian계(Ununtu) $ sudo apt-get install gettext $ sudo apt-get install build-essential curl...
더 읽기

Span 를 사용해야 할 5가지 이유

출처 소개: Hello World 런타임이 .Net Core 2.1 이후라면 표준으로 사용할 수 있다. 그렇지 않으면 Nuget에서 System.Memory 라는 패키지를 넣자. 그리고, 언어는 C# 7.2 이상이 필요하다. Span라는게 뭐야? A. 우선, 배열 같은 것이라고 생각해도 좋다. 정확하게 말한다면, 배열의 일부분을 가리키는...
더 읽기

Span 이용에 따른 최적화

출처 힙 사용량 절감 Span 를 사용하면 빠르게 되는 이유는 간단하게 힙 사용량을 줄아가 때문이다. string.Substring 등으로 새로운 문자열을 만들어 않아도 된다. stackallock욿 임시 버퍼에 힙을 사용하지 않는다 네이티브 메모리를 직접 읽을 수 있게함으로써 관리되는 배열에 복사하지 않는다 모두 unsafe...
더 읽기