Just another Ruby porter,

〜2014年11月下旬〜


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

2014-11-21 (Fri)

短縮URLの展開2

以前のバージョンではcurlとgrepとtailを使っていたが、

% curl -sLI t.co/mRJEGu6T | grep Location: | tail -1
Location: http://support.microsoft.com/kb/2564553

curlだけでいけるとわかった。

% curl -sLI t.co/mRJEGu6T -w '%{url_effective}\n' -o /dev/null
http://support.microsoft.com/kb/2564553

こっちのほうが長いが。


2014-11-22 (Sat)

jqゴルフには-sが必須

いろいろjqゴルフに挑戦したけど、入力がある場合は-sがないと無理っぽい。

% seq 10|jq -R -r -c 'split("\n")'
["1"]
["2"]
["3"]
["4"]
["5"]
["6"]
["7"]
["8"]
["9"]
["10"]
% seq 10|jq -R -r -s -c 'split("\n")'
["1","2","3","4","5","6","7","8","9","10"]

この違い。というわけで-sもつけてください。

http://shinh.skr.jp/m/?date=20141120#p02


2014-11-23 (Sun)

jqで日ごとの最低気温

jqでできるのかとやってみるとできた。

% jq -s -R -r 'split("\n")|map(split(" "))|group_by(.[0])|.[]|min_by(.[2]|tonumber)|join(" ")' saitamashi-201411.log
2014-11-01 21:10 14.5
2014-11-02 06:40 13.1
2014-11-03 23:50 10.0
2014-11-04 06:20 8.2
2014-11-05 04:10 8.6
2014-11-06 07:10 13.1
2014-11-07 21:10 13.2
2014-11-08 04:30 9.0
2014-11-09 10:20 12.2
2014-11-10 23:40 10.2
2014-11-11 01:50 10.1
2014-11-12 22:40 9.6
2014-11-13 23:10 6.6
2014-11-14 04:40 2.7
2014-11-15 06:00 2.4
2014-11-16 05:50 5.5
2014-11-17 06:40 3.8
2014-11-18 01:30 5.6
2014-11-19 24:00 4.3
2014-11-20 03:20 2.4
% sort -k1,1 -k3,3n saitamashi-201411.log | awk '!a[$1]++'
2014-11-01 21:10 14.5
2014-11-02 06:40 13.1
2014-11-03 23:50 10.0
2014-11-04 06:20 8.2
2014-11-05 04:10 8.6
2014-11-06 07:10 13.1
2014-11-07 21:10 13.2
2014-11-08 04:30 9.0
2014-11-09 10:20 12.2
2014-11-10 23:40 10.2
2014-11-11 01:50 10.1
2014-11-12 22:40 9.6
2014-11-13 23:10 6.6
2014-11-14 04:40 2.7
2014-11-15 06:00 2.4
2014-11-16 05:50 5.5
2014-11-17 06:40 3.8
2014-11-18 01:30 5.6
2014-11-19 24:00 4.3
2014-11-20 03:20 2.4

ちゃんと同じになった。

jqでやってることをrubyで表現するとこんな感じだ。

% ruby -e 'puts $<.map(&:split).group_by{|x|x[0]}.map{|x|x[1].min_by{|y|y[2].to_f}*" "}' saitamashi-201411.log  
2014-11-01 21:10 14.5
2014-11-02 06:40 13.1
2014-11-03 23:50 10.0
2014-11-04 06:20 8.2
2014-11-05 04:10 8.6
2014-11-06 07:10 13.1
2014-11-07 21:10 13.2
2014-11-08 04:30 9.0
2014-11-09 10:20 12.2
2014-11-10 23:40 10.2
2014-11-11 01:50 10.1
2014-11-12 22:40 9.6
2014-11-13 23:10 6.6
2014-11-14 04:40 2.7
2014-11-15 06:00 2.4
2014-11-16 05:50 5.5
2014-11-17 06:40 3.8
2014-11-18 01:30 5.6
2014-11-19 24:00 4.3
2014-11-20 03:20 2.4


2014-11-24 (Mon)

シートまな板に穴があく

100円ショップで買ったものなんで期待してなかったが、
カッターナイフで雑誌を分割してたら妙な感触がしてすぱっと切れていた。
よく見てみるといろんなところが穴だらけだった。
やっぱシートまな板じゃちょっと強度的にまずいようで。
A4の工作マットは結構強いがA4の雑誌を分割するときはもう少し大きくないとなあ。
まな板が丁度いい大きさだったんだが。今度は厚めのを買うか。


2014-11-25 (Tue)

LDRのフィルター

APIを使って外部から操作するのがいいんじゃないかとLDR APIについて調べていたら、
公式のドキュメントが存在しないことが判明。
ソースを見て有志の方がまとめているようで。

それはそれとして個々の記事を既読にする方法がなかった。
そういえばLDRはWebのUIもフィードごとに既読だもんなあ。


2014-11-26 (Wed)

Inoreaderのfeed date

いつのまにかリストビューでfeed dateが表示されなくなった。
設定をいじくりまくったら、カラムビューのときだけ表示されることがわかった。
これだと縦に分割されるからせせこましいんだよなあ。feed dateの設定は見つからない。


2014-11-27 (Thu)

uim-skkでヴを入力したい

なぜかVu<SPC>だと「ウ゛」になってしまう。
年に1度ぐらいしか困らないが、入力したいときはいちいちvuでぐぐってコピペしてたり。
直接~/.skk-uim-jisyoに書けばいいのか。
~/.uimは効いてるんだか効いてないんだかよくわからない。


2014-11-28 (Fri)

jqのslurpモード

jqにはslurpモードというのがある。

--slurp/-s:

Instead of running the filter for each JSON object in the input, read the
entire input stream into a large array and run the filter just once.

これが結構強力で、たとえばこんなよくある合計をもとめる計算も簡単にできてしまう。

% seq 10 | awk '{sum+=$0}END{print sum}'
55
% seq 10 | jq -c .   
1
2
3
4
5
6
7
8
9
10
% seq 10 | jq -s -c .
[1,2,3,4,5,6,7,8,9,10]
% seq 10 | jq -s add
55

--raw-input(-R)と組み合わせると、全入力を1つの文字列として扱う。
あとはもうなんでもありなのでどんな入力でも扱えることになる。
つまりcodegolf用の言語としても結構優秀なのである。

% seq -f 'foo %g' 10
foo 1
foo 2
foo 3
foo 4
foo 5
foo 6
foo 7
foo 8
foo 9
foo 10
% seq -f 'foo %g' 10 | jq -s -R -c .
"foo 1\nfoo 2\nfoo 3\nfoo 4\nfoo 5\nfoo 6\nfoo 7\nfoo 8\nfoo 9\nfoo 10\n"

2014-11-29 (Sat)

有限と微小のパン

講談社ノベルズ版のP84の件を確かめてみる。
A,E,H,R,T。この文字でできるすべての文字列は?

% goruby -e 'puts "AEHRT".pe.len'         
120

地球は何番目?

% goruby -e 'puts "AEHRT".pe.ind("EARTH")+1'
28

55番目は?

% goruby -e 'puts "AEHRT".pe[55-1]'
HEART

2014-11-30 (Sun)

jqで慣れないこと

基本的にstartは含まれるが、endは含まれない。
だからrange(0:10)と書いたら0から9までを意味する。
.[0:10]も同じ。

The .[10:15] syntax can be used to return a subarray of an array or substring
of a string. The array returned by .[10:15] will be of length 5, containing the
elements from index 10 (inclusive) to index 15 (exclusive). Either index may be
negative (in which case it counts backwards from the end of the array), or
omitted (in which case it refers to the start or end of the array).

つまり[1,2,3,4][0:-1]と書くと-1は含まれないので[1,2,3]になる。
じゃあ4まで含めたいときはどうするかというと[1,2,3,4][0:]のよう省略する。
そこに負の値で変数を使って連続的に扱うときにすごく困る。


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