手軽にgo1.6を試す方法考える -> 結局dockerを使うことにした
はじめに
期待していない挙動を示した時にそもそもgo1.7とgo1.6とで動作が異なるのではないか?という疑いをもった時があった。 ところで手元の環境は全部1.7でわざわざ1.6をbuildするのも面倒と言うような感じ。 本当に些細なコードだったので、goの1.6用のplaygroundがあればそちらを使いたかったのだけれど。みつけられなかった。
特にvmや他の環境を持っていない場合にどうするのが一番楽なんだろう?という話。
dockerを使うことにした
dockerを使うことが一番ラクかもしれない。以下にdocker用のイメージがある。alpineがたぶんいちばん小さいだろうということでそれを使うことにする。
以下のようなdocker-compose.ymlを書いてあげる。
go1.6: image: golang:1.6-alpine volumes: - "$PWD:/go"
例えば以下の様なコードを実行してみる。
dump-info.go
package main import ( "fmt" "os" "runtime" ) func main() { fmt.Printf("go version: %q\n", runtime.Version()) pwd, _ := os.Getwd() fmt.Printf("cwd: %q\n", pwd) }
以下の様にして実行できる。
$ docker-compose run go1.6 go run dump-info.go go version: "go1.6.3" cwd: "/go"
1.6で動いている。
参考
pythonのinteractive shellを終了した後 `stty sane` が必要だった問題が解決したという話
はじめに
手元の環境でpythonのinteractive shellを利用した後、コンソールで入力した文字列のエコー表示がされなくなる問題に悩まされていた。
$ python3.5 Python 3.5.2 (default, Sep 19 2016, 02:49:52) [GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.31)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> ^D>>> $ # ここで入力した文字列が表示されなくなってしまう $ stty sane #これで復活
readlineを有効にせずにbuildしていた模様
readlineを有効にせずにpythonをinstallしていた模様。
$ port installed python35 The following ports are currently installed: python35 @3.5.2_0 (active) $ port variants python35 python35 has the variants: readline: Use readline instead of libedit universal: Build for multiple architectures $ sudo port clean python35 $ sudo port install python35 +readline The following ports are currently installed: python35 @3.5.2_0 python35 @3.5.2_0+readline (active)
無事は stty sane
は不要になった。