〜2014年1月下旬〜
またダブる件が発生したので
HTMLから取ってくるようにしてみた。
Regexを間に挟んでそこでdayというelementを作りtd.0を入れて"日"を消す。
これで後段のRegexで${day}で参照できる。
最近はsvn switchじゃなくてsvn relocateらしい。
% cd /tmp % svn co http://svn.ruby-lang.org/repos/ruby/trunk/cygwin A cygwin/GNUmakefile.in リビジョン 44681 をチェックアウトしました。 % cd cygwin % svn info | grep URL: URL: http://svn.ruby-lang.org/repos/ruby/trunk/cygwin % svn relocate svn+ssh://svn@svn.ruby-lang.org/ruby/trunk/cygwin % svn info | grep URL: URL: svn+ssh://svn@svn.ruby-lang.org/ruby/trunk/cygwin
元がなにかは気にする必要はなく、新repositoryを指定すればいい。
これって対応するカッコとか考える必要はなく空白以外が出てきたら切り替えればいい。
#!ruby -p gsub(/\S *\S/){$&.tr' ','*'}
ここで2個目の\Sは.で代用可能。
今まではPS3の電源を切るときは律儀にtorneを終了させていたが、
これって一旦XMBに戻ってくるのを待たないといけない。
結構時間がかかる。
3年も経って気づくのも遅いが、torneを終了させるときのXMBで電源を切ればよかったんだな。
消去のときに電源切るなというメッセージの意味を初めて理解した。
コンセントから抜くなと思っていた。
引数のファイルの前での代入ならファイルを読む前に変数を設定できるが、
これって実はBEGINの後なのでBEGINでその変数を使いたいときに困る。
そういう場合は-vオプションを使う。
% awk 'BEGIN{print foo}' foo=1 % awk -v foo=1 'BEGIN{print foo}' 1
-vはBEGINより前というかプログラムより前という意味になる。
-vはオプションなので位置に注意。
まあ、この順番で書かないとエラーになるのでわかりやすいともいえる。
sedで[,|,]を\でquoteとしようとして悩んだ。最初は
% echo '[|]' | sed 's/[\[\|\]]/\\&/g'
[\|]
としてみたが、なぜか|だけがマッチするようで。
info sedしてみたら、なんとchar classでは\はquoteの意味を持たないとある。
`[LIST]' `[^LIST]' Matches any single character in LIST: for example, `[aeiou]' matches all vowels. A list may include sequences like `CHAR1-CHAR2', which matches any character between (inclusive) CHAR1 and CHAR2. A leading `^' reverses the meaning of LIST, so that it matches any single character _not_ in LIST. To include `]' in the list, make it the first character (after the `^' if needed), to include `-' in the list, make it the first or last; to include `^' put it after the first character. The characters `$', `*', `.', `[', and `\' are normally not special within LIST. For example, `[\*]' matches either `\' or `*', because the `\' is not special here. However, strings like `[.ch.]', `[=a=]', and `[:space:]' are special within LIST and represent collating symbols, equivalence classes, and character classes, respectively, and `[' is therefore special within LIST when it is followed by `.', `=', or `:'. Also, when not in `POSIXLY_CORRECT' mode, special escapes like `\n' and `\t' are recognized within LIST. *Note Escapes::.
知らなかった。]を指定するには最初に置くしかない。[も意味を持たない。
ということはこうだな。
% echo '[|]' | sed 's/[]|[]/\\&/g'
\[\|\]
気になったのでawkでもやってみた。結構いろんなのがある。
gawk, mawk, busybox awk, bwkで:
% (setopt SH_WORD_SPLIT;
for awk in gawk mawk busybox\ awk bwk; do
printf "%12s: " "$awk";
echo '[|] [|]' | $awk 'gsub(/[]|[]/,"\\\\&", $1)gsub(/[\[\|\]]/,"\\\\&", $2)';
done)
gawk: \[\|\] \[\|\]
mawk: \[\|\] \[\|\]
busybox awk: \[\|\] [\|]
bwk: \[\|\] \[\|\]
sedと同じ形式である/[]|[]/は全部okだが、
\でquoteする形式である/[\[\|\]]/はbusyboxのawkでは使えないようだ。
というわけで、rubyciとかアメダスのbotとかが止まってる。
アナウンスがないのでどういう状況なのかよくわからんねえ。
ああ、そうか。この日記もIFTTTで通知してたんだった。
さて、復帰したら拾ってくれるんだろうか。
HTMLのタグって小文字が多いけど、もちろん大文字で書いてもいい。
そのことをすっかり忘れて小文字限定でtitleタグを抜き出す処理を書いたはいいが、
これが失敗するのに2ヶ月ほどかかった。
まあ、それほどまでに大文字で書かれたHTMLタグって稀なんだな。
title=$(curl -sL "$1" | awk -F'<title[^>]*>[\n \t]*|[\n \t]*</title>' '$0=$2' RS= | nkf --numchar-input)
ってな処理にしたもんだからtolower()が使えず、gawk限定のIGNORECASE=1することでごまかした。
ついでにgawkならということで\sで。
title=$(curl -sL "$1" | gawk -F'<title[^>]*>\\s*|\\s*</title>' '$0=$2' IGNORECASE=1 RS= | nkf --numchar-input)
ちょっと面倒だが、文字列から正規表現に変換するときにquoteが必要になるので、\\sとしないといけない。
redmineからなんかいっぱい来てたので、
わざわざオフラインGmailに切り替えてからアーカイブしたんだけど、
裏でいっぱい処理してるらしく結局オフラインでも重くなるのであった。
なんか最近Gmailの調子悪いからオンラインでエラー多発してるんだよね。
これってRSSのどこに相当するのかよくわからんのでぐぐってみたら、
IFTTT / New feed item trigger on the Feed channelにヒット。
URL for the first image in the entry. If the entry doesn't have an image will point to a placeholder image.
と言われてもよくわからないが、
https://twitter.com/bartjeb/status/232118200161169410によると
contentとかdescriptionの中にimgタグを埋め込んでおけという意味のようで。
だったらYahoo Pipesでもなんとかなりそうなので、アメダスbotでやってみよう。