YAPC Asia 2010 - lowreal.net

86
「映画にでてくるハッカーになりたい」 cho45 <[email protected]> 株式会社はてな

Transcript of YAPC Asia 2010 - lowreal.net

Page 1: YAPC Asia 2010 - lowreal.net

「映画にでてくるハッカーになりたい」

cho45 <[email protected]>株式会社はてな

Page 2: YAPC Asia 2010 - lowreal.net

自己紹介

Page 3: YAPC Asia 2010 - lowreal.net

id:cho45http://www.lowreal.net/

Page 4: YAPC Asia 2010 - lowreal.net

株式会社はてな

京都8F(@hatena8f)勤務

Page 5: YAPC Asia 2010 - lowreal.net

Perl (バックエンド)

JavaScript (フロントエンド)

Ruby (ツール作り)

Scala (たまに)

Java (Android アプリ)

Page 6: YAPC Asia 2010 - lowreal.net

DSi Browser JS の実装にそれなりに詳しいです

Page 7: YAPC Asia 2010 - lowreal.net

例:DSi ブラウザの textarea でキャレットを表示する方法

JavaScript で textarea に対して focus() させるとキャレットがでる。

この状態で A ボタンを押すとソフトウェアキーボードが開かず改行

を入力することができる。

ただし何かの役に立つわけではない。

Page 8: YAPC Asia 2010 - lowreal.net

趣味

Page 9: YAPC Asia 2010 - lowreal.net

神社巡り

Page 10: YAPC Asia 2010 - lowreal.net

写真

Page 11: YAPC Asia 2010 - lowreal.net

プログラミングコード群: http://github.com/cho45

日記: http://subtech.g.hatena.ne.jp/cho45/

Page 12: YAPC Asia 2010 - lowreal.net

最近作ったもの

Page 13: YAPC Asia 2010 - lowreal.net

P::M::StaticSharedP::M::ServerStatusP::M::Random.Text::Xatena (はてな記法っぽい記法)

Niro (個人用ブログツール、Plack, DBIx::Skinny)

JSDeferred (JS 機能追加など)

git-branch-recent (Ruby)

Page 14: YAPC Asia 2010 - lowreal.net

HTML::Trim (HTML タグを考慮しつつ文字列トリム)DBIx::RewriteDSN (DBI レベルでデバッグ時一括で DSN 書きかえ)togetter_block_all_users.user.js (togetter で纏まれているユーザを一括ブロック)bdfcanvas.js (BDFフォントをcanvasに描画)oecan.js (お絵描きツール)Chemr-js (リファレンスひき支援)jAutoPagerize (なんかあれ)

Page 15: YAPC Asia 2010 - lowreal.net

本題

Page 16: YAPC Asia 2010 - lowreal.net

映画にでてくるハッカーの例

Page 17: YAPC Asia 2010 - lowreal.net

何かわからないが画面に文字が流れる

Page 18: YAPC Asia 2010 - lowreal.net

ものすごい可視化がされてる

Page 19: YAPC Asia 2010 - lowreal.net

よくわからない方法で暗号を解く

Page 20: YAPC Asia 2010 - lowreal.net

見ていて鳥肌がたつ

Page 21: YAPC Asia 2010 - lowreal.net

でもこう…もうちょい 

Page 22: YAPC Asia 2010 - lowreal.net

現実的かつかっこよくならないか?

Page 23: YAPC Asia 2010 - lowreal.net

仕事で使いたい 

Page 24: YAPC Asia 2010 - lowreal.net

I HATE RIAJU.

Page 25: YAPC Asia 2010 - lowreal.net

コーディングしてモテたい

Page 26: YAPC Asia 2010 - lowreal.net

実用性+

Page 27: YAPC Asia 2010 - lowreal.net

実用性だけでも面白くない

遊びだけじゃただのクソアートだ

Page 28: YAPC Asia 2010 - lowreal.net

というわけで

Page 29: YAPC Asia 2010 - lowreal.net

使えそうで使えない

でもちょっと使えるツール群

Page 30: YAPC Asia 2010 - lowreal.net

および

Page 31: YAPC Asia 2010 - lowreal.net

使えそうで実際使える

というかマジ使えるツール

Page 32: YAPC Asia 2010 - lowreal.net

のご紹介をさせて頂きます

Page 33: YAPC Asia 2010 - lowreal.net

前置き終了

Page 34: YAPC Asia 2010 - lowreal.net

実用的かつ、映画的ハッカーを追求

Page 35: YAPC Asia 2010 - lowreal.net

そのいち

Page 36: YAPC Asia 2010 - lowreal.net

tail -f /etc/httpd/access_log

Page 37: YAPC Asia 2010 - lowreal.net

ハハハ、ワロス

何をいってるんだ

Page 38: YAPC Asia 2010 - lowreal.net

ログを tail -f して

人間が得られるもの

Page 39: YAPC Asia 2010 - lowreal.net

1.動体視力

Page 40: YAPC Asia 2010 - lowreal.net

動体視力を鍛えたいわけじゃない ハッカーになりたいのだ

Page 41: YAPC Asia 2010 - lowreal.net

別に tail -f は悪くないただ何かが足りない

Page 42: YAPC Asia 2010 - lowreal.net

そこでハッカー的なことを加える

Page 43: YAPC Asia 2010 - lowreal.net

ハッカー的なこと

Page 44: YAPC Asia 2010 - lowreal.net

ハッカー的なこと

Page 45: YAPC Asia 2010 - lowreal.net

すごい可視化

Page 46: YAPC Asia 2010 - lowreal.net

realtimeresponsegraph.pl

Page 47: YAPC Asia 2010 - lowreal.net

tail -f a.log | realtimeresponsegraph.pl

tail -f からレスポンスタイムを即座にグラフにする

パフォーマンス改善の結果をすぐ出せる

Page 48: YAPC Asia 2010 - lowreal.net

レスポンスタイムグラフ

Page 49: YAPC Asia 2010 - lowreal.net

レスポンスタイムグラフ

はてなでは一日分を Hadoop で処理してグラフ化している

全解析は一日かかるので本番での

チューニング結果がすぐ解らない

Page 50: YAPC Asia 2010 - lowreal.net

demo

Page 51: YAPC Asia 2010 - lowreal.net

realtimeresponsegraph.pl の実装

Page 52: YAPC Asia 2010 - lowreal.net

use OpenGL;

Page 53: YAPC Asia 2010 - lowreal.net

select();

Page 54: YAPC Asia 2010 - lowreal.net

vec();

Page 55: YAPC Asia 2010 - lowreal.net

fileno();

Page 56: YAPC Asia 2010 - lowreal.net

my $rin = '';vec($rin, fileno(STDIN), 1) = 1;LINE: while (select($rin, undef, undef, $max_wait)) { # ...}

Page 57: YAPC Asia 2010 - lowreal.net

いろいろな機能

グルーピング (デフォルトではHTTPメソッドごとに別のラインにする)Apache ログフォーマットパーサジェネレータ

Page 58: YAPC Asia 2010 - lowreal.net

だいぶ良くなったがまだ何かが足りない

Page 59: YAPC Asia 2010 - lowreal.net

ハッカー的なこと

Page 60: YAPC Asia 2010 - lowreal.net

ハッカー的なこと

Page 61: YAPC Asia 2010 - lowreal.net

ものすごい可視化

Page 62: YAPC Asia 2010 - lowreal.net

realtimeaccesstrack.pl

Page 63: YAPC Asia 2010 - lowreal.net

realtimeaccesstrack.pl

直近アクセスを可視化 特にアクセスが多いクライアントを抽出どこにどうやってアクセスしていっているかがわかる

DOSアタック的クライアントの即時検出

ユーザ行動分析

Page 64: YAPC Asia 2010 - lowreal.net

demo

Page 65: YAPC Asia 2010 - lowreal.net

realtimeaccesstrack.pl の実装

Page 66: YAPC Asia 2010 - lowreal.net

use OpenGL;

Page 67: YAPC Asia 2010 - lowreal.net

select();

Page 68: YAPC Asia 2010 - lowreal.net

vec();

Page 69: YAPC Asia 2010 - lowreal.net

fileno();

Page 70: YAPC Asia 2010 - lowreal.net

realtimeaccessgraph.plとほぼ同じ

Page 71: YAPC Asia 2010 - lowreal.net

だいぶ良くなったがまだ何かが足りない

Page 72: YAPC Asia 2010 - lowreal.net

ハッカー的なこと

Page 73: YAPC Asia 2010 - lowreal.net

原点に還って

Page 74: YAPC Asia 2010 - lowreal.net

画面に何か流れる

Page 75: YAPC Asia 2010 - lowreal.net

Devel::KYTProf

Page 76: YAPC Asia 2010 - lowreal.net

Devel::KYTProf

id:onishi 作 (NYTProf ではない)

DBI とか memcached とか、IO に関わる処理を処理時間とともにターミナルに全て出力

空気 読んで とってくれる プロファイル だとかKYoTo Prof だとか諸説ありますが知りません

Page 77: YAPC Asia 2010 - lowreal.net

便利な点

Page 78: YAPC Asia 2010 - lowreal.net

吐かれるSQLがわかる

Page 79: YAPC Asia 2010 - lowreal.net

どこから吐かれたか

わかる!

Page 80: YAPC Asia 2010 - lowreal.net

かかった時間がわかる

Page 81: YAPC Asia 2010 - lowreal.net

demo

Page 82: YAPC Asia 2010 - lowreal.net

まとめ

Page 83: YAPC Asia 2010 - lowreal.net

realtimeresponsegraph.pl実用度 ★★★

かっこよさ ★★

Page 84: YAPC Asia 2010 - lowreal.net

realtimaccesstrack.pl実用度 ★★

かっこよさ ★★★

Page 85: YAPC Asia 2010 - lowreal.net

Devel::KYTProf実用度 ★★★★★

かっこよさ ★★★

Page 86: YAPC Asia 2010 - lowreal.net

ご静聴ありがとうございました

www.lowreal.net