<?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>色んなプログラムに挑戦状</title>
	<atom:link href="http://iklv.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://iklv.net</link>
	<description>PHP,Perl,VB,JavaScriptなど多岐に渡って挑戦していくブログです。</description>
	<lastBuildDate>Mon, 31 May 2010 13:21:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>PHPのフォームの入力チェックを簡潔化する！</title>
		<link>http://iklv.net/2010/05/31/php%e3%81%ae%e3%83%95%e3%82%a9%e3%83%bc%e3%83%a0%e3%81%ae%e5%85%a5%e5%8a%9b%e3%83%81%e3%82%a7%e3%83%83%e3%82%af%e3%82%92%e7%b0%a1%e6%bd%94%e5%8c%96%e3%81%99%e3%82%8b%ef%bc%81/</link>
		<comments>http://iklv.net/2010/05/31/php%e3%81%ae%e3%83%95%e3%82%a9%e3%83%bc%e3%83%a0%e3%81%ae%e5%85%a5%e5%8a%9b%e3%83%81%e3%82%a7%e3%83%83%e3%82%af%e3%82%92%e7%b0%a1%e6%bd%94%e5%8c%96%e3%81%99%e3%82%8b%ef%bc%81/#comments</comments>
		<pubDate>Mon, 31 May 2010 13:18:07 +0000</pubDate>
		<dc:creator>isam</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://iklv.net/?p=228</guid>
		<description><![CDATA[どうも、isamです。
前回のサニタイズに引き続き、今回はフォームの入力値の入力チェックを簡潔化する関数を紹介します。
使い方はブロックを参照！
[php]
/**
 * フォームの値をルールに従い走査しエラーがあった場合、エラーキー配列を返す
 *
 * 
 * $key_func = array(
 *     'id' => array("is_numeric" => array("%%_val_%%", array('error' => "数字以外の文字が入力されています"))),
 *     'pid' => array("is_numeric" => array("%%_val_%%", array('error' => "数字以外の文字が入力されています")))
 * );
 *
 * $error = queryValidateCheck($_REQUEST, $key_func);
 * 
 *
 * @param   $request    [...]]]></description>
		<wfw:commentRss>http://iklv.net/2010/05/31/php%e3%81%ae%e3%83%95%e3%82%a9%e3%83%bc%e3%83%a0%e3%81%ae%e5%85%a5%e5%8a%9b%e3%83%81%e3%82%a7%e3%83%83%e3%82%af%e3%82%92%e7%b0%a1%e6%bd%94%e5%8c%96%e3%81%99%e3%82%8b%ef%bc%81/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHPでサニタイズする関数！</title>
		<link>http://iklv.net/2010/05/24/php%e3%81%a7%e3%82%b5%e3%83%8b%e3%82%bf%e3%82%a4%e3%82%ba%e3%81%99%e3%82%8b%e9%96%a2%e6%95%b0%ef%bc%81/</link>
		<comments>http://iklv.net/2010/05/24/php%e3%81%a7%e3%82%b5%e3%83%8b%e3%82%bf%e3%82%a4%e3%82%ba%e3%81%99%e3%82%8b%e9%96%a2%e6%95%b0%ef%bc%81/#comments</comments>
		<pubDate>Mon, 24 May 2010 05:48:48 +0000</pubDate>
		<dc:creator>isam</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://iklv.net/?p=221</guid>
		<description><![CDATA[こんにちわ、isamです。
今日はフォームの値をサニタイズする自作関数の紹介！
使い方はブロックを参照！
[php]
	/**
	 * 配列を再帰的にサニタイズフィルタリング
	 *
	 * 
	 * $filter_func = array(
	 *	 'trim' => array("%%_val_%%"),
	 *	 'htmlspecialchars' => array("%%_val_%%", ENTQUTOES),
	 *	 'str_replace' => array("\0", "", "%%_val_%%")
	 * );
	 *
	 * $key_func = array(
	 *     'id' => array("intval" => array("%%_val_%%")),
	 *     'pid' => array("intval" => array("%%_val_%%"))
	 * );
	 *
	 [...]]]></description>
		<wfw:commentRss>http://iklv.net/2010/05/24/php%e3%81%a7%e3%82%b5%e3%83%8b%e3%82%bf%e3%82%a4%e3%82%ba%e3%81%99%e3%82%8b%e9%96%a2%e6%95%b0%ef%bc%81/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>自分用メモ PHPインストール</title>
		<link>http://iklv.net/2010/05/23/%e8%87%aa%e5%88%86%e7%94%a8%e3%83%a1%e3%83%a2-php%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab/</link>
		<comments>http://iklv.net/2010/05/23/%e8%87%aa%e5%88%86%e7%94%a8%e3%83%a1%e3%83%a2-php%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab/#comments</comments>
		<pubDate>Sat, 22 May 2010 16:16:37 +0000</pubDate>
		<dc:creator>isam</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://iklv.net/?p=219</guid>
		<description><![CDATA[こんにちわ！isamです。
今日のエントリは忘れっぽい自分へのメモです。
PHPインストール(ソース)編(Fedora, CentOS)
PHPを落としてきていると仮定して話を進めます。
まず先にPHPのインストールと実行に必要な各種ライブラリをyumで落とします。
[]# yum -y install flex libxml2-devel
[]# yum -y install zlib-devel libpng-devel
[]# yum -y install libjpeg-devel
PHPのインストールを開始します。
[/usr/local/src/php-5.x.x]# ./configure &#8211;prefix=DIR \
> &#8211;enable-mbstring &#8211;enable-ftp \
> &#8211;with-apxs2=DIR/bin/apxs \
> &#8211;with-gd &#8211;with-zlib &#8211;with-jpeg-dir \
> &#8211;with-pgsql=DIR &#8211;with-mysql=DIR \
> &#8211;with-pear=DIR
[/usr/local/src/php-5.x.x]# make &#038;&#038; make install
以上でPHPのインストールは完了！
]]></description>
		<wfw:commentRss>http://iklv.net/2010/05/23/%e8%87%aa%e5%88%86%e7%94%a8%e3%83%a1%e3%83%a2-php%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[JS]ユーティリティライブラリを作ってみる！</title>
		<link>http://iklv.net/2010/05/01/js%e3%83%a6%e3%83%bc%e3%83%86%e3%82%a3%e3%83%aa%e3%83%86%e3%82%a3%e3%83%a9%e3%82%a4%e3%83%96%e3%83%a9%e3%83%aa%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b%ef%bc%81/</link>
		<comments>http://iklv.net/2010/05/01/js%e3%83%a6%e3%83%bc%e3%83%86%e3%82%a3%e3%83%aa%e3%83%86%e3%82%a3%e3%83%a9%e3%82%a4%e3%83%96%e3%83%a9%e3%83%aa%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b%ef%bc%81/#comments</comments>
		<pubDate>Sat, 01 May 2010 01:40:32 +0000</pubDate>
		<dc:creator>isam</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://iklv.net/?p=217</guid>
		<description><![CDATA[どうもisamです。
今日はjavascriptな気分って言う事で自分用のユーティリティライブラリを作ってみます。
いい悪いは取り敢えず別にして簡潔にかけるものというテーマで作っていきます。
ではコード！
[javascript]
var $ = {
	id : function(id) {
		return document.getElementById(id);
	},
	name : function(name) {
		return document.getElementsByName(name);
	},
	tag : function(tag) {
		return document.getElementsByTagName(tag);
	},
	event : function(obj, func, type) {
		if (obj.addEventListener) {
			//Netscape等
			obj.addEventListener(type, func, false);
		} else if (obj.attachEvent) {
			//IE
			obj.attachEvent(&#8216;on&#8217;+type, func);
		}
	},
	create : function(tag, obj, text) {
		var t = document.createElement(tag);
		for(var o in obj) {
			t.setAttribute(o, obj[o]);
		}
		if(text != &#8220;&#8221;) {
			t.appendChild(document.createTextNode(text));
		}
		return t;
	},
	add : function(obj, child) {
		obj.appendChild(child);
	}
}
[/javascript]
使い方はこんな感じ
[html]


		テスト①
		テスト②
		テスト③
		テスト④
		テスト⑤
		テスト⑥
	



[/html]
[javascript]

//プルダウンの4番目を選択する
function funcs() {
   [...]]]></description>
		<wfw:commentRss>http://iklv.net/2010/05/01/js%e3%83%a6%e3%83%bc%e3%83%86%e3%82%a3%e3%83%aa%e3%83%86%e3%82%a3%e3%83%a9%e3%82%a4%e3%83%96%e3%83%a9%e3%83%aa%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b%ef%bc%81/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHPネタ！Formの入力処理！</title>
		<link>http://iklv.net/2010/04/29/php%e3%83%8d%e3%82%bf%ef%bc%81form%e3%81%ae%e5%85%a5%e5%8a%9b%e5%87%a6%e7%90%86%ef%bc%81/</link>
		<comments>http://iklv.net/2010/04/29/php%e3%83%8d%e3%82%bf%ef%bc%81form%e3%81%ae%e5%85%a5%e5%8a%9b%e5%87%a6%e7%90%86%ef%bc%81/#comments</comments>
		<pubDate>Wed, 28 Apr 2010 16:45:49 +0000</pubDate>
		<dc:creator>isam</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://iklv.net/?p=187</guid>
		<description><![CDATA[久々の更新！
どうもisamです。仕事場が変わって忙しくしておりました。。。
やっと落ち着いてきたのでできるだけ更新するように頑張ります。
それでは今日はPHPネタでいこうと思います。
今日のお題はこちら！
■Formの処理を楽にする関数を作成してみよう！
PHPだと$_GETや$_POSTや$_REQUESTのグローバル変数からFormの値を取得します。
その際、一旦バリデートして変数に入れたりすると思いますが、毎回trimだhtmlspecialcharsだと連続で書いたりするのは面倒だと思います。
また面倒くさくてバリデートなしでグローバル変数をそのまま使ったりなどあるかと思います。
そんな時に関数を作っておくと楽チンになります。
それでは早速コードにいってみましょう！
[php]
&#60;?php
/**
&#160;*&#160;Formの値をバリデートして取得する
&#160;*
&#160;*&#160;@param&#160;&#160;string&#160;$key&#160;&#160;取得したいキー&#160;&#160;&#160;
&#160;*&#160;@param&#160;&#160;array&#160;&#160;$func&#160;適用したい関数の関数名配列
&#160;*&#160;@param&#160;&#160;string&#160;$type&#160;どのグローバル変数を使うか&#160;(g=$_GET:p=$_POST:r=$_REQUEST)
&#160;*&#160;@return&#160;string&#160;$val&#160;&#160;キーの値
&#160;*/
function&#160;param($key,&#160;$func,&#160;$type)&#160;{
&#160;&#160;&#160;&#160;switch($type)&#160;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;case&#160;&#34;g&#34;&#160;:
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if(isset($_GET[$key]))&#160;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$val&#160;=&#160;$_GET[$key];
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}else{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return&#160;&#39;&#39;;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;break;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;case&#160;&#34;p&#34;&#160;:
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if(isset($_POST))&#160;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$val&#160;=&#160;$_POST[$key];
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}else{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return&#160;&#39;&#39;;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;break;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;case&#160;&#34;r&#34;&#160;:
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;default:
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if(isset($_REQUEST[$key]))&#160;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$val&#160;=&#160;$_REQUEST[$key];
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}else{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return&#160;&#39;&#39;;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;break;
&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;if(is_array($func))&#160;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;foreach($func&#160;as&#160;$function)&#160;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if(function_exists($function))&#160;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$val&#160;=&#160;$function($val);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;}else{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if(function_exists($function))&#160;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$val&#160;=&#160;$function($val);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;return&#160;$val;
}
[/php]
使い方は至って簡単で取得したいキーとバリデート用関数名とグローバル変数の種類を指定するだけ！
[php]
&#60;?php
//URLのクエリが?str=&#60;html&#62;&#60;body&#62;&#60;/body&#62;&#60;/html&#62;%0D%0Aだった場合で
//エスケープと末尾の空白を削除したい場合
$str&#160;=&#160;param(&#34;str&#34;,&#160;array(&#34;trim&#34;,&#160;&#34;htmlspecialchars&#34;,&#160;&#34;g&#34;));
echo&#160;$str;
//ouput:
//&#38;lt;html&#38;gt;&#38;lt;body&#38;gt;&#38;lt;/body&#38;gt;&#38;lt;/html&#38;gt;
[/php]
ユーザ定義関数も指定できますので色んなバリデートが可能です。
これを利用してセキュリティを強くしましょう！
ではまた！
]]></description>
		<wfw:commentRss>http://iklv.net/2010/04/29/php%e3%83%8d%e3%82%bf%ef%bc%81form%e3%81%ae%e5%85%a5%e5%8a%9b%e5%87%a6%e7%90%86%ef%bc%81/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>VBの例外処理について！</title>
		<link>http://iklv.net/2010/02/23/vb%e3%81%ae%e4%be%8b%e5%a4%96%e5%87%a6%e7%90%86%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6%ef%bc%81/</link>
		<comments>http://iklv.net/2010/02/23/vb%e3%81%ae%e4%be%8b%e5%a4%96%e5%87%a6%e7%90%86%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6%ef%bc%81/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 06:17:44 +0000</pubDate>
		<dc:creator>isam</dc:creator>
				<category><![CDATA[VB]]></category>

		<guid isPermaLink="false">http://iklv.net/?p=184</guid>
		<description><![CDATA[どうも、お久しぶりのisamです。
今日は今仕事でやっているVBのお話です。
今までPHPとかPerlで例外処理とかあんましていないんですが(やれよっ！)、VBをやるようになって
かなり使うので自分用にメモ。
ファイルを開く時にファイルがない場合やメモリ不足の時には例外がスローされます。
ファイルがない場合はFileNotFoundException
メモリ不足の場合はOutOfMemoryException
それ意外に例外にもありますが、割愛します。
これらの例外を捕捉するために
Try～Catch～Finally～End Try
Try～Using～End Using～Catch～End Try
構文を使います。
まずTry～Catch～Finally～End Tryの例
[vb]
Imports System
Imports System.IO
Imports System.Text
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, _
                              ByVal e As System.EventArgs) _
  [...]]]></description>
		<wfw:commentRss>http://iklv.net/2010/02/23/vb%e3%81%ae%e4%be%8b%e5%a4%96%e5%87%a6%e7%90%86%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6%ef%bc%81/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sticky notesに編集機能追加してみた！</title>
		<link>http://iklv.net/2010/01/24/sticky-notes%e3%81%ab%e7%b7%a8%e9%9b%86%e6%a9%9f%e8%83%bd%e8%bf%bd%e5%8a%a0%e3%81%97%e3%81%a6%e3%81%bf%e3%81%9f%ef%bc%81/</link>
		<comments>http://iklv.net/2010/01/24/sticky-notes%e3%81%ab%e7%b7%a8%e9%9b%86%e6%a9%9f%e8%83%bd%e8%bf%bd%e5%8a%a0%e3%81%97%e3%81%a6%e3%81%bf%e3%81%9f%ef%bc%81/#comments</comments>
		<pubDate>Sun, 24 Jan 2010 13:25:51 +0000</pubDate>
		<dc:creator>isam</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://iklv.net/?p=182</guid>
		<description><![CDATA[どうも、isamです。
PHPとjqueryを使ったwebノート「Sticky notes」をダウンロードしてみました。
次のURLよりzipファイルがダウンロードできるのでダウンロードして解凍してFTPでサーバの任意の箇所にアップロードしてください。
ダウンロードURL:本家 http://demo.tutorialzine.com/2010/01/sticky-notes-ajax-php-jquery/demo.zip
編集機能追加バージョンURL:http://php.iklv.net/note/demo.zip
設置が終わったらデータベースを作成してdemoフォルダに入っているtable.sqlのSQL文を使ってデータベースにテーブルを作成してください。文字コードはUTF-８で。
あとはconnect.phpにデータベースの情報をいれて再アップし直せば使えます。
編集機能追加バージョンはノートをダブルクリックすると編集できるようになっています。あとは編集して更新ボタンを押せばOKです。
本家のscript.jsとadd_note.htmlを変更しています。また編集機能用のサーバ側のファイル、update_post.phpを追加しています。
編集機能がついたdemoはこちらから
マニュアルは本家のを(英語)みてみてください。
時間があったらデリートも実装してみようかな！
ではまた！
]]></description>
		<wfw:commentRss>http://iklv.net/2010/01/24/sticky-notes%e3%81%ab%e7%b7%a8%e9%9b%86%e6%a9%9f%e8%83%bd%e8%bf%bd%e5%8a%a0%e3%81%97%e3%81%a6%e3%81%bf%e3%81%9f%ef%bc%81/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Smarty用プラグイン2つ公開！</title>
		<link>http://iklv.net/2010/01/20/smarty%e7%94%a8%e3%83%97%e3%83%a9%e3%82%b0%e3%82%a4%e3%83%b32%e3%81%a4%e5%85%ac%e9%96%8b%ef%bc%81/</link>
		<comments>http://iklv.net/2010/01/20/smarty%e7%94%a8%e3%83%97%e3%83%a9%e3%82%b0%e3%82%a4%e3%83%b32%e3%81%a4%e5%85%ac%e9%96%8b%ef%bc%81/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 11:05:06 +0000</pubDate>
		<dc:creator>isam</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://iklv.net/?p=180</guid>
		<description><![CDATA[お久しぶりのisamです。
今日はSmarty用のテンプレート関数プラグインを紹介します。
今回はここにコードはのせませんが下記リンクよりコードを公開していますのでよかったら見てみてください。
アップデートは随時していきます。よろしければ感想や意見頂けるとありがたいです。
SmartyからTwitterの自分のお友達のタイムラインを簡単に取得するプラグイン
Google Code for twitter-by-php
SmartyからTwitterの自分のタイムラインを簡単に取得するプラグイン
Google Code for twitter-by-php
各プラグインの使い方はこちらに書いています。
ではまた！
]]></description>
		<wfw:commentRss>http://iklv.net/2010/01/20/smarty%e7%94%a8%e3%83%97%e3%83%a9%e3%82%b0%e3%82%a4%e3%83%b32%e3%81%a4%e5%85%ac%e9%96%8b%ef%bc%81/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>久々の投稿2！</title>
		<link>http://iklv.net/2009/12/22/%e4%b9%85%e3%80%85%e3%81%ae%e6%8a%95%e7%a8%bf2%ef%bc%81/</link>
		<comments>http://iklv.net/2009/12/22/%e4%b9%85%e3%80%85%e3%81%ae%e6%8a%95%e7%a8%bf2%ef%bc%81/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 08:43:33 +0000</pubDate>
		<dc:creator>isam</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://iklv.net/?p=178</guid>
		<description><![CDATA[また長らく間があがってしまいましたが、外国為替のレートをつぶやくtwitter_botを作って見たのでご紹介します。
followは下記より。
follow by @currency_rater
wordpressのプラグインのCurrencyTickerを解析して得たAPIのURLをcurlでたたきに行って
結果をtwitterのAPIを介してつぶやきます。為替APIの都合上15分間隔更新にしています。
※一分おきに取得しに行くとアクセス拒否されるのでもしCRONなど動かす場合は最低でも15分間隔にしてください。
以下コードです。
[php]
#!/usr/bin/php
&#60;?php
$url&#160;=&#160;&#34;http://www.webservicex.net/CurrencyConvertor.asmx/ConversionRate?FromCurrency=%s&#038;ToCurrency=%s&#34;;
$fromCode&#160;=&#160;array(&#34;USD&#34;,&#160;&#34;EUR&#34;,&#160;&#34;CNY&#34;,&#160;&#34;KRW&#34;,&#160;&#34;TWD&#34;);
$toCode&#160;=&#160;&#34;JPY&#34;;
$running=null;
$ch&#160;=&#160;array();
$chUrl&#160;=&#160;array();
$chBody&#160;=&#160;array();
$mh&#160;=&#160;curl_multi_init();
$push&#160;=&#160;array();
foreach($fromCode&#160;as&#160;$code)&#160;{
&#160;&#160;&#160;&#160;$chUrl[$code]&#160;=&#160;sprintf($url,&#160;$code,&#160;$toCode);
&#160;&#160;&#160;&#160;$ch[$code]&#160;=&#160;curl_init(trim($chUrl[$code]));
&#160;&#160;&#160;&#160;curl_setopt($ch[$code],&#160;CURLOPT_RETURNTRANSFER,&#160;TRUE);
&#160;&#160;&#160;&#160;curl_setopt($ch[$code],&#160;CURLOPT_HTTPGET,&#160;TRUE);
&#160;&#160;&#160;&#160;curl_setopt($ch[$code],&#160;CURLOPT_TIMEOUT,&#160;10);
&#160;&#160;&#160;&#160;curl_multi_add_handle($mh,$ch[$code]);
}
do&#160;{
&#160;&#160;&#160;&#160;curl_multi_exec($mh,$running);
}&#160;while&#160;($running&#160;&#62;&#160;0);
foreach($fromCode&#160;as&#160;$code)&#160;{
&#160;&#160;&#160;&#160;$chBody[$code]&#160;&#160;=&#160;trim(strip_tags(curl_multi_getcontent($ch[$code])));
&#160;&#160;&#160;&#160;curl_multi_remove_handle($mh,$ch[$code]);
&#160;&#160;&#160;&#160;curl_close($ch[$code]);
}
curl_multi_close($mh);
foreach($chBody&#160;as&#160;$key&#160;=&#62;&#160;$val)&#160;{
&#160;&#160;&#160;&#160;$code&#160;=&#160;$key;
&#160;&#160;&#160;&#160;$rate&#160;=&#160;strlen($val)&#160;&#60;&#160;1&#160;?&#160;&#34;&#34;&#160;:&#160;(float)($val);
&#160;&#160;&#160;&#160;if($rate&#160;==&#160;&#34;&#34;)&#160;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$push[$key]&#160;=&#160;&#34;-&#34;;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;continue;
&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;switch($code)&#160;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;case&#160;&#34;KRW&#34;&#160;:
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$push[$key]&#160;=&#160;round($rate,&#160;4);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;break;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;default&#160;:
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$push[$key]&#160;=&#160;round($rate,2);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;break;
&#160;&#160;&#160;&#160;}
}
$data&#160;=&#160;&#34;&#34;;
$update_time&#160;=&#160;date(&#34;Y-m-d&#160;H:i:s&#34;);
foreach($push&#160;as&#160;$key&#160;=&#62;&#160;$val)&#160;{
&#160;&#160;&#160;&#160;$data&#160;.=&#160;&#34;JPY&#160;&#62;&#160;&#34;.&#160;$key&#160;.&#34;&#160;:&#160;&#34;.&#160;$val&#160;.&#160;&#34;&#160;&#34;;
}
$data&#160;.=&#160;&#34;&#160;generate_time&#160;=&#62;&#160;&#34;&#160;.&#160;$update_time;
$url&#160;=&#160;&#34;http://twitter.com/statuses/update.xml?&#34;;
$username&#160;=&#160;&#34;username&#34;;
$password&#160;=&#160;&#34;password&#34;;
$params&#160;=&#160;&#34;status=&#34;.&#160;rawurlencode($data.&#34;&#160;#followmeJP&#34;);
$result&#160;=&#160;file_get_contents($url.$params&#160;,&#160;false,&#160;stream_context_create(array(
&#160;&#160;&#160;&#160;&#34;http&#34;&#160;=&#62;&#160;array(
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#34;method&#34;&#160;=&#62;&#160;&#34;POST&#34;,
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#34;header&#34;&#160;=&#62;&#160;&#34;Authorization:&#160;Basic&#160;&#34;.&#160;base64_encode($username.&#160;&#34;:&#34;.&#160;$password)
&#160;&#160;&#160;&#160;)
)));
[/php]
自分用に作成した場合は、$data&#160;=&#160;&#34;&#34;;以下を修正してください。
]]></description>
		<wfw:commentRss>http://iklv.net/2009/12/22/%e4%b9%85%e3%80%85%e3%81%ae%e6%8a%95%e7%a8%bf2%ef%bc%81/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>久々の更新！</title>
		<link>http://iklv.net/2009/11/07/%e4%b9%85%e3%80%85%e3%81%ae%e6%9b%b4%e6%96%b0%ef%bc%81-2/</link>
		<comments>http://iklv.net/2009/11/07/%e4%b9%85%e3%80%85%e3%81%ae%e6%9b%b4%e6%96%b0%ef%bc%81-2/#comments</comments>
		<pubDate>Sat, 07 Nov 2009 12:52:32 +0000</pubDate>
		<dc:creator>isam</dc:creator>
				<category><![CDATA[お知らせ]]></category>
		<category><![CDATA[info]]></category>

		<guid isPermaLink="false">http://iklv.net/?p=176</guid>
		<description><![CDATA[こんばんわ。isamです。
長らく更新できませんでした。
仕事で外国為替の両替システムを作っていていっぱいいっぱいになっていました。
twitterにも浮気をしていました。
もし良かったらフォローしてください。笑
_isam_
次回は外貨為替のレートを表示するスクリプトを紹介します。
wordpressのプラグインでもあるんですが(wp currency ticker)単体で動くものを紹介します。
またダウンロードできるようにしておきます。
それではまた！
]]></description>
		<wfw:commentRss>http://iklv.net/2009/11/07/%e4%b9%85%e3%80%85%e3%81%ae%e6%9b%b4%e6%96%b0%ef%bc%81-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
