〜2013年11月下旬〜
sonyを指定すると縦が754に強制的にサイズ変更してしまうのでどうにも困った。
--output-profileなしでもなぜか754になってしまうしなあ。
とりあえずsony900とかいうのでごまかしているが、まだ小さい。
サイズ無制限みたいなprofileがあるか調べる。
なんか更新があるよというので1.12.0にアップデートしてみると、タイミングよくT3が現われた。
758x934とプロファイルの説明にはあるね。
それはそれとして、Tabletを選べば画像のリサイズはしないようだ。
ebook-convert的には--output-profile Tabletで。
parallel convertしててちょっと困るのはファイル名の扱い。
in/*.pngをout/*.pngへ変換したいときには、どうしても1度cd inしないと処理しづらくなる。
つまり
% parallel -i convert '{}' 'out/{}' -- in/*.png
とは書けない。{}はin/001.pngという感じなので、
出力はout/in/001.pngのようになってしまう。
というわけでcd inが必要になる。
% cd in; parallel -i convert '{}' '../out/{}' -- *.png
実はconvertはファイル名をいろんな形で参照する方法がある。
% parallel -i convert '{}' -set filename:t %t 'out/%[filename:t].png' -- in/*.png
%tはなんとも都合のいいプロパティで、ほかに%d,%f,%eとかもある。
%d directory component of path %e filename extension or suffix %f filename (including suffix) %t filename without directory or extension (suffix)
-setでfilename:tというkeyに設定するとファイル名を指定するときに、
%[filename:t]で参照できる。
いきなり'out/%t.png'とは書けないようで、一度-setする必要がある。
%tなら拡張子も除かれるのでin/*.jpgでもout側は*.pngにできる。
*.jpg.pngみたいにみっともない名前にしなくていい。
parallel使わなきゃshell scriptにするところだが。
実を言うとno-ipの件は解決しておらず、
毎月あと1週間で切れるぞとのメールがやってきている。
ちゃんとメールを読んでみたらどうもIPアドレスが変わらないと、
Pending Deletionという状態になってしまうらしい。
Why is my host not updating or why is it pending deletion?
これを解決する方法は3つあって
ということで、これはもうIPアドレスを無理矢理変えるしかない。
幸い更新リクエストでIPアドレスを指定しているので2回送ればいいんだろう。
1回目は適当に127.0.0.1で、2回目に本物を。
これでまた23日後の16日あたりのお楽しみということで。
実にすばらしい。22日の夜中にURLが変わったなと思ったらそんな変更まで。
それはそれとしてアメダスのRSSが
tenki RSSからなくなっているんだけど、
これってどうなるんだろう。
一応まだ死んでないのでアクセスはできる。
10分間隔のRSSがあるかと思って見に行ったら、
予想外の結果だった。
CTRL+Cってのも乱暴というかsnapshotを残してくれるかどうかわからないし、
どうしたもんかと思ったら、telnet localhost 5554してkillでいいようだ。
ポート番号はadb devicesで出てくる名前(emulator-5554)でわかる。
ああ、adb -e emu killでいいのか。
何度もawkとsedとtr使うんなら1回awk使うだけで十分でしょう。
% echo 0 1 2 3 5 7 8 23 24 25 50 100 101 102 103 110 | \ awk '{a=$1;for(i=0;b=_$++i;a=b)if(a+1==b)$i=-$i;OFS=",";gsub(/,-([0-9]+,-)*/,"-")}1' 0-3,5,7-8,23-25,50,100-103,110
0も対応したが、負はまあ表記上のわかりにくさもあるしいいよね。
一応説明すると、連続してる部分を負に変換。
% echo 0 1 2 3 5 7 8 23 24 25 50 100 101 102 103 110 | \ awk '{a=$1;for(i=0;b=_$++i;a=b)if(a+1==b)$i=-$i}1' 0 -1 -2 -3 5 7 -8 23 -24 -25 50 100 -101 -102 -103 110
OFS=","で区切りを","に。
% echo 0 1 2 3 5 7 8 23 24 25 50 100 101 102 103 110 | \ awk '{a=$1;for(i=0;b=_$++i;a=b)if(a+1==b)$i=-$i;OFS=","}1' 0,-1,-2,-3,5,7,-8,23,-24,-25,50,100,-101,-102,-103,110
じーっと見ると,-(数字+,-)*を-へ置き換えれば目的の形式になるとわかる。
% echo 0 1 2 3 5 7 8 23 24 25 50 100 101 102 103 110 | \ awk '{a=$1;for(i=0;b=_$++i;a=b)if(a+1==b)$i=-$i;OFS=",";gsub(/,-([0-9]+,-)*/,"-")}1' 0-3,5,7-8,23-25,50,100-103,110
mawkの場合はOFSをいじった後に$1=$1のようにして$0を再構成させる必要がある。
% echo 0 1 2 3 5 7 8 23 24 25 50 100 101 102 103 110 | \ mawk '{a=$1;for(i=0;b=_$++i;a=b)if(a+1==b)$i=-$i;OFS=",";gsub(/,-([0-9]+,-)*/,"-")}1' 0 -1 -2 -3 5 7 -8 23 -24 -25 50 100 -101 -102 -103 110 % echo 0 1 2 3 5 7 8 23 24 25 50 100 101 102 103 110 | \ mawk '{a=$1;for(i=0;b=_$++i;a=b)if(a+1==b)$i=-$i;OFS=",";$1=$1;gsub(/,-([0-9]+,-)*/,"-")}1' 0-3,5,7-8,23-25,50,100-103,110
大元の形式にするなら
% echo 0 1 2 3 5 7 8 23 24 25 50 100 101 102 103 110 | \ awk '{a=$1;for(i=0;b=_$++i;a=b)if(a+1==b)$i=-$i;OFS=", ";$NF=$NF".";gsub(/, -([0-9]+, -)*/,"-")}1' 0-3, 5, 7-8, 23-25, 50, 100-103, 110.
という感じ。こっちならmawkでもokだ。
昨日の連続した数列を作る際に気づいたが、seq -sがおかしい。
% seq -s, 10 1 2,3,4,5,6,7,8,9,10,
1個ずれてるし、変な改行もあるし。 8.21のNEWSを見ると
seq -s no longer prints an erroneous newline after the first number, and outputs a newline after the last number rather than a trailing separator. Also seq no longer ignores a specified step value when the end value is 1. [bugs introduced in coreutils-8.20]
ということで、どうも8.20だけのバグのようで。numfmtもあるし8.21に早く上げてくれー。
Nexus7(2012)はいけたが、Sony Tabletは未対応だそうで。
FCとSFCで最低2回はやってるが、もう20年前ですっかり忘れている。
まあ、ちょうどいい。また楽しめるし。
メモを残さなくても、ここで例のadb shell screencap -pが使えるわけで。
% adb shell "/data/local/tmp/busybox stty nl;screencap -p" | convert - -resize 30% PNG8:000.png
てな感じで。いやー便利になったもんだ。
bashの場合:
% bash -c 'echo "${!#}"' a b c c
zshの場合:
% zsh -c 'echo "${@:$#}"' a b c c
ついでにdashの場合:
% dash -c 'eval echo "\$$((${#@}-1))"' a b c
最初の引数は$0になるので-1しないといけない。
% dash -c 'echo $0' a b c a
まあ、それはbashでもzshでも同じだが。
% bash -c 'echo $0' a b c a % zsh -c 'echo $0' a b c a