Just another Ruby porter,

〜2015年1月上旬〜


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

2015-01-01 (Thu)

大晦日元日素数 #シェル芸

実は20141231も20150101も素数ではない。

% factor 20141231 20150101                 
20141231: 11 1831021
20150101: 43 97 4831

一目ではわからないあたりが巧妙な釣りだ。しかしどっちかは素数かと思ったよ。

じゃあ本当の大晦日元日素数はいつか、ごりごりと今世紀を全部探してみる。

% for i in {2001..2100};do echo ${i}1231 $[i+1]0101 | factor | xargs | awk 'NF==4{print $2, $4}'; done
20201231 20210101
20291231 20300101

意外に少ない。2020年になったら思い出そう。


2015-01-02 (Fri)

文字の長さ順に並べる

例のQ6は

% printf "%s\n" {a,}{b,}{c,}{d,}{e,}
abcde
abcd
abce
abc
abde
abd
abe
ab
acde
acd
ace
ac
ade
ad
ae
a
bcde
bcd
bce
bc
bde
bd
be
b
cde
cd
ce
c
de
d
e

でよかったわけだねえ。この順番はsortしてもこうなるけど、


a
b
c
d
e
ab
...

のように並んで欲しい。つまり文字の長さ順だ。
これはどうするかというと一時的に長さを追加することで可能になる。

% printf "%s\n" {a,}{b,}{c,}{d,}{e,} | awk '{print length,$0}'| sort -n | awk '{print $2}'

a
b
c
d
e
ab
ac
ad
ae
bc
bd
be
cd
ce
de
abc
abd
abe
acd
ace
ade
bcd
bce
bde
cde
abcd
abce
abde
acde
bcde
abcde

Rubyだともっと簡単だ。

% printf "%s\n" {a,}{b,}{c,}{d,}{e,} | ruby -e 'puts $<.sort_by(&:size)'                  

2015-01-03 (Sat)

facebookのアカウントを削除

一度退会したはずのもう一つのアカウントがしぶとく残っていたので、
ぐぐりながら完全削除の儀式。
なぜ一度ヘルプ画面を介さないといけないのか謎だ。

CF: これでアカウント完全削除!「Facebook(フェイスブック)」の退会方法 | nanapi [ナナピ]


2015-01-04 (Sun)

Live Dwango Reader

アドレスバーでrと打つだけで、reader.aol.comと補完されるようになるぐらい使ったが、
やっぱLDRの速さは全然違うなあ。これでAPIがまともなら言うことないんだが。


2015-01-05 (Mon)

最初の木曜日を含む週が、その年の第1週

twitterの障害で気になったんだけど、 ISO 8601によると、
「最初の木曜日を含む週が、その年の第1週」と決まっているらしい。なんで木曜日なのか?
「月曜日が 1、日曜日は 7 である」ってことは週は月曜日から始まる。
つまり1月1日が木曜だと4日が日曜なので新年側が4日分ある。旧年は3日分。
これはやっぱ多いほうが勝ちってことかな。


2015-01-06 (Tue)

urlencodeな話

curlには--data-urlencodeというオプションがあるがこれは当然POSTになる。
GETでも使いたいよなあと思っていたら--getなんて素敵なオプションが!

-G, --get
    When  used, this option will make all data specified with -d, --data,
    --data-binary or --data-urlencode to be used in an HTTP GET request instead of
    the POST request that otherwise would be  used.  The  data will be appended to
    the URL with a '?' separator.

先日の羽田空港の緯度経度のときも面倒なのでurlencodeしなかったけど、
中にはやっぱしないと受け付けてくれないとこもあるしなあ。
ということで

% curl -s 'http://maps.google.com/maps/api/geocode/json?address=羽田空港'

% curl -s 'http://maps.google.com/maps/api/geocode/json' --get --data-urlencode 'address=羽田空港'

とすればいいわけだ。例によって-w '%{url_effective}\n'をつければどんなURLが渡されるのか確認できる。

% curl -s 'http://maps.google.com/maps/api/geocode/json' --get --data-urlencode 'address=羽田空港' \
  -w '%{url_effective}\n' -o /dev/null
http://maps.google.com/maps/api/geocode/json?address=%E7%BE%BD%E7%94%B0%E7%A9%BA%E6%B8%AF

2015-01-07 (Wed)

curlで実際にアクセスしないでurlencode

昨日のcurlの例でアクセスせずにurlencodeした結果だけ得たい場合はどうするか?
思い付くのは実在しないURLを指定すればよさげだが、空でもいいのかやってみるとなんといけた。

% curl -s '' --get --data-urlencode 'address=羽田空港' -w '%{url_effective}\n'
/?address=%E7%BE%BD%E7%94%B0%E7%A9%BA%E6%B8%AF
zsh: exit 3     curl -s '' --get --data-urlencode 'address=羽田空港' -w

ただ終了ステータスが3(URL malformed. The syntax was not correct.)になるようなので注意。

/?が不要ならcut -c3-とかtail -c+3とかsed s/..//で。


2015-01-08 (Thu)

urlencodeコマンド

gridsite-clientsというパッケージをインストールすると
urlencodeというコマンドが使えるようになるが、
日本語には対応してないらしく全部%FFになってしまう。残念。

% urlencode 羽田空港
%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF

速攻でpurgeした。


2015-01-09 (Fri)

スムーススクロール

Inoreaderを再読み込みしたらスムーススクロールするようになっていた。
なぜかそっちがデフォルトになるケースが多いってことは、
そっちを好む人が多いんだろうなあ。

速攻で設定を見直した。


2015-01-10 (Sat)

bashでjoin

配列を文字列内で展開すると空白で区切られる。

% bash -c 'a=(h o g e);echo "${a[*]}"' 
h o g e

これはIFSの先頭が使われる。
ということはechoする前にIFSを書き換えれば好きな文字でjoinできる。

% bash -c 'a=(h o g e);(IFS=,; echo "${a[*]}")'
h,o,g,e

ただこれは1文字だけなので文字列ではできない。

zshの場合は専用のjというフラグがあるので文字列もok。

% zsh -c 'a=(h o g e);echo ${(j:-/-:)a}'      
h-/-o-/-g-/-e

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