<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>candycane development blog &#187; Facebook</title>
	<atom:link href="http://blog.candycane.jp/archives/tag/facebook/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.candycane.jp</link>
	<description></description>
	<lastBuildDate>Sun, 23 May 2010 01:17:23 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>HipHopを実行するには(和訳)</title>
		<link>http://blog.candycane.jp/archives/300</link>
		<comments>http://blog.candycane.jp/archives/300#comments</comments>
		<pubDate>Sun, 21 Feb 2010 07:20:53 +0000</pubDate>
		<dc:creator>yandod</dc:creator>
				<category><![CDATA[ブログ]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[HipHop]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.candycane.jp/?p=300</guid>
		<description><![CDATA[こちらはHipHopの利用法のドキュメントの和訳です。

PHPをC++に変換して高速化する「HipHop for PHP」をFacebookが公開
HipHopのビルドとインストール方法(和訳)
HipHopを実行するには(和訳)

原文
http://wiki.github.com/facebook/hiphop-php/running-hiphop
HipHopを実行するには
注：これらのコード例では、HipHopコンパイラが完全に組み込まれていると仮定します。
環境設定
まず最初に、2つの環境変数の設定が必要です。
cd .. # into the root of the hphp checkout
export HPHP_HOME=`pwd`
export HPHP_LIB=`pwd`/bin
HipHopを実行するモードの選択
HipHopは5つの異なるモードで実行することができます。これらはHello Worldの例をそれぞれ示しています。すべてのコマンドはこれらの例では、src /ディレクトリから実行されます。
まず、test.phpをと呼ばれるファイルを作成します。テキストを下記のように流し込むなら、&#8221;echo Hello World!&#62; test.php&#8221;のような感じです。次に、以下のようにモードを選択します：
モード1：HipHopでコンパイルし、直接実行する。
 hphp/hphp test.php
モード2：HipHopで一時ディレクトリにコンパイルし、コマンドラインからコンパイルしたプログラムを実行する。
 hphp/hphp test.php --keep-tempdir=1 --log=3
/tmp/hphp_p6vSsP/program    (use your own temporary directory name from output)
--keep-tempdir=1も-k 1で指定することができます。ハイフン一つとkのあとにスペースが空いている事に注意してください。これは、boostのコマンドラインオプションでの作業を監視するものです。
--log=3いくつかの冗長な情報の出力。どの一時ディレクトリが作成されたかを見つけることができる。--output-dir=mypathまたは-o mypathで独自の出力ディレクトリを指定することができます。
モード3：HipHopで一時ディレクトリにコンパイルし、Webサーバーとしてコンパイルしたプログラムを実行する。
 hphp/hphp test.php --keep-tempdir=1 --log=3
sudo /tmp/hphp_p6vSsP/program -m server
その後、別のウィンドウから実行：
 curl localhost/test.php
sudoを使用しない場合は、ポート8080上でHipHopを実行することができます。
 hphp/hphp test.php --keep-tempdir=1 --log=3
/tmp/hphp_p6vSsP/program -m server -p 8080
GET [...]]]></description>
			<content:encoded><![CDATA[<p>こちらはHipHopの利用法のドキュメントの和訳です。</p>
<ul>
<li><a href="http://blog.candycane.jp/archives/275">PHPをC++に変換して高速化する「HipHop for PHP」をFacebookが公開</a></li>
<li><a href="http://blog.candycane.jp/archives/295">HipHopのビルドとインストール方法(和訳)</a></li>
<li>HipHopを実行するには(和訳)</li>
</ul>
<h3>原文</h3>
<p><a href="http://wiki.github.com/facebook/hiphop-php/running-hiphop">http://wiki.github.com/facebook/hiphop-php/running-hiphop</a></p>
<h3>HipHopを実行するには</h3>
<p><strong>注：</strong>これらのコード例では、HipHopコンパイラが完全に組み込まれていると仮定します。</p>
<h3>環境設定</h3>
<p>まず最初に、2つの環境変数の設定が必要です。</p>
<p><code>cd .. # into the root of the hphp checkout<br />
export HPHP_HOME=`pwd`<br />
export HPHP_LIB=`pwd`/bin</code><br />
<h3>HipHopを実行するモードの選択</h3>
<p>HipHopは5つの異なるモードで実行することができます。これらはHello Worldの例をそれぞれ示しています。すべてのコマンドはこれらの例では、src /ディレクトリから実行されます。</p>
<p>まず、test.phpをと呼ばれるファイルを作成します。テキストを下記のように流し込むなら、&#8221;echo Hello World!&gt; test.php&#8221;のような感じです。次に、以下のようにモードを選択します：</p>
<p><strong>モード1：</strong>HipHopでコンパイルし、直接実行する。</p>
<p> <code>hphp/hphp test.php</code>
<p><strong>モード2：</strong>HipHopで一時ディレクトリにコンパイルし、コマンドラインからコンパイルしたプログラムを実行する。</p>
<p> <code>hphp/hphp test.php --keep-tempdir=1 --log=3<br />
/tmp/hphp_p6vSsP/program    (use your own temporary directory name from output)</code>
<p><code>--keep-tempdir=1</code>も<code>-k 1</code>で指定することができます。ハイフン一つとkのあとにスペースが空いている事に注意してください。これは、boostのコマンドラインオプションでの作業を監視するものです。</p>
<p><code>--log=3</code>いくつかの冗長な情報の出力。どの一時ディレクトリが作成されたかを見つけることができる。<code>--output-dir=mypath</code>または<code>-o mypath</code>で独自の出力ディレクトリを指定することができます。</p>
<p><strong>モード3：</strong>HipHopで一時ディレクトリにコンパイルし、Webサーバーとしてコンパイルしたプログラムを実行する。</p>
<p> <code>hphp/hphp test.php --keep-tempdir=1 --log=3<br />
sudo /tmp/hphp_p6vSsP/program -m server</code>
<p>その後、別のウィンドウから実行：</p>
<p> <code>curl localhost/test.php</code>
<p>sudoを使用しない場合は、ポート8080上でHipHopを実行することができます。</p>
<p> <code>hphp/hphp test.php --keep-tempdir=1 --log=3<br />
/tmp/hphp_p6vSsP/program -m server -p 8080<br />
GET http://localhost:8080/test.php</code>
<p>あなたのサーバーを管理するにはこのコマンドを実行：</p>
<p> <code>GET http://localhost:8088</code>
<p>また、デーモンとしてサーバを実行することができます：</p>
<p> <code>sudo /tmp/hphp_p6vSsP/program -m daemon</code>
<p><strong>モード4：</strong>HipHopインタプリタで直接実行する。</p>
<p> <code>hphpi/hphpi -f test.php  (note the "-f" flag)</code>
<p><strong>モード5：</strong>HipHopインタプリタを逐次変換Webサーバかデーモンとして起動する。</p>
<p> <code>sudo hphpi/hphpi -m server (or daemon)<br />
curl localhost/test.php<br />
curl localhost:8088</code><br />
<h3>大きなコードベースのコンパイル</h3>
<p>まずコンパイラの様々なスイッチを理解しましょう：</p>
<p> <code>hphp/hphp --help</code>
<p>いくつかのフラグを指定する方法が３つあります。 <span class="caps">（1）HDF</span>形式の設定ファイル。hdf形式の詳細については doc/hdf をお読みください。次に、<code>--config</code>で、使用する設定ファイルを指定します。<span class="caps">（2）HDF</span>ファイル内のほぼすべてのオプションは、直接ドット表記形式で列挙することができます。たとえば<code>-v "node.subnode=value"</code> のように。（3）我々は、最も頻繁に使用されるものをいくつかのショートカットを作成しました。このようになります<code>--force</code> 。</p>
<p>最も重要なフラグはインクルードまたは除外するファイルやディレクトリを指定するものです。これらはきれいに設計されていないので、今後改善する必要があると感じています。疑問がある場合は、単にファイル名のリストを別のファイルに準備して<code>--input-list</code>のスイッチを使用します。</p>
<h3>オンデマンド解析モード使用する（オプション）</h3>
<p>コマンドラインから指定されていないファイルは、コンパイラがそれらを見つける事が出来る場合<strong>のみ</strong> 、インクルードされます。あなたの書いたinclude文下記のように扱われる事になります：</p>
<ul>
<li>単純なリテラルの結合、コンパイラはコンパイル時にそれを計算することができます。</li>
<li><code>"include_once $MY_ROOT.'/path/file.php';"</code>のような単純な形式で記述<br /><strong>注：</strong>ここでいう、$ MY_ROOTはこのような内容の設定ファイルを作成する事でコンパイラに指示することができます：</li>
</ul>
<p> <code>IncludeRoots {<br />
  * {<br />
    root = $MY_ROOT<br />
    path = lib/my_code<br />
  }<br />
  * {<br />
    root = $ANOTHER_ROOT<br />
    path = anotherlib<br />
  }<br />
}</code>
<p>この設定ファイルを含むように<code>--config</code>を使用する 。コンパイラは、上記のinclude文を&#8221;lib / my_code/path/file.php&#8221;として解決します。</p>
<p><strong>注：</strong>オンデマンドモードを設定することが困難な場合、すべてのコンパイルしたい<span class="caps">PHP</span>ファイル含めるように<code>--input-list</code>を使用してください。</p>
<h3>distccの使用</h3>
<p>大規模なコンパイルについては、我々は<a href="http://distcc.samba.org">distccの</a>セットアップをお勧めします。</p>
<h3>例：PHPUnitのコンパイル</h3>
<p>1. <span class="caps">PHPUnit</span>の PHPファイルをチェックアウトする：</p>
<p> <code>git clone git://github.com/sebastianbergmann/phpunit.git<br />
cd phpunit<br />
git checkout -b 3.4 origin/3.4</code>
<p>2.確実かつ安全な方法として入力ファイルを指定します。</p>
<p> <code>find . -name "*.php" &gt; files.list</code>
<p>これはコンパイルしたいすべてPHPファイルのリストです。</p>
<p>3.プロジェクトをコンパイルする準備が整いました。</p>
<p> <code>$HPHP_HOME/src/hphp/hphp --input-list=files.list -k 1 --log=3 \<br />
  --include-path="." --force=1 --cluster-count=50 \<br />
  -v "AllDynamic=true" -v "AllVolatile=true" </code>
<p><code>-k 1</code>または<code>--keep-tempdir=1</code>で、新しい一時的なディレクトリが毎回作成されます。この方法はコンパイルを試している時に便利です。</p>
<p>PHPUnitはPHPUnitのルートディレクトリから相対的にインクルードを行っているので、<code>--include-path</code>が必要です。このオプションを指定しない場合、すべてのこのような形式 &#8220;include &#8217;somepath/file.php&#8217;;&#8221; はそれを含むファイルからの相対パスとして扱われます。</p>
<p>HipHopがコードに発見した警告やエラーを無視するには<code>--force=1</code>が必要です。このオプションがなければ、コンパイラはエラーがあれば画面上にダンプして停止します。<code>--force=1</code>を使った場合、これらのエラーのほとんどは実行時エラーでしょう。この場合もあなたはまだ出力ディレクトリの下に生成された CodeError.js でそれらを確認できます。</p>
<p><code>--cluster-count=50</code>distcc無しでのコンパイルに役立ちます。このフラグがなければ、それぞれの<span class="caps">PHP</span>ファイルに対してcppファイルが1つ生成されます。PHPファイルの数が多い場合、cppファイルのコンパイルがToo Manyで終わる可能性があります。clusteringを使えばPHPファイルの数は重要ではありません。HipHopは指定された数の.cppファイルを生成し、より簡単にdistccに少ない回数でこれを渡す事ができます。クラスタの数はdistccのワーカー数より少し少ないくらいにすべきです。例えば20台のマシンで8つずつのdistccワーカーを動かしている場合はクラスタ数は100がよいでしょう。しかし、ある種の最適値を見つけるにはコンパイル時間を比較しながらにクラスタ数を上げたり下げたりしてください。</p>
<p><code>-v "AllDynamic=true"</code>このオプションにより 、動的な関数や、動的メソッド呼び出しを問題なくサポートすることができます。コーディング中に動的関数呼び出しや動的メソッド呼び出しをしている場合はオンを推奨します。少しパフォーマンスが犠牲になりますが、それが安全です。</p>
<p><code>-v "AllVolatile=true"</code>このオプションにより、関数やクラスの動的な宣言を問題なくサポートすることができます。<code>function_exists()</code>や<code>class_exits()</code>を宣言の前後で実行したり、その順序に意味があるような異常なテストを実行しない限りはオンにすることを推奨します。PHPUnitは、いくつかのクラスファイルをロードした後、新しいクラスを見つけるためその戻り値を比較する為に<code>get_declared_classes()</code>を呼び出すことがあります。したがって、PHPUnitにはこのスイッチを追加する必要があります。ほとんどの場合は、オンにする必要はありません。これは、パフォーマンスが場合によって犠牲になります。</p>
<p>4.これでコンパイルされたPHPUnitのバイナリができたはずです。もしここまで到達することはできない場合は、私たちに報告してください。バイナリを実行するには、</p>
<p> <code>php phpunit.php (in PHP)<br />
/tmp/hphp_po33pK/program -f phpunit.php (in HipHop, note the -f flag)</code> <code>php phpunit.php PHPUnit/Tests/Framework/SuiteTest.php<br />
/tmp/hphp_po33pK/program -v "Server.SourceRoot=`pwd`" \<br />
   -f phpunit.php PHPUnit/Tests/Framework/SuiteTest.php</code>
<p>コンパイルされたバイナリの&#8221;プログラム&#8221;は、通常<code>phpunit.php</code>と同じディレクトリから実行するよう注意してください。PHPUnitは、ローカルディスクから.phpファイルを探す際に<code>file_exists()</code>を使っているからです。より高度な設定をし静的ファイルキャッシュを構築することで、ディスク上の場所の依存関係を削除する事もできます。</p>
<p>注意<code>-v "Server.</code><code>SourceRoot=`pwd`"</code>は、通常は必要ありません。しかし、PHPUnitのかなりの数のファイル操作はいくつかのファイルの場所に基づく、ローカルディスク上にへの<code>realpath()</code>を呼び出しています。だから我々はテストを実行する場合にこれを追加する必要がありました。</p>
<p>5.いくつかの役に立つヒント：</p>
<p>（1）<code>--keep-tempdir=1</code>でバイナリを作ったが、その名前を忘れてしまった場合は、単純なコマンドは、通常それを見つけることができます。</p>
<p> <code>ls -altrd /tmp/hphp_* | tail -1</code>
<p>（2）多くの一時的なディレクトリがディスク容量を使い切る事があります。全てのHipHopの一時ファイルはこのよう削除できます。</p>
<p> <code>rm -fR /tmp/hphp_*</code><br />
<h2>例：HPHPiの下でPHPUnitの実行</h2>
<p> <code>$HPHP_HOME/src/hphpi/hphpi -f phpunit.php<br />
$HPHP_HOME/src/hphpi/hphpi -f phpunit.php PHPUnit/Tests/Framework/SuiteTest.php</code>
<p><font color="red">海平：私たちは、すべてのSuiteTest.php渡すことができますが、我々は、我々はまだ完全に、PHPUnitのいくつかのローカルディスク上の推定といくつかのマイナーなバグをのために、PHPUnit/Tests/Frameworkの下で完全にパスすることはできていません。</font><font color="red">全ての問題を修正する為に今もデバッグ中です。</font></p>
<h3>例：WordPressのコンパイル</h3>
<p>1.WordPressのコピーを取得します。注意、私たちはHipHopでWordPressをコンパイルする前に修正する必要がある2つ、3つの問題を見つけました。これらは、Wordpressの<span class="caps">SVN</span>のトランクにも反映されていますがバックポートはされていません。</p>
<p> <code>wget http://wordpress.org/latest.tar.gz<br />
tar zxvf wordpress-2.9.1.tar.gz<br />
cd wordpress<br />
[patch to fix some PHP coding problems that will cause compilation errors]</code>
<p>2.config.sample.phpをコピーするなどしてconfig.phpを作成し、データベース情報を設定します。このファイルは、 コンパイル<span class="caps">前に</span>準備しなければならないので、最終的なバイナリにされます。このファイルの変更がある場合はパッケージ全体の再コンパイルが必要です。</p>
<p>3.すべてのコンパイルしたいPHPファイルのリストを作成：</p>
<p> <code>find . -name "*.php" &gt; files.list</code>
<p>4.プロジェクトをコンパイルする準備が整いました。</p>
<p> <code>$HPHP_HOME/src/hphp/hphp --input-list=files.list -k 1 --log=3 \<br />
  --force=1 --cluster-count=50</code>
<p>WordPressはPHPUnitほど動的なコーディングを持っていないためPHPUnitよりも簡単です。</p>
<p>5.コンパイル済みのバイナリが出来たはずです。それを実行するには</p>
<p> <code>sudo /tmp/hphp_xpl7hT/program -m server -v "Server.SourceRoot=`pwd`" \<br />
  -v "Server.DefaultDocument=index.php" -c $HPHP_HOME/bin/mime.hdf</code>
<p><code>sudo</code> WordPressがそのポートのみで動作するのでポート80にListenする為に必要です。</p>
<p><code>-m server</code>  サーバーモードでプログラムを実行します<code>-m daemon</code>としても大丈夫です。</p>
<p><code>-v "Server.SourceRoot=`pwd`"</code> 画像やcssファイルを見つけるには、依然として必要です。</p>
<p><code>-v "Server.DefaultDocument=index.php"</code> http://server/ として動作する為に必要。</p>
<p><code>-c $HPHP_HOME/bin/mime.hdf</code>静的なコンテンツのファイル拡張子に応じて<span class="caps">異なる</span> MIMEヘッダを提供する必要とするサーバーではロードする必要がある。</p>
<p>冗長なログを参照するには、</p>
<p><code>-v "Log.Level=Verbose"</code>これはエラー、警告、情報よりも多く出力します。<br /><code>-v "Log.NoSilencer=on"</code>は、WordPressのコードで多く使用される@演算子でエラーを出力します 。<br /><code>-v "Log.Header=on"</code>ログの各行のヘッダに出力されます 。ほとんどのヘッダは16進数による長い文字列です。これは16進エンコードされたスタックトレースです。これを読めるように変換するには以下のコマンドを実行します。</p>
<p> <code>/tmp/hphp_xpl7hT/program -m translate the-long-hex-string-without-brackets<br />
</code></p>
<p>&#8211;訳ここまで</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.candycane.jp/archives/300/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>HipHopのビルドとインストール方法(和訳)</title>
		<link>http://blog.candycane.jp/archives/295</link>
		<comments>http://blog.candycane.jp/archives/295#comments</comments>
		<pubDate>Sun, 21 Feb 2010 04:18:54 +0000</pubDate>
		<dc:creator>yandod</dc:creator>
				<category><![CDATA[ブログ]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[HipHop]]></category>
		<category><![CDATA[和訳]]></category>

		<guid isPermaLink="false">http://blog.candycane.jp/?p=295</guid>
		<description><![CDATA[ソースコードがついに公開されたHipHop for PHPのビルドとインストール方法のドキュメントの和訳を作成しました。CentOSかFedoraの環境をお持ちの方は早速ビルドに挑戦してみてはいかがでしょうか。利用法のドキュメントの和訳は引き続きアップします。

PHPをC++に変換して高速化する「HipHop for PHP」をFacebookが公開
HipHopのビルドとインストール方法(和訳)
HipHopを実行するには(和訳)

原文
http://wiki.github.com/facebook/hiphop-php/building-and-installing
ビルドとインストール
HipHopはCentOSとFedora向けに開発されており、他のオペレーティングシステム上でのビルドは現在のところ機能しません。他のオペレーティングシステム向けのサポートは準備ができ次第追加されます。
前提条件
HipHopの前提条件はすべてをを静的にビルドする事です。ほとんどのパッケージは直接あなたのディストリビューションのパッケージ管理システムからインストールすることができます。
必要なパッケージ

cmakeの2.6以上のバージョン
g++ / gccの4.1以上のバージョン
Boost 1.37以上のバージョン
flex
bison
{re2cの{0}0.13.0以上のバージョン
libmysql
libxml2
libmcrypt
libicu 4.2以上のバージョン
openssl
binutils 及び binutils-dev
libcap
gd
zlib
tbb インテルのスレッドビルディングブロック
libmbfl： git clone git：/ /github.com/scottmac/libmbfl.git
Oniguruma
libpcre3
libexpat

カスタムパッケージ
以下のパッケージは若干の変更が加えられており、最新のソースのコピーに対して提供されているパッチを当てる必要があります。

libcurl src/ third_party/libcurl.fb-changes.diff
libevent 1.4 src/third_party/libevent.fb-changes.diff

パッチを適用するにはあなたのビルド環境は： curl-7.20.0 hiphop-php libevent-1.4.13-stable
次のコマンドを入力します： cd libevent-1.4.13-stable cp ../hiphop-php/src/third_party/libevent.fb-changes.diff . patch &#60; libevent.fb-changes.diff cd .. cd curl-7.20.0 cp ../hiphop-php/src/third_party/libcurl.fb-changes.diff . patch -p0 &#60; libcurl.fb-changes.diff
パッチ処理中にエラーが表示される場合は -p0 を入力しないでください。
バンドルパッケージ

src/third_party

libafdt
libmbfl
sqlite3
timelib



ビルド
ソースからIntel TBBを使用する
ソースからTBBの構築した場合や、、手動でバイナリをインストールした場合はいくつかの変数をバージョンと場所のヒントを与えるためにエクスポートする必要があります。
export TBB_INSTALL_DIR="/home/user/tbb22_012oss" export TBB_ARCH_PLATFORM="intel64/cc4.1.2_libc2.5_kernel2.6.20"
目的はls $TBB_INSTALL_DIR/$TBB_ARCH_PLATFORM　に対してリンクするファイルが表示される事です。
ビルド
CMakeは、現在の選択されているビルドツールです。
あなたのカスタムのlibcurl、libeventや、必要に応じてインストールした他のライブラリの場所をCMakeに指し示す必要があります。CMAKE_PREFIX_PATH変数は場所のヒントを与えるために使用されます。
export CMAKE_PREFIX_PATH=/home/user
HipHopのビルドは下記のように行います。
cd /home/user/hiphop git clone git://github.com/facebook/hiphop-php.git cd [...]]]></description>
			<content:encoded><![CDATA[<p>ソースコードがついに公開されたHipHop for PHPのビルドとインストール方法のドキュメントの和訳を作成しました。CentOSかFedoraの環境をお持ちの方は早速ビルドに挑戦してみてはいかがでしょうか。利用法のドキュメントの和訳は引き続きアップします。</p>
<ul>
<li><a href="http://blog.candycane.jp/archives/275">PHPをC++に変換して高速化する「HipHop for PHP」をFacebookが公開</a></li>
<li>HipHopのビルドとインストール方法(和訳)</li>
<li><a href="http://blog.candycane.jp/archives/300">HipHopを実行するには(和訳)</a></li>
</ul>
<h3>原文</h3>
<p><a href="http://wiki.github.com/facebook/hiphop-php/building-and-installing">http://wiki.github.com/facebook/hiphop-php/building-and-installing</a></p>
<h3>ビルドとインストール</h3>
<p>HipHopはCentOSとFedora向けに開発されており、他のオペレーティングシステム上でのビルドは現在のところ機能しません。他のオペレーティングシステム向けのサポートは準備ができ次第追加されます。</p>
<h2>前提条件</h2>
<p>HipHopの前提条件はすべてをを静的にビルドする事です。ほとんどのパッケージは直接あなたのディストリビューションのパッケージ管理システムからインストールすることができます。</p>
<h3>必要なパッケージ</h3>
<ul>
<li>cmakeの<i>2.6以上のバージョン</i></li>
<li>g++ / gccの<i>4.1以上のバージョン</i></li>
<li>Boost <i>1.37以上のバージョン</i></li>
<li>flex</li>
<li>bison</li>
<li>{re2cの{0}0.13.0以上のバージョン</li>
<li>libmysql</li>
<li>libxml2</li>
<li>libmcrypt</li>
<li>libicu <i>4.2以上のバージョン</i></li>
<li>openssl</li>
<li>binutils 及び binutils-dev</li>
<li>libcap</li>
<li>gd</li>
<li>zlib</li>
<li>tbb <i>インテルのスレッドビルディングブロック</i></li>
<li>libmbfl： git clone git：/ /github.com/scottmac/libmbfl.git</li>
<li><a href="http://www.geocities.jp/kosako3/oniguruma/">Oniguruma</a></li>
<li>libpcre3</li>
<li>libexpat</li>
</ul>
<h3>カスタムパッケージ</h3>
<p>以下のパッケージは若干の変更が加えられており、最新のソースのコピーに対して提供されているパッチを当てる必要があります。</p>
<ul>
<li><a href="http://curl.haxx.se/download.html">libcurl</a> <i>src/ third_party/libcurl.fb-changes.diff</i></li>
<li><a href="http://www.monkey.org/%7Eprovos/libevent/">libevent 1.4</a> <i>src/third_party/libevent.fb-changes.diff</i></li>
</ul>
<p>パッチを適用するにはあなたのビルド環境は：<br /> <code>curl-7.20.0 hiphop-php libevent-1.4.13-stable</code></p>
<p>次のコマンドを入力します：<br /> <code>cd libevent-1.4.13-stable</code><br /> <code>cp ../hiphop-php/src/third_party/libevent.fb-changes.diff .</code><br /> <code>patch &lt; libevent.fb-changes.diff</code><br /> <code>cd ..</code><br /> <code>cd curl-7.20.0</code><br /> <code>cp ../hiphop-php/src/third_party/libcurl.fb-changes.diff .</code><br /> <code>patch -p0 &lt; libcurl.fb-changes.diff</code></p>
<p>パッチ処理中にエラーが表示される場合は -p0 を入力しないでください。</p>
<h3>バンドルパッケージ</h3>
<ul>
<li>src/third_party
<ul>
<li>libafdt</li>
<li>libmbfl</li>
<li>sqlite3</li>
<li>timelib</li>
</ul>
</li>
</ul>
<h2>ビルド</h2>
<h3>ソースからIntel <span class="caps">TBB</span>を使用する</h3>
<p>ソースから<span class="caps">TBBの</span>構築した場合や、、手動でバイナリをインストールした場合はいくつかの変数をバージョンと場所のヒントを与えるためにエクスポートする必要があります。</p>
<p><code>export TBB_INSTALL_DIR="/home/user/tbb22_012oss"</code><br /> <code>export TBB_ARCH_PLATFORM="intel64/cc4.1.2_libc2.5_kernel2.6.20"</code></p>
<p>目的は<code>ls $TBB_INSTALL_DIR/$TBB_ARCH_PLATFORM</code>　に対してリンクするファイルが表示される事です。</p>
<h3>ビルド</h3>
<p>CMakeは、現在の選択されているビルドツールです。</p>
<p>あなたのカスタムのlibcurl、libeventや、必要に応じてインストールした他のライブラリの場所をCMakeに指し示す必要があります。<i>CMAKE_PREFIX_PATH</i>変数は場所のヒントを与えるために使用されます。</p>
<p><code>export CMAKE_PREFIX_PATH=/home/user</code></p>
<p>HipHopのビルドは下記のように行います。</p>
<p><code>cd /home/user/hiphop</code><br /> <code>git clone git://github.com/facebook/hiphop-php.git</code><br /> <code>cd hiphop-php</code><br /> <code>git submodule init</code><br /> <code>git submodule update</code><br /> <code>export HPHP_HOME=`pwd`</code><br /> <code>export HPHP_LIB=`pwd`/bin</code><br /> <code>cmake .</code></p>
<p>これが終わるとビルドに必要なファイルが生成されシェルに処理が戻ります。最後にmakeを実行します。エラーが発生した場合は、チェックアウトしたディレクトリ内のCMakeCache.txtの削除が必要です。</p>
<p><code>make</code></p>
<p>&#8211;訳ここまで</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.candycane.jp/archives/295/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PHPをC++に変換して高速化する「HipHop for PHP」をFacebookが公開</title>
		<link>http://blog.candycane.jp/archives/275</link>
		<comments>http://blog.candycane.jp/archives/275#comments</comments>
		<pubDate>Wed, 03 Feb 2010 03:19:26 +0000</pubDate>
		<dc:creator>yandod</dc:creator>
				<category><![CDATA[ブログ]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[HipHop]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[和訳]]></category>

		<guid isPermaLink="false">http://blog.candycane.jp/?p=275</guid>
		<description><![CDATA[アメリカ時間の昼ごろに僕のTwitter上が一つのニュースで埋め尽くされました。
PHPをC++に変換して高速化する技術をFacebookが公開したというものです。世界中のPHPハッカーが注目する興味深いリリースという事でちょっと長いですが、リリースノートの和訳を行いました。
2/21追記:
マニュアルなどの和訳も行いました。

PHPをC++に変換して高速化する「HipHop for PHP」をFacebookが公開
HipHopのビルドとインストール方法(和訳)
HipHopを実行するには(和訳)

原文
http://developers.facebook.com/news.php?blog=1&#038;story=358
Facebookにおいて重要なことのひとつが開発スピードが早いことです。過去6年間にわたって、PHPが提供する高速な開発ペースによって多くを成し遂げてきました。プログラミング言語としてみると、PHPはシンプルです。簡単に習得し、簡単に書き、簡単に読み、簡単にデバッグする事ができます。我々は他の言語よりも早くエンジニアを獲得し、それによってより早いイノベーションをすることができます。
 
今日、私は2年に渡って作業してきた素晴らし小さなチームのプロジェクトを共有することに興奮しています。
HipHop for PHP。HipHopにより私たちはページによっては、Webサーバー上で約50パーセントのCPU使用量を削減できました。CPUの使用量の少なさは、サーバー台数の削減につながり、それはより少ないオーバーヘッドを意味します。このプロジェクトは、Facebook上で多大な影響を及ぼしました。私たちはHipHopがウェブに大きな利益をもたらすと感じ、今晩オープンソースとしてリリースしPHPによる大規模WEBサイトのスケーリングに新たな方向性が提示されると期待します。いまだ完全ではないHipHopでも信じれれないような結果を残しており、ベータ版であっても心地よいものであるでしょう。
HipHop for PHPは技術的にはコンパイラではありません。むしろ、ソースコードの変換機です。HipHopはあなたのPHPのソースコードをC++に最適化された形に機械的に変換します。そしてg++でコンパイルされます。HipHopは意味的に同等の方法でソースコードを実行しますが、いくつかのまれに使われる機能(eval など)を犠牲としてパフォーマンスを向上させます。HipHopコード変換機は、PHPランタイムの再実装であり、また多くのパフォーマンス向上の為のPHPエクステンションを書き直したものです。
スクリプト言語としてのスケーリングPHP
PHPのルーツは、PerlやPython、Rubyのようなスクリプト言語で、すべてのプログラマの生産性の面で大きな利点があり、迅速かつ継続的な開発を可能にします。これはC++やような伝統的なコンパイル言語やJavaのような中間言語と比較した場合です 。一方、スクリプト言語は一般的にCPUおよびメモリの使用に関して効率的でないことが知られています。このため、月間4000億以上のページビューでPHPをベースにしたFacebookをスケールするという事は挑戦的な事でした。
これらの非効率性に対処する1つの一般的な解決法はPHPアプリケーションの複雑な部分をPHPエクステンションとしてC++で書き直す事です。これによりPHPはフロントエンドのHTMLとC++のロジックをつなぎ合わせる糊のような言語に大きく変化します。技術的な観点はうまくいきますが、アプリケーションに携わる事ができるエンジニアの数を劇的に減らしてしまう事になります。C++を学ぶ事はPHPエクステンションを書くための最初の一歩にすぎません。次にZend APIを理解しなければいけません。我々のエンジニアリングチームは100万ユーザ当たり1人と比較的小さいものですが、私たちのコードベースの一部を他のものよりアクセシブルにするわけにはいかないと考えました。
ほとんどのページがログインしたユーザによってカスタマイズされるFacebookのスケーリングはとりわけ挑戦的です。あなたのホームページを表示する際はすべてのあなたの友人のルックアップする必要があり、関連する更新を検索し、（マルチフィードと呼ばれているカスタムサービス）、お客様のプライバシー設定に基づいてフィルタリングし、コメントや写真などの豊富なデータを補います。そのような豊富なデータが、人々がFacebookの愛している部分です。これらすべてが１秒以下で行われます。HipHopによって最終的にPHPとして組み立てられるロジックを、迅速かつ継続的に書く事ができます。またこのロジックはC++やErlangやJava、Pythonで書かれたバックエンドサービス、ニュースフィード、検索、チャットサービスおよび他のコア部分などと連携しています。
2007年には、これらの問題を解決するための、いくつかの異なる方法を考案しそのうちいくつかの実装を試みました。共通の改善案はFacebookを別の言語で書き換える事でした。ですが、サイト開発の複雑さと速度を達成するためにいくらかの時間がかかると思われました。我々はPHP内部のZendエンジンも書き換えそれらのパッチを寄付しましたが、最終的に必要としてパフォーマンス向上には至りませんでした。HipHopの利益は我々の開発スピードがほとんど変わらない事です
HipHopの誕生
数年前のhackathonでの一夜に（プライムタイムのハック）、PHPをC++に変換するコードを書き始めました。かなりの構文の似ているC++は、CPUとメモリ使用量に関してはPHPを大きく凌いでいます。PHP自体もCで書かれています。我々はこれほどの量のコードを書き直すのが不可能な事はわかっていましたが、もしプログラム的にこれを行うシステムを構築したらどうなるだろうと思いました。
PHPのパフォーマンスを改善するための新しい方法を見つける事は新しいコンセプトではありません。実行時には、Zend EngineはあなたのPHPソースをオペコードに変換し、その後、Zendの仮想マシンを介して実行されます。APCとeAcceleratorのは、この出力をキャッシュしPHPで提供される大多数のウェブサイトで使用されます。またZend Serverは、オペコードの最適化とキャッシュを介してPHPを高速化する商用製品です。その代わりに、我々はPHPのソースコードを直接C++に変換した後にネイティブのマシンコードに変換することを考えました。PHPをコンパイルする事も新しいアイデアではありません。RoadsendとphcはPHPをCにコンパイルし、 QuercusはPHPをJavaにコンパイルし、 Phalanger はPHPを.Netにコンパイルします。
言うまでもなく、一度のhackathonだけでは終わりませんでした。8ヵ月後、私は速くコンパイルされたコードを実行することが可能であることを示すのに十分なコードを得ました。我々はプロジェクトのスピードアップにイアン・プロクターとミンハイ・ヤンをプロジェクトのスピードアップの為にメンバーに加えました。我々は、続く10カ月をすべてのコーディングに、次の6ヶ月を本番サーバー上でのテストに費やしました。我々はリリースから6か月の時点で、Webトラフィックの90％以上のHipHopを使用して提供していると事を誇りに思っています。
HipHopの動作
プロジェクトの主な課題は、PHPとC++の間のギャップを埋めることでした。PHPは動的な弱い型付けを持つスクリプト言語です。C++は静的型付けのコンパイルされた言語です。一方、PHPは魔法のように動的な機能を記述することができ、ほとんどのPHPは比較的簡単です。if(&#8230;){&#8230;} else {..}はfunction foo($x) { include $x; } よりも好ましいです。これは、我々がパフォーマンスを稼いでいるところです。私たちの生成したコードは変数や関数の静的バインディングをいつでも使用可能です。また、変数のほとんどに型推定を用いてメモリを節約します。
変換プロセスは3つの主な手順が含まれます：

収集した情報から何が宣言され、何に依存しているかの静的分析
C++の特定のタイプを、スカラー、文字列、配列、クラス、オブジェクト、およびバリアント型から選ぶ型推定
ほとんどの部分のPHPのステートメントと式をC++のステートメントと式に直接対応されたコード生成

 
また我々はHPHPi も実験的なインタプリタとして設計し開発しました。HPHPiを使用すれば、PHPのソースコードを実行前にコンパイルする必要はありません。これは私達がヒップホップ自体のバグをキャッチする事と、技術者がコードを書く方法を変更せずにPHPコードを書けるようにします。
全体的にはHipHopはC++のパフォーマンス上のメリットを活用しつつ、PHPの良い面を維持することができます。合計では我々30万行のコードとと5000以上のユニットテストを書きました。今夜GitHub上で、全てがPHPライセンスの下でリリースされます。
今夜のお楽しみ
今夜、我々はHipHopの深部へ飛び込む開発者の小さな集まりをストリーミングします。ご覧になりたい場合は太平洋時間19:30に再度こちらのページをご覧ください。
今夜、多くの質問があると思いますが、HipHop wikiを見てください。（リンクを後ほど公開するつもりです）あるいは、 HipHopの開発者メーリングリストに参加してください。また今後数ヶ月、FOSDEM 、 SCALE 、PHP UK、 ConFoo、TEX　X、OSCONなどのイベントで、でHipHop for PHPについて講演をします。我々は非常に盛んなオープンソースプロジェクトに皆さんと一緒にHip Hopが進化することに興奮しています。

海平趙、シニアエンジニア、Facebookがプログラマの楽園と悟っています。
&#8212;訳ここまで
長文という事と、タッチが慣れないという事があって誤訳があるかもしれません。自分なりに咀嚼して書いてみたつもりですがご意見などあればTwitterなどで頂ければと思います。次はだれが最初に試すか、本番に投入するかという勝負ですね。とはいえFacebookでは90%のトラフィックで利用しているとの事ですからコードの書き方に気をつければ安定しているのでしょう。ということでみなさん、お試しあれ！
]]></description>
			<content:encoded><![CDATA[<p>アメリカ時間の昼ごろに僕のTwitter上が一つのニュースで埋め尽くされました。<br />
PHPをC++に変換して高速化する技術をFacebookが公開したというものです。世界中のPHPハッカーが注目する興味深いリリースという事でちょっと長いですが、リリースノートの和訳を行いました。</p>
<p>2/21追記:<br />
マニュアルなどの和訳も行いました。</p>
<ul>
<li>PHPをC++に変換して高速化する「HipHop for PHP」をFacebookが公開</li>
<li><a href="http://blog.candycane.jp/archives/295">HipHopのビルドとインストール方法(和訳)</a></li>
<li><a href="http://blog.candycane.jp/archives/300">HipHopを実行するには(和訳)</a></li>
</ul>
<h4>原文</h4>
<p><a href="http://developers.facebook.com/news.php?blog=1&#038;story=358">http://developers.facebook.com/news.php?blog=1&#038;story=358</a></p>
<p>Facebookにおいて重要なことのひとつが開発スピードが早いことです。過去6年間にわたって、PHPが提供する高速な開発ペースによって多くを成し遂げてきました。プログラミング言語としてみると、PHPはシンプルです。簡単に習得し、簡単に書き、簡単に読み、簡単にデバッグする事ができます。我々は他の言語よりも早くエンジニアを獲得し、それによってより早いイノベーションをすることができます。</p>
<p> <img src="http://wiki.developers.facebook.com/images/a/ac/HipHop_logo_white.png" style="float: left; padding-right: 10px;">
<p>今日、私は2年に渡って作業してきた素晴らし小さなチームのプロジェクトを共有することに興奮しています。<br />
HipHop for PHP。HipHopにより私たちはページによっては、Webサーバー上で約50パーセントのCPU使用量を削減できました。CPUの使用量の少なさは、サーバー台数の削減につながり、それはより少ないオーバーヘッドを意味します。このプロジェクトは、Facebook上で多大な影響を及ぼしました。私たちはHipHopがウェブに大きな利益をもたらすと感じ、今晩オープンソースとしてリリースしPHPによる大規模WEBサイトのスケーリングに新たな方向性が提示されると期待します。いまだ完全ではないHipHopでも信じれれないような結果を残しており、ベータ版であっても心地よいものであるでしょう。</p>
<p>HipHop for PHPは技術的にはコンパイラではありません。むしろ、ソースコードの変換機です。HipHopはあなたのPHPのソースコードをC++に最適化された形に機械的に変換します。そしてg++でコンパイルされます。HipHopは意味的に同等の方法でソースコードを実行しますが、いくつかのまれに使われる機能(eval など)を犠牲としてパフォーマンスを向上させます。HipHopコード変換機は、PHPランタイムの再実装であり、また多くのパフォーマンス向上の為のPHPエクステンションを書き直したものです。</p>
<h2>スクリプト言語としてのスケーリングPHP</h2>
<p>PHPのルーツは、PerlやPython、Rubyのような<a href="http://en.wikipedia.org/wiki/Server-side_scripting">スクリプト言語</a>で、すべてのプログラマの生産性の面で大きな利点があり、迅速かつ継続的な開発を可能にします。これはC++やような伝統的な<a href="http://en.wikipedia.org/wiki/Compiled_language">コンパイル言語</a>やJavaのような<a href="http://en.wikipedia.org/wiki/Interpreted_language">中間言語</a>と比較した場合です 。一方、スクリプト言語は一般的にCPUおよびメモリの使用に関して効率的でないことが知られています。このため、月間4000億以上のページビューでPHPをベースにしたFacebookをスケールするという事は挑戦的な事でした。</p>
<p>これらの非効率性に対処する1つの一般的な解決法はPHPアプリケーションの複雑な部分をPHPエクステンションとしてC++で書き直す事です。これによりPHPはフロントエンドのHTMLとC++のロジックをつなぎ合わせる糊のような言語に大きく変化します。技術的な観点はうまくいきますが、アプリケーションに携わる事ができるエンジニアの数を劇的に減らしてしまう事になります。C++を学ぶ事はPHPエクステンションを書くための最初の一歩にすぎません。次に<a href="http://theserverpages.com/php/manual/en/zend.php">Zend API</a>を理解しなければいけません。我々のエンジニアリングチームは100万ユーザ当たり1人と比較的小さいものですが、私たちのコードベースの一部を他のものよりアクセシブルにするわけにはいかないと考えました。</p>
<p>ほとんどのページがログインしたユーザによってカスタマイズされるFacebookのスケーリングはとりわけ挑戦的です。あなたのホームページを表示する際はすべてのあなたの友人のルックアップする必要があり、関連する更新を検索し、（マルチフィードと呼ばれているカスタムサービス）、お客様のプライバシー設定に基づいてフィルタリングし、コメントや写真などの豊富なデータを補います。そのような豊富なデータが、人々がFacebookの愛している部分です。これらすべてが１秒以下で行われます。HipHopによって最終的にPHPとして組み立てられるロジックを、迅速かつ継続的に書く事ができます。またこのロジックはC++やErlangやJava、Pythonで書かれたバックエンドサービス、ニュースフィード、検索、チャットサービスおよび他のコア部分などと連携しています。</p>
<p>2007年には、これらの問題を解決するための、いくつかの異なる方法を考案しそのうちいくつかの実装を試みました。共通の改善案はFacebookを別の言語で書き換える事でした。ですが、サイト開発の複雑さと速度を達成するためにいくらかの時間がかかると思われました。我々はPHP内部の<a href="http://en.wikipedia.org/wiki/Zend_Engine">Zendエンジン</a>も書き換えそれらのパッチを寄付しましたが、最終的に必要としてパフォーマンス向上には至りませんでした。HipHopの利益は我々の開発スピードがほとんど変わらない事です</p>
<h2>HipHopの誕生</h2>
<p>数年前のhackathonでの一夜に（<a href="http://www.facebook.com/video/video.php?v=124728580468&amp;ref=mf">プライムタイムのハック</a>）、PHPをC++に変換するコードを書き始めました。かなりの構文の似ているC++は、CPUとメモリ使用量に関してはPHPを大きく凌いでいます。PHP自体もCで書かれています。我々はこれほどの量のコードを書き直すのが不可能な事はわかっていましたが、もしプログラム的にこれを行うシステムを構築したらどうなるだろうと思いました。</p>
<p>PHPのパフォーマンスを改善するための新しい方法を見つける事は新しいコンセプトではありません。実行時には、Zend EngineはあなたのPHPソースをオペコードに変換し、その後、Zendの仮想マシンを介して実行されます。<a href="http://pecl.php.net/package/APC">APC</a>と<a href="http://eaccelerator.net/">eAcceleratorの</a>は、この出力をキャッシュしPHPで提供される大多数のウェブサイトで使用されます。また<a href="http://en.wikipedia.org/wiki/Zend_Server">Zend Server</a>は、オペコードの最適化とキャッシュを介してPHPを高速化する商用製品です。その代わりに、我々はPHPのソースコードを直接C++に変換した後にネイティブのマシンコードに変換することを考えました。PHPをコンパイルする事も新しいアイデアではありません。<a href="http://www.roadsend.com/">Roadsend</a>と<a href="http://www.phpcompiler.org/">phc</a>はPHPをCにコンパイルし、 <a href="http://www.caucho.com/resin-3.0/quercus/">Quercus</a>はPHPをJavaにコンパイルし、 <a href="http://www.php-compiler.net/">Phalanger</a> はPHPを.Netにコンパイルします。</p>
<p>言うまでもなく、一度のhackathonだけでは終わりませんでした。8ヵ月後、私は速くコンパイルされたコードを実行することが可能であることを示すのに十分なコードを得ました。我々はプロジェクトのスピードアップにイアン・プロクターとミンハイ・ヤンをプロジェクトのスピードアップの為にメンバーに加えました。我々は、続く10カ月をすべてのコーディングに、次の6ヶ月を本番サーバー上でのテストに費やしました。我々はリリースから6か月の時点で、Webトラフィックの90％以上のHipHopを使用して提供していると事を誇りに思っています。</p>
<h2>HipHopの動作</h2>
<p>プロジェクトの主な課題は、PHPとC++の間のギャップを埋めることでした。PHPは動的な弱い型付けを持つスクリプト言語です。C++は静的型付けのコンパイルされた言語です。一方、PHPは魔法のように動的な機能を記述することができ、ほとんどのPHPは比較的簡単です。if(&#8230;){&#8230;} else {..}はfunction foo($x) { include $x; } よりも好ましいです。これは、我々がパフォーマンスを稼いでいるところです。私たちの生成したコードは変数や関数の静的バインディングをいつでも使用可能です。また、変数のほとんどに型推定を用いてメモリを節約します。</p>
<p>変換プロセスは3つの主な手順が含まれます：</p>
<ol>
<li>収集した情報から何が宣言され、何に依存しているかの静的分析</li>
<li>C++の特定のタイプを、スカラー、文字列、配列、クラス、オブジェクト、およびバリアント型から選ぶ型推定</li>
<li>ほとんどの部分のPHPのステートメントと式をC++のステートメントと式に直接対応されたコード生成</li>
</ol>
<p> <a href="http://wiki.developers.facebook.com/images/2/23/HipHop_transformation_process.png"><img src="http://wiki.developers.facebook.com/images/2/23/HipHop_transformation_process.png" width="450" height="281"></a>
<p>また我々はHPHPi も実験的なインタプリタとして設計し開発しました。HPHPiを使用すれば、PHPのソースコードを実行前にコンパイルする必要はありません。これは私達がヒップホップ自体のバグをキャッチする事と、技術者がコードを書く方法を変更せずにPHPコードを書けるようにします。</p>
<p>全体的にはHipHopはC++のパフォーマンス上のメリットを活用しつつ、PHPの良い面を維持することができます。合計では我々30万行のコードとと5000以上のユニットテストを書きました。今夜GitHub上で、全てがPHPライセンスの下でリリースされます。</p>
<h2>今夜のお楽しみ</h2>
<p>今夜、我々はHipHopの深部へ飛び込む開発者の小さな集まりをストリーミングします。ご覧になりたい場合は太平洋時間19:30に再度こちらのページをご覧ください。</p>
<p>今夜、多くの質問があると思いますが、HipHop wikiを見てください。（リンクを後ほど公開するつもりです）あるいは、 <a href="http://groups.google.com/group/hiphop-php-dev">HipHopの開発者メーリングリスト</a>に参加してください。また今後数ヶ月、<a href="http://www.fosdem.org/2010/schedule/events/scalingfacebook">FOSDEM</a> 、 <a href="http://www.socallinuxexpo.org/scale8x/">SCALE</a> 、<a href="http://www.phpconference.co.uk/">PHP UK</a>、 <a href="http://www.confoo.ca/">ConFoo</a>、<a href="http://tek.phparch.com/">TEX　X</a>、<a href="http://en.oreilly.com/oscon2010">OSCON</a>などのイベントで、でHipHop for PHPについて講演をします。我々は非常に盛んなオープンソースプロジェクトに皆さんと一緒にHip Hopが進化することに興奮しています。</p>
<div style="text-align: center;"></div>
<p><em>海平趙、シニアエンジニア、Facebookがプログラマの楽園と悟っています。</em></p>
<p>&#8212;訳ここまで</p>
<p>長文という事と、タッチが慣れないという事があって誤訳があるかもしれません。自分なりに咀嚼して書いてみたつもりですがご意見などあればTwitterなどで頂ければと思います。次はだれが最初に試すか、本番に投入するかという勝負ですね。とはいえFacebookでは90%のトラフィックで利用しているとの事ですからコードの書き方に気をつければ安定しているのでしょう。ということでみなさん、お試しあれ！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.candycane.jp/archives/275/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
