Programming
-
[Go] Golang 패키지 관리 도구로 종속성(vendoring) 관리하기Programming 2017. 11. 2. 13:41
Go 패키지 및 Dependency(의존성)을 관리하기 위한 도구 Tool Name Url Reference Count (Feb 2017) Reference Count (Nov 2017) Makefile Makefile 199 181 dep dep N/A 94 godep godep 119 90 govendor govendor 65 84 glide glide 64 77 gvt gvt 25 16 trash trash 7 13 submodule submodule 8 6 gpm/johnny-deps gpm johnny-deps 7 6 glock glock 5 4 gom gom 4 2 gopack gopack 3 2 gopm gopm 3 1 goop goop 1 1 gvend gvend 2 0 - dep : 추후..
-
[Go] GDB를 이용한 Go 코드 vim에서 디버깅하기Programming 2017. 7. 17. 11:26
vundle 설치 $ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim vim-go, Conque-GDB 설치 $ vim ~/.vimrc 다음 내용을 추가하고, ":w"로 저장한다. call vundle#begin() Plugin 'VundleVim/Vundle.vim' Plugin 'fatih/vim-go' Plugin 'vim-scripts/Conque-GDB' call vundle#end() ":source %" 명령으로 파일 내용을 다시 로드하고, ":PluginInstall" 명령으로 플러그인을 설치한다. "Done!" 메세지가 하단에 나오면, 위에서 추가한 내용을 지우고, 아래와 같은 내용을 추가한다. ..
-
[Go] Distributed System for GolangProgramming 2017. 6. 16. 14:54
Distributed System for Go Go 언어로 분산 시스템을 작성하기 위해서 배워야 할 스킬은 어떤게 있을까? 분산 시스템에는 다양한 기술을 필요로 한다. 그러나 거의 공통적으로 가지고 있는 몇 가지 개념이 있다. Concurrency Network communication Failure Go는 강력한 concurrency(동시성)이 언어에 내장되어 있다. Go의 동시성 기능은 크게 3가지가 있다. Goroutines Channels The select statement 우선 Go의 동시성 개념에 대해 익힌 후에, 동시성 패턴을 익혀야 한다. Timing out Recovering from failed Goroutines Fan-in/Fan-out Workers Request/Response..
-
[Go] Go Playground 내부Programming 2017. 6. 1. 13:53
소개 Go Playground는 임의의 Go 코드를 컴파일 및 실행하고 프로그램의 출력을 반환하는 웹 서비스이다. Go 사용자라면, Go Playground를 직접 사용하거나 Go Tour 혹은 Go 문서에서 실행 가능한 예제를 실행하여 Go Playground를 간접적으로 사용했을 것이다. 이 문서에서는 Playground가 어떻게 구현되고 어떠한 서비스와 통합되는지 살펴볼 것이다. Playground 구현에는 변형된 운영체제 환경과 런타임이 포함되며 Go를 사용하는 시스템 프로그래밍에 대한 사전 지식이 있다는 가정하에 설명할 것이다. 개요 Playground 서비스는 세 가지 부분을 가진다. back end : 백엔드는 Google의 서버 위에서 동작한다. RPC 요청을 받고, gc tool chai..
-
[Go] File I/O를 위한 패키지 비교 (os, io, ioutils, bufio)Programming 2017. 1. 16. 15:33
File I/O를 위한 패키지 비교 package "os" os는 low level에서 운영체제 기능에 대한 플랫폼과는 독립적인 인터페이스를 제공하는 패키지이다. Unix와 비슷한 디자인이지만, 에러 처리는 Go와 비슷하다. os.File 타입은 디스크 위에 파일이나 바이트를 스트리밍하는 io.Reader, io.Writer를 구현할 때 사용된다. //최대 buffer 크기까지 읽는다. file, err := os.Open(fname) if err != nil { log.Fatal(err) } defer file.Close() byteSlice := make([]byte, 1048576) bytesRead, err := file.Read(byteSlice) if err != nil { log.Fatal(..
-
[Go] Go 언어 특징과 장단점Programming 2017. 1. 6. 18:02
Go (Golang) : Go는 2009년에 Google이 만든 프로그래밍 언어이다. 'Go'는 자주 쓰이는 말이라서 검색이 힘들기 때문에 보통 'Golang'으로 불린다. Go의 특징을 알아보려고 한다. 첫번째는 컴파일 속도가 매우 빠른 컴파일 언어라는 것이다. 이 때문에 Go는 컴파일 언어의 장점인 빠른 실행 속도를 가지면서 인터프리터 언어처럼 사용할 수 있다. 두번째로는 생산성이 높다는 것이다. Go는 기본 라이브러리가 풍부하며, 써드파티 라이브러리가 많고, 코드가 간결하고, 키워드는 약 25개 정도로 적어서 언어를 익히기 쉽다. 세번째는 엄격한 코딩 포맷을 가지고 있다는 것이다. 그래서 통일성을 가지며, 가독성이 좋아지는 장점이 있다. 예를 들어, if와 여는 대괄호는 같은 줄에 있어야 한다. 네..