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

golang - string

아래 글은 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...
더 읽기

강의 - IOCP를 이용한 비동기 IO 네트워크 프로그래밍

일시: 2018년 12월 6일(목) 15시~18시(3시간) 주제: IOCP를 이용한 비동기 IO 네트워크 프로그래밍 유료: 토즈에서 공간을 대여하므로 공간 비용을 내야 합니다. Windows에서 IOCP를 사용하여 서버 프로그램을 만드는 방법을 설명합니다. 3시간이라는 시간이 길지는 않으므로 참석 전에 꼭 네이버 검색이나 책을 통해서 IOCP에...
더 읽기

golang - sync.Map

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. sync.Map의 성능 원문 Golang 동시성은 공유 리소스에 액세스 하는 경우 충돌이 발생하지 않도록 잠금을 준비해야 한다. 예를 들어 표준 맵의 경우 goroutine safe 하지 않기 때문에, Write 끼리 충돌하거나 Write...
더 읽기

golang - 호출 측의 func 이름 알기

아래 글은 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...
더 읽기

FASTER에 대해서

원문 KVS 라이브러리 내장 KVS로 사용이 가능 프로세스간 스토리지 공유는 상정하지 않는 듯? 메모리 이상의 DB 크기를 설정 가능(메모리 + 파일 읽기 및 쓰기) LiteDB와 다소 영역이 겹칠 수도(최종 목표는 다르지만) 로그 데이터베이스(내장해성) 및 인-메모리 데이터베이스(성능)의 좋은 부분을 목표로 사용자...
더 읽기