<?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>Koumei Soft 開発ログ</title>
	<atom:link href="http://blog.ks2.info/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://blog.ks2.info</link>
	<description>プログラミング忘備録　</description>
	<lastBuildDate>Thu, 02 Sep 2010 01:34:57 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Windows版Apacheのhtaccess</title>
		<link>http://blog.ks2.info/?p=523</link>
		<comments>http://blog.ks2.info/?p=523#comments</comments>
		<pubDate>Thu, 02 Sep 2010 01:34:57 +0000</pubDate>
		<dc:creator>Koumei</dc:creator>
				<category><![CDATA[webプログラミング]]></category>
		<category><![CDATA[サーバ等設定]]></category>

		<guid isPermaLink="false">http://blog.ks2.info/?p=523</guid>
		<description><![CDATA[　Windowsのファイル名はピリオド（ドット）の前までである。
　このため、ファイル名のない拡張子だけのファイルは原則作れない。
　つまり、「.htaccess」は作れないのである。
　というのは嘘で・・・
　実際は作 [...]]]></description>
			<content:encoded><![CDATA[<p>　Windowsのファイル名はピリオド（ドット）の前までである。<br />
　このため、ファイル名のない拡張子だけのファイルは原則作れない。<br />
　つまり、「.htaccess」は作れないのである。</p>
<p>　というのは嘘で・・・</p>
<p>　実際は作れる。<br />
　作れないのはエクスプローラからそのまま作ろうとした（ファイル名変更した）場合だけである。</p>
<p>　notepad.exeからも作れる。<br />
　メモ帳を開き、ファイル種類を「すべてのファイル」にして文字コードを選び（utf-8など）、「.htaccess」に保存すればよい。<br />
　なお、ファイル種類が「テキストファイル」になっていると、後ろに.txtの拡張子が付いてしまう。</p>
<p>　秀丸エディタからなら、そのままファイル名を指定して保存するだけでよい。</p>
<p>　コマンドプロンプトのリネームコマンドでも変えられる。<br />
　「ren 元のファイル名 .htaccess」するだけ。</p>
<p>　ffftpでダウンロードした「.htaccess」もちゃんと作られるし、phpから「.htaccess」を作ることもできる。<br />
　ちなみに、ffftpで「.htaccess」が表示されないのは設定のせいである。<br />
　「.で始まるファイルを表示」にすると表示される。</p>
<p>　こうして作った拡張子のみのファイルも問題なく使える。<br />
　エクスプローラの名前変更だけダメなのだ。<br />
　<br />
　ただし、確認したのはWindowsXP SP3のみである。<br />
　他のバージョンも多分、同じだろう。</p>
<p>　<br />
　よくWindowsでは「.htaccess」が使えないなどと書いてあるが、嘘である。<br />
　同じにしておかないとWindows以外とプログラムを変えなくてはならないことにもなりかねない。</p>
<p>　しかし、上記のようにエクスプローラからは弾かれるので、使えないと思う人もいるのだろう。<br />
　このため、「httpd.conf」の「.htaccess」が「x.htaccess」になっていたりする。<br />
　ありがた迷惑である。</p>
<p>　ZAMPPを見たら、「.htaccess」のままだった。<br />
　VertigoSrevは上記の「x.htaccess」だった。</p>
<p>　<br />
　「.htaccess」という名前は確定的なものだが、「x.htaccess」などに確定的なものがない。<br />
　「htaccess.conf」でも「htaccess.txt」でも「htaccess.htaccess」でも何でもいい。<br />
　ならば、「.htaccess」の方が良いと思う。</p>
<p>　エクスプローラからファイル名がいじれないだけで、作れるし使えるのである。<br />
　もちろん、作ったファイルはエクスプローラで表示されるし、それをエディタで使える。<br />
　エクスプローラから名前が変えられないだけ、なのだ。</p>
<p>　これをWindowsからは使えないというのは大げさだろう。<br />
　ちゃんと作れて使えるのだから、「.htaccess」にすべきである。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ks2.info/?feed=rss2&amp;p=523</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GUIでサイドバー編集（jQuery UI）</title>
		<link>http://blog.ks2.info/?p=520</link>
		<comments>http://blog.ks2.info/?p=520#comments</comments>
		<pubDate>Tue, 31 Aug 2010 07:21:03 +0000</pubDate>
		<dc:creator>Koumei</dc:creator>
				<category><![CDATA[webプログラミング]]></category>

		<guid isPermaLink="false">http://blog.ks2.info/?p=520</guid>
		<description><![CDATA[　ブログツールを作っていて、サイドバーに何を設定し、どういう並びとするかを分かりやすくしたかった。
　よくある、項目をドラッグして選択する、というやつだ。
　ひとつのグループを並び替えるサンプルは結構ある。
　ふたつのは [...]]]></description>
			<content:encoded><![CDATA[<p>　ブログツールを作っていて、サイドバーに何を設定し、どういう並びとするかを分かりやすくしたかった。<br />
　よくある、項目をドラッグして選択する、というやつだ。</p>
<p>　ひとつのグループを並び替えるサンプルは結構ある。<br />
　ふたつのはかなり少ない。<br />
　今回やりたかったのは３つである。</p>
<p>　当然、サーバと連動するので、サーバ側に編集結果を知らせなければ意味がない。<br />
　色々やって、結局いつものjQueryを使うことにした。<br />
　実は簡単にできる。</p>
<p>　実際に動くサンプルを用意した。<br />
　以下を見ていただこう。<br />
　それが全てである。</p>
<p>　<a href="http://www.ks2.info/sample/">サンプルページ</a></p>
<p>　<br />
　３つのグループを作り、jQuery-UIのsortableにセットするだけである。<br />
　変更があった場合、そのグループを順に列挙してやる。</p>
<p>　IDが列挙される点がポイントである。<br />
　これで、サーバ側も対応可能となる。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ks2.info/?feed=rss2&amp;p=520</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>運転免許証更新の話</title>
		<link>http://blog.ks2.info/?p=514</link>
		<comments>http://blog.ks2.info/?p=514#comments</comments>
		<pubDate>Mon, 23 Aug 2010 04:20:21 +0000</pubDate>
		<dc:creator>Koumei</dc:creator>
				<category><![CDATA[関係ない話]]></category>

		<guid isPermaLink="false">http://blog.ks2.info/?p=514</guid>
		<description><![CDATA[　また関係ない話である。
　運転免許証の更新をしなくてはならない。
　５年ごと（人によっては３年）だが、これは国によって違う。
　たった５年だが、その間にいろいろと変わったところもある。
　免許証はICカード化され、暗証 [...]]]></description>
			<content:encoded><![CDATA[<p>　また関係ない話である。</p>
<p>　運転免許証の更新をしなくてはならない。<br />
　５年ごと（人によっては３年）だが、これは国によって違う。</p>
<p>　たった５年だが、その間にいろいろと変わったところもある。</p>
<p>　免許証はICカード化され、暗証番号も登録するという。<br />
　意味があるのかはちょっと疑問である。<br />
　もちろん、このために値上げがあったらしい。<br />
　目的の第一は手数料を増やすことだったのだろう。<br />
　ちなみに、更新講習のたびに渡される本代も含まれる。<br />
　非常にムダである。<br />
　まあ、それも誰かの収入になるのだが。</p>
<p>　申請時に写真がいらなくなった。<br />
　前回のことが思い出せないのだが、昔は写真が必要だったが不評につき廃止ということだろうか。<br />
　ただし、これは免許センターの場合で、所轄などでの申請には必要となる。<br />
　免許センターに行った方が良い。</p>
<p>　安全協会に入る・入らないというのは愚問である。<br />
　何のために協会費が使われているのか知ると自ずと判るだろう。<br />
　協会費の約７割は給与・退職金になるそうだ。<br />
　つまり、ほぼ安全協会の人件費のために協会費を支払っているのである。<br />
　で、入るか入らないかは考えていただこう。</p>
<p>　ちなみに、協会費を払わなくても更新通知葉書が届くし、更に、その葉書がなくても更新できる。<br />
　入らないからといって何をされるわけでもないし、入ったからといって何をしてくれることもない。</p>
<p>　ということで、どうしても必要だという額は支払わないと更新してくれないので仕方ないが、それ以上はビタ一文払わないつもりである。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ks2.info/?feed=rss2&amp;p=514</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHPソースの難読化</title>
		<link>http://blog.ks2.info/?p=511</link>
		<comments>http://blog.ks2.info/?p=511#comments</comments>
		<pubDate>Mon, 09 Aug 2010 02:23:54 +0000</pubDate>
		<dc:creator>Koumei</dc:creator>
				<category><![CDATA[webプログラミング]]></category>

		<guid isPermaLink="false">http://blog.ks2.info/?p=511</guid>
		<description><![CDATA[　PHPで作成したプログラムを配布するということは、ソースごと配布するのと等しい。
　オープンソースでフリーで、どう直して勝手に使おうが構わないというならそれでもいいが、そうでなければソースは隠したいものである。
　PH [...]]]></description>
			<content:encoded><![CDATA[<p>　PHPで作成したプログラムを配布するということは、ソースごと配布するのと等しい。<br />
　オープンソースでフリーで、どう直して勝手に使おうが構わないというならそれでもいいが、そうでなければソースは隠したいものである。</p>
<p>　PHPの場合、これはかなり困難だ。<br />
　特別な措置をしないかぎり、ソースは見えざるを得ない。</p>
<p>　できることといったら難読化くらいしかない。<br />
　ソースプログラムを読みにくくするのである。</p>
<p>　普通はコメントを入れ、分かり易いように改行もし、字下げ（インデント）もしている。<br />
　C系の言語は「｛ ｝」で括るのだが、その付け方にも流儀があり、違うとかなり違和感があるくらいなのだ。<br />
　これらは見やすくすることでバグの発生を抑え、メンテナンス性を向上させるためにする。</p>
<p>　だから、コメントがなく、改行がなく、字下げがないだけでも、かなり読みにくくなる。<br />
　とはいえ、その場合でも、文末の「；」は残るから、これで改行させるようにすると、少しは読みやすくなってしまう。</p>
<p>　更に可読性を下げるためには、多少の犠牲を払う必要があるだろう。<br />
　よくある、「圧縮+bese64」を使うのである。</p>
<p>　プログラム部分まで対象にすることもできるが、そこまではしたくないと思った。<br />
　やったのは直接書かれている文字列の「圧縮+bese64」化である。<br />
　それでもかなり判り辛くなる。<br />
　全部をするとムダも多すぎるため、ダブルクォートとシングルクォートを使い分け、シングルの場合は無変換で、ダブルの場合でかつ10文字以上のものを変換するようにした。<br />
　対象になるものも少なくなり、速度的にも影響が出ない程度にしたのである。</p>
<p>　改造しようと思えばできるが、かなりの手間になり、やる気も削がれるだろうというくらいにはなった。<br />
　なお、これは有償ソフトで、支払った人には生のソースを渡して、改造可とするつもりである。</p>
<p>　この難読化のプログラムは公開するつもりだったのだが・・・<br />
　かなりの手抜きプログラムで、内容的にはちゃんとしたものが出力され、ちゃんと動くものなのだが、とても人に見せられるようなソースではない。<br />
　ということで、作ったというだけの話で。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ks2.info/?feed=rss2&amp;p=511</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>テーブル格納・読み出して変数格納の裏技</title>
		<link>http://blog.ks2.info/?p=509</link>
		<comments>http://blog.ks2.info/?p=509#comments</comments>
		<pubDate>Wed, 04 Aug 2010 13:01:25 +0000</pubDate>
		<dc:creator>Koumei</dc:creator>
				<category><![CDATA[webプログラミング]]></category>

		<guid isPermaLink="false">http://blog.ks2.info/?p=509</guid>
		<description><![CDATA[　データベースの使い方としては極めて邪道なのだが、どうしても必要があった。
　あるテーブルに、まったく違う、しかも８つの値を格納したいのである。
　言語はPHP。
　ほとんどは１桁、多くても３桁までの数字だが、格納できる [...]]]></description>
			<content:encoded><![CDATA[<p>　データベースの使い方としては極めて邪道なのだが、どうしても必要があった。<br />
　あるテーブルに、まったく違う、しかも８つの値を格納したいのである。<br />
　言語はPHP。</p>
<p>　ほとんどは１桁、多くても３桁までの数字だが、格納できる場所はtextしかない。<br />
　普通ならカンマ区切にして使うときは分離（デリミッタでセパレート）して、などと考えるだろう。<br />
　最初は私もそう考えた。</p>
<p>　面白くない。<br />
　普通すぎる。</p>
<p>　格納するのはその一ヶ所で、使うのは色々なところなのだ。<br />
　つまり、格納に手間がかかっても、使うときに手間がない方が望ましい。<br />
　しかも、あらかじめ変数にすべて格納しておくべき内容（制御情報）なのである。</p>
<p>　どうすると、面白いか。<br />
　そして楽か、だ。</p>
<p>　<br />
　もう少しヒントを出して、どうやったか推理してもらおう。</p>
<p>　格納はSQL文でSETするのとさほど変わらない手間だった。<br />
　使うのはテーブルからテキストとして取り出した後は、一発で８つの変数に値がセットされる。<br />
　一発というのは、１行（１文）でということだ。</p>
<p>　<br />
　解答。<br />
　格納は文字列として、「&#8221;\$data1=\&#8221;123\&#8221;; \$data2=\&#8221;045\&#8221;; ～」というソースと同じイメージ（エスケープすべき文字もある）にしておく。<br />
　いくつ項目があっても、上記を作る手間はSQL文でSETするのと同じで、実際はその文字列を格納するSET文がひとつ増えることになるが、手間の違いはそれだけだ。<br />
　手間はさほど変わらない。</p>
<p>　もう判ったであろう。<br />
　取り出したら、そのまま「eval()」で実行するのだ。<br />
　これで一発（１関数）で８つの項目が変数に入る。<br />
　取り出す手間はないと言っていいくらい簡単である。</p>
<p>　邪道で、いつもやっていいというものではないが、面白さはあるのではないだろうか。<br />
　まあ、あまり真似しない方がいいと思うが。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ks2.info/?feed=rss2&amp;p=509</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>大嵌り、Create Table</title>
		<link>http://blog.ks2.info/?p=507</link>
		<comments>http://blog.ks2.info/?p=507#comments</comments>
		<pubDate>Sat, 31 Jul 2010 07:59:22 +0000</pubDate>
		<dc:creator>Koumei</dc:creator>
				<category><![CDATA[webプログラミング]]></category>

		<guid isPermaLink="false">http://blog.ks2.info/?p=507</guid>
		<description><![CDATA[　物凄く嵌った。
　時間というより、精神的ダメージが大きい。
　何をしたかというとCreate Tableである。
　ローカル環境でテストして動いていた。
　SQL文自体は、MySQLAdminでエクスポートしたものだか [...]]]></description>
			<content:encoded><![CDATA[<p>　物凄く嵌った。<br />
　時間というより、精神的ダメージが大きい。</p>
<p>　何をしたかというとCreate Tableである。<br />
　<strong>ローカル環境でテストして動いていた</strong>。<br />
　SQL文自体は、<strong>MySQLAdminでエクスポートしたものだから間違いはない</strong>。<br />
　これがいけなかった。</p>
<p>　サーバに入れてテストすると、何と動かない。<br />
　それだけでは流石に焦らない。<br />
　MySQLAdminのSQL実行で試した。<br />
　エラーが出れば良い。<br />
　が、エラーにならない。<br />
　ここで盛大に焦る。</p>
<p>　もしかしてエスケープかとも思ったが、エスケープしてみて（mysql_escape_string使用）も動かない。<br />
　かなり絶望感が沸いてくる。<br />
　SQL文は正しく、ローカルでは動いたから間違いはないという先入観（というか事実だが）が、他にエラーの可能性があるという考えを持たせてくれなくなるのである。<br />
　サーバのせいだろう、権限か、などいらぬことばかりが頭を駆け巡る。</p>
<p>　<br />
　こういう時に便利なのがこれである。</p>
<pre>
echo mysql_error();
</pre>
<p>　<br />
　MySQLAdminのSQL実行でエラーが出ないのに、エラーになっているのだから、これしかない。<br />
　このmysql_error()は、直前の実行されたエラーについて返してくれるスグレモノなのだ。</p>
<p>　見ると訳の分からないエラーが出ている。<br />
　内容は普通に文法エラーなのだが、文法エラーなどあるはずがない。<br />
　ローカルで動いているMySQLAdminが作ったSQL文なのだから。<br />
　だが、エラーだというのだから仕方がない。<br />
　と、先入観というのは恐ろしいものである。</p>
<p>　エラーだという箇所で、一番怪しいのは、文法的に間違いではなく、ふたつのクエリを連続して記述している点である。<br />
　ローカルでは動いていたのだが・・・<br />
　もしかしたら、２つはダメなのか。</p>
<p>　分けて、ひとつづつテーブルを作るようにすると・・・<br />
　動いた・・・<br />
　MySQLAdminでは動くのに、ローカルでは動くのに、何と理不尽なことだろうか。</p>
<p>　MySQLのバージョン違いによる差だとしか考えられない。<br />
　MySQLのバージョンを知る手っ取り早い方法は次のクエリ実行である。</p>
<pre>
select version();
</pre>
<p>　<br />
　ローカルが、5.0.51b-community<br />
　サーバが、5.0.45-log<br />
　微妙に違うだけだが、それこそ微妙に違うのもまた事実である。</p>
<p>　分かり辛かった・・・</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ks2.info/?feed=rss2&amp;p=507</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHPでcookieの操作</title>
		<link>http://blog.ks2.info/?p=504</link>
		<comments>http://blog.ks2.info/?p=504#comments</comments>
		<pubDate>Fri, 30 Jul 2010 03:35:05 +0000</pubDate>
		<dc:creator>Koumei</dc:creator>
				<category><![CDATA[webプログラミング]]></category>

		<guid isPermaLink="false">http://blog.ks2.info/?p=504</guid>
		<description><![CDATA[　cookieの操作は基本だが、意外と使いづらい。
　それはPHPの仕様（というかバグ）のせいだと思う。
　PHPでのcookie出力は他のヘッダ出力前でなければならない。
　まあ、それは仕方ないとして、ヘッダを出力して [...]]]></description>
			<content:encoded><![CDATA[<p>　cookieの操作は基本だが、意外と使いづらい。<br />
　それはPHPの仕様（というかバグ）のせいだと思う。</p>
<p>　PHPでのcookie出力は他のヘッダ出力前でなければならない。<br />
　まあ、それは仕方ないとして、ヘッダを出力していないのにエラーになることがある。<br />
　どういうときかというと、日本語がコメントでも何でも存在した後はダメなのだ。<br />
　ヘッダではないコメントでアウトなのだから、バグだと思う。（最新のPHPは分からないが）<br />
　コメントを英語にするか取り去ると通るのだから意地悪だ。</p>
<p>　どこにcookie出力を書いてもいいようにするには他の手を考えなければならない。<br />
　コメントに日本語を使いたいし、処理の中で、先頭以外でcookie処理をしたいことだってあるのだから。</p>
<p>　どうするかというと、PHPからcookieを書かせない。<br />
　Javascriptを使うのである。<br />
　それなら、ロード完了時にJavascriptで書き込めるので、PHPの最後に処理しても問題ない。</p>
<pre>
PHP側
$wkCookie="document.cookie = 'キー名称 = 値;expires=継続時間;";
$smarty->assign('Cookie',$wkCookie);

テンプレート側
{if $Cookie!=""}
<script type="text/javascript">
<!--
{$Cookie}
-->
</script>
{/if}
</pre>
<p>　<br />
　ちなみに、受け取りはもっと簡単である。</p>
<pre>
PHP側
$cookie=$_COOKIE["キー名称"];
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.ks2.info/?feed=rss2&amp;p=504</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>はてなへブックマークボタン</title>
		<link>http://blog.ks2.info/?p=500</link>
		<comments>http://blog.ks2.info/?p=500#comments</comments>
		<pubDate>Wed, 28 Jul 2010 22:14:40 +0000</pubDate>
		<dc:creator>Koumei</dc:creator>
				<category><![CDATA[webプログラミング]]></category>

		<guid isPermaLink="false">http://blog.ks2.info/?p=500</guid>
		<description><![CDATA[　はてなブックマークにブックマークするボタンを作ろう。

&#60;a href="http://b.hatena.ne.jp/append?サイトURL"&#62;
&#60;img src="http://b.st-hat [...]]]></description>
			<content:encoded><![CDATA[<p>　はてなブックマークにブックマークするボタンを作ろう。</p>
<pre>
&lt;a href="http://b.hatena.ne.jp/append?サイトURL"&gt;
&lt;img src="http://b.st-hatena.com/images/append.gif" title=""このエントリをはてなブックマークに追加”&gt;
&lt;/a&gt;
</pre>
<p>　<br />
サイトURLはhttpから始まる記事のフルURLである。<br />
画像はダイレクトにリンクしているが、ダウンロードして自サイトから貼った方がベターだ。</p>
<p>はてなブックマークのFirefoxアドオンを入れていると、ブックマークするボタンが表示されるようになる。<br />
なぜか、相手URLが「<strong>http://b.hatena.ne.jp/entry/add/サイトURL</strong>」になっている。<br />
「append」ではなく、「entry/add」なのだ。<br />
どちらでもいいということだろう。</p>
<p>同様に他のソーシャルブックマークのボタンも作れる。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ks2.info/?feed=rss2&amp;p=500</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>pingback（ピンバック）のこと</title>
		<link>http://blog.ks2.info/?p=486</link>
		<comments>http://blog.ks2.info/?p=486#comments</comments>
		<pubDate>Tue, 27 Jul 2010 09:35:52 +0000</pubDate>
		<dc:creator>Koumei</dc:creator>
				<category><![CDATA[webプログラミング]]></category>

		<guid isPermaLink="false">http://blog.ks2.info/?p=486</guid>
		<description><![CDATA[　トラックバックに似ているものにピンバックがある。
　自動的に相手サイトとやりとりをしてこちらへのリンクを作るというものだ。
　トラックバックでの問題点を改善しようということでできたものである。
　何をするかというと、こ [...]]]></description>
			<content:encoded><![CDATA[<p>　トラックバックに似ているものに<strong>ピンバック</strong>がある。<br />
　自動的に相手サイトとやりとりをしてこちらへのリンクを作るというものだ。<br />
　トラックバックでの問題点を改善しようということでできたものである。</p>
<p>　何をするかというと、こちらのブログに相手へのリンクを含めた記事を書く。<br />
　トラックバックでは相手のトラックバックアドレスが必要だが、ピンバックでは<strong>相手の記事のアドレス</strong>になる。<br />
　書きましたよ、という訳だ。</p>
<p>　それだけで相手がリンクしてくれるはずがない。<br />
　そのための仕組みがある。</p>
<p>　まず、こちらのシステムが、こちらの記事内にリンクがあることを発見しなければならない。<br />
　発見すると、そのリンク先（記事のアドレス）から必要な量を受け取り、その中に「X-Pingback ヘッダ」もしくは「pingback link タグ」があるか探す。（先頭に近い部分に置くと負荷が減るだろう）<br />
　どいういうものかというと、こういうものだ。</p>
<pre>
ヘッダ
X-Pingback: http://blog.ks2.info/xmlrpc.php

リンク
&lt;link rel="pingback" href="http://blog.ks2.info/xmlrpc.php" /&gt;
</pre>
<p>　これはこのページ（ブログシステム）のものである。</p>
<p>　見つからないと、相手はピンバックに対応していないので<strong>諦める</strong>。（！）<br />
　見つかると、pingback linkにあるアドレスに「XML-RPC コール」を送る。<br />
　相手側が処理（もちろんリンクも確認する）して、こちらへのリンクを作る。</p>
<p>　どうしてこんなことをしているかというと、実際にリンクが張られた場合にのみピンバックしようということである。<br />
　トラックバックで言えば、相手内にこちらへのリンクがあることを確認してから、こちらが張るようにするのと同じ理屈だ。<br />
　トラックバックは簡単にHTMLからPOSTしても実現できたという点もある。<br />
　SPAMを無くそうということだろう。</p>
<p>　やることは、実はこれまで作ってきたトラックバックと大差ない。<br />
　リンクを探し、送る内容をピンバック仕様にして、受け取りも用意してやるだけである。<br />
　トラックバックをちょっと直せばできるだろう。</p>
<p>　が、実装すべきか？<br />
　ちょっとペンディング。<br />
　<strong>トラックバックはレガシーな雰囲気を醸し出すのであった方がブログっぽい</strong>。<br />
　というか、トラックバックがあるとブログにしか見えない。</p>
<p>　まあ、「はてな」などのソーシャルブックマークを使った方が良いかもしれない。<br />
　Twitterも。<br />
　なお、<strong>Twitterに送信しておくと、設定で自動的にはてなにブックマークができる</strong>そうだ。<br />
　Twitterへの送信はもう調べてあるので、すぐに実装可能である。<br />
　<br />
　<br />
　参考URL<br />
　<a href="http://hixie.ch/specs/pingback/translations/pingback-1.0.jp">Pingback 1.0 仕様</a></p>
<p>　<br />
　ちなみに、はてなにブックマークされているか調べてみた。<br />
　<a href="http://b.hatena.ne.jp/bookmarklist">はてなブックマーク &gt; 新着ブックマーク </a><br />
　ここでURLを入れると検索してくれる。<br />
　このブログもブックマークされていた。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ks2.info/?feed=rss2&amp;p=486</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>トラックバック送信後、戻り値の確認</title>
		<link>http://blog.ks2.info/?p=482</link>
		<comments>http://blog.ks2.info/?p=482#comments</comments>
		<pubDate>Tue, 27 Jul 2010 08:16:11 +0000</pubDate>
		<dc:creator>Koumei</dc:creator>
				<category><![CDATA[webプログラミング]]></category>

		<guid isPermaLink="false">http://blog.ks2.info/?p=482</guid>
		<description><![CDATA[　トラックバックを送信するのはフォームでもできる。
　送りっぱなしである。
　ちゃんとやるなら、相手の戻りを確認しなければならない。
　送りっぱなしなら簡単だし、待ち時間もいらない。
　それもひとつの選択肢ではあるが・・ [...]]]></description>
			<content:encoded><![CDATA[<p>　トラックバックを送信するのはフォームでもできる。<br />
　送りっぱなしである。<br />
　ちゃんとやるなら、相手の戻りを確認しなければならない。<br />
　送りっぱなしなら簡単だし、待ち時間もいらない。<br />
　それもひとつの選択肢ではあるが・・・</p>
<p>　とりあえず戻り値を確認するようにしよう。<br />
　XML形式で戻されるが、前に書いたように「<strong>&lt;error&gt;戻り値&lt;/error&gt;</strong>」の部分だけ解釈しても良い。<br />
　<strong>「0」なら成功</strong>、それ以外なら失敗である。</p>
<p>　さてどうやるか。<br />
　XAMをパースして、連想配列に入れて、そこから読み出して・・・<br />
　<strong>面倒</strong>である。<br />
　ヒントは、エラータグで囲まれた部分だけが必要で、しかもそのタグは１回しか出てこないのである。</p>
<pre>
関数内だとして・・・

	// ソケットオープン
	if (!$sock = fsockopen($host , 80 , $errNo , $errStr , 3)){
	    return "Socket Open Error";
	}

	// 送信
	fputs($sock , $senddata);

	//相手からの戻りを受け取る
	while(!feof($sock)){
		$res = fgets($sock);
	}

	//戻り値を取り出す
	return preg_match_all("|&lt;error&gt;(.*?)&lt;/error&gt;|","", $res);
</pre>
<p>　<br />
　最後のpreg_match_all部分で取り出せる。<br />
　<strong>１行</strong>である。</p>
<p>　もうちょっと細かくやるなら、「0」以外ならメッセージを取り出すと良いだろう。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ks2.info/?feed=rss2&amp;p=482</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
