<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>WEB制作者の苦悩</title>
    <link rel="alternate" type="text/html" href="http://blog.non-style.com/" />
    <link rel="self" type="application/atom+xml" href="http://blog.non-style.com/atom.xml" />
    <id>tag:blog.non-style.com,2008-03-14://1</id>
    <updated>2009-12-07T06:11:46Z</updated>
    <subtitle>WEBサイト制作におけるTIPSなどをちまちまと書いてます。</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.1</generator>

<entry>
    <title>CakePHPベースのCMS「BaserCMS」の公式サイトオープン</title>
    <link rel="alternate" type="text/html" href="http://blog.non-style.com/2009/12/cakephpcmsbasercms.html" />
    <id>tag:blog.non-style.com,2009://1.65</id>

    <published>2009-12-07T05:53:51Z</published>
    <updated>2009-12-07T06:11:46Z</updated>

    <summary>国産オープンソースとしてCakePHPベースのCMS、「BaserCMS」の公式...</summary>
    <author>
        <name>エガシラ　リュウジ</name>
        <uri>http://www.e-catchup.jp</uri>
    </author>
    
        <category term="CakePHP" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://blog.non-style.com/">
        <![CDATA[<a href="http://basercms.net/"><img alt="basercms.gif" src="http://blog.non-style.com/assets_c/2009/12/basercms-thumb-200x298.gif" class="mt-image-right" style="margin: 0pt 0pt 20px 20px; float: right;" width="200" height="298" /></a><p>国産オープンソースとしてCakePHPベースのCMS、「BaserCMS」の公式サイトをオープンしました。</p><p><a href="http://basercms.net/">http://basercms.net/</a></p><p><br /></p><p>このCMSはどちらかというと制作者向けのCMSとなっており、WEBサイトのベースとして利用できるようになっています。</p><p>特別これといった目立った機能はなく、至ってシンプル構成でまだまだバグも含んでいますが、これまでの実務経験から培ったCakePHPに関するノウハウもしっかり詰め込まれています。</p><p>土台の分離化や、プラグインフックなども一例です。</p><p>是非一度ダウンロードしてみてください！<br /></p>
]]>
        
    </content>
</entry>

<entry>
    <title>Google日本語入力forMac に「ことえり」の辞書をインポートする</title>
    <link rel="alternate" type="text/html" href="http://blog.non-style.com/2009/12/googleformac.html" />
    <id>tag:blog.non-style.com,2009://1.64</id>

    <published>2009-12-04T13:33:36Z</published>
    <updated>2009-12-04T13:42:03Z</updated>

    <summary>Google日本語入力 for Mac がリリースされたので試してみた。で、「こ...</summary>
    <author>
        <name>エガシラ　リュウジ</name>
        <uri>http://www.e-catchup.jp</uri>
    </author>
    
        <category term="備忘録" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://blog.non-style.com/">
        <![CDATA[<p><a href="http://www.google.com/intl/ja/ime/index-mac.html">Google日本語入力 for Mac</a> がリリースされたので試してみた。</p><p>で、「ことえり」の辞書がインポートしたくなってインポートしてみたがフォーマットが違うみたいでうまくいかない。</p><p>テキストエディタで以下の正規表現を使えば変換できるので変換してエンコーディングUTF-8、改行タイプLFで保存すると大丈夫。</p><p><br /></p><p>"(.+?)","(.+?)","(.+?)"\n</p><p>　　　↓</p><p>\1\t\2\t名詞\n</p><p><br /></p><p>※ \1 \2 は各エディタの後方参照の記号に置き換える<br />※ 最後の品詞を名詞固定としているのは、Googleの品詞にいちいち置き換えるのがめんどいから。<br />※ 単語に改行が入ってるとダメ<br /></p>]]>
        
    </content>
</entry>

<entry>
    <title>cygwinからgvimを使う</title>
    <link rel="alternate" type="text/html" href="http://blog.non-style.com/2009/09/cygwingvim.html" />
    <id>tag:blog.non-style.com,2009://1.63</id>

    <published>2009-09-20T20:16:58Z</published>
    <updated>2009-09-20T20:24:46Z</updated>

    <summary> とりあえずメモ。ポイントはパスの引継ぎ。  以下を記述したファイルをbinなん...</summary>
    <author>
        <name>エガシラ　リュウジ</name>
        <uri>http://www.e-catchup.jp</uri>
    </author>
    
        <category term="備忘録" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://blog.non-style.com/">
        <![CDATA[<p>
とりあえずメモ。</p><p>ポイントはパスの引継ぎ。 
以下を記述したファイルをbinなんかにおいて利用する。</p><p>（Windows側でgvimのパスを通しておく）
</p><pre>#!/bin/bash
gvim $(cygpath -aw $*) &amp;
</pre>
]]>
        
    </content>
</entry>

<entry>
    <title>Trac から redmine への移行</title>
    <link rel="alternate" type="text/html" href="http://blog.non-style.com/2009/09/trac-redmine.html" />
    <id>tag:blog.non-style.com,2009://1.62</id>

    <published>2009-09-11T09:37:50Z</published>
    <updated>2009-09-11T09:42:30Z</updated>

    <summary>  いつも忘れるんでメモ。 rake redmine:migrate_from_...</summary>
    <author>
        <name>エガシラ　リュウジ</name>
        <uri>http://www.e-catchup.jp</uri>
    </author>
    
        <category term="備忘録" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://blog.non-style.com/">
        <![CDATA[ <p>
いつも忘れるんでメモ。
</p>
<pre>rake redmine:migrate_from_trac RAILS_ENV=production
</pre>
<p>
※ productionの部分は移行先のRedmine環境名 <br /></p><br /><ul><li><a href="http://redmine.jp/guide/RedmineMigrate/">Redmine.JP | 他システムからの移行</a></li></ul>]]>
        
    </content>
</entry>

<entry>
    <title>CakePHP 1.2.5 リリース！</title>
    <link rel="alternate" type="text/html" href="http://blog.non-style.com/2009/09/cakephp-125.html" />
    <id>tag:blog.non-style.com,2009://1.61</id>

    <published>2009-09-10T06:39:58Z</published>
    <updated>2009-09-10T06:43:35Z</updated>

    <summary>今回、PHP5.3に最適化されたようです。http://bakery.cakep...</summary>
    <author>
        <name>エガシラ　リュウジ</name>
        <uri>http://www.e-catchup.jp</uri>
    </author>
    
        <category term="PHP" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://blog.non-style.com/">
        <![CDATA[<p>今回、PHP5.3に最適化されたようです。<br /><br /><a href="http://bakery.cakephp.org/articles/view/release-cakephp-1-2-5">http://bakery.cakephp.org/articles/view/release-cakephp-1-2-5</a><br /><br />仕事では、5.3にすら追いついていないのでしばらく様子見かな。</p>]]>
        
    </content>
</entry>

<entry>
    <title>[CakePHP 1.2.1] ブラウザを閉じてもセッションが消えない</title>
    <link rel="alternate" type="text/html" href="http://blog.non-style.com/2009/03/cakephp-121.html" />
    <id>tag:blog.non-style.com,2009://1.60</id>

    <published>2009-03-31T10:32:04Z</published>
    <updated>2009-03-31T10:46:30Z</updated>

    <summary> 久しぶりの Cakeネタ。 通常、認証機能などで、Session を利用した場...</summary>
    <author>
        <name>エガシラ　リュウジ</name>
        <uri>http://www.e-catchup.jp</uri>
    </author>
    
        <category term="CakePHP" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="PHP" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://blog.non-style.com/">
        <![CDATA[<p>
久しぶりの Cakeネタ。 <br /></p><p>通常、認証機能などで、Session を利用した場合、ブラウザを閉じると保持していた  Session 情報は消える。 <br /></p><p>これは、php.ini の session.cookie_lifetime に「0」を設定した場合の挙動だが、 CakePHP で、認証機能を実装した場合、session.cookie_lifetime を「0」に設定していてもセッションが消えない場合がある。
</p>]]>
        <![CDATA[<p>
調べてみると、どうやら app/config/core.php で、Security.level の値を high 以外を設定した場合、 Sessionクラスで session.cookie_lifetime が上書きされてしまう様子。&nbsp;</p><p>知らんかった。。この余計？な機能のお陰で、月末のクソ忙しい時に半日潰したよ。</p><p><br /></p><p>という事で、ブラウザを閉じた際にセッション情報を消して欲しい場合は、Security.level を high に！ <br /></p><p>ただ、high に設定した場合、セッションのタイムアウトまでが極端に短いので、Session.timeout で調整が必要っす。
</p>]]>
    </content>
</entry>

<entry>
    <title>[Subversion] .svnファイルを一括削除する</title>
    <link rel="alternate" type="text/html" href="http://blog.non-style.com/2009/03/subversion-svn.html" />
    <id>tag:blog.non-style.com,2009://1.59</id>

    <published>2009-03-06T17:02:21Z</published>
    <updated>2009-03-06T17:18:50Z</updated>

    <summary>いつも忘れるんでメモ。コマンドプロンプトやターミナルで対象のフォルダに移動し W...</summary>
    <author>
        <name>エガシラ　リュウジ</name>
        <uri>http://www.e-catchup.jp</uri>
    </author>
    
        <category term="SubVersion" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://blog.non-style.com/">
        <![CDATA[<p>いつも忘れるんでメモ。<br /></p><p>コマンドプロンプトやターミナルで対象のフォルダに移動し</p>
<p><b>Windows</b></p>
<pre>for /R %i in (.svn) do rd /Q /S "%i"</pre>

<p><b>Mac</b></p>
<pre>rm -rf `find ./ -type d -name .svn ! -regex \.svn/. -print`</pre>]]>
        
    </content>
</entry>

<entry>
    <title>CakePHP勉強会＠福岡が開催されます！</title>
    <link rel="alternate" type="text/html" href="http://blog.non-style.com/2009/02/cakephp-6.html" />
    <id>tag:blog.non-style.com,2009://1.58</id>

    <published>2009-02-18T11:33:22Z</published>
    <updated>2009-02-18T11:55:46Z</updated>

    <summary>ついに！福岡でCakePHPの勉強が開催されます！関東や関西の方ではけっこう開催...</summary>
    <author>
        <name>エガシラ　リュウジ</name>
        <uri>http://www.e-catchup.jp</uri>
    </author>
    
        <category term="CakePHP" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://blog.non-style.com/">
        <![CDATA[<p>ついに！福岡でCakePHPの勉強が開催されます！</p><p>関東や関西の方ではけっこう開催されていたようだけど、福岡ではCakePHPをメインとした勉強会がなかなか開催されなかったので本当についに！という感じです。</p><p>なんとCakePHPガイドブックの著書の方が発表されるらしいです！</p>]]>
        <![CDATA[<p>日時は以下のとおり</p><p>２００９年３月１３日（金）　１８：３０より</p><p>福岡市NPO・ボランティア交流センター「あすみん」会議室<br />福岡市中央区大名2-6-46 福岡市立青年センター5F<br /><br />http://www.fnvc.jp/access.html</p><p>詳細は<a href="http://events.php.gr.jp/events/show/69">コチラ</a>から</p>懇親会もあるようなので楽しみ〜♪]]>
    </content>
</entry>

<entry>
    <title>CakePHP1.2 stable 出ました！</title>
    <link rel="alternate" type="text/html" href="http://blog.non-style.com/2009/01/cakephp12-stable.html" />
    <id>tag:blog.non-style.com,2009://1.57</id>

    <published>2009-01-26T11:47:35Z</published>
    <updated>2009-01-26T11:51:39Z</updated>

    <summary>見逃してました。１月１４日時点でstableが公開されてたようです！まだ試してい...</summary>
    <author>
        <name>エガシラ　リュウジ</name>
        <uri>http://www.e-catchup.jp</uri>
    </author>
    
        <category term="CakePHP" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://blog.non-style.com/">
        <![CDATA[<p>見逃してました。１月１４日時点でstableが公開されてたようです！<br /><br />まだ試していないけど、楽しみです。<br /><br /><a href="http://cakephp.org/">CakePHP: the rapid development php framework.</a></p>]]>
        
    </content>
</entry>

<entry>
    <title>CakePHP RC4出ました！</title>
    <link rel="alternate" type="text/html" href="http://blog.non-style.com/2008/12/cakephp-rc4.html" />
    <id>tag:blog.non-style.com,2008://1.56</id>

    <published>2008-12-22T03:30:16Z</published>
    <updated>2008-12-22T03:35:17Z</updated>

    <summary>やっとRC４が出ましたね～。 http://cakephp.org/細かい変更点...</summary>
    <author>
        <name>エガシラ　リュウジ</name>
        <uri>http://www.e-catchup.jp</uri>
    </author>
    
        <category term="CakePHP" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://blog.non-style.com/">
        <![CDATA[<p>やっとRC４が出ましたね～。 <br /></p><p><a href="http://cakephp.org/">http://cakephp.org/</a></p><p>細かい変更点は確認してないけど、既存のCakeアプリに投入したところ問題なく動作した。</p><p>RC2、3のような大幅な変更はないのかな？</p><p>もうすぐ stable ！楽しみ～。<br /></p>]]>
        
    </content>
</entry>

<entry>
    <title>[CakePHP1.2RC3] AIRからSabreAMFを利用してCakePHPに通信する</title>
    <link rel="alternate" type="text/html" href="http://blog.non-style.com/2008/11/cakephp-airsabreamfcakephp.html" />
    <id>tag:blog.non-style.com,2008://1.55</id>

    <published>2008-11-24T11:16:39Z</published>
    <updated>2008-11-24T11:46:22Z</updated>

    <summary> AirのSWFファイルからPHPが動いているサーバーに接続する為には、AMFと...</summary>
    <author>
        <name>エガシラ　リュウジ</name>
        <uri>http://www.e-catchup.jp</uri>
    </author>
    
        <category term="ActionScript3.0" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="CakePHP" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="PHP" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="actionscript3" label="ActionScript3" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="air" label="AIR" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="amf" label="AMF" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="cakephp" label="CakePHP" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="php" label="PHP" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.non-style.com/">
        <![CDATA[<p>
AirのSWFファイルからPHPが動いているサーバーに接続する為には、AMFというフォーマットに従って通信を行う。<br />
PHPのAMFライブラリとしては、<a href="http://amfphp.sourceforge.net/">AMFPHP</a> が有名だけど、以下の記事によると、<a href="http://osflash.org/sabreamf">SabreAMF</a> というライブラリがCakePHPに実装しやすいらしい。
</p>
<ul>
<li><a href="http://blog.asial.co.jp/347">flashとのAMF通信用CakePHPコンポーネント</a><br /></li>
</ul>

<p>
実装方法としては、上記記事のタイトル通り、CakePHPのコンポーネントとして実装させる。<br />
上記記事のコンポーネントを参考にもっと理解しやすいようにシンプルに書いてみたので参考にどうぞ。
</p>]]>
        <![CDATA[<h3>VendorsディレクトリにSabreAMFを設置する</h3>
<p>
以下よりSabreAMFをダウンロードし、解凍後、ディレクトリ名をSabreAMFにリネームし[app/vendors]に設置する。<br />
2008/11/24時点でのバージョンは、1.2.203
</p>
<ul><li><a href="http://code.google.com/p/sabreamf/downloads/list">http://code.google.com/p/sabreamf/downloads/list</a></li></ul>


<h3>componentsディレクトリにsabre_amf.phpを設置する</h3>
<p>
以下のソースをコピーして、[app/controllers/components/sabre_amf.php]として設置する。
</p>
<pre>set_include_path(APP.'vendors' . PATH_SEPARATOR . get_include_path());
App::import('Vendor', 'SabreAMF_CallbackServer', array('file'=&gt;'SabreAMF/CallbackServer.php'));

class SabreAmfComponent extends Object {
    function startup(&amp;$controller) {
        if ($controller-&gt;action == 'gateway') {
            global $_cakeController;
            $_cakeController = $controller;
            Configure::write('debug', 0);
            // コールバックサーバーを立ち上げる
            $controller-&gt;autoRender = false;
            $server = new SabreAMF_CallbackServer();
            $server-&gt;onInvokeService = array($this,'amfCallBack');
            $server-&gt;exec();
            exit;
        }elseif(empty($controller-&gt;amfExclude) || !in_array($controller-&gt;action,$controller-&gt;amfExclude)){
            exit();
        }
    }
    function amfCallBack($service, $method, $data) {
        global $_cakeController;
        $res = null;
        if ($_cakeController) {
            if (strpos($method, "_") !== 0) {  // _(アンダーバー)で始まるmethodはエラー。
                if (method_exists($_cakeController, $method) &amp;&amp; !in_array($_cakeController-&gt;action,$_cakeController-&gt;amfExclude)) {
                    // CakePHPのメソッドを呼び出せるように変換をかける。
                	$res = call_user_func_array( array( $_cakeController, $method ), $data );
                } else {
                    $res = "not found action.";
                }
            } else {
                $res = "invalid method name.";
            }
        }  else {
            $res = "not found controller.";
        }
        return $res;
    }
}
</pre>
<p>
コンポーネントのstartupメソッドで、CallbackServerを立ち上げ、
CallbackServerがリクエストを解析後、コールバックメソッドでCakePHPのメソッドを呼び出すという流れだ。<br />
そうすると、mxml側からCakePHPのコントローラーを引数つきで呼び出せる。
</p>

<h3>コントローラーの設置例</h3>
<p>以下のソースを[app/controllers/amfs_controller.php]として設置する</p>
<pre>amfExclude = array('normal');
	}
	//これは通常表示できるアクション
	function normal() {
        $this-&gt;set("hoge", date("Y-m-d H:i:s"));
	}
    function gettext($message){
        $ret = date("H:i:s")." ".$message;
        return  $ret;   //各action で return した値が flashに返る。
	}
	//配列返却
	function getarr($data) {
		return $data;
	}

}
?&gt;
</pre>
<p>
コントローラー側では、$componentsにSabreAmfを指定するだけで利用可能となる。<br />
また、beforeFilterメソッドで$this-&gt;amfExcludeに配列で除外対象のアクションを指定するとAMFでは利用できず、
通常のアクションとして利用できるようになる。</p>
<pre>$this-&gt;amfExclude = array('normal');
</pre>

<h3>AIRアプリケーションを作成例</h3>
<p>以下のコードを元にmxmlファイルを作成しコンパイルする。</p>
<pre>&lt;mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="240" height="408"&gt;<br />	&lt;mx:Script&gt;<br />		&lt;![CDATA[<br />			import mx.controls.Alert;<br />			import mx.utils.ArrayUtil;<br />			import mx.collections.ArrayCollection;<br />			import mx.rpc.events.*;<br />	<br />			[Bindable]<br />	  		private var myDataItem:ArrayCollection = new ArrayCollection;<br />	  		<br />	  		private function sendMessage():void {<br />				ro1.gettext(msg.text);<br />				msg.text = "";<br />	  		}<br />	  		private function resultHandler1(e:ResultEvent):void {<br />				log.text = e.result.toString() + "\n" + log.text;<br />	  		}  <br />	  		private function resultHandler2(evt:ResultEvent):void {<br />	  			myDataItem.addItem(evt.result);<br />	  		}<br />	  		private function faultHandler(evt:FaultEvent):void {<br />				Alert.show("Fault: " + evt.fault + " Msg: " + evt.message);<br />	  		}<br />		]]&gt;<br />	&lt;/mx:Script&gt;<br />	&lt;!--<br />	＜RemoteObject設定項目＞<br />	endpoint = "http://ホスト名/コントローラー名/gateway"<br />	destination = "送信先名"（内容な任意だが必須）<br />	result = "成功時の返信後処理"<br />	fault = "失敗時の返信後処理"<br />	<br />	gatewayファイルを設置した場合は、endpointでなく、sourceでクラスを指定する事もできる。<br />	<br />	endopointなどをservices-config.xmlで設定する事もできる。<br />	その場合、コンパイルオプションに、-services="services-config.xml"を追加する。<br />	--&gt;<br />  <br />	&lt;!-- 文字列読み込み例 --&gt;<br />	&lt;mx:RemoteObject id="ro1" <br />		endpoint = "http://localhost/amftest/amfs/gateway" <br />		destination="amftest"<br />		result="resultHandler1( event )"<br />		fault="faultHandler( event )"&gt;<br />	&lt;/mx:RemoteObject&gt; <br />	&lt;mx:TextArea id="log" width="200" height="152"  x="10.5" y="40"/&gt;<br />	&lt;mx:TextInput id="msg"  x="8.5" y="10"/&gt;<br />	&lt;mx:Button label="send" click="sendMessage()"  x="176.5" y="10"/&gt;<br />  <br />  <br />	&lt;!-- 配列読み込み例 --&gt;<br />	&lt;mx:RemoteObject id="ro2" <br />    	endpoint="http://amftest.localhost/amfs/gateway" <br />    	destination="amftest"<br />    	result="resultHandler2(event)" <br />    	fault="faultHandler(event)"&gt;<br />  	&lt;/mx:RemoteObject&gt;<br />	&lt;mx:Button label="array load test" click="ro2.getarr({col1:'1',col2:'abc'})"  x="10" y="360"/&gt;<br />	&lt;mx:DataGrid id="myData" dataProvider="{myDataItem}" x="10" y="200"&gt;<br />    &lt;mx:columns&gt;<br />    	&lt;mx:DataGridColumn headerText="列 1" dataField="col1"/&gt;<br />    	&lt;mx:DataGridColumn headerText="列 2" dataField="col2"/&gt;<br />	&lt;/mx:columns&gt;<br />	&lt;/mx:DataGrid&gt;<br />	<br />&lt;/mx:WindowedApplication&gt;</pre>
<p>
mxml側の処理としては、URLのフルパスをRemoteObjectのendpointとし、その際のactionをgatewayとする仕様とした。<br />
（例）http://localhost/コントローラー名/gateway<br />
その代わり、通常サービスを指定するsorceは指定しない。<br />
CakePHPの場合、dispatcherから呼び出されたコントローラーを操作できなくては、CakePHPの恩恵にあずかれない為、
gatewayを呼び出した際に、同時に呼び出されたコントローラーを処理対象のコントローラーとした方が処理効率がよいからだ。<br />
そして、後はボタンのクリックイベントなどに、RemoteObject.action()という形式で実装する事でCakePHPのアクションを呼び出せる。
</p>]]>
    </content>
</entry>

<entry>
    <title>NetBeans6.5でCakePHPを使う</title>
    <link rel="alternate" type="text/html" href="http://blog.non-style.com/2008/11/netbeans65cakephp.html" />
    <id>tag:blog.non-style.com,2008://1.54</id>

    <published>2008-11-19T14:34:03Z</published>
    <updated>2008-11-19T14:48:40Z</updated>

    <summary>ついにNetBeans6.5正式版が出ました！おめでとうございます！ http:...</summary>
    <author>
        <name>エガシラ　リュウジ</name>
        <uri>http://www.e-catchup.jp</uri>
    </author>
    
        <category term="CakePHP" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="cakephp" label="CakePHP" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="netbeans" label="NetBeans" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.non-style.com/">
        <![CDATA[<p>ついにNetBeans6.5正式版が出ました！おめでとうございます！</p>
<ul><li><a href="http://ja.netbeans.org/">http://ja.netbeans.org/</a></li></ul>
<p>そのNetBeansでCakePHPを利用するには、ちょっと工夫が必要だった。<br /></p>]]>
        <![CDATA[<p>プロジェクトのプロパティの指定方法を以下のようにすると、Rewriteモジュールを動作させた状態でデバッグもできる。</p>
<h3>プロジェクトURL</h3>
<pre>http://localhost/controller/action/　　　// 最後にスラッシュが必要<br />http://localhost/controller/action/2/　　// 引数がつく場合はその後ろにスラッシュ<br /></pre>
<h3>開始ファイル</h3>
<pre>index.php　　// こっちは余計なものは付けずにこれだけ<br /></pre>
<br /><br /><br />]]>
    </content>
</entry>

<entry>
    <title>[CakePHP1.2RC3]PHP4でhelperのbeforeRenderの値参照バグ</title>
    <link rel="alternate" type="text/html" href="http://blog.non-style.com/2008/11/cakephp12rc3php4helperbeforere.html" />
    <id>tag:blog.non-style.com,2008://1.53</id>

    <published>2008-11-10T22:48:10Z</published>
    <updated>2008-11-10T22:52:07Z</updated>

    <summary> helperのbeforeRenderで、ヘルパのプロパティを書き換える処理を...</summary>
    <author>
        <name>エガシラ　リュウジ</name>
        <uri>http://www.e-catchup.jp</uri>
    </author>
    
        <category term="CakePHP" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://blog.non-style.com/">
        <![CDATA[<p>
helperのbeforeRenderで、ヘルパのプロパティを書き換える処理を行っても、viewで同じ値を参照できない。
調べたらCakePHPのバグだった。</p><p>
PHP4の場合、foreachでの参照渡しができないから別のインスタンスの値を変更した事になる。</p><p>

[cake/libs/view/view.php]の_renderメソッド内の以下の部分を書き換える事で対応可。
</p>]]>
        <![CDATA[<pre>foreach ($loadedHelpers as $helper) {
	if (is_object($helper)) {
		if (is_subclass_of($helper, 'Helper') || is_subclass_of($helper, 'helper')) {
			$helper-&gt;beforeRender();
		}
	}
}
</pre>
<p>を以下のように変更。</p>
<pre>foreach ($loadedHelpers as $name =&gt; $helper) {
	if (is_object($helper)) {
		if (is_subclass_of($helper, 'Helper') || is_subclass_of($helper, 'helper')) {
			$loadedHelpers[$name]-&gt;beforeRender();
		}
	}
}
</pre>
<p>以前、componentでも同じようなバグがあったが、RC3では直ってる様子だった。</p>]]>
    </content>
</entry>

<entry>
    <title>PHP + NetBeansのススメ</title>
    <link rel="alternate" type="text/html" href="http://blog.non-style.com/2008/11/php-netbeans.html" />
    <id>tag:blog.non-style.com,2008://1.52</id>

    <published>2008-10-31T20:25:13Z</published>
    <updated>2008-11-01T06:06:25Z</updated>

    <summary>さて、久々の更新。時間がないのでざっくし版。みんな知ってると思うけど、もともとJ...</summary>
    <author>
        <name>エガシラ　リュウジ</name>
        <uri>http://www.e-catchup.jp</uri>
    </author>
    
        <category term="PHP" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="php" label="PHP" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.non-style.com/">
        <![CDATA[<p>さて、久々の更新。時間がないのでざっくし版。<br /><br />みんな知ってると思うけど、もともとJavaの統合開発環境である<a href="http://www.netbeans.org/index.html">NetBeans</a>でPHPが使えるんよっ。<br />2008年11月現在、NetBeansは<a href="http://download.netbeans.org/netbeans/6.5/rc/">6.5 RC2</a>が出ていてかなり使えるIDEになっている。<br /></p>]]>
        <![CDATA[<p>何がいいかっていうと、<br /></p><ul><li>Eclipseより重くない</li></ul><p>これに尽きる。。</p><p>他にも使い勝手がいい部分がいっぱいあるんだけど、開発段階で重くてイライラするのが一番辛い。<br />じゃぁ、EmacsやVimを使えって話だけど、VBから移行してきた自分としては、どうしてもステップ実行がないとさらに辛い。<br />オープンソースの解析時なんかはステップ実行できるのとできないのでは全然効率違うし。<br /><br />NetBeans+PHPのインストールや設定など詳しい説明は「<a href="http://snakemanshow.blogspot.com/2008/09/netbeans-65-cakephp-web-1.html">NetBeans 6.5 + CakePHP で Web アプリケーション開発</a>」に譲るとして簡単な特徴を紹介。<br /></p><ul><li>日本語インターフェイス。（これ重要）</li><li>コード補完可能です。（ちょっと不完全）</li><li>Eclipseよりかなり軽い（と感じる）。</li><li>ApacheのRewrite機能を使うようなフレームワークでもステップ実行可能。</li><li>もちろんステップ実行中の変数内の値参照も可能。</li></ul>
<p>が、現在のRC2版では、Windows環境で、変数内の値を参照した場合、日本語が化けてしまう。<br /><a href="http://blogs.sun.com/katakai/">NetBeansの中の人</a>？に聞いたところ、起動オプションをつける事で回避出来ないかとの事。<br /><br />仰せのままに起動オプションをつけて起動したところ、みごとに文字化けが直った！<br />具体的には・・・インストールディレクトリ内のetc/netbeans.confを開き、netbeans_default_optionsに以下の以下のオプションを付け足す。</p><pre>-J-Dfile.encoding=UTF-8</pre><p>ただし、何故かコードのフォントがセリフ付き、明朝体になってしまうのでフォント調整が必要。<br /></p><p>HTMLやCSSの編集についてはまだまだDreamweaverに軍配が上がるが、プログラムメインの案件ではNetBeansはかなりオススメ！&nbsp;</p><h2>お願い</h2><p>使ってみてよかったと思われる方は、是非、以下のサイトを参考に、NetBeansの<a href="http://cakephp.org/">CakePHPフレームワーク</a>のサポートに投票して下さいっ！</p><ul><li><a href="http://d.hatena.ne.jp/yandod/20080915/1221481103">sunのIDE
NetBeansのCakePHPサポート追加要望に投票をしよう！</a></li></ul><br /><br /><br />]]>
    </content>
</entry>

<entry>
    <title>フレームワークのキホンと高速開発CakePHP</title>
    <link rel="alternate" type="text/html" href="http://blog.non-style.com/2008/10/cakephp-5.html" />
    <id>tag:blog.non-style.com,2008://1.51</id>

    <published>2008-10-20T04:30:57Z</published>
    <updated>2009-03-29T01:51:26Z</updated>

    <summary> 2008/10/19に福岡でPHPの勉強会に参加しました。その時に、「フレーム...</summary>
    <author>
        <name>エガシラ　リュウジ</name>
        <uri>http://www.e-catchup.jp</uri>
    </author>
    
        <category term="CakePHP" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="PHP" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="cakephp" label="CakePHP" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.non-style.com/">
        <![CDATA[<p>
2008/10/19に福岡でPHPの勉強会に参加しました。<br />その時に、「フレームワークのキホンと高速開発CakePHP」というお題で発表させて頂きましたので、その時の資料をアップします。</p><div><br /></div>]]>
        <![CDATA[<p>たいそうなタイトルを名付けておりますが、主にこれからPHPのフレームワークを始めようかという「フレームワーク初心者向け」の簡単な資料ですので過剰な期待は不要です。。<br />勉強会の会場ではライブコーディング行い、Asotterというパクリ要素の強い簡単なコメント投稿ツールを作成しました。</p>
<p><iframe src="http://docs.google.com/EmbedSlideshow?docid=dggz6wvk_27fctrp4f9" width="410" frameborder="0" height="342"></iframe><br />
</p>

<p>- <b>ライブコーディングで使ったファイル -<br /></b></p>
<p>かなりふざけたアプリですが、あくまでネタという事で軽く参考程度にどうぞ。
<br />データベースを作って、データベースの接続設定を書き換えればそのまま動くはずです。</p>

<ul><li>asotter.zip（Asotter：CakePHP同梱完成版）</li><li>live_coding.txt（本番で使ったライブコーディングの手順メモ）<br /><br /></li></ul>
<p><small>※ すいません、年末にWebサーバがクラッシュして上記のファイルは紛失してしまいました。。</small></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]>
    </content>
</entry>

</feed>
