〜2013年12月中旬〜
これどうしたもんかとどうせなら-printfでls -l相当に近づけるべくごにょごにょしてみたが、
秒だけがなぜか小数点以下もつけくれるもんで結構うっとうしい。
% touch あいうえお % find . -ls 31209908 4 drwxr-xr-x 2 eban eban 4096 Dec 12 02:17 . 31209910 0 -rw-r--r-- 1 eban eban 0 Dec 12 02:17 ./\343\201\202\343\201\204\343\201\206\343\201\210\343\201\212 % find . -printf '%08s %C+ %p\n' 4096 2013-12-12+02:17:37.4381328510 . 0 2013-12-12+02:17:37.4381328510 ./あいうえお
とにかく秒のところにはwith fractional partが決まり文句になっていて、
省略できるのは%Ccだけのようだ。
% find . -printf '%08s %Cc %p\n' 4096 Thu Dec 12 02:17:37 2013 . 0 Thu Dec 12 02:17:37 2013 ./あいうえお
サイズとかはhuman readableになるようなオプションはなさげ。
使ってないPCを久し振りに起動してFirefoxを立ち上げたら、下段になんかメッセージが出てきた。
お久しぶりです! Firefox はしばらく使われていなかったようです。 プロファイルを掃除して新品のようにきれにしますか? Firefox をリセット(E)...
まあ、使ってないしどうなるか見てみたいのでリセットしてみた。
Firefox を初期状態にリセットしますか? 次のデータが保存されます ウィンドウとタブ 履歴とブックマーク 保存されているパスワード 入力フォームの履歴 Cookie Firefoxの再起動後、その他のデータは削除されます。 Firefox をリセット キャンセル
保存じゃなくて逆に何を削除するのか教えて欲しいが、
まあ、それくらい残ってればいいかと続行してリセット。
設定移行ウィザードでもろもろインポートされる。
Firefox のリセット Firefox 古いデータを掃除している間、しばらくお待ちください... おかえり! Firefox はプロファイルをリセットできました。以下は開いていたウィンドウとタブの一覧です。 これらを復元するか、または白紙の状態で開始できます。
で、どうなったかというと拡張が全部削除された。盲点だった。
なんか清々しい気分だ。安易すぎた。まあ、いいか。
divが増えた。そうなると1個tableがずれて前にある同じ構造の10分観測値のほうにぶちあたった。
つまり10分間隔になった。そんな頻度でクロールしないので、正確には10分単位ででたらめな間隔になった。
XPathの
//*[@id="bd-main"]/div[4]/table/tbody/tr[2]
div[4]をdiv[5]にすればいけるが、また増えたら書き換える必要がありなんとかしたいところ。
そもそもこのXPathはGoogle Chromeの要素の検証のElementsタブで右クリックしてCopy XPathしたもの。
これはこれで便利だが、他にも表現できる。
tenki jpのアメダス実況のページには10分観測値と60分観測値がある。
これはtableで、両方ともclass="amedas_table_entries"になっている。
classが違ってれば簡単な話だが、まあ、CSSで共通のスタイルにするという目的なんだから同じで当たり前。
それはそれとして、divの階層ではなくtableのほうで考ると
//table[@class="amedas_table_entries"]/tbody/tr[2]
とも表現可能で、その2つの観測値tableの欲しいところを指すことになる。
あとはYahoo! PipesのTailを使えば後ろの1個だけが抽出可能になる。
一応これで解決した。でもそこもXPathだけでいけるはずだ。
最初は
//table[@class="amedas_table_entries"][last()]/tbody/tr[2]
を試したが、なぜか変わらない。2つ残る。いろいろぐぐってみると優先順位かと思い当たった。
(//table[@class="amedas_table_entries"])[last()]/tbody/tr[2]
ここにカッコが必要。これでTailが不要になった。
divの個数には依存しなくなったが、はたしてどうなることやら。
間隔はでたらめでも情報は増えるし、放置しておいてもよかったのかもしれない。
ちょっとうっとうしいが。
torneでフラッシュ送りすると情報表示されるが、
そのときに妙な区切りみたいなものが出る番組があることに気づいた。
何が違うのかと思ったらnasneで録った番組だ。
これだな。
■“ナスネ” システムソフトウェア バージョン2.10以上で録画された番組のチャプター情報の表示・操作
“ナスネ” システムソフトウェア バージョン2.10以上で録画された番組のチャプター情報の表示および操作に対応しました。
チャプターが設定されたビデオでは、タイムバーにチャプターマークが表示され、左スティックの左右でチャプタージャンプができます。
これはめちゃめちゃ便利。チャプターと言ってるが、要するにCMスキップなわけで。
今まではリモコンのFLASHとNEXTに違いがなかったが、
やっとNEXTがNEXTとして機能するようなった。
それにしてもなぜnasneだけなのか。
tenki jpのHTMLからYahoo! PipesとIFTTTと2つ経由してtwitterにつぶやいているので、
たぶんかなり取り零しが起こるんじゃないかと思っていたが、
思ったほど起きない。むしろアメダスRSS本家があった頃よりも更新が速かったりする。
しかも本家は気温、降水量、風向き、風速が別のitemになってたので、
IFTTTで気温しかtwitterにつぶやけなかったが、まとめられるようになった。
なんかいいことづくめのような?
取り零しに関しては本当は最新の1個だけじゃなくて数個RSSに入れとけばいいんだけど、
tableのrowspanのせいでXPathが書けない。これなんとかなるもんかな。
最後の行だけawkでなんか処理させたいときはtail -1を呼ばなくても、
END{print $1}のようにEND{}でいける。$0とかNFとかもそのまま保持されている。
というわけでこれなんだけど、
convert image.jpg -resize 1x1 txt: | tail -1 | awk '{gsub(/[,\)]/," "); print $3+$4+$5}'
tail -1は不要になり
convert image.jpg -resize 1x1 txt: | awk 'END{gsub(/[,\)]/," "); print $3+$4+$5}'
と書ける。が、しかしこれバグってる。
% convert 0000.jpg -resize 1x1 txt: # ImageMagick pixel enumeration: 1,1,255,srgb 0,0: (219,223,206) #DBDFCE srgb(219,223,206)
なんだから、$3が(219になってしまう。ってことは0とみなされる。
/[,(]/にしないとまずい。あとmeanっていうなら3で割るよねえ。
% convert 0000.jpg -resize 1x1 txt: | awk 'END{gsub(/[,(]/," "); print ($3+$4+$5)/3}' 216
実をいうとconvertにはmeanを計算する機能もある。
% convert 0000.jpg -format "%[mean]" info: 54798.2 % identify -format "%[mean]" 0000.jpg 54798.2
まあ、結局はidentifyなんだけど、この値は65535がmaxなので
% echo $[54798.2*255/65535] 213.22256809338521
ってことになるが、微妙に結果が違う。そのあたりは-resizeのアルゴリズムに依る。
% convert 0000.jpg txt: | head # ImageMagick pixel enumeration: 590,450,255,srgb 0,0: (180,220, 97) #B4DC61 srgb(180,220,97) 1,0: (196,225,145) #C4E191 srgb(196,225,145) 2,0: (133,169, 95) #85A95F srgb(133,169,95) 3,0: (118,158, 62) #769E3E srgb(118,158,62) 4,0: (111,149, 46) #6F952E srgb(111,149,46) 5,0: (130,166, 66) #82A642 srgb(130,166,66) 6,0: (150,175,109) #96AF6D srgb(150,175,109) 7,0: (132,160, 86) #84A056 srgb(132,160,86) 8,0: (129,164, 70) #81A446 srgb(129,164,70) % convert 0000.jpg txt: | awk -F'[(, ]+' 'i++{sum+=$3+$4+$5}END{print sum/(NR-1)/3}' 213.223
%[mean]はほんとに機械的に平均を計算している。
今回はgsubじゃなくてFSを設定する方法でやってみた。
i++は先頭だけ除くという意味。ああ、意味的には!/^#/のほうがわかりやすいか。
この対策でうまくいったのか?
23日後ってのは今となっては意味不明だ。
たぶんその前のメールが23日前だったんだろうと思い、
メールを確認したら30-7ということだった。
30日間有効だけど、更新しないとその7日前に通知が来る。
ってことはあれでうまくいったようだ。
まず適当に127.0.0.1と設定し、続いて本当のIPアドレスを設定する。
これを23日以内で繰り返す。cronの設定は面倒なので1日と16日の月2回にしよう。
最近のandroidだとinputコマンドにswipeがあるが、
これを使っても起動時のアンロックがうまくいかない。
そこで定番はgeteventしてsendeventになるが、これが使いにくい。
何しろgeteventした結果をそのままsendeventには使えないから。
16進と10進、余計な:を削除とか。
まあそれは変換すればいいだけだけど、問題はタイミング。
adb shell sendeventじゃ論外に遅いし、android上で直接sendeventを動かしてもやっぱり遅い。
1個のイベントをいちいちコマンド起動してちゃ、まったくもって間に合わない。
そこでこのイベントを一気に食わせる方法があるかとぐぐってみたら、
adb - Android simulate fast swipeを発見した。
なるほど、/dev/input/event?を直接触ればいいんだ。
For example adb shell cd /mnt/sdcard cat /dev/input/event2 > events Do a few touch screen events, then ctrl-C to kill cat Now you can play back the captured file of binary events: cat events > /dev/input/event2
これでばっちりアンロックもできた。