Suche senden
Hochladen
PHPで時間旅行をする方法
•
2 gefällt mir
•
3,886 views
Yoshio Hanawa
Folgen
Melden
Teilen
Melden
Teilen
1 von 19
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
Shuyo Nakatani
Pythonで業務改善をしたときにあった問題(ライト版)
Pythonで業務改善をしたときにあった問題(ライト版)
Satoshi Yamada
LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45
civic Sasaki
Qt小技(修正版)
Qt小技(修正版)
hermit4 Ishida
PyPy 紹介
PyPy 紹介
shoma h
Q planet
Q planet
hermit4 Ishida
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
shoma h
私の好きなPython構文 vol.2 #nds46
私の好きなPython構文 vol.2 #nds46
civicpg
Empfohlen
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
Shuyo Nakatani
Pythonで業務改善をしたときにあった問題(ライト版)
Pythonで業務改善をしたときにあった問題(ライト版)
Satoshi Yamada
LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45
civic Sasaki
Qt小技(修正版)
Qt小技(修正版)
hermit4 Ishida
PyPy 紹介
PyPy 紹介
shoma h
Q planet
Q planet
hermit4 Ishida
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
shoma h
私の好きなPython構文 vol.2 #nds46
私の好きなPython構文 vol.2 #nds46
civicpg
xUnitハンズオン第1回テキスト
xUnitハンズオン第1回テキスト
mizuky fujitani
High performance python computing for data science
High performance python computing for data science
Takami Sato
xUnitハンズオン第2回テキスト
xUnitハンズオン第2回テキスト
mizuky fujitani
xUnitハンズオン第3回テキスト
xUnitハンズオン第3回テキスト
mizuky fujitani
Hyper → Highspeed → Development
Hyper → Highspeed → Development
aktsk
Pug(Jade)を使って コンテンツ書き出しの 時短をしよう
Pug(Jade)を使って コンテンツ書き出しの 時短をしよう
Toshimichi Suekane
師弟登壇・新米サムライの集い 2013
師弟登壇・新米サムライの集い 2013
hiboma
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
Junichi Ishida
gRPCをちょこっと調べた話
gRPCをちょこっと調べた話
Shuzo Kashihara
Phjosh(仮)プロジェクト
Phjosh(仮)プロジェクト
Moriyoshi Koizumi
第1回Hadoop関西勉強会参加レポート
第1回Hadoop関西勉強会参加レポート
You&I
CPANモジュールをPHPに移植してみた話
CPANモジュールをPHPに移植してみた話
memememomo
PHPとJavaScriptの噺
PHPとJavaScriptの噺
Shogo Kawahara
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
Katsuhiro Morishita
Fuel phpをcomposerに本気で対応させた時の話
Fuel phpをcomposerに本気で対応させた時の話
Keishi Hosoba
Hadoop事始め
Hadoop事始め
You&I
⑮jQueryをおぼえよう!その1
⑮jQueryをおぼえよう!その1
Nishida Kansuke
Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践
Kazuto Kusama
PowerShellが苦手だった男がPowerShellを愛するようになるまで
PowerShellが苦手だった男がPowerShellを愛するようになるまで
Kazuhiro Matsushima
Vivado hlsのシミュレーションとhlsストリーム
Vivado hlsのシミュレーションとhlsストリーム
marsee101
自宅の消費電力をリアルタイムに グラフ化してみた
自宅の消費電力をリアルタイムに グラフ化してみた
Yoshio Hanawa
Zend VMにおける例外の実装
Zend VMにおける例外の実装
Yoshio Hanawa
Weitere ähnliche Inhalte
Ähnlich wie PHPで時間旅行をする方法
xUnitハンズオン第1回テキスト
xUnitハンズオン第1回テキスト
mizuky fujitani
High performance python computing for data science
High performance python computing for data science
Takami Sato
xUnitハンズオン第2回テキスト
xUnitハンズオン第2回テキスト
mizuky fujitani
xUnitハンズオン第3回テキスト
xUnitハンズオン第3回テキスト
mizuky fujitani
Hyper → Highspeed → Development
Hyper → Highspeed → Development
aktsk
Pug(Jade)を使って コンテンツ書き出しの 時短をしよう
Pug(Jade)を使って コンテンツ書き出しの 時短をしよう
Toshimichi Suekane
師弟登壇・新米サムライの集い 2013
師弟登壇・新米サムライの集い 2013
hiboma
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
Junichi Ishida
gRPCをちょこっと調べた話
gRPCをちょこっと調べた話
Shuzo Kashihara
Phjosh(仮)プロジェクト
Phjosh(仮)プロジェクト
Moriyoshi Koizumi
第1回Hadoop関西勉強会参加レポート
第1回Hadoop関西勉強会参加レポート
You&I
CPANモジュールをPHPに移植してみた話
CPANモジュールをPHPに移植してみた話
memememomo
PHPとJavaScriptの噺
PHPとJavaScriptの噺
Shogo Kawahara
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
Katsuhiro Morishita
Fuel phpをcomposerに本気で対応させた時の話
Fuel phpをcomposerに本気で対応させた時の話
Keishi Hosoba
Hadoop事始め
Hadoop事始め
You&I
⑮jQueryをおぼえよう!その1
⑮jQueryをおぼえよう!その1
Nishida Kansuke
Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践
Kazuto Kusama
PowerShellが苦手だった男がPowerShellを愛するようになるまで
PowerShellが苦手だった男がPowerShellを愛するようになるまで
Kazuhiro Matsushima
Vivado hlsのシミュレーションとhlsストリーム
Vivado hlsのシミュレーションとhlsストリーム
marsee101
Ähnlich wie PHPで時間旅行をする方法
(20)
xUnitハンズオン第1回テキスト
xUnitハンズオン第1回テキスト
High performance python computing for data science
High performance python computing for data science
xUnitハンズオン第2回テキスト
xUnitハンズオン第2回テキスト
xUnitハンズオン第3回テキスト
xUnitハンズオン第3回テキスト
Hyper → Highspeed → Development
Hyper → Highspeed → Development
Pug(Jade)を使って コンテンツ書き出しの 時短をしよう
Pug(Jade)を使って コンテンツ書き出しの 時短をしよう
師弟登壇・新米サムライの集い 2013
師弟登壇・新米サムライの集い 2013
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
gRPCをちょこっと調べた話
gRPCをちょこっと調べた話
Phjosh(仮)プロジェクト
Phjosh(仮)プロジェクト
第1回Hadoop関西勉強会参加レポート
第1回Hadoop関西勉強会参加レポート
CPANモジュールをPHPに移植してみた話
CPANモジュールをPHPに移植してみた話
PHPとJavaScriptの噺
PHPとJavaScriptの噺
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
Fuel phpをcomposerに本気で対応させた時の話
Fuel phpをcomposerに本気で対応させた時の話
Hadoop事始め
Hadoop事始め
⑮jQueryをおぼえよう!その1
⑮jQueryをおぼえよう!その1
Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践
PowerShellが苦手だった男がPowerShellを愛するようになるまで
PowerShellが苦手だった男がPowerShellを愛するようになるまで
Vivado hlsのシミュレーションとhlsストリーム
Vivado hlsのシミュレーションとhlsストリーム
Mehr von Yoshio Hanawa
自宅の消費電力をリアルタイムに グラフ化してみた
自宅の消費電力をリアルタイムに グラフ化してみた
Yoshio Hanawa
Zend VMにおける例外の実装
Zend VMにおける例外の実装
Yoshio Hanawa
Zend VMにおける例外の実装
Zend VMにおける例外の実装
Yoshio Hanawa
ぼくのかんがえる さいきょうの銀行振込
ぼくのかんがえる さいきょうの銀行振込
Yoshio Hanawa
「OKグーグル! 銀行振込1000円」
「OKグーグル! 銀行振込1000円」
Yoshio Hanawa
浮動小数点数とOSSのバグの話
浮動小数点数とOSSのバグの話
Yoshio Hanawa
PHP拡張をPECLに登録してわかったこと
PHP拡張をPECLに登録してわかったこと
Yoshio Hanawa
GitHubからお金をもらった話
GitHubからお金をもらった話
Yoshio Hanawa
iOS/macOSとAndroid/Linuxのサンドボックス機構について調べた
iOS/macOSとAndroid/Linuxのサンドボックス機構について調べた
Yoshio Hanawa
realpathキャッシュと OPcacheの面倒すぎる関係
realpathキャッシュと OPcacheの面倒すぎる関係
Yoshio Hanawa
家庭用ブロードバンドルータ上でWordPressを動かそう
家庭用ブロードバンドルータ上でWordPressを動かそう
Yoshio Hanawa
Laungage Update PHP編
Laungage Update PHP編
Yoshio Hanawa
PHPの拡張モジュールをGoで作る
PHPの拡張モジュールをGoで作る
Yoshio Hanawa
GitHubにバグ報告して賞金$500を頂いた話
GitHubにバグ報告して賞金$500を頂いた話
Yoshio Hanawa
php-buildがいかに便利かを力説する
php-buildがいかに便利かを力説する
Yoshio Hanawa
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
Yoshio Hanawa
PHP7の拡張モジュール事情
PHP7の拡張モジュール事情
Yoshio Hanawa
PHP7の内部実装から学ぶ性能改善テクニック
PHP7の内部実装から学ぶ性能改善テクニック
Yoshio Hanawa
PHPの正規表現と最長一致
PHPの正規表現と最長一致
Yoshio Hanawa
PHP7で変わること ——言語仕様とエンジンの改善ポイント
PHP7で変わること ——言語仕様とエンジンの改善ポイント
Yoshio Hanawa
Mehr von Yoshio Hanawa
(20)
自宅の消費電力をリアルタイムに グラフ化してみた
自宅の消費電力をリアルタイムに グラフ化してみた
Zend VMにおける例外の実装
Zend VMにおける例外の実装
Zend VMにおける例外の実装
Zend VMにおける例外の実装
ぼくのかんがえる さいきょうの銀行振込
ぼくのかんがえる さいきょうの銀行振込
「OKグーグル! 銀行振込1000円」
「OKグーグル! 銀行振込1000円」
浮動小数点数とOSSのバグの話
浮動小数点数とOSSのバグの話
PHP拡張をPECLに登録してわかったこと
PHP拡張をPECLに登録してわかったこと
GitHubからお金をもらった話
GitHubからお金をもらった話
iOS/macOSとAndroid/Linuxのサンドボックス機構について調べた
iOS/macOSとAndroid/Linuxのサンドボックス機構について調べた
realpathキャッシュと OPcacheの面倒すぎる関係
realpathキャッシュと OPcacheの面倒すぎる関係
家庭用ブロードバンドルータ上でWordPressを動かそう
家庭用ブロードバンドルータ上でWordPressを動かそう
Laungage Update PHP編
Laungage Update PHP編
PHPの拡張モジュールをGoで作る
PHPの拡張モジュールをGoで作る
GitHubにバグ報告して賞金$500を頂いた話
GitHubにバグ報告して賞金$500を頂いた話
php-buildがいかに便利かを力説する
php-buildがいかに便利かを力説する
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
PHP7の拡張モジュール事情
PHP7の拡張モジュール事情
PHP7の内部実装から学ぶ性能改善テクニック
PHP7の内部実装から学ぶ性能改善テクニック
PHPの正規表現と最長一致
PHPの正規表現と最長一致
PHP7で変わること ——言語仕様とエンジンの改善ポイント
PHP7で変わること ——言語仕様とエンジンの改善ポイント
PHPで時間旅行をする方法
1.
PHPで時間旅行をする方法
塙 与志夫 (hnw) Symfony勉強会#6 2012/06/30 発表資料 12年6月30日土曜日
2.
自己紹介
• hnw • bugs.php.netでバグ報告18件 12年6月30日土曜日
3.
自己紹介
• hnw • bugs.php.netでバグ報告18件 • 好きな物:バグ, カレー • 好きな境界値:2の53乗+1 12年6月30日土曜日
4.
PHPで時間旅行…?
• ついにPHPでネコ型ロボットが… 12年6月30日土曜日
5.
PHPで時間旅行…?
• ついにPHPでネコ型ロボットが… • 作れません 12年6月30日土曜日
6.
問題意識
• 時刻に関わるテストをどう実現する? • 例:年またぎテスト • dateなど標準関数を使われると痛い • 「時間旅行」がしたいなあ… 12年6月30日土曜日
7.
それRubyならできるよ!
• Rubygem Timecop • https://github.com/jtrupiano/timecop • Ruby組み込み実装をRubyで上書き! • Time, Date, DateTimeの3クラスを 自前実装でラップしている 12年6月30日土曜日
8.
いわゆる動的言語の特徴
• 組み込み関数やクラスも上書き可能 • Ruby、Python、JavaScriptなど 12年6月30日土曜日
9.
PHPだとできない… 12年6月30日土曜日
10.
それPHP拡張でできるよ!
• 拡張ならPHP関数を上書きできる • 関数テーブルを書き換える • 例: mbstringの関数オーバーロード • 組み込みクラスも書き換え可能 12年6月30日土曜日
11.
作りました
• php-timecop • https://github.com/hnw/php-timecop • Cで書かれたPHP拡張 • 日付関数とDateTimeクラスを置き換え 12年6月30日土曜日
12.
実装の詳細(1)
• 時間を止めるPHP関数 • 現在時刻が指定された時刻になる • 時間移動するPHP関数 • 現在時刻が過去や未来になり、 そこから時間が進みだす 12年6月30日土曜日
13.
実装の詳細(2)
• 自前実装で差し替え • time関数 • 引数のデフォルト値を差し替え • date関数の第二引数など • DateTimeのコンストラクタ 12年6月30日土曜日
14.
サンプルコード 12年6月30日土曜日
15.
現状
• アルファ版 • CLI版でテストコードは動いてる • SAPI版は動くけど怪しい • コンパイルも1環境しか試してない →Pull Requestかレビュアー募集中 12年6月30日土曜日
16.
利用シーン
• 時刻に依存するような自動テスト • 時刻に依存するようなテンプレートの 表示確認 12年6月30日土曜日
17.
メリット
• 既存コードや外部ライブラリなどに 一律に適用できる • 機能が少ないのでrunkit拡張より 安心感がある(ような気がする) 12年6月30日土曜日
18.
まとめ
• 他の言語がうらやましい • それPHP拡張でできるよ! • php-timecop作りました! • 安定したらテストで活躍するはず • 要望・アイデアなどお待ちしてます 12年6月30日土曜日
19.
ご清聴
ありがとう ございました 12年6月30日土曜日
Jetzt herunterladen