<?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>Thu, 29 Jul 2010 14:01:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://akimoto.jp/blog/category/php/feed/" />
		<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 [...]<p><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><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[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F12%2F01%2Fsymfony1-3_and_1-4_released%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F12%2F01%2Fsymfony1-3_and_1-4_released%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<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><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><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><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><br/><a href="http://akimoto.jp/blog/2009/10/08/bug-report-in-foreign-language/">外国語ならなおさら、できる限りのことをしないと伝わらない</a></p>
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F10%2F08%2Fbug-report-in-foreign-language%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F10%2F08%2Fbug-report-in-foreign-language%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<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><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><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>3</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 [...]<p><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><br/><a href="http://akimoto.jp/blog/2009/09/05/symfony-meetup-tokyo/">Symfony Meetup Tokyoやります</a></p>
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F09%2F05%2Fsymfony-meetup-tokyo%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F09%2F05%2Fsymfony-meetup-tokyo%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<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><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><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名の講演者をお呼びしての充実したカンファレンスとなっています。(参加は両日とも<p><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><br/><a href="http://akimoto.jp/blog/2009/09/03/how-about-symfony-interview/">技術メディアのみなさん、symfonyのFabien Potencierさんへの取材どうでしょう?</a></p>
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F09%2F03%2Fhow-about-symfony-interview%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F09%2F03%2Fhow-about-symfony-interview%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<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><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><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 Potencie [...]<p><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><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[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F09%2F02%2Ftokyo-one-day-sightseeing-with-symfony-fabien-potencier%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F09%2F02%2Ftokyo-one-day-sightseeing-with-symfony-fabien-potencier%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<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><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><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ア [...]<p><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><br/><a href="http://akimoto.jp/blog/2009/05/08/use-sfsupercacheplugin-on-symfony12/">symfony1.2でsfSuperCachePluginを使う</a></p>
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F05%2F08%2Fuse-sfsupercacheplugin-on-symfony12%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F05%2F08%2Fuse-sfsupercacheplugin-on-symfony12%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<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><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><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 presen [...]<p><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><br/><a href="http://akimoto.jp/blog/2009/05/06/screensaver-not-safe-for-seminar-at-all/">プレゼン中にすごいスクリーンセーバーが発動する動画</a></p>
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F05%2F06%2Fscreensaver-not-safe-for-seminar-at-all%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F05%2F06%2Fscreensaver-not-safe-for-seminar-at-all%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<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><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><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のアドミンジェネレータを使っている人で、 [...]<p><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><br/><a href="http://akimoto.jp/blog/2009/04/28/symfony-126security-release/">symfony1.2.6セキュリティリリース</a></p>
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F04%2F28%2Fsymfony-126security-release%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F04%2F28%2Fsymfony-126security-release%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<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><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><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[
			
				
			
		

なかなか思うようにいきません…

[AD] ツイッターで読書記録 &#124; 比較表コミュニティ
Google App EngineでPHP
<p><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><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[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F04%2F15%2Fphp-on-google-app-engine%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F04%2F15%2Fphp-on-google-app-engine%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<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><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><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を使 [...]<p><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><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[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F04%2F06%2Fwhen-xampp-170-crashes-apache%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F04%2F06%2Fwhen-xampp-170-crashes-apache%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<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><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><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;g [...]<p><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><br/><a href="http://akimoto.jp/blog/2009/03/18/when-symfony-cache-manager-becomes-null/">symfonyのキャッシュマネージャーが取れないとき</a></p>
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F03%2F18%2Fwhen-symfony-cache-manager-becomes-null%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F03%2F18%2Fwhen-symfony-cache-manager-becomes-null%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<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><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><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さんの日本滞在の感想等が彼のブログで [...]<p><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><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[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F03%2F18%2Fdelphi-for-php-architect-visited-japan%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F03%2F18%2Fdelphi-for-php-architect-visited-japan%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<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><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><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公式ページに行くと、ブラウザ右上のサーチボックスが [...]<p><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><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[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F02%2F25%2Fsymfony-api%25E3%2581%258C%25E3%2583%2596%25E3%2583%25A9%25E3%2582%25A6%25E3%2582%25B6%25E3%2581%258B%25E3%2582%2589%25E7%259B%25B4%25E6%258E%25A5%25E6%25A4%259C%25E7%25B4%25A2%25E3%2581%25A7%25E3%2581%258D%25E3%2582%258B%25E3%2582%2588%25E3%2581%2586%25E3%2581%25ABopensearch-api%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F02%2F25%2Fsymfony-api%25E3%2581%258C%25E3%2583%2596%25E3%2583%25A9%25E3%2582%25A6%25E3%2582%25B6%25E3%2581%258B%25E3%2582%2589%25E7%259B%25B4%25E6%258E%25A5%25E6%25A4%259C%25E7%25B4%25A2%25E3%2581%25A7%25E3%2581%258D%25E3%2582%258B%25E3%2582%2588%25E3%2581%2586%25E3%2581%25ABopensearch-api%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<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><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><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が認識するあなた [...]<p><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><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[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F02%2F19%2Fwindowscygwinssh%25E3%2581%25A7could-not-create-directory%25E3%2581%258C%25E5%2587%25BA%25E3%2582%258B%25E3%2581%25A8%25E3%2581%258D%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F02%2F19%2Fwindowscygwinssh%25E3%2581%25A7could-not-create-directory%25E3%2581%258C%25E5%2587%25BA%25E3%2582%258B%25E3%2581%25A8%25E3%2581%258D%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<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><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><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にもパッケージを作るためのツ [...]<p><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><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[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F02%2F03%2Fsymfony-%25E3%2583%2597%25E3%2583%25A9%25E3%2582%25B0%25E3%2582%25A4%25E3%2583%25B3%25E3%2582%2592%25E7%25B0%25A1%25E5%258D%2598%25E3%2581%25AB%25E4%25BD%259C%25E3%2582%258B%25E3%2581%259F%25E3%2582%2581%25E3%2581%25AE%25E3%2583%2597%25E3%2583%25A9%25E3%2582%25B0%25E3%2582%25A4%25E3%2583%25B3sftaskextraplugin%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F02%2F03%2Fsymfony-%25E3%2583%2597%25E3%2583%25A9%25E3%2582%25B0%25E3%2582%25A4%25E3%2583%25B3%25E3%2582%2592%25E7%25B0%25A1%25E5%258D%2598%25E3%2581%25AB%25E4%25BD%259C%25E3%2582%258B%25E3%2581%259F%25E3%2582%2581%25E3%2581%25AE%25E3%2583%2597%25E3%2583%25A9%25E3%2582%25B0%25E3%2582%25A4%25E3%2583%25B3sftaskextraplugin%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<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><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><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製のサイトに新しい機能を [...]<p><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><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[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F02%2F03%2Fsymfony-%25E6%2597%25A2%25E5%25AD%2598%25E3%2583%2597%25E3%2583%25A9%25E3%2582%25B0%25E3%2582%25A4%25E3%2583%25B3%25E3%2581%25AE%25E6%259B%25B8%25E3%2581%258D%25E6%258F%259B%25E3%2581%2588%25E3%2582%2592%25E6%2589%258B%25E4%25BC%259D%25E3%2581%2586%25E3%2581%25AB%25E3%2581%25AF%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F02%2F03%2Fsymfony-%25E6%2597%25A2%25E5%25AD%2598%25E3%2583%2597%25E3%2583%25A9%25E3%2582%25B0%25E3%2582%25A4%25E3%2583%25B3%25E3%2581%25AE%25E6%259B%25B8%25E3%2581%258D%25E6%258F%259B%25E3%2581%2588%25E3%2582%2592%25E6%2589%258B%25E4%25BC%259D%25E3%2581%2586%25E3%2581%25AB%25E3%2581%25AF%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<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><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><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クラスのオブジェクトを一 [...]<p><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><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[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F02%2F02%2Fsymfony-admin-generator%25E3%2581%25A7%25E3%2583%2587%25E3%2582%25B6%25E3%2582%25A4%25E3%2583%25B3%25E3%2581%258C%25E3%2581%2582%25E3%2581%259F%25E3%2582%2589%25E3%2581%25AA%25E3%2581%2584%25E3%2581%25A8%25E3%2581%258D%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F02%2F02%2Fsymfony-admin-generator%25E3%2581%25A7%25E3%2583%2587%25E3%2582%25B6%25E3%2582%25A4%25E3%2583%25B3%25E3%2581%258C%25E3%2581%2582%25E3%2581%259F%25E3%2582%2589%25E3%2581%25AA%25E3%2581%2584%25E3%2581%25A8%25E3%2581%258D%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<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><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><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>
		<item>
		<title>symfonyの主要ドキュメントがPDFでも提供開始</title>
		<link>http://akimoto.jp/blog/2009/02/01/symfony%E3%81%AE%E4%B8%BB%E8%A6%81%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%81%8Cpdf%E3%81%A7%E3%82%82%E6%8F%90%E4%BE%9B%E9%96%8B%E5%A7%8B/</link>
		<comments>http://akimoto.jp/blog/2009/02/01/symfony%E3%81%AE%E4%B8%BB%E8%A6%81%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%81%8Cpdf%E3%81%A7%E3%82%82%E6%8F%90%E4%BE%9B%E9%96%8B%E5%A7%8B/#comments</comments>
		<pubDate>Sun, 01 Feb 2009 02:09:24 +0000</pubDate>
		<dc:creator>akky</dc:creator>
				<category><![CDATA[symfony]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[オフライン]]></category>

		<guid isPermaLink="false">http://akimoto.jp/blog/?p=896</guid>
		<description><![CDATA[
			
				
			
		
オフラインでもドキュメントを参照しやすいように、PDF版の提供が開始されました。
Jobeetチュートリアルは、symfony1.2の新しい本として出版されたPractical symf [...]<p><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><br/><a href="http://akimoto.jp/blog/2009/02/01/symfony%E3%81%AE%E4%B8%BB%E8%A6%81%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%81%8Cpdf%E3%81%A7%E3%82%82%E6%8F%90%E4%BE%9B%E9%96%8B%E5%A7%8B/">symfonyの主要ドキュメントがPDFでも提供開始</a></p>
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F02%2F01%2Fsymfony%25E3%2581%25AE%25E4%25B8%25BB%25E8%25A6%2581%25E3%2583%2589%25E3%2582%25AD%25E3%2583%25A5%25E3%2583%25A1%25E3%2583%25B3%25E3%2583%2588%25E3%2581%258Cpdf%25E3%2581%25A7%25E3%2582%2582%25E6%258F%2590%25E4%25BE%259B%25E9%2596%258B%25E5%25A7%258B%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2009%2F02%2F01%2Fsymfony%25E3%2581%25AE%25E4%25B8%25BB%25E8%25A6%2581%25E3%2583%2589%25E3%2582%25AD%25E3%2583%25A5%25E3%2583%25A1%25E3%2583%25B3%25E3%2583%2588%25E3%2581%258Cpdf%25E3%2581%25A7%25E3%2582%2582%25E6%258F%2590%25E4%25BE%259B%25E9%2596%258B%25E5%25A7%258B%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>オフラインでもドキュメントを参照しやすいように、PDF版の提供が開始されました。</p>
<p>Jobeetチュートリアルは、symfony1.2の新しい本として出版されたPractical symfonyと同じものですね。バックエンドのORMで<a href="http://www.symfony-project.org/get/pdf/jobeet-1.2-propel-en.pdf">propelを使う場合</a>[pdf]のと<a href="http://www.symfony-project.org/get/pdf/jobeet-1.2-doctrine-en.pdf">Doctrineを使う場合</a>[pdf]のと両方あります。</p>
<p>その他、sfFormの使い方を解説したForms bookやcookbook、symfony1.2への移行ガイドなどもpdfで入手できます。<a href="http://www.symfony-project.org/blog/2009/01/31/read-the-symfony-documentation-offline">詳細は公式ブログ</a>で。</p>
<p><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><br/><a href="http://akimoto.jp/blog/2009/02/01/symfony%E3%81%AE%E4%B8%BB%E8%A6%81%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%81%8Cpdf%E3%81%A7%E3%82%82%E6%8F%90%E4%BE%9B%E9%96%8B%E5%A7%8B/">symfonyの主要ドキュメントがPDFでも提供開始</a></p>
]]></content:encoded>
			<wfw:commentRss>http://akimoto.jp/blog/2009/02/01/symfony%E3%81%AE%E4%B8%BB%E8%A6%81%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%81%8Cpdf%E3%81%A7%E3%82%82%E6%8F%90%E4%BE%9B%E9%96%8B%E5%A7%8B/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://akimoto.jp/blog/2009/02/01/symfony%E3%81%AE%E4%B8%BB%E8%A6%81%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%81%8Cpdf%E3%81%A7%E3%82%82%E6%8F%90%E4%BE%9B%E9%96%8B%E5%A7%8B/" />
	</item>
		<item>
		<title>php.netのロゴが</title>
		<link>http://akimoto.jp/blog/2008/12/25/phpnet%E3%81%AE%E3%83%AD%E3%82%B4%E3%81%8C/</link>
		<comments>http://akimoto.jp/blog/2008/12/25/phpnet%E3%81%AE%E3%83%AD%E3%82%B4%E3%81%8C/#comments</comments>
		<pubDate>Wed, 24 Dec 2008 19:14:34 +0000</pubDate>
		<dc:creator>akky</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[クリスマス]]></category>
		<category><![CDATA[ロゴ]]></category>

		<guid isPermaLink="false">http://akimoto.jp/blog/?p=772</guid>
		<description><![CDATA[
			
				
			
		

季節ネタですなあ。それではみなさん、クワンザー!

[AD] ツイッターで読書記録 &#124; 比較表コミュニティ
php.netのロゴが
<p><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><br/><a href="http://akimoto.jp/blog/2008/12/25/phpnet%E3%81%AE%E3%83%AD%E3%82%B4%E3%81%8C/">php.netのロゴが</a></p>
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2008%2F12%2F25%2Fphpnet%25E3%2581%25AE%25E3%2583%25AD%25E3%2582%25B4%25E3%2581%258C%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2008%2F12%2F25%2Fphpnet%25E3%2581%25AE%25E3%2583%25AD%25E3%2582%25B4%25E3%2581%258C%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://php.net/"><img src="http://akimoto.jp/blog/wp-content/uploads/2008/12/php_snow_2008.gif" alt="" title="php_snow_2008" width="120" height="64" class="alignnone size-full wp-image-773" /></a></p>
<p>季節ネタですなあ。それではみなさん、<a href="http://www.nybct.com/2-46-kwanzaa.html">クワンザー!</a></p>
<p><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><br/><a href="http://akimoto.jp/blog/2008/12/25/phpnet%E3%81%AE%E3%83%AD%E3%82%B4%E3%81%8C/">php.netのロゴが</a></p>
]]></content:encoded>
			<wfw:commentRss>http://akimoto.jp/blog/2008/12/25/phpnet%E3%81%AE%E3%83%AD%E3%82%B4%E3%81%8C/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://akimoto.jp/blog/2008/12/25/phpnet%E3%81%AE%E3%83%AD%E3%82%B4%E3%81%8C/" />
	</item>
		<item>
		<title>symfony懇親会に行ってきました</title>
		<link>http://akimoto.jp/blog/2008/11/29/symfony%E6%87%87%E8%A6%AA%E4%BC%9A%E3%81%AB%E8%A1%8C%E3%81%A3%E3%81%A6%E3%81%8D%E3%81%BE%E3%81%97%E3%81%9F/</link>
		<comments>http://akimoto.jp/blog/2008/11/29/symfony%E6%87%87%E8%A6%AA%E4%BC%9A%E3%81%AB%E8%A1%8C%E3%81%A3%E3%81%A6%E3%81%8D%E3%81%BE%E3%81%97%E3%81%9F/#comments</comments>
		<pubDate>Fri, 28 Nov 2008 15:52:58 +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=701</guid>
		<description><![CDATA[
			
				
			
		
ディノで開催されたsymfony懇親会に行ってきました。
PHPフレームワークのsymfonyについて語らう会です。いつもの勉強会だと発表者と受講者ですけど、今回の懇親会はみんなで気軽に [...]<p><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><br/><a href="http://akimoto.jp/blog/2008/11/29/symfony%E6%87%87%E8%A6%AA%E4%BC%9A%E3%81%AB%E8%A1%8C%E3%81%A3%E3%81%A6%E3%81%8D%E3%81%BE%E3%81%97%E3%81%9F/">symfony懇親会に行ってきました</a></p>
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2008%2F11%2F29%2Fsymfony%25E6%2587%2587%25E8%25A6%25AA%25E4%25BC%259A%25E3%2581%25AB%25E8%25A1%258C%25E3%2581%25A3%25E3%2581%25A6%25E3%2581%258D%25E3%2581%25BE%25E3%2581%2597%25E3%2581%259F%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fakimoto.jp%2Fblog%2F2008%2F11%2F29%2Fsymfony%25E6%2587%2587%25E8%25A6%25AA%25E4%25BC%259A%25E3%2581%25AB%25E8%25A1%258C%25E3%2581%25A3%25E3%2581%25A6%25E3%2581%258D%25E3%2581%25BE%25E3%2581%2597%25E3%2581%259F%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>ディノで開催された<a href="http://events.php.gr.jp/events/show/62">symfony懇親会</a>に行ってきました。</p>
<p>PHPフレームワークのsymfonyについて語らう会です。いつもの勉強会だと発表者と受講者ですけど、今回の懇親会はみんなで気軽に親睦を深めるためのものです。</p>
<p>ピザばっかりとか言ってすいません。今日はデリのサンドイッチやベーグルでした。ディノの誇る(ビール)サーバと、新しく増えた(ワイン)ストレージも活躍で、楽しい会となりました。11時半でもまだ半分以上人がいて、いったい電車は大丈夫なんだろうかと思いつつ終電で帰ってきました。</p>
<p>再来週会社の出張でパリに行くことになったのですが、よい機会なのでパリ郊外のSensio Labs(symfonyを作っている会社)にも訪問する約束を取り付けました。今日の懇親会では、そこでFabienさん等に日本のウェブ業界やPHP, symfonyの状況を解説するためのプレゼン(の下書き。まだ現時点では)を飛び込み発表して、みなさんの意見をいろいろと伺うことができました。</p>
<p><br/>
[AD] <a href="http://yonda4.com/">ツイッターで読書記録</a> | <a href="http://narabete.com/">比較表コミュニティ</a>
<br/><br/><a href="http://akimoto.jp/blog/2008/11/29/symfony%E6%87%87%E8%A6%AA%E4%BC%9A%E3%81%AB%E8%A1%8C%E3%81%A3%E3%81%A6%E3%81%8D%E3%81%BE%E3%81%97%E3%81%9F/">symfony懇親会に行ってきました</a></p>
]]></content:encoded>
			<wfw:commentRss>http://akimoto.jp/blog/2008/11/29/symfony%E6%87%87%E8%A6%AA%E4%BC%9A%E3%81%AB%E8%A1%8C%E3%81%A3%E3%81%A6%E3%81%8D%E3%81%BE%E3%81%97%E3%81%9F/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://akimoto.jp/blog/2008/11/29/symfony%E6%87%87%E8%A6%AA%E4%BC%9A%E3%81%AB%E8%A1%8C%E3%81%A3%E3%81%A6%E3%81%8D%E3%81%BE%E3%81%97%E3%81%9F/" />
	</item>
	</channel>
</rss>
