go install の使い方
go install はパッケージのビルドコマンド。
使い方
- $GOPATH/src/以下にビルドしたいパッケージのソースコードを配置する。
- go install 実行
test_pkgというディレクトリ下のコードをパッケージとしてビルドしたい場合。
$ mv -rf test_pkg $GOPATH/src $ go install $ ls $GOPATH/pkg/"system_arch"/ test_pkg.a
これでtest_pkg.aができる。
go getの使い方はよくわからない…。
$ go get package git:/github.com/xxx/xxx.git
package git:/github.com/xxx/xxx.git: unrecognized import path "git:/github.com/xxx/xxx.git"
みたいになる。
go getの引数にはどんなパス与えてやればいいのかな?
参考ページ
GoLang Tutorials: Go packages and goinstall - creating and using your own packages in Go
Go言語のスコープについて
Go言語の情報の可視性についてのルールは単純です。名前(トップレベルの型名、関数名、メソッド名、定数名、変数名、構造体のフィールドおよびメソッド名)の先頭一文字が大文字になっていれば、パッケージの利用者側から参照可能となります。すなわち大文字にしなければ、それが定義されているパッケージ内からしか参照できません。このルールはコンパイラによって実施されるため、絶対的なルールとなっています。この外部パッケージから可視状態であることをGo言語の用語で「エクスポートされた(exported)」と言います。
Go言語でのスコープは3つかな?
- 関数、if 文などの()、{}の中
- Package内
- Packageの外部
同一パッケージ内であれば、異なるファイルでも非公開関数や変数を参照できるみたい。
続きを読むtmuxに入門した
ターミナルマルチプレクサ Advent Calendar 2011 : ATND 見てたら、tmux使いたい欲がむくむくと。
screen使ってないけど、いい機会なのでtmux入門してみた。
設定
tmuxの設定は ~/.tmux.conf に書けばいいみたい。
https://github.com/ryochack/dotfiles/blob/master/.tmux.conf
キー・マップ変更したら快適!
VimプラグインをNeoBundleとPathogenで管理する
VimプラグインをVundleで管理しているのだけれども、VundleはVundleInstallでインストールしたプラグイン以外は自動で読み込んでくれないみたい。
例えばGo言語をインストールすると、vim設定ファイルが $GOROOT/misc/vim 以下に置かれている。
これを
ln -s $GOROOT/misc/vim ~/.vim/bundle/golang
としても、Vundleはgolang以下のpluginやsyntaxを読み込んでくれない。
そこで、Pathogenを併用することで、Bundle管理プラグインと手動管理プラグインを.vim/bundle以下で管理できるようにした。
NeoBundle
GitHub - Shougo/neobundle.vim: Next generation Vim package manager
Vundleの改善版とのことで、今回ついでにVundleからNeoBundleに移行した。
参考:
http://vim-users.jp/2011/10/hack238/]
Pathogen
GitHub - tpope/vim-pathogen: pathogen.vim: manage your runtimepath
Pathogenを導入すると、.vim/bundle以下にpluginやsyntaxをまとめられるようになる。
参考:
vimプラグインでよりよいコーディングを - KAYAC engineers' blog
導入
NeoBundleとPathogenで管理するプラグインが干渉することがないように、お互いの管理対象ディレクトリを分けた。
bundle/automatic にNeoBundle管理プラグイン、bundle/manual に手動管理プラグインっていう感じ。
.vimrcに以下を記述。
filetype plugin indent off if has('vim_starting') set runtimepath+=~/.vim/bundle/automatic/neobundle.vim call neobundle#rc(expand('~/.vim/bundle/automatic')) endif "****************************************** "* neobundle で管理するプラグイン * "****************************************** NeoBundle 'git://github.com/Shougo/neobundle.vim.git' "----- github Plugins ----- "# [ pathogen ] NeoBundle管理外の自前インストールプラグインはPathogenで管理する NeoBundle 'git://github.com/tpope/vim-pathogen.git' if isdirectory(expand('~/.vim/bundle/automatic/vim-pathogen')) call pathogen#infect('~/.vim/bundle/manual') endif filetype plugin indent on
管理構成
.vim ├── bundle │ ├── automatic │ │ ├── BlockDiff │ │ ├── bufexplorer.zip │ │ ├── eregex.vim │ │ ├── gtags.vim │ │ ├── neobundle.vim │ │ ├── neocomplcache │ │ ├── taglist.vim │ │ ├── unite.vim │ │ ├── vim-alignta │ │ ├── vim-easymotion │ │ ├── vim-fugitive │ │ ├── vim-pathogen │ │ ├── vim-qfreplace │ │ ├── vim-quickhl │ │ ├── vim-quickrun │ │ ├── vim-ref │ │ ├── vim-surround │ │ ├── vim-visualstar │ │ ├── vimfiler │ │ ├── vimproc │ │ └── etc... │ └── manual │ ├── cmigemo │ └── golang -> /usr/local/Cellar/go/r60.3/misc/vim ├── dict ├── indent └── syntax
詳細な記載は、githubの .vim/source/bundles.vim
GitHub - ryochack/dotfiles
カレント行にアンダーラインを引く
Vimでカレント行にアンダーラインを引く。
カレント行全体に色が着くのが嫌なので、下線だけ引くように設定。
" カレント行ハイライトON set cursorline " アンダーラインを引く(color terminal) highlight CursorLine cterm=underline ctermfg=NONE ctermbg=NONE " アンダーラインを引く(gui) highlight CursorLine gui=underline guifg=NONE guibg=NONE
ctermはTerminal用の設定。guiはgvim用の設定。
ctermfg/guifgは文字色の設定。ctermbg/guibgは背景色の設定。
下線を引くのをやめて、カレント行全体に色を着けるには以下のように設定。
" カレント行ハイライトON set cursorline " アンダーラインを引く(color terminal) highlight CursorLine cterm=NONE ctermfg=white ctermbg=black " アンダーラインを引く(gui) highlight CursorLine gui=NONE guifg=white guibg=black
環境によっては、ctermじゃなくてtermになるかも。
カンマ・オペレータ
これは使えそう。
Comma operator - Wikipedia
x = (a, b); y = (a, b, c);
っていう処理があった場合、xにはaの処理をした後にbがxに代入される。
同じくyには、aとbの処理がされた後にcがyに代入される。
int x; int a=0, b=1, c=2; x = (printf("a=%d \n",a), printf("b=%d \n", b), c); printf("x=%d \n", x);
これを実行すると、こんな出力になる。
a=0 b=1 x=2
こんなマクロ書いて、ちょっと手を加えたら幸せになれそう。
#define TRACE(func) (printf("Enter %s @%s \n", #func, __func__), func)