Just another Ruby porter,

〜2013年11月下旬〜


<Prev(,) | Next(.)> | Recent(/)>> | RDF

2013-11-21 (Thu)

ebook-convertの--output-profileに困る

sonyを指定すると縦が754に強制的にサイズ変更してしまうのでどうにも困った。
--output-profileなしでもなぜか754になってしまうしなあ。
とりあえずsony900とかいうのでごまかしているが、まだ小さい。
サイズ無制限みたいなprofileがあるか調べる。


2013-11-22 (Fri)

Calibreの出力プロファイルにタイミングよくT3用が

なんか更新があるよというので1.12.0にアップデートしてみると、タイミングよくT3が現われた。
758x934とプロファイルの説明にはあるね。
それはそれとして、Tabletを選べば画像のリサイズはしないようだ。
ebook-convert的には--output-profile Tabletで。


2013-11-23 (Sat)

ImageMagick convertのファイル名の扱い

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にするところだが。

参考: ImageMagick: Format and Print Image Properties


2013-11-24 (Sun)

no-ipから例のメールがやってきた

実を言うと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日あたりのお楽しみということで。


2013-11-25 (Mon)

tenki jpのアメダス気温の計測値が10分単位に

実にすばらしい。22日の夜中にURLが変わったなと思ったらそんな変更まで。
それはそれとしてアメダスのRSSが tenki RSSからなくなっているんだけど、
これってどうなるんだろう。
一応まだ死んでないのでアクセスはできる。
10分間隔のRSSがあるかと思って見に行ったら、
予想外の結果だった。


2013-11-26 (Tue)

Headlessで立ち上げたAndroid emulatorを終了させる

CTRL+Cってのも乱暴というかsnapshotを残してくれるかどうかわからないし、
どうしたもんかと思ったら、telnet localhost 5554してkillでいいようだ。
ポート番号はadb devicesで出てくる名前(emulator-5554)でわかる。 ああ、adb -e emu killでいいのか。


2013-11-27 (Wed)

awkで連続した数列を範囲形式に

何度も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だ。


2013-11-28 (Thu)

GNU coreutils 8.20のseq -sがバグってる

昨日の連続した数列を作る際に気づいたが、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に早く上げてくれー。


2013-11-29 (Fri)

DQ

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

てな感じで。いやー便利になったもんだ。


2013-11-30 (Sat)

最後の引数

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

<Prev(,) | Next(.)> | Recent(/)>> | RDF


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

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