ここのところ当家はいろいろな事件に巻き込まれたり引き起こしたりして、なかなかエキサイティングな毎日を送っています。 先日の事件「iPodの洗濯」とともに導入されたbluetoothの車用のFMトランスミッターの調子がすこぶる良い。普通に電話から音楽を鳴らして、操作も難しくないし音も意外と良い。bluetooth→FMと2重に電波を使うので不安だったのだが、その不安はあっという間に払拭された。 以前にもマウスなどbluetooth機器は持っていた。持っていたのだが、子供に壊されたりちょっと不安定な時期があったりして、結局buetooth自体を敬遠していた。Vistaが悪かったのかもしれない。それが今回の「iPod洗濯事件」の余波により一気にbluetoothラブになってしまった。 そこで買おうと思ったのがキーボード。かねてPCのキーボードはUSB接続のHHK廉価版だったのだが、英語配列が家族には不評だったり。あと机の上がおもちゃ置き場のようになってしまった関係で、信じがたいことにHHKですらちょっと大きい。 探してみると、iPhoneとかAndroidがbluetoothのキーボードをつなげられるようになっているらしく、小型のキーボード製品がたくさん出てました。いい世の中ですね。そこそこの用途で使えそうなiBUFFALOの小型キーボードを発注し、さきほど届きました・・。これと洗濯ばさみを持ち歩けば、出先でちょっとしたテキスト文書を書くくらいなら不自由しなさそうな気がする。 とりあえずAndroid側につないでみてこの記事を書いてみてますが、ちょっとPCで常用するにはチャチすぎるかもしれません。ただ買う前に思っていたほどは悪くないです。このくらいの長文ならストレスなく普通に書ける感じ。さすがにプログラムを書けそうな気まではしませんが。 ついでにPC側につないで101→106の設定を変更しようとしたら、Windows Updateとタイミングがかちあってしまったためか、ちょっとしたトラブルになってしまいました。アップデート失敗のロールバックして起動が中途半端に失敗の…やっているうちに次々といろんなものが失敗していく…Windows7壊れたかも?
結局、togetterの番号から記事を取ってきてテキストにするスクリプトを書いて、reStructuredTextあたりとして処理してpandocでEPUBに変換することで、ニンジャスレイヤーをEPUBでオフラインで読むことができるようになりました。最近はこれでAndroidのFBReaderで読んでますが、動作も安定しているし、途中で中断しても続きから開けるのでかなり快適になりました。
とりあえずスクリプトを載せておきます。Cookieとかcsrf_tokenがないと続きを読み込めないみたいだが、かなり適当にやっても普通にテキストに変換することができた。ニンジャスレイヤーのテキストに関しては一部エスケープしないといけなかったり、&が&になってしまったりするようだが、おおむね読むのに問題ない状況になっている。
#! /usr/bin/python
# encoding: UTF-8
import urllib, urllib2
import cookielib
from BeautifulSoup import BeautifulSoup as BS
class tog:
def __init__(self, tid):
self.title=str(tid)
self.tid=tid
self.cookie=cookielib.CookieJar()
self.texts=[]
self.opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cookie))
def call_api(self, name, tid, data):
url="http://togetter.com/api/%s/%d" %(name, tid)
data["csrf_token"]=self.csrf_token
params=urllib.urlencode(data)
fp=self.opener.open(url, params)
html=fp.read()
return html
def get(self):
fp=self.opener.open("http://togetter.com/li/%d" %(self.tid))
html=fp.read()
soup=BS(html)
self.csrf_token=soup.find('meta', {"name":"csrf_token"})["content"]
self.title=soup.find("meta", {"name":"twitter:title"})["content"]
return html
def parse2txt(self, html):
soup=BS(html)
for i in soup.findAll("div", {"class":"tweet"}):
self.texts.append(i.text)
rest=filter(lambda f: f.text.startswith(u"残りを読む"), soup.findAll("a", {"class": "btn comment_btn"}))
if len(rest)==1:
rstr=rest[0]["onclick"]
page=int(rstr.split(",",1)[1].strip(");"))
return page
return None
def readall(self):
html=self.get()
rest=self.parse2txt(html)
while rest!=None:
html=self.call_api("moreTweets", self.tid, {"page":rest})
rest=self.parse2txt(html)
if __name__=="__main__":
import sys
tg=tog(int(sys.argv[1]))
tg.readall()
titlelen=len(tg.title.encode("EUC-JP"))
print tg.title.encode("UTF-8")
print "-"*titlelen
print ""
for t in tg.texts:
print t.encode("UTF-8")
print ""
読み進めたのは今のところ第2部の終わりくらいまで。ヨロシサン製薬が実際大活躍でしたな。ビョーキ・トシヨリ・ヨロシサン。ヨロシサン関係のニンジャ…特にケジメニンジャ=サンやサブジュゲイター=サン、セントール=サンあたりはかなり良かった。
洗濯機にかけてしまいました。第4世代のiPod nanoです。もはや世代とは関係なく、洗濯機で壊れないわけないですね。けっこう長期間使ってきたと思ってましたけど、買ったの2009年の5月なので、3年半しか経ってませんでした。
ほとんど車の中でしか使っていませんでしたが、新しい曲を入れるためにたまに家の中に持ち込むことも。今回も仮面ライダーウィザードの曲を入れるために持って帰った後、ポケットを確認せずに洗濯機へGo!
調べたら、最近のiPodはコネクタが変わったので今まで使っていたFMトランスミッターが使えなくなります。こうなるとiPodにする必要性がなくなるので、Apple製品からは完全に足を洗うことになるような気がします。しばらくはコンテンツ屋さんとしてのiTunesに縛られるでしょうけど。
当面は車用のBluetoothのFMトランスミッターだけを買って、電話とつないでしのぐつもりですが、音や使い勝手がいまいちだったら、車内音楽用に何か買おう。SonyのWalkmanかCreativeのZENあたり? 機能としてはMP3とAACが聞けてBluetooth対応でUSB充電ができれば問題ないので、もっとマイナーなやつでもOK。歌詞を表示できると良いけど、必須ではないです。どうせ戦隊やライダー、アンパンマンの歌くらいにしか使いません。安さ重点で。
ここ最近私の時間を削りまくってくれているのが「ニンジャスレイヤー」。電話にアプリを入れたりPCから読んだりしてますが、おかげで昼休みも潰れていく一方だし、暇さえあれば読み進めているという感じです。読み始めた頃と同時期に図書館で借りた真面目な本はもう読む方向には行かないと判断してあっさり返しました。
サイバーパンクというジャンルに関しては、高校時代に読んだニューロマンサーに対する「現実感がなく、ついていけない…」という感想のまま30代後半を迎えてきましたが、このサツバツな小説は圧倒的なリアリティを持って頭に入り込んできます。マッポー的な世界でニンジャが殺し合い、通信が全部IRC…というバカバカしい設定とは思えないほどで、実際尋常ではないです。私自身はタマ・リバーにかかる「絶望の橋」を渡った先に住んでいるわけですね。
この電話向けのアプリはあまり安定していないので、EPUBにでも変換してオフラインで安定な読書にしたいという気もしている。元がtogetterのページなので、変換は実際難しくないだろう。
今日の勝利で川崎は39ポイント。さすがにもう降格はないんじゃないかな。中位はかなりダンゴな状態で、勝ち点差3の42ポイントに4位の磐田がいます。残り7試合ありますから、ここからの目標は4位か。
今季、印象に残る勝ち試合もなく(私は先週の味スタ行ってないので)、見に行くたびに淡々と試合を進めた結果、負けてばっかりだった印象です。でも、それで4位の背中がまだ見えているとはね。
優勝争いは広島・仙台・浦和の3クラブに絞られました。残留争いはまあ、鹿島が落ちるとは思えないけど、新潟ガンバ大宮神戸鹿島セレッソまでは勝ち点的にはあり得る。ガンバが抜け出せるかは第3者的にはかなりの見ものです。仮に抜け出したとして代わりに落ちるのはどこ? みたいなのも含めてね。
まあ川崎が絡みそうなのは約8クラブによる4位決定戦なので、そのへんの当たりを見てみよう。
| クラブ | 勝ち点 | 28 | 29 | 30 | 31 | 32 | 33 | 34 |
|---|---|---|---|---|---|---|---|---|
| 磐田 | 42 | H清水 | Aマリノス | H仙台 | A鳥栖 | H名古屋 | A大宮 | Hガンバ |
| 鳥栖 | 41 | Aセレッソ | H名古屋 | A新潟 | H磐田 | A札幌 | H浦和 | Aマリノス |
| 清水 | 41 | A磐田 | H神戸 | A鹿島 | H新潟 | Hガンバ | A川崎 | H大宮 |
| 名古屋 | 41 | H大宮 | A鳥栖 | Hマリノス | H東京 | A磐田 | H鹿島 | A浦和 |
| 東京 | 40 | A鹿島 | Aセレッソ | H札幌 | A名古屋 | H神戸 | Aガンバ | H仙台 |
| 柏 | 39 | H川崎 | A広島 | H大宮 | Hガンバ | Aマリノス | H神戸 | A鹿島 |
| マリノス | 39 | H広島 | H磐田 | A名古屋 | A神戸 | H柏 | A札幌 | H鳥栖 |
| 川崎 | 39 | A柏 | Hガンバ | A神戸 | H浦和 | A新潟 | H清水 | Aセレッソ |
川崎は上位3クラブだと浦和としか当たりませんが、アウェイ神戸、アウェイ新潟と勝ち点を計算出来ない相手を残しています。またホームも今季は勝率が悪い上にガンバや浦和、清水が相手。ちょっと上に行く感じじゃないかもしれない。
ある機会に映画を見ました。感想を書いておきます。
アベンジャーズ
キャプテンアメリカとアイアンマンとハルクとマイティ・ソーが活躍する話。内容よりも「日本よ、これが映画だ」で有名な映画ですね。いまいちヒットしなかった上に、くだらないアンサーコピーが大量に出まわりました。日本でよく知られているのはハルクくらいなのでまあ、ヒットしなかったのはしょうがないですね。その超人ハルクにしても名前は有名だけど中身は緑色の巨人か裏切り者の若いブラジル人かというイメージしかありません。他はもう名前からして初耳というレベル。
ハルクはかなり活躍してました。キャプテンアメリカが良かったです。最初はお、スーパーマンか…ちょっとデザイン違うしキャプテンって?? と思いましたが、その実態は頑丈な盾を持っているだけの平凡なヒーローで、飛べるわけでもなく、取り立ててカッコよいわけでもない。それでも悲哀を出しながらがんばっていた。あとはソーのハンマー大好きのくだりがなんかちょっとウケた。
Picasa 3.9.0で、今の電話の標準のカメラで撮った動画が認識されません。デジカメ(GR Digital2)で撮った動画(MotionJPEG)は認識されて便利に使っていたのですが。そう言えば、以前の電話(ideos君)の動画も認識されなかったなぁ。
- 拡張子は.3gp
- vlcでは再生できる
- Codecを色々入れたMedia Playerでも再生できる
vlcが示すコーデック情報
- ストリーム0
- タイプ:オーディオ
- コーデック:MPEG AAC Audio (mp4a)
- 言語:English
- チャンネル:ステレオ
- サンプリングレート:44100Hz
- ストリーム1
- タイプ:ビデオ
- コーデック:H264 - MPEG-4 AVC (part 10) (avc1)
- 言語:English
- 解像度:640x480
- フレームレート:23.797071
- デコードフォーマット:Planer 4:2:0 YUV
ffmpegが示す情報
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '114904.3gp':
Metadata:
major_brand : 3gp4
minor_version : 768
compatible_brands: 3gp4mp413gp6
copyright :
copyright-eng :
Duration: 00:00:19.17, start: 0.000000, bitrate: 4143 kb/s
Stream #0:0(eng): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, s16, 96 kb/s
Metadata:
handler_name : SoundHandler
Stream #0:1(eng): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p, 640x480, 4046 kb/s, 23.80 fps, 24 tbr, 1k tbn, 48 tbc
Metadata:
handler_name : VideoHandler
これは珍しい形式なのだろうか? AACもH.264も3gpも珍しくはないが、組み合わせとなると分からない。音声がステレオだけど、そんな立派なマイク持ってたか??
当家は地デジになった世の中に遅れをとり続け、アナログテレビだったんです(CATVのおかげでテレビは見れた)が、ついに思い立ってアナログテレビを捨てました。綱島時代に新宿のヨドバシで買った時は当時の液晶の中では最も大きかったもので、ずいぶん高かったんですけどね。当日配送にしてもらってそそくさと家に帰ったことを思い出します。
と言っても新しいTVを買ったわけではなく。
先日のBenQのディスプレイをBuffaloのデジタルなHDDレコーダーにHDMIケーブルでつなげると、あっさり1080pのデジタル映像が得られる(PCからはDVIでつなぐ)。本来これはレコーダーなのでデータ放送(?)が使えないという弱みは別にどうでもいい。問題は、これだとディスプレイについているスピーカーが1Wと非力なので、リビングのTVとしては使いものにならないレベル(一応使えはしますが)。この状態をベースにして、いろいろいじりました。

今貧弱なのはマウスとキーボードですね。キーボードはHHKの廉価版のやつを引っ張りだして使ってます。まあこれは悪くないんだけどちょっと色あせているし、英語配列で[全角/半角]キーがないので、家人が使うときは日本語を出す方法(Ctrl-`)を教えてあげなければならない。Windowsキーもない。右Ctrlもなくて、VirtualBoxの設定を変える前にVMを起動してしまって困り果てた(VirtualBoxはデフォルトのホットキーが右Ctrl)。マウスは以前使っていたBluetoothのものはとっくに子供が壊してたので、昔気に入っていたDEXXAのマウスのまがい物(?)のKensingtonのマウスが転がっていたのでそれを使っている。ThinkPad用のIBMのものもがらくた箱の中で見かけたが、すげーベトベトになっていたので見なかったことにしておいた。DEXXA/Kensingtonは長持ちしましたね。
dfの値の変化だけを見たい場合とか、もっと複雑な書式のテキストデータで数の変化だけを見たい場合、というものが存在する。 試しに書いてみた。 [pyg language=“python”] #! /usr/bin/python
##
encoding: UTF-8
import os,sys import difflib import re def isnum(s): if len(s)==0: return False if s[0] in ("+", “-”): return s[1:].isdigit() return s.isdigit() def main(args): p=re.compile("([+-]?[0-9]+)") f1=p.split(file(args[0]).read()) f2=p.split(file(args[1]).read()) diff=difflib.ndiff(f1, f2, charjunk=lambda f: f.isspace()) d=filter(lambda f: f[0] in " +-", diff) nm,np=[],[] for i in d: hdr,s=i[0],i[2:] if hdr=="-" and isnum(s): nm.append(int(s)) elif hdr=="+" and isnum(s): np.append(int(s)) else: for im, ip in zip(nm, np): sys.stdout.write(str(ip-im).rjust(len(s))) if i[2:].isdigit(): sys.stdout.write(“0”.rjust(len(s))) else: sys.stdout.write(s) nm,np=[],[] for im, ip in zip(nm, np): sys.stdout.write(str(ip-im)) if __name__=="__main__": main(sys.argv[1:]) [/pyg] 例えば、以下のように使う。
zsh# python numdiff.py =(df) =(sleep 5; df)
Filesystem 0K-ブロック 使用 使用可 使用% マウント位置
/dev/vda0 0 4 -4 0% /
tmpfs 0 0 0 0% /dev/shm
5秒で/は4KB増えている。