〜2015年1月上旬〜
実は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年になったら思い出そう。
例の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)'
一度退会したはずのもう一つのアカウントがしぶとく残っていたので、
ぐぐりながら完全削除の儀式。
なぜ一度ヘルプ画面を介さないといけないのか謎だ。
アドレスバーでrと打つだけで、reader.aol.comと補完されるようになるぐらい使ったが、
やっぱLDRの速さは全然違うなあ。これでAPIがまともなら言うことないんだが。
twitterの障害で気になったんだけど、
ISO 8601によると、
「最初の木曜日を含む週が、その年の第1週」と決まっているらしい。なんで木曜日なのか?
「月曜日が 1、日曜日は 7 である」ってことは週は月曜日から始まる。
つまり1月1日が木曜だと4日が日曜なので新年側が4日分ある。旧年は3日分。
これはやっぱ多いほうが勝ちってことかな。
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
昨日の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/..//で。
gridsite-clientsというパッケージをインストールすると
urlencodeというコマンドが使えるようになるが、
日本語には対応してないらしく全部%FFになってしまう。残念。
% urlencode 羽田空港 %FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF
速攻でpurgeした。
Inoreaderを再読み込みしたらスムーススクロールするようになっていた。
なぜかそっちがデフォルトになるケースが多いってことは、
そっちを好む人が多いんだろうなあ。
速攻で設定を見直した。
配列を文字列内で展開すると空白で区切られる。
% 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