sabzil

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 ( "net/http" ) type indexHandler struct { } func (index *AppHandler) ServeHTTP(w http. ... 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가 없기 때문에… 그러다 조금더 찾아보니… https://github.com/golang/go/issues/5375 와 같은 이슈가 있는데… ... Read more

April 21, 2016

zsh(oh-my-zsh) 사용

zsh 설치하고 기본 쉘 변경 $ sudo apt-get install zsh $ which zsh /usr/bin/zsh $ chsh -s /usr/bin/zsh oh-my-zsh 설치 $ curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh 설정(개인 취향) .zshrc 의 ZSH_THEME를 minimal 로 변경

April 21, 2016

terminator 사용

설치 $sudo apt-get install terminator 단축키 분할(수직): ctrl + shift + e 분할(수평): ctrl + shift + o 닫기(현재 창): ctrl + shift + w 닫기(전체): ctrl + shift + q 새 탭: ctrl + shift + t 분할된 화면간 이동: alt + 방향키

March 9, 2016

vendor 사용 팁(내부 패키지)

프로젝트 내부에서 별도의 패키지를 만들어서 사용을 하려고 할때면, import 경로를 “github.com/blah/project/internalpkg” 처럼 다 써야 했었다. 이제 vendor를 사용하면 pkg 이름만 import 해서 사용할 수 있게 되었다. 샘플 프로젝트는 다음과 같다. https://github.com/sabzil/lotto 샘플 프로젝트에 대해서 약간의 설명을 더하면, 기존에는 command 패키지를 commands.go 에서 import 하기 위해서, import “github.com/sabzil/lotto/command” 와 같이 사용해야 했었다. 이렇게 되면 lotto 프로젝트를 다른 사람이 fork 해서 사용하려고 하면 일일이 import 경로를 변경해줘야 하는 문제가 생기게 된다. 그래서 go1. ... Read more

June 11, 2015

pkg 원격저장소 연결하기

최근에 go소스들을 분석하면서 특이한 pkg import 경로들을 보게되었다. import “rsc.io/pdf” 와 같은 “github.com/rsc/pdf” 와 동일한 내용인데 그리고 rsc는 russ cox가 사용하는 닉네임인데…그럼 같은 pkg인가? 그래서 웹브라우저에서 rsc.io/pdf 를 입력하면 godoc로 이동을 하네? 어떻게 한걸까!? 궁금했다. 그리고 왠지 멋있어 보였다…;;; 그러다가 우연히 rob pike의 github page(https://github.com/robpike/robpike.github.io)를 보게 되었다. index.html 에 이렇게만 코드가 되어 있었다. <meta name="go-import" content="robpike.io/cmd hg https://code.google.com/p/rspace.cmd"> This is a git repository holding a redirect for the Go repositories referenced by robpike. ... Read more

May 23, 2015

개발환경 설정

업데이트 $ sudo apt-get update $ sudo apt-get install build-essential Vim 설치 $ sudo apt-get install vim xclip 설치 $ sudo apt-get install xclip wget 설치(사용이 필요한 경우에만 설치) $ sudo apt-get install wget git 설치 git 설치와 설정 $ sudo apt-get install git $ git config –-global user.name “blah” $ git config –-global user.email “blah@blah.com” $ ssh-keygen -t rsa -C “blah@blah. ... Read more

March 6, 2015

pkg-config 사용

Go언어를 사용하다보면 C로 만들어진 라이브러리를 사용하기 위해서 cgo가 필요할 때 가 있다. 라이브러리를 링크하고 하는 몇 가지 절차를 거치게 되는데, 이때 pkg-config라는걸 사용하면 편리하다. pkg-config를 사용하면 컴파일하는데 필요한 라이브러리와 헤더정보를 Go코드상에서 동일한 경로로 제공해줄 수 있게 된다. pkg-config가 설치되어 있지 않을 경우에는 다음과 같이 설치를 해준다. $ sudo apt-get install pkg-config 이제 설치되어 있는 라이브러리 목록을 한번 보자. $ pkg-config --list-all 현재 설치된 라이브러리들의 정보가 나오게 된다. 그런데 내가 원하는 라이브러리의 정보가 나타나지 않는다. ... Read more

© sabzil 2016