<?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://agilmente.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://agilmente.com</link>
	<description>PerlとかPHPとかMySQLとか...がんばっても8割だ。</description>
	<lastBuildDate>Wed, 11 Aug 2010 17:17:48 +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>seezoo cmsをクララオンラインのサーバーにインストールしてみる。</title>
		<link>http://agilmente.com/blog/2010/08/12/seezoocms_install4claraonline/</link>
		<comments>http://agilmente.com/blog/2010/08/12/seezoocms_install4claraonline/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 17:17:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[seezoo cms]]></category>

		<guid isPermaLink="false">http://agilmente.com/?p=403</guid>
		<description><![CDATA[先日のオープンソースカンファレンス名古屋2010（以下OSC）でキックオフとなった、
seezoo cms
　
OSCで担当の方とちょっとだけ意気投合したので、
帰宅後触ってみたらconcreat5っぽいのでいいなぁと思 [...]]]></description>
			<content:encoded><![CDATA[<p>先日のオープンソースカンファレンス名古屋2010（以下OSC）でキックオフとなった、<br />
<a href="http://seezoo.org/">seezoo cms</a><br />
　<br />
OSCで担当の方とちょっとだけ意気投合したので、<br />
帰宅後触ってみたらconcreat5っぽいのでいいなぁと思ったので、<br />
ぜひ、開発（主にEC用のプラグインになるかと思いますが）に参加したい！<br />
と思ったら、<br />
私が普段メインで使っている<a href="http://www.clara.jp/service/index.htm">クララオンラインの専用サーバー</a>のPHPは<br />
Ver5.1.6なので、要件をみたしてない(T_T)<br />
　<br />
とTwtterで嘆いたところ、<a href="http://twitter.com/seezoocms">公式アカウント</a>が<br />
json_encode()だけどうにかできれば、5.1でも使えるとのこと！<br />
ありがたい事に、<a href="http://d.hatena.ne.jp/seezoo-cms/20100809/1281349994">公式ブログでも対応方法を書いていただけた。</a><br />
ただ、私はマルチバイトを簡単に扱えて、なおかつ、staticでも使えるJsphonのが好きなので、<br />
こちらで対応した（後述）。<br />
　</p>
<hr />
<p>というわけで、クララオンラインのサーバーにインストールする手順。<br />
　<br />
1)seezoo公式からシステムDL<br />
↓<br />
2)json_encode()を擬似的に作成<br />
↓<br />
3)インストーラーがPHPのバージョンチェックをしているので、これをスキップ<br />
↓<br />
4) 通常通りインストール<br />
　</p>
<hr />
　<br />
<a href="http://d.hatena.ne.jp/seezoo-cms/20100809/1281349994">こちらの記事</a>によると、<br />
<a href="http://codeigniter.jp/">CodeIgniter</a>のヘルパー関数に擬似的なjson_encode()を作りましょう！<br />
ってなってるんですが、恥ずかしながらCodeIgniterは名前は知ってたものの、使ったことがない！！<br />
　<br />
というわけで、お手軽実装のほうで。<br />
　<br />
まず、JSONエンコードするライブラリ「Jsphon」を<a href="http://colo-ri.jp/develop/2009/08/jsphon.html">こちらからダウンロード</a>して、<br />
解凍してできた<br />
・Jsphon.php<br />
・Jsphonディレクトリ<br />
をsystem/application/libraries/に置きます。<br />
　<br />
次に、system/application/helpers/seezoo_helper.phpを開いて、一番下に<br />
　</p>
<pre>
if ( ! function_exists('json_encode') ){

    require_once(APPPATH . 'libraries/Jsphon.php');
    function json_encode($data){
        return Jsphon::encode($data);
    }
}
</pre>
<p>　<br />
を追記。<br />
これで擬似的にjson_encode関数を作れます。<br />
　<br />
<a href="http://upgradephp.berlios.de/">upgrade.php</a>というものもあります。<br />
こっちを使えば、インクルードするだけで使えそうです。（マルチバイトはどうかな…。未確認）<br />
　</p>
<hr />
<p>次に、インストーラーのバージョンチェックをスキップします。<br />
　<br />
system/application/controllers/install.phpを開いて<br />
　</p>
<pre>
$viewdata['php_version'] = version_compare(PHP_VERSION, '5.2.0', '>');
</pre>
<p>　<br />
とされているところを<br />
　</p>
<pre>
$viewdata['php_version'] = version_compare(PHP_VERSION, '5.1.0', '>');
</pre>
<p>　<br />
に変更。</p>
<p>ここまでやったら、あとは、普通にインストーラーを走らせれば、<br />
インストールできました。<br />
　<br />
今日はここまで！<br />
これから使ってみながら、開発にも入り込んでいきます！</p>
]]></content:encoded>
			<wfw:commentRss>http://agilmente.com/blog/2010/08/12/seezoocms_install4claraonline/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Plesk環境下でのMDB2</title>
		<link>http://agilmente.com/blog/2010/08/04/pleskonmdb2/</link>
		<comments>http://agilmente.com/blog/2010/08/04/pleskonmdb2/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 06:49:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://agilmente.com/?p=396</guid>
		<description><![CDATA[Pleskで運用しているドメインについて、
各ドメインの設定画面で、
　

　
↑この赤枠のチェックを外せば、PHPのsafe modeをオフにできますが、
Pleskでsafe modeをオフにしても、open_bas [...]]]></description>
			<content:encoded><![CDATA[<p>Pleskで運用しているドメインについて、<br />
各ドメインの設定画面で、<br />
　<br />
<img src="http://agilmente.com/wp-content/uploads/2010/08/20100804-01.jpg" alt="" title="20100804-01" width="538" height="228" class="alignnone size-full wp-image-397" /><br />
　<br />
↑この赤枠のチェックを外せば、PHPのsafe modeをオフにできますが、<br />
Pleskでsafe modeをオフにしても、open_basedirの設定は残ったままです。<br />
　<br />
PEAR MEDB2では、この設定だけではエラーが発生するケースが考えられます。<br />
　　<br />
MDB2.phpのfileExists()内を見ると、<br />
拡張機能や各DBへのドライバファイルの存在をチェックするのに、<br />
safe modeがオフのときは is_readable()でファイルをチェックし、<br />
そうでないときは、fopen()でチェックしているようです。<br />
　<br />
MDB2ではsafe modeオフのときのみ、is_readable()が使えないという前提で設計されていますが、<br />
実際はそれだけでは不十分で、is_readable()はopen_basedirの制約もうけますから、<br />
MDB2.phpのインストール場所などによっては、<br />
safe modeはオフであるけれど、open_basedirの設定が残るPlesk環境下では、エラーが発生してしまいます。<br />
　<br />
解決方法は、2つ。<br />
　<br />
1)vhost.confでopen_basedirをno_valueにする。<br />
クララオンラインサイトに説明がありますので、御覧ください。<br />
<a href="http://support.clara.jp/clarafaq/index.php?action=artikel&#038;id=45&#038;artlang=ja">http://support.clara.jp/clarafaq/index.php?action=artikel&#038;id=45&#038;artlang=ja</a><br />
　<br />
2)MDB2.phpを改変してしまう。<br />
MDB2.phpの</p>
<pre>
    function fileExists($file)
    {
        // safe_mode does notwork with is_readable()
        if (!@ini_get('safe_mode')) {
             $dirs = explode(PATH_SEPARATOR, ini_get('include_path'));
             foreach ($dirs as $dir) {
                 if (is_readable($dir . DIRECTORY_SEPARATOR . $file)) {
                     return true;
                 }
            }
        } else {
            $fp = @fopen($file, 'r', true);
            if (is_resource($fp)) {
                @fclose($fp);
                return true;
            }
        }
        return false;
    }
</pre>
<p>を</p>
<pre>
    function fileExists($file)
    {
        // safe_mode does notwork with is_readable()
        if( false ){
             $dirs = explode(PATH_SEPARATOR, ini_get('include_path'));
             foreach ($dirs as $dir) {
                 if (is_readable($dir . DIRECTORY_SEPARATOR . $file)) {
                     return true;
                 }
            }
        } else {
            $fp = @fopen($file, 'r', true);
            if (is_resource($fp)) {
                @fclose($fp);
                return true;
            }
        }
        return false;
    }
</pre>
<p>に変更する。<br />
　<br />
2のがお手軽かなー。でも、fopenな上に@でエラー制御してるので、パフォーマンスは落ちます。ご注意を。<br />
　<br />
ま、あれですけど、open_basedirとかの制約を受けてる状態で、積極的にPEARを利用しようとするほうが、技術者としては間違っているかもしれませんが(^-^;</p>
]]></content:encoded>
			<wfw:commentRss>http://agilmente.com/blog/2010/08/04/pleskonmdb2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>【訂正】Ext.JSのTreeNodeのチェックボックスを動的制御</title>
		<link>http://agilmente.com/blog/2010/08/02/ext-js_treenode_checkbox_ctr/</link>
		<comments>http://agilmente.com/blog/2010/08/02/ext-js_treenode_checkbox_ctr/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 08:07:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ext.JS]]></category>

		<guid isPermaLink="false">http://agilmente.com/?p=389</guid>
		<description><![CDATA[【訂正】
罫線から下の内容間違っていました。
チェックボックスを動的制御するメソッド、見つけました。
　
TreeNodeUIオブジェクト内に「toggleCheck()」というメソッドがあって、これを利用することで、状 [...]]]></description>
			<content:encoded><![CDATA[<p>【訂正】<br />
罫線から下の内容間違っていました。<br />
チェックボックスを動的制御するメソッド、見つけました。<br />
　<br />
TreeNodeUIオブジェクト内に「toggleCheck()」というメソッドがあって、これを利用することで、状態変更できます。<br />
　</p>
<pre>
//ノードの取得
var node = tree.getNodeById('ノードのID');
//ノードUIの取得
var ui = node.getUI();
//チェックする
ui.toggleCheck( true );
</pre>
<p>toggleCheck()に渡す値をfalseにすればチェックが外れます。<br />
　<br />
TreeNodeUIのリファレンスまでちゃんと読んでいなかった僕のミスでした。。。<br />
すみません。</p>
<hr />
　<br />
　<br />
Ext.JSのTreePanelにはチェックボックスを付けることができる。（チェックツリーというらしい）</p>
<p>Ext.JS本家のサンプルはこんな感じ→<a href="http://www.sencha.com/deploy/dev/examples/tree/check-tree.html" target="_blank">http://www.sencha.com/deploy/dev/examples/tree/check-tree.html</a><br />
　<br />
で、諸事情から、ここについているチェックボックスのチェックをJSで動的に着け外ししたい。<br />
　<br />
チェックが付いているノード（各要素）を取得できるメソッドは用意されているのに、<br />
チェックを付けるメソッドが標準でない(T_T)<br />
　<br />
仕方ないので、Ext.JSを解析。（これが約1時間の作業。泣）<br />
ノードはtreeNodeオブジェクトとtreeNodeUIオブジェクトから成立していることが分かった。<br />
　<br />
treePanelからtreeNodeを取得するには、getNodeById()を使えば良い。<br />
そしてtreeNodeからtreeNodeUIを取得するには、getUI()を使う。<br />
チェックボックスはtreeNodeUIのcheckboxというメンバで保存されている。<br />
こいつのcheckedプロパティをtrueにしてやれば、できた。<br />
ところが、当たり前だけど、checkboxのプロパティを変更するだけでは、<br />
treeNodeUIのcheckedプロパティは変更されないので、<br />
こちらも合わせて動的変更する必要がある。<br />
　<br />
というわけで、次のように書いた。<br />
　</p>
<pre>
//ノードの取得
var node = tree.getNodeById('ノードのID');
//ノードUIの取得
var ui = node.getUI();
//チェックボックスにチェックをつける
ui.checkbox.checked = true;
//ノードのcheckedプロパティを変更
node.checked = true;
</pre>
<p>　<br />
大体こんな感じ。<br />
　<br />
回りくどい。<br />
出来る人はExt.JS自体を改変した方がいいですよー。<br />
（多分PGなら、ここまで分かれば、あとはどこを改変すればいいかわかると思うので割愛）</p>
]]></content:encoded>
			<wfw:commentRss>http://agilmente.com/blog/2010/08/02/ext-js_treenode_checkbox_ctr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone4交換になりました。</title>
		<link>http://agilmente.com/blog/2010/07/25/iphone4_the_change/</link>
		<comments>http://agilmente.com/blog/2010/07/25/iphone4_the_change/#comments</comments>
		<pubDate>Sun, 25 Jul 2010 12:20:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ひとりごと]]></category>

		<guid isPermaLink="false">http://agilmente.com/?p=386</guid>
		<description><![CDATA[7/11の未明SBMで障害が発生しました。
ちょうどその時起きていて、iPhoneでいろいろやってたら、
SIMカードを認識しなくなったり、
メモリリークとおぼしき症状でアプリが落ちたり、
最終的にOSごと落ちたりしたん [...]]]></description>
			<content:encoded><![CDATA[<p>7/11の未明SBMで障害が発生しました。<br />
ちょうどその時起きていて、iPhoneでいろいろやってたら、<br />
SIMカードを認識しなくなったり、<br />
メモリリークとおぼしき症状でアプリが落ちたり、<br />
最終的にOSごと落ちたりしたんです。<br />
　<br />
？？？？と思って、<br />
まぁいっか、最悪交換だと思って、放っておいたら。<br />
朝には表示は普通になってたんです。<br />
　<br />
ところがです。その日から、こちらの声が向こうに届いていない症状が出てきました。<br />
最初は、5回の通話で1回くらいで、症状が発症してもかけ直すと直っていたので、<br />
SBMだし、悪い電波にのっちゃったのかなぁとか思っていました。<br />
　<br />
そして、日を追うごとに、<br />
症状の頻度が増して、これはおかしいということで、<br />
あっぽすとあに行きました。<br />
　　<br />
ハードウェア的な故障は、やはり見つからず、<br />
最初は悪い電波に乗ったんですかねぇって言われて、<br />
とりあえず復元かけてダメなら又来て下さいと言われて、帰宅。<br />
　<br />
その日のうちに復元をかけるものの、<br />
結局症状はよくならず。<br />
　<br />
再度あっぽすとあにいって、相談。<br />
電話をかけてもらって症状を確認。<br />
無事交換となりました。<br />
　<br />
原因ははっきりしません。<br />
ネットで調べたところ、<br />
ノイズキャンセラのソフトウェアの不具合じゃないかという報告があります。<br />
アップルストアも、この不具合について報告を受けているとのことでした。<br />
ただ、前述の通り、SBMの障害による不具合という可能性も否定できず、<br />
アップルストアの店員さんも、壊れた経緯を必ず上に伝えると約束してくれました。<br />
次期ロットからの改善につながるといいですが…。<br />
　<br />
というわけで、こちらの声が届かないという症状は、<br />
普通にあるので、発症した方は、お早めにアップルストアへ！<br />
SBMショップに行くと、預かり後交換まで2〜3日待たされるようなので、<br />
近くにアップルストアがある人は必ずアップルストアへ行きましょう！</p>
]]></content:encoded>
			<wfw:commentRss>http://agilmente.com/blog/2010/07/25/iphone4_the_change/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FMランタイムアプリ + なでしこプラグインのアプリのインストーラー</title>
		<link>http://agilmente.com/blog/2010/07/21/fmruntime_nadesi_installer/</link>
		<comments>http://agilmente.com/blog/2010/07/21/fmruntime_nadesi_installer/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 15:47:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Filemaker]]></category>

		<guid isPermaLink="false">http://agilmente.com/?p=381</guid>
		<description><![CDATA[個人プロジェクトで、
FMランタイムアプリ + なでしこプラグイン
で作ったアプリケーションをインストーラー付きで販売することになった。
　
その際、Vista以降はUACという消えれるか死ぬかすればいい仕組の問題でうま [...]]]></description>
			<content:encoded><![CDATA[<p>個人プロジェクトで、<br />
FMランタイムアプリ + なでしこプラグイン<br />
で作ったアプリケーションをインストーラー付きで販売することになった。<br />
　<br />
その際、Vista以降はUACという<del datetime="2010-07-20T15:21:11+00:00">消えれるか死ぬかすればいい</del>仕組の問題でうまくいかないことが多々あって、色々試行錯誤のうえ、ようやく完成した。その覚書＆報告。<br />
　</p>
<hr />
<p>まず、ランタイムアプリケーション。<br />
FilemakerのAdvancedバージョンで作るのは、FM開発者ならおなじみ。<br />
FMのアプリケーションを、FMなしで動くようにできる仕組みですね。<br />
ランタイムアプリを作成すると、ランタイムフレームワークや起動用EXEファイル、データベースの実体バイナリなどが、<br />
ひとつのフォルダに詰め込まれて作成されます。<br />
　<br />
で、まぁ通常の感覚で言えば、これをそのまま、圧縮して、<br />
インストーラー作成ソフトなどをつかってインストーラー作っちゃえばいいのですが、ひとつ問題があります。<br />
　<br />
通常、アプリケーションは「C:\ProgramFiles\」にインストールするのですが、<br />
UACの働きで、「C:\ProgramFiles\」配下はデータの書き換えが基本的にできません。.exe以外は基本的に読み取り専用です。<br />
したがって、データの書き換えが必要なFMランタイムアプリは読み取り専用のDBになってしまうことを意味します。<br />
　<br />
実際は、レジストリとかいじれば、出来るのですが、インストーラーを走らせている間に、<br />
レジストリをゴニョゴニョして。。。とか正直やってられません。<br />
それに、レジストリを汚すのはイヤです。<br />
　<br />
私の場合、特殊ディレクトリである、アプリケーション設定フォルダにランタイムアプリの実体を全てインストールし、「C:\ProgramFiles\」配下には、アプリ設定フォルダに置かれたランタイムアプリを実行するだけの小さなアプリケーションを作ることで対応しました。<br />
これにより、ランタイムアプリが読み取り専用になってしまうことを防げます。<br />
　<br />
ランタイムアプリを呼び出すだけの小アプリは、なでしこで簡単につくれますし、なでしこの場合は、指定アプリケーションを管理者権限で起動する命令もありますから、なお一層安心してアプリづくりができます。<br />
　</p>
<hr />
　<br />
次になでしこ。<br />
前述のインストール箇所の問題をクリアできれば、まずほとんどの機能は問題なく動きます。<br />
　<br />
注意したいのは以下。<br />
　<br />
・ファイルコピーは鬼門。使わない方がいい。やるなら、一旦コピー元のファイルを開いて、新規保存する手順を、VBSなどで行うほうが良い。（なでしこにはVBS標準装備）<br />
・なでしこの命令を別プロセスで動かす場合は、Windows標準の各セキュリティ機能に加えて、ノートン先生などにも気を配る必要があることがあるので、極力避けたい。<br />
　<br />
以上の2点です。<br />
別プロセスでなでしこの命令を動かすのは、ランタイムアプリが落ちるのを防ぐなどメリットも沢山あるので、使う場合は、ノートン先生などの設定指示も、アプリケーション配布時に必要になってくるかと思います。<br />
　</p>
<hr />
　<br />
WindowsXPへのダウングレードが2020年まで保証されてしまったことで、XP/Vista/7 そして次のWindowsと、かなり質の違うWindowsが混在する世の中になってしまいまして（特にUACの部分で）、プログラマとしては非常に腹立たしい事態です。<br />
　<br />
とはいえ、そんなこと言ってても、世の中わからないので、こっちが勉強していかなくてはなりません。<br />
ノンプログラマが使えるFilemakerの世界も同じでしょうねー。<br />
ということで、この記事がFM開発者の方の一助になればと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://agilmente.com/blog/2010/07/21/fmruntime_nadesi_installer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows64bitでFMからMySQL接続</title>
		<link>http://agilmente.com/blog/2010/07/15/windows64bit_fm2mysql_odbc/</link>
		<comments>http://agilmente.com/blog/2010/07/15/windows64bit_fm2mysql_odbc/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 03:34:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://agilmente.com/?p=378</guid>
		<description><![CDATA[Windows64bitに移行したので、
Filemaker(Adv.11）からMySQLへESS接続しようとした。
　
いつものようにMySQL公式からODBCをDL。
今回は64bitOSなので、64bit版のODB [...]]]></description>
			<content:encoded><![CDATA[<p>Windows64bitに移行したので、<br />
Filemaker(Adv.11）からMySQLへESS接続しようとした。<br />
　<br />
いつものようにMySQL公式からODBCをDL。<br />
今回は64bitOSなので、64bit版のODBCをDLして、インストール。<br />
コンパネから接続設定して、<br />
さぁ、FMから接続だ！と思って外部ソースを見てもDSNに設定した内容がない。(￣△￣;)エッ・・・。<br />
　<br />
きっと64bit版のODBCがだめなんだ！と思って32bit版にすると<br />
コンパネのデータソース管理にMySQLODBCがない…。<br />
　<br />
むぅ・・・。どういうことだ？？？<br />
　<br />
と思っていたら、64bitのデータソース設定と、32bitのデータソース設定は別に存在することが判明。<br />
コンパネからは64bitへしか進むことができあに。うはぁ・・・。<br />
　<br />
32bit用設定はWin7(64bit)の場合、<br />
C:\Windows\SysWOW64\odbcad32.exe<br />
↑これ。多分Vista(64bit)も同じ。XP(64bit)はどうかな・・・。<br />
　<br />
こちらの設定パネルでDSN設定したら無事Filemaker11でも見ることができましたー。</p>
]]></content:encoded>
			<wfw:commentRss>http://agilmente.com/blog/2010/07/15/windows64bit_fm2mysql_odbc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>保護中: WCAN2010Summer LT 発表内容</title>
		<link>http://agilmente.com/blog/2010/07/12/wcan2010summer-lt/</link>
		<comments>http://agilmente.com/blog/2010/07/12/wcan2010summer-lt/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 11:34:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://agilmente.com/?p=366</guid>
		<description><![CDATA[この投稿はパスワードで保護されているため抜粋文はありません。]]></description>
			<content:encoded><![CDATA[<form action="http://agilmente.com/wp-pass.php" method="post">
<p>この投稿はパスワードで保護されています。表示するにはパスワードを入力してください:</p>
<p><label for="pwbox-366">パスワード:<br />
<input name="post_password" id="pwbox-366" type="password" size="20" /></label><br />
<input type="submit" name="Submit" value="実行" /></p></form>
]]></content:encoded>
			<wfw:commentRss>http://agilmente.com/blog/2010/07/12/wcan2010summer-lt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHPでCSVフォーマットの文字列を配列にする。</title>
		<link>http://agilmente.com/blog/2010/07/05/php_csvformat2array/</link>
		<comments>http://agilmente.com/blog/2010/07/05/php_csvformat2array/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 08:05:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://agilmente.com/?p=357</guid>
		<description><![CDATA[のっけからですが、私はCSVというデータフォーマットが嫌いです。
古くから使われていながら標準仕様がない。
にも、かかわらず、ユーザーはまるで標準の仕様があるかのように扱う。
挙句、変種の「K3」などというフォーマットが [...]]]></description>
			<content:encoded><![CDATA[<p>のっけからですが、私はCSVというデータフォーマットが嫌いです。<br />
古くから使われていながら標準仕様がない。<br />
にも、かかわらず、ユーザーはまるで標準の仕様があるかのように扱う。<br />
挙句、変種の「K3」などというフォーマットが現れたりして、、、<br />
最終的に、後追いみたいな形でRFC4180として仕様が成文化。<br />
（それでもまだ、ほぼ、ソフトウェアによって仕様はいまいち固まらない）<br />
　<br />
というような状況があって、結構CSVを読み書きするシステムを作るのは、<br />
意外に負担だったりします。<br />
　<br />
まぁ僕の場合は、「エクセルのCSV以外は知らん」という立場で作ることにしていますが。<br />
　</p>
<p><HR><br />
　<br />
前置きが長くなりました。今回そんなCSV（文字列）をPHPで初めて扱うことに。もう結構長い間PGやってますけど、よく考えたらPHPでCSV形式の文字列を扱うのは初めてだったんです。（間違えないでくださいね。ファイルじゃないですよ。文字列です。）<br />
　<br />
Perlでは<A href="http://www.din.or.jp/~ohzaki/perl.htm">こちらのサイト</A>を参考によくやってました。<br />
ほとんどがこれで対応できてました。<br />
　<br />
一方PHPは、fgetcsv()ってのを使うんですね。<br />
で、これファイルハンドルの読み込み用の関数なんですね。<br />
　<br />
今回はファイルからの読み込みでなく、<br />
CSVフォーマットの文字列を配列に変換する必要があったので、<br />
これじゃ駄目だってことで探したら str_getcsv() ってのがあったんですが、<br />
これがPHP5.3.0以降専用。<br />
　<br />
うわっ。。。PEARをよく使う私にとって現段階ではPHP5.3.0以降は鬼門です。<br />
（オブジェクトの作成方法などが厳密になって、<br />
　PHP4系統での利用を保証しているPEARライブラリを利用すると<br />
　エラー連発で使い物にならないのです。。。）<br />
　<br />
うぅ、、、どうしようか、、、<br />
ということで、仕方ない、一時ファイルをつくってfgetcsv()で読むというロジックでやることに。<br />
幸いPHPにはtmpfile()という一時ファイル用の関数がある。<br />
　<br />
ということで、関数を作りました。</p>
<p><PRE>function getArrayFromCSVFormat( $str ){<br />
    $parseData = array();<br />
    $fh = tmpfile();<br />
    fputs( $fh, $str );<br />
    fseek( $fh, 0, SEEK_SET );<br />
    while( $row = fgetcsv( $fh ) ){<br />
        $parseData[] = $row;<br />
    }<br />
    fclose( $fh );<br />
    return $parseData;<br />
}<br />
</PRE>活用する場所があるか不明ですが、<br />
使いたい人はご自由に。<br />
　<br />
あ、あと、このサンプルでは、<br />
fgetcsv()のオプション引数は設定してませんので、<br />
必要があれば設定してください。<br />
また、fgetcsv()は古いバージョンのPHPだとバグだらけで泣けます。<br />
その時は、別の方法をお試しください。。。<br />
　<br />
　<br />
ちなみに私はPHP5.1系統のころまで、<A href="http://www.phpclasses.org/package/2331-PHP-Parse-a-CSV-file-and-its-data-rows.html" target=_blank>こちらで配布されているPHPパースクラス</A>を利用してました。（こちらはファイルからの読み込み使っていたので、文字列はどうか知りません）</p>
]]></content:encoded>
			<wfw:commentRss>http://agilmente.com/blog/2010/07/05/php_csvformat2array/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iMacの修理</title>
		<link>http://agilmente.com/blog/2010/07/03/imac_repair/</link>
		<comments>http://agilmente.com/blog/2010/07/03/imac_repair/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 18:12:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ひとりごと]]></category>

		<guid isPermaLink="false">http://agilmente.com/?p=355</guid>
		<description><![CDATA[オフィスのボスのiMacのHDDがぶっとんだので、
ボスは新しいのを買って、
私はそのiMacをもらってきた。
アルミiMacの初期の頃（背面黒）のやつ。
　
HDDの交換くらいどうってことないだろ。
って思ってたら、こ [...]]]></description>
			<content:encoded><![CDATA[<p>オフィスのボスのiMacのHDDがぶっとんだので、<br />
ボスは新しいのを買って、<br />
私はそのiMacをもらってきた。<br />
アルミiMacの初期の頃（背面黒）のやつ。<br />
　<br />
HDDの交換くらいどうってことないだろ。<br />
って思ってたら、これがそうでもなくかなり難しい！<br />
　<br />
<a href="http://ascii.jp/elem/000/000/137/137605/index-2.html" target=_"blank">このへんを参考にやる。</a></p>
<p>たいていどのサイトを見ても箱開けて、<br />
HDDを付け替えるところまでの説明。<br />
　<br />
確かにここまでもかなり難しい。<br />
　<br />
が、一番難しいのは、組み立てる時だと私はおもった。<br />
iMacはすべてがギリギリの範囲で埋め込まれているので、<br />
ちょっとのズレでDVDがだせなくなったりとかして大変。<br />
　<br />
はっきり言ってちょっとWindowsでいわゆる自作PCをくみたてたことがあるくらいので経験では苦労すると思われる。<br />
　<br />
かなり根気がいるので注意。<br />
白intelもなかなか苦労するとのこと。</p>
]]></content:encoded>
			<wfw:commentRss>http://agilmente.com/blog/2010/07/03/imac_repair/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPadのニセモノが届いた！</title>
		<link>http://agilmente.com/blog/2010/07/02/ipad_fake/</link>
		<comments>http://agilmente.com/blog/2010/07/02/ipad_fake/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 04:34:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[中華ガジェット]]></category>

		<guid isPermaLink="false">http://agilmente.com/?p=347</guid>
		<description><![CDATA[iPadが発売になったときに話題になった中国のニセモノiPadを買いました。
　
で、今日届きました！
　


　
箱はこんな感じ。iPadを見事にパクってます。
　


　
側はこんな感じ。iPadニセモノの触れ込みで [...]]]></description>
			<content:encoded><![CDATA[<p>iPadが発売になったときに話題になった中国のニセモノiPadを買いました。<br />
　<br />
で、今日届きました！<br />
　<br />
<a href="http://agilmente.com/wp-content/uploads/2010/07/20100702-1.jpg"><img src="http://agilmente.com/wp-content/uploads/2010/07/20100702-1-300x225.jpg" alt="" title="" width="300" height="225" class="alignnone size-medium wp-image-348" /></a><br />
<a href="http://agilmente.com/wp-content/uploads/2010/07/20100702-2.jpg"><img src="http://agilmente.com/wp-content/uploads/2010/07/20100702-2-300x225.jpg" alt="" title="" width="300" height="225" class="alignnone size-medium wp-image-349" /></a><br />
　<br />
箱はこんな感じ。iPadを見事にパクってます。<br />
　<br />
<a href="http://agilmente.com/wp-content/uploads/2010/07/20100702-3.jpg"><img src="http://agilmente.com/wp-content/uploads/2010/07/20100702-3-300x225.jpg" alt="" title="" width="300" height="225" class="alignnone size-medium wp-image-350" /></a><br />
<a href="http://agilmente.com/wp-content/uploads/2010/07/20100702-4.jpg"><img src="http://agilmente.com/wp-content/uploads/2010/07/20100702-4-300x225.jpg" alt="" title="20100702-4" width="300" height="225" class="alignnone size-medium wp-image-351" /></a><br />
　<br />
側はこんな感じ。iPadニセモノの触れ込みですけど、全くの別物で。<br />
大きさは7インチ液晶。男性の片手にちょうどのるくらいのサイズです。<br />
　<br />
なんと、最初っから電源アダプタがぶっ壊れてやがる！<br />
さすが中華クオリティ！これくらいやってくれんとこちらも拍子抜けってもんだ！<br />
　<br />
<a href="http://agilmente.com/wp-content/uploads/2010/07/20100702-5.jpg"><img src="http://agilmente.com/wp-content/uploads/2010/07/20100702-5-300x225.jpg" alt="" title="" width="300" height="225" class="alignnone size-medium wp-image-352" /></a><br />
　<br />
起動してみました。<br />
初期状態は中国語（広東語？）で何が何だかわかりませんが、<br />
予約注文したときにAndroidをVMWareに入れて使ってみていたので、<br />
なんとなくの記憶で設定までたどりついて、日本語化、WiFi接続までできました。<br />
　<br />
iPhoneやiPadにくらべて結構力を入れてタッチしないと、反応してくれません。<br />
　<br />
動作が軽いといったらうそですが、想像していたよりは軽快です。<br />
　<br />
とりあえず今日の報告はここまで！<br />
Androidアプリつくっちゃうぞー！</p>
]]></content:encoded>
			<wfw:commentRss>http://agilmente.com/blog/2010/07/02/ipad_fake/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
