FreeNet은 C#으로 온라인 게임 서버 만들기의 저자 이석현님이 Github에 공개한 네트워크 라이브러리이다. 책을 먼저 보면 코드 이해가 쉽다. C# 오픈 소스 네트워크 라이브러리로 SuperSocket이 유명한데 이 라이브러리는 기능이 많은만큼 복잡한데 FreeNet은 필수 기능만 있어서 분석하기도 좋다. 그래서 C# 네트워크 프로그래밍...
더 읽기
아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 출처 문자열 <-> 수치 변환 strconv 패키지를 사용한다. 문자열 → 수치변환 func Atoi(s string) (i int, err error) 문자열을 10 진수 int 타입으로 변환한다. ParseInt(s, 10, 0)의 간략화 버전 var...
더 읽기
아래 글은 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을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 공식 문서 일어 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을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. // main.go package main import ( "log" ) func main() { log.Printf("hello") } 에서 “log.”를 생략하려면 import ( . "log" ) 로 하면 Printf("hello") 라고 쓸수 있다. 마찬가지로, import (...
더 읽기
아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. os/exec.LookPath를 사용하면 커맨드가 실행 가능한지 조사 할 수 있다. $PATH 를 고려하여 찾아주지만 슬래쉬가 들어가 있으면 $PATH를 고려하지 않는다. package main import ( "log" "os/exec" ) func main() { tests...
더 읽기
아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. []byte를 string으로 변환 시 널 문자 제거하기 var rawUserID []byte userID := strings.Trim(string(rawUserID), "\x00") byte array to string 출처 s := string(byteArray[:]) s := string(byteArray[:n]) str := fmt.Sprintf("%s", byteArray) []string...
더 읽기
일시: 2018년 12월 6일(목) 15시~18시(3시간) 주제: IOCP를 이용한 비동기 IO 네트워크 프로그래밍 유료: 토즈에서 공간을 대여하므로 공간 비용을 내야 합니다. Windows에서 IOCP를 사용하여 서버 프로그램을 만드는 방법을 설명합니다. 3시간이라는 시간이 길지는 않으므로 참석 전에 꼭 네이버 검색이나 책을 통해서 IOCP에...
더 읽기
아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. sync.Map의 성능 원문 Golang 동시성은 공유 리소스에 액세스 하는 경우 충돌이 발생하지 않도록 잠금을 준비해야 한다. 예를 들어 표준 맵의 경우 goroutine safe 하지 않기 때문에, Write 끼리 충돌하거나 Write...
더 읽기
아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. pc, _, _, _ := runtime.Caller(1) caller_name := runtime.FuncForPC(pc).Name(); 로 할 수 있다. DEBUG 플래그가 있으면: import ( "log" "runtime" "github.com/user/app/env" ) func Debug(format string, args ...interface{}) { if env.DEBUG...
더 읽기