Just another Ruby porter,

〜2016年5月下旬〜


<Older(,) | Newer(.)> | Recent(/)>> | RDF

2016-05-21 (Sat)

GNU coreutils dateに空の日付を渡すと今日の0時を意味する

空も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

最後に余計な行が出現する。


2016-05-22 (Sun)

synergyでこんなメッセージが: ERROR: failed to load hook library, synwinhk.dll is missing or invalid

単に32ビット版から64ビット版へアップグレードしたときのゴミなので、
まずアンインストールしフォルダが残ってたらそれも消してから、
64ビット版をインストールすればok。


2016-05-23 (Mon)

jacocoのmissedとcovered

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になる。


2016-05-24 (Tue)

gzipした結果を結合してもgzip -dで全部伸長可能。

どういうことかというとこんな感じ。

% 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される。
だから>で結合されるわけだ。


2016-05-25 (Wed)

CircleCIにfull output log機能がない

CircleCIのログが長くなると全部まとめてダウンロードしてlessで見たくなる。
でもいくら探してもそんな機能はないようで。
まじめに調べてみたら本当になかった。
View or Download Full Output Logs
去年にrequestされてるが、まだ実装されてない。


2016-05-26 (Thu)

dateのそれぞれの値を変数へ代入

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じゃないところがミソ。


2016-05-27 (Fri)

Github APIでtarballのダウンロード

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にしてくれる。


2016-05-28 (Sat)

AWS CloudWatch Logsの保存期間

何も設定しないと失効しないが、たとえば7日間とlog group設定しても、
実際に削除されるのは各イベントだけでlog streamが消されない。
log streamが消されないのでlog groupも消されない。
この仕様が結構やっかい。
log group数には制限があって、普通は500。
deploy毎に新たにlog groupを作るといつか500に到達してしまう。
つまり中身が空のlog streamの削除とか中身が空のlog groupの削除みたいなことは、
自前で用意しないといけない。


2016-05-29 (Sun)

CloudWatch Logsの面倒臭さ

昨日のつづき。
log streamの中身が空かどうかはget-log-eventsしないとわからない。
ってことはdescribe-log-groupsして各々のlog groupに対して
describe-log-streamsして各々のlog streamに対して
get-log-eventsしないといけないわけだ。面倒くせー。


2016-05-30 (Mon)

log streamが空かどうかの判断

get-log-eventsしてevents配列が空かどうかで判断しないとけないのは、
保存期間を過ぎてeventが消されてもlog streamsは残っているからなんだけど、
よく見たらdescribe-log-streamsの結果のstoredBytesが0ならeventは空とみなせるようで、
get-log-eventsする必要はなさげ。


2016-05-31 (Tue)

AWS Account ID

つまり

% aws sts get-caller-identity --query Account --output text

で取れると。今までは

aws iam get-user --query User.Arn | cut -d: -f5

のようにARNから抜き出していたが、cutしなくていいならそっちのほうがよさげ。


<Older(,) | Newer(.)> | Recent(/)>> | RDF


WWW を検索 jarp.does.notwork.org を検索

わたなべひろふみ
Key fingerprint = C456 1350 085F A320 C6C8 8A36 0F15 9B2E EB12 3885
Valid HTML 4.01!