Your SlideShare is downloading. ×
  • Like
クリップボード監視と外部コマンド実行 #chibapm
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

クリップボード監視と外部コマンド実行 #chibapm

  • 719 views
Published

2013/3/23 に開催された Chiba.pm#2 でトークしたLTのスライドです。

2013/3/23 に開催された Chiba.pm#2 でトークしたLTのスライドです。

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
719
On SlideShare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. クリップボード監視と外部コマンド実行 尾形 鉄次 (OGATA Tetsuji) Twitter: @xtetsuji 2013/3/23 Chiba.pm#2 LT
  • 2. 自己紹介• 尾形 鉄次 (OGATA Tetsuji)• Twitter: @xtetsuji• Blog: http://post.tetsuji.jp/
  • 3. クリップボード監視• 今回はMacの話• Macでの正式名称は「ペーストボード」• クリップボードに変更があったら何か フックを仕掛けることができるか
  • 4. 新ジャンルコピペ• 所定形式の文字列がコピーされたら、 自動的にどこかにペースト、もしくは 事前定義済みのコールバックを実行• いわゆるクリップボード監視
  • 5. pbcopy / pbpaste• Mac OS X 標準コマンド pbcopy / pbpaste • pbcopy: 標準入力をペーストボードへ • pbpaste: ペーストボードを標準出力へ• 詳しくは man 1 pbcopy、man 1 pbpaste
  • 6. 外部コマンド呼び出しは コストがかかる• 個人用途ではそれほど気にならないか もしれないけど外部コマンド呼び出し はコストがかかる• Perl では system()、piped open、そして ``, qx// (backtick) など
  • 7. 外部コマンド呼び出しは コストがかかる• ありがちな考え • 「load averageを監視して負荷が大き いときは処理を控えよう」 • my $uptime = `uptime`; ... • uptime外部コマンド自体の呼び出しの コストが無視できない
  • 8. `uptime`の代わり• CPANで「load average」で検索すると、 UNIX / Linux / *BSD それぞれで uptime 外部コマンドを使わずに load average を 取得できるモジュールが出てくるので それを使おう
  • 9. 話を戻しまして…
  • 10. Mac::Pasteboard• use Mac::Pasteboard;• pbpaste() と pbcopy() 関数をインポート• XS実装で外部コマンド呼び出しは無い• ただUTF-8マルチバイト文字列が化ける (要望どこに出せばいいんだろう)
  • 11. 使い分け• とりあえずMac::Pasteboardのpbpaste()で 以前のクリップボード内容を監視し、 違いがあれば`pbpaste`で取り出す• 多数の呼び出しが発生する監視処理に だけMac::Pasteboardを使えばOKだろう
  • 12. ループ• while (1) { ... }• pboverve.pl &• 用途に応じて AnyEvent->timer(...) を使っ ても良いかも(個人的にwhileループは、 うっかりバグが多くて結構気を使う)• デーモン化が好きな人はApp::Daemon
  • 13. 今回の事例• STOT形式: Twitterの発言形式: • xtetsuji: 今日はこれから飲む。久々の飲み会?かも。 [http://twitter.com/xtetsuji/status/ 314300949604749312]• こういう形式の文字列を捕捉したら、 自分のIRCチャンネルにメモする
  • 14. 処理の流れ• Mac Twitterクライアント「夜フクロウ」• ツイートをSTOT形式でコピー• Perlで作った常駐プログラムがフック• IRCに書き込み(Ikachan的手法)
  • 15. 他への応用• STOT形式以外でも使えるかも• URL文字列をコピーしたら、SQLiteとか で作った自分専用閲覧履歴辞書に格納 とか
  • 16. Mac以外では• Windowsではクリップボード内容をget/ setするコマンドはなさそう • Win32::Clipboard• 原始的なX.org環境ではxsel/xclipとか? • きっとモジュールもあるはず
  • 17. コピペ繰り返す音• 職場で響くリズミカルな音• Windowsでコピー→ペーストを何回も• こういう人を同じ手法で救えないかな• それ以前にVBAとか?
  • 18. ご清聴ありがとうございました