〜2016年5月下旬〜
空も0も同じのようで。
% date -d '' Sat May 21 00:00:00 JST 2016 % date -d 0 Sat May 21 00:00:00 JST 2016
問題になるのは-f-で空行を送っちゃった場合。
% echo {2001..2016}-{01..12}-13$'\n' | date -f- +'%F %a' | tail 2016-04-13 Wed 2016-05-13 Fri 2016-06-13 Mon 2016-07-13 Wed 2016-08-13 Sat 2016-09-13 Tue 2016-10-13 Thu 2016-11-13 Sun 2016-12-13 Tue 2016-05-21 Sat
最後に余計な行が出現する。
単に32ビット版から64ビット版へアップグレードしたときのゴミなので、
まずアンインストールしフォルダが残ってたらそれも消してから、
64ビット版をインストールすればok。
jacocoのmissedとcoveredはxmllintを使うと下のような感じで、値を取り出せる。
% xmllint --xpath "number(//report/counter[@type='INSTRUCTION']/@covered)" jacoco.xml % xmllint --xpath "number(//report/counter[@type='INSTRUCTION']/@missed)" jacoco.xml % xmllint --xpath "number(//report/counter[@type='BRANCH']/@covered)" jacoco.xml % xmllint --xpath "number(//report/counter[@type='BRANCH']/@missed)" jacoco.xml
後はINSTRUCTIONのほうがC0になりBRANCHのほうがC1になる。
どういうことかというとこんな感じ。
% seq 10000>10000 % mkdir tmp % cd tmp % split ../10000 % ls xaa xab xac xad xae xaf xag xah xai xaj % ls -l total 76 -rw-r--r-- 1 eban eban 3893 2016-05-24 14:20:36 xaa -rw-r--r-- 1 eban eban 5000 2016-05-24 14:20:36 xab -rw-r--r-- 1 eban eban 5000 2016-05-24 14:20:36 xac -rw-r--r-- 1 eban eban 5000 2016-05-24 14:20:36 xad -rw-r--r-- 1 eban eban 5000 2016-05-24 14:20:36 xae -rw-r--r-- 1 eban eban 5000 2016-05-24 14:20:36 xaf -rw-r--r-- 1 eban eban 5000 2016-05-24 14:20:36 xag -rw-r--r-- 1 eban eban 5000 2016-05-24 14:20:36 xah -rw-r--r-- 1 eban eban 5000 2016-05-24 14:20:36 xai -rw-r--r-- 1 eban eban 5001 2016-05-24 14:20:36 xaj % gzip * % ls -l total 40 -rw-r--r-- 1 eban eban 1852 2016-05-24 14:20:36 xaa.gz -rw-r--r-- 1 eban eban 1690 2016-05-24 14:20:36 xab.gz -rw-r--r-- 1 eban eban 1690 2016-05-24 14:20:36 xac.gz -rw-r--r-- 1 eban eban 1690 2016-05-24 14:20:36 xad.gz -rw-r--r-- 1 eban eban 1690 2016-05-24 14:20:36 xae.gz -rw-r--r-- 1 eban eban 1690 2016-05-24 14:20:36 xaf.gz -rw-r--r-- 1 eban eban 1691 2016-05-24 14:20:36 xag.gz -rw-r--r-- 1 eban eban 1690 2016-05-24 14:20:36 xah.gz -rw-r--r-- 1 eban eban 1686 2016-05-24 14:20:36 xai.gz -rw-r--r-- 1 eban eban 1689 2016-05-24 14:20:36 xaj.gz % cat *.gz > ../all.gz % cd .. % zcat all.gz >10000-ungziped % ls -l 10000* -rw-r--r-- 1 eban eban 48894 2016-05-24 14:20:22 10000 -rw-r--r-- 1 eban eban 48894 2016-05-24 14:21:50 10000-ungziped % cmp 10000*
何がうれしいかというとgzip *のところでparallel gzipすれば並列実行できる。
しかもparallelにはsplit機能もあるのでman parallelにあるような例が可能。
% cat bigfile | parallel --pipe --recend '' -k gzip -9 > bigfile.gz
何げなくgzipが出てくるがこれは上と同じように別々に分割されて各々がgzipされる。
だから>で結合されるわけだ。
CircleCIのログが長くなると全部まとめてダウンロードしてlessで見たくなる。
でもいくら探してもそんな機能はないようで。
まじめに調べてみたら本当になかった。
View or Download Full Output Logs
去年にrequestされてるが、まだ実装されてない。
twitterで見かけた方法。
$ read s Y m d H M S ms ns <<< "$(date +'%s %Y %m %d %H %M %S %3N %9N')"
なるほどと思ったが、そういえば
$ read s Y m d H M S ms ns < <(date +'%s %Y %m %d %H %M %S %3N %9N')
としていたのであった。どちらもpipeじゃないところがミソ。
Browserを使えば簡単だが、Github APIがあるようで、curlでダウンロード可能。
あらかじめtokenを取得しておく。
% curl -L -H "Authorization: token xxxx" https://api.github.com/repos/user/repository-name/tarball/branch -o user-repository-name-branch.tar.gz
tarballをzipballにすればzipにしてくれる。
何も設定しないと失効しないが、たとえば7日間とlog group設定しても、
実際に削除されるのは各イベントだけでlog streamが消されない。
log streamが消されないのでlog groupも消されない。
この仕様が結構やっかい。
log group数には制限があって、普通は500。
deploy毎に新たにlog groupを作るといつか500に到達してしまう。
つまり中身が空のlog streamの削除とか中身が空のlog groupの削除みたいなことは、
自前で用意しないといけない。
昨日のつづき。
log streamの中身が空かどうかはget-log-eventsしないとわからない。
ってことはdescribe-log-groupsして各々のlog groupに対して
describe-log-streamsして各々のlog streamに対して
get-log-eventsしないといけないわけだ。面倒くせー。
get-log-eventsしてevents配列が空かどうかで判断しないとけないのは、
保存期間を過ぎてeventが消されてもlog streamsは残っているからなんだけど、
よく見たらdescribe-log-streamsの結果のstoredBytesが0ならeventは空とみなせるようで、
get-log-eventsする必要はなさげ。
つまり
% aws sts get-caller-identity --query Account --output text
で取れると。今までは
aws iam get-user --query User.Arn | cut -d: -f5
のようにARNから抜き出していたが、cutしなくていいならそっちのほうがよさげ。