2006年05月31日

【動画有り】MacBookとPlaggerServerで盗難対策ソリューションを構築

このネタもそろそろ終わり。

Push::Move - MacBookが動かされるのを検知してPlaggerのjobが走るPlugin

誰かがMacBookを勝手に持ち出したら携帯にメールとかできるですよ。
動かしたときにiSightで画像をとってenclosureに画像を突っ込んでメールするとか。
を実装しただけなんですけどね。


go youtube

やってる事は、誰かがMacBookを動かしたら「つうほうしますた!」と音声で警告しつつDVDをEjectをして威嚇してる隙にiSightで顔写真をとってMacBookの持ち主に警告メールを送ってます。
で、最後にshutdownしてデータの保護を行います。

まだまだ応用できそうですね。でもPlagger本来のFeedとか関係ないですね。でも物理と繋がると楽しいね。

動かすにはPlagger::Plugin::Filter::iSightEnclosureを入れて、isightcaptureをPATHの通った所に置いて下さい。

global:
plugin_path:
timezone: Asia/Tokyo

plugins:
- module: Server::Engine::PreFork

- module: CustomFeed::Debug
config:
title: 'UuGoKasuNap!'
link: 'http://localhost/'
entry:
- title: "2 pow she master!!"
link: 'http://localhost/1'
body: 'you got mail'

- module: Server::Protocol::PLAGGER
config:
port: 9901

- module: Server::Push::Move
config:
plagger_host: 127.0.0.1
plagger_port: 9901
amstracker: /Users/user/bin/AMSTracker
adjust: 10

- module: Notify::Eject
- module: Publish::Speech
- module: Filter::iSightEnclosure
config:
inline: 1
# - module: Filter::BodyEnclosures

- module: Publish::Gmail
config:
attach_enclosures: 1
mailto: mobile mailto
mailfrom: mailfrom
mailroute:
via: smtp
host: localhost

- module: Publish::Pipe
config:
command: shutdown -h now

Posted by Yappo at 15:11 | Comments (0) | TrackBack

2006年05月30日

Push::Move - MacBookが動かされるのを検知してPlaggerのjobが走るPlugin

MacBookとかは、せっかく動きを入力要素として使えるんだからPlaggerへのプラグイン書いたらすごくね?
って事で書いてみた。


go youtube

誰かがMacBookを勝手に持ち出したら携帯にメールとかできるですよ。
動かしたときにiSightで画像をとってenclosureに画像を突っ込んでメールするとか。

入力も出力も物理世界とつながった!
なんつうかPlaggerである意味が(ry

でもね、どうにかして震度を抽出できるようになったら地震情報のFeedをリアルタイムで生成とかできるですよ。
plagger_hostとか書き換えれば遠隔地にも送信できるし。なんかいろいろできそう。

動かすにはAMSTrackerが必要です。

Plagger::Plugin::Server::Push::Move

global:
plugin_path:
timezone: Asia/Tokyo

plugins:
- module: Server::Engine::PreFork

- module: CustomFeed::Debug
config:
title: 'ALERT!!!'
link: 'http://localhost/'
entry:
- title: "Don't move!!"
link: 'http://localhost/1'
body: 'NO! NO! NO! NO!'

- module: Server::Protocol::PLAGGER
config:
port: 9901

- module: Server::Push::Move
config:
plagger_host: 127.0.0.1
plagger_port: 9901
amstracker: /Users/name/bin/AMSTracker
adjust: 10

- module: Notify::Eject
- module: Publish::Speech

まえの仮想デスクトップのやつは、はてブで100Usersかようつべで10,000Views突破したら公開しようと思ってたけど、大ウケはしなかったようだ。

Posted by Yappo at 14:42 | Comments (0) | TrackBack

Hatena::Screenshot - はてなスクリーンショットをhackしたURL 2スクリーンショットコンバータ

はてなダイアリー日記 - http 記法の拡張について

URLなどのリンクを簡単に記述する http 記法を使って、そのページのスクリーンショットを簡単に作成、日記で紹介できるようになりました。
というワケで、この記法で生成されたスクリーンショットのURLを取得するモジュールを作りました。
Hatena::Screenshot

使い方

  use Hatena::Screenshot;
my $jitensya = Hatena::Screenshot->new(
cookies => '/home/user/.w3m/cookie',
login => { id => 'hatenaid' }
);

use Hatena::Screenshot;
use HTTP::Cookies::Guess;
my $jitensya = Hatena::Screenshot->new(
cookie_jar => HTTP::Cookies::Guess->create('/home/user/.w3m/cookie'),
login => { id => 'hatenaid' }
);

$jitensya->convert(qw(http://b.hatena.ne.jp/ http://i.yappo.jp/));
my $normal = $jitensya->normal;
print $normal->{http://b.hatena.ne.jp/};
my $small = $jitensya->small;
print $small->{http://b.hatena.ne.jp/};
my $large = $jitensya->large;
print $large->{http://b.hatena.ne.jp/};

print $jitensya->convert_lite('http://www.cpan.org/')->{normal};
print $jitensya->convert_once('http://www.google.com/');

こんな感じで、変換したいURLの一覧をリストで渡して、欲しいサイズのリストを取得する感じです。
変換したいURLが一つの時には簡単に変換する仕組みもあります。

オプションとかは後で変えるかも、HTTP::Cookies::Guessの内蔵をやめるかも。
今のところHTTP::Cookiesで普段使用しているブラウザのCookieを利用してはてなにアクセスしてますが、id/passを指定するだけで使えるようにもします。

内部的には、はてな日記に渡されたURLを[htt:image]に変換して書き込み、はてなにスクリーンショットのURLに変換させたものを本番ページをスクレイピングして変換後のURLをぶっこ抜きます。
特定の日付をストレージ代わりに使う感じです。ストレージというよりかはコンバータかな。
で、デフォルトは0000年00月00日を使っているので、この日付を使っている人は全部消えちゃいます。
回避策は

  my $jitensya = Hatena::Screenshot->new(
cookies => '/home/user/.w3m/cookie',
login => { id => 'hatenaid' },
date => '10000101',
);
こんな感じです。1000年01月01日にデータを書き込みます。

Text::Hatenaへの拡張もすると便利そうだからCPANにうpしよっと♪

Posted by Yappo at 11:25 | Comments (0) | TrackBack

HTTP::Cookies::Guess - 自動的にブラウザを判別する

Plagger::Cookiesに、ファイル名のパターンから自動的にブラウザを推測して、ファイル名に適したHTTP::Cookies::*のオブジェクトを返してくれて便利なのですが
Plagger::Cookiesの機能をPlagger以外でも使いたい!って事でほぼコピーしてHTTP::Cookies::Guessを作りました。大元を作られたmiyagawaさんに感謝。

HTTP::Cookies::Guess

  use HTTP::Cookies::Guess;
$cookie_jar = HTTP::Cookies::Guess->create('/home/user/.w3m/cookie');
$cookie_jar = HTTP::Cookies::Guess->create(file => '/home/user/.w3m/cookie');
$cookie_jar = HTTP::Cookies::Guess->create(file => '/home/user/.w3m/cookie'i, type => 'w3m');

$cookie_jar = HTTP::Cookies::Guess->create(file => '/home/user/cookies.txt'); # mozilla

こんな感じで使えます。

HTTP::Cookiesを用いたモジュール/アプリを書く時に使うと、自動的に各種ブラウザに楽に対応できます。

Posted by Yappo at 10:10 | Comments (0) | TrackBack

2006年05月26日

【デモ動画】MacBookの仮想ディスクトップをモーションコントロールで切り替え

VirtueDesktopsとParallelsを入れてわーい^^わーい^^してたら。
SmackBook Proというのを発見した。
でもこれは、他の仮想ディスクトップソフト使ってるし、パッチ当てなきゃいけないのでめんどくさいし、叩いてると壊れそう(^^;
なので考えたあげくPerlとAppleScriptを組み合わせてVirtueDesktopsでも動くようにしてみた。

goto YouTube
センサーの値が結構狭めなので右に移動しようとしたら左に行ったりとかで、ちょっとコツがいります。

多分、これを応用してMacBook本体をマウス代わりにして絵を描くとかできそう。
需要がありそうだったら、コードを整形して公開します。
多分geekでもhackerでも無い人でも普通に使えると思う。

Posted by Yappo at 03:06 | Comments (9) | TrackBack

2006年05月25日

HTTP::Cookies::w3m - w3mが保存しているcookieを取り扱う

PlaggerにCookie sharing frameworkが導入されたんだけど自分はserver上でPlagger動かしてるから、そのままでは使えなかった。
そこでmiyagawaさんにHTTP::Cookies使って実装してるよ。と言われたのでw3mでもCookie sharing frameworkを使うためにHTTP::Cookies::w3mを実装しました。(local)
Plaggerでの設定例

Plaggerだけではなく、ちょっとしたスクレイピングをしたい時でもパスワードの管理を気にしないで作りたい時に有用だと思います。
w3mでちょろっとログインしてからcookieだけを再利用とかね。

HTTP::Cookiesってcookieファイルへの書き込みもサポートしてるのですが、w3mではとりあえず非サポートです。
サポートしちゃうとcookieファイルをちょっと壊しちゃう事になるので。
具体的には~/.w3m/cookieの一列目にCookieを取得したときのURLが入るけどHTTP::Cookiesでは、そこまで面倒がみれないと。
フラグの類いも未対応なフラグがあるので、ちょっと壊しちゃう。

w3mのソースをみる限りだと一列目は無くても良さそうだけどフラグがなぁ。。。
adhookで既存の情報を壊さずにHTTP::Cookiesで新規作成したcookieのみ変なデータで書き込むようにしようかしらね。

Posted by Yappo at 02:41 | Comments (0) | TrackBack

2006年05月18日

MacBookでBootCamp

1.箱を開ける
2.バッテリーを外す
3.ネジでふたあける
4.メモリ抜く
5.メモリ押し込む
6.ふた閉める
7.バッテリーつける
8.電源onするが、ポーンって音しない
9.BootCampでぐぐる
10.BootCampのダウンロード画面にMacBookがない事に気づく
11.とりあえずMacBook Proを選択
12.BootCampをinstallしたけど、どこに入ってるかわからずに迷う
13.Boot Camp アシスタント起動
14.トリプルブートに使用と思ったが、めんどいので諦める
15.XP用に15G割り当てる
16.CD-R入れてドライバ作る
17.XPのdisc入れて再起動
18.Windows XPのインストールする
19.半角全角ボタンがないので泣きながらSを押して日本語キーボード選択
20.インストール終わる
21.時刻設定で何故か9時間進んでるので、直す
22.Windows XPで起動する
23.とりあえずCtrl-Alt-Delしてみる
24.画面が青くなる
25.Windows XPがまた起動する
26.さっきCD-Rで作ったドライバ入れる
27.長い
28.終わる
29.再起動
30.普通にWindowsが動いてびっくり
31.半角全角キーがなくてうろたえる
32.入力場所によってはalt-@で切り替えできた
33.マウスの右クリックができなくて亡く
34.とりあえずMac OSに戻るため再起動
35.なぜかWindows起動
36.もう一度再起動
37.何故か(ry
38.コンパネに起動ディスク発見
39.無事Mac OSで起動
40.ターミナルでircやろうとする
41.なんかもうだめぽ
42.otsuneさんにiTermを教えてもらう
43.ターミナル環境ととのう!
44.Ctrl-SpaceするとSpotlightが開く
45.うざい
46.Cmd-Spaceにバインド変える
47.モニタの色がキモイのでAdobeのに変える

Windowsの空きディスクは11Gくらい残ってる。
最初の頃はUSBカメラの認識されてた気がするけど、なんか見えないぽ

ToDo
・Mac OS/WindowsでUSBシリアルしたい!
・Mac OS/WindowsでW-ZERO3をつないで通信したい!
・WindowsでWIFIしたい!
・Windowsで右クリックしたい!
・Windowsのキーボード環境を向上したい!
 音量、輝度、半角全角、スクリーンショット
・Mac OSとWindowsのパーテーション双方でデータのやり取りしたい!
・FireFoxのフォントがキモイのをどうにかしたい!
・画面を明るめにすると目がつらくなって、暗くすると薄くてみにくいのをどうにか汁!
・へんぴn

で、キーボードとマウス問題をドウニカしようとしてAppleKbWinを入れたけどエラー出て使えないしiMouseClickは、何か微妙に挙動が違うぽ。

追記:なんかデフォルトが気持ち悪いので自分でキャリブレーションしてみたColor_LCD_Yappo.icc

Posted by Yappo at 18:58 | Comments (13) | TrackBack

2006年05月17日

MacBook


あとで書く人の顔が思い浮かんだとおもったら手にしていた。もうだめぽ

Posted by Yappo at 21:42 | Comments (1) | TrackBack

2006年05月11日

Plagger Server のデモンストレーション

とりあえず動画を見てください。
Plagger Serverが動作するときのWinkによる動画デモ
SMTP/POP3/HTTPを一つのPlaggerでハンドリングしています。

実装予定プロトコルは、 telnet imap ftp syslog nagios irc gtalk msn smtp/tls esmtp https ssh p2p mysql? HE Boofy
左のものから優先順位高いかも。

multibbs.yaml

global:
plugin_path:
timezone: Asia/Tokyo

plugins:
- module: Aggregator::Simple
- module: Server::Engine::PreFork

- module: Server::Protocol::HTTP
config:
port: 10080
host: 192.168.0.1

- module: Server::Protocol::SMTP
config:
port: 10025
host: 192.168.0.1

- module: Server::Protocol::POP3
config:
port: 10110
host: 192.168.0.1
user: user
password: password

- module: Server::Pull::SimpleBbs
rule:
expression: $args->{req}->protocol->service eq 'http' && $args->{req}->protocol->uri->path =~ m!^/bbs! && $args->{feed}->link =~ m!^pserv://bbs/!


- module: Server::Pull::SimpleMailBbs
rule:
expression: $args->{req}->protocol->service eq 'smtp' && $args->{feed}->link =~ m!^pserv://bbs/!

- module: Server::Pull::POP3
rule:
expression: $args->{req}->protocol->service eq 'pop3'

- module: Server::Pull::LivedoorReader
rule:
expression: $args->{req}->protocol->service eq 'http' && $args->{req}->protocol->uri->path =~ m!^/+api/!

- module: Subscription::Config
config:
feed:
- url: file:///tmp/multibbs.xml

- module: Publish::Feed
config:
format: RSS
dir: /tmp
filename: multibbs.xml


Posted by Yappo at 05:14 | Comments (2) | TrackBack

2006年05月01日

MPEG::MobileInfo 携帯の動画を撮影した機種や撮影日時を読み出すPerlモジュール

Milano::Monolog: 着メロ・着うたのファイルから曲名やアーティスト名を読み出すPerlモジュールにインスパイヤされて公開してみます。
photos@yappoというpictoもどきで使っています。
CPANにうpろうと思い立ってからかなりの時間が経過してしまっとりますw

みらのさんのと違って、こっちのはMPEG4を純粋にパースしてくだけだから各種方言には対応できてない感じですな。

MPEG::MobileInfo

Posted by Yappo at 13:51 | Comments (0) | TrackBack

Hatena::Keyword::Cacher を作りました

<TransFreeBSD> はてなWikiはキーワードへリンクしないの?といってみる

<otsune_s> 昨日のnaoyaダイアリーのモジュールを使って解決してくれそげ

<TransFreeBSD> あれを使うのとキーワード一覧をとってきて使うのはどちらが楽だろうとか思う。キャッシュの事を考えた時。

なんてやり取りがあったので
naoyaのはてなダイアリー - Hatena-Keyword-0.02のHatena::Keywordをちょこっと拡張。

Hatena::Keyword::Cacherっていう一度はてなから取得した結果を透過的にローカルキャッシュするモジュール作りました。
Cacheにすると将来的にバッティングしそうだからキャッシュ人にしといてます。

毎回毎回XMLRPCでつなげるのは、はてなもこっちも良い事ではないのでキャッシュできるんならキャッシュしましょう。
透過的に実装できるなら透過的に実装してHatena::Keywordと同じ使い方ができるようにしましょう。
と言う感じです。
あとで、これ使ってKwikiへの実装もしてみます。


夕方ごろにCPANにうpする

Posted by Yappo at 10:16 | Comments (0) | TrackBack