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

<channel>
	<title>blog.plastik.jp &#187; PHP</title>
	<atom:link href="http://blog.plastik.jp/archives/category/php/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.plastik.jp</link>
	<description>PHP, MySQL, MT, WordPressなどWeb系を中心に活動するエンジニア</description>
	<lastBuildDate>Thu, 22 Jul 2010 23:42:34 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>FreeBSD7.1-PRERELEASE Apache2.2.11へアップグレード</title>
		<link>http://blog.plastik.jp/archives/188</link>
		<comments>http://blog.plastik.jp/archives/188#comments</comments>
		<pubDate>Fri, 19 Dec 2008 20:24:45 +0000</pubDate>
		<dc:creator>plastik</dc:creator>
				<category><![CDATA[Diary]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.plastik.jp/?p=188</guid>
		<description><![CDATA[portsのwww/apache22で、2.2.11が出ていたので2.2.9からアップグレード。

# cd /usr/ports
# portupgrade -p www/apache22
# /usr/local/etc/rc.d/apache22 stop
# /usr/local/etc/rc.d/apache22 start

所詮、自宅内の開発用webサーバですが、今のところ問題はなさそう。ついでに、PHPも5.2.8へアップグレードしたけど、こちらも今のところ問題無さそうな挙動をしています。
]]></description>
			<content:encoded><![CDATA[<p>portsのwww/apache22で、2.2.11が出ていたので2.2.9からアップグレード。</p>
<blockquote><p>
# cd /usr/ports<br />
# portupgrade -p www/apache22<br />
# /usr/local/etc/rc.d/apache22 stop<br />
# /usr/local/etc/rc.d/apache22 start
</p></blockquote>
<p>所詮、自宅内の開発用webサーバですが、今のところ問題はなさそう。ついでに、PHPも5.2.8へアップグレードしたけど、こちらも今のところ問題無さそうな挙動をしています。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.plastik.jp/archives/188/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP XML_Unserializer で、XMLの属性を取得したい時</title>
		<link>http://blog.plastik.jp/archives/176</link>
		<comments>http://blog.plastik.jp/archives/176#comments</comments>
		<pubDate>Sun, 23 Nov 2008 08:32:45 +0000</pubDate>
		<dc:creator>plastik</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[PHP XML]]></category>

		<guid isPermaLink="false">http://blog.plastik.jp/?p=176</guid>
		<description><![CDATA[今扱っている案件で、XMLを読み込んで、ごにょごにょする機会があり、はまったことがあったので、メモとして残します。
PHPのXML読み込み実装の中でも、かなり使えるXML_Unserializerですが、以下のようなXMLを読み込んで、なおかつ、articleタグのtypeやidのような属性までも取得したい場合、オプションを設定する必要があることがわかりました。
&#60;articles&#62;
	 &#60;article type="news" id="ID10001"&#62;
		 &#60;title&#62;記事1&#60;/title&#62;
	 &#60;/article&#62;
	 &#60;article type="news" id="ID10002"&#62;
		 &#60;title&#62;記事2&#60;/title&#62;
	 &#60;/article&#62;
&#60;/articles&#62;
やり方は、簡単で、XML_UnserializerのsetOptionメソッドで、parseAttributesをTrueに設定すれば良いだけでした (オプション一覧)。以下はPHP5の読み込みまでの例。
&#60;?php
require_once("XML/Unserializer.php");

$xml = file_get_contents("sample.xml");
$obj = new XML_Unserializer();

$obj->setOption("parseAttributes", true);

$status  = $obj->unserialize($xml);
if ($status === true) {
    $dat = $obj->getUnserializedData();
	  print_r($dat);
}
?&#62;

pear の XML_Serializer, XML_Unserializerは、未だにバージョンは beta のままですが、一度これに慣れてしまうと非常に便利で手放せないモジュールになると思います。
]]></description>
			<content:encoded><![CDATA[<p>今扱っている案件で、XMLを読み込んで、ごにょごにょする機会があり、はまったことがあったので、メモとして残します。</p>
<p>PHPのXML読み込み実装の中でも、かなり使える<a href="http://pear.php.net/manual/ja/package.xml.xml-serializer.php">XML_Unserializer</a>ですが、以下のようなXMLを読み込んで、なおかつ、articleタグのtypeやidのような属性までも取得したい場合、オプションを設定する必要があることがわかりました。</p>
<pre>&lt;articles&gt;
	 &lt;article type="news" id="ID10001"&gt;
		 &lt;title&gt;記事1&lt;/title&gt;
	 &lt;/article&gt;
	 &lt;article type="news" id="ID10002"&gt;
		 &lt;title&gt;記事2&lt;/title&gt;
	 &lt;/article&gt;
&lt;/articles&gt;</pre>
<p>やり方は、簡単で、XML_UnserializerのsetOptionメソッドで、parseAttributesをTrueに設定すれば良いだけでした (<a href="http://pear.php.net/manual/ja/package.xml.xml-serializer.xml-unserializer.options.php">オプション一覧</a>)。以下はPHP5の読み込みまでの例。</p>
<pre>&lt;?php
require_once("XML/Unserializer.php");

$xml = file_get_contents("sample.xml");
$obj = new XML_Unserializer();

$obj->setOption("parseAttributes", true);

$status  = $obj->unserialize($xml);
if ($status === true) {
    $dat = $obj->getUnserializedData();
	  print_r($dat);
}
?&gt;
</pre>
<p>pear の XML_Serializer, XML_Unserializerは、未だにバージョンは beta のままですが、一度これに慣れてしまうと非常に便利で手放せないモジュールになると思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.plastik.jp/archives/176/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CentOS4でapxsをインストールしたい時</title>
		<link>http://blog.plastik.jp/archives/86</link>
		<comments>http://blog.plastik.jp/archives/86#comments</comments>
		<pubDate>Sun, 30 Sep 2007 15:09:39 +0000</pubDate>
		<dc:creator>plastik</dc:creator>
				<category><![CDATA[Diary]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[CentOS]]></category>

		<guid isPermaLink="false">http://blog.plastik.jp/archives/86</guid>
		<description><![CDATA[CentOS4 で、apacheはrpm、phpだけは、ソースからインストールしようとしたのですが、apxsが無く、一瞬迷ったので、メモ。
$ yum install httpd-devel
上記のように単純に httpd-devel パッケージをインストールすれば良いだけでした&#8230;.
ただ、phpのみソースコンパイルってのが非常にダサ目なので、自家製rpmパッケージ作って管理したい所です。
]]></description>
			<content:encoded><![CDATA[<p>CentOS4 で、apacheはrpm、phpだけは、ソースからインストールしようとしたのですが、apxsが無く、一瞬迷ったので、メモ。</p>
<p>$ yum install httpd-devel</p>
<p>上記のように単純に httpd-devel パッケージをインストールすれば良いだけでした&#8230;.</p>
<p>ただ、phpのみソースコンパイルってのが非常にダサ目なので、自家製rpmパッケージ作って管理したい所です。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.plastik.jp/archives/86/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP 配列のマージ/足し算 (配列演算子)</title>
		<link>http://blog.plastik.jp/archives/45</link>
		<comments>http://blog.plastik.jp/archives/45#comments</comments>
		<pubDate>Wed, 26 Jul 2006 08:41:45 +0000</pubDate>
		<dc:creator>plastik</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.plastik.jp/archives/45</guid>
		<description><![CDATA[PHP を利用していて二つの配列から一つの配列を作りたい場合って皆さんどうしてますか？
実は今日初めて気付いたのですが、+ を使用して一つの配列に出来るんですね～。
$a = array (
    &#8220;1&#8243; => &#8220;a&#8221;,
	  &#8220;2&#8243; => &#8220;aa&#8221;,
);
$b = array(
    &#8220;100&#8243; => &#8220;b&#8221;,
	&#8220;101&#8243; => &#8220;bb&#8221;,
);

のとき、$a + $b を実行すると、
array (
	  &#8220;1&#8243; => &#8220;a&#8221;,
	 &#8220;2&#8243; => &#8220;aa&#8221;,
	 &#8220;100&#8243; => &#8220;b&#8221;,
	  &#8220;101&#8243; => &#8220;bb&#8221;,
);
になるんです。いままでこういうケースの時、array_merge だと欲しい配列にならないので、しょーもない自作の関数作って foreach で回して一つの配列作ってましたよ…
なんか知らないことはまだまだありますねぇ。
マニュアル: 配列演算子 [Array Operators] の項
]]></description>
			<content:encoded><![CDATA[<p>PHP を利用していて二つの配列から一つの配列を作りたい場合って皆さんどうしてますか？<br />
実は今日初めて気付いたのですが、+ を使用して一つの配列に出来るんですね～。</p>
<blockquote><p>$a = array (<br />
    &#8220;1&#8243; => &#8220;a&#8221;,<br />
	  &#8220;2&#8243; => &#8220;aa&#8221;,<br />
);<br />
$b = array(<br />
    &#8220;100&#8243; => &#8220;b&#8221;,<br />
	&#8220;101&#8243; => &#8220;bb&#8221;,<br />
);
</p></blockquote>
<p>のとき、$a + $b を実行すると、</p>
<blockquote><p>array (<br />
	  &#8220;1&#8243; => &#8220;a&#8221;,<br />
	 &#8220;2&#8243; => &#8220;aa&#8221;,<br />
	 &#8220;100&#8243; => &#8220;b&#8221;,<br />
	  &#8220;101&#8243; => &#8220;bb&#8221;,<br />
);</p></blockquote>
<p>になるんです。いままでこういうケースの時、array_merge だと欲しい配列にならないので、しょーもない自作の関数作って foreach で回して一つの配列作ってましたよ…</p>
<p>なんか知らないことはまだまだありますねぇ。</p>
<p>マニュアル: <a href="http://www.php.net/manual/ja/language.operators.array.php">配列演算子 [Array Operators] の項</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.plastik.jp/archives/45/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PECL SQLite が FedoraCore4 でインストール出来ない場合</title>
		<link>http://blog.plastik.jp/archives/44</link>
		<comments>http://blog.plastik.jp/archives/44#comments</comments>
		<pubDate>Mon, 24 Jul 2006 02:50:22 +0000</pubDate>
		<dc:creator>plastik</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.plastik.jp/archives/44</guid>
		<description><![CDATA[ちょっと必要に迫られ PHP のライブラリ Pecl の SQLite をインストールすることに。
なんとかインストールは出来たものの、いつもの通りすんなりは行きませんでした…
通常ですと、
$ pecl install sqlite
で済むはずが、どうしてもエラーが出る…
/tmp/pear/cache/SQLite-1.0.3/sqlite.c:56: error: &#8216;BYREF_NONE&#8217; undeclared here (not in a function)
/tmp/pear/cache/SQLite-1.0.3/sqlite.c:56: error: &#8216;BYREF_FORCE&#8217; undeclared here (not in a function)

BYREF_NONE と BYREF_FORCE が定義されていないっすといった感じであろうか。困ったので検索しまくっていたらまたもや直接的な対処方法を発見。
対処方法: FC4 PHP and SQLite
ざっくり読むと FC4 だと問題が出る、解決方法はこうだ！とあります。なので、その通りソースをダウンロードしてインストールすることにします。
$ wget http://pecl.php.net/get/SQLite-1.0.3.tgz
$ tar xzf SQLite-1.0.3.tgz
$ cd SQLite-1.0.3
$ phpize
$ ./configure

で、ここでソースを直接編集します。
Line: 56 行目をコメントアウト /* ～ */ で囲う
/* static unsigned char arg3_force_ref[] = {3, BYREF_NONE, BYREF_NONE, BYREF_FORCE }; */

Line: 125, 126 の arg3_force_ref を third_arg_force_ref に変更
PHP_FE(sqlite_open, arg3_force_ref) → PHP_FE(sqlite_open, third_arg_force_ref)
PHP_FE(sqlite_popen, arg3_force_ref) → PHP_FE(sqlite_popen, third_arg_force_ref)

でソースを編集し終わったら make してインストール。
$ make
$ make ...]]></description>
			<content:encoded><![CDATA[<p>ちょっと必要に迫られ PHP のライブラリ Pecl の SQLite をインストールすることに。<br />
なんとかインストールは出来たものの、いつもの通りすんなりは行きませんでした…</p>
<p>通常ですと、</p>
<blockquote><p>$ pecl install sqlite</p></blockquote>
<p>で済むはずが、どうしてもエラーが出る…</p>
<blockquote><p>/tmp/pear/cache/SQLite-1.0.3/sqlite.c:56: error: &#8216;BYREF_NONE&#8217; undeclared here (not in a function)<br />
/tmp/pear/cache/SQLite-1.0.3/sqlite.c:56: error: &#8216;BYREF_FORCE&#8217; undeclared here (not in a function)
</p></blockquote>
<p>BYREF_NONE と BYREF_FORCE が定義されていないっすといった感じであろうか。困ったので検索しまくっていたらまたもや直接的な対処方法を発見。</p>
<p>対処方法: <a href="http://forums.fedoraforum.org/archive/index.php/t-59802.html">FC4 PHP and SQLite</a></p>
<p>ざっくり読むと FC4 だと問題が出る、解決方法はこうだ！とあります。なので、その通りソースをダウンロードしてインストールすることにします。</p>
<blockquote><p>$ wget http://pecl.php.net/get/SQLite-1.0.3.tgz<br />
$ tar xzf SQLite-1.0.3.tgz<br />
$ cd SQLite-1.0.3<br />
$ phpize<br />
$ ./configure
</p></blockquote>
<p>で、ここでソースを直接編集します。</p>
<p>Line: 56 行目をコメントアウト /* ～ */ で囲う</p>
<blockquote><p>/* static unsigned char arg3_force_ref[] = {3, BYREF_NONE, BYREF_NONE, BYREF_FORCE }; */
</p></blockquote>
<p>Line: 125, 126 の arg3_force_ref を third_arg_force_ref に変更</p>
<blockquote><p>PHP_FE(sqlite_open, arg3_force_ref) → PHP_FE(sqlite_open, third_arg_force_ref)<br />
PHP_FE(sqlite_popen, arg3_force_ref) → PHP_FE(sqlite_popen, third_arg_force_ref)
</p></blockquote>
<p>でソースを編集し終わったら make してインストール。</p>
<blockquote><p>$ make<br />
$ make install
</p></blockquote>
<p>これで最後に php.ini で extension の設定をすれば、無事 SQLite のインストールは完了です。</p>
<p>※ 確認方法は、phpinfo() に SQLite が表示されていれば OK です。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.plastik.jp/archives/44/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PHP GetImageSize での swf ファイル読み込み (swc?)</title>
		<link>http://blog.plastik.jp/archives/35</link>
		<comments>http://blog.plastik.jp/archives/35#comments</comments>
		<pubDate>Mon, 29 May 2006 02:19:05 +0000</pubDate>
		<dc:creator>plastik</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.plastik.jp/archives/35</guid>
		<description><![CDATA[PHP で Flash ファイル(.swf) をアップロード出来るアプリを作っていたところ、今までなら問題なくアップロード出来ていたコードなのに、急にアップロード出来なくなる現象に遭遇しました。
で、早速色々と調べたところ、アップロードされたファイルの判断方法に原因があることがわかりました。
いつも、アップロードされたファイルが何なのかは、GetImageSizeで判断しており、
通常、swf ファイルをアップロードすると、返ってくる画像のフラグは、4 = SWF になりますが、そのとあるファイルに限っては、13 = SWC が返ってきているため判断のミスが起こり、アップロード出来ていませんでした。
それにしても SWC って一体… と思い調べたところ、Adobe のサイトに以下の記述がありました。
SWC ファイルには、再利用可能な Flash コンポーネントが含まれます。各 SWC ファイルには、コンパイル済みのムービークリップ、ActionScript コード、およびコンポーネントに必要なその他のアセットが格納されます。
だからといって、何故 swf ファイルを読み込んで、swc と判断するかまでは追い切れないので、一瞬悩みましたが、「swc だったら、swf と判断する」処理を加え今回の所も乗り切ることにしました。
用途だけを考えるのならば、これで問題ないといえばないので良しとしておきたいところです。
うーん、でもちょっと気持ち悪いな…
]]></description>
			<content:encoded><![CDATA[<p>PHP で Flash ファイル(.swf) をアップロード出来るアプリを作っていたところ、今までなら問題なくアップロード出来ていたコードなのに、急にアップロード出来なくなる現象に遭遇しました。</p>
<p>で、早速色々と調べたところ、アップロードされたファイルの判断方法に原因があることがわかりました。</p>
<p>いつも、アップロードされたファイルが何なのかは、<a href="http://jp2.php.net/getimagesize">GetImageSize</a>で判断しており、<br />
通常、swf ファイルをアップロードすると、返ってくる画像のフラグは、4 = SWF になりますが、そのとあるファイルに限っては、13 = SWC が返ってきているため判断のミスが起こり、アップロード出来ていませんでした。</p>
<p>それにしても SWC って一体… と思い調べたところ、<a href="http://livedocs.macromedia.com/studio/8_jp/exploring/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&#038;file=03_bas15.htm">Adobe のサイト</a>に以下の記述がありました。</p>
<blockquote><p>SWC ファイルには、再利用可能な Flash コンポーネントが含まれます。各 SWC ファイルには、コンパイル済みのムービークリップ、ActionScript コード、およびコンポーネントに必要なその他のアセットが格納されます。</p></blockquote>
<p>だからといって、何故 swf ファイルを読み込んで、swc と判断するかまでは追い切れないので、一瞬悩みましたが、「swc だったら、swf と判断する」処理を加え今回の所も乗り切ることにしました。</p>
<p>用途だけを考えるのならば、これで問題ないといえばないので良しとしておきたいところです。<br />
うーん、でもちょっと気持ち悪いな…</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.plastik.jp/archives/35/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP 数字配列生成方法</title>
		<link>http://blog.plastik.jp/archives/20</link>
		<comments>http://blog.plastik.jp/archives/20#comments</comments>
		<pubDate>Thu, 23 Mar 2006 00:06:20 +0000</pubDate>
		<dc:creator>plastik</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.plastik.jp/archives/20</guid>
		<description><![CDATA[たとえば 1990 ～ 2006 など、一定のルールに従い連続した数字の配列を生成する場合に簡単な関数があることを、今日はじめて知りました…
range
(PHP 3 >= 3.0.8, PHP 4, PHP 5)
range &#8211;	ある範囲の整数を有する配列を作成する
array range ( mixed low, mixed high [, number step] )

PHP Official 日本語マニュアル range の説明
自分で関数つくって for 文でループさせていたのがアホに思えます…
自分で用意しようと思えば簡単に用意できちゃうために、未だ知らない事って結構あるなぁと思います。
]]></description>
			<content:encoded><![CDATA[<p>たとえば 1990 ～ 2006 など、一定のルールに従い連続した数字の配列を生成する場合に簡単な関数があることを、今日はじめて知りました…</p>
<blockquote><p>range<br />
(PHP 3 >= 3.0.8, PHP 4, PHP 5)<br />
range &#8211;	ある範囲の整数を有する配列を作成する<br />
array range ( mixed low, mixed high [, number step] )
</p></blockquote>
<p><a href="http://jp2.php.net/range">PHP Official 日本語マニュアル range の説明</a></p>
<p>自分で関数つくって for 文でループさせていたのがアホに思えます…<br />
自分で用意しようと思えば簡単に用意できちゃうために、未だ知らない事って結構あるなぁと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.plastik.jp/archives/20/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php マニュアル(chm版) 文字化け解消方法</title>
		<link>http://blog.plastik.jp/archives/15</link>
		<comments>http://blog.plastik.jp/archives/15#comments</comments>
		<pubDate>Thu, 23 Feb 2006 00:18:44 +0000</pubDate>
		<dc:creator>plastik</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.plastik.jp/archives/15</guid>
		<description><![CDATA[皆様は、phpオフィシャルサイトから、Windowsヘルプ形式のchm版のマニュアルをダウンロードしたことはありますでしょうか？
多分一度でも使ったことのある方は、非常に便利だ！って思っている方が多いと思います。
ただ、それでも実は 1 点大きな欠点があります。もちろん使用されたことのある方は知っているかと思いますが、ダウンロードしたままだと、マニュアル内のキーワード(マニュアルに含まれるキーワードをインクリメンタルサーチが出来る部分)が、文字化けしているんです。
実は結構悩んでいて、ただそのために随分古い文字化けの無いバージョンを使用していたのですが、解消する方法がわかったのでメモ残しておきます。

【方法】
ダウンロードした chm ファイルを、自分の PC 上で再コンパイルする。
【必要なツール】


KeyTools &#8211; デコンパイルツール 
 Microsoft HTML Workshop &#8211; コンパイルツール

【手順】


KeyTool を起動
メニューバー [Tools] → [Decompile] から、chm ファイルを自分の好きなフォルダに decompile (元のファイルに解凍?ってイメージに近い) する。
そうすると、php_manual_ja.hhc、php_manual_ja.hhk、php_manual_ja.hhp、ja というフォルダ(中に数千の、.html) が作成されます。
今度は、HTML Help Workshop を起動。
メニューバー [File] → [Compile] → [さきほどの php_manual_ja.hhp] を選択。
Compile(数千の html ファイルをまとめ、chm ファイルを生成) が始まるので、しばらく待つ。
完了! キーワードの文字化けが解消した chm マニュアルが完成します。



オフィシャルの方は、何故うまくいってないかは想像でしか判断出来ませんが、自分で再コンパイルしてでも、キーワード検索は利用出来たほうが良いです(キッパリ)。
(おまけ)
でも、chm ファイルも便利ですが、つい先日のはてな勉強会で知った、
http://api.rails2u.com/
のインターフェイスのほうがさらに今風でかっこいいよなーと思います。
]]></description>
			<content:encoded><![CDATA[<p>皆様は、phpオフィシャルサイトから、<a href="http://jp.php.net/get/php_manual_ja.chm/from/a/mirror">Windowsヘルプ形式のchm版</a>のマニュアルをダウンロードしたことはありますでしょうか？<br />
多分一度でも使ったことのある方は、非常に便利だ！って思っている方が多いと思います。</p>
<p>ただ、それでも実は 1 点大きな欠点があります。もちろん使用されたことのある方は知っているかと思いますが、ダウンロードしたままだと、マニュアル内のキーワード(マニュアルに含まれるキーワードをインクリメンタルサーチが出来る部分)が、文字化けしているんです。</p>
<p>実は結構悩んでいて、ただそのために随分古い文字化けの無いバージョンを使用していたのですが、解消する方法がわかったのでメモ残しておきます。</p>
<dl>
<dt>【方法】</dt>
<dd>ダウンロードした chm ファイルを、自分の PC 上で再コンパイルする。</dd>
<dt>【必要なツール】</dt>
<dd>
<ul>
<li><a href="http://www.keyworks.net/keytools.htm">KeyTools &#8211; デコンパイルツール </a></li>
<li><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/htmlhelp/html/hwMicrosoftHTMLHelpDownloads.asp"> Microsoft HTML Workshop &#8211; コンパイルツール</a></li>
</ul>
<dt>【手順】</dt>
<dd>
<ol>
<li>KeyTool を起動</li>
<li>メニューバー [Tools] → [Decompile] から、chm ファイルを自分の好きなフォルダに decompile (元のファイルに解凍?ってイメージに近い) する。</li>
<li>そうすると、php_manual_ja.hhc、php_manual_ja.hhk、php_manual_ja.hhp、ja というフォルダ(中に数千の、.html) が作成されます。</li>
<li>今度は、HTML Help Workshop を起動。</li>
<li>メニューバー [File] → [Compile] → [さきほどの php_manual_ja.hhp] を選択。</li>
<li>Compile(数千の html ファイルをまとめ、chm ファイルを生成) が始まるので、しばらく待つ。</li>
<li>完了! キーワードの文字化けが解消した chm マニュアルが完成します。</li>
</ol>
</dd>
</dl>
<p>オフィシャルの方は、何故うまくいってないかは想像でしか判断出来ませんが、自分で再コンパイルしてでも、キーワード検索は利用出来たほうが良いです(キッパリ)。</p>
<p>(おまけ)<br />
でも、chm ファイルも便利ですが、つい先日の<a href="http://hatena.g.hatena.ne.jp/hatenatech/">はてな勉強会</a>で知った、<br />
<a href="http://api.rails2u.com/">http://api.rails2u.com/</a><br />
のインターフェイスのほうがさらに今風でかっこいいよなーと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.plastik.jp/archives/15/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>php で YAML</title>
		<link>http://blog.plastik.jp/archives/14</link>
		<comments>http://blog.plastik.jp/archives/14#comments</comments>
		<pubDate>Mon, 20 Feb 2006 12:40:02 +0000</pubDate>
		<dc:creator>plastik</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.plastik.jp/archives/14</guid>
		<description><![CDATA[いまさらながら、YAML。簡単かつわかりやすくて良いですねぇ。
日本 ruby の会によるるびまでも YAML についての記事がありましたが、php でも spyc というライブラリで簡単に扱うことができます。
spyc
http://spyc.sourceforge.net/
もし、schema.yml というファイルを読み込む場合、
$dat = Spyc::YAMLLoad(&#8217;schema.yml&#8217;);
とやるだけで、$dat に 配列として、schema.yml を読み込むことが出来てしまいます。
これはもう簡単というかなんというか、便利すぎです。
実は最近、symfony という PHP5 のフレームワークをいじっているのですが、このフレームワークも、YAML を最大限利用して作られているんですよね。
その中で出てきた propel という O/R マッパー(?)なんかも含めもうちょっと理解できたらまとめたいと思います。
普段自分は情報を追っかけているつもりでしたが、全然追えていないし、自分が知らないだけで便利な技術っていっぱいあるんだなーと改めて思いました。
]]></description>
			<content:encoded><![CDATA[<p>いまさらながら、YAML。簡単かつわかりやすくて良いですねぇ。<br />
日本 ruby の会による<a href="http://jp.rubyist.net/magazine/?0009-YAML">るびま</a>でも YAML についての記事がありましたが、php でも spyc というライブラリで簡単に扱うことができます。</p>
<p>spyc<br />
<a href="http://spyc.sourceforge.net/">http://spyc.sourceforge.net/</a></p>
<p>もし、schema.yml というファイルを読み込む場合、</p>
<blockquote><p>$dat = Spyc::YAMLLoad(&#8217;schema.yml&#8217;);</p></blockquote>
<p>とやるだけで、$dat に 配列として、schema.yml を読み込むことが出来てしまいます。<br />
これはもう簡単というかなんというか、便利すぎです。</p>
<p>実は最近、<a href="http://www.symfony-project.com/">symfony</a> という PHP5 のフレームワークをいじっているのですが、このフレームワークも、YAML を最大限利用して作られているんですよね。</p>
<p>その中で出てきた <a href="http://propel.phpdb.org/trac/">propel</a> という O/R マッパー(?)なんかも含めもうちょっと理解できたらまとめたいと思います。</p>
<p>普段自分は情報を追っかけているつもりでしたが、全然追えていないし、自分が知らないだけで便利な技術っていっぱいあるんだなーと改めて思いました。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.plastik.jp/archives/14/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>pear コマンド alpha、beta バージョンのインストール方法</title>
		<link>http://blog.plastik.jp/archives/13</link>
		<comments>http://blog.plastik.jp/archives/13#comments</comments>
		<pubDate>Thu, 16 Feb 2006 04:15:14 +0000</pubDate>
		<dc:creator>plastik</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.plastik.jp/archives/13</guid>
		<description><![CDATA[なんだかたまに詰まる pear コマンドの使用方法。
まれに、依存性の関係やらなにやらで、beta が必要になる時があります。
以下コマンドで普通にインストールすると、stable 版がインストールされてしまいます。
(例として、パッケージを phpdocumentor とします)
> pear install phpdocumentor
それを回避したい場合は、以下の様にコマンドを打つことで回避できます。
beta バージョン
> pear install phpdocumentor-beta
alpha バージョン
> pear install phpdocumentor-alpha
わかっちゃえば簡単なんですが、ついつい引っかかったりしちゃうんですよねぇ…

ホント無知であれなのですが、予め以下のコマンドを打っておくと、-beta 無しで行けるようです。
(stable ではなく、開発途上バージョン[beta等] を優先する)
>pear config-set preferred_state beta
]]></description>
			<content:encoded><![CDATA[<p>なんだかたまに詰まる pear コマンドの使用方法。<br />
まれに、依存性の関係やらなにやらで、beta が必要になる時があります。</p>
<p>以下コマンドで普通にインストールすると、stable 版がインストールされてしまいます。<br />
(例として、パッケージを phpdocumentor とします)</p>
<blockquote><p>> pear install phpdocumentor</p></blockquote>
<p>それを回避したい場合は、以下の様にコマンドを打つことで回避できます。</p>
<p>beta バージョン</p>
<blockquote><p>> pear install phpdocumentor-beta</p></blockquote>
<p>alpha バージョン</p>
<blockquote><p>> pear install phpdocumentor-alpha</p></blockquote>
<p>わかっちゃえば簡単なんですが、ついつい引っかかったりしちゃうんですよねぇ…</p>
<p><<追記>><br />
ホント無知であれなのですが、予め以下のコマンドを打っておくと、-beta 無しで行けるようです。<br />
(stable ではなく、開発途上バージョン[beta等] を優先する)</p>
<blockquote><p>>pear config-set preferred_state beta</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.plastik.jp/archives/13/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
