SlideShare una empresa de Scribd logo
1 de 33
Descargar para leer sin conexión
ISUCONで予選落ちした話 
(HHVM対応) 
uzulla
このスライドはPHP Conference 2014の懇親会での飛び込みLT 
での発表資料です。 
飛び込みLTがあるのしらなかったので、10分くらいでつくった 
資料ですので、雑な所や間違いがあったらすみません。 
一部が当日と変わっておりますが、ご了承下さい。
YAPC::Asia 2014 
• 自己紹介ですが、 
• Perlのカンファレンス 
• PHPの話をしてベストトーク賞をとりました! 
• でもPHPerです!
I ❤️ 
PHP
ISUCON? 
• iikanjini speedup contest. 
• http://isucon.net/ 
• お題のアプリを高速化する 
• AWSのm3.xlargeでうごけば何でもあり 
(予選は1台、本戦は3台(去年)) 
• 8時間で全部やりきるスプリントレース
出場しました 
• 若者二人と私 
• PHP(HHVMで) 
• 予選落ちしました… 
• 最終スコアは37500 
• (足切りスコアは38000… 
• こんな男の話です
予選突破したdekokun 
さん!!!たのみました 
ぞ!!!
とはいえ 
• あとちょっとで本戦だったので、その話をします 
• HHVMだし
トピック 
• PHP 
• HHVM + nginx 
• memcached 
• xhprof 
• param tune 
• phpstorm
HHVMを用意する 
• AmazonLinux 
• コードからビルドすると 
3時間くらいかかってつらい 
• 「Cent系にYumほしい」「そんなものはない」 
• 「3rdパーティーならあるぞ」>古い
PHPをHHVMで動くように修正する 
• サンプル実装はLimonadeで実装されていた 
• static $message = nullとかを消した 
• (globalとか希にあるので修正する 
• (session_start()を消すなど
HHVMの調整 
• config.hdf(一部抜粋) 
Server { 
Type = fastcgi 
ThreadCount = 10 
FileSocket = /tmp/hhvm.sock 
RequestTimeoutSeconds = 60 
DnsCache { 
Enable = true 
TTL = 600 # in seconds 
} 
}
but ... 
• config.hdf is depricated 
( Pail said. ) 
(今さっき聞きました)
• いまならphp.iniでいける(らしい) 
• UNIX domain socket 
• ポート枯渇対策として 
• hhvm.server.gzip_compression_level = 0 
• gzip をオフに(nginx のssiを使いたいので) 
• 「正しくオフにする方法がわからん」
nginx の調整 
worker_processes 8; 
worker_rlimit_nofile 100000; 
http{ 
keepalive_timeout 120; 
gzip off; 
} 
• gzip はlocalhostから叩くベンチでは不要 
• (ログ系は全部コメントアウト(誤差に近い…)
mysqlにindexを張る 
• 省略!!! 
• 効果大 
• PHPの勉強よりMysqlの勉強をした方が性能がでますよ
mysqlはちゃんと永続接続を使う 
• PDO::ATTR_PERSISTENT => true 
• 'mysql:host=...;dbname=hoge;charset=utf8' 
• charset指定にいまだにset names utf8は無い
xhprofで見当をつける 
• HHVMには最初から入ってる最高
+function __xhprof_save() { 
+ $data = xhprof_disable(); 
+ $runs = new XHProfRuns_Default(); 
+ $run_id = $runs->save_run($data, 'bank'); 
+ echo "<a href="http://***.***.***.***/ 
xhprof/xhprof_html/index.php? 
run={$run_id}&source=bank">xhprof Result</a>n"; 
+} 
+ 
+register_shutdown_function('__xhprof_save'); 
+ 
+xhprof_enable();
memcached でキャッシュ 
• 普通にmemcached(拡張)はHHVMにはいってて便利 
• 特に考える事なし 
• Memcache::pconnect() 
• (ただし、十分に速いMysqlは十分に速い)
HHVMのmemcachedの罠 
• セッションに使えない 
• 自分でセッションハンドラ書く事に 
• 雑なサンプル 
https://github.com/uzulla/php_memcache
apc関数 
• memcachedなくてもある程度いけるよね 
• HHVMには最初からはいってる、便利! 
• でも、使い込んだ事は無いです
パラメタチューニング 
net.core.somaxconn=65535 
net.ipv4.tcp_tw_recycle = 1 
net.ipv4.tcp_tw_reuse = 1 
net.ipv4.tcp_fin_timeout = 30 
ポート枯渇しますからね
闇のパラメタチューニング 
vm.dirty_background_ratio=10 
vm.dirty_ratio=30 
vm.dirty_expire_centisecs=200000 
vm.dirty_writeback_centisecs=50000 
※そんなに効果はないぞ!
Mysqlパラメタチューニング 
innodb_write_io_threads = 16 
innodb_read_io_threads = 16 
innodb_thread_concurrency = 32 
max_allowed_packet=300M
闇のMysqlパラメタチューニング 
innodb_flush_log_at_trx_commit = 0 
innodb_flush_method=nosync 
※そんなに効果はないぞ!
PHPStorm便利 
• めっちゃ急いで書いてる場合、 
• PHPStormがSyntaxErrorをバンバンあげてくれるので便利 
• これはかなり重要(ハマらないで済むんだよ!) 
• 本番サーバーのコードを直接操作もできる(sftp)
daemon化について 
• supervisord 
• あるいはinit.d (今回こちらを採用
結果として 
• 私はダメでしたが、PHPで突破した人結構いる 
• 6 / 23チーム 
• PHP結構イケてるぞ? 
• (実際の所言語だけではない世界)
まとめ 
• HHVMは最初から色々エクステンションはいっていて便利 
• ただ、まだzmq(zeromq)とか、足りないものもちらほら 
• PHPだから勝てないという事はない 
• VarnishとMysql(SQL)の知見があれば勝てる…かもしれな 
い
PHPの人も、もっとスピード求めまし 
ょう! 
• PHPの高速化の知見はあまり共有されていないような気が… 
• 秘伝のタレとかを公開しましょう! 
• 是非!! 
• 他の言語にまけないようにがんばるぞい!
何故か? 
• 最初PHPは初期実装漏れしていた 
• 「PHPは遅い(勝てない」という間違った(?)イメージ 
• 「その幻想をぶちこわす!」 
• 頑張るぞー(今回予選落ちだけど)
• ところでreactPHP速くて面白いんですけど 
• だれか好きな人いますか?? 
• 友達になってください!! 
• twitter:uzulla 
• ご静聴ありがとうございました!!!

Más contenido relacionado

La actualidad más candente

PHP x AWS でスケーラブルなシステムをつくろう
PHP x AWS でスケーラブルなシステムをつくろうPHP x AWS でスケーラブルなシステムをつくろう
PHP x AWS でスケーラブルなシステムをつくろうTaiji INOUE
 
PHPとJavaScriptの噺
PHPとJavaScriptの噺PHPとJavaScriptの噺
PHPとJavaScriptの噺Shogo Kawahara
 
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansaiHisateru Tanaka
 
Behat Driven Development
Behat Driven DevelopmentBehat Driven Development
Behat Driven DevelopmentRyo Tomidokoro
 
php and sapi and zendengine2 and...
php and sapi and zendengine2 and...php and sapi and zendengine2 and...
php and sapi and zendengine2 and...do_aki
 
フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由Kenichi Mukai
 
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~Kei IWASAKI
 
PHP AST 徹底解説(補遺)
PHP AST 徹底解説(補遺)PHP AST 徹底解説(補遺)
PHP AST 徹底解説(補遺)do_aki
 
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い sasezaki
 
PHPの今とこれから 2013
PHPの今とこれから 2013PHPの今とこれから 2013
PHPの今とこれから 2013Rui Hirokawa
 
PHP AST 徹底解説
PHP AST 徹底解説PHP AST 徹底解説
PHP AST 徹底解説do_aki
 
PHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作ったPHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作ったHironobu Saitoh
 
8時間耐久PHPUnitの教室
8時間耐久PHPUnitの教室8時間耐久PHPUnitの教室
8時間耐久PHPUnitの教室Yusuke Ando
 
PHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考えるPHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考えるTakuya Sato
 
Hack/HHVM 入門
Hack/HHVM 入門Hack/HHVM 入門
Hack/HHVM 入門y-uti
 
php開発で使うタスクランナー gulp
php開発で使うタスクランナー gulpphp開発で使うタスクランナー gulp
php開発で使うタスクランナー gulpYuuki Takezawa
 
はじめてLaravelさわった 第86回php勉強会
はじめてLaravelさわった 第86回php勉強会はじめてLaravelさわった 第86回php勉強会
はじめてLaravelさわった 第86回php勉強会Osamu Kawasaki
 

La actualidad más candente (20)

PHP x AWS でスケーラブルなシステムをつくろう
PHP x AWS でスケーラブルなシステムをつくろうPHP x AWS でスケーラブルなシステムをつくろう
PHP x AWS でスケーラブルなシステムをつくろう
 
実"戦"CakePHP Plugin
実"戦"CakePHP Plugin実"戦"CakePHP Plugin
実"戦"CakePHP Plugin
 
PHPとJavaScriptの噺
PHPとJavaScriptの噺PHPとJavaScriptの噺
PHPとJavaScriptの噺
 
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
 
Behat Driven Development
Behat Driven DevelopmentBehat Driven Development
Behat Driven Development
 
php and sapi and zendengine2 and...
php and sapi and zendengine2 and...php and sapi and zendengine2 and...
php and sapi and zendengine2 and...
 
フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由
 
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
 
PHP AST 徹底解説(補遺)
PHP AST 徹底解説(補遺)PHP AST 徹底解説(補遺)
PHP AST 徹底解説(補遺)
 
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
 
PHPの今とこれから 2013
PHPの今とこれから 2013PHPの今とこれから 2013
PHPの今とこれから 2013
 
PHP AST 徹底解説
PHP AST 徹底解説PHP AST 徹底解説
PHP AST 徹底解説
 
PHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作ったPHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作った
 
8時間耐久PHPUnitの教室
8時間耐久PHPUnitの教室8時間耐久PHPUnitの教室
8時間耐久PHPUnitの教室
 
PHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考えるPHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考える
 
Hack/HHVM 入門
Hack/HHVM 入門Hack/HHVM 入門
Hack/HHVM 入門
 
PHPにおけるI/O多重化とyield
PHPにおけるI/O多重化とyieldPHPにおけるI/O多重化とyield
PHPにおけるI/O多重化とyield
 
PHPコアから読み解くPHP5.5
PHPコアから読み解くPHP5.5PHPコアから読み解くPHP5.5
PHPコアから読み解くPHP5.5
 
php開発で使うタスクランナー gulp
php開発で使うタスクランナー gulpphp開発で使うタスクランナー gulp
php開発で使うタスクランナー gulp
 
はじめてLaravelさわった 第86回php勉強会
はじめてLaravelさわった 第86回php勉強会はじめてLaravelさわった 第86回php勉強会
はじめてLaravelさわった 第86回php勉強会
 

Destacado

HTML5 Conference 2015 Design Sprint
HTML5 Conference 2015 Design SprintHTML5 Conference 2015 Design Sprint
HTML5 Conference 2015 Design SprintYukio Andoh
 
Web of Technologies
Web of TechnologiesWeb of Technologies
Web of Technologiesdynamis
 
Beyond CSS Architecture
Beyond CSS ArchitectureBeyond CSS Architecture
Beyond CSS Architecture拓樹 谷
 
Polymerで作る次世代ウェブサイト
Polymerで作る次世代ウェブサイトPolymerで作る次世代ウェブサイト
Polymerで作る次世代ウェブサイトEiji Kitamura
 
LINE@アカウントページ・お店トーク・LINE電話・ポスター等
LINE@アカウントページ・お店トーク・LINE電話・ポスター等LINE@アカウントページ・お店トーク・LINE電話・ポスター等
LINE@アカウントページ・お店トーク・LINE電話・ポスター等新潟コンサルタント横田秀珠
 
Great Tools Heavily Used In Japan, You Don't Know.
Great Tools Heavily Used In Japan, You Don't Know.Great Tools Heavily Used In Japan, You Don't Know.
Great Tools Heavily Used In Japan, You Don't Know.Junichi Ishida
 
【ハンズオン】jQuery+HTML5 APIでスライドショーを作ろう
【ハンズオン】jQuery+HTML5 APIでスライドショーを作ろう【ハンズオン】jQuery+HTML5 APIでスライドショーを作ろう
【ハンズオン】jQuery+HTML5 APIでスライドショーを作ろうMitsuo Kawashima
 
apachehereというPHPのBuiltin Serverっぽいやつをつくった
apachehereというPHPのBuiltin ServerっぽいやつをつくったapachehereというPHPのBuiltin Serverっぽいやつをつくった
apachehereというPHPのBuiltin ServerっぽいやつをつくったJunichi Ishida
 

Destacado (9)

HTML5 Conference 2015 Design Sprint
HTML5 Conference 2015 Design SprintHTML5 Conference 2015 Design Sprint
HTML5 Conference 2015 Design Sprint
 
Web of Technologies
Web of TechnologiesWeb of Technologies
Web of Technologies
 
Beyond CSS Architecture
Beyond CSS ArchitectureBeyond CSS Architecture
Beyond CSS Architecture
 
Polymerで作る次世代ウェブサイト
Polymerで作る次世代ウェブサイトPolymerで作る次世代ウェブサイト
Polymerで作る次世代ウェブサイト
 
LINE@アカウントページ・お店トーク・LINE電話・ポスター等
LINE@アカウントページ・お店トーク・LINE電話・ポスター等LINE@アカウントページ・お店トーク・LINE電話・ポスター等
LINE@アカウントページ・お店トーク・LINE電話・ポスター等
 
Great Tools Heavily Used In Japan, You Don't Know.
Great Tools Heavily Used In Japan, You Don't Know.Great Tools Heavily Used In Japan, You Don't Know.
Great Tools Heavily Used In Japan, You Don't Know.
 
【ハンズオン】jQuery+HTML5 APIでスライドショーを作ろう
【ハンズオン】jQuery+HTML5 APIでスライドショーを作ろう【ハンズオン】jQuery+HTML5 APIでスライドショーを作ろう
【ハンズオン】jQuery+HTML5 APIでスライドショーを作ろう
 
ネットビジネス研究会in新潟ITコンサルタント
ネットビジネス研究会in新潟ITコンサルタントネットビジネス研究会in新潟ITコンサルタント
ネットビジネス研究会in新潟ITコンサルタント
 
apachehereというPHPのBuiltin Serverっぽいやつをつくった
apachehereというPHPのBuiltin ServerっぽいやつをつくったapachehereというPHPのBuiltin Serverっぽいやつをつくった
apachehereというPHPのBuiltin Serverっぽいやつをつくった
 

Similar a PHPカンファレンス2014の懇親会飛び込みLT資料

最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)Rui Hirokawa
 
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12Ryuji Yamashita
 
Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarModern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarSotaro Karasawa
 
PHPCON_TOKYO_2022_Bigginer.pptx
PHPCON_TOKYO_2022_Bigginer.pptxPHPCON_TOKYO_2022_Bigginer.pptx
PHPCON_TOKYO_2022_Bigginer.pptxHideo Kashioka
 
PHP初心者セッション2023 〜ChatGPT時代の簡単な始め方〜
PHP初心者セッション2023 〜ChatGPT時代の簡単な始め方〜PHP初心者セッション2023 〜ChatGPT時代の簡単な始め方〜
PHP初心者セッション2023 〜ChatGPT時代の簡単な始め方〜Hideo Kashioka
 
PHPの今とこれから2015
PHPの今とこれから2015PHPの今とこれから2015
PHPの今とこれから2015Rui Hirokawa
 
第21回Creators MeetUp
第21回Creators MeetUp第21回Creators MeetUp
第21回Creators MeetUpKenichi Mukai
 
Phpcon tokyo 20120_bigginer
Phpcon tokyo 20120_bigginerPhpcon tokyo 20120_bigginer
Phpcon tokyo 20120_bigginerHideo Kashioka
 
PHPの今とこれから2016
PHPの今とこれから2016PHPの今とこれから2016
PHPの今とこれから2016Rui Hirokawa
 
8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室Yusuke Ando
 
Weeklycms20120218
Weeklycms20120218Weeklycms20120218
Weeklycms20120218Yoshi Sakai
 
PHP4の今 ~日本語対応と最近のトピックス~
PHP4の今 ~日本語対応と最近のトピックス~PHP4の今 ~日本語対応と最近のトピックス~
PHP4の今 ~日本語対応と最近のトピックス~Rui Hirokawa
 
FukuokaPHP 3
FukuokaPHP 3FukuokaPHP 3
FukuokaPHP 3ichikaway
 
RFC: "var" Deprecation
RFC: "var" DeprecationRFC: "var" Deprecation
RFC: "var" Deprecationy-uti
 
php in ruby
php in rubyphp in ruby
php in rubydo_aki
 
PHP7をDockerで動かしたという話
PHP7をDockerで動かしたという話PHP7をDockerで動かしたという話
PHP7をDockerで動かしたという話侑弥 濱田
 
おまえらこのライブラリ使ってないの? m9 (2013-07)
おまえらこのライブラリ使ってないの? m9	(2013-07)おまえらこのライブラリ使ってないの? m9	(2013-07)
おまえらこのライブラリ使ってないの? m9 (2013-07)Toru Furukawa
 
よいことも悪いこともぜんぶPHPが教えてくれた
よいことも悪いこともぜんぶPHPが教えてくれたよいことも悪いこともぜんぶPHPが教えてくれた
よいことも悪いこともぜんぶPHPが教えてくれたMoriyoshi Koizumi
 
Php in ruby
Php in rubyPhp in ruby
Php in rubydo_aki
 

Similar a PHPカンファレンス2014の懇親会飛び込みLT資料 (20)

最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)
 
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
 
Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarModern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI Seminar
 
PHPCON_TOKYO_2022_Bigginer.pptx
PHPCON_TOKYO_2022_Bigginer.pptxPHPCON_TOKYO_2022_Bigginer.pptx
PHPCON_TOKYO_2022_Bigginer.pptx
 
PHP初心者セッション2023 〜ChatGPT時代の簡単な始め方〜
PHP初心者セッション2023 〜ChatGPT時代の簡単な始め方〜PHP初心者セッション2023 〜ChatGPT時代の簡単な始め方〜
PHP初心者セッション2023 〜ChatGPT時代の簡単な始め方〜
 
PHPの今とこれから2015
PHPの今とこれから2015PHPの今とこれから2015
PHPの今とこれから2015
 
第21回Creators MeetUp
第21回Creators MeetUp第21回Creators MeetUp
第21回Creators MeetUp
 
Phpcon tokyo 20120_bigginer
Phpcon tokyo 20120_bigginerPhpcon tokyo 20120_bigginer
Phpcon tokyo 20120_bigginer
 
PHPの今とこれから2016
PHPの今とこれから2016PHPの今とこれから2016
PHPの今とこれから2016
 
8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室
 
Weeklycms20120218
Weeklycms20120218Weeklycms20120218
Weeklycms20120218
 
PHP4の今 ~日本語対応と最近のトピックス~
PHP4の今 ~日本語対応と最近のトピックス~PHP4の今 ~日本語対応と最近のトピックス~
PHP4の今 ~日本語対応と最近のトピックス~
 
FukuokaPHP 3
FukuokaPHP 3FukuokaPHP 3
FukuokaPHP 3
 
Xhprof
XhprofXhprof
Xhprof
 
RFC: "var" Deprecation
RFC: "var" DeprecationRFC: "var" Deprecation
RFC: "var" Deprecation
 
php in ruby
php in rubyphp in ruby
php in ruby
 
PHP7をDockerで動かしたという話
PHP7をDockerで動かしたという話PHP7をDockerで動かしたという話
PHP7をDockerで動かしたという話
 
おまえらこのライブラリ使ってないの? m9 (2013-07)
おまえらこのライブラリ使ってないの? m9	(2013-07)おまえらこのライブラリ使ってないの? m9	(2013-07)
おまえらこのライブラリ使ってないの? m9 (2013-07)
 
よいことも悪いこともぜんぶPHPが教えてくれた
よいことも悪いこともぜんぶPHPが教えてくれたよいことも悪いこともぜんぶPHPが教えてくれた
よいことも悪いこともぜんぶPHPが教えてくれた
 
Php in ruby
Php in rubyPhp in ruby
Php in ruby
 

PHPカンファレンス2014の懇親会飛び込みLT資料