2月3週

今週からgoをやる

土曜:1,5,2,3,2=8.5h

  • goのエラーハンドリング
    • エラーがなければnilが帰ってくる
  • panic(非推奨):エラーハンドリングする
    • 自分で例外を投げてシステムを強制終了させる
    • recoverで拾うことができる
  • range:foreachのように配列またはスライスの要素数分繰り返す
for i, v := range nums {
  fmt.Print(fmt.Sprintf("index:%d,value:%d\n", i, v))
}
  • インデックス番号使いたくない時はiのところにアンダースコアを置く
for _, v := range nums {
  fmt.Print(fmt.Sprinln(v))
}
  • ポインタ
  • アスタリスク(*)でポインタ型宣言
  • アンパサンド(&)をつけることで番地を取得する
  • ポインタの中身を取得したいときはアスタリスク(*)
  • 例)
func main() {
  var n int = 100
  fmt.Println(n) // 100
  var p *int = &n 
  fmt.Println(p)  // 0xc00007c008(番地)
  fmt.Println(*p) // 100
}
  • 並列処理(goroutine)あたりでキツくなってきたのでとりあえず何か作ろうと思い立った。

日曜:3h,3h=6h

  • GOPATHの確認方法
    • go env GOPATH(デフォルトは/go)
  • echoのmiddlewareでログ出力
    package main

    import (
        "net/http"
        "app/routes"
        "github.com/labstack/echo"
        "github.com/labstack/echo/middleware"  // 1.インポート
    )

    func main() {
        e := echo.New()

        //Middlewares
        e.Use(middleware.Logger())  // 2. これだけでログ出力される

        // Routes
        routes.Init(e)
        e.GET("/", func(c echo.Context) error {
            return c.String(http.StatusOK, "Hello, World!")
        })
        e.Logger.Fatal(e.Start(":8080"))
    }
  • cannot find moduleが多発。go.modmodule app部分を先頭に付けないとダメだった。例えば、プロジェクト直下/routesを読み込みたい&go.modmodule appだった場合、以下のようにimportする
  • "app/routes"

月曜:11h

  • Unmarshalで受け取ったjsonをstructの形で格納する
  • Context :Context は、APIのサーバーやクライアントを使うときに、コンテキストを提供してキャンセルや、タイムアウト、値を渡したり出来る仕組み。
  • qiita.com

火曜:10h

水曜:10h

  • vscodeの設定を有効にするためにローカルにgo入れないといけない
  • JAWS-UGの初心者支部に初参加した
    • speakerdeck.com
    • 内容はサーバレス。Lambdaを使用して翻訳APIを作成するというもの。シンプルに面白くて今後に生かせそう。

木曜:5h

  • golangembededjavaの継承はよく似ていると言われるけど厳密にはembededは埋め込みと解釈したほうがいいみたい
  • qiita.com

金曜:1h(私用)

週次報告

勉強時間を週次報告としていたが、目標に届く週がなく破綻していたので目標宣言を変更し現実的な数値にする

  • 年間目標時間(業務での設計・実装含む):3380h
  • 週次目標時間:65h
  • 週次実績時間:51.5h(私用で時間確保できず)
  • 何を得たか:golang基礎 + nuxt.js + TypeScriptの基礎 + javascriptの基礎
  • 何が必要か:golang基礎 + nuxt.js + typescriptの基礎と応用
  • 来週の目標:golang + nuxt.js + typescript + firebaseにてポートフォリオ作成