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設計であり、壊れているように見えます。
これが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
を有効にすることも、ノイズが多すぎます。
残念ながら、ノイズがなく、同時に必要なときに十分な情報を提供するメカニズムを考えることはできません。
最も参考になるコメント
沈黙のルールは、エラーがないか、出力が特に要求されない限り、プログラムが完全にサイレントであるべきであるということではありません、それはプログラムが不必要に出力されるべきではないということです。 15分かかるプロセスがハングしていないというフィードバックを考えると、実際、それは優れたCLI設計です。
参考までに、私がテストした他のパッケージマネージャーはどれもデフォルトでサイレントではありません。
(
npm
は、この機能の--silent
フラグがあります)NS。
「Unixだから」と言うのは少し不誠実だと思います。 長時間実行されるタスクを持つUnixプログラムでは、プログレスバーが表示されるのが_非常に_一般的です。rsync、wget、gitなどを参照してください。
ここにプログレスバーがないことの利点は何ですか? 「完全に壊れているようには見えない」というメリットは、「フィードバックを嫌い、
--silent
使用を拒否するユーザーのごく一部を煩わせない」というメリットをはるかに上回っているようです。