<?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>Ikeda-＞Weblog() &#187; PHP</title>
	<atom:link href="http://blog.toor.jp/category/memo/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.toor.jp</link>
	<description>ikeda の徒然書き殴り Blog</description>
	<lastBuildDate>Mon, 02 Jan 2012 12:57:48 +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>[TIPS] PHPでAndroidMarketから情報を取得する</title>
		<link>http://blog.toor.jp/2011/12/21/android_market_api_php/</link>
		<comments>http://blog.toor.jp/2011/12/21/android_market_api_php/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 07:17:24 +0000</pubDate>
		<dc:creator>ikeda</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[TIPS]]></category>
		<category><![CDATA[Android Market]]></category>

		<guid isPermaLink="false">http://blog.toor.jp/?p=1708</guid>
		<description><![CDATA[大変ご無沙汰しております、、、前回のエントリが7/31ですから、4ヶ月強の放置となってしまいましたm(_ _)m#いやでも記事を書かなかっただけでサーバの中身をいじってたんですよですよですよ(言い訳) さておき、以前・・・いや遠い昔・・・の記事で、RHETOLO関連サービスである「あぷり握り」をご紹介しました。このサービス内に、iPhoneアプリ・AndroidアプリをそれぞれAppStore・AndroidMarketから検索し情報を取得する、という機能を実装しているのですが、これの「AndroidMarket検索」がここ数日前から動かない(検索できない)という不具合を起こしていました。 特にコードへの変更は行なっていなかったので、AndroidMarket側の仕様変更か、、と思っていたのですが、、、 今回のシステムでは、PHPからAndroidMarketへのアクセスを行うライブラリ「Android Market API for PHP」を利用しています。AppStoreは検索APIが公開されているので専用のライブラリ等は使っていませんが、両ストアに対してできるだけ同じ手順で検索を行いたかったため、SearchAppStore/SearchAndroidMarket というドライバクラスに細かな部分を集約し、同一インタフェースで呼び出しが行えるようなラッパークラスを作成してあります。 まず、ざくっとAndroid Market API for PHPの使い方をご紹介しておきますね。 ライブラリはgithubからダウンロードできます。 https://github.com/splitfeed/android-market-api-php git clone するなり zip で落として展開するなりしましょう。 そうするとこのようなディレクトリとファイルができあがります。 Market/MarketSession.phpAndroidMarketとの通信制御を行うクラスライブラリ群 examples/*.phpサンプルコード群 proto/local.phpアカウント情報等の定義 proto/market.proto.phpAndroidMarketとやり取りするデータのフォーマッティングを行うクラスライブラリ群 proto/protocolbuffers.inc.php通信データとPHPオブジェクトの相互変換を行うクラスライブラリ群(だと思う) サンプルコードを動作させるためには、幾つか修正が必要です。 examples/local.php 1 &#60;?php2 //Rename this file local.php and change the constants to match your Google Account credentials3 define(&#8216;GOOGLE_EMAIL&#8217;, &#8216;YOUR-GOOGLE-ACCOUNT@gmail.com&#8217;);4 define(&#8216;GOOGLE_PASSWD&#8217;, &#8216;YOUR-GOOGLE-PASSWORD&#8216;);5 define(&#8216;ANDROID_DEVICEID&#8217;, &#8216;000000000000000&#8216;); ここのYOUR-GOOGLE-ACCOUNT、YOUR-GOOGLE-PASSWORDをそれぞれGoogleアカウント・パスワードに修正します。続いてANDROID_DEVICEIDを設定するんですが、オールゼロだとエラーになりますので最後だけ1とかにしてみるといいでしょう。 Market/MarketSession.php 1 [...]]]></description>
		<wfw:commentRss>http://blog.toor.jp/2011/12/21/android_market_api_php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[WP] 続・FlickrRSSプラグインでランダム表示</title>
		<link>http://blog.toor.jp/2009/09/10/flickrrss_random_display/</link>
		<comments>http://blog.toor.jp/2009/09/10/flickrrss_random_display/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 05:39:47 +0000</pubDate>
		<dc:creator>ikeda</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[TIPS]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Flickr]]></category>
		<category><![CDATA[Hack]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[WordPress Plugin]]></category>

		<guid isPermaLink="false">http://blog.toor.jp/2009/09/10/flickrrss_random_display/</guid>
		<description><![CDATA[もう3年近く前になりますが、WordPressのサイドバーにFlickrの画像を表示するプラグイン「FlickrRSS」についての改造記事を書きました。 その後、どのタイミングだったか忘れてしまいましたが、、、多分デザイン変更のタイミングでFlickrウィジェットの表示を止め、そのままFlickrRSSプラグインのことも忘却の彼方に行ってしまってました＾＾；； ところが！！ こんな拙いブログも、少しは皆様のお役に立てたんでしょうか、FlickrRSSプラグインの改造箇所についてコメントを頂きました！！！ いやーもう嬉しいやら忘れていた自分が恥ずかしいやら＾＾；； 早速、最新版のFlickrRSSプラグインをインストールし、覗いてみました^^)b eightface.com &#8211; flickrRSS for WordPress 最新版はバージョン5.1でしょうか、当時のものとはコードも少し変わっているようです(当然っちゃー当然ですね＾＾；）。以前の記事はバージョンアップに伴いRSS取得できなくなっていたことに対してのパッチでしたが、最新版では問題なくRSSの取得・画像表示が行えています。 中を覗いてみると、以前は format=rss_200という部分をformat=rssに変更すると、通常のRDFでフィード取得できるようになりました(^^)v とありますが、現在はformat=rss_200のままで取得OKのようです。Flickr側の仕様なのかなー。 しかしながら、表示される画像は以前と変わらず、最新のｎ件ということに変更は無いようです。RSSベースですから最新のものを対象とするのは妥当なのかもしれません。 が、そこはそこ。どうせならランダム表示させたいところです。ちょっと見てみましょう(^^)b flickrRSSプラグインの本体は、WordPressのプラグインディレクトリの直下にある flickrrss.php です。例えば、WordPressを /home/blog/htdocs というディレクトリにインストールしてある場合、プラグインディレクトリは /home/blog/htdocs/wp-content/plugins になりますので、このディレクトリにある flickrrss.php を修正します。 さて、flickrrss.php の140行目。 ばっちり前回と同じく、array_slice で取得したRSSの先頭からn件を切り出しています。 ってことで、修正内容は前回と同じで、 という感じになります。 ついでに、プラグインの設定画面に「Latest(最新)」「Random(ランダム)」の表示モードを追加し、切り替えられるようにしてみました^^)b ↓に修正済みのファイルアーカイブを置いておきますので、よろしければお使い下さい。]]></description>
		<wfw:commentRss>http://blog.toor.jp/2009/09/10/flickrrss_random_display/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[メモ] PostgreSQL+pgpool-II+heartbeat でクラスタリング／プログラム対応編</title>
		<link>http://blog.toor.jp/2009/01/08/postgres_clustering_part3/</link>
		<comments>http://blog.toor.jp/2009/01/08/postgres_clustering_part3/#comments</comments>
		<pubDate>Thu, 08 Jan 2009 06:55:25 +0000</pubDate>
		<dc:creator>ikeda</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ソフトウェア]]></category>
		<category><![CDATA[仕事的メモ]]></category>
		<category><![CDATA[DBクラスタ]]></category>
		<category><![CDATA[HashDB]]></category>
		<category><![CDATA[heartbeat]]></category>
		<category><![CDATA[pgpool-II]]></category>
		<category><![CDATA[PostgreSQL]]></category>

		<guid isPermaLink="false">http://blog.toor.jp/?p=937</guid>
		<description><![CDATA[中編から数ヶ月が経過してしまいました^^; 今までなにをやっていたかと言うと、「既存プログラムの改修」作業です。 まだ完全には終了していませんが、覚書として「プログラム対応編」をお送りします。 もともと書かれていたコードがタコだったり用途が限定されたりしてあまり参考にはならないかもしれませんが・・・。   さて、なぜ既存プログラムの改修が必要か、ということなんですが、最大の原因は   LOB(ラージオブジェクト)を使用しているサブシステムがある   これに尽きます。 LOBについての詳細は他に詳しく解説されているページがあるはずです(他力本願)ので割愛しますが、レプリケーションミドルウェアとして選定したpgpool-IIの制限事項として、 乱数やトランザクションID，OID，SERIAL， シーケンス，CURRENT_TIMETSTAMPのようなものに関してはレプリケーショ ンはしますが，2台のホストでまったく同じ値がコピーされる保証はありません とあり、LOBはもともと扱いが特殊な上OIDを直接使用する形になりますので、pgpool-IIを経由して使うことはできません。 というか pg_lo_* 関数を実行した時点でpgpool-IIから怒られます^^;   ということで、まずはLOBを使用しないようシステムを改修する必要があります。 他にもOIDやシーケンスなど、制限事項に触れそうな機能を利用しているプログラムを洗い出し、必要に応じて修正していく必要があります。 チェックすべき点として以下の４つを想定しました。   既存のデータベースアクセスライブラリを使用せず、直接pg_*関数を利用してアクセスしているか 発行しているクエリに危険そうなもの(シーケンスやnow()等)は利用しているか LOBを使用しているか OIDを利用しているか   ざっとプログラムファイルを洗い出してみました。その数、約1500。気が遠くなりますね&#60;丶´Д｀&#62;げっそり 全てのファイルをチェックするだけで1ヵ月半以上かかってしまいました。この作業だけに専念できるわけではなく、随時他の作業や障害対応などの割り込みが発生しますから、仕方ないっちゃー仕方ないかもしれませんが。。。ちょっと引っ張りすぎちゃったかな。   結論として、 LOBを利用しているシステムは他の格納手段に変更する。 now()等日付・タイムスタンプ関連はこの際ほっとく。後々はライブラリで置換処理を行う等、対応を取るかも。しかし、ちょっとしたタイムスタンプの違いでpgpool-IIに異常発生と判断されても困るので、pgpool-IIのオプション&#8221;replication_stop_on_mismatch&#8221;はFALSEで運用することとします。 直接アクセスについても今回は危険なクエリが見つからなかったため後回し。   ということになりました。 最大の難関「LOB」ですが、今回対象となったサブシステムでは画像データの格納に使用されていました。もともと自分で書く時はLOBを使わず   データそのものはファイルに ファイルパス(URL)などの情報を保持するインデクステーブルをＤＢに   というスタンスだったのですが、、、このシステムは外部委託して開発したものでした(T-T*) 愚痴っていても仕方ないので他の方法を考えます。さくっと思いついたのはこの３つ。 今までの方法(データはファイル、インデクスをDB) 画像データをエンコードしDBに突っ込む HashDB等、全く別のDBシステムを使う まず(1)ですが、方法としては今まで行ってきたことなので、仕組みそのものは枯れています。が、対象システムのコードを調査した結果、かなりの修正量になってしまう恐れが出てきました。 となると(2)か(3)・・ということになります。   そんな中、「Web屋のネタ帳」さんで見つけたこんなエントリ。 画像もDBに格納して管理する －扱いがめんどうなLOB(ラージオブジェクト)は使わない方法も含め   決まった。(2)で行きましょう。ライブラリを作る手間はかかりますが、一度作ってしまえば他システムでも応用できますしね。 [...]]]></description>
		<wfw:commentRss>http://blog.toor.jp/2009/01/08/postgres_clustering_part3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[メモ] FreeBSD上のApacheをworkerで使う</title>
		<link>http://blog.toor.jp/2008/06/24/apache_worker_on_freebsd/</link>
		<comments>http://blog.toor.jp/2008/06/24/apache_worker_on_freebsd/#comments</comments>
		<pubDate>Tue, 24 Jun 2008 02:03:37 +0000</pubDate>
		<dc:creator>ikeda</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[仕事的メモ]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[スレッド]]></category>
		<category><![CDATA[メモ]]></category>
		<category><![CDATA[試してみた]]></category>

		<guid isPermaLink="false">http://blog.toor.jp/?p=248</guid>
		<description><![CDATA[超個人的備忘録。 FreeBSD上でApacheをビルドすると、デフォルトのMPMがpreforkとなります。 これはこれで枯れていてヨイのですが、パフォーマンスを求めるにはオーバーヘッドが多く、向いていません。ここは一発、スレッドを使う worker モードにしたいところ。 し・か・し・・・・ 単純に configure オプションに &#8211;with-mpm=worker と書いただけではコンパイル(正確にはリンク)エラーが出てしまいました。ap_thread_ﾅﾝﾄｶ って関数が見つからない、とわめいています。 さて、どうしたもんか。。 ごそごそ探ってみると、、これは Apache Portable Runtime library なるライブラリに含まれているモノらしく。こんなもん別売りで入れるのか？と思ったら、、あるじゃないですか、Apacheのソース内に。 $APACHE_SRC/srclib/apr 下にライブラリソースが展開されています。configureも同梱。これを生かすために、configure に &#8211;with-included-apr オプションをつけます。 ということで、こんな感じ。 % ./configure &#8211;with-included-apr &#8211;with-mpm=worker &#8211;enable-modules=&#8230;.. さーこれでばっちりワーカホリックスレッドだ！ と思ってたら落とし穴。というかすっかり忘れてました。 PHPがスレッドセーフではないのです。 そのままApacheを再起動すると [Tue Jun 24 10:35:09 2008] [crit] Apache is running a threaded MPM, but your PHP Module is not compiled to be [...]]]></description>
		<wfw:commentRss>http://blog.toor.jp/2008/06/24/apache_worker_on_freebsd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[PHP] ベンチマークまとめサイト</title>
		<link>http://blog.toor.jp/2008/06/04/20080604_php_benchmark/</link>
		<comments>http://blog.toor.jp/2008/06/04/20080604_php_benchmark/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 02:54:21 +0000</pubDate>
		<dc:creator>ikeda</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[TIPS]]></category>
		<category><![CDATA[ソフトウェア]]></category>
		<category><![CDATA[仕事的メモ]]></category>
		<category><![CDATA[ベンチマーク]]></category>

		<guid isPermaLink="false">http://blog.toor.jp/2008/06/04/20080604_115315/</guid>
		<description><![CDATA[17年前、中規模のソフトハウスに就職し、また10年前に退職→フリーランスとして再始動してから今まで、色々なプログラムやシステム開発に携わってきました。使用するプログラム言語はCであったりPerlであったりはたまたCOBOLだったりFORTRANだったり、様々でした。 現在開発に使用するメイン言語はPHPなんですが、よく使用する処理、、、例えば『配列の内容を順に呼び出してループ』等は使用する関数や書き方に幾つもの「正解」があります。 そして、現在のサーバやクライアントのマシンスペックを考えると、以前ほどプログラムに「処理速度」を求めることは少なくなっているように思います。 #もちろん致命的に遅いプログラムは論外ですが＾＾； しかし、やっぱりプログラムの処理速度は速いに越したことはありません。ちょっとした書き方の違いで違いが出てくるならば、速い書き方を選んだ方がGOODですよね＾＾ そんな時に役立ちそうなサイトがphpspot開発日誌にて紹介されていました。 PHPベンチマーク結果まとめサイト「The PHP Benchmark」:phpspot開発日誌 The PHP Benchmark 「ちょっとした処理」を様々な方法で実装し、その処理速度をベンチマークした結果をまとめたサイトです。 例えば、先に挙げた「配列の内容を順に読み出すループ」、Read Loop では foreach() vs. for() vs. while(list() = each()) としてまとめられています。 1つの書き方の結果を基準値・100%として、それに対してのパーセンテージで表されています。基準値に比較的近い速度のものはグリーン、2-3倍遅いものはイエロー、3-4倍がオレンジ、それ以上遅いものはレッドの背景になっていて、パッと見てどれが速くどれが遅いのか一目瞭然です。 ReadLoopの場合、 foreach($aHash as $val); という書き方を基準として、 while (list(,$val) = each($aHash)); foreach ($aHash as $key =&#62; $val); while (list($key, $val) = each($aHash)); foreach ($aHash as $key =&#62; $val) $tmp[] = $aHash[$key]; while [...]]]></description>
		<wfw:commentRss>http://blog.toor.jp/2008/06/04/20080604_php_benchmark/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[TIPS][WEB][Pligg] 関連リンク不具合</title>
		<link>http://blog.toor.jp/2008/04/23/20080423_154642/</link>
		<comments>http://blog.toor.jp/2008/04/23/20080423_154642/#comments</comments>
		<pubDate>Wed, 23 Apr 2008 05:09:36 +0000</pubDate>
		<dc:creator>ikeda</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[TIPS]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[仕事的メモ]]></category>
		<category><![CDATA[pligg]]></category>
		<category><![CDATA[備忘録]]></category>

		<guid isPermaLink="false">http://blog.toor.jp/2008/04/23/20080423_154642/</guid>
		<description><![CDATA[備忘録的メモ。 MOTOSUMIst News で使っているPligg、そのままだと「関連リンク」が上手くあがってこない。 以下のように修正を加えた。 libs/html1.php 51 function related_stories($storyid, $related_tags, $category){ 52 // this returns similar stories based on tags in common and in the same category 53 global $db; 54 $related_tags = &#8220;&#8216;&#8221;.str_replace(&#8220;, &#8220;,&#8221;&#8216;, &#8216;&#8221;,addslashes($related_tags)).&#8221;&#8216;&#8221;; この赤字の部分を以下のように修正。 54 $related_tags = &#8220;&#8216;&#8221;. preg_replace(&#8220;&#124;,\s*&#124;&#8221;, &#8220;&#8216;,&#8217;&#8221;, addslashes($related_tags)).&#8221;&#8216;&#8221;; これでタグが１つでもかぶるものを関連リンクとして拾い上げてくれる。 でも１つしかかぶってない記事は関連が低いものが多いので、テンプレートの表示部に $template/story_center.tpl ｛if {$related_story[nr].relevance} &#62; 1｝ &#60;li&#62;&#60;a href=&#8221;{$related_title_url}{$related_story[nr].link_title_url}&#8221;&#62;{$related_story[nr].link_title}&#60;/a&#62;&#60;/li&#62; ｛/fi} と、追加修正。]]></description>
		<wfw:commentRss>http://blog.toor.jp/2008/04/23/20080423_154642/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>gelato にタグ機能など追加。</title>
		<link>http://blog.toor.jp/2008/02/07/gelato_custom/</link>
		<comments>http://blog.toor.jp/2008/02/07/gelato_custom/#comments</comments>
		<pubDate>Thu, 07 Feb 2008 05:51:51 +0000</pubDate>
		<dc:creator>ikeda</dc:creator>
				<category><![CDATA[gelato]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[ソフトウェア]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[動画]]></category>
		<category><![CDATA[画像]]></category>

		<guid isPermaLink="false">http://blog.toor.jp/2008/02/07/gelato_custom/</guid>
		<description><![CDATA[tumblelogというブログ形式があります。 通常のブログはサイドバーやカテゴリ・アーカイブなど多種多様な機能を持ち、日記なりの独自のコンテンツを発信しています。書かれる内容は完全にオリジナルであるか、何か／どこかの紹介であったとしてもブロガーの独自の目線・意見が追記されますよね。 tumblelogはそういった通常のブログとは少し異なります。あえて言うなら、オンライン上で発見したアイテムや自分／他人の意見などを収集して公開するための「物置」のようなものです。 もっと手軽に、簡単に、シンプルなブログ、とも言えます。 TwitterやHaruに代表される一行ブログもシンプルなブログですが、記述される内容が テキスト 画像 動画 音声 引用 URL と、予めカテゴライズされているのが特徴です。 というとdel.icio.usやはてなブックマークのようなソーシャルブックマークか、とも言えますが、ちょっと違います。 言葉で言うのは難しいんですが、、、、そうだ、サンプル作ればいいんだ。 ということで、tumblelog本家 tumblr.com に一つ tumblelog を作ってみました。 どうでしょう？イメージ掴めますか？ 本題は続きにて。 この、tumblelogのオープンソース実装の中にgelatoというものがあります。 テストした中でこれが一番日本語との親和性が高かったように思えるんですが、そのままブログとして使うにはちょっと機能が不十分です。 ということで、とりあえず動くバージョンではありますが 記事へのタグ付加 タグ・クラウド タグからの記事検索 若干の日本語化 勝手サイドバー などの機能追加を行いました。 PHP+MySQLで動作します。 開発は Apache 2.2.4 + PHP 4.4.7 ＋ MySQL 5.1.22 で行いました。 インストールは簡単。 アーカイブをダウンロードし、適当な場所に解凍してください。 gelatoで使用するデータベースを作成します。既存のデータベースでも構いませんが、アクセスユーザとパーミッションを確認してください。キャラクタセットはUTF8が無難です。 config-sample.php を config.php にリネームします。 config.php をエディタで開き、データベースの情報(サーバ・データベース名・アカウント等)を修正・保存してください。 展開されたファイル群を、Webサーバの公開したいディレクトリに移動させてください。 ブラウザで install.php にアクセスします。www.testsite.com というサーバの [...]]]></description>
		<wfw:commentRss>http://blog.toor.jp/2008/02/07/gelato_custom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHPという言語。</title>
		<link>http://blog.toor.jp/2008/01/30/20080130_153942140/</link>
		<comments>http://blog.toor.jp/2008/01/30/20080130_153942140/#comments</comments>
		<pubDate>Wed, 30 Jan 2008 06:32:16 +0000</pubDate>
		<dc:creator>ikeda</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[戯言]]></category>
		<category><![CDATA[セキュリティ]]></category>
		<category><![CDATA[動画]]></category>

		<guid isPermaLink="false">http://blog.toor.jp/2008/01/30/20080130_153942140/</guid>
		<description><![CDATA[今までいくつかのプログラム言語を使ってきました。 古くはBASIC、FORTRAN、COBOLという古典に出てきそうな勢いの(あ、これらの現役プログラマ諸氏、失礼)言語も、C言語・Perl、今だとJavaScriptだのActionScriptだのありますね。 今、僕がメインで開発に使っている言語はPHPという言語です。 このPHP、Yahoo! Japanやニコニコ動画、楽天などのWebシステムでも採用されている言語なんですが、しばしば脆弱性が発見され修正されています。 確かに自分で書いていて「？」という部分はありますが、立派なプログラム言語だと認識してます。 んが。 時折PHPに関する論争、、、主に「PHPはダメ」という火種から燃え上がる論争が起こるわけです。 なんかちょっと前にそんなエントリを書いた気がするんですが、今回また炎上しているようです。 火種はどうやら「あの」Rubyの産みの親である「まつもとゆきひろ」氏のブログエントリ。 特に「PHPは初心者に学びやすい(と言われていることが問題である)」という部分に共感する。 PHPは初心者に簡単かもしれないが、初心者による手を抜いたWebアプリケーションは PHPが作られた当初はともかく、現代では害悪ではないだろうか。 まつもと氏自身がPHPをどう思おうが、どこに共感しようが、それは自由です。 でも、まつもと氏くらいの方がそこで「PHP＝害悪」みたいな断言しちまうのはいかがなものか。 Rubyを作った男、Rubyの神みたいな人ですよ。 その神が「PHPはイケてない言語」と神勅を下したら、 「やっぱPHPダメじゃん」＝「PHP使ってるやつダメじゃん」＝「PHPで書かれたサイト危険じゃん」 って風に、簡単に拡大解釈されていきませんか？？ (本人が思っていなくても)権威のある人(法人含)の言葉は、おそらく本人が思っている以上に深く突き刺さったり、予想外の拡大解釈が広まったりしていくわけで、、、、そう考えるとまつもと氏や有名な方々も大変だなぁ、とか思ってみたり。 断言といえば、これは群を抜いてひどい。 IPAという独立行政法人があります。 go.jpドメインを見れば分かるとおり、立派な政府機関です。 そのIPAに「セキュリティ・センター」というコーナーがあり、中に「セキュアプログラミング講座」なるコンテンツがあります。その「Webアプリケーション編・総論 -より良いWebアプリケーション設計のヒント」に、こんな記述があります。 ここで述べるのは、脆弱性が生まれにくいWebアプリケーションを構築するために設計段階、あるいはそれ以前の段階で考慮しておくとよい事項の例である。 開発基盤選定における考慮事項の例(1) プログラミング言語の選択 1) 例えば、PHPを避ける 短時日で素早くサイトを立ち上げることのみに着目するのであれば、PHPは悪い処理系ではない。しかし、これまで多くの脆弱性を生んできた経緯があり、改善が進んでいるとはいえまだ十分堅固とは言えない。 ・・・・・・・・・・・・なんだそりゃ。 「悪い処理系ではない」と言いつつも、「これまで多くの脆弱性を生んできた経緯があり」「まだ十分堅固とは言えない」と締めています。 だったら、 まず避けるべきなのはWindowsとIEじゃねーの？ と思ってしまうわけですよ(笑 試しにこのページのURLを、職場のチームメンバー(Web担当チームです)に送ったところ、、 PHPって危ないの？ PHP避けたほうがいいんじゃない？ という声が返ってきました。彼／彼女達はプログラマではなくデザイナーやディレクターなので、システム関連に詳しいというわけではないんですが、逆に言うと 政府系機関がこんな風に断言したら素人は完全に信じてしまう のではないですか？？ Yahoo! Japan やニコニコ動画のほか、PHPで書かれた素晴らしいサイトは数多くあります。 それらのサイト全てを脆弱で危険だ、と言ってるのと同じことなのでは？？ ・・・・・と、まぁここまでつらつら書いてきてふと思ったのが PHP否定派とPHP否定に反論してる方々のスタンスが若干違うような。 否定してる方々は「○○の戻り値がうんぬんかんぬんなのにここではどうのこうの・・」と言語設計レベルとかの点からPHPをダメ言語としてるように見受けられます。 まぁ、プログラムを趣味の範囲で、少人数でこつこつ書いてるならとことんこだわっていいんじゃない？と思いますが、、、、 反論してる方々。もちろん感情的になってる方もいらっしゃいますが(笑 「厳密な書き方しなくても動いてくれるPHPが楽」「どこででも動くし」「メジャー言語だから引継ぎや保守が楽」 等々、どちらかというと開発の現場というスタンスな方が多いような気がします。 俺も実際に最前線で開発してますので、やっぱり納期が短いとか予算が・・ってなると 「Java」で行きましょう [...]]]></description>
		<wfw:commentRss>http://blog.toor.jp/2008/01/30/20080130_153942140/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP使いには痛いのや低レベル開発者が多い？？</title>
		<link>http://blog.toor.jp/2007/10/19/phpeeiaeiaaayiyuyeeoa/</link>
		<comments>http://blog.toor.jp/2007/10/19/phpeeiaeiaaayiyuyeeoa/#comments</comments>
		<pubDate>Fri, 19 Oct 2007 02:23:00 +0000</pubDate>
		<dc:creator>ikeda</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[戯言]]></category>
		<category><![CDATA[痛い]]></category>
		<category><![CDATA[これは痛い]]></category>
		<category><![CDATA[テレビ]]></category>

		<guid isPermaLink="false">http://blog.toor.jp/?p=89</guid>
		<description><![CDATA[話の発端はPHPSPOTのエントリなんだけども、そこではなく。 エンジニアは緊張感を持って情報発信せよ &#8211; ホームページも作れない人のネタ帳 このエントリに、 もちろんPHPに限らないんだが痛い奴は何故かPHPに多い。 さらに、このエントリのコメントで「とおりすがり」という方は ＰＨＰに低レベル開発者が多いのは事実なんだけど、 これは現在PHPをメイン開発言語にしている人間としては甚だしく不愉快。 確かに俺は高レベル開発者じゃないと思いますが。もしかしたら痛い奴なのかもしれないけども。 「PHPに限らない」と前置きで逃げを打っておいて、「何故かPHPに多い」と断言する人や 「事実なんだけど」とデータも出さずに(そもそもどうやって比較するんだ？)事実と言い切る人は どんなご立派な言語でどんな高レベルな開発を行ってるんだろう？？？ 個人的には、外部、、、つまりテレビや本・ネット・ブログエントリ等で得た情報はあくまで「情報」であって、「知識」ではないと思う。 もちろん嘘や間違いを垂れ流ししていい、というわけではないけれども、ブロガーはブロガーであってジャーナリストではない。 本来、真実のみを伝えるはずのジャーナリストが「大人の都合」(笑)で情報を伏せたり操作しているのは常識、という現代、読むほうも目を養うべきだ。 特に技術屋であれば、得た技術情報を自分なりに解析・検証して使えるか使えないか、どう修正してどう応用するかを判断すべきでは？ 間違った技術情報を垂れ流す奴は即刻ブログを辞めるべき この言葉は 俺は自分で正誤の判断できないからアンタは自分のブログで正しいことを書け と言ってるように思える。 ということで、誰も見てないブログの中心でこう叫びます(古) 情報を自分で判断できない奴は即刻エンジニアを辞めるべき ちなみにPHPSPOTはRSS巡回してます。今後もチェックし続けます。]]></description>
		<wfw:commentRss>http://blog.toor.jp/2007/10/19/phpeeiaeiaaayiyuyeeoa/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FlickrRSS プラグインでランダム表示</title>
		<link>http://blog.toor.jp/2006/12/11/flickrrss-yyeyyyocyeyoyayae/</link>
		<comments>http://blog.toor.jp/2006/12/11/flickrrss-yyeyyyocyeyoyayae/#comments</comments>
		<pubDate>Mon, 11 Dec 2006 02:49:08 +0000</pubDate>
		<dc:creator>ikeda</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[TIPS]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Flickr]]></category>
		<category><![CDATA[画像]]></category>

		<guid isPermaLink="false">http://blog.toor.jp/?p=44</guid>
		<description><![CDATA[っていう程の改造でもないんですけど(^^; 右メニューの下のほうに、Flickr の自分のアルバムから２、３枚の写真を表示していますが、 これは FlickrRSSプラグイン というWordPress Pluginを使用しています。 先日プラグインのアップデートを行ったんですが、その途端に画像表示されなくなってしまいました。調べると、Flickrから取得したフィードの内容がXMLではなくシリアライズされた配列みたいな感じになっているため、RSS解析がコケているのが原因でした。 &#160; 試しにそのままunserializeしてみましたが復元できず。 てことで、まずflickrAPIの呼び出し部をいじってみます。 &#160; flickrrss.php 40〜42行目辺りに、FlickrAPIのURLを作っている部分があります。 このURLの最後、format=rss_200という部分をformat=rssに変更すると、通常のRDFでフィード取得できるようになりました(^^)v ちなみに atom はダメです(その後のデータ取得がコケます)。 さて、いじりついでにもう一つ。 flickrRSS はその名の通り、FlickrからのRSSフィードに従って画像を引っ張ってきます。頻繁に画像をアップロードしている人であればいいのですが、僕のような駆け出しアマチュアカメラマン見習だと滅多にアップロードできない為、いつ見ても同じ画像ばかり表示されてしまいます。 なんとかこれをランダム表示にしたいところです。 ということで、Let&#8217;s Hacking！（そんな大仰なもんでもない） コードを読むと、先ほどの修正(?)のすぐ下、 46行目辺りに fetch_rss() があります。ここでRSSを取得しているわけですね。そしてその直後、array_slice でもって必要な数(管理画面で設定した画像数)分だけのRSSアイテムをフィード先頭から切り出しています。 むむ。てことは、この $rss-&#62;items 配列の中から適当にアイテムを拾い出せば、ランダム表示できるんじゃ？ 早速やってみましょう。 PHPのリファレンスを見ると、、おおっ！array_rand()という、まさにぴったりの関数があるではないですか！ これでフィードデータ配列の中からランダムなデータを引っ張り出せます！ 起こしたコードはこちら。 実際に表示させてみると、、、、おお！リロードする度に違う画像が表示されます！ 取得するRSSフィードのアイテム数に上限がある為古い画像は対象になりませんが、これはおそらくFlickrAPIを叩く際のパラメータで変更できるはずですね。 あとは管理画面からランダム表示／通常表示の切り替えや、対象とする画像数などを設定できればカンペキかも(^^) 本家もサポートしてくれないかなー。。。。(パッチを送れ？ｗ）]]></description>
		<wfw:commentRss>http://blog.toor.jp/2006/12/11/flickrrss-yyeyyyocyeyoyayae/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

