〜2013年4月中旬〜
https://tv.so-net.ne.jp/chan-toru/ではなぜかスクロールするのにスペースバーやスクロールダウンやカーソルキーが一切使えない。
マウスのホイールのみというとんでもない仕様になってるけど、どういうこと?
Firefoxじゃ動かないとかブラウザを選ぶわりにはお粗末すぎる。
jarhの手直ししてたら不可解なことが。
% ruby -e 'def to_hash()p :to_hash end;"".sub(//,"")' :to_hash -e:1:in `sub': can't convert String to Hash (String#to_hash gives Symbol) (TypeError) from -e:1:in `<main>'
String#subはto_hashを呼ぶ。2つ目の引数がhashかどうかをtry_convert的にな感じで判断している。
問題になるのはmethod_missingを使ってるときぐらいなので、そこだけ注意すればいい。
class String def to_hash nil end end
を追加する。
GNU coreutilsのrmのinfoより:
`-f' `--force' Ignore nonexistent files and never prompt the user. Ignore any previous `--interactive' (`-i') option.
FreeBSDのman rmより:
-f Attempt to remove the files without prompting for confirmation, regardless of the file's permissions. If the file does not exist, do not display a diagnostic message or modify the exit status to reflect an error. The -f option overrides any previous -i options.
alias rm='rm -i'するってことはrm -rfはrm -i -rfを意味し、-iは無視される。
救われるのは-fを指定しないときだけ。
% alias rm='rm -i' % mkdir foo % touch foo/bar % rm -rf foo % ls foo ls: foo にアクセスできません: そのようなファイルやディレクトリはありません
-iを後に持ってけばいいなら
rm(){ command rm "$@" -i; }
という手がないわけでもない。
でもこれが効くのはGNU coreutilsのrmだけで、
一般的なrmはオプションを後置しても-iがファイル名と見做されてしまう。
そうそう。だから-iなんて名前のファイルがあると、
GNU coreutilsのrmだとrm *するとプロンプトが出てくる。
それを逆手に取ってわざと-iという名前のファイルを作っておいて、
不用意に消されないようにするなんてTIPSもあったな。
十数年前に書いたJARHをRuby 2.0対応した。できてないのもあるけど、とりあえず。
Just another Ruby hacker,
% ruby jarh-2.0.rb|tr , '\n' |uniq -c jarh-2.0.rb:277: warning: string literal in condition jarh-2.0.rb:277: warning: string literal in condition 209 Just another Ruby hacker
209個分。 TRICK 2013の参考にどうぞ。
awkで解いた。
% curl -s http://www.yahoo.co.jp | awk '/table\/.\//&&$0=$NF' RS="</a>" FS=">" イランで大地震 40人超死亡 ブラック企業は公表で減るか 愛知の人質事件 男女を逮捕 原発事故でクマ肉料理が危機 近大 ネット出願に完全移行へ 秋山成勲さんの報酬横領 逮捕 DeNA中畑監督 暴力行為で退場 他人のICで入館 AKBのCM物議
まあ、yhaooの場合htmlから抽出するよりはRSSからやったほうが簡単
% curl -s http://rss.dailynews.yahoo.co.jp/fc/rss.xml | awk '/<item/&&getline&&gsub(/<[^>]*>/,"")' イランで大地震 40人超死亡 ブラック企業は公表で減るか 愛知の人質事件 男女を逮捕 原発事故でクマ肉料理が危機 近大 ネット出願に完全移行へ 秋山成勲さんの報酬横領 逮捕 DeNA中畑監督 暴力行為で退場 他人のICで入館 AKBのCM物議
でもなかったか。titleがなあ。
% curl -s http://rss.dailynews.yahoo.co.jp/fc/rss.xml | awk '/title/&&gsub(/<[^>]*>/,"")' Yahoo!ニュース・トピックス - トップ イランで大地震 40人超死亡 ブラック企業は公表で減るか 愛知の人質事件 男女を逮捕 原発事故でクマ肉料理が危機 近大 ネット出願に完全移行へ 秋山成勲さんの報酬横領 逮捕 DeNA中畑監督 暴力行為で退場 他人のICで入館 AKBのCM物議
こんな感じで1つ余計なのにヒットしてしまう。
% curl -s http://rss.dailynews.yahoo.co.jp/fc/rss.xml | xml2 | awk -F= '/item\/title/&&$0=$NF' イランで大地震 40人超死亡 ブラック企業は公表で減るか 愛知の人質事件 男女を逮捕 原発事故でクマ肉料理が危機 近大 ネット出願に完全移行へ 秋山成勲さんの報酬横領 逮捕 DeNA中畑監督 暴力行為で退場 他人のICで入館 AKBのCM物議
xml2を使う手はある。
本当は&とか出てくるのでそれも対処しないといけないんだが。
いつのまにかテレビ王国のiepgの内容が変わっていた。
前のstationはDFS00400がNHKのようにコードネームなってたが、
突然NHK総合みたいにわかりやすくなっていた。
まあ、そのおかげで1つ失敗したわけなんだけど。
いやでもNHK教育ってのはどうなんだろ。Eテレじゃないの?
再起動するたびにChromeが既定のブラウザじゃないよと言ってくるので変だと思ってたが、
システムのお気に入りのアプリケーションでウェブブラウザをChromeにするとChrome側の既定のブラウザが空になり、
Chrome側で設定するとシステムが側が空になる。どうしろと。
crontabからsshでdateを実行したら
Pseudo-terminal will not be allocated because stdin is not a terminal.
と言われたので、-tをつけたがまだ出た。どういうことなのかman sshで確認してみると、
複数つけると強制的にttyを割り当てるらしい。
-t Force pseudo-tty allocation. This can be used to execute arbitrary screen-based programs on a remote machine, which can be very useful, e.g. when implementing menu services. Multiple -t options force tty allocation, even if ssh has no local tty.
というわけで-ttでうまくいった。しかしなんでdateがttyを要求するのか?
gawkのprintfには%'dで3桁ごとにカンマを入れてくれる機能があって便利だが、crontabで使うときには注意。
localeに依存する。ふだんの環境で動いてもcron経由だとカンマが入らないということが起こりがち。
LANGが設定されないからだ。
env -i gawk 'BEGIN{printf "%'\''d\n", 1234}' 1234 env -i LANG=en_US.UTF-8 gawk 'BEGIN{printf "%'\''d\n", 1234}' 1,234
LANGになにを指定すべきか悩んだが、日本語が出てきても面倒なのでen_US.UTF-8にした。