やっぱマルチディスプレイにしていない状態での Windows で LimeChat のメッセージが強制的に視界に入らないのが不便なので、Growl for Windows 再検討した。問題としては、
というのがあった。前者は、Twitter のアイコンを毎回自分用のアイコンキャッシュサーバーにHTTPリクエストを投げて取得しているのが要因の一つと思ったので、キーワード通知以外の場合は LimeChat を Growl for Windows に登録して、アイコンは設定せずに通知するようにした。後者は、設定ファイル( Windows 7 だと C:\Users\{USERNAME}\AppData\Local\Growl\2.0.0.0\user.config あたり)の HistoryDaysToSave とか HistoryDays を 1 とかに設定しておくことで被害を最小に食い止めるようにしてみた。
(追記: 便利設定書いた http://oquno.com/log/eid2493.html )
LimeChatのマクロはこんな感じ( コマンドラインオプション )
"C:\Program Files (x86)\Growl for Windows\growlnotify.exe" /a:LimeChat /n:Default /t:"%n@%c" /cu:"http://{オレオレTwitter検索}/?q=from:%n+%m" /i:"http://{オレオレアイコンAPI}%n.png" "%m"
/i のアイコンオプションはキーワード通知の場合のみで、 /cu のコールバック URL オプションは URL エンコードしてないのでハッシュタグとかスラッシュが入るとまともに機能しないけれど、それなりに使える。直接 growlnotify を叩かずに何らかのスクリプトに投げてアイコンキャッシュ諸々の処理をさせるのもいいけれど、低スペックマシンへの負荷等を考慮してやめておいた。
早朝思い立ってこたつ片付けたのだけれどこたつ布団干しておこうと思ったら雨降ってきてはめられた感じだった。テーブル形態よりもこたつ形態の方が6倍くらいの面積だったので、片付けると大分部屋がすっきりした。床掃除も楽になったので、汚かったわけでもないけどフローリングワイパーかけまくった。
ヘッドホンしててもいいようにインターホン押されたらGrowl通知したい
— oquno (@oquno) February 25, 2012
ということでチャットとかしつつ検討した。ちなみにうちはマイクとかカメラとかなくて押したら音が鳴るだけのタイプです。
ヘッドホンしている状況では大体PC立ち上げているので、IRC か Growl で通知すればいい。インターホン押されたか程度の情報ならば Twitter に流しても自分は問題ないので、Twitter に投稿すれば IRC に流すのも Growl に通知するのもできる。Notify My Android にだけ通知するのは、秒単位で完全にリアルタイムに通知されるわけでもないのでよくない。
実装方法としては、
どこでもドアホン使うのはこんな感じで携帯電話にメール送信できるらしいので、携帯電話側で転送設定して、Gmail の XMPP とかでリアルタイムに通知できる。けど携帯電話まで含めると4万円くらいはかかる。ボタン側改造するのは、ボタンが押されたらXBeeとかで家の中の受信端末に通知するようなのが出来ればうまく行きそう。ただ、ボタン側は家の外なので、あまり見た目を変えたりするのはよくないので制限が大きい。スピーカー側を改造するのは、スピーカー側鳴らすための配線はどうせ単純だし簡単にハックできるだろうという予想で、Arduino あたりを組み合わせたり。スピーカー側に音量センサーとか組み合わせるのは、スピーカーの側に Arduino あたりで作った音量センサーを設置するというもの。もうちょっとプログラマブルなインターホンが出てくれるとうれしいですね。
みたいなことを書こうと思ったけど長くなりそうだったのでまじめに書くのをやめた。まとめると、Gumroad にはアイテム一覧が(表向きには)ないから使うのにどういうサービスなのか(違法なことに使われてるとか)判断できないのと、たぽろだのデザインが手抜きだったのと、仮想通貨が使われればいいのでスクリプトを配布したため中途半端にアップローダーが拡散したとかそんな感じですかね。モリタポか現金かというのは他ほど大きな要因ではないと思う。あとは Twitter とかで情報が拡散しやすい時代でどうこうとかもあるんでしょうかね。PANアップローダーβから7年後にあれではしゃぐのはないと思うけど。
どうせ普通にスクレイピングしてるんだろと思って色々見てたら、JSONで取ってた。 type パラメータを json にするだけで取れたし、バッヂからスクレイピングした場合みたいなアイコン表示用の中心位置のズレがないっぽい。夜ピクでも使ってましたね。自分の場合だと http://www.google.com/latitude/apps/badge/api?user=4601680445375420648&type=json を GET すると
{
"type": "FeatureCollection",
"features":
[
{
"type": "Feature",
"geometry": {"type": "Point", "coordinates": [135.769316, 35.0294089]},
"properties":
{
"id": "4601680445375420648",
"accuracyInMeters": 849,
"timeStamp": 1329661996,
"reverseGeocode": "日本, 京都府京都市上京区",
"photoUrl": "http://www.google.com/latitude/apps/badge/api?type=photo&photo=JB8WljUBAAA.4tZKCmm1Cd_CFPt0FEHt7A.joksABPdFATpX1-RYvIBSQ",
"photoWidth": 96,
"photoHeight": 96,
"placardUrl": "http://www.google.com/latitude/apps/badge/api?type=photo_placard&photo=JB8WljUBAAA.4tZKCmm1Cd_CFPt0FEHt7A.joksABPdFATpX1-RYvIBSQ&moving=false&stale=true&lod=1&format=png",
"placardWidth": 56,
"placardHeight": 59
}
}
]
}
こんな感じの JSON が取れる。色々ツール書きなおすようにする。
今のところ自分の環境では発生していないけれど、会社で Kindle を複数台買って、Kindle Store で1冊分の支払いで買った技術書なんかを複数の端末で同時に読んでも問題ないのかちょっと気になったので調べた。日本の著作権法だと私的利用目的の複製のOKラインがが家族程度のつながりなので会社はだめだろうみたいなことを弁護士が語る的なのが前あったので。
We want a kindle app account for our business so we can share books we use for business, can you do this?
では、問い合わせろだとか、一般的な制限に引っかからなければいいんじゃないのかとかいう回答がされている。amazon.com ドメインのくせにいい回答が返ってきていない。
Kindle FAQ | Amazon Kindle 3 and Kindle DX Review and News With Fire and Special Touch...
非公式FAQでは、一般的利用としては1アカウントについては7台の端末まで同時に同じ本をロードできるらしい。
もっと探してみたら、Kindle Business とやらがあったので、企業とかで使うのならばこれを利用すべきなのかも。FAQ には、5台以上の注文だと多い分の端末はアカウントと紐付けられていない状態で発送されるとか書いてあったので、5台までは同時に読んでいいのかも。
適当にまとめると、アメリカの Kindle Store 使ってる範囲ならばまあ5台程度までなら大丈夫なのではないだろうかといったところでした。
アフィリエイト忘れた
sendmail の設定もしてないし、それなら Notify My Android に送った方がいいなということで少し Serene Bach をいじった。Perl 全然わかってないけど。HTTP::Request::Common を入れる罰とかも受けた。
lib/sb/App/Receipt.pm で
$self->send_nma($new, $entry);
を
$self->_sendmail("com",$new,$entry);
の下あたりに追加して、適当なところに
sub send_nma {
use HTTP::Request::Common;
my $self = shift;
my ($obj,$entry) = @_;
my $url = "https://www.notifymyandroid.com/publicapi/notify";
my $text = "new comment [". $obj->body ."] by ". $obj->auth . " for " . $entry->subj . " http://oquno.com/" . $entry->id ;
my $data = [apikey => "APIKEY",
application => 'BLOGNAME', # ちゃんとオブジェクトから取れそう
event => 'comment',
description => $text];
my $ua = LWP::UserAgent->new;
$ua->request(POST $url, $data);
}
を追加した。やっぱ Perl 苦手っぽい。
図解ブームが来ると思ったのでこれ図解してみた。reverse_geocode はなくてもいいので省略した。Google ドキュメントの図形描画でそこそこできますね。PNG/JPG/SVG/PDFで出力できるのもよかった。