##基本このサイトだけで大丈夫
https://leben.mobi/go/
このサイトで学習を進めれば入門レベルからWeb開発まで習得できます。
ただ一部古い部分があって、現在ではエラーが起きてしまう可能性のあるプログラムやコマンドがありました。本記事ではそういったような、私がこのサイトで学習していた際に必要になったその他の情報や備忘録を書いていきます。
##Web開発編で出てくるデータベースの構築と操作
https://prog-8.com/docs/mysql-env-win
こちらはprogateのサイトになっております。Windows環境と書いてありますが、Mac用のリンクもこのページにあります。このサイトを見るのはWeb開発編に入った後で大丈夫です。
##実行でエラーが起きたので備忘録
###Web開発編「JSON形式で外部設定ファイルを作成・利用する方法」で起きたエラー その1
\Go\goWeb> go run main.go
build command-line-arguments: cannot find module for path _/C_/Users/ユーザー名/Go/goWeb/conf
confファイルが見つからない的なこと言われちゃいました。
このページに出てくるmain.goファイルは以下のように書かれていると思います。
package main
import (
"fmt"
"strconv"
"./conf" // 実装した設定ファイルパッケージの読み込み
)
func main() {
// 設定ファイルを読み込む
confDB, err := conf.ReadConfDB()
if err != nil {
fmt.Println(err.Error())
}
fmt.Println("取得した設定内容を出力します")
fmt.Println("ホスト名: " + confDB.Host)
fmt.Println("ポート: " + strconv.Itoa(confDB.Port))
fmt.Println("接続先DB名: " + confDB.DbName)
fmt.Println("接続ユーザ名: " + confDB.User)
fmt.Println("パスワード: " + confDB.Pass)
}
で、実はこのファイルの上の方の
"./conf" // 実装した設定ファイルパッケージの読み込み
というのがあると思うのですがどうやら今は、import文でのパッケージの読み込みは相対パスで書いちゃダメみたいですね…。
というわけでここを
"goWeb/conf" // 実装した設定ファイルパッケージの読み込み
というように、プロジェクトのメインフォルダから絶対パスに変更しておきましょう。これで実行成功しました。
ちなみにこれは、このあとの学習回でも変更が必要なところがあったので、import分の中に"."(ドット)で始まるような相対パスがあれば、絶対パスに直しておきましょう。
###Web開発編「JSON形式で外部設定ファイルを作成・利用する方法」で起きたエラー その2
言われた通りにプログラムを書いて実行したのですが、エラーが起こりました。
\Go\goWeb> go run main.go
main.go:9:5: no required module provides package github.com/go-sql-driver/mysql: go.mod file not found in current directory or any parent directory; see 'go help modules'
ちなみに、goWebというのが私が作った今回のプロジェクト名であり、メインの作業ディレクトリです。GoはGOPATHに設定したディレクトリです。詳しくは本記事の最初に引用したサイトの「Goのインストールと動作確認」を参照してください。
さてさて、go.modファイルが無いと言われてしまいました。go.modファイルを作る必要があります。方法は、
\Go\goWeb> go mod init goWeb
go: creating new go.mod: module goWeb
go: to add module requirements and sums:
go mod tidy
これでメインの作業ディレクトリにgo.modファイルができました。
そしたらもう実行できるかなーと思ったら、別のエラーが出ました。
\Go\goWeb> go run main.go
main.go:9:5: no required module provides package github.com/go-sql-driver/mysql; to add it:
go get github.com/go-sql-driver/mysql
言われた通りにgo get github.com/go-sql-driver/mysqlを実行しましょう。
\Go\goWeb> go get github.com/go-sql-driver/mysql
go get: added github.com/go-sql-driver/mysql v1.6.0
これでgo run main.goを実行するとようやく成功しました!
###Web開発編「net/httpパッケージでオレオレ証明書を使用してHTTPS(SSL)サーバを立てる」で起きたエラー
署名リクエストファイルを作成して、証明書を発行する段階で、
「最後に、この署名ファイルを元に証明書ファイルを発行します。
ファイル名はlocalhost.crtとします。」
という文の後、
openssl x509 -days 3650 -req -signkey localhost.key localhost.crt
をそのまま実行すると何も起こらずに止まってしまいました。
調べてみると、-in localhost.csr が必要だったそうです。
よって、
openssl x509 -days 3650 -req -in localhost.csr -signkey localhost.key -out localhost.crt
と入力すると無事localhost.crtが発行されました。