sabzil's memorandum

October 14, 2016

vendor 관리

vendoring되어 있는 패키지를 관리해야 할 이유가 무엇인지에 대해서 찾아보다가 좋은 글을 발견했다. https://gocodecloud.com/blog/2016/03/29/go-vendoring-beginner-tutorial/ 이 글을 읽고 이해한 정도만을 요약 vendoring을 왜 하나? Project A에서 사용하는 Pkg X의 리비전 1을 사용하고 있다. 그런데 Project B에서는 Pkg X의 리비전 2를 사용하려 한다. 그런데 $GOPATH 안에는 같은 패키지를 하나만 갖고 있을 수 있다. Pkg X의 리비전을 Project A에 맞추면 Project B가 빌드를 실패하고, Project B에 맞추면 Project A가 빌드에 실패하게 된다. ... Read more

October 13, 2016

GitHub 페이지에 Hugo 올리기

Blogger에서 Hugo( http://gohugo.io )로 갈아타는 과정을 정리해 본다. Hugo 를 설치한다 https://github.com/spf13/hugo/releases 에서 본인의 환경에 맞는걸 찾아서 설치한다. Linux는 deb를 제공하고 있지만, Windows는 exe파일을 제공하고 있어서 환경변수(PATH)를 잡아주던가, 환경변수가 잡혀있는곳에 복사를 해준다. (이름도 hugo.exe로 바꿔주는게 사용하기에 더 편리한것 같다.) MAC은 안 써봐서 잘 모르겠다…;;; github에 저장소를 만든다 github에서 호스팅을 받아서 hugo를 사용하기 위해서는 2개의 저장소를 만들어야 한다. hugo의 컨텐츠를 관리하기 위한 저장소가 필요하다.(ex: https://github.com/sabzil/blog) 그리고 컨텐츠를 보여주기 위한 github의 페이지 저장소(ex: https://github. ... Read more

October 12, 2016

tmux

tmux 시작 $ tmux $ tmux new-session(or new) -s [세션 이름] -n [윈도우 이름] tmux 종료 $ ctrl-d $ exit tmux detach(현재 클라이언트) $ ctrl-b, d tmux attach $ tmux attach -t [세션 이름] window 생성 $ ctrl-b, c window 리스트 $ ctrl-b, w window 이동(현재의 이전(다음, 이전) $ ctrl-b, l(n, p) window 종료 $ ctrl-b, & ... Read more

September 5, 2016

vi 팁

vi
현재 작업중인 파일의 경로와 이름 확인 현재 작업중인 파일의 경로 또는 이름이 궁금할 경우가 있다. ctrl + g 또는 f 80컬럼에 버티컬 라인 vi에서 80컬럼의 버티컬 라인을 생성하려면 다음과 같이 한다. set colorcolumn=80 을 적용하면, 빨간색 라인이 생긴다. 파일 관리 NerdTree를 사용하지 않고 vi에서 파일과 디렉토리를 관리하는 방법 파일 네비게이션 표준모드(ex: i, o, a 같은걸 입력해서 입력모드로 전환되기 전 상태) ... Read more

September 5, 2016

vim-go 기본 템플릿 비활성화

vi
vim-go가 언제부터인가 main.go 를 만들면 템플릿으로 fmt.Println(“vim-go”) 를 찍어주는 코드를 자동으로 생성해 주기 시작했다. 나는 아무것도 나오지 않기를 바랬는데, 이런게 나와서 매번 지우는 작업을 하는게 싫었다. 그래서 설정중에 go_template_autocreate 를 조절했다. let g:go_template_autocreate = 0 와 같이 하면 이제 아무것도 없는 빈 화면이 나온다. 혹시라도 반복적으로 나오는게 좋은데 “vim-go”를 찍는게 아닌 특정한 코드가 필요하다면, “.vim/bundle/vim-go/templates/hello_world.go” 파일을 수정해도 된다. 또는 특정한 템플릿을 지정하고 싶다면, 다음과 같이, let g:go_template_file = “hello_world.go” ... Read more

September 3, 2016

template을 생성할때 왜 이름을 지정할까?

go
Go언어의 Template 엔진을 사용할때, 왜 New()의 파라미터로 이름을 만들어서 넘겨야 하는지가 궁금했었다. Template and Associated templates라는 글을 읽고 어느 정도 이해를 하게 되었다. 다음은 위 글의 내용을 요약한 것이다. template.New() 로 template을 만들때, 이름을 정해서 만든다. 이 때 FuncMap과 템플릿 리스트를 갖는 그룹(그룹의 이 글에서 사용하는 용어로 Associated Templates를 가르킨다)이 생성된다. FuncMap에 대해서는, https://golang.org/pkg/html/template/#FuncMap http://goinbigdata.com/example-of-using-templates-in-golang/ http://technosophos.com/2013/11/23/using-custom-template-functions-in-go.html 를 확인해본다. New()를 했어도 아직 템플릿 리스트에서 관리되는 대상은 아니다. Parse(…)를 하면 템플릿 리스트에 추가가 된다. ... Read more

July 21, 2016

ifconfig 사용

임시로 사용할 개발환경을 만들기 위해서 ubuntu 이미지를 사용하는데, ifconfig 명령이 동작하지 않아서 보니, net-tools가 온전하게 설치되었지가 않은것 같다. $ apt-get install –reinstall net-tools

July 18, 2016

css와 같은 정적 컨텐츠를 html에서 사용하기 위한 팁

go
go의 "net/http"와 "html/template"를 이용해서 html과 css로 만들어진 웹페이지를 만들려고 할때, html 파일이 보여질때 css가 적용되지 않은 상태로 보여진다. 이 때 어떻게 해야 하는지 방법을 찾아가던 과정을 기록으로 남겨 놓는다. 프로젝트의 디렉토리 구조는 다음과 같다. src\ + prj + main.go + static style.css + template index.html 그래서 이렇게…​ func main() { http.HandleFunc("/", indexHandler) http.ListenAndServe(":8080", nil) } func indexHandler(...) { // index.html } 와 같이 하면 될 줄 알았다. ... Read more

July 17, 2016

http 패키지의 HandleFunc과 Handle

go
HandleFunc http.ResponseWriter 와 *http.Request를 인자로 받는 함수를 전달받는다. 내부적으로 ServeHTTP가 구현된 ServeMux를 사용한다. package main import ( "net/http" ) func indexHandler(w http.ResponseWriter, r *http.Request) { .... } func main() { http.HandleFunc("/", indexHandler) http.ListenAndServe(":8080", nil) } Handle http.Handler 인터페이스를 구현한 객체를 전달받는다. 인자로 전달받은 객체는 http.Handler의 ServeHTTP(http.ResponseWriter, *http.Request)가 구현되어 있어야 한다. package main import ( " ... Read more

July 15, 2016

go get 이 실패하는 경우

go
go get을 시도했는데 실패를 한다. $ go get bitbucket.org/... 를 시도했는데, $ go get bitbucket.org/...: 403 FORBIDDEN 와 같은 결과가 보여진다. 찾아보니 동일한 경우가 있었다. https://groups.google.com/forum/#!topic/golang-nuts/li8J9a-Tbz0 해당 repository가 private일 경우에 나타나는 오류인거다. github의 경우, https://michaelheap.com/golang-how-to-go-get-private-repos/ 에 보면 $ git config --global url."git@github.com:".insteadOf "https://github.com/" $ cat ~/.gitconfig [url "git@github.com:"] insteadOf = https://github.com/ 와 같이 하는 방법이 있는것 같지만 github에 private한 respository가 없기 때문에…​ ... Read more

© sabzil 2016