C++ - segmentation fault를 보완해주는 로그를 출력하자

출처 C++ 서버(Linux)가 크래쉬 되는 버그로 고생해서 segmentation fault를 보완해주는 로그를 출력하는 기능을 만들어 보았다. 코드 CrashReporter.hpp #pragma once class ICrashReporter { public: virtual void CrashReport() = 0; }; class CCrashReporter { public: static void Setup(); static void AddReporter(ICrashReporter*); static...
더 읽기

golang - web

시작 기본적으로 필요한 것은 net/http 패키지에 있다. import "net/http" 이것만으로 기본적인 HTTP 리퀘스트와 리스폰에 관한 처리를 실시할 수 있다 http.Handle("/foo", fooHandler) http.HandleFunc("/bar", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path)) }) log.Fatal(http.ListenAndServe(":8080", nil)) 여기서 http.Handle, http.HandleFunc을 사용하면 DefaultServerMux 이라는...
더 읽기

golang - new와 make의 차이

원문 정리 차이를 간략하게 설명한다.   new(T) make(T) 대상 임의의 타입 slice, map, channel 만 초기화 초기화 하지 않는다(0 값으로 된다) 초기화 한다 반환 값 *T T 대상 및 초기화에 대해 new()와 make()에서 초기화 하지 않는/하는의 차이는 slice, map, channel이...
더 읽기

golang - 구조체

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 구조체 만들기 package main import ( "log" ) type Money struct { amount uint currency string } func main() { money := &Money{120, "yen"} // 포인터로 생성 log.Printf("%#v", money) }...
더 읽기

C# 오픈 소스 네트워크 라이브러리 FreeNet

FreeNet은 C#으로 온라인 게임 서버 만들기의 저자 이석현님이 Github에 공개한 네트워크 라이브러리이다. 책을 먼저 보면 코드 이해가 쉽다. C# 오픈 소스 네트워크 라이브러리로 SuperSocket이 유명한데 이 라이브러리는 기능이 많은만큼 복잡한데 FreeNet은 필수 기능만 있어서 분석하기도 좋다. 그래서 C# 네트워크 프로그래밍...
더 읽기

golang - 변환

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 출처 문자열 <-> 수치 변환 strconv 패키지를 사용한다. 문자열 → 수치변환 func Atoi(s string) (i int, err error) 문자열을 10 진수 int 타입으로 변환한다. ParseInt(s, 10, 0)의 간략화 버전 var...
더 읽기

golang - 패키지 관리와 유용한 라이브러리들

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 라이브러리 관리 go get 으로 받은 패키지 갱신 go get -u all 로 안된다면 문제의 xx.a 파일을 삭제하고 go run을 실행한다. rm /Users/kjunichi/gocode/pkg/darwin_amd64/github.com/andrebq/gas.a go run triangle.go # command-line-arguments ./triangle.go:11: import...
더 읽기

golang - random

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 공식 문서 일어 0 에서 9까지(포함)의 난수 얻기 import ( "fmt" "math/rand" "time" ) func main() { rand.Seed(time.Now().UnixNano()) for i := 0; i < 10; i++ { fmt.Println("My favorite number...
더 읽기

golang - package의 prefix를 생략

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. // main.go package main import ( "log" ) func main() { log.Printf("hello") } 에서 “log.”를 생략하려면 import ( . "log" ) 로 하면 Printf("hello") 라고 쓸수 있다. 마찬가지로, import (...
더 읽기

golang - exec.LookPath 커맨드 명령어가 실행 가능한지 조사

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. os/exec.LookPath를 사용하면 커맨드가 실행 가능한지 조사 할 수 있다. $PATH 를 고려하여 찾아주지만 슬래쉬가 들어가 있으면 $PATH를 고려하지 않는다. package main import ( "log" "os/exec" ) func main() { tests...
더 읽기