Just another Ruby porter,

〜2013年4月中旬〜


<Prev(,) | Next(.)> | Recent(/)>> | RDF

2013-04-11 (Thu)

CHAN-TORUのUI

https://tv.so-net.ne.jp/chan-toru/ではなぜかスクロールするのにスペースバーやスクロールダウンやカーソルキーが一切使えない。
マウスのホイールのみというとんでもない仕様になってるけど、どういうこと?
Firefoxじゃ動かないとかブラウザを選ぶわりにはお粗末すぎる。


2013-04-12 (Fri)

subは暗黙的にto_hashを呼ぶ

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

を追加する。


2013-04-13 (Sat)

alias rm='rm -i'しても何の解決にもならない

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 にアクセスできません: そのようなファイルやディレクトリはありません

2013-04-14 (Sun)

aliasじゃなくてshell functionで

-iを後に持ってけばいいなら

rm(){ command rm "$@" -i; }

という手がないわけでもない。
でもこれが効くのはGNU coreutilsのrmだけで、
一般的なrmはオプションを後置しても-iがファイル名と見做されてしまう。

そうそう。だから-iなんて名前のファイルがあると、
GNU coreutilsのrmだとrm *するとプロンプトが出てくる。
それを逆手に取ってわざと-iという名前のファイルを作っておいて、
不用意に消されないようにするなんてTIPSもあったな。


2013-04-15 (Mon)

Just another Ruby hacker,

十数年前に書いた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の参考にどうぞ。


2013-04-16 (Tue)

問題4: webページの切り取り

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を使う手はある。

本当は&amp;とか出てくるのでそれも対処しないといけないんだが。


2013-04-17 (Wed)

テレビ王国のiepg

いつのまにかテレビ王国のiepgの内容が変わっていた。
前のstationはDFS00400がNHKのようにコードネームなってたが、
突然NHK総合みたいにわかりやすくなっていた。

まあ、そのおかげで1つ失敗したわけなんだけど。
いやでもNHK教育ってのはどうなんだろ。Eテレじゃないの?


2013-04-18 (Thu)

お気に入りのアプリケーションと既定のブラウザ

再起動するたびにChromeが既定のブラウザじゃないよと言ってくるので変だと思ってたが、
システムのお気に入りのアプリケーションでウェブブラウザをChromeにするとChrome側の既定のブラウザが空になり、
Chrome側で設定するとシステムが側が空になる。どうしろと。


2013-04-19 (Fri)

Pseudo-terminal will not be allocated because stdin is not a terminal.

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を要求するのか?


2013-04-20 (Sat)

gawk printfのcommify機能とlocale

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にした。


<Prev(,) | Next(.)> | Recent(/)>> | RDF


WWW を検索 jarp.does.notwork.org を検索

わたなべひろふみ
Key fingerprint = C456 1350 085F A320 C6C8 8A36 0F15 9B2E EB12 3885
Valid HTML 4.01!