Just another Ruby porter,

〜2014年3月下旬〜


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

2014-03-21 (Fri)

RD-H1がメールを受け取ってくれない

新たな環境になってからRD-H1のネットワーク設定は放置状態だったが、
まあ、192.168.0.0/24なのは変わりないし問題ないだろうと思ったら、
メールを受け取ってくれない。しかも時計がちょっとずれてる。
ということは全然外とつながってないわけで見直してみると、
今回新たに設置されたルータにはDNS機能がないということがわかった。
RD-H1はHTTPサーバが内蔵していてもろもろブラウザから設定できたりするので、
DHCPではなく固定IPアドレスで運用していたが、それが仇になった形。
面倒なので8.8.8.8にしようかと思ったが、最近あんなことがあっただけに、
DHCPが配ってるDNSにした。これでメールもNTPもok。

2015年でデジアナ変換は終了するらしいが、それ以降もまだまだ使えてしまうな。


2014-03-22 (Sat)

zshのhistoryのmetafy

先日zshのhistory fileのunmetafyについて書いた。
これで変換すれば修正できるが元に戻すにはmetafyする必要がある。
というわけでRubyで書いてみた。

% cat zsh_history-unmetafy 
HISTSIZE=3
echo あいうえお
echo 今、咲き誇る花たちよ
% ruby -EASCII-8BIT -pe 'gsub(/[\0\x83-\x9d\xa0]/n){"\x83".b+($&.ord^32).chr}' zsh_history-unmetafy > zsh_history-metafy
% od -tx1z zsh_history-metafy
0000000 48 49 53 54 53 49 5a 45 3d 33 0a 65 63 68 6f 20  >HISTSIZE=3.echo <
0000020 e3 81 82 e3 81 83 a4 e3 81 83 a6 e3 81 83 a8 e3  >................<
0000040 81 83 aa 0a 65 63 68 6f 20 e4 bb 83 aa e3 80 81  >....echo .......<
0000060 e5 83 b2 b2 e3 81 83 ad e8 aa 83 a7 e3 82 83 ab  >................<
0000100 e8 83 aa b1 e3 81 9f e3 81 a1 e3 82 83 a8 0a     >...............<
0000117

[\0\x83-\x9d\xa0]という文字が来たら^32して\x83をprefixすればいい。
Perlなら

% perl -pe 's/[\0\x83-\x9d\xa0]/\x83@{[$&^" "]}/g' zsh_history-unmetafy > zsh_history-metafy

という感じ。文字列のxorができるのでそのあたりはすっきりする。


2014-03-23 (Sun)

今年は平成何年?

正月過ぎるともう平成何年だかよくわからなくなる。
2014年の14に12を足せばいいんだけど、
実はdateコマンドでもわかる。

% date +%EY
平成26年

Eをつければいろんなものが日本仕様に。

% for i in y c x X;date +%E$i
26
平成26年03月23日 22時50分35秒
平成26年03月23日
22時50分35秒

昭和とかもちゃんといける。

% date +%Ex -d 1926-12-24
大正15年12月24日
% date +%Ex -d 1926-12-25
昭和元年12月25日
% date +%Ex -d 1989-01-07 
昭和64年01月07日
% date +%Ex -d 1989-01-08
平成元年01月08日

ちゃんと元年になるんだな。
libcのstrftime(3)が対応してるかどうかなので、gawkでもいける。

% gawk 'BEGIN{print strftime("%EY")}'
平成26年

Rubyのように自前でstrftimeを用意してたりすると使えない。

% ruby -e 'p Time.now.strftime("%EY")'
"2014"

2014-03-24 (Mon)

J:COMのリモコンの決定が押せなかったり、DLNAエラーだったり

決定ボタンを押すとかなりの確率で下ボタンになってしまう。
これは再生中は停止ボタンなわけで、
押してしまうとresume機能がないので元に戻れない。
しかたなく最初から100倍速で早送りする、
だいたい見ていたところにきたら決定ボタン押す、
一時停止になるので解除するために決定ボタンを押す、
残念停止ボタンでした、
ってのを3回ぐらい繰り返す。ちゃぶ台を引っくり返す。
という展開が繰り広げられる。

だからDLNA経由のPS3で見るわけだけど、
こっちも不安定でやたらエラー起こす。
まだPS3ならresume機能があるのでましだが、
でもエラー起こすと最初に戻ったりするし、
□ボタンで5分間隔でのジャンプも結構エラーになる。
いやー、困ったもんだよ実際。
もう見るんだったらノンストップで最後まで見る覚悟で再生しないと。
まじで学習リモコン考えないとだめかも。


2014-03-25 (Tue)

シェルスクリプトの処理時間を計る

そとからならtime script.shでいいわけだが、結構timeを忘れる。
スクリプトの中に入れたい。そこでpsコマンドだ。

% cat test.sh
#! /bin/sh
sleep 5
ps ho etime $$
% sh test.sh
      00:05

スクリプトの最後に ps ho etime $$ を置けばいい。
hはheaderを表示しないという意味だが、BSDだと効かない。
そのあたりはsed 1dとかで。


2014-03-26 (Wed)

テレビ王国での検索結果をメールで受け取る

テレビ王国では番組の検索ができて、しかもその結果をRSSで受け取れる。
ということはこれをIFTTTで連携すればメールで受け取ることが可能。
メールじゃなくてもtwitterへポストするとか好きなように通知できる。
このおかげで世界ネコ歩きも逃さず見ることができるわけだが、ここ重要。


2014-03-27 (Thu)

Firefoxでbookmarklet呼び出しが動かない

今はkeyconfigじゃなくてkeysnailを使ってるが本質的には変わらない。
ここ半年ほど この設定が動かなくなってる点を調べてみたら、
なんとgetShortcutOrURIが以前とは違う挙動になってしまっているとのこと。

getShortcutOrURI 内で非同期の getCharsetForURI が使われるようになりました。これにより getShortcutOrURI 関数が非同期の getShortcutOrURIAndPostData に置き換えられました。また urlbarBindings.xml 内の _canonizeURL 関数も併せて非同期に変更されています。

なんかさらっと書かれているが、これのおかげでgetShortcutOrURIが使えないらしい。
代わりにPlacesUtils.getURLAndPostDataForKeywordを使えばいい。

PlacesUtils.getURLAndPostDataForKeyword("keyword")[0]

keyconfig 20110522を参考。

keysnailだったら~/.keysnail.jsに

function getShortcutOrURI(k, d) {
    return PlacesUtils.getURLAndPostDataForKeyword(k)[0];
}

を追加してしまえばいいのかも。


2014-03-28 (Fri)

Excelファイルをシェル芸でほじくる(便乗xml-coreutils編)

xml-coreutilsのxml-findを使うとこんな感じでできる。

% unzip -p Book1.xlsx xl/worksheets/sheet1.xml | tidy -qi -xml
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="x14ac"
xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">

  <dimension ref="A1:A5" />
  <sheetViews>
    <sheetView tabSelected="1" workbookViewId="0">
      <selection activeCell="A6" sqref="A6" />
    </sheetView>
  </sheetViews>
  <sheetFormatPr defaultRowHeight="13.5" x14ac:dyDescent="0.15" />
  <sheetData>
    <row r="1" spans="1:1" x14ac:dyDescent="0.15">
      <c r="A1">
        <v>1</v>
      </c>
    </row>
    <row r="2" spans="1:1" x14ac:dyDescent="0.15">
      <c r="A2">
        <v>10</v>
      </c>
    </row>
    <row r="3" spans="1:1" x14ac:dyDescent="0.15">
      <c r="A3">
        <v>100</v>
      </c>
    </row>
    <row r="4" spans="1:1" x14ac:dyDescent="0.15">
      <c r="A4">
        <v>1000</v>
      </c>
    </row>
    <row r="5" spans="1:1" x14ac:dyDescent="0.15">
      <c r="A5">
        <v>-1</v>
      </c>
    </row>
  </sheetData>
  <phoneticPr fontId="1" />
  <pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75"
  header="0.3" footer="0.3" />
</worksheet>
% unzip -p Book1.xlsx xl/worksheets/sheet1.xml | xml-find -name 'row' -exec xml-printf '%s %s\n' '{-}' ://c@r ://v \;
A1 1
A2 10
A3 100
A4 1000
A5 -1

2014-03-29 (Sat)

calの結果に色をつける

Ubuntuのcalは今日の日付だけ反転するが、むしろ土曜と日曜に色をつけたい。

% cal -h | sed '1!{s/\(..\)\(.\{16\}\)\(..\)\(  \|$\)/\x1b[1;31m\1\x1b[m\2\x1b[1;34m\3\x1b[m\4/g}'
     March 2014       
Su Mo Tu We Th Fr Sa  
                   1  
 2  3  4  5  6  7  8  
 9 10 11 12 13 14 15  
16 17 18 19 20 21 22  
23 24 25 26 27 28 29  
30 31                 

とこんな感じでどうだろう。3ヶ月表示でもok。

% cal -h3 | sed '1!{s/\(..\)\(.\{16\}\)\(..\)\(  \|$\)/\x1b[1;31m\1\x1b[m\2\x1b[1;34m\3\x1b[m\4/g}'
   February 2014           March 2014            April 2014       
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  
                   1                     1         1  2  3  4  5  
 2  3  4  5  6  7  8   2  3  4  5  6  7  8   6  7  8  9 10 11 12  
 9 10 11 12 13 14 15   9 10 11 12 13 14 15  13 14 15 16 17 18 19  
16 17 18 19 20 21 22  16 17 18 19 20 21 22  20 21 22 23 24 25 26  
23 24 25 26 27 28     23 24 25 26 27 28 29  27 28 29 30           
                      30 31                                       

2014-03-30 (Sun)

zshで(N-/)を使うとき

また便乗ネタだけど、(N-/)をつけるという方法はなかなかナイスではあるが、
これを全ディレクトリに指定するのも面倒。
元々のpathに存在しないディレクトリがあった場合にも対処したい。
たとえばわざと存在しないディレクトリをpathに追加して

% path=(/not_exist $path /hoge)
% echo $path
/not_exist /home/eban/bin /home/eban/jarp/bin /usr/local/bin /usr/bin /bin /usr/sbin /sbin /hoge

これに対して全要素に対して(N-/)を処理させたい。それには$^pathを使うとうまくいく。

% echo $^path(N-/)
/home/eban/bin /home/eban/jarp/bin /usr/local/bin /usr/bin /bin /usr/sbin /sbin

$path(N-/)としてしまうと最後の1個だけにつくのでまずい。

% echo $path(N-/) 
/not_exist /home/eban/bin /home/eban/jarp/bin /usr/local/bin /usr/bin /bin /usr/sbin /sbin

というわけで

% path=($^path(N-/))
% echo $path
/home/eban/bin /home/eban/jarp/bin /usr/local/bin /usr/bin /bin /usr/sbin /sbin

とすればpathには存在するディレクトリだけが残る。


2014-03-31 (Mon)

Xvieリモートアプリ

なんかUSBケーブルつないでも追い付けないくらい、
やたらと電気食うのであまり使ってなかったんだが、
今日試したらそうでもない。
すぐ接続が切れちゃうのは変わらないが。
それはそれとして、変換待ちのままもう10日経つ番組があるんだけど、
なぜか変換終了しないと消せない仕様になっていて非常に困る。
もう全部予約はDRにしちゃったから今後は変換待ちにはならないが、
3つ番組が残ってしまった。いくら待っても変換されない。
もう見たので消したい。
ふとXvieリモートの録画リストを見てみるとこちらはグレーアウトされてない。
消してみるとなんと消えた。こんなとこに違いが。
ああ、あとこのXvieリモートのリモコン再生中だと現在の位置がわかるのでよろしい。
押し間違いもないし。接続が安定すればいうことないんだが。


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