chiba.pm #1 lt @studio3104

21
YAPC::Asia 2012 振り返り @studio3104 Lightning Talk at Chiba.pm #1

Upload: satoshi-suzuki

Post on 24-May-2015

350 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Chiba.pm #1 lt @studio3104

YAPC::Asia 2012 振り返り

@studio3104

Lightning Talk at Chiba.pm #1

Page 2: Chiba.pm #1 lt @studio3104

自己紹介

@studio3104 (Satoshi SUZUKI)

-- Perl歴半年くらい

-- WEB業界2年目

-- 妻、娘、息子います

-- ソシャゲ、公式サイト、パチ(スロ)ンコ

-- こんなのやってます →→→→→→→

-- Perlと心中するらしいです

Page 3: Chiba.pm #1 lt @studio3104

印象的だった言葉Best3

Page 4: Chiba.pm #1 lt @studio3104

第三位

「古典的でも地道にやる」

Page 5: Chiba.pm #1 lt @studio3104

第二位

「Openess is our driver for

excellence」

Page 6: Chiba.pm #1 lt @studio3104

第一位

「シール マジ鬼門」

Page 7: Chiba.pm #1 lt @studio3104

第一位

「シール マジ鬼門」

Page 8: Chiba.pm #1 lt @studio3104

印象的だった人物Best3

Page 9: Chiba.pm #1 lt @studio3104

第三位

Page 10: Chiba.pm #1 lt @studio3104

第二位

Page 11: Chiba.pm #1 lt @studio3104

第一位

Page 12: Chiba.pm #1 lt @studio3104
Page 13: Chiba.pm #1 lt @studio3104
Page 14: Chiba.pm #1 lt @studio3104

YAPC::Asia 2012まだ終わってねーよ!!!

@studio3104

Lightning Talk at Chiba.pm #1

Page 15: Chiba.pm #1 lt @studio3104

自己紹介

@studio3104 (Satoshi SUZUKI)

-- Perl歴半年くらい

-- WEB業界2年目

-- 妻、娘、息子います

-- ソシャゲ、公式サイト、パチ(スロ)ンコ

-- こんなのやってます →→→→→→→

-- Perlと心中するらしいです

Page 16: Chiba.pm #1 lt @studio3104

REVENGEDEMO

Page 17: Chiba.pm #1 lt @studio3104

1 #!/usr/bin/env perl$ 2 $ 3 use strict;$ 4 use warnings;$ 5 use Data::Dumper;$ 6 use DBIx::Handler;$ 7 use JSON::XS;$ 8 use Data::MessagePack;$ 9 $ 10 $| = 1;$ 11 $ 12 my $mp = Data::MessagePack->new();$ 13 $ 14 my $db_user = "root";$ 15 my $db_passwd = "";$ 16 my $db_opt = { RaiseError => 0, PrintError => 1 };$ 17 my $handler = DBIx::Handler->new( "DBI:mysql:database=information_schema:1 27.0.0.1", $db_user, $db_passwd, $db_opt );$ 18 $ 19 my $db;$ 20 my $long_query_time = $handler->dbh->selectrow_array($ 21 "SELECT VARIABLE_VALUE FROM GLOBAL_VARIABLES WHERE VARIABLE_NAME = 'LONG_Q UERY_TIME'");$ 22 $handler->dbh->do("SELECT SLEEP($long_query_time)");$ 23 $ 24 while ( my $json = <STDIN> ) {$ 25 my $slowlog = eval { decode_json($json); };$ 26 next if ($@);$

MySQL slow_log

MongoDB

27 $ 28 unless ( defined $slowlog->{sql} ) {$ 29 print $mp->pack($slowlog);$ 30 next;$ 31 }$ 32 $ 33 my $select_statement;$ 34 if ( $slowlog->{sql} =~ /(select[^\;]+)/i ) {$ 35 $select_statement = $1;$ 36 }$ 37 $ 38 if ( $slowlog->{sql} =~ /^use ([^\;]+)/i ) {$ 39 $db = '`' . $1 . '`';$ 40 }$ 41 $ 42 if ( defined $db && defined $select_statement ) {$ 43 $handler->dbh->do("use $db");$ 44 my $explains = eval { $handler->dbh->selectall_arrayref( "EXPLAIN $selec t_statement", +{ Slice => {} } ); };$ 45 if ( ref $explains eq 'ARRAY' ) {$ 46 $slowlog->{explain} = $explains;$ 47 $slowlog->{database} = $db;$ 48 }$ 49 }$ 50 $ 51 print $mp->pack($slowlog);$ 52 }$

tail

EXPLAIN

store

Page 18: Chiba.pm #1 lt @studio3104

これを

GitHubで

公開したい

Page 19: Chiba.pm #1 lt @studio3104

でもGPL2

よくわかんない

Page 20: Chiba.pm #1 lt @studio3104

スーパー宣伝タイム

Page 21: Chiba.pm #1 lt @studio3104

YAPC::Asia 2012 振り返り

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

@studio3104

Lightning Talk at Chiba.pm #1