「 クレジットカードを使わせるのは危ないのよ。現金を使わせましょう」
https://github.com/muzudho/hello-golang
「 ↑↓ 2021年の Go言語のモジュール・システムって何か 2016年に比べて変わってなかったかだぜ☆?」
「 REPL (Read-eval-print loop)の gore
で最初の練習をするみたいなんだが、何だぜそれ☆?」
Quick prototyping with a Golang REPL
go get github.com/motemen/gore
「 パッケージは どこにダウンロードされたの?
パッケージのバージョンは どうやって管理しているの?」
「 ↑ Go言語のパッケージ管理の文化が分からんな……☆ ネットで調べるかだぜ☆」
go version
go version go1.14.4 windows/amd64
「 ↑ Go言語のバージョンが古いな……☆ アップグレードするコマンドは無いのかだぜ☆?」
「 ↑ まあ、オペレーティング・システムの構成を変更するのだから、オペレーティング・システムの方法を経由するのも 一理あるが、
Windows のアプリ管理システムは インストールとアンインストールの2つしかできない不便なやつなんだが……☆」
「 PC全体の アプリケーションに影響を及ぼす 前時代的なバージョン管理方法だよな☆
だから Microsoft は Windows にアプリケーション別バージョン管理システムを導入するより、 Docker を入れる方に舵を切るだろ☆」
「 ↑ 日本民族は 鍋奉行が場を一本にまとめてしまうので、多くの話しを同時並行的に動かすのに向かない民族だからな☆
独自オペレーティング・システムを作れる文化を持っていない☆
Linux, Windows, Apple に勝てない☆ NECは Microsoft Disk Operation System を普及させて Windows に差し変わってそれきりだし、 トロンとか民間人の触れるところに無い、論外☆
今の人には信じられないかもしれないが、 PCのコマンドを叩くのを覚える苦行を乗り越える動機はほどんとエロゲーが見たいから☆ ニコニコ動画の視聴動機はホモビデオ☆
真面目にコンピューターを始めようと思ってコンピューターを始めるごく一部の優秀な人が率先して文化を作ろうとするのは間違い☆ 負け方の勉強にはなる☆」
「 珍論をしゃべりながらインストールするのを止めなさいよ! 」
「 パッケージ管理システムか、モジュール・システムも セットアップしなさいよ」
https://godoc.org/golang.org/x/vgo
「 ↑ この紙の本に書いてない……☆ ネットで調べるか……☆」
go get -u golang.org/x/vgo
「 ↑ 相変わらず どのような変化が起こったのか分からん……☆」
# Mac
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
「 それ Mac の書き方だろ☆
[Windows] + [Pause]
キーを同時押しして、[システムの詳細設定] リンク - [詳細設定] タブ - [環境変数] ボタン
をクリック☆」
「 GOROOT
環境変数は go言語をインストールしたときに C:\go
を覚えているから 設定しなくてもいいという認識で合っているかだぜ☆?
そして今回設定するのは ユーザー環境変数 GOPATH
で、 C:\Users\{name}\go
あたりのディレクトリでいいという認識で合っているかだぜ☆?」
「 そんなことは 紙の本の説明では 分からん☆ Mac のやり方で書かれているからな☆」
「 Path
システム環境変数に C:\Users\{name}\go\bin
あたりのディレクトリを追加しておくぜ☆?」
「 ↑ C:\Go\bin
が Path に入ってないと go コマンドが認識できなくないか☆?」
システム環境変数:
Name | Value | 別の書き方 |
---|---|---|
Path | C:\go\bin | |
Path | C:\Users\むずでょ\go\bin | %GOPATH%\go |
ユーザー環境変数:
Name | Value | 別の書き方 |
---|---|---|
GOPATH | C:\Users\むずでょ\go | %USERPROFILE%\go |
go version
go version go1.15.6 windows/amd64
go env GOROOT
c:\go
go get github.com/motemen/gore
「 ↑ これで gore
が %GOPATH%/bin ディレクトリーにできてるはずだが……☆」
gore を go get しても $GOPATH/bin にバイナリファイルができなかった
go get github.com/motemen/gore/cmd/gore
gore
gore version 0.5.2 :help for help
gore> exit
undefined: exit
gore> bye
undefined: bye
gore> quit
undefined: quit
gore>
# for code completion
go get github.com/mdempsky/gocode
「 ↑ これで gore のインストールは終わったはずだぜ☆」
gore -autoimport
gore version 0.5.2 :help for help
gore> fmt.Println("Hello World")
# 配置ルール
%GOPATH%/src/{Repository FQDN}/{Repository Path}
https://github.com/muzudho/hello-golang
「 ↑ わたしは上記のような レポジトリを開設したので、自動的に ローカル・レポジトリのディレクトリ・パスは以下のように確定する☆」
C:\Users\むずでょ\go\src\github.com\muzudho\hello-golang
「 納品先ごとにディレクトリをまとめているローカルルールで運用していて、
C# と go で、レポジトリを置くデフォルトの位置が異なったら、
1つのプロジェクトで C# と go の両方を使う場合、どう配備したらいいの?」
「 バラバラに配備しろだぜ☆
特に go は 強権的で、ディレクトリの位置は固定だぜ☆ なんのためのソフトウェア、なんのための論理的なディレクトリだろうか☆
ディレクトリ配置を自由にする精神を売っ払った者だけが go を使うことができるようだぜ☆」
「 48 (しば)のおっちゃんが言うように すでに Go言語を使っている人が読む本だよな この本☆」
https://github.com/bleu48/GoGo
https://golang.org/doc/tutorial/getting-started
「 ↑ 公式のチュートリアルに書いてあるような内容は、買ってきたその本に書いてないのよ」
go run gogo01.go
「 ↑ [Preferences] - [Settings] - [User] - [Features] - [Terminal] - [Integrated: Renderer Type]
は auto だぜ☆」
https://blogs.osdn.jp/2017/01/16/vscode.html
「 ↑ Visual Studio Code が ●
は半角だ、と言えば、利用者は 半角であることを無条件に飲み込まなければならないのか☆」
「 仕組みが分からん☆ フォント・ファイルを作ってるやつが友だちにいないので 分からない☆」
「 これが Windows 特有の不具合かどうか分からん☆
Windows 上で Linux ターミナル簡単に動かせないものか☆」
import (
"fmt"
"gogo01.go"
)
import (
"fmt"
)
Go言語の依存モジュール管理ツール Modules の使い方
go mod init github.com/muzudho/hello-golang
go build
「 ↑ hello-golang.exe
実行ファイルができたぜ☆」
「 ↑ 実行ファイルができたんなら、ファイル名を叩けば 実行できるな☆」
「 エグザンプル1、 エグザンプル2、 エグザンプル3 ……、と実行ファイルを複数作りたいときは どうやるんだぜ☆?」
https://github.com/muzudho/kifuwarabe-uec12
「 ↑ 強権的な Go言語で 別ファイルの 変数のインポートは どうやるんだぜ☆?」
「 ↑ package
は要するにディレクトリ名だぜ☆
entities.Author
まで打鍵してファイルを保存すると、 import 文に github.com/muzudho/hello-golang/entities
が自動補完されたぜ☆」
「 じゃあ トップ・ディレクトリにある変数はどうやって自動補完されるんだぜ☆?」
「 ↑ program
と importable package
の違いは何だぜ☆?」
Access main package from other package
「 相互依存しない 順序付いたグラフになるように してんじゃないの?」
「 ↑ 変数に、変数より長いパッケージ名を付けて回るの、嫌なんだが☆」
「 ↑ 2020年頃から 中国語のサイトの方が 欲しい内容が書いてあるサイトに当たるようになったよな☆」
「 人口比からすれば インターネット上の情報の5分の1は 中国人とインド人が発信してるはずだぜ☆」
「 ↑ エイリアス(別名)は付けれるが、destructuring してプレフィックス自体を外す方法は見つからなかったぜ☆
1文字にしたろ……☆」
「 ↑ 18時間ぐらい探して メソッド名間違い1個見っけ☆」
「 ↑ 19路盤をここに貼り付けて置けば コンピューター囲碁プログラミングやりたくなるやつも いるだろう……☆」
「 Go言語はインフラの やや人間向け側のプログラミングに向いているのに……☆」
ポート番号を設定する
通信タイムアウト時間を設定する
一度に読み込むバイト数を設定する
他にも必要ならパリティビットなど細々設定する
エラーが起こった時どうするのか、どこかに表示するのか決めておく。
通信ポートを開ける
受信のメインループに入る。
例えば CgfGoBan では ダイアログボックスを開けっぱなしにしているとき、メインループしている。
Examples:
1: 指し手を受信した
2: OKを受信した
3: NEWGAMEを受信した
4: ANSWERを受信した
「 CgfGoBan の cgf_term.cpp は
囲碁の通信プロトコル SGMP(Standard Go Modem Protocol - Revision 1.0)
をやってんだな☆」
「 ↑ GTP から NNGS へ変換してくれるのでは☆?」
「 ただ GTP2NNGS-20150629 の ソースの分量 そんなに無いし 読んでみるか……☆
名のあるライセンス 書いてないな☆ Readme で文章で書いてるだけで☆」
Crieitは個人で開発中です。
興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!