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...
더 읽기

WCF - Tips

클라이언트가 요청 데이터를 null로 보내는 경우 대처 클라이언트에서 public RES_LOGIN_DATA RequestLogin(REQ_LOGIN_DATA reqData)을 요청한 경우 reqData을 null로 보낼 수 있음(악의적인 이유로). 그래서 아래처럼 요청 데이터를 null 조사를 해야한다. public class ServerService : IServerService { public RES_LOGIN_DATA RequestLogin(REQ_LOGIN_DATA reqData) { if (reqData...
더 읽기

WCF - TCP Sample

서버 WCF LIB namespace WCFServerLib { public interface IClientCallback { [OperationContract(IsOneWay = true)] void SendMessageToClient(string message); } } namespace WCFServerLib { [ServiceContract(CallbackContract = typeof(IClientCallback))] public interface IServerService { [OperationContract(IsOneWay = true)] void RegistClinet(string id); [OperationContract] void TestUserData(RequestEcho reqEcho); [OperationContract] string...
더 읽기