Just another Ruby porter,

〜2016年3月中旬〜


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

2016-03-11 (Fri)

ズンドコキヨシ #シェル芸

bashで書いたズンドコキヨシなんだけど、

% bash -c 'a=(ズン ドコ); until [[ $s =~ (ズン ){4}ドコ ]]; do s+="${a[RANDOM%2]} "; done; echo $sキ・ヨ・シ!'

これってzshでは動かない。理由は2つあって、1つは配列は0からじゃなく1から数えること。
もう1つは$sキ・ヨ・シが1つ識別子になってしまうこと。
後者は${s}にすればどっちでもokだが、前者は1個ずれるだけに面倒。
bashでもzshでも動くようにするにはどうすればいいのか。
ZSH_VERSIONを見てsetopt KSH_ARRAYSなんてことするんじゃ無粋だし。
と思ったがだったらもう1個追加しておけばいいのか。

% bash -c 'a=(ズン ドコ ズン); until [[ $s =~ (ズン ){4}ドコ ]]; do s+="${a[RANDOM%2+1]} "; done; echo ${s}キ・ヨ・シ!'
ズン ズン ドコ ズン ズン ズン ズン ズン ズン ズン ズン ドコ キ・ヨ・シ!
% zsh -c 'a=(ズン ドコ ズン); until [[ $s =~ (ズン ){4}ドコ ]]; do s+="${a[RANDOM%2+1]} "; done; echo ${s}キ・ヨ・シ!' 
ドコ ドコ ドコ ズン ズン ドコ ズン ドコ ズン ズン ズン ズン ズン ズン ズン ズン ドコ キ・ヨ・シ!

他に方法はないかとman shufしてたらまさにぴったりの機能が。
-rで無限に生成できる。-nで個数も指定できる。

% shuf -n10 -re ズン ドコ
ズン
ドコ
ズン
ドコ
ドコ
ズン
ドコ
ズン
ズン
ズン

ここまでできれば後はsedで判断するだけ。

% shuf -re ズン ドコ | sed -r '1h;1!H;g;y/\n/ /;/(ズン ){4}ドコ/{s//& キ・ヨ・シ!/;q};d'
ドコ ズン ドコ ドコ ズン ドコ ズン ズン ズン ズン ドコ キ・ヨ・シ!

Hだと追加なので先頭に改行が入ってしまう。そのため1行目だけhにしている。
ここをもうちょっとなんとかできれば。


2016-03-12 (Sat)

IFTTTからDiigoのchannelが消える

3/23で終了らしい。メールが来てた。他にもいろいろと。

On March 23rd, the following Channels and their Recipes will be removed from IFTTT: App.net, BuzzFeed, Campfire, Diigo, Etsy, ffffound, Last.fm, Readability, Yahoo Fantasy Sports, and Yammer.

PocketでアーカイブしたタイミングでDiigoに入れてたが、まあ、なくてもいいか。
なんか文字化けだらけでどうしようかと思ってたし。


2016-03-13 (Sun)

GNU sedの変な挙動

bやtでLABELを省略すると次にサイクルに飛ぶのはman sedやinfo sedにも書いてあるので、
GNU sedの仕様であることは間違いない。

`b LABEL'
     Unconditionally branch to LABEL.  The LABEL may be omitted, in
     which case the next cycle is started.

`t LABEL'
     Branch to LABEL only if there has been a successful `s'ubstitution
     since the last input line was read or conditional branch was taken.
     The LABEL may be omitted, in which case the next cycle is started.

aというラベル名だと当然ながらtはそこには飛ばない。

% echo | sed ':a;s/^.\{,3\}$/&foo/;t'
foo

でも名前を省略したラベルを設定するとなぜかそこに飛ぶ。

% echo | sed ':;s/^.\{,3\}$/&foo/;t' 
foofoo

2回通っている。

まあ、バグかもしれないが便利なので anagolではこれが多用されている。


2016-03-14 (Mon)

dockerでCtrl-Pを2回押さなくてもいいようにする

Docker 1.10以上なら~/.docker/config.jsonに

"detachKeys": "ctrl-_,_"

を追加すれば、Ctrl-Pを2回押さなくてもいいようになる。
Detachはしないので適当に使わなそうなキーを割り当てた。


2016-03-15 (Tue)

docker imagesFormat

psFormatはあったが、imagesFormatがなくて困っていたら、いつのまにか対応していた。
ECRのリポジトリが長くて見辛いのなんのって。
というわけでこんなのを~/.docker/config.jsonに追加した。

"imagesFormat": "table {{printf \"%.20s\" .Repository}}\t{{.Tag}}\t{{.ID}}\t{{printf \"%.19s\" .CreatedAt}}\t{{.Size}}"

2016-03-16 (Wed)

マガポケ

3週間遅れにはなるが無料でマガジンが読める。もうこれで十分だ。
はじめの一歩と七つの大罪が読めないが、
まあこの2つは元々あまり読んでなかったので問題ない。


2016-03-17 (Thu)

AWS ECRのゴミイメージ

ECRで同じタグ名でpushすると古いイメージはタグなしで残る。
これ最初気づかずにどんどん作ってたら100個ぐらいたまってた。
まあ見分けるのは簡単なので手動でもなんとかなったというか、
最初は削除ボタンがなかったのでどうにもならなかった記憶が。


2016-03-18 (Fri)

AWS ECRのゴミイメージを消す

というわけでawscliで消す。

% aws --region us-east-1 ecr list-images --repository-name repository | \
  jq -r '.imageIds[]|select(.imageTag|not).imageDigest' | \
  sed 's/^/imageDigest=/' | \
  xargs -r aws --region us-east-1 ecr batch-delete-image --repository-name repository --image-ids

imageTagがついてないものを抜き出してbatch-delete-imageが受け付ける形式に変換する。
実はこのままじゃ不完全。
100個ぐらいまでならこれでいいが、list-imagesは最大100個までしか返さないので、
paginationしないといけない。


2016-03-19 (Sat)

Project Eulerを解くのが止まったわけ

実はProblem 37がまだ解けてないというすごい単純な理由だったりする。
長くなったわりに終わないという情けない状態が続いて放置している。


2016-03-20 (Sun)

jqだけでなんとかする

先日のECRの不要なイメージを削除するシェル芸はsedが出てきてあれだが、

  jq -r '.imageIds[]|select(.imageTag|not).imageDigest' | \
  sed 's/^/imageDigest=/' | \

  jq -r '"imageDigest="+(.imageIds[]|select(.imageTag|not).imageDigest)'

とすればいいのであった。()が必要なんだな。


<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!