<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>WSL on すてきな太陽になりたい</title><link>https://blog.sei-yo.jp/categories/wsl/</link><description>Recent content in WSL on すてきな太陽になりたい</description><generator>Hugo</generator><language>ja-JP</language><lastBuildDate>Fri, 17 May 2019 22:16:47 +0000</lastBuildDate><atom:link href="https://blog.sei-yo.jp/categories/wsl/index.xml" rel="self" type="application/rss+xml"/><item><title>Goはじめ</title><link>https://blog.sei-yo.jp/engineer/2019/05/posts/go/</link><pubDate>Fri, 17 May 2019 22:16:47 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/05/posts/go/</guid><description>&lt;p&gt;Goを触ることにしたので、色々なドキュメントを読んだメモを書こうと思って始めたものの二つで力尽きたので続きはまた別に。&lt;/p&gt;
&lt;h1 id="go-のインストール"&gt;Go のインストール&lt;/h1&gt;
&lt;p&gt;tarボールを展開するだけでとりあえず終わり。 GOPATH環境変数は設定しない場合は/goが設定される。設定しなくても良い。 /go以外にしたい場合に設定すれば良いとのこと。&lt;/p&gt;
&lt;p&gt;インストールした後に、普通設定すべきこととしてパスの設定がある。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export PATH=$PATH:$(go env GOPATH)/bin
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href="https://golang.org/doc/install"&gt;https://golang.org/doc/install&lt;/a&gt;&lt;/p&gt;
&lt;h1 id="go-の基本"&gt;Go の基本&lt;/h1&gt;
&lt;p&gt;以下のURLに基本が書いてあるのでとりあえずこれを読むのが良さそう。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://golang.org/doc/code.html"&gt;https://golang.org/doc/code.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;$GOPATH（~/go/）が唯一のワークスペース。複数作らないで一つにする。と書いてある。 Go以外の言語では、プロジェクト毎にワークスペースがあるけれども、Goでは単一のワークスペースであることが違い。 そこ代わりに、単一のワークスペースに複数のリポジトリが含まれており、さらにそれらは複数のパッケージを含む。 リポジトリというのはバージョン管理の対象の単位。.gitディレクトリが存在するディレクトリのこと。 パッケージとは、ディレクトリ一つ毎にパッケージ一つであり、例えばパッケージ毎に異なる実行ファイルを提供する。 パッケージは複数のソースファイルを含んで良いが、ディレクトリは単一。&lt;/p&gt;
&lt;p&gt;ワークスペースには、src/とbin/というディレクトリがあり、src/配下に複数のリポジトリを配置する。bin/には、それらの実行ファイルを配置する。&lt;/p&gt;
&lt;p&gt;ワークスペースにはシンボリックリンクは使うべきではないとのこと。 現在のワークスペースは以下のコマンドで確認できる。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;go env GOPATH
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="パッケージパス"&gt;パッケージパス&lt;/h2&gt;
&lt;p&gt;自分で作ったGoソースファイルや誰かの作ったパッケージ等は、$GOPATH/src/の下のディレクトリパスを使って指定する。 fmtパッケージのような標準パッケージは短い。自分でパッケージを作成するときは将来的にも標準パッケージと同じにならないように注意する必要がある。ただし、github.comで公開するような場合は、github.com/ユーザ名 がそのベースパスとなり、その下にパッケージ名が続くようになる。&lt;/p&gt;
&lt;h2 id="build-and-install"&gt;build and install&lt;/h2&gt;
&lt;p&gt;ソースファイルをビルドしてインストールするには、 go install コマンドを使う。 パッケージパスを引数に指定するか、パッケージディレクトリにcdしてからコマンドを実行する。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;go install github.com/hseiyo/hello
or
cd $GOPATH/src/github.com/hseiyo/hello
go install
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;installできたコマンドは実行可能。 GOPATH/binをPATHに追加してあればコマンド名だけで実行可能。 go build コマンドを代わりに使うと、ビルドして実行ファイルは作成されるが、$GOPATH/binにはコピーされずにパッケージディレクトリに作成される。これも実行可能ではあるが、このパッケージが実行コマンドではなくライブラリの場合にはinstallではなく、buildを実行してパッケージディレクトリにバイナリファイルを置いておく。 他のソースファイルからimportする際に利用される。&lt;/p&gt;
&lt;h2 id="パッケージ名"&gt;パッケージ名&lt;/h2&gt;
&lt;p&gt;ソースファイルには必ず以下のようにようにしてパッケージ名を指定する。 同一のパッケージに所属するソースファイルはすべて同じパッケージ名を指定する。これは必ず指定が必要。 ディレクトリ名と同じ文字列をパッケージ名として指定する。&lt;/p&gt;
&lt;p&gt;パッケージ名はほかのパッケージと同じものを利用しても問題ないが、インポートパス名は異なる必要がある。&lt;/p&gt;
&lt;h2 id="テスト用ソースファイル"&gt;テスト用ソースファイル&lt;/h2&gt;
&lt;p&gt;_test.goで終わるファイル名のファイルはテスト用に使用する。&lt;/p&gt;
&lt;p&gt;testingパッケージをインポートした上で、Test&amp;lt;関数名&amp;gt;(t *testing.T)という関数を定義する。 そして以下のコマンドを実行する。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;go test github.com/hseiyo/hello
or
cd $GOPATH/src/github.com/hseiyo/hello
go test
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="go-get"&gt;go get&lt;/h2&gt;
&lt;p&gt;例えば以下のコマンドは、リモートからファイルを取得（ダウンロード）して、ビルドしてインストール（$GOPATH/bin/へのコピー）を行う。&lt;/p&gt;</description></item><item><title>pandoc's raw option</title><link>https://blog.sei-yo.jp/engineer/2019/04/posts/pandocs_raw_option/</link><pubDate>Tue, 23 Apr 2019 21:57:43 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/04/posts/pandocs_raw_option/</guid><description>&lt;p&gt;昨日まで使えていた pandoc の -parse-raw（-R) オプションが使えなくなって、代わりに+raw_htmlを使えというエラーが出て調べた。&lt;/p&gt;
&lt;p&gt;無くなったのは2017年10月のpandc 2.0がリリースされたとき。最近変わったのかと思ったら結構前。 なんでかと思ったら、動いていた環境はWSLのUbuntu 16.04で古いのが入っていただけだった。バージョンは、1.16.0.2。 ちなみに動かなかったのはWindowsの2.7.3．こっちはだいぶ新しい。ちゃんと代わりのオプションを提示してくれたのが良い。&lt;/p&gt;
&lt;p&gt;詳細はリリースノート参照。 –parse-rawで検索すると該当箇所がわかる。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://pandoc.org/releases.html#pandoc-2.0-29-oct-2017"&gt;Release Note&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>