現状このブログは、ipynbファイルをgithub APIで上げるとCIが走る事で生成されてる。

だがこのgithub APIは通常のgitのプロトコルに比べると制限がきつく、ファイルは1Mbが上限となっている。

これまでは1Mbになったらノートを分割してたのだが、図が多いと意外と短くても1Mbくらい行ってしまう。

あまり大きなファイルは取り回しが悪いのでだいたい同じくらいのオーダーで分割するのはやぶさかでは無いが、1Mbはちょっと小さい。 感覚的には3Mbくらい欲しい。

という事で、1Mbを超える時はファイルを分割してプッシュし、CIではこれまでのスクリプトを走らせる前にcatする事にした。 これでCI側はシェルスクリプトとtravis.yml書き換えるだけで対応出来た。

pushする側は以前kotlin+Fuel+RxJavaで書き捨てたアプリを使ってるが、いい機会なのでasync-awaitに直した。 こういうシーケンシャルな物書くには良いね。

リクエストもファイルごとに並列に走らせられるのでasync でラップしてawaitAllに直すだけで簡単に並列化出来たし、それでgithubに怒られたからリクエストをdelay挟んで5sec おきにしたりとかも割と簡単に出来た。

ついでにUIスレッドでは重めだったjsonのシリアライズもDispatchers.IO側に押し込めて、手抜きの書き捨てアプリの割には快適になった。 kotlinでこの辺書くのは快適でいいねぇ。

という訳で最初は面倒と思ったが大分手抜きで1Mbリミット対応が出来た。よしよし。省エネでいいぞ。