Go: cmd/go: menjadi sangat lambat tanpa umpan balik secara default

Dibuat pada 17 Nov 2016  ·  3Komentar  ·  Sumber: golang/go

Versi Go apa yang Anda gunakan ( go version )?

$ go version
go version go1.7.3 darwin/amd64

Apa yang kamu lakukan?

go get tampaknya tidak memiliki umpan balik yang berguna secara default.

Untuk mereproduksi:
go get github.com/die-net/dhtproxy
Ini kemudian tampak membeku selama sekitar 10-15 menit. Tidak ada umpan balik.

Akhirnya saya tahu bahwa saya bisa:
go get -u -v github.com/die-net/dhtproxy
Untuk melihat kemajuannya, dan tampaknya karena youtube/vitess benar-benar besar, perintah ini membutuhkan waktu lama.

Apa yang Anda harapkan untuk dilihat?

Saya berharap untuk melihat sesuatu di sepanjang baris "Mengambil proyek, mengambil deps, menginstal deps, dll", dengan semacam bilah kemajuan.

Apa yang Anda lihat sebagai gantinya?

Tidak. Itu hanya duduk di sana selama sekitar 10 menit. Saya pikir itu rusak.

Solusinya jelas - aktifkan -v secara default. Ini desain CLI yang mengerikan untuk menjalankan proses selama 10 menit tanpa output secara default, sepertinya itu rusak.

FrozenDueToAge

Komentar yang paling membantu

Aturan Keheningan bukanlah bahwa program harus benar-benar diam kecuali ada kesalahan atau keluaran yang diminta secara khusus, tetapi program tidak boleh mengeluarkan keluaran yang tidak perlu. Mengingat umpan balik bahwa proses yang memakan waktu 15 menit tidak macet tidak perlu, pada kenyataannya, itu adalah desain CLI yang bagus.

Sebagai referensi, tidak ada (0) dari manajer paket lain yang saya uji yang diam secara default.

$ 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 memiliki tanda --silent untuk fitur ini)

$ 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

dll.

Saya pikir untuk mengatakan "karena itu Unix" agak tidak jujur. Ini _sangat_ umum untuk program Unix dengan tugas yang berjalan lama untuk memiliki bilah kemajuan - lihat rsync, wget, git, dll.

Apa keuntungan tidak memiliki bilah kemajuan di sini? Sepertinya manfaat "tidak tampak benar-benar rusak" jauh lebih besar daripada manfaat "tidak mengganggu sebagian kecil pengguna yang membenci umpan balik dan juga menolak untuk menggunakan --silent ".

Semua 3 komentar

Itulah cara Unix: diam secara default, kecuali verbositas diminta atau ada kesalahan.

Saya tidak berpikir ini adalah sesuatu yang akan kita ubah. Bahkan lebih banyak orang akan menentang apa yang mereka anggap sebagai spam (-v) secara default.

Aturan Keheningan bukanlah bahwa program harus benar-benar diam kecuali ada kesalahan atau keluaran yang diminta secara khusus, tetapi program tidak boleh mengeluarkan keluaran yang tidak perlu. Mengingat umpan balik bahwa proses yang memakan waktu 15 menit tidak macet tidak perlu, pada kenyataannya, itu adalah desain CLI yang bagus.

Sebagai referensi, tidak ada (0) dari manajer paket lain yang saya uji yang diam secara default.

$ 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 memiliki tanda --silent untuk fitur ini)

$ 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

dll.

Saya pikir untuk mengatakan "karena itu Unix" agak tidak jujur. Ini _sangat_ umum untuk program Unix dengan tugas yang berjalan lama untuk memiliki bilah kemajuan - lihat rsync, wget, git, dll.

Apa keuntungan tidak memiliki bilah kemajuan di sini? Sepertinya manfaat "tidak tampak benar-benar rusak" jauh lebih besar daripada manfaat "tidak mengganggu sebagian kecil pengguna yang membenci umpan balik dan juga menolak untuk menggunakan --silent ".

Meskipun saya tidak berpikir bahwa manajer paket mana pun yang Anda sebutkan adalah contoh yang baik (mereka semua terlalu berisik sepanjang waktu), saya setuju bahwa beberapa indikasi kemajuan untuk go get tidak ada salahnya . GitHub khususnya memiliki rentang kecepatan klon yang agak lambat, dan waktu proses keseluruhan tergantung pada jumlah dependensi, yang tidak jelas atau diketahui pengguna sebelumnya, jadi harus secara aktif memutuskan untuk menggunakan -v bukanlah benar-benar solusi yang bagus.

Sekarang, bilah kemajuan sebenarnya bukan pilihan -- secara default terlalu berisik, dan tidak semua VCS mendukung bilah kemajuan secara default. Mengaktifkan -v secara default juga terlalu berisik.

Sayangnya saya tidak bisa memikirkan mekanisme yang tidak berisik dan pada saat yang sama memberikan informasi yang cukup saat dibutuhkan.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat