Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

clone してきた library-checker-problems と .verify-helper/cache の削除機能が欲しい #394

Open
ageprocpp opened this issue Aug 30, 2021 · 3 comments

Comments

@ageprocpp
Copy link

Description / 説明

.verify-helper/cache と、library-checker-problems を clone してきたところ(手元の MacBook だと ~/Library/Caches/online-judge-tools/ )の中身が重いので、消す機能が欲しいです

Motivation / 動機

手元の MacBook のストレージ容量がかなりかつかつなんですが、諸々をアップデートしたい時などにストレージが空いていないと、手動で rm して空けてあげなければならなくて面倒です
.verify-helper/cache は見つけやすいのでまだいいんですが、キャッシュが数 GB 圧迫されているのは分かりにくかったので、消す機能が実装されていると嬉しさがあります

Other notes / その他

後者は oj 本体に投げるべきだったかもしれませんが、コードをさらっと見てもどっちに投げるべきか判別できなかったのでまとめてこっちに投げました。

@kmyk
Copy link
Member

kmyk commented Aug 30, 2021

$ oj-verify delete-cache のようなコマンドがほしいということであってますか? ストレージがかつかつだとしんどいのは分かるのですが、できればそのような機能の追加は避けたさがあります。
理由: 使う人の人数も使われる頻度も少なそうなため。「.verify-helper/cache と ~/Library/Caches/online-judge-tools/ は消してしまっても大丈夫です」とドキュメントに書いておけば十分そう。コマンドにすると実装だけでなくテストを書いたり互換性を気にしたりしないとだめ

  • disk full になったときの例外を catch して「HINT: こことここを消せ」って表示するくらいならありだと思います (実際に disk full でないと動作検証できないので私は実装できないけど)
  • 手動でコマンドを叩くのでなくて自動でいい感じにキャッシュを消すという選択肢もありますが、環境依存の闇が待っていそうなのでやりたくないです

@ageprocpp
Copy link
Author

コマンドにしたくないのは了解しました。

clone 先のリポジトリは utils.user_cache_dir で取れるみたい(参考 : https://github.com/online-judge-tools/api-client/blob/master/onlinejudge/service/library_checker.py )なので、ここから直接 rm のコマンドを叩けば消すこと自体はできそうだと思ったんですが、需要を考えたらドキュメントに書くだけで十分そうですね

@kmyk
Copy link
Member

kmyk commented Sep 14, 2021

気付いたんですけど、.verify-helper/cache の中身を圧縮して保存しておけばいい気がします。Pyhton の zlib とかを使ってやればできるし、これなら環境依存の問題もないしいけると思う。キャッシュのファイルのフォーマットを変更することになるので互換性の問題があるけど、それさえ気を付ければちゃんと動くはず。

@ageprocpp もしまだ苦しんでいて圧縮の方針に興味があるならプルリク挑戦してみてほしい

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants