概要 Goでコマンドラインツールを作成する場合の選択肢としてspf13/cobraがあると思いますが、遂にv1.2.0 がリリースされました👏👏👏。大きな機能追加として completion が追加され、大枠の使い方とシェル補完の生成についてこのブログではやっていくメモ書きになってます。それ以上に言及しようと思ったのですが完全に体力不足でーす。 やっていく install CLIがあるので利用するさまざまな日本語での入門記事がcobra には存在するので詳しくはその辺を参照してください。ちなみに、公式ドキュメントが最高で公式ドキュメントに誤りがあればコントリビューションのチャンス。 $ go get -u github.com/spf13/cobra って思ったら雑な備忘録を自分も書いてましたが一切の参考にならん syu-m-5151.hatenablog.com init コマンド
Go でコマンドラインツールを実装した時に $ some-tool -version のようにバージョンを出力するフラグを実装することが多いと思います.本記事はこれをどう実装するかのメモです. 手動でバージョン情報を管理 素朴にはバージョン情報を定数で持って手動で管理する方法があります. package main import ( "flag" "fmt" ) const version = "1.2.3" func main() { var v bool flag.BoolVar(&v, "version", false, "Show version") flag.Parse() if v { fmt.Println(version) } } 新しいリリースを行うときは version 定数の値を手で書き換えてコミットしてからリリース用のタグを打つという方法でやっていたのですが,間をおい
2022年8月、Go 1.18対応版にアップデートしました 久しぶりのGoネタです。Go 5 Advent Calendar 2020の18日目が空いていたので書きました。 Goで実装されたコマンドでは、ビルドした時点のバージョンを埋め込むため以下のようなMakefileを用意することがあると思います。 .PHONY: build build: go build -ldflags '-X main.Version=$(VERSION)' しかしこの方法では、go installなどMakefileを経由せずビルドしたバイナリには適切なバージョンが埋め込まれない問題があります。個人的な意見では、可能な限りgo getでインストールできる状態を維持した方が良いと思っていますが、バージョンを埋め込むためには他に方法がないので仕方がないと理解していました。しかしGo 1.19現在、runtime/
You’re seeing information for Japan . To see local features and services for another location, select a different city. Show more Motivation for a Better Go Profiler Golang is the lifeblood of thousands of Uber’s back-end services, running on millions of CPU cores. Understanding our CPU bottlenecks is critical, both for reducing service latencies and also for making our compute fleet efficient. Th
Instantly convert curl commands to Go code This tool turns a curl command into Go code. (To do the reverse, check out moul/http2curl.) Currently, it knows the following options: -d/--data, -H/--header, -I/--head, -u/--user, --url, and -X/--request. It also understands JSON content types (see JSON-to-Go). If the content type is application/x-www-form-urlencoded then it will convert the data to Valu
Go言語でSelenium WebDriverを使うサードパーティパッケージAgoutiの使い方。 Webブラウザを自動化し、作成したウェブサイトのテストやウェブクローラーに使います。 ライブラリのAgoutiの他、Google Chromeを使う場合は、chromedriver が FireFoxを使う場合は、geckodriverが必要になるので、 ダウンロード、解凍して、パスの通った場所に配置するか capabilities の binary にパスを指定します。 AgoutiのGitHubページ https://github.com/sclevine/agouti Agoutiの godocページ https://godoc.org/github.com/sclevine/agouti Seleniumのドキュメントページ https://www.seleniumhq.org/do
Become part of a community passionate about building better apps. Manual Memory Management in Go using jemalloc Dgraph Labs has been a user of the Go language since our inception in 2015. Five years and 200K lines of Go code later, we’re happy to report that we are still convinced Go was and remains the right choice. Our excitement for Go has gone beyond building systems, and has led us to even wr
前提 このエントリーは isucon/isucon9-qualify: ISUCON9予選 のベンチマーカー実装者としての観点から isucon/isucandar の解説をします。isucandar自体の解説についてはリポジトリのREADMEにある程度書かれているので、そこを参照してください。 このエントリーはISUCON9予選ベンチマーカーを実装していた時に私自身が何を考えていたのかという思い出話も入ります。ベンチマーカーを実装したことがある人以外にはほとんど益がないエントリーになると思いますが、そういうエントリーなので興味がなければこの先は読まずに閉じることをおすすめします。 また去年私が書いた以下のエントリーを読んでいることが前提になるので、このエントリーを読んでいない人はまずこちらを読んでから読んでください。 ISUCON9予選の出題と外部サービス・ベンチマーカーについて ISU
Go 1.14 で testing パッケージに新しく t.Cleanup(func()) や b.Cleanup(func()) が導入されました。 最初は今まで defer を使っていたところを置き換えられるくらいしか良いところがないかな〜と思っていましたが、想像以上に柔軟な使い方ができるので今まで使用したパターンを書いておきます。 Cleanup の特徴 テストランナーは panic ハンドラがあるので、Cleanup は panic が起きたとしても常に呼び出されます。例えば、以下のコードではちゃんと called が出力されます。 func Test_main(t *testing.T) { t.Cleanup(func() { fmt.Println("called") }) panic("") } The Go Playground 別 goroutine で panic し
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く