SlideShare una empresa de Scribd logo
1 de 47
Descargar para leer sin conexión
HHVM Hack
BPStudy#81
2014/05/30
About Me
米林 正明@yone098
株式会社Abby CEO
 
About Me
米林 正明@yone098
株式会社Abby CEO
社員募集中!
Agenda
   
Hack
HHVM
Hack Features
Tool
Web Application
Performance
HHVM Extension
PHP2HHVM
Hack
Hack
HackとはFacebookがリリースしたPHPと互換性を持つ
HHVM(Hip Hop Virtual Machine for PHP) 向けの開発言語
Facebookのサイトは2013年以降PHPからHackへ移行
Facebookでの実績
特長
Nullable, Generics, etc...
http://hacklang.org/
 
   
Hack
HackとはFacebookがリリースしたPHPと互換性を持つ
HHVM(Hip Hop Virtual Machine for PHP) 向けの開発言語
Facebookのサイトは2013年以降PHPからHackへ移行
Facebookでの実績
特長
Nullable, Generics, etc...
http://hacklang.org/
Summary
PHPの代替になる新しいプログラミング言語
HHVM
HHVM
HHVM(HipHop Virtual Machine)とはFacebookが開発・公開し
ているC++で実装されたJITコンパイラPHP実行環境
JITコンパイル-> 高速動作
Hackを動作させる唯一のVM
FastCGIインターフェース仕様でnginx, Apacheと動作
最新version (2014/05/30現在)
http://hhvm.org/
$ hhvm --version
HipHop VM 3.2.0-dev (rel)
 
HHVM
HHVM(HipHop Virtual Machine)とはFacebookが開発・公開し
ているC++で実装されたJITコンパイラPHP実行環境
JITコンパイル-> 高速動作
Hackを動作させる唯一のVM
FastCGIインターフェース仕様でnginx, Apacheと動作
最新version (2014/05/30現在)
http://hhvm.org/
$ hhvm --version
HipHop VM 3.2.0-dev (rel)
Summary
PHPとHackを動作させるVM
Hack Features
Hack Features
概要説明
Type Annotations
Nullable
Generics
Collection
Type Aliasing
Variable Number of Arguments
Hack Features
Type Annotations
静的型付けがあり関数の引数や戻り値に明示的に型を宣
言することが可能
class AnnotatedClass {
public int $i = 10;
private string $str = "STRING";
protected array $arr = array(1, 2);
}
function return_int_func(bool $flg): int {
return 100;
}
Hack Features
Nullable
null を許容するかどうかを?で指定可能
function nullable_arg_func(?string $name) : string {
if ($name === null) return "name is null";
return "Hello " . $name;
}
function null_ng_arg_func(string $name) : string {
return "Hello " . $name;
}
nullable_arg_func(null);
null_ng_arg_func(null); // エラー発生
実行結果
$ hhvm examples.php
Fatal error: Argument 1 passed to null_ng_arg_func() must be an instance of string,
null given in /home/yone098/examples.php on line 10
Hack Features
Generics
C++, Java, C# のようなGenrics が利用可能
class Dog<T> {
private ?T $name;
public function __construct(T $name) {
$this->name = $name;
}
public function get_name() : T {
return $this->name;
}
}
$dog = new Dog("garsue");
echo("dog->get_name()=" . $dog->get_name() . "n");
$map = Map<string, int> { "a" => 1, "b" => 2 };
var_dump($map);
実行結果
dog->get_name=garsue
object(HHMap)#2 (2) {
["a"]=> int(1)
["b"]=>int(2)}
Hack Features
Collections
HackではVector,Map,Set,PairというCollectionsが利用
可能
$vector = Vector<int> { 100, 200, 300, 400 };
$vector[] = 700; // 追加
$vector[0] = 111; // 上書き
$vector->removeKey(2);
foreach ($vector as $v) { echo $v . "n"; }
$map = Map<string, long> {"a" => 100, "b" => 200, "c" => 300};
$map["d"] = 400;
echo "map->get("b") = ". $map->get("b") . "n";
var_dump($map->contains("a"));
// map filterWithKey
$map_filter = $map->filterWithKey(function($k, $v) {
return ($k === "b" || $k === "c");
});
var_dump($map_filter);
Hack Features
Type Aliasing
Hackでは,typeおよびnewtypeの宣言で既存の型に別名を
つけることが可能。
type user_id = int;
// 引数の型は user_id
function get_user_name(user_id $user_id): string {
return "mopemope";
}
newtype password = string;
// 引数の型は password
function login(user_id $user_id, password $password): bool {
return true;
}
Hack Features
Variable Number of Arguments
Hack では可変長引数を... と明示的に指定可能
function test_many_args(int $num, ...): void {
echo "num:" . $num . "n";
foreach (func_get_args() as $e) {
var_dump($e);
}
}
test_many_args(100, "garsue", 1, array(), 3.14);
実行結果
num:100
int(100)
string(6) "garsue"
int(1)
array(0) {
}
object(Yone)#8 (0) {
}
float(3.14)
Tool
Tool
Debugger
デバッガー機能(step実行等)
hh_client
実行前に静的型付けのチェック
fastcgi
設定・設定解除
Tool
Debugger
起動:hhvm -m debug ファイル名
ブレークポイント:break 関数名
ステップ実行:step
確認:print 変数名
現在: *
Break at loop() on line 3 of /home/yone098/debug.php
2 function loop() : void {
3* for ($i = 1; $i <= 3; $i++) {
4 $sum += $i;
hphpd> print $sum
1
demo
Tool
Debugger
variable (Web application)
hphpd> variable
$argv = Array()
$_FILES = Array()
$_SERVER = Array([XDG_SESSION_ID] => "4", [USER] => "yone098", [SSH_TTY] => ...
$_GET = Array()
$_COOKIE = Array()
$argc = 0
$_REQUEST = Array()
$_POST = Array()
Tool
hh_client
実行前に静的型付けチェック
指定フォルダに.hhconfig という空のファイルを置く
hh_client コマンドを実行
.hhconfig が無い場合
$ hh_client
Error: not a www tree (or any of the parent directories): /sample
Tool
hh_client
不正な箇所がある場合に行番号と内容を表示
bad.php
<?hh
function bad_func() : int {
return "Hello, BpStudy#81";
}
bad_func();
  実行結果
$ hh_client
/home/yone098/bad.php:3:10,28: Invalid return type
/home/yone098/bad.php:2:23,25: This is an int
/home/yone098/bad.php:3:10,28: It is incompatible with a string
プロジェクトのルートフォルダに.hhconfig ファイルを設置
しチェックを行うのがベスト
Tool
fastcgi
apache, nginx に対してfastcgi 設定を自動で行う
/usr/share/hhvm/install_fastcgi.sh
/usr/share/hhvm/uninstall_factcgi.sh
apache, nginx をインストールしたあとにシェルを実行する
ことですんなりHHVM が稼働します
当初は自前で設定する必要があったため即動かす事が容易
ではなかった
WebApplication
WebApplication
first step
はまりどころ
WebApplication
First step
phpinfo を確認する
HHVM が正常に稼働していれば画面にはHipHop とだけ
表示されます
503エラーなどが出る場合は、fastcgi の設定が間違って
いるかHHVM が起動していない可能性があります
check.php
<?hh
phpinfo();
実行結果
HipHop
WebApplication
はまりどころ
configrations
HHVM 2 系の際は/etc/hhvm/php.ini および
/etc/hhvm/server.ini の設定が有効(厳密には以前は
server.hdf)
HHVM 3 系の場合はphp include_path の設定が効かない
ため実行時に設定する必要がある
<?hh
echo 'include_path[' . get_include_path() . '][' . ini_get('include_path') . "]<br/>n";
ini_set('include_path', '/usr/lib/Smarty-3.1.18/libs' .
PATH_SEPARATOR . ini_get('include_path'));
require_once('Smarty.class.php');
WebApplication
はまりどころ
実行時
<?hh echo でHTMLに記載したものはまだ動かない
<html>
<body>
<?php echo $user_name; ?>
<hr/>
<?hh echo $user_name; ?> <!-- これは動作しない -->
</body>
</html>
Performance
Performance
bench.php
<?php
function loop_test() {
$sum = 0;
for ($i = 0; $i < 1000000; $i++) {
$sum += $i * 2;
}
}
function main() {
$startTime = microtime(true);
loop_test();
$endTime = microtime(true);
echo $endTime - $startTime . "[sec]n";
// 再度実行
}
main();
Performance
result
php : hhvm = 1 : 10
yone098@ubuntu-docker:~/work$ hhvm bench.php
0.012295007705688[sec]
0.010360956192017[sec]
yone098@ubuntu-docker:~/work$ hhvm bench.php
0.0089778900146484[sec]
0.011922836303711[sec]
yone098@ubuntu-docker:~/work$ php bench.php
0.10031509399414[sec]
0.098863124847412[sec]
yone098@ubuntu-docker:~/work$ php bench.php
0.09879994392395[sec]
0.099910974502563[sec]
Performance
wordpress ab
wordpress nginx + php-fpm
Requests per second: 19.53 [#/sec] (mean)
Time per request: 2560.771 [ms] (mean)
Time per request: 51.215 [ms] (mean, across all concurrent requests)
Transfer rate: 154.85 [Kbytes/sec] received
wordpress nginx + fastcgi + hhvm
Requests per second: 42.97 [#/sec] (mean)
Time per request: 1163.692 [ms] (mean)
Time per request: 23.274 [ms] (mean, across all concurrent requests)
Transfer rate: 340.33 [Kbytes/sec] received
HHVM Extensions
HHVM Extensions
HHVMの拡張機能でありC++ の既存資産を生かす事が可能
HNI (HHVM Native Interface) と呼ばれるHackの記法を使う
必要ファイル
config.cmake
ext_hnifib.php (HNIで登録)
hnifib.cpp (HHVM_XX で登録)
build (hphpizeコマンド)
exec (-vDinamicExtensions.0=ライブラリ.so)
本家のはそのままじゃ動かない
https://github.com/facebook/hhvm/wiki/Extension-API
https://github.com/yone098/hhvm-extensions-examples
HHVM Extensions
config.cmake
必要に応じて適宜ライブラリを追加
HHVM_EXTENSION(hnifib hnifib.cpp)
HHVM_SYSTEMLIB(hnifib ext_hnifib.php)
 
ext_sample.php
<?hh で記述
<<__Native>> Attribute で登録
<?hh
<<__Native>>
function hni_fib(int $n) : int;
HHVM Extensions
sample.cpp
HNI 用include
HHVM_FUNCTION で定義, HHVM_FE で登録
Extension クラスを継承
#include "hphp/runtime/base/base-includes.h"
namespace HPHP {
static int64_t HHVM_FUNCTION(hni_fib, int64_t n) {
if (n <= 2) return 1;
return HPHP::f_hni_fib(n - 2) + HPHP::f_hni_fib(n - 1);
}
static class HnifibExtension : public Extension {
public:
HnifibExtension() : Extension("hnifib") {}
virtual void moduleInit() {
HHVM_FE(hni_fib);
loadSystemlib();
}
} s_hnifib_extension;
HHVM_GET_MODULE(sample)
}
HHVM Extensions
build                      
hphpize
cmake .
make
 
run                      
-vDynamicExtensions.0
hhvm 
-vDynamicExtensions.0=${DIRNAME}/hnifib.so 
${DIRNAME}/app.php
HHVM Extensions
Performance
<?php
function fib($n) {
if ($n <= 2) return 1;
return fib($n - 2) + fib($n - 1);
}
for ($i = 1; $i <= 20; $i++) echo(fib($i) . " ");
result
HNI 速い! > hhvm > php
$ php fib.php
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
0.013734102249146[sec]
$ hhvm fib.php
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
0.0083420276641846[sec]
$ ./run.sh
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
0.0031008720397949[sec]
PHP2HHVM
PHP2HHVM
PHP ファイルをそのまま使う
HHVM のみ利用する(お勧め)
PHP ファイルをHack に移行
ソースの先頭は一括置換(<?PHP から<?hh )
関数の引数・戻り値に型を明示的に指定
null を許容する場合のみ明示的に? を指定
積極的にCollection を利用する(速度よびメモリ使用量削
減)
hh_client にてチェックを行う
まとめ
まとめHack は無理に導入する必要は無い
使いたい人は使おう
HHVM 積極的に採用しよう
Facebook の実績
3年後HHVM がデファクト・スタンダード
nginx の出始めの頃
一句
母の日に
Hack 使って
四苦八苦
ありがとう
ございました

Más contenido relacionado

La actualidad más candente

Perl logging
Perl loggingPerl logging
Perl loggingkeroyonn
 
Good Parts of PHP and the UNIX Philosophy
Good Parts of PHP and the UNIX PhilosophyGood Parts of PHP and the UNIX Philosophy
Good Parts of PHP and the UNIX PhilosophyYuya Takeyama
 
Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarModern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarSotaro Karasawa
 
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)Rui Hirokawa
 
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )hiro345
 
PHPの今とこれから2019
PHPの今とこれから2019PHPの今とこれから2019
PHPの今とこれから2019Rui Hirokawa
 
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろうPerl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろうkeroyonn
 
知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数Wataru Terada
 
omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜Sotaro Omura
 
PHPの今とこれから2020
PHPの今とこれから2020PHPの今とこれから2020
PHPの今とこれから2020Rui Hirokawa
 
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門kwatch
 
PHP基本的関数QUIZ
PHP基本的関数QUIZPHP基本的関数QUIZ
PHP基本的関数QUIZWataru Terada
 
FuelPHPで3種のprofilerを使ってみた
FuelPHPで3種のprofilerを使ってみたFuelPHPで3種のprofilerを使ってみた
FuelPHPで3種のprofilerを使ってみたKatsuhiro Miura
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門Sho A
 
CMSとPerlで遊ぼう
CMSとPerlで遊ぼうCMSとPerlで遊ぼう
CMSとPerlで遊ぼうDaiki Ichinose
 
CPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいCPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいcharsbar
 
PHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 とPHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 とdo_aki
 

La actualidad más candente (20)

Perl logging
Perl loggingPerl logging
Perl logging
 
Good Parts of PHP and the UNIX Philosophy
Good Parts of PHP and the UNIX PhilosophyGood Parts of PHP and the UNIX Philosophy
Good Parts of PHP and the UNIX Philosophy
 
Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarModern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI Seminar
 
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
 
PHPコアから読み解くPHP5.5
PHPコアから読み解くPHP5.5PHPコアから読み解くPHP5.5
PHPコアから読み解くPHP5.5
 
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )
 
PHPの今とこれから2019
PHPの今とこれから2019PHPの今とこれから2019
PHPの今とこれから2019
 
PHPにおけるI/O多重化とyield
PHPにおけるI/O多重化とyieldPHPにおけるI/O多重化とyield
PHPにおけるI/O多重化とyield
 
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろうPerl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
 
知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数
 
omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜
 
PHPの今とこれから2020
PHPの今とこれから2020PHPの今とこれから2020
PHPの今とこれから2020
 
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門
 
実"戦"CakePHP Plugin
実"戦"CakePHP Plugin実"戦"CakePHP Plugin
実"戦"CakePHP Plugin
 
PHP基本的関数QUIZ
PHP基本的関数QUIZPHP基本的関数QUIZ
PHP基本的関数QUIZ
 
FuelPHPで3種のprofilerを使ってみた
FuelPHPで3種のprofilerを使ってみたFuelPHPで3種のprofilerを使ってみた
FuelPHPで3種のprofilerを使ってみた
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門
 
CMSとPerlで遊ぼう
CMSとPerlで遊ぼうCMSとPerlで遊ぼう
CMSとPerlで遊ぼう
 
CPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいCPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したい
 
PHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 とPHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 と
 

Similar a HHVM Hack

WebAPIではじめるphp入門
WebAPIではじめるphp入門WebAPIではじめるphp入門
WebAPIではじめるphp入門Hiroaki Murayama
 
3分でサーバオペレーションコマンドを作る技術
3分でサーバオペレーションコマンドを作る技術3分でサーバオペレーションコマンドを作る技術
3分でサーバオペレーションコマンドを作る技術Kei IWASAKI
 
Go言語で作る webアプリ@gocon 2013 spring
Go言語で作る webアプリ@gocon 2013 springGo言語で作る webアプリ@gocon 2013 spring
Go言語で作る webアプリ@gocon 2013 springTakuya Ueda
 
FuelPHPでSentry導入
FuelPHPでSentry導入FuelPHPでSentry導入
FuelPHPでSentry導入fagai
 
ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方Yosuke Furukawa
 
PHP で実行中のスクリプトの動作を下から覗き見る
PHP で実行中のスクリプトの動作を下から覗き見るPHP で実行中のスクリプトの動作を下から覗き見る
PHP で実行中のスクリプトの動作を下から覗き見るshinjiigarashi
 
PHPの今とこれから2015
PHPの今とこれから2015PHPの今とこれから2015
PHPの今とこれから2015Rui Hirokawa
 
HHVM/Hackを本番投入した話
HHVM/Hackを本番投入した話HHVM/Hackを本番投入した話
HHVM/Hackを本番投入した話Kenjiro Kubota
 
LaravelでAPI定義を管理する
LaravelでAPI定義を管理するLaravelでAPI定義を管理する
LaravelでAPI定義を管理するKenjiro Kubota
 
はじめての FuelPHP
はじめての FuelPHPはじめての FuelPHP
はじめての FuelPHPSho A
 
FuelPHP Osu Nagoya vol.1
FuelPHP Osu Nagoya vol.1FuelPHP Osu Nagoya vol.1
FuelPHP Osu Nagoya vol.1Fumito Mizuno
 
PHPの今とこれから2023
PHPの今とこれから2023PHPの今とこれから2023
PHPの今とこれから2023Rui Hirokawa
 
PHPべんちまーく
PHPべんちまーくPHPべんちまーく
PHPべんちまーくchichi1091
 
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境Masashi Shinbara
 
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例Yoshifumi Kawai
 
TypeScript と Visual Studio Code
TypeScript と Visual Studio CodeTypeScript と Visual Studio Code
TypeScript と Visual Studio CodeAkira Inoue
 
Continuation with Boost.Context
Continuation with Boost.ContextContinuation with Boost.Context
Continuation with Boost.ContextAkira Takahashi
 

Similar a HHVM Hack (20)

WordPress on HHVM + Hack
WordPress on HHVM + HackWordPress on HHVM + Hack
WordPress on HHVM + Hack
 
WebAPIではじめるphp入門
WebAPIではじめるphp入門WebAPIではじめるphp入門
WebAPIではじめるphp入門
 
3分でサーバオペレーションコマンドを作る技術
3分でサーバオペレーションコマンドを作る技術3分でサーバオペレーションコマンドを作る技術
3分でサーバオペレーションコマンドを作る技術
 
Go言語で作る webアプリ@gocon 2013 spring
Go言語で作る webアプリ@gocon 2013 springGo言語で作る webアプリ@gocon 2013 spring
Go言語で作る webアプリ@gocon 2013 spring
 
FuelPHPでSentry導入
FuelPHPでSentry導入FuelPHPでSentry導入
FuelPHPでSentry導入
 
Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7
 
ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方
 
PHP で実行中のスクリプトの動作を下から覗き見る
PHP で実行中のスクリプトの動作を下から覗き見るPHP で実行中のスクリプトの動作を下から覗き見る
PHP で実行中のスクリプトの動作を下から覗き見る
 
PHPの今とこれから2015
PHPの今とこれから2015PHPの今とこれから2015
PHPの今とこれから2015
 
HHVM/Hackを本番投入した話
HHVM/Hackを本番投入した話HHVM/Hackを本番投入した話
HHVM/Hackを本番投入した話
 
LaravelでAPI定義を管理する
LaravelでAPI定義を管理するLaravelでAPI定義を管理する
LaravelでAPI定義を管理する
 
はじめての FuelPHP
はじめての FuelPHPはじめての FuelPHP
はじめての FuelPHP
 
FuelPHP Osu Nagoya vol.1
FuelPHP Osu Nagoya vol.1FuelPHP Osu Nagoya vol.1
FuelPHP Osu Nagoya vol.1
 
PHPの今とこれから2023
PHPの今とこれから2023PHPの今とこれから2023
PHPの今とこれから2023
 
PHPべんちまーく
PHPべんちまーくPHPべんちまーく
PHPべんちまーく
 
Tottoruby 20110903
Tottoruby 20110903Tottoruby 20110903
Tottoruby 20110903
 
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
 
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
 
TypeScript と Visual Studio Code
TypeScript と Visual Studio CodeTypeScript と Visual Studio Code
TypeScript と Visual Studio Code
 
Continuation with Boost.Context
Continuation with Boost.ContextContinuation with Boost.Context
Continuation with Boost.Context
 

Más de Masaaki Yonebayashi (15)

Go guide for Java programmer
Go guide for Java programmerGo guide for Java programmer
Go guide for Java programmer
 
Android T2 on cloud
Android T2 on cloudAndroid T2 on cloud
Android T2 on cloud
 
JavaFX-with-Adobe
JavaFX-with-AdobeJavaFX-with-Adobe
JavaFX-with-Adobe
 
Guice2.0
Guice2.0Guice2.0
Guice2.0
 
Flex's DI Container
Flex's DI ContainerFlex's DI Container
Flex's DI Container
 
T2 in Action
T2 in ActionT2 in Action
T2 in Action
 
guice-servlet
guice-servletguice-servlet
guice-servlet
 
T2@java-ja#toyama
T2@java-ja#toyamaT2@java-ja#toyama
T2@java-ja#toyama
 
Merapi -Adobe Air<=>Java-
Merapi -Adobe Air<=>Java-Merapi -Adobe Air<=>Java-
Merapi -Adobe Air<=>Java-
 
sc2009white_T2
sc2009white_T2sc2009white_T2
sc2009white_T2
 
sc2009white_Teeda
sc2009white_Teedasc2009white_Teeda
sc2009white_Teeda
 
yonex
yonexyonex
yonex
 
S2Flex2
S2Flex2S2Flex2
S2Flex2
 
Teeda
TeedaTeeda
Teeda
 
Wankumatoyama#01
Wankumatoyama#01Wankumatoyama#01
Wankumatoyama#01
 

Último

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 

Último (9)

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 

HHVM Hack