Haskell の話題だけでは間が持たないので,Ruby(やその他)についても書くことにします。
だって,ほら,べつに Haskell グループじゃないし。
takatoh's blog – Learning programming languages.
Haskell の話題だけでは間が持たないので,Ruby(やその他)についても書くことにします。
だって,ほら,べつに Haskell グループじゃないし。
cf. Ruby/ProgressBar: プログレスバーをテキストで表示する Ruby用のライブラリ
via 趣味的にっき – プログレスバーをテキストで表示する関数
インストールは progressbar.rb をライブラリパスの通ったところにおけばいいだけ。
ProgressBar のインスタンスをつくっておいて ProgressBar#inc か ProgressBar#set で進捗を表示する。
まずは記事にある使用例で試してみよう。
D:\>irb -rprogressbar irb(main):001:0> pbar = ProgressBar.new("title", 100) => #<ProgressBar:0/100> | ETA: --:--:-- irb(main):002:0> (1..100).each{|i| sleep(0.1); pbar.set(i)}; pbar.finish title: 100% |oooooooooooooooooooooooooooooooooooooooooo| Time: 00:00:35 => Thu Dec 21 21:29:46 +0000 2006
ProgressBar#file_transfer_mode を使うと,ファイルの転送バイト数と転送速度を表示できる。
こんな感じ。
require 'progressbar' fname1 = ARGV.shift fname2 = ARGV.shift f1 = File.open(fname1, "rb") f2 = File.open(fname2, "wb") size = File.size(fname1) pbar = ProgressBarnew("transfer file", size) pbar.file_transfer_mode until f1.eof? f2.write(f1.read(1000)) pbar.inc(1000) end pbar.finish f1.close f2.close
ファイルのコピーを低レベルでやらなきゃいけないけど。
実行例。
D:\>copy_pbar.rb projects.xls copy_projects.xls transfer file: 100% |oooooooooooooooooooooooo| 5.0MB 35.5MB/s Time: 00:00:00