Category Archives: Go言語

Go 1.16.6, Go 1.15.14リリース

[security] Go 1.16.6 and Go 1.15.14 are released

以下雑訳。

これらのマイナーリリースには、新しいセキュリティポリシーに基づくセキュリティ修正が含まれています(#44918)。

crypto/tlsクライアントが、ネゴシエートされたパラメータに対して誤ったタイプの証明書を提供された場合にパニックを起こすことがあります。
また、HTTPS リクエストを実行する net/http クライアントも影響を受けます。パニックは、ネットワーク上の特権的な立場にある攻撃者が
パニックは、サーバー証明書の秘密鍵にアクセスできないネットワーク上の特権的な立場にいる攻撃者が、信頼できる
ECDSA 証明書または Ed25519 証明書が存在する(または発行可能である)か、またはクライアントに
Config.InsecureSkipVerifyを設定しています。すべてのTLS_RSA暗号スイート(ECDHEを含まないTLS 1.0~1.2暗号スイート)を無効にするクライアントは
スイートを無効にしているクライアントや、TLS 1.3 のみのクライアントは影響を受けません。

これはissue #47143およびCVE-2021-34558です。この問題を報告してくださった Imre Rad さんに感謝します。

https://groups.google.com/g/golang-announce/c/n9FxMelZGAQ/m/4ZhvTx0dAQAJ?pli=1

詳細については、リリースノートをご覧ください。

https://golang.org/doc/devel/release.html#go1.16.minor

バイナリおよびソースの配布物は、Goのウェブサイトからダウンロードできます。

https://golang.org/dl/

Git クローンを使ってソースからコンパイルするには、次のようにしてリリースに更新します。
“git checkout go1.16.6” でリリース版にアップデートし、通常通りビルドします。

リリースにご協力いただいた皆様、ありがとうございました。

乾杯
GoチームのDmitri、Filippo、Alexです。

WSL2でGO言語を使うにあたって参考にしたサイト

最終更新 2021/07/22

順次更新します。

セットアップ

Ubuntu Linux 20.04 LTSに、Goをインストールする(+Emacs lsp-mode) – CLOVER🍀

Go langのインストールの参考にさせていただきました。aptコマンドで最新のGo langがインストール出来るようになりました。

Visual Studio Code + WSL2でGo開発環境構築 – Qiita

VS Codeで必要な拡張のインストール、VS Codeからのビルド方法など。

Golang環境整える。Windows(WSL2、WSL)、Mac、Docker、VSCode(+Remote Docker)Golint・・・ – Qiita

基本的な情報。WSL2でDockerを使う方法についても(今ではWSL2を有効にしてからDocker Desktopの安定版をインストールするだけですが)。

WSL | GoLand

GoLandでWSLを使用する際の公式ドキュメント。

go get でリポジトリをダウンロードする際にSSHを利用する

概要WSL で Git を使用する | Microsoft Docs

WSLでWindows側のGit Credentials Manager Coreの使用方法が書かれている。GitHubで二段階認証されている方は重要!

Go言語自体

Tutorial: Get started with Go

Go言語の開発手順のチュートリアル。

A Tour Of Go(日本語)

言語機能のチュートリアル。

Go言語の依存モジュール管理ツール Modules の使い方 – Qiita

Go Modulesの使い方。モジュール管理方法がさっぱわからんかったので助かりました。

Go のモジュール管理【バージョン 1.16 改訂版】

Go Modulesの更なる説明。Go lang 1.16ではGO111MODULE=""の設定はデフォルトでonになっている。Go言語ハンズオン(本)のGOPATHの節の写経で私が躓いたのはこれが理由か(2021年に出版する本でmodulesの説明が何もないのが何とも)。

Git, SSH関係

Ubuntu で Git の最新を使う – Qiita

apt-getコマンドで最新のGitバージョンを維持する方法。

Visual Studio Codeからgithubを利用する – ①環境 | きさらぼ

【SSH】ssh-agentの使い方を整理する – Qiita

go get でリポジトリをダウンロードする際にSSHを利用する – CrossBridge Lab

go getコマンドが基本的にはhttpsでGitHubにアクセスするので、それを強制的にsshに変更する方法。

2020年 4月 24日から 2020年 4月 30 日まで「GW 直前 Xbox One 本体セール キャンペーン」を実施

Xbox Japanさんの投稿 2020年4月21日火曜日

期間中Xbox One Xが10,000円、Xbox One Sが6,000円引きとなります。あわせてゲームパスも登録して沢山のゲームで遊びましょう!

Go 1.9 リリース

情報源: Go 1.9 is released – The Go Blog

v1.9がリリースされました。

今回もっとも大きな変更はType Aliasesの導入で、詳細は以下を確認ください。

proposal/18130-type-alias.md at master · golang/proposal

その他の変更点・修正点については以下のリリースノートにてご確認ください。

Go 1.9 Release Notes

各プラットフォーム向けダウンロードは以下のページよりお願いします。

Downloads

JetBrains Gogland

Gogland is a new IDE by JetBrains aimed at providing an ergonomic environment for Go development.

情報源: JetBrains Gogland: Capable and Ergonomic Go IDE

見逃していましたが、JetBrainsがGo言語のIDEの開発を始めたようです。とうとうIDEとしては本命が来るのかと言った感じですね。

基本的に皆がJetBrainsのIDEに期待する機能は盛り込まれてきそうです。

https://www.jetbrains.com/go/features/

現在EAPの応募が始まっています。(情報源を参照)

Go言語で開発されたGitHubクローンGogsの紹介

Gogs (Go Git Service) is a painless self-hosted Git service

情報源: Gogs – Go Git Service – a painless self-hosted Git service

Go言語で開発されたGitHubクローンのGogsの紹介をします。Windowsでも動作しますし、Javaで書かれている他の物のように別途アプリケーションサーバーを用意する必要はありません。

まず、以下のダウンロードサイトから最新のWindows版のバイナリをダウンロードします。

https://gogs.io/docs/installation/install_from_binary

ZIPファイルがダウンロードされますので、適切な場所に解凍します。

Continue reading Go言語で開発されたGitHubクローンGogsの紹介

メモ:Windows上のVisual Studio CodeでGo言語の開発環境を整える

作業手順と参照リンク先のメモです。

Go自体のインストール、環境変数GOROOT, GOPATHの設定は終わっているものとします。

Visual Studio Codeのインストールと入手

普通にセットアップウイザードを進めていけば良いです。

VS Code上からGo for Visual Studio Codeをインストールします。(インストール方法は割愛)

このGo for Visual Studio CodeはGo言語のシンタックスハイライト、godocを使用したコード補完(つまりインテリセンス)、スニペット、定義への移動、参照先の検索、等々Visual Studio CodeをIDEっぽく使用できるようにするものです。

また、Go for Visual Studio Codeを使用するに当たっては、以下のGoのパッケージをインストールします。


go get -u -v github.com/nsf/gocode
go get -u -v github.com/rogpeppe/godef
go get -u -v github.com/golang/lint/golint
go get -u -v github.com/lukehoban/go-outline
go get -u -v sourcegraph.com/sqs/goreturns
go get -u -v golang.org/x/tools/cmd/gorename
go get -u -v github.com/tpng/gopkgs
go get -u -v github.com/newhook/go-symbols
go get -u -v golang.org/x/tools/cmd/guru
go get -u -v golang.org/x/tools/cmd/goimports

%GOPATH%\binにPATHを通すのを忘れないようにしましょう。

デバッグ環境がいらなければほぼこれで終了です。Goのコードを書いてF5キーを押すと自動的にlaunch.jsonファイルが作成され、ファイルがコンパイルされ実行されます。

生成されるlaunch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch",
            "type": "go",
            "request": "launch",
            "mode": "debug",
            "remotePath": "",
            "port": 2345,
            "host": "127.0.0.1",
            "program": "${workspaceRoot}",
            "env": {},
            "args": []
        }
    ]
}

また、コマンドパレットからConfigure Task Runnerを選択実行して出来上がるtasks.jsonを以下のように変更すれば、goimportsをCtrl+Shift+bで実行してGoのコードをビルドし、整形することが出来ます。

{
    "version": "0.1.0",
    "command": "goimports",
    // ビルドコマンドとして登録する
    "isBuildCommand": true,

    // always=必ず表示 silent=エラー時のみ表示 never=表示しない
    "showOutput": "silent",

    "windows": {
        "command": "goimports"
    },

    // goimportsのオプション。上書きオプションと編集中のファイルを引数に渡す
    "args": ["-w", "${file}"]
}

デバッグ環境

ステップ実行によるデバッグが可能ですが、デバッグに当たってはdelveが必要になります。

以下のコマンドで入手してください。(Windows版もバイナリが配布されるようになりました。)

go get github.com/derekparker/delve/cmd/dlv

delveのインストールさえ上手くいけば、エディタ上にブレークポイントを置いて、Ctrl+F5もしくはコマンドパレットよりDebug Runコマンドでコードにステップインし、ソースコードでバッグ可能です。

SnapCrab_helloworldgo - HelloWorld - Visual Studio Code_2016-4-24_11-18-37_No-00

【参考】delveのビルド方法

以下のgo getコマンドでソースを入手します。

go get github.com/derekparker/delve/cmd/dlv

GOPATHのsrcディレクトリ以下に配置されるので、移動します。

以下にある手順で、 MinGW-W64をセットアップし、make installします。

Installation on Windows · derekparker/delve Wiki · GitHub

無事makeが動けば$GOPATH/binにdelveの実行ファイル、dlv.exeがコピーされています。

まとめ

これで、WindowsでのGo開発も捗っていくのでは無いかと思います。メモ帳つらいw


Go 1.6.2 リリース

リリースされました。

Download: https://golang.org/dl/

Release History: https://golang.org/doc/devel/release.html