colaboratory用のプログレスバー
夏頃から話題に上がってる colaboratory を数週間いじってた。
Python には詳しく無いので、コピペしたり書き換えたりしながらいじってたけど。
colaboratory のイケてない点として、プログレスバーやログが延々と溜まっていく点が挙げられる。
原因を調査を調査してみると、どうやらエスケープシーケンスが無視されてるのが原因のようだ。
sys.stdout.write('\r') # work sys.stdout.write('\033[J') # not work
キャリッジリターンは効くので、1行だけは消せる。 (※正確には、1行だけ上書きできる)
けど、ログやプログレスバーなど、複数行を消すのは、どうやら無理そうだった。
良い手立ては無いか探してたら、いいものを見つけた。
GitHub - fastai/fastprogress: Simple and flexible progress bar for Jupyter Notebook and console
使い方のサンプルが少ないのが玉に瑕だったけど、colab でも使えることを確認した。
これを chainer の extension として使えるように実装してみた。 (見よう見まね)
Progressbar & loss image & sample image extension for chainer · GitHub
※内部的には IPython.display
を更新してるので、それを使えば更新表示はできるのかもしれない・・・
注意点
現在わかってる問題として、損失グラフが extensions.PlotReport
と違う結果を返すということが挙げられる。
ブログを書いてるときに分かったので、あとで直してみる。
[追記] 修正しました。
並列処理の本を読み終わったので、並列処理を作りました
zipをいじれるコマンドを作りました
もう2週間前になりますが。
zipをいじれるコマンド ziped
を作りました。
簡単な使い方
# ファイルの中身表示 ziped ls hoge.zip # 該当するファイルを削除 ziped rm hoge.zip --filter="hoge.cpp" --overwrite # ファイルの名前を変更 ziped rename hoge.zip --from=".cpp" --to=".c++" --overwrite # ファイルの中身を変更 ziped convert hoge.zip --cmd="optimizer.exe" --filter="*.cpp"
自分の環境でいろいろ試したところ、処理がめっちゃ遅い・・・
最適化とか並列化を模索中。
Proxyでつらい人のためのメモ書き
某社では、通信を 監視 管理するために、Proxyを通さないとインターネットに接続できないようになっている。
そんな、可哀想な人を救うために、知ってる範囲の設定を書き出してみた。
参考文献
Qiita を見ると、つらい思いをして乗り越えてる人が沢山見つかる。
本当に、いつも助かっております。
https://qiita.com/tags/proxy
おまけ: Proxy に NTP を殺されてしまった人の設定
Windows
PowerShellを使って、http経由で時間を取得&設定することができる。
HTTP経由でのNTP時刻合わせ(PowerShell利用)
Linux
htpdate
を使って、http経由で時間を取得&設定することができる。
Introduction | HTTP Time Protocol