Docker Machine で同じように環境変数を設定する場合、以下のようにホスト VM の名前の指定が必要です。たとえば dev というホスト VM を作った場合、
1 2 3 4 5 6 7
$ docker-machine env dev export DOCKER_TLS_VERIFY="1" export DOCKER_HOST="tcp://192.168.99.101:2376" export DOCKER_CERT_PATH="/Users/skatsuta/.docker/machine/machines/dev" export DOCKER_MACHINE_NAME="dev" # Run this command to configure your shell: # eval "$(docker-machine env dev)"
で環境変数が取得できます。このホスト VM 名は存在し、かつ動いているものでなければなりません。
いろいろ模索と妥協をした結果、 docker-machine ls コマンドと組み合わせることにより、現状動いているホスト VM を1つ取り出して、その環境変数を設定するシェルスクリプトを .zshrc に書くことにしました。
.zshrc
1 2 3 4 5 6 7 8 9
# check if `docker-machine` command exists ifcommand -v docker-machine > /dev/null; then # fetch the first running machine name local machine=$(docker-machine ls | grep Running | head -n 1 | awk '{ print $1 }') if [ "$machine" != "" ]; then eval"$(docker-machine env $machine)" export DOCKER_IP=$(docker-machine ip $machine) fi fi
IP アドレスだけを使いたいときもあるので、同時に DOCKER_IP という変数も設定しています。
6g, 8g などのコンパイラ・リンカはなくなり、go tool compile, go tool link などに置き換えられました。
新たなデフォルトコマンドの追加
go vet, go cover, go doc コマンドが標準で使えるようになりました。
vet はソースコードのバリデーションや静的解析をおこなうツールです。
cover はカバレッジを計算してくれるツールです。
vet や cover はよく使っているので、標準で同梱されるようになると嬉しいですね。
Go コマンド
Internal package
Go でのアクセス制御はこれまで public か private しか指定できませんでした。 Go 1.4 で internal package という、パッケージプライベートを実現する機能が試験的に導入されましたが、この段階ではまだコアライブラリでしか利用できるようになっていませんでした。 Go 1.5 でこの機能がユーザライブラリにも開放されます。
先進的な CI サービスである wercker では、 CLI が提供されています。これを使うと、 wercker でのビルドプロセスをローカルで再現できたり、 ビルド済みのコンテナを pull してきて、中の状態を確認できたりします。 OS X 用と Linux 用が提供されており、 OS X の場合には、以下のコマンドで一発です。
$ wercker pull skatsuta/aerospike-sample --branch master --load Fetching build information for application skatsuta/aerospike-sample ERROR wercker-api: You are not authorized to access the resource (status code: 401)
上記記事では Go のプロジェクトにおいて、 go get してきた依存ライブラリを rsync を使って $WERCKER_CACHE_DIR に保存したりそこから復元したりして、 ビルド時間を短縮しています。 Java や Scala のプロジェクトでも考え方は同じなので、上記記事を参考にして自分なりのやり方を組み立てました。
#!/bin/bash #========================================= # Script for storing and restoring cache # in Java / Scala project on werkcer #========================================= # cache directories CACHES=( "ivy2""sbt" ) CMD="$1" # check if rsync exists if ! type rsync > /dev/null; then echo"[ERROR] rsync needs to be installed." exit 1 fi # set source and destination directories case$CMDin "store") SRC=$HOME DST=$WERCKER_CACHE_DIR ;; "restore") SRC=$WERCKER_CACHE_DIR DST=$HOME ;; esac # run rsync for cache in"${CACHES[@]}"; do iftest -d $SRC/.$cache; then rsync -avz $SRC/.$cache$DST/ fi done
ん? bower invalid-meta angular-i18n is missing "main" entry in bower.json という警告が出ていますね。 同時に gulp serve などを走らせていた場合、以下のような警告が出てしまいます。
1 2
angular-i18n was not injected in your file. Please go take a look in"app/bower_components/angular-i18n"for the file you need, the manually include it in your file.
$ hexo server INFO Hexo is running at http://0.0.0.0:4000/. Press Ctrl+C to stop. [BS] Reloading Browsers... [BS] Reloading Browsers... [BS] Reloading Browsers...
記事を書く
快適な執筆環境が整ったところで、早速記事を書いていきます。 Hexo で新しく記事を作るには以下のコマンドを実行します。たとえば Hello, World というタイトルの記事を書く場合です。
1 2
$ hexo new "Hello, World" INFO Created: ~/repos/blog-hexo/source/_posts/Hello-World.md