<?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/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>秋元 &#187; PHP</title>
	<atom:link href="http://akimoto.jp/blog/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://akimoto.jp/blog</link>
	<description>育休明けブロガーが会社ブログや英語ブログで扱いづらい余りネタを書くブログ</description>
	<lastBuildDate>Mon, 06 Feb 2012 15:13:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://akimoto.jp/blog/category/php/feed/" />
		<item>
		<title>symfony1.x+propel1.3+MySQL5.1/5.5で生成したSQLのCreate TableがType=InnoDBで失敗する場合の対処法</title>
		<link>http://akimoto.jp/blog/2011/02/03/propel-mysql55-sql-error-on-type-innodb/</link>
		<comments>http://akimoto.jp/blog/2011/02/03/propel-mysql55-sql-error-on-type-innodb/#comments</comments>
		<pubDate>Thu, 03 Feb 2011 00:50:08 +0000</pubDate>
		<dc:creator>akky</dc:creator>
				<category><![CDATA[symfony]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[create table]]></category>
		<category><![CDATA[engine]]></category>
		<category><![CDATA[InnoDB]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Propel1.3]]></category>
		<category><![CDATA[Propel1.4]]></category>
		<category><![CDATA[symfony1.2]]></category>
		<category><![CDATA[syntax error]]></category>
		<category><![CDATA[type]]></category>

		<guid isPermaLink="false">http://akimoto.jp/blog/?p=3191</guid>
		<description><![CDATA[サーバーをMySQL5.0から5.5に変えたら、symfony1.2+propelでbuild:allした際に生成されたSQLがエラーで動かなくなりました。 このようなエラー You have an error in y &#8230; <a href="http://akimoto.jp/blog/2011/02/03/propel-mysql55-sql-error-on-type-innodb/">Continue reading <span class="meta-nav">&#8594;</span></a><p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2011/02/03/propel-mysql55-sql-error-on-type-innodb/">symfony1.x+propel1.3+MySQL5.1/5.5で生成したSQLのCreate TableがType=InnoDBで失敗する場合の対処法</a></p>
]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p>サーバーをMySQL5.0から5.5に変えたら、symfony1.2+propelでbuild:allした際に生成されたSQLがエラーで動かなくなりました。</p>
<p>このようなエラー</p>
<blockquote><p>You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘Type=InnoDB’ at line 13
</p></blockquote>
<p>MySQL5.1以降で、テーブルのエンジン指定でtype=が使えなくなり、<a href="http://dev.mysql.com/doc/refman/5.1/en/create-table.html">engine=と書かなければいけなくなった</a>ようです(table_optionのところ)。<a href="http://zippykid.com/blog/2010/05/symfony-mysql5-5-error/">propel1.4以前のジェネレーターでは&#8221;type=InnoDB&#8221;のようなSQL文を生成している</a>ので、古いpropelを使っているsymfony1.xではMySQLを5.1以上に変更した際にテーブルが生成できなくなってしまいます。</p>
<p>symfony1.2がpropel1.3-devを更新することはなさそうなので、これを回避するには、自分でpropelにパッチをあてることになります。</p>
<p>(symfony)/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/MysqlDDLBuilder.php</p>
<p>163行目の</p>
<blockquote><p>		$script .= &#8220;Type=$mysqlTableType&#8221;;
</p></blockquote>
<p>を、</p>
<blockquote><p>		$script .= &#8220;Engine=$mysqlTableType&#8221;;
</p></blockquote>
<p>に修正。</p>
<p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2011/02/03/propel-mysql55-sql-error-on-type-innodb/">symfony1.x+propel1.3+MySQL5.1/5.5で生成したSQLのCreate TableがType=InnoDBで失敗する場合の対処法</a></p>
]]></content:encoded>
			<wfw:commentRss>http://akimoto.jp/blog/2011/02/03/propel-mysql55-sql-error-on-type-innodb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://akimoto.jp/blog/2011/02/03/propel-mysql55-sql-error-on-type-innodb/" />
	</item>
		<item>
		<title>Windows版MongoDBの設定ファイル指定と、Web UI無効化</title>
		<link>http://akimoto.jp/blog/2010/11/20/windows-mongodb-conf-and-web-rest-ui/</link>
		<comments>http://akimoto.jp/blog/2010/11/20/windows-mongodb-conf-and-web-rest-ui/#comments</comments>
		<pubDate>Sat, 20 Nov 2010 06:53:41 +0000</pubDate>
		<dc:creator>akky</dc:creator>
				<category><![CDATA[mongoDB]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[MongoDB]]></category>
		<category><![CDATA[mongodb.conf]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[設定]]></category>

		<guid isPermaLink="false">http://akimoto.jp/blog/?p=2997</guid>
		<description><![CDATA[mongodはデフォルトで、port 28017 にアクセスすることでブラウザから動作をモニターできる、というのをSymfony2勉強会で教えてもらいました。 このHTTPインタフェースは、/etc/mongodb.co &#8230; <a href="http://akimoto.jp/blog/2010/11/20/windows-mongodb-conf-and-web-rest-ui/">Continue reading <span class="meta-nav">&#8594;</span></a><p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2010/11/20/windows-mongodb-conf-and-web-rest-ui/">Windows版MongoDBの設定ファイル指定と、Web UI無効化</a></p>
]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p>mongodはデフォルトで、port 28017 にアクセスすることでブラウザから動作をモニターできる、というのをSymfony2勉強会で教えてもらいました。</p>
<p>このHTTPインタフェースは、/etc/mongodb.conf に</p>
<p><code>nohttpinterface = true<br />
</code></p>
<p>のように設定することで止められます。(<a href="http://www.mongodb.org/display/DOCS/File+Based+Configuration">設定できる項目についてはここ</a>)</p>
<p>しかし、Windowsの場合は? mongodb.conf をmongod.exe と同じ場所においてみましたが、別に読み込んでくれません。</p>
<pre><code>
> mongod --config mongodb.conf
</code></pre>
<p>と明にファイルを指定することはできましたが、デフォルトのconfファイルの場所というのがあるかはわかりませんでした。</p>
<p>また、このWeb UIからRESTで格納されたデータを参照するためには、</p>
<pre><code>
> mongod --rest
</code></pre>
<p>のオプションをつけて起動する必要がありました。(デフォルトでオフ)</p>
<p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2010/11/20/windows-mongodb-conf-and-web-rest-ui/">Windows版MongoDBの設定ファイル指定と、Web UI無効化</a></p>
]]></content:encoded>
			<wfw:commentRss>http://akimoto.jp/blog/2010/11/20/windows-mongodb-conf-and-web-rest-ui/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://akimoto.jp/blog/2010/11/20/windows-mongodb-conf-and-web-rest-ui/" />
	</item>
		<item>
		<title>Windows+XamppでSymfony2開発環境を作る</title>
		<link>http://akimoto.jp/blog/2010/11/19/symfony2-development-on-windows-xampp/</link>
		<comments>http://akimoto.jp/blog/2010/11/19/symfony2-development-on-windows-xampp/#comments</comments>
		<pubDate>Fri, 19 Nov 2010 14:44:20 +0000</pubDate>
		<dc:creator>akky</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[ネタ]]></category>

		<guid isPermaLink="false">http://akimoto.jp/blog/?p=2988</guid>
		<description><![CDATA[第一回Symfony2勉強会のために、WindowsマシンにSymfony2の開発環境を構築したメモ [2011-10-14 もろもろ更新] Windows版のPHP, MongoDBでSymfony2 メモリやディスク &#8230; <a href="http://akimoto.jp/blog/2010/11/19/symfony2-development-on-windows-xampp/">Continue reading <span class="meta-nav">&#8594;</span></a><p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2010/11/19/symfony2-development-on-windows-xampp/">Windows+XamppでSymfony2開発環境を作る</a></p>
]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p>第一回Symfony2勉強会のために、WindowsマシンにSymfony2の開発環境を構築したメモ [2011-10-14 もろもろ更新]</p>
<h3>Windows版のPHP, MongoDBでSymfony2</h3>
<p>メモリやディスクがふんだんにある場合は、VMWare等の仮想環境を使ってLinuxなりをインストールする方がいいかと思います。理由は、</p>
<ul>
<li>デプロイ先の実機サーバはどのみちLinuxとかが多いだろう</li>
<li>上にも関連するけど、各コンポーネントでWindowsでの実績が少なかったり、Windowsだけ動かないバグがあったりするかもしれない</li>
</ul>
<p>対象は、仮想環境とか動かすといっぱいいっぱいな非力なノートPCでなんとかしたい人ぐらい。</p>
<p>ちなみにこの手順は2004年に買ったLet&#8217;s note R3E, Pentium M 1.1GHz, メモリ768MB, HDD40Gに、Windows XP SP3で動作確認しました。</p>
<h3>Xamppで手っ取り早く環境を作る</h3>
<p><a href="http://www.apachefriends.org/">Xampp</a>使います。既にApacheやMySQLが単体で入ってたら、アンインストールか最低でも止めてください。</p>
<p>[更新 2011-01-31] Xampp 1.7.4が正式公開されました。以下の手順の一部の作業は不要となりました</p>
<p>[更新 2011-10-14] Xamppは1.7.7になってますね</p>
<p><strike>Symfony2にはPHP5.3.2以上が必要ですが、最新のXampp1.7.3のPHPは5.3.1です。動きません。しょうがないので、Xamppの次のバージョン1.7.4のベータ版を入れます。これならPHPは5.3.3</p>
<p><a href="http://www.apachefriends.org/en/xampp-beta.html">Xampp beta xampp-win32-1.7.4-beta2-vc6.7z ダウンロード</a></p>
<p>ベータ版は.7zしか提供されてない…</p>
<p>拡張子.7z のファイルの展開。アーカイバによっては対応してないので、<a href="http://sevenzip.sourceforge.jp/">7-zip</a>(32bit x86)とか入れる。7Zfm.exeを実行し、ファイル指定してc:\xamppとかに展開。</p>
<p>> cd \xampp<br />
> setup_xampp.bat<br />
適当なキーを押してインストール完了<br />
</strike></p>
<p><ins><a href="http://www.apachefriends.org/jp/xampp-windows.html">xampp for windows</a>からXamppのインストーラをダウンロードして、実行</ins></p>
<p>> xampp-control.exe<br />
Apacheの[Start]を押す</p>
<p>ブラウザでhttp://localhost/にアクセス。xamppのページが出たらOK。「MySQL動いてないけどいいの?」みたいなことが出る。マシンに余力あればMySQLも[Start]してもよい</p>
<h3>Symfony2のダウンロード</h3>
<p><strike><a href="http://symfony-reloaded.org/code">Sandboxのzip</a>をダウンロード</strike></p>
<p>[更新] symfony.comドメインに移っているので、<a href="http://symfony.com/download" target="_blank">Symfony.comのdownloadページ</a>からダウンロード</p>
<p>適当な場所に展開(c:\xampp\sandbox)</p>
<p>> cd \xampp\sandbox<br />
> \xampp\php\php.exe check.php<br />
不足している設定がエラー・警告で表示されるのでこれをつぶしていく</p>
<h3>Apacheからsandboxを呼べるように</h3>
<p>sandboxというドメインでアクセスすることにする。</p>
<p>Apacheの設定ファイルで、バーチャルホストを扱うファイルを編集</p>
<p>> \xampp\apache\conf\extra\httpd-vhosts.conf</p>
<pre><code>NameVirtualHost *:80

# sandboxでアクセスしてきたらC:/xampp/sandbox/webにまわす
&lt;VirtualHost *:80&gt;
  ServerAdmin postmaster@sandbox
  DocumentRoot &quot;C:/xampp/sandbox/web&quot;
  ServerName sandbox
  ServerAlias www.sandbox
  ErrorLog &quot;logs/sandbox-error.log&quot;
  CustomLog &quot;logs/sandbox-access.log&quot; combined
&lt;/VirtualHost&gt;

# ファイルへのアクセス権を与え、.htaccess等が効くようにする
&lt;Directory &quot;C:/xampp/sandbox/web&quot;&gt;
  AllowOverride All
  Order deny,allow
  allow from all
&lt;/directory&gt;</code></pre>
<p>Apache再起動</p>
<h4>ブラウザからsandboxでApacheにつながるように</h4>
<p>hostsファイルを編集</p>
<p>> notepad \Windows\system32\drivers\etc\hosts</p>
<pre><code># 追加
127.0.0.1 sandbox</code></pre>
<p># Windows Vista/7とかだと、管理者として実行とかしないと書き換えられないかも</p>
<h3>ブラウザからチェックスクリプトを実行</h3>
<p>http://sandbox/check.php</p>
<p>水色で表示されたウォーニングを片付けていく</p>
<h4>short_open_tagをオフに</h4>
<p>&#8220;&lt;?&#8221;のこと。これはオフにすべき。</p>
<p># Xamppのデフォルト設定って…</p>
<p>> \xampp\php\php.ini</p>
<pre><code>short_open_tag = Off
;short_open_tag = On</code></pre>
<h4>APCを有効にする</h4>
<p>APCについても、Xampp 1.7.4の正式版で同梱されているので簡単になりました<br />
<strike><br />
ビルド済みのWindows版dllを<a href="http://downloads.php.net/pierre/">php_apc-3.1.5-5.3-vc6-x86.zip</a> からダウンロード、展開</p>
<p>php_apc.dllをc:\xampp\php\ext にコピー<br />
</strike><br />
c:\xampp\php\php.ini を開いて、[PECL]の後ろに</p>
<pre><code>extension=php_apc.dll
</code></pre>
<h4>XSLTを有効にする</h4>
<p>Propel使わないととりあえず不要っぽいけど。php.iniで、</p>
<pre><code># 追加
extension=php_xsl.dll</code></pre>
<h4>posix_isatty() CLI出力に色をつける</h4>
<p>PHPのposix関数はWindowsでは使えないとマニュアルにあるので、この警告は消せない</p>
<h4>正しいタイムゾーンの設定</h4>
<p>何か設定してあれば警告は出ないのだけれど、実はXampp Betaのphp.iniはドイツのベルリン時刻になっている。そこで、php.iniを修正</p>
<pre><code># date.timezone = Europe/Berlin
date.timezone = Asia/Tokyo</code></pre>
<p>その後ろのデフォルトlatitude/longitudeも自分の緯度経度にしておいても良い。どこで使うか知らないけど</p>
<p><a href="http://akimoto.jp/blog/wp-content/uploads/2010/11/xampp-symfony2-success.png"><img src="http://akimoto.jp/blog/wp-content/uploads/2010/11/xampp-symfony2-success.png" alt="" title="xampp-symfony2-success" width="399" height="241" class="alignnone size-full wp-image-2992" /></a></p>
<h3>sandboxについてきたアプリの実行</h3>
<p><a href="http://docs.symfony-reloaded.org/quick_tour/the_big_picture.html">クイックツアー</a>参照</p>
<p>http://sandbox/index_dev.php/</p>
<p>Hello, Fabienアプリ</p>
<p>http://sandbox/index_dev.php/hello/Fabien</p>
<hr />
<h3>MongoDBインストール</h3>
<p><a href="http://www.mongodb.org/downloads">ダウンロードページ</a> Windows 32bit</p>
<p><a href="http://www.mongodb.org/display/DOCS/Quickstart+Windows#QuickstartWindows-Createadatadirectory">説明</a></p>
<p>今のstable最新は1.6.3。これをダウンロード (どこでもいいんだけど)c:\xamppに展開</p>
<p>> cd c:\xampp\mongodb-win32-i386-1.6.3<br />
> cd bin<br />
> mongod.exe</p>
<p>おっとエラー。DB置き場は手で掘らないといけない</p>
<p>> md \data<br />
> md \data\db<br />
> mongod<br />
Windowsの警告→ブロック解除</p>
<h3>MongoDBクライアントから確認</h3>
<p>もういっこコンソール開く</p>
<p>> cd \xampp\mongodb-win32-i386-1.6.3\bin<br />
> mongo<br />
> 1+2<br />
3<br />
で良し<br />
> Ctrl+C</p>
<h3>PHPからMongoDBを使えるようにする</h3>
<p>説明<a href="http://www.mongodb.org/display/DOCS/PHP+Language+Center">ここ</a></p>
<p>PHP MongoDBドライバはpeclなので、自分でビルドするか誰かがビルドしたものを持ってくるかしないといけない。ここは当然後者。<a href="https://github.com/mongodb/mongo-php-driver/downloads">ここからダウンロード</a>する</p>
<p>VC6でts(スレッドセーフ)なバイナリをダウンロード mongo-1.0.10-php5.3vc6ts.zip</p>
<p>展開</p>
<p>php_mongo.dllをc:\xampp\php\ext にコピー</p>
<p>c:\xampp\php\php.iniを編集 [PECL]の後ろに</p>
<pre><code>extension=php_mongo.dll</code></pre>
<p>PHPから動作確認</p>
<p>Xampp-controlからApacheを再起動([stop]-[start])</p>
<p>http://localhost/ のxamppからphpinfo()を表示</p>
<p>&#8220;mongo&#8221;でページ内検索。設定が出てればOK</p>
<h4>PHPから動作確認</h4>
<p>適当なphpファイルを作る(mongo.php)</p>
<pre><code>&lt;?php

$mongo = new Mongo('localhost:27017');
$fuga = $mongo-&gt;hoge-&gt;fuga;
$fuga-&gt;insert(array('1' =&gt; 1));
echo $fuga-&gt;count();</code></pre>
<p>実行</p>
<p>php mongo.php</p>
<p>実行のたびにエラー無く、表示される数が増えれば動いている</p>
<h3>あとやること</h3>
<p>Apache, (MySQL), MongoDBをWindowsサービスとしてインストールすると、PC再起動したときに動くようにできる。Apache/MySQLについてはc:\xamppの下にサービスにするコマンドがあるのでそれらを実行。</p>
<p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2010/11/19/symfony2-development-on-windows-xampp/">Windows+XamppでSymfony2開発環境を作る</a></p>
]]></content:encoded>
			<wfw:commentRss>http://akimoto.jp/blog/2010/11/19/symfony2-development-on-windows-xampp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://akimoto.jp/blog/2010/11/19/symfony2-development-on-windows-xampp/" />
	</item>
		<item>
		<title>symfony1.3/1.4がリリースされましたね</title>
		<link>http://akimoto.jp/blog/2009/12/01/symfony1-3_and_1-4_released/</link>
		<comments>http://akimoto.jp/blog/2009/12/01/symfony1-3_and_1-4_released/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 12:12:33 +0000</pubDate>
		<dc:creator>akky</dc:creator>
				<category><![CDATA[symfony]]></category>
		<category><![CDATA[Swift Mailer]]></category>

		<guid isPermaLink="false">http://akimoto.jp/blog/?p=1715</guid>
		<description><![CDATA[PHPのフレームワークsymfonyの新しいバージョンがでました! リリース文 主な変更点はFivestarさんが簡単にまとめられてます。 1.2のメンテナンス期間の終わりを根拠に1.0を使い続けるという人がいて最近悲し &#8230; <a href="http://akimoto.jp/blog/2009/12/01/symfony1-3_and_1-4_released/">Continue reading <span class="meta-nav">&#8594;</span></a><p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/12/01/symfony1-3_and_1-4_released/">symfony1.3/1.4がリリースされましたね</a></p>
]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p>PHPのフレームワークsymfonyの新しいバージョンがでました!</p>
<p><a href="http://www.symfony-project.org/blog/2009/12/01/symfony-1-3-and-1-4-stable-released">リリース文</a></p>
<p>主な変更点は<a href="http://d.hatena.ne.jp/Fivestar/20091201/1259668781">Fivestarさんが簡単にまとめられてます</a>。</p>
<p>1.2のメンテナンス期間の終わりを根拠に1.0を使い続けるという人がいて最近悲しかったですが、これで堂々と「新規プロジェクトは1.4で」「1.2は1.3で(可能なら1.4)」とできますね。</p>
<p>メールライブラリとしてSwift Mailer 4が同梱されていますが、まだJISメールの問題が直ってないので、ご注意ください。</p>
<p>単発でsymfony1.3/1.4からメールを送りたいだけなら、日本語JISメールに対応した他のメールライブラリをlib/vendorに突っ込んで呼ぶとかでいいと思います。symfonyとSwift Mailerが用意しているいろいろな技をJISでも活用するには、もう少しお待ちください。</p>
<p>symfonyの導入は、新しい1.3/1.4でも<a href="http://www.symfony-project.org/getting-started/1_4/ja/">日本語のマニュアル</a>が既に用意されています。</p>
<p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/12/01/symfony1-3_and_1-4_released/">symfony1.3/1.4がリリースされましたね</a></p>
]]></content:encoded>
			<wfw:commentRss>http://akimoto.jp/blog/2009/12/01/symfony1-3_and_1-4_released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://akimoto.jp/blog/2009/12/01/symfony1-3_and_1-4_released/" />
	</item>
		<item>
		<title>外国語ならなおさら、できる限りのことをしないと伝わらない</title>
		<link>http://akimoto.jp/blog/2009/10/08/bug-report-in-foreign-language/</link>
		<comments>http://akimoto.jp/blog/2009/10/08/bug-report-in-foreign-language/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 05:55:44 +0000</pubDate>
		<dc:creator>akky</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[コミュニケーション]]></category>
		<category><![CDATA[バグレポート]]></category>
		<category><![CDATA[外国語]]></category>
		<category><![CDATA[英語]]></category>

		<guid isPermaLink="false">http://akimoto.jp/blog/?p=1644</guid>
		<description><![CDATA[PHPの文字エンコーディングの入力チェックを改善する方法について日本語のブログで議論があり、そのパッチを本家に提案したが、却下された、という話が盛り上がっているようです。 バグレポートされた岩本さん自身や、コメ<p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/10/08/bug-report-in-foreign-language/">外国語ならなおさら、できる限りのことをしないと伝わらない</a></p>
]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p>PHPの文字エンコーディングの入力チェックを改善する方法について日本語のブログで議論があり、<a href="http://d.hatena.ne.jp/IwamotoTakashi/20091006/p1">そのパッチを本家に提案したが、却下された</a>、という話が盛り上がっているようです。</p>
<p>バグレポートされた岩本さん自身や、コメント欄や<a href="http://b.hatena.ne.jp/entry/d.hatena.ne.jp/IwamotoTakashi/20091006/p1">はてなブックマーク</a>では、</p>
<ul>
<li>PHPの開発陣がダメだ</li>
<li>マルチバイトに理解がない外国人がダメだ</li>
<li>残念だ</li>
</ul>
<p>みたいな意見があまりに大勢をしめているので、そのバグレポートを見てみた上で、思ったことを述べたいと思います。</p>
<p><a href="http://bugs.php.net/bug.php?id=49785">岩本さんのバグレポート</a>を訳すと、こんな感じです</p>
<blockquote><pre>
要約:
------------
セキュリティ的な要件により、htmlspecialchars()はバイト列をもっと
厳密にチェックすべきです。XSSするコードが見つかりました。
http://d.hatena.ne.jp/t_komura/20091004/1254665511 [日]

原始的なパッチを書きました。

http://iwamot.com/misc/html.c.patch.20091006

使えるかどうか知りませんが(笑)

再現コード:
---------------
// 越長 UTF-8 列
echo htmlspecialchars("A\xC0\xAF&#038;",     ENT_QUOTES, 'UTF-8');
// 不正な Shift_JIS 列
echo htmlspecialchars("B\x80&#038;",         ENT_QUOTES, 'Shift_JIS');
echo htmlspecialchars("C\x81\x7f&#038;",     ENT_QUOTES, 'Shift_JIS');
// 不正な EUC-JP 列
echo htmlspecialchars("D\x80&#038;",         ENT_QUOTES, 'EUC-JP');
echo htmlspecialchars("E\xA1\xFF&#038;",     ENT_QUOTES, 'EUC-JP');
echo htmlspecialchars("F\x8E\xFF&#038;",     ENT_QUOTES, 'EUC-JP');
echo htmlspecialchars("G\x8F\xA1\xFF&#038;", ENT_QUOTES, 'EUC-JP');

予期する結果:
----------------
何も出てこないこと

実際の結果:
--------------
A_&amp;B_&amp;C&amp;D_&amp;E__&amp;F__&amp;G___&amp;
("_"は不正なバイトを意味します)
</pre>
</blockquote>
<p>もしあなたが日本語でオープンソースのプロジェクトをやってて、他にも毎日バグレポートを受けているような状態で、こんな感じのバグレポートが来て、「問題の詳細はこのURL、アラビア語ですけど」みたいに書かれていたとして、この問題について調査を始めたり、優先してこの問題に取り掛かったりするでしょうか? 僕ならしないと思います。</p>
<p>ましてや、&#8221;I don&#8217;t know whether it is useful though <img src='http://akimoto.jp/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> &#8221; 「使えるかどうか知りませんが(笑)」ですよ? こういうのは日本的な謙譲の美徳として日本のコミュニティでは通じても(どこでも通じるかはわかりませんが)、およそ真剣に「この問題について知ってほしい、興味を持ってほしい」という態度とは受け取られないと思います。</p>
<p>それまで、複数のブログでいろいろな人がしっかりした問題点の検証や議論を、かなりの長文の日本語でされていて、日本語でそれらを読んでいる人にとっては問題は自明なのかもしれません。</p>
<p>しかし、PHPの開発は英語でコミュニケーションされてますし、彼らが英語で上のバグレポートに出てくる断片からウェブを検索したとしても、日本語での議論のようなまとまった情報は見つからないかもしれません。</p>
<p>日本語で議論されている皆さんの努力にはとても敬意を払っていますが、最終的な問題がPHP本体を直すことにあるのであれば、英語に持っていって相手を説得するときに尻すぼみになっているのは残念です。</p>
<p>僕も英語でバグレポートするのは大変ですし、岩本さんのレポートも、パッチもあるし問題の背景が共有されているなら十分だとは思いますが、何が問題で、直さないとどういう問題が起こるか、起こったとして被害の大きさはどれぐらいか、修正がこれまでの他アプリにどんな副作用を起こしうるか(あるいは起こさないか)、といったことを書かないと、むしろ取り合わないのが普通じゃないかと思います。</p>
<p>はてなブックマークのコメントで書いたところ、岩本さんからこう追記をいただきました。</p>
<blockquote><p>id:AKIMOTOさんに限らず、私のレポートの仕方が悪かったせいだと思われる方、ぜひ本件を引き継いでいただけないでしょうか。私の望みは htmlspecialchars の文字エンコーディング妥当性チェックが改善されることであって、どなたかが達成されるのであれば、それで万々歳です。採用されるレポートの書き方もそれで分かるでしょうし。
</p></blockquote>
<p>他人の英語について何かコメントしたら、こういう返しをされるだろうな、というのはわかっていました。</p>
<p>しかし、それぞれの人はそれぞれの優先順位があります。この問題が無視できる問題だ、とは僕は思いませんが、僕自身がこの先解こうとしている他の問題に比べれば、自分で引き継ぐほど差し迫った不利益を受けていませんし、また、議論されているみなさんほど、この問題について精通してもいません。英語が書けるというだけで、誰もが替われるような話ではないでしょう。少なくとも僕にはこの件の翻訳ボランティアになる動機がありません。</p>
<p>ただ、それが「自分に取って優先順位の高い問題で、どうしても通したい」ときにどうしてるか、は紹介できるかと思います。</p>
<p>ちょうど昨日、僕も<a href="http://swiftmailer.lighthouseapp.com/projects/21527/tickets/110-japanese-cellphone-address-needs-to-bypass-rfc-validation#ticket-110-1">一本のバグレポート</a>を書きました。主な興味の対象のレイヤーが違うのですが、PHPのメールライブラリSwift Mailerのバージョン4に関するもので、日本独自仕様の提案に関係するものです。</p>
<p>具体的には、NTT Docomoなどが過去に間違って導入した、RFC違反の形式でピリオドを持つメールアドレスを受け付ける特別なモードを導入してほしい、というものです。</p>
<p>PHPとSwift Mailerではレイヤーも規模も、何もかも違いますが、</p>
<p>- 何が問題なのか<br />
- その問題に他のアプリケーションはどう対処しているのか<br />
 &#8211; mail addressの場合、iPhoneやGmailが日本市場向けに何をしているか書きました<br />
 &#8211; 文字エンコーディングの入力チェックの場合、他の言語や処理系でどう扱っているか、というような話になるかと思います<br />
- その変更を採用することで、既存のユーザーに影響するか<br />
 &#8211; 今回は影響するもの、影響しないものを合わせて複数の取りうる修正案を併記しました</p>
<p>といったことをまとめ、何が問題で、どうしてこんなばかばかしいRFC違反のメールを受け付けられることが日本の一部のユーザーにとって(ひいてはSwift Mailerの日本での普及にとって)大事か、というのを伝えようとしたつもりです。なんといっても、こんな修正日本以外のユーザーには何のメリットもないですからね。</p>
<p># ちなみにこのレポート書くのに何日もかかってます。英語でブログ書いてるからといって、複雑な内容を一瞬で書けるわけではもちろんないです。</p>
<p>このメールの件は、いわば「悪い仕様を追認する」汚い修正なので、念入りにiPhoneなど他社の対応状況も添えましたが、PHPのエスケープで起こる問題が本当に筋のいいものであれば、これまでの日本語での議論をきっちりまとめて伝えることで、それよりは受け入れやすいのではないかと思います。</p>
<p>英語でバグレポート書くのも大変でしょうし、却下されれば凹みもするでしょうけれど、それを日本語に持ち帰ってきて「残念だ、残念だ」と騒いでも、それは決して相手に伝わらないですよ。</p>
<p>はてブコメントで「残念」と書いている人の中に、そのバグレポートを開いて見てみた人がどれぐらいいるんでしょうか。</p>
<p>「いつもの同じ問題」じゃないとわからせるには、わからせるだけの証拠を積み上げて見せないといけないし、バグレポートで届かないなら、(英語の)ブログを書いたりサイトを立ち上げたり、メーリングリストで問題提起したり、却下した本人にメールしたり、いろいろとあるのではと思います。</p>
<p>この問題で議論されているみなさんの努力、バグレポートまで書かれてチャレンジされた岩本さんの努力には(一PHPユーザーとして)たいへん感謝していますが、努力することが重要なのじゃなくて、どうやって自分(達)の意を通すかが大事ではと思います。それが「PHPのせい」「コアチームのせい」「英語のせい」「外国人のせい」で終わってしまうとしたら、僕はそれが残念です。</p>
<p># あと、↑途中書いた僕自身のスタンスをよく読まずに「じゃあお前やれば」とコメントしないでくださいね。僕の次のバグレポートは、Swift Mailerでのiso-2022-jpサブジェクト行のエンコード&#038;行分割に関するものになる予定です</p>
<p>[追記 2009.10.09]</p>
<p> 徳丸浩さんが、PHPが今すぐ直らないとしても実施できる、<a href="http://www.tokumaru.org/d/20091009.html#p01">このセキュリティホールが起こりうる条件と、その回避法についての解説</a>をまとめられています。</p>
<p>[追記 2009.10.09]</p>
<p><a href="http://bugs.php.net/bug.php?id=49785">moriyoshiさんが最初のバグレポートをcomitしてくださいました</a>。ありがとうございます。</p>
<p>将来のマイナーアップデートリリースでこの問題は解消されるでしょう。実際に今このセキュリティホールが有効になる条件下のアプリケーションを運用されている方は、個別にパッチをあてたPHPをビルドして差し替えるか、上の徳丸さんの対策を行なう必要はあります。</p>
<p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/10/08/bug-report-in-foreign-language/">外国語ならなおさら、できる限りのことをしないと伝わらない</a></p>
]]></content:encoded>
			<wfw:commentRss>http://akimoto.jp/blog/2009/10/08/bug-report-in-foreign-language/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://akimoto.jp/blog/2009/10/08/bug-report-in-foreign-language/" />
	</item>
		<item>
		<title>Symfony Meetup Tokyoやります</title>
		<link>http://akimoto.jp/blog/2009/09/05/symfony-meetup-tokyo/</link>
		<comments>http://akimoto.jp/blog/2009/09/05/symfony-meetup-tokyo/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 23:24:04 +0000</pubDate>
		<dc:creator>akky</dc:creator>
				<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://akimoto.jp/blog/?p=1564</guid>
		<description><![CDATA[PHPカンファレンス当日でいろいろと連絡が滞っていてすみません。 6(日)昼の「symfonyのFabienさんと東京観光」は予定通りやります。これまで参加を表明された方は、朝10:00に四谷に集まると思っていてください &#8230; <a href="http://akimoto.jp/blog/2009/09/05/symfony-meetup-tokyo/">Continue reading <span class="meta-nav">&#8594;</span></a><p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/09/05/symfony-meetup-tokyo/">Symfony Meetup Tokyoやります</a></p>
]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p>PHPカンファレンス当日でいろいろと連絡が滞っていてすみません。</p>
<p>6(日)昼の「<a href="http://akimoto.jp/blog/2009/09/02/tokyo-one-day-sightseeing-with-symfony-fabien-potencier/">symfonyのFabienさんと東京観光</a>」は予定通りやります。これまで参加を表明された方は、朝10:00に四谷に集まると思っていてください(途中から参加とか遅れる人のために、あとでメールで詳細は送ります) まだ人数増やせると思うので参加表明は<a href="http://akimoto.jp/blog/2009/09/02/tokyo-one-day-sightseeing-with-symfony-fabien-potencier/">こちら</a>を読んでください。</p>
<p>6(日)の夜、こちらも四谷近辺で、Symfony Meetupをやります。懇親会です。いい機会なのでsymfony使いで集まってゴハンを食べましょう。</p>
<h3>申し込みフォーム</h3>
<p>Symfony Meetup Tokyoは盛況のうちに終了いたしました。参加くださったみなさま、ありがとうございました!</p>
<p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/09/05/symfony-meetup-tokyo/">Symfony Meetup Tokyoやります</a></p>
]]></content:encoded>
			<wfw:commentRss>http://akimoto.jp/blog/2009/09/05/symfony-meetup-tokyo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://akimoto.jp/blog/2009/09/05/symfony-meetup-tokyo/" />
	</item>
		<item>
		<title>技術メディアのみなさん、symfonyのFabien Potencierさんへの取材どうでしょう?</title>
		<link>http://akimoto.jp/blog/2009/09/03/how-about-symfony-interview/</link>
		<comments>http://akimoto.jp/blog/2009/09/03/how-about-symfony-interview/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 14:51:37 +0000</pubDate>
		<dc:creator>akky</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[pcj09]]></category>
		<category><![CDATA[カンファレンス]]></category>
		<category><![CDATA[取材]]></category>

		<guid isPermaLink="false">http://akimoto.jp/blog/?p=1561</guid>
		<description><![CDATA[PHPカンファレンスの開催がいよいよ明日・明後日となりました。 今回は、10周年ということで海外からも3名の講演者をお呼びしての充実したカンファレンスとなっています。(参加は両日とも満員で締め切っています) symfon &#8230; <a href="http://akimoto.jp/blog/2009/09/03/how-about-symfony-interview/">Continue reading <span class="meta-nav">&#8594;</span></a><p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/09/03/how-about-symfony-interview/">技術メディアのみなさん、symfonyのFabien Potencierさんへの取材どうでしょう?</a></p>
]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p><a href="http://phpcon.php.gr.jp/2009/">PHPカンファレンス</a>の開催がいよいよ明日・明後日となりました。</p>
<p>今回は、10周年ということで海外からも3名の講演者をお呼びしての充実したカンファレンスとなっています。(参加は両日とも満員で締め切っています)</p>
<p>symfonyのリーダーFabien Potencierさん、FacebookのBrian Shireさん、台湾PHPユーザー会の江 明宗さんのお三方は、なかなか東京で話せる機会もないと思いますので、ぜひ取材等いかがでしょうか? (拙いですが通訳できます)</p>
<p>特に、カンファレンス当日は<a href="http://phpcon.php.gr.jp/2009/page/sponsors">PHPカンファレンスのメディアスポンサー各社(スポンサーありがとうございます)のみなさま</a>に、ぜひ取材いただければと思います。</p>
<p>ご興味ありましたら、ぜひPHPカンファレンスでお声をかけていただくか、akimotoアットgmailかtwitter.com/akkyまで御連絡ください</p>
<p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/09/03/how-about-symfony-interview/">技術メディアのみなさん、symfonyのFabien Potencierさんへの取材どうでしょう?</a></p>
]]></content:encoded>
			<wfw:commentRss>http://akimoto.jp/blog/2009/09/03/how-about-symfony-interview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://akimoto.jp/blog/2009/09/03/how-about-symfony-interview/" />
	</item>
		<item>
		<title>symfonyのFabienさんと東京一日観光</title>
		<link>http://akimoto.jp/blog/2009/09/02/tokyo-one-day-sightseeing-with-symfony-fabien-potencier/</link>
		<comments>http://akimoto.jp/blog/2009/09/02/tokyo-one-day-sightseeing-with-symfony-fabien-potencier/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 16:58:53 +0000</pubDate>
		<dc:creator>akky</dc:creator>
				<category><![CDATA[symfony]]></category>
		<category><![CDATA[東京]]></category>
		<category><![CDATA[観光]]></category>

		<guid isPermaLink="false">http://akimoto.jp/blog/?p=1556</guid>
		<description><![CDATA[symfonyユーザーの皆様 きたる5日(土)のPHPカンファレンス2009テックデイでは、symfonyのプロジェクトリーダー兼Sensio社の社長であるFabien Potencier(ファビエン・プートンシェ)さん &#8230; <a href="http://akimoto.jp/blog/2009/09/02/tokyo-one-day-sightseeing-with-symfony-fabien-potencier/">Continue reading <span class="meta-nav">&#8594;</span></a><p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/09/02/tokyo-one-day-sightseeing-with-symfony-fabien-potencier/">symfonyのFabienさんと東京一日観光</a></p>
]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p>symfonyユーザーの皆様</p>
<p>きたる<a href="http://phpcon.php.gr.jp/2009/">5日(土)のPHPカンファレンス2009テックデイ</a>では、symfonyのプロジェクトリーダー兼Sensio社の社長であるFabien Potencier(ファビエン・プートンシェ)さんがはるばるフランスから初来日し、symfonyプロジェクトについて講演されます。</p>
<p>今回が初来日、また講演の翌日6日(日曜日)がオフということで、Fabienさんと一緒に日本のsymfonyコミュニティ(ユーザー/開発者)のみなさんとめぐる東京一日観光を行ないます。</p>
<p>二日間のPHPカンファレンスの直後でお疲れかもしれませんが、symfonyの今後についてやプロジェクトの要望などについて直接Fabienさんと話せる貴重な機会になるかと思います(通訳は有志2,3名でお手伝いしますが、ちょっと勇気を出して直接英語で、あるいは仏語でお話してみるのもよいかと)。</p>
<p>ツアー名: (仮)symfonyについて語りつつ一日東京観光<br />
日時: 2009年9月6日(日) 朝から夜まで<br />
場所候補(検討中): 浅草寺・秋葉原・皇居・明治神宮/原宿・まだ大地に立ってればお台場ガンダム・都庁展望台・他に面白いところあれば<br />
移動手段: 電車/徒歩メイン<br />
参加資格: symfonyを使ってる、使いたい、これを機に○○○○○○○から切り替えてみようかな、という人。あと昼食夕食場所の手配とかもろもろ手伝ってくれる人<br />
予定人数: 多くて10人ぐらい? そこまで居ないと思いますが、20人とか30人とかになったらたいへんかもと思いますがどうでしょう?</p>
<p>申し込み: 「a k i m o t o あっと gmail どっと com」へ、サブジェクトに「symfony東京観光参加希望」と入れてください。金曜夜締め切り</p>
<p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/09/02/tokyo-one-day-sightseeing-with-symfony-fabien-potencier/">symfonyのFabienさんと東京一日観光</a></p>
]]></content:encoded>
			<wfw:commentRss>http://akimoto.jp/blog/2009/09/02/tokyo-one-day-sightseeing-with-symfony-fabien-potencier/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://akimoto.jp/blog/2009/09/02/tokyo-one-day-sightseeing-with-symfony-fabien-potencier/" />
	</item>
		<item>
		<title>symfony1.2でsfSuperCachePluginを使う</title>
		<link>http://akimoto.jp/blog/2009/05/08/use-sfsupercacheplugin-on-symfony12/</link>
		<comments>http://akimoto.jp/blog/2009/05/08/use-sfsupercacheplugin-on-symfony12/#comments</comments>
		<pubDate>Fri, 08 May 2009 13:25:38 +0000</pubDate>
		<dc:creator>akky</dc:creator>
				<category><![CDATA[symfony]]></category>
		<category><![CDATA[sfSuperCachePlugin]]></category>
		<category><![CDATA[super cache]]></category>
		<category><![CDATA[symfony1.2]]></category>
		<category><![CDATA[キャッシュ]]></category>
		<category><![CDATA[チューニング]]></category>
		<category><![CDATA[パフォーマンス]]></category>
		<category><![CDATA[設定]]></category>

		<guid isPermaLink="false">http://akimoto.jp/blog/?p=1259</guid>
		<description><![CDATA[symfonyでsuper cacheを実現するsfSuperCachePluginの、symfony1.2での使い方について。 super cacheは、動的にページを生成するWebアプリケーションにおいて、ほとんどの &#8230; <a href="http://akimoto.jp/blog/2009/05/08/use-sfsupercacheplugin-on-symfony12/">Continue reading <span class="meta-nav">&#8594;</span></a><p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/05/08/use-sfsupercacheplugin-on-symfony12/">symfony1.2でsfSuperCachePluginを使う</a></p>
]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p>symfonyでsuper cacheを実現する<a href="http://www.symfony-project.org/plugins/sfSuperCachePlugin">sfSuperCachePlugin</a>の、symfony1.2での使い方について。</p>
<p>super cacheは、動的にページを生成するWebアプリケーションにおいて、ほとんどの場合にWebサーバの仕組みを使って静的に作成したhtml(等)を直接クライアントに返すことでサーバの応答を早くし、サーバの負荷も軽減する手法です。</p>
<p>よく知られているのはWordPressのSuperCacheプラグインです。これを正しく設定すれば、動的生成でありながら静的生成のパフォーマンスを持つブログを運営することができます。</p>
<p>これまで自作でsuper cache相当の仕組みを作ったことはあるのですが、symfonyのプラグインがあるのでこれが使えるかどうか調べてみました。</p>
<p>とりあえず、<a href="http://www.symfony-project.org/plugins/sfSuperCachePlugin">README</a>にあるように進めてみます。</p>
<h3>プラグインのインストール</h3>
<p>まず、プラグインはsymfony1.0にしか対応していませんので、普通にsymfonyコマンドでインストールしようとするとエラーになります。</p>
<p>コマンドインストールで失敗したときはいつもそうですが、パッケージを持ってきて自分で展開してみます。バージョンチェックが入ってるだけのことも多いので、これで動いてしまうプラグインも多いです。</p>
<p>> wget http://plugins.symfony-project.org/get/sfSuperCachePlugin/sfSuperCachePlugin-1.0.5.tgz</p>
<p>展開したら、sfSuperCachePlugin-1.0.5 というフォルダを、symfonyの作業フォルダ以下の plugins/sfSuperCachePlugin というフォルダにリネームしつつコピーします。</p>
<p>あとは、pluginsの下のプラグインを全部読むようになっていればsymfony ccするだけで自動的にロードされます。なってなければ、config/ProjectConfiguration.class.php のsetup()で、enableAllPluginsExcept()等を使って読み込まれるプラグインに指定してください。</p>
<p>このまま先へ進んでいくと、1.0と1.2の非互換でエラーになります。先に修正箇所を示すと、sfSuperCacheFilterの次の行</p>
<blockquote><p><code lang="php"><br />
$uri = sfRouting::getInstance()->getCurrentInternalUri();<br />
</code></p></blockquote>
<p>を、以下のように変更する必要があります。</p>
<blockquote><p><code lang="php"><br />
$uri = sfContext::getInstance()->getRouting()->getCurrentInternalUri();<br />
</code></p></blockquote>
<h3>キャッシュ格納ディレクトリの用意</h3>
<p>(symfonyアプリ)/web 以下に、静的ファイルの置き場を作ります。READMEにならって&#8221;cache&#8221;ディレクトリにします</p>
<p>> cd web<br />
> mkdir cache</p>
<p>Un*xの場合はオーナーやパーミッションも調整してください</p>
<h3>フィルタを噛ませる</h3>
<p>プラグインの中に入ってるphpは、フィルタファイル一個だけです。これを(frontend)/filters.yml の # insert your own filters here のところに追加します。</p>
<blockquote><p>
<code></p>
<pre>
supercache:
  class: sfSuperCacheFilter
  param:
    cache_dir: cache
    with_host: false
</pre>
<p></code>
</p></blockquote>
<p>ホスト名を複数持たないならwith_hostはfalseでいいです。持つ場合、この後の設定も準じて変わるのでREADMEを読んでください。</p>
<h3>リクエストがまず静的ファイルを見に行くように、.htaccessを修正</h3>
<p>web/.htaccess を書き換えます。以下の2行のところを、</p>
<blockquote><p><code><br />
 RewriteRule ^$ index.html [QSA]<br />
 RewriteRule ^([^.]+)$ $1.html [QSA]<br />
</code></p></blockquote>
<p>たとえば、以下のように書き換えます。</p>
<blockquote><p><code><br />
  RewriteCond %{REQUEST_METHOD} GET<br />
  RewriteCond %{DOCUMENT_ROOT}/symfony_apps/sandbox/web/cache/supercache/%{PATH_INFO}.php -f<br />
  RewriteRule ^(.*)$ cache/$1.php [L]<br />
</code></p></blockquote>
<p>この書き換え、READMEについてきたREQUEST_URIを使ったものが動かなかったので、自分で動くものを探してこんな風にしました。サブディレクトリにアプリを置いたりしなければREADMEのままのでも動くのかも。mod_rewriteは難しくてよくわからんです。</p>
<blockquote><p>
mod_rewriteが思うように動かないときは、とにかくhttpd.confの設定でrewrite logを取り、出たログを読みましょう。
</p></blockquote>
<p>やってるのは、</p>
<blockquote><p>
<code><br />
  web/cache/ほげほげ/ふがふが.php<br />
</code>
</p></blockquote>
<p>というファイルがアクセスされて、もしそれがあったら、そのファイルを直に実行して表示してしまう、という処理です。</p>
<p>もしファイルが無かったら、mod_rewriteの処理は下方のルールに落ちて行って、いつものフロントエンドコントローラ(web/index.php)を呼ぶようになっています。</p>
<p>これで、staticファイルが出来てればそのまま表示、出来てなければsymfonyを普通に実行(し、filters.ymlで挟んだフィルタがstaticファイルを生成)、というsuper cacheが完成となります。</p>
<h3>super cacheを動かす条件</h3>
<p>フィルタファイル sfSuperCacheFilter.class.php の中を読むとわかるのですが、super cacheが発動するには、いろいろな設定がされている必要があります。そうしないと、super cacheを動かしてたつもりが普通のキャッシュされたファイルを見てたりすることにもなります。</p>
<ul>
<li>sf_cacheがtrue/onであること</li>
<li>$_GETや$_POSTのパラメータが無いこと</li>
<li>sf_debugがfalseであること、つまりデバッグモードでは呼ばれません</li>
<li>sf_no_script_nameがtrueであること</li>
<li>エラーコードが200(正常)であること。エラーページとかを403で返しているなら、それはsuper cacheの対象外です</li>
<li>そのmoduleのdefault cacheが enable: on であること</li>
<li>そのmodule/actionの cacheが enable: on であること</li>
<li>そのmodule/actionの with_layout: がtrueであること</li>
</ul>
<p>キャッシュを使うことになってるページで、ページ全体をキャッシュして問題無く、GET/POSTパラメータも渡ってこない(パラメータが違えば普通ページ内容も変わりますから)という条件。</p>
<p>これ全部満たして、はじめてsuper cacheフィルタが効きます。</p>
<p>sfSuperCacheFilter::execute()のチェック文を、デバッガ等で確認しながらsettings.ymlやcache.ymlの設定を変え、(symfony ccもして、)動く設定になってることを確かめてください。</p>
<h3>superキャッシュの動作確認</h3>
<p>この状態でモジュールをつくり、適当にアクセスしてください。</p>
<p>frontend_dev.phpとか呼んじゃダメですよ。debug offなのでprodである/ (= index.php)を呼びます。</p>
<blockquote><p>
<code><br />
web/cache/(アプリ名)/(モジュール名)/(アクション名).php<br />
</code>
</p></blockquote>
<p>などとファイルが出来ていたら、まずフィルタによるstaticファイル生成は合格です。</p>
<p>次に、もう一度アクセスしたときにこの生成されたファイルが開いてるのか、それともsymfony標準のcacheが開いてるのかを確認します。これは、cache/frontend/prod/template/&#8230; 以下の標準のキャッシュファイルを手で消してから、ブラウザでアクセスしてみるとわかります。staticなファイルが呼ばれて開かれていれば、標準のキャッシュは作られないはずです。</p>
<h3>super cache完成か?</h3>
<p>とまあ、プラグインで用意されているのはここまでです。しかし、生成されたstaticなファイルは拡張子が.phpなんですね。そこでそれらのファイルをエディタで開くと、先頭にphpのコードが一行入ってます。</p>
<blockquote><p><code lang="php"><br />
&lt;?php if (time() > 1241771234) { unlink(__FILE__); header('Location: '.$_SERVER['REQUEST_URI']);  exit; } ?><br />
</code></p></blockquote>
<p>これで、自身のキャッシュ寿命を計りつつ、もし寿命が来ていたら自分自身を削除してもう一度同じURLにリダイレクト、とすることで、expireの処理を行なっているようです。</p>
<p>と、いうことは、このsuper cache、phpを回避してないのですね。厳密には super cacheと言えないのではと思います。たとえ一行とは言え、phpインタプリタをファイル毎に起動しているのです。</p>
<p>このプラグインはここまでなので、PHPを完全にスルーするsuper cacheの実現には、もう一手間かける必要があります。</p>
<p>生成するのは.phpじゃなく.htmlにし、もちろん先頭にphpコードは入れません。.htaccessの定義も.htmlに変えます。</p>
<p>そうなると、キャッシュのexpire判定は自分でやらせるわけには行きません。別のトリガーでこのキャッシュファイルを消すことになります。</p>
<p>たとえば、cronで動かしたスクリプトで定期的にこのcache/以下を見て、ファイル生成時を見つつ古すぎるものを消す、が一案。</p>
<p>もう一つは、CacheManagerで明示的にキャッシュをクリアされるタイミングで、このcache/以下の該当する静的ファイルも削除することです。</p>
<p>super cacheで用意したcache/以下のキャッシュファイルは、先頭行のPHPでexpireを自己診断した際しか消えないので、どのみちCacheManagerでのクリアをどうするかというのは検討しないといけないですね。</p>
<p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/05/08/use-sfsupercacheplugin-on-symfony12/">symfony1.2でsfSuperCachePluginを使う</a></p>
]]></content:encoded>
			<wfw:commentRss>http://akimoto.jp/blog/2009/05/08/use-sfsupercacheplugin-on-symfony12/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://akimoto.jp/blog/2009/05/08/use-sfsupercacheplugin-on-symfony12/" />
	</item>
		<item>
		<title>プレゼン中にすごいスクリーンセーバーが発動する動画</title>
		<link>http://akimoto.jp/blog/2009/05/06/screensaver-not-safe-for-seminar-at-all/</link>
		<comments>http://akimoto.jp/blog/2009/05/06/screensaver-not-safe-for-seminar-at-all/#comments</comments>
		<pubDate>Tue, 05 May 2009 16:37:37 +0000</pubDate>
		<dc:creator>akky</dc:creator>
				<category><![CDATA[symfony]]></category>
		<category><![CDATA[ネタ]]></category>
		<category><![CDATA[エロ]]></category>
		<category><![CDATA[プレゼンテーション]]></category>
		<category><![CDATA[動画]]></category>

		<guid isPermaLink="false">http://akimoto.jp/blog/?p=1256</guid>
		<description><![CDATA[変なスクリーンセイバーを愛用してると、プレゼンテーションで大恥かくかもしれませんよ。ご注意! Embarrassing porn screensaver during a presentation. [NSFW] &#8 &#8230; <a href="http://akimoto.jp/blog/2009/05/06/screensaver-not-safe-for-seminar-at-all/">Continue reading <span class="meta-nav">&#8594;</span></a><p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/05/06/screensaver-not-safe-for-seminar-at-all/">プレゼン中にすごいスクリーンセーバーが発動する動画</a></p>
]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p>変なスクリーンセイバーを愛用してると、プレゼンテーションで大恥かくかもしれませんよ。ご注意!</p>
<p><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="437" height="370" id="viddler"><param name="movie" value="http://www.viddler.com/player/47b7d676/" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><embed src="http://www.viddler.com/player/47b7d676/" width="437" height="370" type="application/x-shockwave-flash" allowScriptAccess="always" allowFullScreen="true" name="viddler" ></embed></object></p>
<p><a href="http://thenextweb.com/2009/05/05/embarrassing-porn-screensaver-presentation/">Embarrassing porn screensaver during a presentation. [NSFW] &#8211; The Next Web</a></p>
<p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/05/06/screensaver-not-safe-for-seminar-at-all/">プレゼン中にすごいスクリーンセーバーが発動する動画</a></p>
]]></content:encoded>
			<wfw:commentRss>http://akimoto.jp/blog/2009/05/06/screensaver-not-safe-for-seminar-at-all/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://akimoto.jp/blog/2009/05/06/screensaver-not-safe-for-seminar-at-all/" />
	</item>
		<item>
		<title>symfony1.2.6セキュリティリリース</title>
		<link>http://akimoto.jp/blog/2009/04/28/symfony-126security-release/</link>
		<comments>http://akimoto.jp/blog/2009/04/28/symfony-126security-release/#comments</comments>
		<pubDate>Mon, 27 Apr 2009 16:59:34 +0000</pubDate>
		<dc:creator>akky</dc:creator>
				<category><![CDATA[symfony]]></category>
		<category><![CDATA[security fix]]></category>

		<guid isPermaLink="false">http://akimoto.jp/blog/?p=1217</guid>
		<description><![CDATA[syfony1.2系のアップデート1.2.6が出ました。 セキュリティリリースということで、唯一件のバグ修正となっています。 1. symfonyのアドミンジェネレータを使っている人で、 2. unset()を明示的に呼 &#8230; <a href="http://akimoto.jp/blog/2009/04/28/symfony-126security-release/">Continue reading <span class="meta-nav">&#8594;</span></a><p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/04/28/symfony-126security-release/">symfony1.2.6セキュリティリリース</a></p>
]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p><a href="http://www.symfony-project.org/installation/1_2">syfony1.2系のアップデート1.2.6が出ました</a>。</p>
<p>セキュリティリリースということで、唯一件のバグ修正となっています。</p>
<p>1. symfonyのアドミンジェネレータを使っている人で、<br />
2. unset()を明示的に呼ばずに<br />
3. generator.ymlに書かないことでフィールドを隠すような使い方をしていた場合に、</p>
<p>攻撃を受ける可能性がある、というのをコアチーム内のレポートで発見し、修正したということです。</p>
<p>上記に当てはまるようなコードを書いた人で1.2.x系全部と次の1.3系ブランチを使っている人は、アップデートするか、パッチを当てるか、unset()を必ず呼ぶコードに直すか、するべきだということです。</p>
<p># で、あってると思いますが、必ず<a href="http://www.symfony-project.org/blog/2009/04/27/symfony-1-2-6-security-fix">原文</a>にも当たってください</p>
<p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/04/28/symfony-126security-release/">symfony1.2.6セキュリティリリース</a></p>
]]></content:encoded>
			<wfw:commentRss>http://akimoto.jp/blog/2009/04/28/symfony-126security-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://akimoto.jp/blog/2009/04/28/symfony-126security-release/" />
	</item>
		<item>
		<title>Google App EngineでPHP</title>
		<link>http://akimoto.jp/blog/2009/04/15/php-on-google-app-engine/</link>
		<comments>http://akimoto.jp/blog/2009/04/15/php-on-google-app-engine/#comments</comments>
		<pubDate>Wed, 15 Apr 2009 13:08:19 +0000</pubDate>
		<dc:creator>akky</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Google App Engine]]></category>

		<guid isPermaLink="false">http://akimoto.jp/blog/?p=1182</guid>
		<description><![CDATA[なかなか思うようにいきません… by @akky Google App EngineでPHP<p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/04/15/php-on-google-app-engine/">Google App EngineでPHP</a></p>
]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p><a href="http://php-java.appspot.com/chat.php"><img src="http://akimoto.jp/blog/wp-content/uploads/2009/04/php-on-google-app-engine-400x192.png" alt="php-on-google-app-engine" title="php-on-google-app-engine" width="400" height="192" class="alignnone size-medium wp-image-1181" /></a></p>
<p><a href="http://php-java.appspot.com/chat.php">なかなか思うようにいきません</a>…</p>
<p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/04/15/php-on-google-app-engine/">Google App EngineでPHP</a></p>
]]></content:encoded>
			<wfw:commentRss>http://akimoto.jp/blog/2009/04/15/php-on-google-app-engine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://akimoto.jp/blog/2009/04/15/php-on-google-app-engine/" />
	</item>
		<item>
		<title>XAMPP 1.7.0でMySQLアクセス時にApacheが落ちるとき</title>
		<link>http://akimoto.jp/blog/2009/04/06/when-xampp-170-crashes-apache/</link>
		<comments>http://akimoto.jp/blog/2009/04/06/when-xampp-170-crashes-apache/#comments</comments>
		<pubDate>Mon, 06 Apr 2009 13:33:07 +0000</pubDate>
		<dc:creator>akky</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[XAMPP]]></category>
		<category><![CDATA[クラッシュ]]></category>
		<category><![CDATA[バグ]]></category>

		<guid isPermaLink="false">http://akimoto.jp/blog/?p=1131</guid>
		<description><![CDATA[ここのところ普段と違うパソコンを使っているのですが、そこでPHP/symfonyの開発環境を構築する必要があり、ひさしぶりに、Windowsの簡単ウェブ開発環境インストーラXamppを使ってみました。 # 普段はビルド済 &#8230; <a href="http://akimoto.jp/blog/2009/04/06/when-xampp-170-crashes-apache/">Continue reading <span class="meta-nav">&#8594;</span></a><p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/04/06/when-xampp-170-crashes-apache/">XAMPP 1.7.0でMySQLアクセス時にApacheが落ちるとき</a></p>
]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p>ここのところ普段と違うパソコンを使っているのですが、そこでPHP/symfonyの開発環境を構築する必要があり、ひさしぶりに、Windowsの簡単ウェブ開発環境インストーラXamppを使ってみました。</p>
<p># 普段はビルド済のPHPとMySQL, Apacheをダウンロードして入れています。これでも手抜きと言われるかもしれませんが</p>
<p><a href="http://www.apachefriends.org/jp/xampp-windows.html">xamppのサイト</a>から、Windows版 1.7.0 ベーシック版 インストーラ(xampp-win32-1.7.0-installer.exe)というやつをダウンロードして実行するだけです。</p>
<p>それで、xamppについてくるサンプルや静的なページは問題なく動くのですが、symfonyで作ったアプリケーションを呼び出そうとすると、PHPがApacheを巻き込んで落ちてしまいます。</p>
<p>Apacheのログにはこんなエラーが</p>
<div lang="text">
[notice] Parent: child process exited with status 3221225477 &#8212; Restarting.
</div>
<p>いったいこれは何だ、ということで類似の問題が起こってないか検索してみたところ、<a href="http://www.apachefriends.org/f/viewtopic.php?f=16&#038;t=29684">このフォーラム</a>にたどり着きました。XAMPP 1.7.0のインストーラが展開するdllが、XAMPPの中のMySQLと合致していないために起こると読みました。</p>
<p>フォーラムに書かれているとおり、</p>
<p>c:\xampp\php\libmysql_5.0.51a.dll</p>
<p>c:\xampp\php\ext\php_mysql_5.0.51a.dll</p>
<p>c:\xampp\php\ext\php_mysqli_5.0.51a.dll</p>
<p>を、それぞれ&#8221;_5.0.51a&#8221;のない方に上書きすることで、エラーは無くなりました。問題が解決するdllまで一緒に配布しているということは、原因は把握されてるんじゃないかと思うのですが、なんでこうなってるんでしょう。今これをやってるのがWindows 2000なので、XPやVistaでは問題ないのかしら。</p>
<p>というわけで、XAMPPで簡単にPHP開発環境ができることは確認できたのですが(上記の問題で何時間も使ったので簡単でもないという話も)、XAMPPの設定するphp.iniはいくつか微妙ですね。いまどきmagic quoteオンとかshort tagオンとか。E_NOTICEがオフになってたのでオンにしたら、XAMPP自身のトップページが警告を出しちゃうし。</p>
<p>WindowsのXAMPPでそのまま本番環境にする人はあんまりいないだろうとは思いますけど、万一自宅サーバとかでそういうことをするなら、php.iniは上から下まで読んで設定しなおしたほうがよさそうです。</p>
<p>[追記] Windows XPでも同様のエラーになるそうです</p>
<p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/04/06/when-xampp-170-crashes-apache/">XAMPP 1.7.0でMySQLアクセス時にApacheが落ちるとき</a></p>
]]></content:encoded>
			<wfw:commentRss>http://akimoto.jp/blog/2009/04/06/when-xampp-170-crashes-apache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://akimoto.jp/blog/2009/04/06/when-xampp-170-crashes-apache/" />
	</item>
		<item>
		<title>symfonyのキャッシュマネージャーが取れないとき</title>
		<link>http://akimoto.jp/blog/2009/03/18/when-symfony-cache-manager-becomes-null/</link>
		<comments>http://akimoto.jp/blog/2009/03/18/when-symfony-cache-manager-becomes-null/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 14:08:42 +0000</pubDate>
		<dc:creator>akky</dc:creator>
				<category><![CDATA[symfony]]></category>
		<category><![CDATA[エラー]]></category>
		<category><![CDATA[キャッシュ]]></category>

		<guid isPermaLink="false">http://akimoto.jp/blog/?p=1068</guid>
		<description><![CDATA[symfonyで、キャッシュが効いているページを強制的にクリアしたいとき、 $cacheManager = $this-&#62;getContext&#40;&#41;-&#62;getViewCacheManager&# &#8230; <a href="http://akimoto.jp/blog/2009/03/18/when-symfony-cache-manager-becomes-null/">Continue reading <span class="meta-nav">&#8594;</span></a><p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/03/18/when-symfony-cache-manager-becomes-null/">symfonyのキャッシュマネージャーが取れないとき</a></p>
]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p>symfonyで、キャッシュが効いているページを強制的にクリアしたいとき、</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">  <span style="color: #000088;">$cacheManager</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getContext</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getViewCacheManager</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$cacheManager</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">remove</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'quiz/index?id='</span><span style="color: #339933;">.</span><span style="color: #000088;">$quizIdToRemove</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>とかやってたのですが、デバッグ環境でエラーが出てしまいました。</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">Fatal error<span style="color: #339933;">:</span> Call to a member <span style="color: #000000; font-weight: bold;">function</span> set<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> on a non<span style="color: #339933;">-</span>object in <span style="color: #339933;">...</span></pre></div></div>

<p>実環境でエラーにならないのでうんうん悩んで調べてみたら、デバッグ環境ではcache: off にしてました。getViewCacheManager()はキャッシュ使ってなければnullを返すようです。</p>
<p># 考えてみたら当たりまえか</p>
<p>問題は、これがfatal errorで止まっていたためにトランザクションが完了していなかったことです。</p>
<p>cacheManagerを取得したときは、必ずnullチェックして、キャッシュが使われてるときだけ呼び出しましょう。 > 自分</p>
<p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/03/18/when-symfony-cache-manager-becomes-null/">symfonyのキャッシュマネージャーが取れないとき</a></p>
]]></content:encoded>
			<wfw:commentRss>http://akimoto.jp/blog/2009/03/18/when-symfony-cache-manager-becomes-null/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://akimoto.jp/blog/2009/03/18/when-symfony-cache-manager-becomes-null/" />
	</item>
		<item>
		<title>Delphi for PHP作者の来日記まとめ</title>
		<link>http://akimoto.jp/blog/2009/03/18/delphi-for-php-architect-visited-japan/</link>
		<comments>http://akimoto.jp/blog/2009/03/18/delphi-for-php-architect-visited-japan/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 05:43:24 +0000</pubDate>
		<dc:creator>akky</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Delphi for PHP]]></category>
		<category><![CDATA[Jose Leon]]></category>
		<category><![CDATA[日本]]></category>

		<guid isPermaLink="false">http://akimoto.jp/blog/?p=1066</guid>
		<description><![CDATA[先月の第40回PHP勉強会@関東は、スペインからDelphi for PHPの作者Jose Leonさんを迎えてのスペシャルだったわけですが、Joseさんの日本滞在の感想等が彼のブログで上がっていたのでご紹介しておきます &#8230; <a href="http://akimoto.jp/blog/2009/03/18/delphi-for-php-architect-visited-japan/">Continue reading <span class="meta-nav">&#8594;</span></a><p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/03/18/delphi-for-php-architect-visited-japan/">Delphi for PHP作者の来日記まとめ</a></p>
]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p>先月の<a href="http://events.php.gr.jp/events/show/68">第40回PHP勉強会@関東</a>は、スペインから<a href="http://www.codegear.com/jp/products/delphi/php">Delphi for PHP</a>の作者Jose Leonさんを迎えてのスペシャルだったわけですが、Joseさんの日本滞在の感想等が彼の<a href="http://blogs.embarcadero.com/joseleon/">ブログ</a>で上がっていたのでご紹介しておきます。</p>
<p><a href="http://blogs.embarcadero.com/joseleon/2009/02/12/developer-summit-2009-japan/">Delphi for PHP » Developer Summit 2009 &#8211; Japan</a></p>
<p>デブサミ初日の感想。参加者の多さと熱心さに感心されているようです</p>
<p><a href="http://blogs.embarcadero.com/joseleon/2009/02/12/developer-summit-2009-japan-ii/">Delphi for PHP » Developer Summit 2009 &#8211; Japan (II)</a></p>
<p>デブサミ二日目。彼自身のセッションがあったことの報告です。そのあと、各メディアとのインタビューに臨んだようです。</p>
<p><a href="http://blogs.embarcadero.com/joseleon/2009/02/15/php-camp/">Delphi for PHP » PHP Camp</a></p>
<p>PHP勉強会とそれに続く泊まりでのハッカソンの感想。勉強会で発表された<a href="http://www.openpear.com/">OpenPear</a>等にも言及されてます。</p>
<p><a href="http://blogs.embarcadero.com/joseleon/2009/02/24/developer-camp-2009-and-open-source-conference-at-japans-electronics-college/">Delphi for PHP » Developer Camp 2009 and Open Source Conference at Japans Electronics College</a></p>
<p>オープンソースカンファレンス(OSC)の感想。写真が「日本」ですね。カメラ量販店の技術書棚も印象に残った様子。</p>
<p>Matzことまつもとゆきひろさんとのツーショット写真も。Delphi for Rubyの可能性について話したとか。</p>
<p>最後は、取材を受けて日本で記事になったページをそれぞれ紹介しています。</p>
<p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/03/18/delphi-for-php-architect-visited-japan/">Delphi for PHP作者の来日記まとめ</a></p>
]]></content:encoded>
			<wfw:commentRss>http://akimoto.jp/blog/2009/03/18/delphi-for-php-architect-visited-japan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://akimoto.jp/blog/2009/03/18/delphi-for-php-architect-visited-japan/" />
	</item>
		<item>
		<title>symfony APIがブラウザから直接検索できるように(OpenSearch API)</title>
		<link>http://akimoto.jp/blog/2009/02/25/symfony-api%E3%81%8C%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%81%8B%E3%82%89%E7%9B%B4%E6%8E%A5%E6%A4%9C%E7%B4%A2%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%ABopensearch-api/</link>
		<comments>http://akimoto.jp/blog/2009/02/25/symfony-api%E3%81%8C%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%81%8B%E3%82%89%E7%9B%B4%E6%8E%A5%E6%A4%9C%E7%B4%A2%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%ABopensearch-api/#comments</comments>
		<pubDate>Wed, 25 Feb 2009 11:14:51 +0000</pubDate>
		<dc:creator>akky</dc:creator>
				<category><![CDATA[symfony]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[OpenSearch API]]></category>
		<category><![CDATA[ブラウザ]]></category>
		<category><![CDATA[マニュアル]]></category>
		<category><![CDATA[検索]]></category>

		<guid isPermaLink="false">http://akimoto.jp/blog/?p=971</guid>
		<description><![CDATA[本家ブログでの発表から。symfony APIの検索フォームが、OpenSearch APIで提供されるようになりました。 syfony公式ページに行くと、ブラウザ右上のサーチボックスが変化して、OpenSearchに対 &#8230; <a href="http://akimoto.jp/blog/2009/02/25/symfony-api%E3%81%8C%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%81%8B%E3%82%89%E7%9B%B4%E6%8E%A5%E6%A4%9C%E7%B4%A2%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%ABopensearch-api/">Continue reading <span class="meta-nav">&#8594;</span></a><p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/02/25/symfony-api%E3%81%8C%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%81%8B%E3%82%89%E7%9B%B4%E6%8E%A5%E6%A4%9C%E7%B4%A2%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%ABopensearch-api/">symfony APIがブラウザから直接検索できるように(OpenSearch API)</a></p>
]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p><a href="http://www.symfony-project.org/blog/2009/02/24/opensearch-support-for-the-symfony-api">本家ブログでの発表</a>から。symfony APIの検索フォームが、OpenSearch APIで提供されるようになりました。</p>
<p>syfony公式ページに行くと、ブラウザ右上のサーチボックスが変化して、OpenSearchに対応していることを示してくれます。Firefox3ではこんな感じ。</p>
<p><a href="http://akimoto.jp/blog/wp-content/uploads/2009/02/symfony-api-opensearch-screenshot.png"><img src="http://akimoto.jp/blog/wp-content/uploads/2009/02/symfony-api-opensearch-screenshot.png" alt="" title="symfony-api-opensearch-screenshot" width="340" height="153" class="alignnone size-medium wp-image-972" /></a></p>
<p>symfony API 1.2を追加</p>
<p><a href="http://akimoto.jp/blog/wp-content/uploads/2009/02/symfony-api-12-add-screenshot.png"><img src="http://akimoto.jp/blog/wp-content/uploads/2009/02/symfony-api-12-add-screenshot.png" alt="" title="symfony-api-12-add-screenshot" width="309" height="105" class="alignnone size-medium wp-image-973" /></a></p>
<p>すると、このあと、サーチボックスでsymfony APIが選べるので、ここにsymfonyフレームワークのクラス名や関数名を入れると、</p>
<p><a href="http://akimoto.jp/blog/wp-content/uploads/2009/02/symfony-api-search-usage-screenshot.png"><img src="http://akimoto.jp/blog/wp-content/uploads/2009/02/symfony-api-search-usage-screenshot.png" alt="" title="symfony-api-search-usage-screenshot" width="273" height="124" class="alignnone size-medium wp-image-974" /></a></p>
<p>APIマニュアルの該当ページにジャンプします。</p>
<p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/02/25/symfony-api%E3%81%8C%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%81%8B%E3%82%89%E7%9B%B4%E6%8E%A5%E6%A4%9C%E7%B4%A2%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%ABopensearch-api/">symfony APIがブラウザから直接検索できるように(OpenSearch API)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://akimoto.jp/blog/2009/02/25/symfony-api%E3%81%8C%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%81%8B%E3%82%89%E7%9B%B4%E6%8E%A5%E6%A4%9C%E7%B4%A2%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%ABopensearch-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://akimoto.jp/blog/2009/02/25/symfony-api%E3%81%8C%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%81%8B%E3%82%89%E7%9B%B4%E6%8E%A5%E6%A4%9C%E7%B4%A2%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%ABopensearch-api/" />
	</item>
		<item>
		<title>Windows+cygwin+sshで&#8221;Could not create directory&#8221;が出るとき</title>
		<link>http://akimoto.jp/blog/2009/02/19/windowscygwinssh%E3%81%A7could-not-create-directory%E3%81%8C%E5%87%BA%E3%82%8B%E3%81%A8%E3%81%8D/</link>
		<comments>http://akimoto.jp/blog/2009/02/19/windowscygwinssh%E3%81%A7could-not-create-directory%E3%81%8C%E5%87%BA%E3%82%8B%E3%81%A8%E3%81%8D/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 04:10:31 +0000</pubDate>
		<dc:creator>akky</dc:creator>
				<category><![CDATA[symfony]]></category>
		<category><![CDATA[cygwin]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://akimoto.jp/blog/?p=959</guid>
		<description><![CDATA[エラーメッセージでは Could not create directory &#8216;/home/(ユーザ名)/.ssh&#8217;. とか出ますが、cygwinが認識するあなたのホームディレクトリはC:ドライブの &#8230; <a href="http://akimoto.jp/blog/2009/02/19/windowscygwinssh%E3%81%A7could-not-create-directory%E3%81%8C%E5%87%BA%E3%82%8B%E3%81%A8%E3%81%8D/">Continue reading <span class="meta-nav">&#8594;</span></a><p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/02/19/windowscygwinssh%E3%81%A7could-not-create-directory%E3%81%8C%E5%87%BA%E3%82%8B%E3%81%A8%E3%81%8D/">Windows+cygwin+sshで&#8221;Could not create directory&#8221;が出るとき</a></p>
]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p>エラーメッセージでは</p>
<blockquote><p>Could not create directory &#8216;/home/(ユーザ名)/.ssh&#8217;.
</p></blockquote>
<p>とか出ますが、cygwinが認識するあなたのホームディレクトリはC:ドライブのルートとかではなくてcygwinのインストールディレクトリなので、たとえば、</p>
<blockquote><p>C:/cygwin/home/akky/.ssh/
</p></blockquote>
<p>というディレクトリを作れば、そこにsshの設定を書き込んでくれます。</p>
<p>&#8216;.ssh&#8217;というドットで始まるディレクトリの作り方は、.htaccessとかのファイルの時と同様ですが、GUIでは作れない(エラーになる。ムキー)ので、&#8221;ssh&#8221;とでもして作っておいて、コマンドプロンプトでその&#8221;ssh&#8221;があるディレクトリへ移動して、</p>
<blockquote><p>> ren ssh .ssh
</p></blockquote>
<p>でその名前にできます。</p>
<p>cygwinの設定ファイルを変更してまったく別のディレクトリを使う手もあると思います。あくまで一例。</p>
<p>symfonyのsync(1.0の場合)、project:deploy(1.2の場合)がsshを呼び出す場合に上のエラーが気になる場合の対処でした。</p>
<p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/02/19/windowscygwinssh%E3%81%A7could-not-create-directory%E3%81%8C%E5%87%BA%E3%82%8B%E3%81%A8%E3%81%8D/">Windows+cygwin+sshで&#8221;Could not create directory&#8221;が出るとき</a></p>
]]></content:encoded>
			<wfw:commentRss>http://akimoto.jp/blog/2009/02/19/windowscygwinssh%E3%81%A7could-not-create-directory%E3%81%8C%E5%87%BA%E3%82%8B%E3%81%A8%E3%81%8D/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://akimoto.jp/blog/2009/02/19/windowscygwinssh%E3%81%A7could-not-create-directory%E3%81%8C%E5%87%BA%E3%82%8B%E3%81%A8%E3%81%8D/" />
	</item>
		<item>
		<title>[symfony] プラグインを簡単に作るためのプラグインsfTaskExtraPlugin</title>
		<link>http://akimoto.jp/blog/2009/02/03/symfony-%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%82%92%E7%B0%A1%E5%8D%98%E3%81%AB%E4%BD%9C%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3sftaskextraplugin/</link>
		<comments>http://akimoto.jp/blog/2009/02/03/symfony-%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%82%92%E7%B0%A1%E5%8D%98%E3%81%AB%E4%BD%9C%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3sftaskextraplugin/#comments</comments>
		<pubDate>Tue, 03 Feb 2009 09:30:38 +0000</pubDate>
		<dc:creator>akky</dc:creator>
				<category><![CDATA[symfony]]></category>
		<category><![CDATA[sfTaskExtraPlugin]]></category>
		<category><![CDATA[ツール]]></category>
		<category><![CDATA[パッケージング]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://akimoto.jp/blog/?p=914</guid>
		<description><![CDATA[symfonyのプラグインはPEARのパッケージシステムを使っているのですけど、PEARのパッケージングって結構面倒で、僕はあまり好きではありません。PEARにもパッケージを作るためのツールがあるのですが、PHPのスクリ &#8230; <a href="http://akimoto.jp/blog/2009/02/03/symfony-%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%82%92%E7%B0%A1%E5%8D%98%E3%81%AB%E4%BD%9C%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3sftaskextraplugin/">Continue reading <span class="meta-nav">&#8594;</span></a><p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/02/03/symfony-%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%82%92%E7%B0%A1%E5%8D%98%E3%81%AB%E4%BD%9C%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3sftaskextraplugin/">[symfony] プラグインを簡単に作るためのプラグインsfTaskExtraPlugin</a></p>
]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p>symfonyのプラグインはPEARのパッケージシステムを使っているのですけど、PEARのパッケージングって結構面倒で、僕はあまり好きではありません。PEARにもパッケージを作るためのツールがあるのですが、PHPのスクリプトを書くことになります。</p>
<p>symfony1.2には、<a href="http://www.symfony-project.org/plugins/sfTaskExtraPlugin">symfonyのパッケージを作ることに特化したタスクがsfTaskExtraPluginという名前で提供されています</a>。</p>
<p>まだalpha版なので、alphaを明に指定してインストールします</p>
<p><code><br />
$ symfony plugin:install -s alpha sfTaskExtraPlugin<br />
</code></p>
<p>このプラグインの中のパッケージ作成コマンドを呼ぶと、plugins/ディレクトリの下にある特定のプラグインを、PEARパッケージにしてそこに作ってくれます。</p>
<p><code><br />
$ symfony plugin:package sfFaqPlugin<br />
</code></p>
<p>これだけで、plugins/sfFaqPlugin/sfFaqPlugin-1.1.0.tgz ができます。(プラグイン名やバージョン番号はサンプル)</p>
<p>プラグインになっていれば、symfonyコマンドでinstall/uninstallを管理できます。</p>
<p><code><br />
$ symfony plugin:install /sandbox12/plugins/sfFaqPlugin/sfFaqPlugin-1.1.0.tgz<br />
</code></p>
<p>そこにあるpackage.xmlを使ってパッキングしてくれるので、xmlを開いて適度に編集することでバージョンや含むファイルを変えることができます。package.xmlが無い場合は、対話形式でpluginの説明や開発者の名前などが尋ねられるので、順番に入れていくとpackage.xmlも作成してくれます。</p>
<p>なので、たとえば、symfony1.0でしか動かないとpackage.xmlに書いてあるせい「だけで」symfony1.2にインストールできないpluginがあったとしたら、それをtarでplugins以下に展開して、package.xmlのrequire versionだけ1.3未満までオッケーにし、このタスクでパックすれば、1.2対応のpluginができるということです。</p>
<p>もしそういう風に1.2非対応のプラグインを1.2で使って、実績もあるなら、<a href="http://akimoto.jp/blog/2009/02/03/symfony-%E6%97%A2%E5%AD%98%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%AE%E6%9B%B8%E3%81%8D%E6%8F%9B%E3%81%88%E3%82%92%E6%89%8B%E4%BC%9D%E3%81%86%E3%81%AB%E3%81%AF/">前のエントリで書いたように開発者になって公式サイトにアップする</a>のもいいでしょう。</p>
<p>sfTaskExtraPluginには他に、pluginsの下に一からプラグインを作るためのgenerate:plugin、pluginの中にmoduleを追加するgenerate:plugin-moduleがあります。これらで生成したスケルトンには、テストコードの枠組みも最初からついてきます。</p>
<p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/02/03/symfony-%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%82%92%E7%B0%A1%E5%8D%98%E3%81%AB%E4%BD%9C%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3sftaskextraplugin/">[symfony] プラグインを簡単に作るためのプラグインsfTaskExtraPlugin</a></p>
]]></content:encoded>
			<wfw:commentRss>http://akimoto.jp/blog/2009/02/03/symfony-%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%82%92%E7%B0%A1%E5%8D%98%E3%81%AB%E4%BD%9C%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3sftaskextraplugin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://akimoto.jp/blog/2009/02/03/symfony-%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%82%92%E7%B0%A1%E5%8D%98%E3%81%AB%E4%BD%9C%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3sftaskextraplugin/" />
	</item>
		<item>
		<title>[symfony] 既存プラグインの書き換えを手伝うには</title>
		<link>http://akimoto.jp/blog/2009/02/03/symfony-%E6%97%A2%E5%AD%98%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%AE%E6%9B%B8%E3%81%8D%E6%8F%9B%E3%81%88%E3%82%92%E6%89%8B%E4%BC%9D%E3%81%86%E3%81%AB%E3%81%AF/</link>
		<comments>http://akimoto.jp/blog/2009/02/03/symfony-%E6%97%A2%E5%AD%98%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%AE%E6%9B%B8%E3%81%8D%E6%8F%9B%E3%81%88%E3%82%92%E6%89%8B%E4%BC%9D%E3%81%86%E3%81%AB%E3%81%AF/#comments</comments>
		<pubDate>Tue, 03 Feb 2009 09:14:18 +0000</pubDate>
		<dc:creator>akky</dc:creator>
				<category><![CDATA[symfony]]></category>
		<category><![CDATA[コミッター]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://akimoto.jp/blog/?p=912</guid>
		<description><![CDATA[symfony公式サイトの&#8221;Plugins&#8221;に行くと、数百個のプラグインが提供されています。これらは、インストールするだけでsymfony製のサイトに新しい機能を付け加えるものです。 プラグインを &#8230; <a href="http://akimoto.jp/blog/2009/02/03/symfony-%E6%97%A2%E5%AD%98%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%AE%E6%9B%B8%E3%81%8D%E6%8F%9B%E3%81%88%E3%82%92%E6%89%8B%E4%BC%9D%E3%81%86%E3%81%AB%E3%81%AF/">Continue reading <span class="meta-nav">&#8594;</span></a><p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/02/03/symfony-%E6%97%A2%E5%AD%98%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%AE%E6%9B%B8%E3%81%8D%E6%8F%9B%E3%81%88%E3%82%92%E6%89%8B%E4%BC%9D%E3%81%86%E3%81%AB%E3%81%AF/">[symfony] 既存プラグインの書き換えを手伝うには</a></p>
]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p><a href="http://www.symfony-project.org/plugins/">symfony公式サイトの&#8221;Plugins&#8221;</a>に行くと、数百個のプラグインが提供されています。これらは、インストールするだけでsymfony製のサイトに新しい機能を付け加えるものです。</p>
<p>プラグインを作って登録したり、既にあるプラグインの開発に参加したり、バグ報告をするには、まずsymfony-projectサイトのユーザ登録をする必要があります。メールアドレスだけあれば、右サイドバーの”Create an account&#8221;から誰でもユーザ登録ができます。</p>
<p>ログインした状態でプラグインの個別ページ(例 <a href="http://www.symfony-project.org/plugins/sfFaqPlugin/1_1_0">sfFaqPlugin</a> )へ行くと、&#8221;Contribute(貢献する)&#8221;というタブがあります。ここで、</p>
<ul>
<li>developer: svnにアクセスできる開発者</li>
<li>packager: developerに加えて、プラグインの新バージョンをリリースできる開発者</li>
<li>leader: 全権限を持つプラグイン開発のリーダー</li>
</ul>
<p>のどれになりたいかを選び、下のコメント欄には「何をどう直したいか」を書き込んで送信すると、既存の開発者に連絡が行きます。</p>
<p>symfony1.0でしか動かないプラグインは、元の開発者がメンテナンスを止めている場合もあるので、パッケージの1.2対応をしたいと思ったら、ここからどんどん申請して開発チームに入ることができるようです。</p>
<p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/02/03/symfony-%E6%97%A2%E5%AD%98%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%AE%E6%9B%B8%E3%81%8D%E6%8F%9B%E3%81%88%E3%82%92%E6%89%8B%E4%BC%9D%E3%81%86%E3%81%AB%E3%81%AF/">[symfony] 既存プラグインの書き換えを手伝うには</a></p>
]]></content:encoded>
			<wfw:commentRss>http://akimoto.jp/blog/2009/02/03/symfony-%E6%97%A2%E5%AD%98%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%AE%E6%9B%B8%E3%81%8D%E6%8F%9B%E3%81%88%E3%82%92%E6%89%8B%E4%BC%9D%E3%81%86%E3%81%AB%E3%81%AF/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://akimoto.jp/blog/2009/02/03/symfony-%E6%97%A2%E5%AD%98%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%AE%E6%9B%B8%E3%81%8D%E6%8F%9B%E3%81%88%E3%82%92%E6%89%8B%E4%BC%9D%E3%81%86%E3%81%AB%E3%81%AF/" />
	</item>
		<item>
		<title>[symfony] admin generatorでデザインがあたらないとき</title>
		<link>http://akimoto.jp/blog/2009/02/02/symfony-admin-generator%E3%81%A7%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%81%8C%E3%81%82%E3%81%9F%E3%82%89%E3%81%AA%E3%81%84%E3%81%A8%E3%81%8D/</link>
		<comments>http://akimoto.jp/blog/2009/02/02/symfony-admin-generator%E3%81%A7%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%81%8C%E3%81%82%E3%81%9F%E3%82%89%E3%81%AA%E3%81%84%E3%81%A8%E3%81%8D/#comments</comments>
		<pubDate>Mon, 02 Feb 2009 14:28:13 +0000</pubDate>
		<dc:creator>akky</dc:creator>
				<category><![CDATA[symfony]]></category>
		<category><![CDATA[admin generator]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://akimoto.jp/blog/?p=910</guid>
		<description><![CDATA[symfony1.2の管理画面自動生成機能を使うと、 $ symfony propel:generate-admin backend Post だけで、Postクラスのオブジェクトを一覧して追加表示更新削除する画面を作っ &#8230; <a href="http://akimoto.jp/blog/2009/02/02/symfony-admin-generator%E3%81%A7%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%81%8C%E3%81%82%E3%81%9F%E3%82%89%E3%81%AA%E3%81%84%E3%81%A8%E3%81%8D/">Continue reading <span class="meta-nav">&#8594;</span></a><p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/02/02/symfony-admin-generator%E3%81%A7%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%81%8C%E3%81%82%E3%81%9F%E3%82%89%E3%81%AA%E3%81%84%E3%81%A8%E3%81%8D/">[symfony] admin generatorでデザインがあたらないとき</a></p>
]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p>symfony1.2の管理画面自動生成機能を使うと、</p>
<blockquote><p><code>$ symfony propel:generate-admin backend Post<br />
</code></p></blockquote>
<p>だけで、Postクラスのオブジェクトを一覧して追加表示更新削除する画面を作ってくれますが、なぜか画面にデフォルトの管理画面のデザインが適用されず、アイコン類も出ないというのでつまりました。</p>
<p>呼べていない画像に/sfPropelPlugin/というパスがついてるので、それで検索をかけたら、<a href="http://forum.symfony-project.org/index.php/m/70645/">同じ問題ではまってる人が公式フォーラムに</a>。しかし、二人居て二人ともすぐに自己解決してます。</p>
<p>「脚注じゃなくて本文に書いてよ」とボヤかれていたので、マニュアルを見返したら、ちゃんとマニュアルに書いてありました。</p>
<blockquote><p><code>$ symfony plugin:publish-assets<br />
</code></p></blockquote>
<p>これを呼ばないと、generatorで作られた管理画面から呼ばれるCSSや画像ファイルがアプリの/web以下にコピーされないんですね。プラグインに含まれているCSS, 画像, Javascriptなんかを見える場所に移してくれるのがこのコマンドでした。</p>
<p>by <a href="http://twitter.com/akky">@akky</a>
<br/><a href="http://akimoto.jp/blog/2009/02/02/symfony-admin-generator%E3%81%A7%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%81%8C%E3%81%82%E3%81%9F%E3%82%89%E3%81%AA%E3%81%84%E3%81%A8%E3%81%8D/">[symfony] admin generatorでデザインがあたらないとき</a></p>
]]></content:encoded>
			<wfw:commentRss>http://akimoto.jp/blog/2009/02/02/symfony-admin-generator%E3%81%A7%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%81%8C%E3%81%82%E3%81%9F%E3%82%89%E3%81%AA%E3%81%84%E3%81%A8%E3%81%8D/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://akimoto.jp/blog/2009/02/02/symfony-admin-generator%E3%81%A7%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%81%8C%E3%81%82%E3%81%9F%E3%82%89%E3%81%AA%E3%81%84%E3%81%A8%E3%81%8D/" />
	</item>
	</channel>
</rss>

