<?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>pc.casey.jp &#187; プログラミング</title>
	<atom:link href="http://pc.casey.jp/archives/category/programming/feed" rel="self" type="application/rss+xml" />
	<link>http://pc.casey.jp</link>
	<description>コンピュータに関する記述とメモ</description>
	<lastBuildDate>Wed, 08 Feb 2012 01:21:06 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>[PHP] 実行中のPHP バージョンを確認して処理分岐</title>
		<link>http://pc.casey.jp/archives/153898817</link>
		<comments>http://pc.casey.jp/archives/153898817#comments</comments>
		<pubDate>Mon, 19 Dec 2011 17:46:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://pc.casey.jp/?p=153898817</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://pc.casey.jp/archives/153898817' addthis:title='[PHP] 実行中のPHP バージョンを確認して処理分岐 '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>実行中のPHP バージョンを確認して処理分岐する。 バージョン定数ってのも追加されたっぽいけど、それ自体がバージョン依存のようだ。 参考コード /*  * PHP VERSION CHECK  *  * Auther : pc.casey.jp  * License: GNU GPL  * Code   : PHP, UTF-8 * Usage : * $PHP_MIN_VER = "5.2.2"; * _php_version_check($PHP_MIN_VER);  * Version:  *   Ver.0.01 2011.09.23 1st.  */ function _php_version_check($PHP_MIN_VER){     $PHP_NOW_VER = phpversion();     if($PHP_NOW_VER &#60; $PHP_MIN_VER){         echo "PHP VERSION ERROR, [...]]]></description>
		<wfw:commentRss>http://pc.casey.jp/archives/153898817/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[PHP] スクリプトからSAPI を調べる</title>
		<link>http://pc.casey.jp/archives/153898821</link>
		<comments>http://pc.casey.jp/archives/153898821#comments</comments>
		<pubDate>Sun, 18 Dec 2011 15:03:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[coreserver]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[データベース]]></category>
		<category><![CDATA[メール]]></category>
		<category><![CDATA[書き込み]]></category>

		<guid isPermaLink="false">http://pc.casey.jp/?p=153898821</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://pc.casey.jp/archives/153898821' addthis:title='[PHP] スクリプトからSAPI を調べる '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>ファイル関係が面倒なので事あるごとにメールで送ってしまう。それ以外だとデータベースに接続してしまったほうが面倒がなくていいけど、それが面倒だったりする。 どのモードで動作しているかをサクっと返してくれるものがないらしい。 一般的にはテンポラリファイルを作って書き込み出来るかをチェックしたりするようだ。これはperl でも同じだけどエラー処理とか例外処理とかが面倒だ…。 PHP マニュアルによれば、CLI から実行していればcli を返すらしいが・・？ 結果 CLI から実行 php_sapi_name:cgi&#60;br /&#62; Script return:CGI END Web から呼び出す php_sapi_name:apache Script return:other END あれ？ ちなみに、テストはCORESERVER で行った。CORESERVER は通常モジュール版で、.htaccess を設定することでCGI 版になる。が、どちらも同じ結果「apache」だった。うーん。 テストコード &#60;?php /*  * t_getPhpMode  *  * the script check running mode,  * return CLI or CGI or null  *  * PHP4.2.0+  *  * Ver.0.01 2011.09.29 by [...]]]></description>
		<wfw:commentRss>http://pc.casey.jp/archives/153898821/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ソフトウェアのデジタル署名（３）</title>
		<link>http://pc.casey.jp/archives/153898787</link>
		<comments>http://pc.casey.jp/archives/153898787#comments</comments>
		<pubDate>Wed, 07 Dec 2011 15:03:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[exe]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Office]]></category>
		<category><![CDATA[Portable]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[コマンド]]></category>
		<category><![CDATA[サーバー]]></category>
		<category><![CDATA[ソフトウェア]]></category>
		<category><![CDATA[パスワード]]></category>
		<category><![CDATA[ブラウザ]]></category>
		<category><![CDATA[メール]]></category>
		<category><![CDATA[携帯電話]]></category>
		<category><![CDATA[暗号]]></category>

		<guid isPermaLink="false">http://pc.casey.jp/?p=153898787</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://pc.casey.jp/archives/153898787' addthis:title='ソフトウェアのデジタル署名（３） '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>ひとつの道筋を見つけた。 「Semplice:署名ツール (SignTool.exe) でファイルにデジタル署名を」によると、マイクロソフトの提供する「署名ツール (SignTool.exe)」を利用することでデジタル署名を付加するものだという。 署名ツールはコマンド ライン ツールで、ファイルにデジタル署名を添付し、ファイルの署名を検証し、ファイルにタイム スタンプを付けます。（「署名ツール (SignTool.exe)」より引用） ただし、これは付加するだけで、デジタル署名は用意しなければならないようだ。そこで、「無料でデジタル証明書を取得する － ＠IT」が紹介されている（デジタル署名可能な拡張子を探すことが目的のようで、本来の使い方とは違う）。 ただし、 個人向けのデジタル証明書を無料で発行してくれる認証局（「無料でデジタル証明書を取得する － ＠IT」より引用） とのことだから、個人用途に限られるようだ。残念。 だが、道が開けたことは大きい。それぞれ記事の日付が古いことが気になるが、まずやってみて、さらに良い方法があるかはその後模索しても遅くはないはずだ。 ・・・ 結果から言うと、挫折した。 まず、再度幅広く検索してみたものの、無料の多くは「個人向けの電子メール」に限定されていて、さらにその多くのサービスが現在は行われていないようだ。 英語圏の情報などもちらっと見たところではやっぱり個人向け電子メールが多く、それ以上の情報は筆者の能力的な問題により不明。 # もしも、レンタルサーバーの共用SSL 証明書などが流用できるならありがたいかもしれないのだが･･･ # ついでに言うなら、もし、SSL 証明がされたサイトからダウンロードした場合、そのファイルを正しいものだと認識してくれるなら… # いずれも詳しくは不明だ。証明書について調べると、用途を限定して証明書を発行することが可能のようだから、証明書の流用やその他はおそらく無理だろうが。 # VBA などは付属ツールでサクっとできてしまうような印象を受けたが、自己証明なのだろうか。どうなんだろう。調べたいことはどんどん増えていくが今回は挫折して終了する。 この記事を読んだ人は、こんな記事にも興味をもっていますMagicDisc – CD/DVDイメージ作成・マウント – インストールと使い方（図解）ソフトウェアのデジタル署名（１）ソフトウェアのデジタル署名（２）]]></description>
		<wfw:commentRss>http://pc.casey.jp/archives/153898787/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ソフトウェアのデジタル署名（２）</title>
		<link>http://pc.casey.jp/archives/153898783</link>
		<comments>http://pc.casey.jp/archives/153898783#comments</comments>
		<pubDate>Tue, 06 Dec 2011 15:03:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[exe]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Office]]></category>
		<category><![CDATA[Portable]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[コマンド]]></category>
		<category><![CDATA[サーバー]]></category>
		<category><![CDATA[ソフトウェア]]></category>
		<category><![CDATA[パスワード]]></category>
		<category><![CDATA[ブラウザ]]></category>
		<category><![CDATA[メール]]></category>
		<category><![CDATA[携帯電話]]></category>
		<category><![CDATA[暗号]]></category>

		<guid isPermaLink="false">http://pc.casey.jp/?p=153898783</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://pc.casey.jp/archives/153898783' addthis:title='ソフトウェアのデジタル署名（２） '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>ところが、最近、PortableApps のソフトウェアがスムーズに実行できるようになった。調べてみるとどうやらデジタル署名が追加され、一定の信頼があると判断されるようになったようだ。 つまり、ソフトウェアを気軽に利用してもらうだけでも、デジタル署名というものが必要のようだ。デジタル署名に対応することで得られるメリットは、スムーズ に起動できることをあげたが、裏をかえせば実行するファイルにウィルスが経路上で侵入したり、途中で改竄されていないことが確認できたから、という理由が ある。 → デジタル署名の仕組みそのものは参考文献等を参照していただきたい 例えばhttps のように本格的に暗号化通信するような場合、ホンモノの認証局による証明が必要になる。https は主にブラウザとサーバー間の通信を暗号化し、かつ、サーバーが本物であるかを証明してくれるなどをしてくれる。 いくつもの認証局があるが、OS やブラウザが対応しているかが重要になってくる。証明を行うだけなら「オレオレ証明書」を発行することもでき、無料でできる。が、その信頼性が低ければ結 局意味をなさなくなってしまう（暗号化自体には意味があるだろうが、結局は表示される警告文におののく一般ユーザを相手にしなければならないのだろうか ら）。 おかしなことに、逆に高度な暗号化を実施しすぎてもブラウザが対 応できず、通信ができないこともある（主に携帯電話）。さらに、信頼できる認証局に証明する機関が登録されていなければ、信頼できることをOS やブラウザに教えるためのステップがいくつか必要になってしまう。これも結局、以前でのように一般ユーザを対象にしなければならない場合、大きな壁になっ てしまうだろう。 ユーザー自身が作成したデジタル証明書は正式な証明機 関から認証されたものでないため、この証明書を使用して署名したマクロ プロジェクトは自分で署名したプロジェクトとして照会されます。Microsoft Office では、個人証明書ストアに証明書を持つコンピュータでのみ、自己署名入り証明書を信頼します。（「マクロ プロジェクトにデジタル署名を追加する &#8211; Excel &#8211; Office.com」より引用） 「不明なプログラムですが云々」を消したいのでしょうが、自己証明書を付けただけではこのメッセージは消えません。（「デジタル署名　（自己証明書を利用） &#8211; スケーラビリティ &#8211; 教えて！goo」より引用） 多くのブラウザや環境に対応していて、かつ、信頼できる証明書が必要になるのだが、これを入手するためには相応の対価が必要になる。つまり有料だ。 フリーソフトなど気軽に利用してもらいたいと思っても、そこに「原材料費」がかかれば、それを上乗せせざるを得ないかもしれない。それで回収できるのは非常に優れたソフトウェアであるか、利用者の多いソフトウェアくらいのものだろう。 友人のためにマクロに毛が生えたような実行ファイルにお金はかけられない-。そんなわがままを叶えてくれるデジタル署名は可能なのだろうか。 # CRCやMD5を明記するのと同程度の手順できたらありがたいのだが →　続く この記事を読んだ人は、こんな記事にも興味をもっていますソフトウェアのデジタル署名（１）ソフトウェアのデジタル署名（３）]]></description>
		<wfw:commentRss>http://pc.casey.jp/archives/153898783/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ソフトウェアのデジタル署名（１）</title>
		<link>http://pc.casey.jp/archives/153898780</link>
		<comments>http://pc.casey.jp/archives/153898780#comments</comments>
		<pubDate>Mon, 05 Dec 2011 15:03:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[exe]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Office]]></category>
		<category><![CDATA[Portable]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[コマンド]]></category>
		<category><![CDATA[サーバー]]></category>
		<category><![CDATA[ソフトウェア]]></category>
		<category><![CDATA[パスワード]]></category>
		<category><![CDATA[ブラウザ]]></category>
		<category><![CDATA[メール]]></category>
		<category><![CDATA[携帯電話]]></category>
		<category><![CDATA[暗号]]></category>

		<guid isPermaLink="false">http://pc.casey.jp/?p=153898780</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://pc.casey.jp/archives/153898780' addthis:title='ソフトウェアのデジタル署名（１） '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>Windows をはじめとするOS そのものの機能や、セキュリティ対策ソフトウェアによって、署名されていないソフトウェア・プログラムの実行には、その許可を求めるステップが入る。 Windows の場合は、ブロックを解除することによって利便性を確保できるが、セキュリティ対策ソフトウェアなど場合によっては意図する実行でさえ許可してくれず、削除するしかないような場合もある。 理由はいくつかあるが、おそらく多いだろうものが「デジタル署名」されていないことではないだろうか。少なくとも筆者はその影響を受けていて、実行されない理由がデジタル署名らしいことが明記されていた。 そこで、デジタル署名について検索してみるが、多く出てくる回答はメールのデジタル署名や暗号化についてだ。恥ずかしながら、これが共通するものなのか、それとも調べる対象が誤っているのかさえわからない。 ソフトウェアへのデジタル署名 個人的に、ソフトウェアの多くはポータブル版を利用している。 可能な限りクラウドなどのオンラインサービスを利用することで、ブラウザとインターネット、ID とパスワードさえあれば、ほとんどの環境でいつもどおりの作業が行える。しかし、一部はブラウザで処理するよりも、ローカル環境でソフトウェアを利用して 処理したほうが良いことがある。 そのためにポータブル版を利用してい る。例えば突然パソコンが壊れてしまって、復旧までに時間がかかるとしても作業をとめることはできない。このような場合、ポータブル版が威力を発揮する。 不要になったらフォルダを削除すればよく、アンインストールも簡単だ。さらにランチャなどを併用すれば起動までのステップも簡単になる。 → ポータブル版についてはこちらで ポータブル版ソフトウェアを多く排出するウェブサイトPortableApps.com からダウンロードしたソフトウェアも今までは起動時に実行するかの選択肢が表示され、ブロックを解除するまで面倒だった。頻繁にバージョンアップするソフ トウェアがあればあるほど、この小さなステップは大きな作業の中断時間に累積されていく。 →　続く 参考文献 Semplice:署名ツール (SignTool.exe) でファイルにデジタル署名を 無料でデジタル証明書を取得する － ＠IT 署名ツール (SignTool.exe) 窓の杜 &#8211; 【NEWS】GMOグローバルサイン、デジタル署名の証明書発行サービスを個人開発者向けに拡大 デジタル署名のまとめ（Vista x64対応） コードサイニング証明書｜製品＆サービス｜日本ベリサイン EZ-NET 基礎特集： デジタル署名： Thawte Inc. が提供する無料デジタル署名を取得する。 無料テスト用ID｜製品＆サービス｜日本ベリサイン SSL Certificate Free SSL Certificates 【デジタル証明書】FreeCAってどうよ【無料発行】 テスト証明書の種類の選択 MakeCert Test Certificate 証明書作成ツール (Makecert.exe) [...]]]></description>
		<wfw:commentRss>http://pc.casey.jp/archives/153898780/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[PHP] 404レポート（PHP版）Ver.0.05→0.08</title>
		<link>http://pc.casey.jp/archives/153898391</link>
		<comments>http://pc.casey.jp/archives/153898391#comments</comments>
		<pubDate>Mon, 03 Oct 2011 03:03:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://pc.casey.jp/?p=153898391</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://pc.casey.jp/archives/153898391' addthis:title='[PHP] 404レポート（PHP版）Ver.0.05→0.08 '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>以前作成した「pc.casey.jp » [PHP] 404レポート（PHP版）」を幾つかのサイトで改良していると、やっぱり設定ファイルが別になっていないと面倒。ということで、「pc.casey.jp » [PHP] さくらインターネット リソース情報自動報告プログラム（PHP 版）」で使ったコードを流用したバージョンを作った。 主な変更点 Ver.0.06 設定を外部ファイルに保存するようにした。これにより複数サイトに設置している場合でも本体の差し替えが簡単になった・・ハズ。 Ver0.07 動作しているサーバーをわかりやすくするため、メール本文内にホスト名を追加した Ver.0.08 動作しているサーバーをわかりやすくするため、メールタイトルにホスト名を追加した 動作例 開発中のデバッグモード時の例（Ver.0.08） 実稼動の例（Ver.0.08） err404.php &#60;?php /* ===================================================  *  404 Report and Suggest for mb-PHP  * ---------------------------------------------------  * DESCRIPTION:  *  - output 404 message for user  *    To display a polite message to visitors  *  *  - guide for new [...]]]></description>
		<wfw:commentRss>http://pc.casey.jp/archives/153898391/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[PHP] さくらインターネット リソース情報自動報告プログラム（PHP 版）</title>
		<link>http://pc.casey.jp/archives/153898285</link>
		<comments>http://pc.casey.jp/archives/153898285#comments</comments>
		<pubDate>Sun, 02 Oct 2011 03:03:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[Cookie]]></category>
		<category><![CDATA[coreserver]]></category>
		<category><![CDATA[cron]]></category>
		<category><![CDATA[Date]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Gmail]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Shell]]></category>
		<category><![CDATA[さくらインターネット]]></category>
		<category><![CDATA[サーバー]]></category>
		<category><![CDATA[パスワード]]></category>
		<category><![CDATA[メール]]></category>
		<category><![CDATA[変換]]></category>
		<category><![CDATA[自作]]></category>

		<guid isPermaLink="false">http://pc.casey.jp/?p=153898285</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://pc.casey.jp/archives/153898285' addthis:title='[PHP] さくらインターネット リソース情報自動報告プログラム（PHP 版） '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>さくらインターネットのベースOS はFreeBSD。 また、とてもリソース管理が厳しく、 だからこそ快適に利用できる（と思い込んでいる）。 そんなさくらインターネットの唯一の欠点と言えなくもないのがデータベースの作成制限。しかし、先日の発表資料を読んだ時は思わすその日一日、いやいまでも喜びの余り走り出しす勢いだ。 さて、筆者はCORESERVER も利用しているが、こちらは全体的な順位やどれくらい負荷をかけているかがコントロールパネルで確認できる。 しかし、さくらインターネットは転送量とCPU 使用時間がわかるくらいで順位やドメインごとのデータは不明。さらに、そのCPU 使用時間や短期間でのアクセス増加を検知すると、優先度を下げたり503 エラーを発生させる。このような処理によってさらに安定した運用とリソース配分が行われている（たぶん）。 そうすると気になるのがCPU への負荷や転送量がどれくらいの時に制限を受けるかということだが、これは明示されていない。情報を集めるとある程度の予測は可能だが、急激な増加（特にクローラの集中砲火を浴びたとき）を知らずに受けたことなどで制限を受けることもある。これらの情報を集める過程で多かったのが、503 の頻発などを受けてサポートに問い合わせたり、コントロールパネルを確認したらリソースの消費に驚いたというものだ。 筆者は最近さくらインターネットに引っ越してきたこともあって、どれくらいの負荷がかかっているのかなどをこまめに確認している。さらに、ある程度情報が集まったり、”何か”が起きたときには記事にしようと普段から情報を集めている。が、面倒だ（何が面倒っていちいちID/パスワードでログインしなければならないし、複数アカウントあったらさらに面倒だし、グラフ作ったりするときのデータの整形や取りこぼしも・・）。そういうものこそ自動的にやってほしいもの。 標準機能としても特に見当たらず、また、随分探しまわったが、どういうわけか筆者のような人間が他に居ないのか、そういうツールが見当たらなかった。まぁ皆様Geek な人が多いからちょちょっと自作しているのかもしれない。 ということで、テキトーに作りました。 動作例 データのみ CSV フォーマットもどきで、コピー・アンド・ペーストすればグラフを使って視覚的に推移を把握することもできる。データフォーマットについては「データフォーマット」の項を参照。 ※バージョン表示がついていないバージョンの時のもの 詳細付き データのみだと必要な情報が見づらいかもしれない。詳細付きにすれば、文字情報でも内容を確認しやすくなる。 ※バージョン0.09 の時のもの iPhone で確認 gmail など複数のデバイスや場所で同一のメールを確認できるように設定しておくと、万一の負荷急増にも気がつける。気がつければ対応もできるし、それまでの時間も短縮できるかもしれない。 ※バージョン 0.16 の時のもの データ使用例 以下は同じデータで、表現の仕方が異なるだけ。 使用例１ 使用例２ データフォーマット cron で回そうかと思っているのと、ファイル関係は面倒なのでメールで送るように作りました。HTML で表示させることもできますのでどうぞご自由に。 メール本文には次の１行が書かれています（カスタマイズできます） FMTCASEYJP01,2011/09/22 16:23:06,USER,13.6,46:29,1:28:12,895.0 ,1:28:18,887.3 データ形式は以下のとおり： FMTCASEYJP01　・・・・・・・・　フォーマットバージョン 2011/09/22 16:23:06　・・・・　取得した日時 USER　・・・・・・・・・・・・・　ユーザ名 13.6　・・・・・・・・・・・・・　現在のディスク使用量（％） 46:29　・・・・・・・・・・・・　現在のCPU 使用時間 1:28:12　・・・・・・・・・・・　昨日のCPU [...]]]></description>
		<wfw:commentRss>http://pc.casey.jp/archives/153898285/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[PHP] マルチスレッド処理</title>
		<link>http://pc.casey.jp/archives/153898283</link>
		<comments>http://pc.casey.jp/archives/153898283#comments</comments>
		<pubDate>Sat, 01 Oct 2011 15:03:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[coreserver]]></category>
		<category><![CDATA[cron]]></category>

		<guid isPermaLink="false">http://pc.casey.jp/?p=153898283</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://pc.casey.jp/archives/153898283' addthis:title='[PHP] マルチスレッド処理 '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>逐次処理では時間がかかり kill されてしまうので、マルチスレッドで非同期通信をすれば制限時間内で完了できそう。しかし、調べていてわかったのは、PHP にはマルチスレッド処理がないらしい。いくつか対応策が見つかって、fork して子プロセスを作るとか、exec 関数を使ってバックグラウンドで処理させるとか。 いくつかサンプルが見つかったものの、上手く動作するものがみつからなかった。動作させるために問題を見つけて対処するべきなのだが、他に動作するサンプルがあるならそちらを優先したいと思っていくつか試した。決して面倒だとか・・。 実行結果 Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set in /virtual/user_idpublic_html/www.example.com/s_curl_php5.php on line 39 Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set in /virtual/user_idpublic_html/www.example.com/s_curl_php5.php on line 39 Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated [...]]]></description>
		<wfw:commentRss>http://pc.casey.jp/archives/153898283/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[PHP] open_basedir が解決できなかった</title>
		<link>http://pc.casey.jp/archives/153898280</link>
		<comments>http://pc.casey.jp/archives/153898280#comments</comments>
		<pubDate>Sat, 01 Oct 2011 03:03:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Cookie]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[サーバー]]></category>

		<guid isPermaLink="false">http://pc.casey.jp/?p=153898280</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://pc.casey.jp/archives/153898280' addthis:title='[PHP] open_basedir が解決できなかった '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>Snoopy を使おうとしたけれど、できなかったのでメモしておく。必要なモノがインストールされていないとか、もともと許可されていないサーバーなのか、何れにしても原因がわかった後にはつまらないことなのだろうが。 Snoopy は外部サーバーと通信して、HTML を取得することができるクライアントらしい。またGET やPOST のほか、SSL やCookie にも対応しているというから、アイデア次第で面白いプログラムが書けそうだ。 テストコード &#60;?php $url = 'https://***'; include_once 'Snoopy.class.php'; $params['domain'] = '***'; $params['password'] = '***'; $snoopy = new Snoopy; $snoopy-&#62;submit($url, $params); echo $snoopy-&#62;results; echo "END"; ?&#62; エラー Warning: is_executable() [function.is-executable]: open_basedir restriction in effect. File(/usr/local/bin/curl) is not within the allowed path(s): (.:/virtual:/tmp:/usr/local/lib/php:/usr/local/php/bin) in /virtual/***/public_html/***/Snoopy/Snoopy.class.php on line 361 参考 [...]]]></description>
		<wfw:commentRss>http://pc.casey.jp/archives/153898280/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[PHP] 404レポート（PHP版）</title>
		<link>http://pc.casey.jp/archives/153898045</link>
		<comments>http://pc.casey.jp/archives/153898045#comments</comments>
		<pubDate>Wed, 28 Sep 2011 03:03:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[ip]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[メール]]></category>

		<guid isPermaLink="false">http://pc.casey.jp/?p=153898045</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://pc.casey.jp/archives/153898045' addthis:title='[PHP] 404レポート（PHP版） '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>以前CGI 版で404 レポートを出力するプログラムを作ったのだが、今回はPHP 版を作った。何故つくろうかと思ったかというと、WordPress などにはプラグインで機能するものがあるが、これらを利用しないサイトでも移転した際の案内を付けたかったから。 ところで、疑問に思うのは同様のプログラムを見つけることができないのは何故だろう。見つけ方が悪いのか、それとももっと高次元（Apache のログを解析するなど）で行われているのか。あるいはGoogle のウェブマスターツールなどでも404 がどこで発生しているかを見つけることはできるから、そういったものを使っているのだろうか。 WordPress などのCMS には404 時の動作を定義したり、改造したり、プラグインを導入したりすることで発見から対策までを容易にしている。今回作るプログラムは単体で動作するように設計しているので、どのサイトにもPHP が利用できる環境であれば使えると思う。 期待する動作 .htaccess で404 時に本プログラムを指定する 本プログラムはユーザ、Bot 等に対してHTTP ステータスコード 404 を返す 同時に検索語が解析でき、移転先へクエリを転送できる場合は案内する 同時に管理者に対して404 の発生を知らせる 管理者は必要に応じて .htaccess を更新し、適切なページにリダイレクトさせ404 を軽減する バージョンアップ 公開までに少し運用して改良したところ Ver.0.04- favicon やrobots などを報告しないようにする$reject 配列を追加し、合致した場合は報告しない（完全一致のみ）。 ※Ver.0.03 でも搭載したが、ハードコーディングだったのを改善した Ver.0.05- 攻撃を目的としたアクセスの多くがReferer を持っていないことから、Referer を持っていない場合に報告しないようにする設定を追加した。$need_referer をfalse にするとreject に合致しなければ全件報告するので、どんな攻撃を受けたか見ることができる。ちなみにレポートが来たということは404 で弾いたということになる。その他Ver.0.05 ではいろいろ弄ったので新たなバグを内包したかも。 動作例 コード &#60;?php /* ===================================================  *  404 [...]]]></description>
		<wfw:commentRss>http://pc.casey.jp/archives/153898045/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

