<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>cakephpを楽しむ-Materializing [マテリアライジング]</title>
    <link rel="alternate" type="text/html" href="http://www.materializing.net/" />
    <link rel="self" type="application/atom+xml" href="http://www.materializing.net/atom.xml" />
   <id>tag:www.materializing.net,2006://1</id>
    <link rel="service.post" type="application/atom+xml" href="http://www.materializing.net/weblog/mt-atom.cgi/weblog/blog_id=1" title="Materializing [マテリアライジング]" />
    <updated>2011-11-07T10:53:50Z</updated>
    <subtitle>web的暮らし と銘打ち、その足跡を遺していくサイトです。Movabletype,wordpress,EC-CUBE等のCMSをローカルサーバ立てて楽しんでます。それとちょびっとだけPHP。便利なソフトウェアや楽しそうなサイトも紹介中。</subtitle>
 

<entry>
    <title>baserCMS用｢Facebook LikeBoxプラグイン｣バージョンアップ：1.1.1</title>
    <link rel="alternate" type="text/html" href="http://www.materializing.net/archives/2011/11/07195333.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.materializing.net/weblog/mt-atom.cgi/weblog/blog_id=1/entry_id=560" title="baserCMS用｢Facebook LikeBoxプラグイン｣バージョンアップ：1.1.1" />
    <id>tag:www.materializing.net,2011://1.560</id>
    
    <published>2011-11-07T10:53:33Z</published>
    <updated>2011-11-07T10:53:50Z</updated>
    
    <summary> 公開中のbaserCMS用のFacebook LikeBoxプラグインをバージョンアップしました。 今回は以下の対応。 	スマートフォン用のビューを追加 ファイルのダウンロード 最新版は以下のページでダウンロード出来ます。 baserCMS用｢Faceboo...</summary>
    <author>
        <name>arata</name>
        <uri>http://www.materializing.net/</uri>
    </author>
    
        <category term="cakephpを楽しむ" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.materializing.net/">
        <![CDATA[<p>
公開中のbaserCMS用のFacebook LikeBoxプラグインをバージョンアップしました。<br />
今回は以下の対応。
</p>

<ul>
	<li>スマートフォン用のビューを追加</li>
</ul>

<h3>ファイルのダウンロード</h3>

<p>
最新版は以下のページでダウンロード出来ます。<br />
<a href="http://www.materializing.net/archives/2011/05/28164038.php">baserCMS用｢Facebook LikeBoxプラグイン｣はこちら</a>。<br />

</p>]]>
        <![CDATA[<h4>あとがき</h4>

<p>
<a href="http://www.materializing.net/archives/2011/11/05013843.php">気になるATND検索</a> は、baserCMSのスマートフォン対応機能を利用しているのですが、色々と動作を見ている際に、そういやビュー(テンプレート)がない事に気付きました。
</p>

<p>
これで解決～ヽ( ・ω・)ﾉ
</p>]]>
    </content>
</entry>

<entry>
    <title>baserCMS＋ATND APIで「気になるATND検索」</title>
    <link rel="alternate" type="text/html" href="http://www.materializing.net/archives/2011/11/05013843.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.materializing.net/weblog/mt-atom.cgi/weblog/blog_id=1/entry_id=558" title="baserCMS＋ATND APIで「気になるATND検索」" />
    <id>tag:www.materializing.net,2011://1.558</id>
    
    <published>2011-11-04T16:38:43Z</published>
    <updated>2011-11-04T18:03:00Z</updated>
    
    <summary> 以前にCakePHPを利用して、ATNDに登録されているイベントを検索出来るサイトを制作しました。 そこで今回は、CakePHPベースの国産CMSであるbaserCMSを利用して、同一＋αのものが出来ないか挑戦してみました。 気になるATND検索　概要 ■気...</summary>
    <author>
        <name>arata</name>
        <uri>http://www.materializing.net/</uri>
    </author>
    
        <category term="cakephpを楽しむ" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.materializing.net/">
        <![CDATA[<p>
以前にCakePHPを利用して、<a href="http://www.materializing.net/archives/2011/02/06084415.php">ATNDに登録されているイベントを検索出来るサイト</a>を制作しました。<br />
そこで今回は、CakePHPベースの国産CMSである<a href="http://basercms.net/">baserCMS</a>を利用して、同一＋αのものが出来ないか挑戦してみました。
</p>

<h3>気になるATND検索　概要</h3>

<p>
<big>■<a href="http://kininaruatnd.materializing.net/">気になるATND検索</a></big>
</p>

<a href="http://basercms.net/">baserCMS</a>、<a href="http://jquerymobile.com/">jQueryMobile</a>、<a href="http://api.atnd.org/">ATND API</a>
<ul>
<li>ATNDに登録してあるイベントを検索出来ます。</li>
<li>利用した検索ワードはクッキーに保存され、次アクセス時等、一旦ページを離れた場合でも、フォームに自動入力されます。</li>
<li>気になったイベントは保存する事が出来ます。保存の仕組にクッキーを利用してます。</li>
<li>基本的にiPhone(スマートフォン)用</li>
</ul>

<p>
前回のものとほぼ同一仕様。。。ですが、baserCMSを利用している！というのが強いて言うならポイントです。<br />
<span style="color:#999999">※やってみたかったんですよぉ(･ω･)</span>
</p>]]>
        <![CDATA[<h3>作ってみた楽しかったところ・良かったところ</h3>

<p>
基本的な動作は既に前回作成済だったので、移行自体は早く済みました。<br />
それと、作成していた動作やコードの見直しも出来たし、加えて、基礎部分はbaserCMSが担ってくれているので、この点が快適作業に繋がりました。
</p>

<p>
また、baserCMSはスマートフォン対応というところで、その仕組を利用したかった点が挙げられます。<br />
更新情報にブログ機能が使えますし。<br />
それと、サイトを出来るだけ簡単に管理出来るようにしたかったので導入しました。
</p>

<p>
この目論見は大当りで、テンプレートさえ作ってしまえば、あとは管理画面からの簡単更新。<br />
「設置も更新も簡単！」という謳い文句もぴったり～丶(･ω･)ノ
</p>

<h3>課題として残っている点ややってみたい点、ダメなところ</h3>

<p>
前回からの引継ぎがほとんど。。。なんというダメ具合（泣
</p>

<p>
■リクエストURLに期間を指定するとエラーになる。<br />
　+ 既に終了、又は開催日が過ぎたイベントのみの場合<br />
　+ ブラウザからURLを直接叩いた場合は、結果が取れる<br />
■クッキーが保存されているなら、その情報をもとにしてボタンを押さずに結果が表示されるようにしてみたい。<br />
■クッキー削除、セッション削除時、画面変遷が必要ないAjax仕様にしてみたい。<br />
■気になるリスト に保存した際、画面変遷がない仕様にしてみたい。<br />
■過去の検索ワードを保存して、何らかの仕組を作ってみたい。(取得するのは検索語だけ)。
</p>

<h3>Mashup Awards 7 に参加</h3>

<p>
<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="https://ma7.mashupaward.jp/?locale=ja"><img alt="Mashup Awards 7" src="http://www.materializing.net/images/banner_ma7.gif" width="160" height="160" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /></a></span><br />
<strike>これから参加申込しまーす。</strike><br />
参加申込完了しましたー。
</p>

<p>
<big>■<a href="https://ma7.mashupaward.jp/works/231?locale=ja">MA7&nbsp;サイト内、作品紹介ページ</a></big>
</p>

<h4>あとがき</h4>

<p>
はっきり言って、自分の旬は<a href="http://basercms.net/">baserCMS</a>です。<br />
なので、どうしてもこれ使って何かやりたいなぁ～って思ってる時に、Mashup Awardsを知りました。<br />
なので、参加するために作り直してみました。
</p>

<p>
前のサイトよりも愛着が湧いたので、これから思いついた事とかやってみたい事は、このサイトもベースにして挑戦して行きたいなぁ～、って思ってます。
</p>

<p>
新しくなった「気になるATND検索」を宜しくお願いしまーすm(。。)m
</p>]]>
    </content>
</entry>

<entry>
    <title>baserCMS用｢Facebook LikeBoxプラグイン｣バージョンアップ：1.1.0</title>
    <link rel="alternate" type="text/html" href="http://www.materializing.net/archives/2011/08/30212908.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.materializing.net/weblog/mt-atom.cgi/weblog/blog_id=1/entry_id=555" title="baserCMS用｢Facebook LikeBoxプラグイン｣バージョンアップ：1.1.0" />
    <id>tag:www.materializing.net,2011://1.555</id>
    
    <published>2011-08-30T12:29:08Z</published>
    <updated>2011-11-06T16:58:44Z</updated>
    
    <summary> 以前、公開したbaserCMS用のFacebook LikeBoxプラグインをバージョンアップしました。 新に追加した機能は以下の2つ。 	日本語、英語表示の切替 	枠線色設定の追加 きっかけとなったのはTwitterでの一言。 それから詳細情報がフォーラム...</summary>
    <author>
        <name>arata</name>
        <uri>http://www.materializing.net/</uri>
    </author>
    
        <category term="cakephpを楽しむ" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.materializing.net/">
        <![CDATA[<p>
以前、公開したbaserCMS用のFacebook LikeBoxプラグインをバージョンアップしました。<br />
新に追加した機能は以下の2つ。
</p>

<ul>
	<li>日本語、英語表示の切替</li>
	<li>枠線色設定の追加</li>
</ul>

<p>
きっかけとなったのは<a href="https://twitter.com/#!/QuarisJP/status/105896768117551104" class="target-blank">Twitterでの一言</a>。<br />
それから詳細情報が<a href="http://forum.basercms.net/modules/newbb/viewtopic.php?topic_id=378&forum=7" class="target-blank">フォーラム</a>に届きました。
</p>

<p>
プラグインへの取込を相談したところ、ご快諾頂けました～丶(･ω･)ノ<br />
ので、公開します！
</p>]]>
        <![CDATA[<h3>ファイルのダウンロード</h3>

<p>
最新版は以下のページでダウンロード出来ます。<br />
<big><strong><a href="/archives/2011/05/28164038.php">baserCMS用｢Facebook LikeBoxプラグイン｣はこちら</a>。<br />
</strong></big>
</p>

<h3>バージョンアップする際は以下</h3>

<p>
解凍して出来た fb_likebox フォルダを、そのまま <strong>/app/plugins の中にアップ</strong>します。<br />
※fb_likeboxフォルダごと、全てのファイルを上書きです。<br />
BASER/app/plugins/fb_likebox
</p>

<p>
その後、システム設定 -> プラグイン管理 と進み、Facebook LikeBoxプラグインのバージョンアップを行います。<br />
→ 「UP」の表示が出ているボタンをクリック。
</p>

<p>
以上！！
</p>

<h3>動作確認</h3>

<p>
過去に設定していた値は保存されているか？<br />
新しい設定項目は増えているか？<br />
ちゃんと保存されるか？<br />
公開側に変更した設定が反映されるか？
</p>

<p>
・・・辺りを確認して下さいね。
</p>

<p>
もし、正しくアップデート出来ないとか、動作不良が起こったら教えて貰えると嬉しいです。<br />
よろしくお願いします～ ･ω･
</p>


<h4>あとがき</h4>

<p>
DBの構造変更を伴う初のアップデート。<br />
という事で、初めてアップデート用のスクリプト書きました。<br />
動作確認は取ったし、不具合なく動いてくれると良いな。。。
</p>

<p>
ちなみに baserCMSでは、以下の箇所にアップデートについての解説が載せてあります。<br />
/baser/controllers/updaters_controller.php
</p>

<p>
感想とか不具合報告など、引き続きやメールやTwitter等で受付中で～す。<br />
どうぞお気軽に ヽ( ・ω・)ﾉ
</p>]]>
    </content>
</entry>

<entry>
    <title>Netbeans＋XdebugをBaserCMSで利用する時の注意点</title>
    <link rel="alternate" type="text/html" href="http://www.materializing.net/archives/2011/05/29055015.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.materializing.net/weblog/mt-atom.cgi/weblog/blog_id=1/entry_id=553" title="Netbeans＋XdebugをBaserCMSで利用する時の注意点" />
    <id>tag:www.materializing.net,2011://1.553</id>
    
    <published>2011-05-28T20:50:15Z</published>
    <updated>2011-05-28T20:50:21Z</updated>
    
    <summary> ローカル環境(XAMPP)用意した。 BaserCMSインストールした。 Netbeans＋Xdebug でデバッガー稼働出来るようにした。 ブレークポイントも設定した。 よっし変数の流れ追ってみよー！・・・・・止まらんΣ(ﾟДﾟ) そんな時の注意点です。 ...</summary>
    <author>
        <name>arata</name>
        <uri>http://www.materializing.net/</uri>
    </author>
    
        <category term="cakephpを楽しむ" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.materializing.net/">
        <![CDATA[<p>
ローカル環境(XAMPP)用意した。<br />
BaserCMSインストールした。<br />
Netbeans＋Xdebug でデバッガー稼働出来るようにした。<br />
ブレークポイントも設定した。
</p>

<p>
よっし変数の流れ追ってみよー！・・・・・止まらんΣ(ﾟДﾟ)
</p>

<p>
そんな時の注意点です。
</p>]]>
        <![CDATA[<p>
<big>スマートURLをONにしている時は、実行構成の初期実行ファイルを、webroot直下のindex.php に設定する！</big>
</p>

<p>
・・・これだけ。でも大事。
</p>

<p>
スマートURLがOFFの時は、設置したBaserCMS直下の index.php に処理が走るのですが、スマートURLをONにして、リライトを使うと /app/webroot/ 以下の index.php に処理が移ります。
</p>

<p>
なので、Netbeansのプロジェクトを右クリックしてプロパティ -> 実行構成 -> 開始ファイル のところを、「app/webroot/index.php」にしておく必要があります。
</p>

<h4>あとがき</h4>

<p>
愛用してたzip版のxampp環境がぶっ壊れたのでxampp入れ替えました。<br />
これを機に、どうせいつも使うものだしインストーラー版も使ってみたかったし、こっちをインストール。<br />
特別な支障は出てないんだけど、Apacheのバーチャルホストに設定していたディレクトリが存在しないため、Apacheが起動しないという問題点には1時間ばかしハマってました。。。（ノ∀`）ｱﾁｬｰ
</p>

<p>
あ、それと公開したFacebook LikeBoxプラグインですが、早速見逃してたバグがあったので更新しました。。。（ノ∀`）ｱﾁｬｰ2
</p>

<p>
通常の動作には問題ないんですけど、こういうのもちゃんと解消しておくの大事ですもんね！
</p>]]>
    </content>
</entry>

<entry>
    <title>BaserCMS用｢Facebook LikeBoxプラグイン｣作りました。</title>
    <link rel="alternate" type="text/html" href="http://www.materializing.net/archives/2011/05/28164038.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.materializing.net/weblog/mt-atom.cgi/weblog/blog_id=1/entry_id=552" title="BaserCMS用｢Facebook LikeBoxプラグイン｣作りました。" />
    <id>tag:www.materializing.net,2011://1.552</id>
    
    <published>2011-05-28T07:40:38Z</published>
    <updated>2011-11-06T16:56:48Z</updated>
    
    <summary> 以前にBaserCMS勉強会に参加した時、プラグイン作成の基礎を学びました。 ■BaserCMS勉強会@福岡 vol.4 : ATND それを活かしてプラグイン作ってみました。 BaserCMS用の私の初プラグインです！こんな私でもやってみました。 Face...</summary>
    <author>
        <name>arata</name>
        <uri>http://www.materializing.net/</uri>
    </author>
    
        <category term="cakephpを楽しむ" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.materializing.net/">
        <![CDATA[<p>
以前にBaserCMS勉強会に参加した時、プラグイン作成の基礎を学びました。<br />
■<a href="http://atnd.org/events/13608" title="BaserCMS勉強会@福岡 vol.4 : ATND">BaserCMS勉強会@福岡 vol.4 : ATND</a>
</p>

<p>
それを活かしてプラグイン作ってみました。<br />
BaserCMS用の私の初プラグインです！こんな私でもやってみました。
</p>

<h3>Facebook LikeBoxプラグイン</h3>

<p>
BaserCMSの管理画面上から、Facebook LikeBoxの表示状態を変更・確認し、ウィジェットとして利用する事が出来るプラグインです。
</p>

<p>
FacebookのLikeBoxについてはこちらで見ることが出来ます。<br />
■<a href="http://developers.facebook.com/docs/reference/plugins/like-box/" title="Like Box - Facebook開発者">Like Box - Facebook開発者</a>
</p>

<h4>機能概要</h4>

<p>
表示幅や顔アイコンの有無などを設定出来ます。<br />
専用のウィジェットが追加されます。
</p>]]>
        <![CDATA[<h3>ファイルのダウンロード</h3>

<p>
先ずはBaserCMS用Facebook LikeBoxプラグイン・ファイルをダウンロード。<br />
最新版使って下さい。
</p>

<ul>
<li><big><span class="mt-enclosure mt-enclosure-file" style="display: inline;"><a href="http://www.materializing.net/archive/fb_likebox-1.1.1.zip">fb_likebox-1.1.1.zip</a></span></big>：2011/11/07</li>
<li><span class="mt-enclosure mt-enclosure-file" style="display: inline;"><a href="http://j.mp/qdqrGb">fb_likebox-1.1.0.zip</a></span>：2011/08/30</li>
<li><span class="mt-enclosure mt-enclosure-file" style="display: inline;"><a href="http://j.mp/j8CEOB">fb_likebox-1.0.1.zip</a></span>：2011/05/29･･･バグフィックス</li>
	<li><span class="mt-enclosure mt-enclosure-file" style="display: inline;"><a href="http://j.mp/lBTUHc">fb_likebox-1.0.0.zip</a></span>：2011/05/28</li>
</ul>

<h3>インストール</h3>

<p>
他のプラグインと同様の扱い方です。<br />
ファイルを解凍して出来たフォルダ(fb_likebox)を、そのまま <strong>/app/plugins の中にアップ</strong>。<br />
その後、システム設定 -> プラグイン管理 と進み、Facebook LikeBoxプラグインを登録します。
</p>

<p>
こちらも参考としてどうぞ。<br />
■<a href="http://basercms.net/manuals/introductions/install_plugin" title="プラグインのインストール｜導入｜制作・開発マニュアル｜BaserCMS - 国産オープンソース！コーポレートサイトにちょうどいいCMS">プラグインのインストール｜導入｜制作・開発マニュアル｜BaserCMS</a>
</p>

<h3>使い方</h3>

<p>
プラグイン一覧に並んでる Facebook LikeBoxプラグイン の「管理」ボタンから、設定画面へ移動出来ます。
</p>

<p>
※システム設定 -> グローバルメニュー管理 と進み、管理画面側のグローバルメニューとして登録しておく際は、以下のURLを登録しておくと良いです。
</p>

<pre><code>/admin/fb_likebox/fb_likebox_configs</code></pre>

<p>
<a rel="lightbox" href="http://farm3.static.flickr.com/2778/5761526210_d7c7ee7a09_b.jpg" title="Facebook LikeBoxプラグイン設定画面 by materializing, on Flickr"><img src="http://farm3.static.flickr.com/2778/5761526210_d7c7ee7a09_m.jpg" width="213" height="240" alt="Facebook LikeBoxプラグイン設定画面" class="mt-image-left" ></a>管理画面の雰囲気はこんな感じ。<br />
設定値を変えて保存したら、下段の表示状態が変わります。
</p>

<p>
それぞれの項目についての解説は、「？」をクリックすると表示されます。<br />
現在の公式サイトに掲載されてるパラメータと同様の内容を用意してます。<br />
(2011/05/27時点)
</p>

<p>
ひとつひとつの項目の解説は<strike><span style="color:#333333">メンドウなので</span></strike>見て判ると思うので省きますね。
</p>

<h3>表示させる時の使い方</h3>

<p>
Facebook LikeBoxプラグインは、その表示部分をBaserのウィジェットに登録してます。<br />
システム設定 -> ウィジェットエリア管理 -> (任意の)ウィジェットの編集<br />
に入って、「利用中のウィジェット」欄に、Facebook LikeBoxプラグイン・ウィジェットをドラッグ＆ドロップします。<br />
ドロップした時に表示される個別ウィジェット設定の「利用する」チェックボックスにチェックを入れて「保存」。
</p>

<p>
以上で利用中のウィジェットエリア内に表示されるようになります。
</p>


<h3>Facebook LikeBoxプラグインについてのご意見・問合せ先</h3>

<p>
以下にて気軽にどうぞー ･ω･
</p>

<ul>
	<li><a href="http://twitter.com/arata">Twitter＠arata</a></li>
	<li>この記事へのコメント</li>
	<li>ページの下部にある「問合せなどのご連絡はこちらより」のリンク先から</li>
</ul>

<h3>作成裏話(表に出しちゃってるけど裏話)</h3>

<p>
最初は、管理画面側の設定画面と表示確認画面を分けて用意しようかと思っていたのですが、よくよく考えると設定値を保存時にリロードが掛かるし、だったら入力画面側に置いておいた方がすぐ確認出来て良いかな？と思って1つに統合してみました。
</p>

<p>
また、最初のコントローラ名は「facebook_likebox」だったんですが、のちにより良いプラグインを開発する方と名前が被りそうだったので止めて、「facebook_badge_likebox」に変更。<br />
次に、名前が長過ぎるのではないか？というアドバイスを受けて短めに変更。<br />
そして今の「fb_likebox」に落ち着きました。<br />
つまり、fb をFacebookの略称として使ってます。
</p>


<h4>あとがき</h4>

<p>
初のプラグイン作成、えっちらおっちらようやく完成しました。<br />
私自身はFacebookを良く知らんので、はたして使ってくれるひとはいるのかな？といった感じでして（汗<br />
もし誰かの何かに役立つようなら嬉しいです丶(･ω･)ノ
</p>

<p>
難しいところは初期データ登録のところ。<br />
この辺はそのうち記事として書こうかな、って思ってマス。
</p>

<p>
それから、動作検証時、CSVでマトモに動かない症状を見つけて貰いました。<br />
某方にほんと感謝です！<br />
というワケで、自分なりの動作検証環境を作るきっかけになりました。<br />
この辺もいずれ記事として上げる予定。
</p>

<p>
<br />
<strong>＜開発者さんに向けて＞</strong>
</p>

<p>
BaserCMSはプラグイン作成に向けての仕組みを強力に用意してます。<br />
基本的にはCakePHPの規約に沿って作るのと、幾つかのBaser仕様を入れ込むと良いです。<br />
■<a href="http://basercms.net/manuals/programmers/4.html" title="プラグイン開発について｜プログラマーズ｜制作・開発マニュアル｜BaserCMS - 国産オープンソース！コーポレートサイトにちょうどいいCMS">プラグイン開発について｜BaserCMS</a><br />
私でも出来たくらいなので、興味湧いた方はやってみて貰いたいなぁ。。。
</p>

<p>
<big>Baserしませんか？</big><span style="color:#999999"><strike>セ○ムしませんか？</strike></span>
</p>

<h4>最後にひとこと</h4>

<p>
<big>Facebook用のプラグイン作っておいてFacebookやってないとかどんだけバグなの！</big>
</p>]]>
    </content>
</entry>

<entry>
    <title>cakephpでhttp_build_query使う時の＆(アンパサンド)</title>
    <link rel="alternate" type="text/html" href="http://www.materializing.net/archives/2011/02/19085144.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.materializing.net/weblog/mt-atom.cgi/weblog/blog_id=1/entry_id=548" title="cakephpでhttp_build_query使う時の＆(アンパサンド)" />
    <id>tag:www.materializing.net,2011://1.548</id>
    
    <published>2011-02-18T23:51:44Z</published>
    <updated>2011-02-18T23:51:35Z</updated>
    
    <summary> 今日は福岡でWordCamp Fukuoka開催です。 ■WordCamp Fukuoka 2011 残念なことに私は行く事が出来ないので、色んなレポート記事が上がるのを楽しみにしつつ、こうしてCakePHPを触るのです。。。泣かない。 というワケで、Cak...</summary>
    <author>
        <name>arata</name>
        <uri>http://www.materializing.net/</uri>
    </author>
    
        <category term="cakephpを楽しむ" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.materializing.net/">
        <![CDATA[<p>
今日は福岡でWordCamp Fukuoka開催です。<br />
■<a href="http://2011.wordcampfukuoka.com/" title="WordCamp Fukuoka 2011 -2011年2月19日に開催されるワードキャンプ福岡2011の公式サイトです-">WordCamp Fukuoka 2011</a><br />
残念なことに私は行く事が出来ないので、色んなレポート記事が上がるのを楽しみにしつつ、こうしてCakePHPを触るのです。。。泣かない。
</p>

<p>
というワケで、Cakeです。<br />
今回はPHPにある｢http_build_query()｣を利用した際に、ちょこっと気付いた事がありました。<br />
■<a href="http://php.net/manual/ja/function.http-build-query.php" title="PHP: http_build_query - Manual">PHP: http_build_query - Manual</a>
</p>]]>
        <![CDATA[<h3>連想配列からクエリー文字列を生成してくれる便利なhttp_build_query()</h3>

<p>
http_build_query() は便利関数です。<br />
この引数に連想配列渡すと、クエリー文字列に変換してくれます。
</p>

<pre><code>$array(
	'hoge1'&nbsp;=&gt;&nbsp;1
	'hoge2'&nbsp;=&gt;&nbsp;2
	'hoge3'&nbsp;=&gt;&nbsp;3
);
$query&nbsp;=&nbsp;http_build_query($array);</code></pre>

<p>
var_dump($query)&nbsp;すると&nbsp;hoge1=1&amp;hoge2=2&amp;hoge3=3<br />
｢＆｣アンパサンドは、第3引数(区切り文字列を指定)に指定がなければデフォルトで適用されます。<br />
便利ですね！
</p>

<p>
で、これをそのままCakeで使ってみると、＆が｢＆amp;｣に変換されてしまいました。<br />
＆はそのまま利用したいので、これは困った(´･ω･)<br />
なので、第3引数に指定。
</p>

<pre><code>http_build_query($array,&nbsp;NULL,&nbsp;<span style="color:#CC0000">'&amp;'</span>);</code></pre>

<p>
これでそのまま使う事が出来ました。やったー！
</p>

<p>
ただし、PHPマニュアルページのコメントにあるように、アンパサンドの取扱いには幾つか留意点があるみたいです。<br />
動作が異なる場合は、色んなやり方を試してみないと判りませんね。
</p>

<h3>引数に指定が要らないメソッド</h3>

<p>
通常、コントローラでは引数でパラメータ渡します。<br />
function&nbsp;hoge($hoge,&nbsp;$hoge2) みたいな感じですね。<br />
ところが、この引数の数が決まってない場面、引数を可変したい場面で使えます。
</p>

<p>
Cakeでは、引数からコントローラに入ってくる値がこのようになります。<br />
以下のURLを例にしてみます。<br />
http://address/controller/hoge1:1/hoge2:2
</p>

<p>
function controller() には以下のように入って来ます。<br />
$this-&gt;params['named']['hoge1'];<br />
$this-&gt;params['named']['hoge2'];
</p>

<p>
namedをキーとした連想配列ですね。<br />
なので、これをそのまま http_build_query($this->params['named']) に渡すと。。。<br />
<strong>hoge1=1&amp;hoge2=2</strong>
</p>

<p>
これはなんという楽チンさ！<br />
引数の要らないメソッドで行けますね。可変どんと来い丶(･ω･)ノ
</p>

<h3>ついでにキー値の判定</h3>

<p>
とりあえず話は終りなんですが、ついでに特定のキーを判定したい時。<br />
array_key_exists() 使います。もしくはCakeの場合 Set::check()。
</p>

<pre><code>if(array_key_exists('hoge2',&nbsp;$array))&nbsp;{
	Set::remove($array,&nbsp;'hoge2');
}</code></pre>

<p>
キーに hoge2 が存在する時は、そのhoge2キー値を削除。。。とか。
</p>

<h3>あとがき</h3>

<p>
コントローラをもそもそ触っていて、引数の数がとんでもない事になった上、可変する！？という状況に当ってしまいました。<br />
それで、なんとか出来ないかなぁ？と考えてる時に、paramsの存在を思い出したので良かったです。
</p>

<p>
URLに Key:値 とすればそのまま引き込んでくれるとか、やっぱりCakeはすごいですね（＾ω＾）
</p>]]>
    </content>
</entry>

<entry>
    <title>｢気になるATND検索｣作って判ったことや反省点とか。</title>
    <link rel="alternate" type="text/html" href="http://www.materializing.net/archives/2011/02/09091108.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.materializing.net/weblog/mt-atom.cgi/weblog/blog_id=1/entry_id=547" title="｢気になるATND検索｣作って判ったことや反省点とか。" />
    <id>tag:www.materializing.net,2011://1.547</id>
    
    <published>2011-02-09T00:11:08Z</published>
    <updated>2011-02-26T08:49:35Z</updated>
    
    <summary> 先日公開してみた｢気になるATND検索｣ですが、解決した点とか反省点があります。 ･･･ほんと恥ずかしい点もあってアレなんですが（汗 ウェブアプリ作ってみると本当に勉強になります。 それもローカルだけで動かすのではなくて、公開までやってみるとより一層。 先ず...</summary>
    <author>
        <name>arata</name>
        <uri>http://www.materializing.net/</uri>
    </author>
    
        <category term="cakephpを楽しむ" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.materializing.net/">
        <![CDATA[<p>
先日公開してみた｢<a href="http://apiapps.materializing.net/atnds" title="気になるATND検索">気になるATND検索</a>｣ですが、解決した点とか反省点があります。<br />
･･･ほんと恥ずかしい点もあってアレなんですが（汗
</p>

<p>
ウェブアプリ作ってみると本当に勉強になります。<br />
それもローカルだけで動かすのではなくて、公開までやってみるとより一層。
</p>

<p>
先ずは、落ち着いて書いたものを見直しましょう。。。という点。
</p>]]>
        <![CDATA[<h3>デバッグレベルを｢0｣にすると動作が変わる</h3>

<p>
CakePHPでは、公開する時に基本的にデバッグレベルの設定値を｢0｣にするのですが、いざファイルを上げてCakeを置いているトップにアクセスすると、404エラーが発生してました。<br />
う～んう～んナゼに！？とひどく頭を悩ませてました。。。
</p>

<p>
トップの表示を変更するために、<br />
/cake/libs/view/pages/home.ctp をコピーして /app/views/pages/home.ctp に置いて利用します。<br />
この際に見逃していたコードがありました。
</p>

<pre><code>if&nbsp;(Configure::read()&nbsp;==&nbsp;0):
	$this-&gt;cakeError('error404');
endif;</code></pre>

<p>
コードの存在そのものもなのですが、<strong>このreadメソッド、引数がないと｢デバッグレベル｣の値を読み込んでくれます。</strong><br />
そりゃ404帰って来ますね。。。リアルに(゜ロ゜)ギョエエェってなりました。<br />
今回はこのコード＋ビュー側に動作コードがないハズ、という思い込み。<br />
思い込みキケン！だめぜったい！
</p>

<p>
ちなみに引数はwrite()で書き込んだ設定値を取って来てくれます。<br />
■<a href="http://book.cakephp.org/ja/view/924/Configuration%E3%82%AF%E3%83%A9%E3%82%B9" title="Configurationクラス :: 環境設定 :: CakePHPによる開発 :: マニュアル :: 1.3コレクション">Configurationクラス :: 環境設定 :: CakePHPによる開発 :: マニュアル :: 1.3コレクション</a><br />
これを利用してゴニョゴニョする方法もあるのですが、それはまたいずれ。
</p>

<p>
<span style="color:#CC0000"><big>▼教訓：ファイルをコピーして利用する時は、必ず詳細に確認しましょう！･･･orz</big></span>
</p>

<h3>シリアライズかけて利用</h3>

<p>
クッキーの配列利用が出来なかったのはこれでした。
</p>

<pre><code>//&nbsp;2次元等の配列はシリアライズして書き込む
$arrayCookies&nbsp;=&nbsp;serialize($arrayCookies);

//&nbsp;クッキーに保存されている配列
$arrayCookies&nbsp;=&nbsp;$this-&gt;Cookie-&gt;read('hogeCookies');
//&nbsp;アンシリアライズして利用する
$arrayCookies&nbsp;=&nbsp;unserialize($arrayCookies);</code></pre>

<p>
暗号化さえすればそのまま行けるだろうって思ってたんですけど、犯人はここでした。<br />
■多次元配列のクッキー作る -> シリアライズ -> 書込<br />
■クッキー読込 -> アンシリアライズ ->使う<br />
この流れをきちんと留めておこうと思います。
</p>

<p>
<span style="color:#CC0000"><big>▼教訓：配列やオブジェクトは(アン)シリアライズかけて利用しましょう！･･･orz</big></span>
</p>

<h3>公開状態にしてからのテスト</h3>

<p>
今回、作成したあとに即公開して後悔しちゃいました。<br />
もっと公開スペースで動作確認してから、それから開示ですね。<br />
いざアップして、一見したくらいでは気付かなかった点や、ローカルでは動くのにアップするとダメになる点、というのがありました。
</p>

<p>
なので、せっかく作ったしすぐ公開！というのは勇み足なので、テストしてローカルでの状態との違いを把握して、それから開示しないといけませんね。
</p>

<p>
<span style="color:#CC0000"><big>▼教訓：テストしっかりしましょう！･･･orz</big></span>
</p>

<h3>セッションとクッキーの使い分け</h3>

<p>
単純に自分だけのPCのローカルサーバで、クッキーとセッションの違いを把握するために動かすだけなら別に良いけど、公開して正式稼働を目指すなら、この辺ちゃんと整えないといけないな、という点。
</p>

<p>
セッション自体は利用サーバの機能を利用するため、負荷も高くなるし、何時間も保存しておくような用途としてはちょっと違うな、と。<br />
あとは、そのサーバの機能によっても左右されるので、それならクッキー使う方が安定した稼働を望めそうなところ。
</p>

<p>
<span style="color:#CC0000"><big>▼教訓：セッションとクッキーの違いを見直しましょう！･･･orz</big></span>
</p>

<h4>あとがき</h4>

<p>
自分ひとりでは本当にどうして良いのか判らなくなったので、某方に質問し、助けて頂きました。<br />
チャチャッと見てササッと判定し、原因を特定しちゃうところがやはりすごくて、こういうのが職業プログラマとアマグラマの違いだなぁ、と思ってみたり。<br />
素晴らしいっす。。。丶(･ω･)ノ<br />
時間割いて頂いて本当にありがとうございました。
</p>

<p>
他にもやってみたい点があるから、それらをぼちぼちと改修していこうー。
</p>]]>
    </content>
</entry>

<entry>
    <title>ATND API＋CakePHPでイベント検索。｢気になるATND検索｣</title>
    <link rel="alternate" type="text/html" href="http://www.materializing.net/archives/2011/02/06084415.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.materializing.net/weblog/mt-atom.cgi/weblog/blog_id=1/entry_id=546" title="ATND API＋CakePHPでイベント検索。｢気になるATND検索｣" />
    <id>tag:www.materializing.net,2011://1.546</id>
    
    <published>2011-02-05T23:44:15Z</published>
    <updated>2011-02-09T05:01:41Z</updated>
    
    <summary> ウェブAPIを用いた検索に挑戦したかったので、勉強も兼ねて作ってみました。 API初挑戦。ATND API＋CakePHP。 ｢気になるATND検索｣概要 ■気になるATND検索 CakePHP、ATND API、jQuery Mobile、jQuery 	...</summary>
    <author>
        <name>arata</name>
        <uri>http://www.materializing.net/</uri>
    </author>
    
        <category term="cakephpを楽しむ" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.materializing.net/">
        <![CDATA[<p>
ウェブAPIを用いた検索に挑戦したかったので、勉強も兼ねて作ってみました。<br />
API初挑戦。ATND API＋CakePHP。
</p>

<h3>｢気になるATND検索｣概要</h3>

<p>
<big>■<a href="http://apiapps.materializing.net/atnds" title="気になるATND検索">気になるATND検索</a></big><br />
CakePHP、ATND API、jQuery Mobile、jQuery
</p>

<ul>
	<li>ATNDに登録してあるイベントを検索出来ます。</li>
	<li>利用した検索ワードはクッキーに保存され、次アクセス時等、一旦ページを離れた場合でも、フォームに自動入力されます。</li>
	<li>気になったイベントは保存する事が出来ます。<strike>こちらはセッションを利用。</strike> -> クッキー利用に切替ました。</li>
</ul>

<p>
また、最近jQuery Mobileのalpha3が出たので利用してみました。<br />
■<a href="http://jquerymobile.com/" title="jQuery Mobile | jQuery Mobile">jQuery Mobile | jQuery Mobile</a>
</p>

<p>
気が向いたらちょっと覗いてみて貰うと嬉しいですm(。。)m
</p>]]>
        <![CDATA[<h3>やってみようと思った経緯</h3>

<p>
前々からウェブAPIを使ってみたかったんだけど、怖くて取り組めませんでした。。。<br />
この｢怖さ｣は、例えば、変なプログラムになっちゃって、公開元に迷惑を掛けるかもしれない、とか、Cakeの勉強を続けているのに、目的のものが作れなかったら？という怖さ。
</p>

<p>
｢もうちょっとCakeを身に付けてからやった方が良いんじゃないの？ => きっとそうだ｣<br />
と、自分会話を完結させていたので、この自分的｢やるやる詐欺｣を払拭したかったから。
</p>

<p>
それから、<strong>ATND検索を自分が欲しかった</strong>から(´･ω･)ゞ<br />
例えば私は福岡に居るので、｢福岡｣と検索して、今どんなイベントがあってるのかなぁ？と眺められるものが欲しかったので、やってみました。
</p>

<p>
そして、私が目標としているある方の活動を見て、触発された点も大きいです。
</p>

<h3>作ってみて楽しかったところ・良かったところ</h3>

<p>
目的のものを作るに当って、どんな動きを実装したいかを書き出してました。
</p>

<ul>
	<li>APIからデータを取って来て利用すること(初めてなので大前提として･･･)</li>
	<li>検索したキーワードは再利用したい。</li>
	<li>気になるイベントがあったら、一旦保存しておける仕組みを備えたい。</li>
	<li>単語だけで簡単に検索したい。</li>
</ul>

<p>
これらの実現を目標に。<br />
一通り備える事は出来たので、それが一番良かったです。
</p>

<p>
こう言っちゃうとアレなんですが、全部の作業が楽しかったです。<br />
今回はデータベースを利用しないので、モデル側にどういった処理をさせて、コントローラ側でどう利用して処理させるか？とか考えてみたりとか。
</p>

<p>
クッキーとセッションの利用についてもすごく取り組んでみたい課題の1つだったのでやってみました。<br />
もともと｢APIを利用してみる｣という課題が前提だったところに、更に課題を加えて追い込んでみた感じです。。。
</p>

<h3>苦労したところ・勉強になったところ</h3>

<p>
普段使ってるデータベースの利用と違って、APIでデータを取得して、それをデータベースの代りに扱う、という事は頭では考えてみていても、では実際に動作として組んでみるところはやっぱり苦労しました。<br />
この2つがすごい活躍。書籍｢Pocket詳解｣は見易いし(こんな自分でも)解りやすくて本当にオススメです。<br />
■<a href="http://book.cakephp.org/ja" title="マニュアル :: 1.3コレクション">マニュアル :: 1.3コレクション</a><br />
■<a href="http://www.amazon.co.jp/gp/offer-listing/4798027456?ie=UTF8&tag=materializing-22&linkCode=am2&camp=247&creative=1211&creativeASIN=4798027456">Pocket詳解 CakePHP辞典</a><img src="http://www.assoc-amazon.jp/e/ir?t=materializing-22&l=as2&o=9&a=4798027456" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
</p>

<p>
それから、検索ワードやイベントの保存に利用しているクッキーとセッションの仕組み。<br />
やってみると｢なるほどクッキー！｣とか｢なんでならんのウガーッ！ヽ(`Д´)ﾉ｣とか、ひとりでなってました。
</p>

<p>
そして、本当に今更で恥ずかしいのですが、配列について更に理解が深まりました。<br />
なんというか、今までキーと値の組み合わせって判ってはいたんだけど、ちょっとモヤモヤした部分があったんですね。<br />
それらが一気に解消されました。頭の中で整理出来るようになった感じ。
</p>

<p>
そしてもちろん、提供されてるAPIの読み方についても勉強になりました。<br />
今までナントナークしか眺める事が出来なかったAPIを、こういうことなんだなぁ、って｢読める｣感じ。
</p>

<p>
う～ん。。。｢全部勉強になった！｣ですね。<span style="color:#999999">←またそれ！？</span>
</p>

<h3>最初考えていたことと違ってきたところ</h3>

<p>
最初はCakePHPのデフォルト表示で良いよね、って思ってました。<br />
だって使うのは自分だけ、って前提だったので。<br />
だけど、せっかくなので整えて出してみようかな？とナゼか思ってしまいました。<br />
そんなところにjQuery Mobile alpha3のお報せ。
</p>

<p>
･･･これで見た目を整えてみよう～丶(･ω･)ノ ←安直
</p>

<h3>気をつけたところ</h3>

<p>
変な内部エラーが発生しないように気をつけました。<br />
CakePHPは、/app/tmp/logs に色んな情報を残してくれるので、これらを有効活用。<br />
一見して問題ないように見えるけど、内部(例えばコントローラ側)で変数の未定義エラーが実はありますよ？といった点は極力なくすように心掛けました。
</p>

<p>
例えば、ビュー側では配列の利用をempty判定してるから問題ないけど、内部では実は定義エラーが起きちゃってたり。<br />
｢Use of undefined constant ～｣･･･配列のキーをシングルクォートで囲ってなかったり。<br />
※ちなみに文字列内で配列のキーを書く時は、シングルクォート要りません、よね。
</p>

<h3>課題として残っている点ややってみたい点</h3>

<p>
目標は達成出来たけど、新たに浮上してきた問題点ややりたいことなど。
</p>

<p>
■リクエストURLに期間を指定するとエラーになる。<br />
　+ 既に終了、又は開催日が過ぎたイベントのみの場合<br />
　+ ブラウザからURLを直接叩いた場合は、結果が取れる<br />
<strike>■取得したデータを任意のキー値で並び替えてみたい。</strike><br />
<strike>ID順とか、開催日付順とか、既に終了しているか？、とか。</strike><br />
・・・<strong>Set::sort()</strong> 使ってみて出来ました。これすごいです。<br />
■クッキーが保存されているなら、その情報をもとにしてボタンを押さずに結果が表示されるようにしてみたい。<br />
■<strike>クッキーに多次元配列を保存して、取り出す際に出来ない点を解消したい。</strike> -> 解決しますた。<br />
■クッキー削除、セッション削除時、画面変遷が必要ないAjax仕様にしてみたい。<br />
■気になるリスト に保存した際、画面変遷がない仕様にしてみたい。<br />
■<strike>debug_kit を入れてセッションを削除しようとするとエラーが出る。</strike> -> 解決。どうやら利用したいコントローラで明示的に追加する必要があるみたい。
</p>

<p>
＜追加：2011/02/06 17:15:06＞<br />
■過去の検索ワードを保存して、何らかの統計を取ってみたい。(取得するのは検索語だけ)。<br />
■セッションの仕組みを利用して、その時点での利用者の過去検索ワード再利用の仕組みを持たせてみたい。
</p>

<h4>あとがき</h4>

<p>
やっぱりAjaxで画面変遷がない動作はやってみたいです。
</p>

<p>
あと、自分はとにかく一覧で出して眺めてチェックする用途に･･･という目的だったので、イベントの詳細ページは用意しなかったんですが、他のひとだとどうなのかなぁ？って思ってます。<br />
あった方が良いのかなぁ(´･ω･)
</p>

<p>
今回もまた、作ってみて判った事がたくさんあって、ほんと良い経験になりました。<br />
体験した事を次に活かして、また何か作ってみようと思います。
</p>

<h4>追記</h4>

<p>
■2011/02/07 09:04:29<br />
セッションを使った動作がうまく行ってないみたいです。。。すいません。<br />
Chromeでは、｢気になるイベント｣に追加しても、ページを閉じて再度開くと、保存した情報が読み込まれてない、と思います。<br />
なんとかして改善しようと思いますー(´；ω；`)
</p>

<p>
■2011/02/09 05:34:04<br />
セッションを利用した｢気になるイベント｣が、環境により動作が異なる点が判明。<br />
セッション利用 -> クッキー利用　に切替ました。
</p>

<p>
｢気になるイベント｣に登録したイベントを、個別に削除出来るようにしました。<br />

</p>]]>
    </content>
</entry>

<entry>
    <title>Cookieコンポーネント使って、クッキー利用でぶつかってる問題点</title>
    <link rel="alternate" type="text/html" href="http://www.materializing.net/archives/2011/02/03130231.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.materializing.net/weblog/mt-atom.cgi/weblog/blog_id=1/entry_id=544" title="Cookieコンポーネント使って、クッキー利用でぶつかってる問題点" />
    <id>tag:www.materializing.net,2011://1.544</id>
    
    <published>2011-02-03T04:02:31Z</published>
    <updated>2011-02-03T04:01:31Z</updated>
    
    <summary> ぶつかった問題。 CakePHPのクッキー･コンポーネントを利用しているんだけど、2次元配列で値を収めた直後は大丈夫なんだけど、次にアクセスした時(別のビュー)に移った時に読み込めない点。 先ずは、そもそも追加の仕方に問題があるんだ！と思って自分を疑う。 配...</summary>
    <author>
        <name>arata</name>
        <uri>http://www.materializing.net/</uri>
    </author>
    
        <category term="cakephpを楽しむ" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.materializing.net/">
        <![CDATA[<p>
ぶつかった問題。<br />
CakePHPのクッキー･コンポーネントを利用しているんだけど、2次元配列で値を収めた直後は大丈夫なんだけど、次にアクセスした時(別のビュー)に移った時に読み込めない点。
</p>

<p>
先ずは、そもそも追加の仕方に問題があるんだ！と思って自分を疑う。<br />
配列に配列を追加するのは array_push() 。<br />
このやり方から間違ってるんじゃないかな？とか。。。<br />
こんな風なのをビュー側に書いてみて調査。
</p>

<pre><code>$hoge&nbsp;=&nbsp;array();
$ha&nbsp;=&nbsp;array(
	'a'&nbsp;=&gt;&nbsp;1,
	'b'&nbsp;=&gt;&nbsp;2
);
$hb&nbsp;=&nbsp;array(
	'a'&nbsp;=&gt;&nbsp;3,
	'b'&nbsp;=&gt;&nbsp;4
);
array_push($hoge,&nbsp;$ha,&nbsp;$hb);
debug($hoge);</code></pre>

<p>
。。。一応動いてるっぽい。<br />
これと同じ事をコントローラ側でやりたいんだけど。。。出来ない（泣
</p>]]>
        <![CDATA[<h3>やってみたこと</h3>

<p>
CakePHPにはグローバル関数というものがあるので、そっちを利用すると良いのかな？<br />
と思い、配列の作り方を変えてみる。
</p>

<pre><code>$hoge&nbsp;=&nbsp;array();
$ha&nbsp;=&nbsp;aa(
	'a',&nbsp;1,
	'b',&nbsp;2,
);
$hb&nbsp;=&nbsp;aa(
	'a',&nbsp;3,
	'b',&nbsp;4,
);
array_push($hoge,&nbsp;$ha,&nbsp;$hb);
debug($hoge);</code></pre>

<p>
aa() というのが、キー, 値 で連想配列を作ってくれる関数。<br />
全部カンマで区切って、奇数値がキー。偶数値が値。<br />
こんなんやってみたけどダメ。
</p>

<p>
次に、じゃーモデル経由させてみよー丶(･ω･)ノって思って、モデル側に関数を用意。
</p>

<pre><code>function&nbsp;arrayCombine($arrA,&nbsp;$arrB)&nbsp;{
	array_push($arrA,&nbsp;$arrB);
	return&nbsp;$arrA;
}</code></pre>

<p>
これ経由でもダメ。
</p>

<h3>そもそもダメな点</h3>

<p>
他にもちょびっと考えられる事を試してみたけど全部ダメ。
</p>

<p>
そんなこんなやって気付いたのは、<strong>そもそも保存は出来ても読出しがダメなんだよね！</strong>という点。＜ズコー
</p>

<p>
保存動作してみて、直後のビューでは反映されるけど、他のビューに切り替わるとCookieから読み込んだ値が全部空になってマス。<br />
この動作はいったい何なのでしょう。。。
</p>

<pre><code>Array&nbsp;(
	[a]&nbsp;=&gt;&nbsp;Array
	[b]&nbsp;=&gt;&nbsp;Array
)</code></pre>

<p>
というワケで、最終的には･･･クッキー利用取り止めてセッションに切替！<br />
おしまい！（泣
</p>

<h4>あとがき</h4>

<p>
神は言っている。ここでクッキーに負ける定めではないと･･･!!<br />
。。。すいません負けました。完膚なきまでに叩きのめされました。
</p>

<p>
でも、クッキー利用もセッション利用も勉強したかったので、良い機会だったんだきっと！と割り切ってます。<br />
セッションもクッキーも、やってみると面白いなぁ。。。
</p>]]>
    </content>
</entry>

<entry>
    <title>実機ないけどiphoneコーディング＋CakePHPやってみました。</title>
    <link rel="alternate" type="text/html" href="http://www.materializing.net/archives/2011/01/07170156.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.materializing.net/weblog/mt-atom.cgi/weblog/blog_id=1/entry_id=536" title="実機ないけどiphoneコーディング＋CakePHPやってみました。" />
    <id>tag:www.materializing.net,2011://1.536</id>
    
    <published>2011-01-07T08:01:56Z</published>
    <updated>2011-01-25T06:31:04Z</updated>
    
    <summary> CakePHP学習が進行中なので、試しに小さいウェブアプリ作ってみました。 きっかけは友人からの「料理の時、グラム数を大さじ数に変換してくれるようなの作って～」のひと言から。 機能や規模も小さいので、通常コーディングではなく、せっかくなので興味が湧いているス...</summary>
    <author>
        <name>arata</name>
        <uri>http://www.materializing.net/</uri>
    </author>
    
        <category term="cakephpを楽しむ" />
    
        <category term="スマートフォン" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.materializing.net/">
        <![CDATA[<p>
CakePHP学習が進行中なので、試しに小さいウェブアプリ作ってみました。<br />
きっかけは友人からの「料理の時、グラム数を大さじ数に変換してくれるようなの作って～」のひと言から。
</p>

<p>
機能や規模も小さいので、通常コーディングではなく、せっかくなので興味が湧いているスマートフォン(iphone)向けのものにしてみました。<br />
だけど、なんと<strong>私、実機持ってません。</strong><br />
なので、実機確認出来ないとこうなっちゃうよ！っていうわるい例ですね。。。<br />
「(笑)」しつつ、良かったら見てやって下さい。<br />
<span style="color:#999999">うぅ･･･iphone欲しい(つД｀)</span>
</p>

<p>
<big>■<a href="http://cookspoon.materializing.net/" title="サイトトップ｜大さじ目安【お料理アプリ】">大さじ目安【お料理アプリ】</a></big><br />
※PCからはChrome、Safariなら見れます。<span style="color:#666666"><small>他ブラウザでの動作確認してないです。←こらーっ!!</small></span>
</p>

<h3>大さじ目安【お料理アプリ】概要</h3>

<p>
種類選んで、グラム数を入力すると、大さじ基準で～杯の結果を出してくれます。<br />
最近の計算結果とか、これまでの総計算を出してみました。
</p>

<h4>利用したものとか</h4>

<ul>
	<li><a href="http://cakephp.jp/" title="CakePHP: 高速開発 php フレームワーク。 Home">CakePHP 1.3系</a>＋MySQL</li>
	<li><a href="http://jquery.com/" title="jQuery: The Write Less, Do More, JavaScript Library">jQuery: The Write Less, Do More, JavaScript Library</a></li>
	<li><a href="http://www.jqtouch.com/" title="jQTouch -- jQuery plugin for mobile web development">jQTouch -- jQuery plugin for mobile web development</a></li>
	<li><a href="http://bassistance.de/jquery-plugins/jquery-plugin-validation/" title="bassistance.de » jQuery plugin: Validation">bassistance.de » jQuery plugin: Validation</a></li>
</ul>

<p>
確認として、シミュレーターの <a href="http://www.puresimstudios.com/ibbdemo/" title="iBBDemo2 - Cross Platform iPad and iPhone Simulator">iBBDemo2 - Cross Platform iPad and iPhone Simulator</a> を使わせて貰ってます。
</p>

<p>
どれもひたすらに便利で開発者さん達に感謝です。本当に。
</p>]]>
        <![CDATA[<h3>作ってみた感想とか</h3>

<p>
これまでプログラミング学習を続けて来て、初めて公開するウェブアプリです。<br />
なので･･･正直感慨深いです。<br />
機能は小さいですが、データベースの設計とか利用の仕方とか考えて、CakeのAPIを探り探り･･･。<br />
知識ゼロから、ようやっとここまで来れました。
</p>

<p>
データベースに関しては、2つのテーブル連携に挑戦。<br />
選択する種類はカテゴリー情報として、管理・編集出来るようにもしてます。<br />
なので、管理ユーザー作って、ログイン認証作って･･･と。<br />
あ！だからテーブル2つじゃなくて3つですね（汗
</p>

<p>
テーブルを連携させた結果表示させる際に、どうしてもそれがうまく行かなくて3時間ばかり頭を悩ませたり･･･結果的には勘違いしてた自分にガッカリして呆けたり(´･ω･`)
</p>

<p>
ユーザーの追加画面とかも作ってみたんですが、使うのは自分ひとりなので、管理ユーザー追加したあとは隠匿してます。<br />
ログイン画面ありますけど、こっちは使えるようにだけしてURL非公開です。<br />
なので、CakePHPで利用出来るAuth認証にも挑戦しました。<br />
未ログイン時のリダイレクトとか、やってみてすごく勉強になったところです。<br />
確かCakeにはadmin_～って感じで、管理用の作り方もあったと思うんで、今度はそのやり方にも挑戦してみたいです。
</p>

<p>
テンプレート(ctp)では、出来る限りhtmlヘルパー使うようにしました。<br />
というかリンクとか全部ヘルパー使ってます。<br />
それからelementの利用。include感覚ですごい便利だな～、と思いました。<br />
エラー用ページなんかも用意。
</p>


<h3>iphone用のコーディングについて</h3>

<p>
jQueryの追加ライブラリとして使える「jQTouch」を選びました。<br />
別のUI作成用ライブラリもあったんですが、自分が思い描いたコーディングに適してると判断したのがjQTouchでした。
</p>

<p>
iphone用コーディングも初めてだったので、取り掛かる前にかなり色んなサイトの資料を読みました。<br />
あんまり多いんでここに書き切れません。。。
</p>

<p>
jQTouchはほんとすごくて、初めてでも簡単にiphoneらしい動作を再現出来るみたいです。<br />
(だって実機ないから憶測でしか言えない(つД｀))<br />
シミュレーター上では、それっぽく動いてるように見えたので。
</p>

<h3>残ってる課題とか</h3>

<p>
一通りやってみたけど、なんかうまくいかないところとか残ってるところとか足りないところとか。
</p>

<ol>
	<li>ラジオボタンと文字がちょびっとずれる</li>
	<li>ラジオボタンのバリデーション(未選択チェック)：jquery validation側</li>
	<li>ページング処理</li>
	<li>種類別の計算稼働表示</li>
	<li>計算後のリダイレクト処理：1回計算後の再submitを防ぎたい</li>
	<li>グラム→杯 を グラム←→杯 という風に双方向から変換出来るようにしてみたい</li>
	<li>動作速度アップ</li>
	<li>ネーミングセンス</li>
</ol>

<h4>あとがき</h4>

<p>
制作日数としては、全部で7日くらいです。<br />
全然真新しいものでもなく、機能も小さいですけど、良かったらiphoneから見れる方は見て貰えたらすごい嬉しいです。。。
</p>

<p>
引き続きCakePHP勉強しつつ、何かに挑戦して行こうと思いますっ！(｀･ω･´)
</p>]]>
    </content>
</entry>

<entry>
    <title>CakePHPのトップページをサイトトップとして利用したい時</title>
    <link rel="alternate" type="text/html" href="http://www.materializing.net/archives/2011/01/02170848.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.materializing.net/weblog/mt-atom.cgi/weblog/blog_id=1/entry_id=534" title="CakePHPのトップページをサイトトップとして利用したい時" />
    <id>tag:www.materializing.net,2011://1.534</id>
    
    <published>2011-01-02T08:08:48Z</published>
    <updated>2011-01-02T08:07:07Z</updated>
    
    <summary>2011年 あけましておめでとうございます。 2011年もぼちぼち自分のペースで更新して行きたいな、って思ってます。 本年もどうぞ宜しくお願いします_(．．)_ ･･･というワケで、早速2011年最初の記事内容に移りますね。 CakePHPをインストールして、...</summary>
    <author>
        <name>arata</name>
        <uri>http://www.materializing.net/</uri>
    </author>
    
        <category term="cakephpを楽しむ" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.materializing.net/">
        <![CDATA[<h3>2011年 あけましておめでとうございます。</h3>

<p>
2011年もぼちぼち自分のペースで更新して行きたいな、って思ってます。<br />
本年もどうぞ宜しくお願いします_(．．)_
</p>

<p>
･･･というワケで、早速2011年最初の記事内容に移りますね。
</p>

<p>
CakePHPをインストールして、モデル作って、コントローラ作って、ビューを作って･･･ってやってたんですが、はて？そういえばこのCakeのトップページをサイトトップとして利用する時にはどうするんだろう？と疑問が湧いたのでやってみました。
</p>

<p>
そして、トップページは静的ではなく、ちょっとプログラムも使います。<br />
という事は、トップページ用のコントローラが必要になるわけです。<br />
http://sitetop/controller/～ の形式だと、/app 以下にコントローラ用ファイルを用意して、<br />
/controller/app/views/controller_name/index.ctp で良いんですが。。。
</p>

<p>
結論としては、トップへのアクセス設定と、ビューの用意。<br />
必要に応じてコントローラを拡張すること、で出来ました。<br />

</p>]]>
        <![CDATA[<h3>ルートの設定は routes.php で</h3>

<p>
▼\app\config\routes.php：29行目辺り<br />
トップへのアクセス設定を書き換える事で、任意のコントローラのアクションを指定する事が出来ます。<br />
デフォルトでは、pagesコントローラのdisplayアクションで、homeビュー･ファイルを指定してあります。<br />
それを、例えば以下のように書き換えてみます。
</p>

<pre><code>//	Router::connect('/',&nbsp;array('controller'&nbsp;=&gt;&nbsp;'pages',&nbsp;'action'&nbsp;=&gt;&nbsp;'display',&nbsp;'home'));
	Router::connect('/',&nbsp;array('controller'&nbsp;=&gt;&nbsp;'pages',&nbsp;'action'&nbsp;=&gt;&nbsp;'index'));
</code></pre>

<p>
これで、<br />
▼/app/views/pages/index.ctp というファイルを用意すると、このビューが使われるようになります。
</p>

<h3>コントローラの用意</h3>

<p>
以下のファイルをコピーして、/app/controllers/ の中にコピーします。<br />
/cake/libs/controller/pages_controller.php<br />
もともと書いてある diplay() アクションは、ざっくり削除 or コメントアウト。<br />
そして、index() アクションを作成。。。これで出来ました！丶(･ω･)ノ
</p>

<p>
ところが・・・/app/views/pages/index.ctp で書いてる
</p>

<pre><code>&lt;?php&nbsp;echo&nbsp;$this-&gt;Session-&gt;flash();&nbsp;?&gt;</code></pre>

<p>
の箇所でエラーが出ます。。。なぜに？(´･ω･`)<br />
というワケで、もとの pages_controller.php を良く良く見てみると、helperにSession指定がっ！！
</p>

<pre><code>var&nbsp;$helpers&nbsp;=&nbsp;array('Html',&nbsp;'Session');</code></pre>

<p>
なので、コピーして作成したコントローラでもhelperにSession指定を書き加えてみました。<br />
これでエラー解消。。。良かった。
</p>

<p>
という事で、サイトのトップ指定が出来るようになりました。<br />
練習としてiphone用のWebアプリを作っていたので、この時、トップを指定したかったのでこういった作業が必要になりました。
</p>

<h4>あとがき</h4>

<p>
ここではpagesコントローラを拡張したのですが、そもそもコントローラの初期拡張って AppContoller ･･･という事は、pages_controller を使うよりも、app_controller使う方が良いのかなぁ。。。どうする方が良いんだろ？(･ω･)<br />
app_controller はそもそも中身空っぽだし、こっちでやる方が良いんでしょうかね。<br />
という疑問が湧いてるところです。。。
</p>

<p>
【参考情報】<br />
■<a href="http://book.cakephp.org/ja/view/46/Routes-Configuration" title="Routesの設定 :: 環境設定 :: CakePHPによる開発 :: マニュアル :: 1.2コレクション :: The Cookbook">Routesの設定 :: 環境設定 :: CakePHPによる開発 :: マニュアル :: 1.2コレクション :: The Cookbook</a><br />

</p>]]>
    </content>
</entry>

<entry>
    <title>CakePHPをインストールしてみる[1.2.2]</title>
    <link rel="alternate" type="text/html" href="http://www.materializing.net/archives/2009/04/19015647.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.materializing.net/weblog/mt-atom.cgi/weblog/blog_id=1/entry_id=498" title="CakePHPをインストールしてみる[1.2.2]" />
    <id>tag:www.materializing.net,2009://1.498</id>
    
    <published>2009-04-18T16:56:47Z</published>
    <updated>2009-04-18T16:56:52Z</updated>
    
    <summary> PHPのフレームワークとして有名なCakePHPをインストールしてみます。 ■CakePHP: the rapid development php framework. Home 	mod_rewriteを有効にしたローカルサーバ 	データベースが利用出来る...</summary>
    <author>
        <name>arata</name>
        <uri>http://www.materializing.net/</uri>
    </author>
    
        <category term="cakephpを楽しむ" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.materializing.net/">
        <![CDATA[<p>
PHPのフレームワークとして有名なCakePHPをインストールしてみます。<br />
■<a href="http://cakephp.org/" title="CakePHP: the rapid development php framework. Home">CakePHP: the rapid development php framework. Home</a>
</p>

<ul>
	<li>mod_rewriteを有効にしたローカルサーバ</li>
	<li>データベースが利用出来る環境</li>
	<li>CakePHP本体</li>
</ul>

<p>
本体のファイルサイズって、こんなに小さいんですね。。驚きました。<br />
サイトトップを作って、その中にCakeを置いてみる事にします。
</p>

<pre><code>/root/cake/
　　　app/
　　　cake/
　　　vendors/
　　　.htaccess
　　　index.php</code></pre>

<p>
こんな風に置いてみました。<br />
http://root/cake/ にアクセスしてみると、ページが表示されてどうやら動いてる模様です。
</p>]]>
        <![CDATA[<h3>データベースの接続設定</h3>

<p>
/root/cake/app/config の中に database.php.default という名前のファイルがあるので、リネームします。<br />
→database.php
</p>

<p>
開いて class DATABASE_CONFIG の辺りを変更。<br />
データベースは事前に作成しておいて。
</p>

<p>
$default変数は通常利用する接続先で、$test変数は、テストとして利用したいデータベースがある場合に設定しておきます。<br />
まだ分岐させるような事はないので、とりあえずdefaultだけ指定してみる事にしました。
</p>

<p>
ファイルを書き換えて再度cakeトップにアクセスしてみると、データベースについてのwarningが消えました。
</p>


<h3>Security.saltの設定</h3>

<p>
なんだかもうちょっとwarningが出てるみたいです。
</p>

<pre><code>Please&nbsp;change&nbsp;the&nbsp;value&nbsp;of&nbsp;'Security.salt'&nbsp;in&nbsp;app/config/core.php&nbsp;to&nbsp;a&nbsp;salt&nbsp;value&nbsp;specific&nbsp;to&nbsp;your&nbsp;application&nbsp;[CORE\cake\libs\debugger.php,&nbsp;line&nbsp;556]</code></pre>

<p>
root/cake/app/config/core.php を開いて、151行目の「Security.salt」の文字列を変更。<br />
再度アクセスしてみると、warningが解消されました。
</p>

<blockquote cite="http://book.cakephp.org/ja/view/42/The-Configuration-Class">セキュリティを考慮したハッシングのために利用されるランダムな文字列です。</blockquote>
<cite><a href="http://book.cakephp.org/ja/view/42/The-Configuration-Class" title="Configurationクラス :: 環境設定 :: CakePHPによる開発 :: マニュアル :: 1.2 Collection :: The Cookbook">Configurationクラス :: 環境設定 :: CakePHPによる開発 :: マニュアル :: 1.2 Collection :: The Cookbook</a></cite>

<p>
■<a href="http://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5%E9%96%A2%E6%95%B0" title="ハッシュ関数 - Wikipedia">ハッシュ関数 - Wikipedia</a>
</p>


<h4>あとがき</h4>

<p>
新ジャンル開拓の巻。うー、難しそうだなあでも楽しそうだしなあ(´･ω･)<br />
どこまでやってけるのか判りませんが、細々と扱っていこうかな？って思います。<br />
一先ず「～を作ってみる！」みたいな目標を立てると良いのかな。。。
</p>

<h4>資料</h4>

<p>
■<a href="http://book.cakephp.org/ja/view/28/Requirements" title="必要なもの :: CakePHPによる開発 :: マニュアル :: 1.2 Collection :: The Cookbook">必要なもの :: CakePHPによる開発 :: マニュアル :: 1.2 Collection :: The Cookbook</a>
</p>]]>
    </content>
</entry>

</feed>
