Go: cmd / go:デフォルトではフィードバックなしで非常に遅くなります

作成日 2016年11月17日  ·  3コメント  ·  ソース: golang/go

どのバージョンのGoを使用していますか( go version )?

$ go version
go version go1.7.3 darwin/amd64

あなたは何をした?

go getには、デフォルトでは有用なフィードバックがないようです。

再現するには:
go get github.com/die-net/dhtproxy
その後、これは約10〜15分間フリーズするように見えます。 フィードバックはありません。

最終的に私ができることがわかりました:
go get -u -v github.com/die-net/dhtproxy
進行状況を確認すると、 youtube/vitessは絶対に巨大であるため、このコマンドは永遠にかかります。

何を見たいと思いましたか?

「プロジェクトのフェッチ、デップのフェッチ、デップのインストールなど」に沿って、何らかのプログレスバーが表示されることを期待していました。

代わりに何を見ましたか?

何もない。 そこに10分ほど座っているだけです。 壊れたと思った。

解決策は明らかです-デフォルトで-vを有効にします。 デフォルトで出力なしでプロセスを10分間実行するのは、ひどいCLI設計であり、壊れているように見えます。

FrozenDueToAge

最も参考になるコメント

沈黙のルールは、エラーがないか、出力が特に要求されない限り、プログラムが完全にサイレントであるべきであるということではありません、それはプログラムが不必要に出力されるべきではないということです。 15分かかるプロセスがハングしていないというフィードバックを考えると、実際、それは優れたCLI設計です。

参考までに、私がテストした他のパッケージマネージャーはどれもデフォルトでサイレントではありません。

$ pip install test
Collecting test
  Downloading test-2.3.4.5.tar.gz
Building wheels for collected packages: test
  Running setup.py bdist_wheel for test ... done
  Stored in directory: /Users/rjones/Library/Caches/pip/wheels/0e/83/0d/f0f92214b5cce4bcbce4958ddacebf926e1c54c8445f0ba167
Successfully built test
Installing collected packages: test
Successfully installed test-2.3.4.5
$ npm install test
/tmp/
└─┬ [email protected] 
  └── [email protected] 

npmは、この機能の--silentフラグがあります)

$ brew install test
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 2 taps (homebrew/core, homebrew/versions).
==> New Formulae
homebrew/versions/postgresql95
==> Updated Formulae
ruby ✔                                                                          tig                                                                             tile38
==> Deleted Formulae
homebrew/versions/postgresql93

Error: No available formula with the name "test" 
==> Searching for similarly named formulae...
These similarly named formulae were found:
cpptest                   cxxtest                   gjstest                   homebrew/science/swetest  memtester                 slowhttptest              testdisk                  unittest                  vttest
cpputest                  git-test                  homebrew/games/minetest   js-test-driver            phoronix-test-suite       speedtest_cli             testssl                   unittest-cpp
To install one of them, run (for example):
  brew install cpptest
==> Searching taps...
These formulae were found in taps:
homebrew/completions/ctest-completion                       Caskroom/cask/aja-system-test                               Caskroom/cask/nsregextester                                 Caskroom/versions/emacs-pretest
homebrew/emacs/test-simple                                  Caskroom/cask/colortester                                   Caskroom/cask/sqlitestudio
To install one of them, run (for example):
  brew install homebrew/completions/ctest-completion

NS。

「Unixだから」と言うのは少し不誠実だと思います。 長時間実行されるタスクを持つUnixプログラムでは、プログレスバーが表示されるのが_非常に_一般的です。rsync、wget、gitなどを参照してください。

ここにプログレスバーがないことの利点は何ですか? 「完全に壊れているようには見えない」というメリットは、「フィードバックを嫌い、 --silent使用を拒否するユーザーのごく一部を煩わせない」というメリットをはるかに上回っているようです。

全てのコメント3件

これがUnixの方法です。冗長性が要求されたりエラーが発生したりしない限り、デフォルトでは静かにします。

これは私たちが変更するものではないと思います。 さらに多くの人々が、デフォルトでスパム(-v)と見なすものに反対するでしょう。

沈黙のルールは、エラーがないか、出力が特に要求されない限り、プログラムが完全にサイレントであるべきであるということではありません、それはプログラムが不必要に出力されるべきではないということです。 15分かかるプロセスがハングしていないというフィードバックを考えると、実際、それは優れたCLI設計です。

参考までに、私がテストした他のパッケージマネージャーはどれもデフォルトでサイレントではありません。

$ pip install test
Collecting test
  Downloading test-2.3.4.5.tar.gz
Building wheels for collected packages: test
  Running setup.py bdist_wheel for test ... done
  Stored in directory: /Users/rjones/Library/Caches/pip/wheels/0e/83/0d/f0f92214b5cce4bcbce4958ddacebf926e1c54c8445f0ba167
Successfully built test
Installing collected packages: test
Successfully installed test-2.3.4.5
$ npm install test
/tmp/
└─┬ [email protected] 
  └── [email protected] 

npmは、この機能の--silentフラグがあります)

$ brew install test
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 2 taps (homebrew/core, homebrew/versions).
==> New Formulae
homebrew/versions/postgresql95
==> Updated Formulae
ruby ✔                                                                          tig                                                                             tile38
==> Deleted Formulae
homebrew/versions/postgresql93

Error: No available formula with the name "test" 
==> Searching for similarly named formulae...
These similarly named formulae were found:
cpptest                   cxxtest                   gjstest                   homebrew/science/swetest  memtester                 slowhttptest              testdisk                  unittest                  vttest
cpputest                  git-test                  homebrew/games/minetest   js-test-driver            phoronix-test-suite       speedtest_cli             testssl                   unittest-cpp
To install one of them, run (for example):
  brew install cpptest
==> Searching taps...
These formulae were found in taps:
homebrew/completions/ctest-completion                       Caskroom/cask/aja-system-test                               Caskroom/cask/nsregextester                                 Caskroom/versions/emacs-pretest
homebrew/emacs/test-simple                                  Caskroom/cask/colortester                                   Caskroom/cask/sqlitestudio
To install one of them, run (for example):
  brew install homebrew/completions/ctest-completion

NS。

「Unixだから」と言うのは少し不誠実だと思います。 長時間実行されるタスクを持つUnixプログラムでは、プログレスバーが表示されるのが_非常に_一般的です。rsync、wget、gitなどを参照してください。

ここにプログレスバーがないことの利点は何ですか? 「完全に壊れているようには見えない」というメリットは、「フィードバックを嫌い、 --silent使用を拒否するユーザーのごく一部を煩わせない」というメリットをはるかに上回っているようです。

あなたが言及したパッケージマネージャーのどれも良い例ではないと思いますが(それらはいつもあまりにも騒々しいです)、 go getいくつかの進捗状況の表示が害を及ぼすことはなかったことに同意します。 特にGitHubのクローン速度はかなり遅く、全体的なランタイムは依存関係の数に依存しますが、これはユーザーには明らかではないか、事前にわかっていないため、 -vを積極的に使用することを決定する必要はありません。本当に素晴らしいソリューションです。

現在、プログレスバーは実際にはオプションではありません。デフォルトではノイズが多すぎ、すべてのVCSがデフォルトでプログレスバーをサポートしているわけではありません。 デフォルトで-vを有効にすることも、ノイズが多すぎます。

残念ながら、ノイズがなく、同時に必要なときに十分な情報を提供するメカニズムを考えることはできません。

このページは役に立ちましたか?
0 / 5 - 0 評価