<?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>アストロデオブログ &#187; CakePHP</title>
	<atom:link href="http://astrodeo.com/blog/archives/category/cakephp/feed" rel="self" type="application/rss+xml" />
	<link>http://astrodeo.com/blog</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Mon, 11 Jul 2011 01:38:11 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>PHP5.3で昔のCakePHPをソースをいじったら</title>
		<link>http://astrodeo.com/blog/archives/1634</link>
		<comments>http://astrodeo.com/blog/archives/1634#comments</comments>
		<pubDate>Wed, 11 May 2011 13:50:00 +0000</pubDate>
		<dc:creator>マッチー</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://astrodeo.com/blog/?p=1634</guid>
		<description><![CDATA[アストロデオのHPがリニューアルしました！ おめでとうございます！！　ありがとうございます！！ ま、僕は今回な～んもしてないです。みんなが頑張ってデザイン組んだりカメラ持って撮影してる横で笑ってただけです。ニコニコ動画で抱腹絶倒な動画を見て文字通り腹を抱えて笑っていただけです。 一人だけ何もしてないとか感じ悪いんで、今日のところは僕がブログを更新してリニューアル作業に花を添えたいと思います。 ここんとこ更新もサボリ気味でしたしね。またちょいちょい更新を頑張っていけたらいいんですか？ それに何といっても今日は5月11日で切れ目も良いですからね。心機一転するにはちょうど良いかもしれんです。 今日、5月11日は「技術の日」なんですよ。だから技術者の我々に取っちゃある意味一つの節目の日なんですよ。 まあ、どうして今日が技術の日なのかってのは、核実験に由来するらしいんで、IT的な技術に携わる僕らにはあまり関係ないんですけどねｗｗ とはいえ、最近は何か技術的な考察があったときにはここじゃなくて個人ブログの方に書くようにしてたので、とりわけ今ここで書くことってないんですよね……せっかく意気込んだところあれなんですけど。 だから、すっごい今さらなんだけどずっと書くのを忘れてたことをまた忘れないうちに書いとこうと思います。本当に今さらなんだけど、もしかしたらいつか誰かの役に立てるかもしれない。 以前、PHP5.3でEC-CUBEを動かしたら何やら大変なことが起きたぞってな記事を書きましたが、CakePHPでも同様なことが起こりました。 Deprecated: Assigning the return value of new by reference is deprecated in　～ ↑こんな感じのエラー。まあ原因も前回と同じで、PHPのバージョンが新しくなったのが原因です。昔に作ったサイトを手直ししようとしてローカル環境で見ると、こんなエラーが出ることがあるようです。 CakePHPの場合の解決方法は、cake/libsフォルダの中にあるconfigure.phpのwriteメソッドをいじればおｋです。 if (isset($config['debug'])) { if ($_this->debug) { error_reporting(E_ALL); //このif文を追加 if(error_reporting() > 6143) { error_reporting(E_ALL &#038; ~E_DEPRECATED); } if (function_exists('ini_set')) { ini_set('display_errors', 1); } if (!class_exists('Debugger')) { require LIBS . 'debugger.php'; } [...]]]></description>
			<content:encoded><![CDATA[<p>アストロデオのHPがリニューアルしました！</p>
<p>おめでとうございます！！　ありがとうございます！！</p>
<p>ま、僕は今回な～んもしてないです。みんなが頑張ってデザイン組んだりカメラ持って撮影してる横で笑ってただけです。ニコニコ動画で抱腹絶倒な動画を見て文字通り腹を抱えて笑っていただけです。</p>
<p>一人だけ何もしてないとか感じ悪いんで、今日のところは僕がブログを更新してリニューアル作業に花を添えたいと思います。</p>
<p>ここんとこ更新もサボリ気味でしたしね。またちょいちょい更新を頑張っていけたらいいんですか？</p>
<p>それに何といっても今日は5月11日で切れ目も良いですからね。心機一転するにはちょうど良いかもしれんです。</p>
<p>今日、5月11日は「技術の日」なんですよ。だから技術者の我々に取っちゃある意味一つの節目の日なんですよ。</p>
<p>まあ、どうして今日が技術の日なのかってのは、核実験に由来するらしいんで、IT的な技術に携わる僕らにはあまり関係ないんですけどねｗｗ</p>
<p>とはいえ、最近は何か技術的な考察があったときにはここじゃなくて個人ブログの方に書くようにしてたので、とりわけ今ここで書くことってないんですよね……せっかく意気込んだところあれなんですけど。</p>
<p>だから、すっごい今さらなんだけどずっと書くのを忘れてたことをまた忘れないうちに書いとこうと思います。本当に今さらなんだけど、もしかしたらいつか誰かの役に立てるかもしれない。</p>
<p>以前、<a href="http://astrodeo.com/blog/archives/1627">PHP5.3でEC-CUBEを動かしたら何やら大変なことが起きたぞ</a>ってな記事を書きましたが、CakePHPでも同様なことが起こりました。</p>
<p>Deprecated: Assigning the return value of new by reference is deprecated in　～</p>
<p>↑こんな感じのエラー。まあ原因も前回と同じで、PHPのバージョンが新しくなったのが原因です。昔に作ったサイトを手直ししようとしてローカル環境で見ると、こんなエラーが出ることがあるようです。</p>
<p>CakePHPの場合の解決方法は、cake/libsフォルダの中にあるconfigure.phpのwriteメソッドをいじればおｋです。</p>
<textarea name="code" class="PHP:nocontrols" cols="30" rows="5">

if (isset($config['debug'])) {
    if ($_this->debug) {
        error_reporting(E_ALL);

        //このif文を追加
        if(error_reporting() > 6143) {
            error_reporting(E_ALL &#038; ~E_DEPRECATED);
        }

        if (function_exists('ini_set')) {
            ini_set('display_errors', 1);
        }

        if (!class_exists('Debugger')) {
            require LIBS . 'debugger.php';
        }

        if (!class_exists('CakeLog')) {
            require LIBS . 'cake_log.php';
        }

        Configure::write('log', LOG_NOTICE);
    } else {

～以下略～

</textarea>
<p>cakeフォルダの中身を直接いじるのはあまり良くないような気はするんですけど、まあこれくらいなら良いよね。たぶん。</p>
<p>もっとも、今回みたいにlibsの直下にあるファイルをapp側にコピーしていじるとかって、できるんですかね？　もしできるばあい、どこにコピーすればいいんだろう？　appの直下？</p>
]]></content:encoded>
			<wfw:commentRss>http://astrodeo.com/blog/archives/1634/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>CakePHPのコントローラー名が……</title>
		<link>http://astrodeo.com/blog/archives/1630</link>
		<comments>http://astrodeo.com/blog/archives/1630#comments</comments>
		<pubDate>Thu, 07 Apr 2011 05:34:28 +0000</pubDate>
		<dc:creator>マッチー</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://astrodeo.com/blog/?p=1630</guid>
		<description><![CDATA[ここ最近はフレームワークを使ってないPHPのサイトの改修をしたりEC-CUBEをカスタマイズしたり現場に出向して使ったことのないSymfonyをいじったりしていたので、CakePHPを使うのは久しぶりです。 で、別に久しぶりだからとかそんなのは一切関係ないんですが、今度新しく作るサイトで、ファイルを管理したり登録する画面があるんですね。だからコントローラー名をこんな感じにしたんですが…… ファイル名：files_controller.php クラス名：FilesController これで作ったページにアクセスすると、以下のようなエラーが出ました。 Warning (2): dirname() expects parameter 1 to be string, array given in [C:\xampp\htdocs\gallery\cake\libs\file.php, line 100] Warning (2): is_dir() expects parameter 1 to be string, array given in [C:\xampp\htdocs\gallery\cake\libs\file.php, line 101] Warning (2): basename() expects parameter 1 to be string, array given in [C:\xampp\htdocs\gallery\cake\libs\file.php, line 102] まあ何だかよく分かんないんですけど、コントローラー名がFilesだったのがどうもいけなかったみたいで、ファイル名やクラス名を別なのにしたら出なくなりました。 正直焦ったね。久しぶり過ぎて……っていっても1ヶ月半くらいなもんですが、全くCakePHPに触ってなかったから、どっか最初に設定しなきゃいけないところを設定し忘れてるんだろうかって。もうCakePHPの使い方忘れちまったのかよって。一緒にハポンに帰ろうっていう約束はどこｎ たぶん、fileとかobjectとかvalidateとか、コアの方にあるファイル名と同じようなのをコントローラー名にするとダメってことなんじゃないでしょうか。確認はしてないですけど。]]></description>
			<content:encoded><![CDATA[<p>ここ最近はフレームワークを使ってないPHPのサイトの改修をしたりEC-CUBEをカスタマイズしたり現場に出向して使ったことのないSymfonyをいじったりしていたので、CakePHPを使うのは久しぶりです。</p>
<p>で、別に久しぶりだからとかそんなのは一切関係ないんですが、今度新しく作るサイトで、ファイルを管理したり登録する画面があるんですね。だからコントローラー名をこんな感じにしたんですが……</p>
<p>ファイル名：files_controller.php<br />
クラス名：FilesController</p>
<p>これで作ったページにアクセスすると、以下のようなエラーが出ました。</p>
<textarea name="code" class="php:nocontrols" cols="30" rows="5">

Warning (2): dirname() expects parameter 1 to be string, array given in [C:\xampp\htdocs\gallery\cake\libs\file.php, line 100]
Warning (2): is_dir() expects parameter 1 to be string, array given in [C:\xampp\htdocs\gallery\cake\libs\file.php, line 101]
Warning (2): basename() expects parameter 1 to be string, array given in [C:\xampp\htdocs\gallery\cake\libs\file.php, line 102]

</textarea>
<p>まあ何だかよく分かんないんですけど、コントローラー名がFilesだったのがどうもいけなかったみたいで、ファイル名やクラス名を別なのにしたら出なくなりました。</p>
<p>正直焦ったね。久しぶり過ぎて……っていっても1ヶ月半くらいなもんですが、全くCakePHPに触ってなかったから、どっか最初に設定しなきゃいけないところを設定し忘れてるんだろうかって。もうCakePHPの使い方忘れちまったのかよって。一緒にハポンに帰ろうっていう約束はどこｎ</p>
<p>たぶん、fileとかobjectとかvalidateとか、コアの方にあるファイル名と同じようなのをコントローラー名にするとダメってことなんじゃないでしょうか。確認はしてないですけど。</p>
]]></content:encoded>
			<wfw:commentRss>http://astrodeo.com/blog/archives/1630/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ヘルパーでほかのヘルパーのメソッドを使う</title>
		<link>http://astrodeo.com/blog/archives/1617</link>
		<comments>http://astrodeo.com/blog/archives/1617#comments</comments>
		<pubDate>Wed, 26 Jan 2011 11:40:58 +0000</pubDate>
		<dc:creator>マッチー</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://astrodeo.com/blog/?p=1617</guid>
		<description><![CDATA[自分で独自ヘルパーを作ったときに、そのメソッドの中でHTMLヘルパーやFormヘルパーのメソッドを使いたい場合が、あったりしますよね。僕はわりとよくあります。 そんなときは、コントローラーでヘルパーの設定をするのと同じ方法を、ヘルパー内でもやれば使えるようになるらしい。 class UtilHelper extends AppHelper { //読み込むヘルパーを設定する var $helpers = array('Html', 'Form'); function test1() { return $this->Html->link('test', '/'); } function test2() { return $this->Form->text('name'); } } こんな感じ。 いやー、これは知りませんでした。だから自分でヘルパーを作ったときに他のヘルパーを使いたいときは、そいつを継承してました。 App::import('Helper', 'Html'); class UtilHelper extends HtmlHelper { function test() { return $this->Html->link('test', '/'); } } だからHTMLヘルパーとFormヘルパーの両方を使うようなときは、どうしようもないじゃんって思って、常に片方をあきらめてました。 でもこれからはあきらめなくて良いんだ。 バンザーイ。]]></description>
			<content:encoded><![CDATA[<p>自分で独自ヘルパーを作ったときに、そのメソッドの中でHTMLヘルパーやFormヘルパーのメソッドを使いたい場合が、あったりしますよね。僕はわりとよくあります。</p>
<p>そんなときは、コントローラーでヘルパーの設定をするのと同じ方法を、ヘルパー内でもやれば使えるようになるらしい。</p>
<textarea name="code" class="PHP:nocontrols" cols="30" rows="5">

class UtilHelper extends AppHelper {

    //読み込むヘルパーを設定する
    var $helpers = array('Html', 'Form'); 

    function test1() {

        return $this->Html->link('test', '/');

    }

    function test2() {

       return $this->Form->text('name'); 

   }

}

</textarea>
<p>こんな感じ。</p>
<p>いやー、これは知りませんでした。だから自分でヘルパーを作ったときに他のヘルパーを使いたいときは、そいつを継承してました。</p>
<textarea name="code" class="PHP:nocontrols" cols="30" rows="5">

App::import('Helper', 'Html');

class UtilHelper extends HtmlHelper {

    function test() {

        return $this->Html->link('test', '/');

    }

}

</textarea>
<p>だからHTMLヘルパーとFormヘルパーの両方を使うようなときは、どうしようもないじゃんって思って、常に片方をあきらめてました。</p>
<p>でもこれからはあきらめなくて良いんだ。</p>
<p>バンザーイ。</p>
]]></content:encoded>
			<wfw:commentRss>http://astrodeo.com/blog/archives/1617/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CakePHPは複合主キーに対応していないようです</title>
		<link>http://astrodeo.com/blog/archives/1601</link>
		<comments>http://astrodeo.com/blog/archives/1601#comments</comments>
		<pubDate>Fri, 07 Jan 2011 04:12:35 +0000</pubDate>
		<dc:creator>マッチー</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://astrodeo.com/blog/?p=1601</guid>
		<description><![CDATA[新年明けましておめでとうございます。本年も株式会社アストロデオをどうぞよろしくお願いいたします。 と、ちょっと遅れ気味の新年のごあいさつはともかくとして……。 タイトルの通り、今日は複合主キーのことでちょっと引っかかったことをお話しさせてください。実際この問題に引っかかったのって、もう1ヶ月以上も前の話なんですけど、とりあえず他に書くことが思いつかないんで、せっかくだから書き記しときます。 こっから先、もしも『今』って単語が出てきたら、実際には1ヶ月以上前のことだと思ってください。 複合主キーって今まで使ったことがないので、いまいち感覚がつかめていないんですが、今、仕事で他社さんが作ったシステムに新たにうちが作ったシステムを盛り込むみたいなことをやってまして、僕はいつもどおりCakePHPで開発をしていたんですが、他社さんの作ったテーブルのいくつかは、主キーが複合キーになってました。 対して気にはしていなかったんですけど、いざそのテーブルにうちのシステムからアクセス、要するにインサートなりアップデートなりする場面に来まして……で、そのときに思ったんですわ。 これ、どうやってアップデートするん？ CakePHPにはsaveFieldっていうモデルのメソッドがあって、これを使うと必要なレコードの必要なカラムだけ上書きできたりするんですが、どのレコードを上書きするかにあたって、プライマリーキーをセットしてあげないといけない。そしてたいていの場合、CakePHPは主キーは一つ、メジャーなのはidですかね、そんな感じになっちょります。 ネットでいろいろと調べ回ってみた限り、いくつかのサイトで書いてあったのは、『CakePHPは複合主キーに対応していない』というものでした。本家ですら、そう言ってた（↓） http://book.cakephp.org/ja/compare/24/Model-and-Database-Conventions ただまあ、印象としては、上手く使えば複合主キーって結構便利な存在なんじゃないかと思いました。 でもCakePHPで開発している以上は、対応していない問題には現状どうしようもない。 CakePHPのメソッドを使わずに、自分でSQL文を直接書いて投げるしかないんですかね、やっぱり…。]]></description>
			<content:encoded><![CDATA[<p>新年明けましておめでとうございます。本年も株式会社アストロデオをどうぞよろしくお願いいたします。</p>
<p>と、ちょっと遅れ気味の新年のごあいさつはともかくとして……。</p>
<p>タイトルの通り、今日は複合主キーのことでちょっと引っかかったことをお話しさせてください。実際この問題に引っかかったのって、もう1ヶ月以上も前の話なんですけど、とりあえず他に書くことが思いつかないんで、せっかくだから書き記しときます。</p>
<p>こっから先、もしも『今』って単語が出てきたら、実際には1ヶ月以上前のことだと思ってください。</p>
<p>複合主キーって今まで使ったことがないので、いまいち感覚がつかめていないんですが、今、仕事で他社さんが作ったシステムに新たにうちが作ったシステムを盛り込むみたいなことをやってまして、僕はいつもどおりCakePHPで開発をしていたんですが、他社さんの作ったテーブルのいくつかは、主キーが複合キーになってました。</p>
<p>対して気にはしていなかったんですけど、いざそのテーブルにうちのシステムからアクセス、要するにインサートなりアップデートなりする場面に来まして……で、そのときに思ったんですわ。</p>
<p>これ、どうやってアップデートするん？</p>
<p>CakePHPにはsaveFieldっていうモデルのメソッドがあって、これを使うと必要なレコードの必要なカラムだけ上書きできたりするんですが、どのレコードを上書きするかにあたって、プライマリーキーをセットしてあげないといけない。そしてたいていの場合、CakePHPは主キーは一つ、メジャーなのはidですかね、そんな感じになっちょります。</p>
<p>ネットでいろいろと調べ回ってみた限り、いくつかのサイトで書いてあったのは、『CakePHPは複合主キーに対応していない』というものでした。本家ですら、そう言ってた（↓）</p>
<p><a href="http://book.cakephp.org/ja/compare/24/Model-and-Database-Conventions" target="_blank">http://book.cakephp.org/ja/compare/24/Model-and-Database-Conventions</a></p>
<p>ただまあ、印象としては、上手く使えば複合主キーって結構便利な存在なんじゃないかと思いました。</p>
<p>でもCakePHPで開発している以上は、対応していない問題には現状どうしようもない。</p>
<p>CakePHPのメソッドを使わずに、自分でSQL文を直接書いて投げるしかないんですかね、やっぱり…。</p>
]]></content:encoded>
			<wfw:commentRss>http://astrodeo.com/blog/archives/1601/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>timezoneの問題なんて知らねーっすよ</title>
		<link>http://astrodeo.com/blog/archives/1593</link>
		<comments>http://astrodeo.com/blog/archives/1593#comments</comments>
		<pubDate>Fri, 10 Dec 2010 03:07:22 +0000</pubDate>
		<dc:creator>マッチー</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://astrodeo.com/blog/?p=1593</guid>
		<description><![CDATA[今日、現在関わっている仕事のクライアントさんのテストサーバーにCakePHPの本体をアップロードしたんですけど、そしたら見たことないエラーが出ました。 Warning: date() [http://php.net/function.date]: It is not safe to rely on the system&#8217;s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected &#8216;Asia/Tokyo&#8217; for &#8216;JST/9.0/no DST&#8217; [...]]]></description>
			<content:encoded><![CDATA[<p>今日、現在関わっている仕事のクライアントさんのテストサーバーにCakePHPの本体をアップロードしたんですけど、そしたら見たことないエラーが出ました。</p>
<p><strong>Warning: date() [http://php.net/function.date]: It is not safe to rely on the system&#8217;s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected &#8216;Asia/Tokyo&#8217; for &#8216;JST/9.0/no DST&#8217;</strong></p>
<p>どうやらタイムゾーンが設定されていないせいでdate()関数が使えませんよ～ってなことらしいです。</p>
<p>PHP5.1以降は、デフォルトのタイムゾーンが設定されていないとこんなエラーが出るみたいですね。今まで見たことなかったってことは、今まで関わってきたサーバーはどれもちゃんとそのデフォルトのタイムゾーンが設定されていたってことなんですかね。</p>
<p>これを解決するには、php.iniの設定を書き換えるか、date_default_timezone_set()関数を使うと良いようです。</p>
<textarea name="code" class="php:nocontrols" cols="30" rows="5">

//php.ini
date.timezone = Asia/Tokyo

//date_default_timezone_set()を使う場合
date_default_timezone_set('Asia/Tokyo');

</textarea>
<p>こういうときはphp.iniを直接書き替えたいところなんですけど、すでに動いているサイトのphp.iniを書き換えるのはちょっとあれなので、てゆーか、どこにphp.iniファイルがあるか分からなかったので、date何ちゃら関数の方で対処しました。</p>
<p>bootstrap.phpにでも書いとけば大丈夫かなって思ったんですけど、どうやらbootstrap.phpが呼ばれる前にdate()関数が発動している部分があるようで、仕方ないのでindex.phpに書きました。</p>
<p>いいんかいな……？</p>
]]></content:encoded>
			<wfw:commentRss>http://astrodeo.com/blog/archives/1593/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>googlemapについて調べてみた。</title>
		<link>http://astrodeo.com/blog/archives/1465</link>
		<comments>http://astrodeo.com/blog/archives/1465#comments</comments>
		<pubDate>Mon, 15 Nov 2010 10:04:58 +0000</pubDate>
		<dc:creator>oc</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://astrodeo.com/blog/?p=1465</guid>
		<description><![CDATA[何でここまで調べてたんだだろう。 googlemapapiを使う時は公式のサイトを参考にしてた。 googlemapapiリファレンス そしてあまり知らないでいいようなPCでマップを表示してる時ってどうやって検索してるんだろうと思って調べてみました。 検索は何故かマカオにしてみた。 googlemapの右上に書いてある「リンク」を押すとそのときの検索結果の地図を貼れるのですね。 流石googleさん。 http://maps.google.co.jp/maps ?f=q &#038;source=s_q &#038;hl=ja &#038;geocode= &#038;q=%E3%83%9E%E3%82%AB%E3%82%AA &#038;ll=36.5626,136.362305 &#038;spn=42.867187,79.013672 &#038;brcurrent=3,0&#215;0:0&#215;0,0 &#038;ie=UTF8 &#038;hq= &#038;hnear=%E3%83%9E%E3%82%AB%E3%82%AA &#038;z=13 デフォルトで渡される値はこんな感じ。 ?f=デフォルトはq,dだと乗り換え案内付 &#038;source=s_q &#038;hl=ja：言語,英語だとen。ロシアはru？ &#038;geocode=住所？ &#038;q=マーカー。（ピンがあれば）その上に出て来る吹き出し &#038;ll=世界測地の経度と緯度。,で区切る。 &#038;span=表示範囲の指定。zが設定されてない時に有効。 &#038;brcurrent=3,0&#215;0:0&#215;0,0 &#038;ie=入力文字コード。デフォルトがUTF8なのかは謎 &#038;hq=不明 &#038;hnear=不明 &#038;z=ズームを決める。20くらいまでっぽい。確かめてないけど。 何故か気になって調べてみた。]]></description>
			<content:encoded><![CDATA[<p>何でここまで調べてたんだだろう。</p>
<p>googlemapapiを使う時は公式のサイトを参考にしてた。</p>
<p><a href="http://code.google.com/intl/ja/apis/maps/documentation/javascript/v2/reference.html" target="_blank">googlemapapiリファレンス</a></p>
<p>そしてあまり知らないでいいようなPCでマップを表示してる時ってどうやって検索してるんだろうと思って調べてみました。</p>
<p>検索は何故かマカオにしてみた。</p>
<p>googlemapの右上に書いてある「リンク」を押すとそのときの検索結果の地図を貼れるのですね。<br />
流石googleさん。</p>
<p>http://maps.google.co.jp/maps</p>
<p>?<strong>f</strong>=q<br />
&#038;<strong>source</strong>=s_q<br />
&#038;<strong>hl</strong>=ja<br />
&#038;<strong>geocode</strong>=<br />
&#038;<strong>q</strong>=%E3%83%9E%E3%82%AB%E3%82%AA<br />
&#038;<strong>ll</strong>=36.5626,136.362305<br />
&#038;<strong>spn</strong>=42.867187,79.013672<br />
&#038;<strong>brcurrent</strong>=3,0&#215;0:0&#215;0,0<br />
&#038;<strong>ie</strong>=UTF8<br />
&#038;<strong>hq</strong>=<br />
&#038;<strong>hnear</strong>=%E3%83%9E%E3%82%AB%E3%82%AA<br />
&#038;<strong>z</strong>=13</p>
<p>デフォルトで渡される値はこんな感じ。</p>
<p>?<strong>f</strong>=デフォルトはq,dだと乗り換え案内付<br />
&#038;<strong>source</strong>=s_q<br />
&#038;<strong>hl</strong>=ja：言語,英語だとen。ロシアはru？<br />
&#038;<strong>geocode</strong>=住所？<br />
&#038;<strong>q</strong>=マーカー。（ピンがあれば）その上に出て来る吹き出し<br />
&#038;<strong>ll</strong>=世界測地の経度と緯度。,で区切る。<br />
&#038;<strong>span</strong>=表示範囲の指定。zが設定されてない時に有効。<br />
&#038;<strong>brcurrent</strong>=3,0&#215;0:0&#215;0,0<br />
&#038;<strong>ie</strong>=入力文字コード。デフォルトがUTF8なのかは謎<br />
&#038;<strong>hq</strong>=不明<br />
&#038;<strong>hnear</strong>=不明<br />
&#038;<strong>z</strong>=ズームを決める。20くらいまでっぽい。確かめてないけど。</p>
<p>何故か気になって調べてみた。</p>
]]></content:encoded>
			<wfw:commentRss>http://astrodeo.com/blog/archives/1465/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>updateAllでまとめてアップデート（改）</title>
		<link>http://astrodeo.com/blog/archives/1478</link>
		<comments>http://astrodeo.com/blog/archives/1478#comments</comments>
		<pubDate>Sat, 13 Nov 2010 08:47:17 +0000</pubDate>
		<dc:creator>マッチー</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://astrodeo.com/blog/?p=1478</guid>
		<description><![CDATA[むか～しむかし、まあだいたい1年くらい前ですが、CakePHPで開発をしている場合の話で、「単一のモデルにおいて、複数のレコードをまとめてアップデートしたいようなときには、updateAll()を使うといい」みたいなことを、言ったことがありました。 そのときの記事がこれ 僕は開発はCakePHPに頼りっぱなしなので、いざってときに自分でSQL文を書けないプログラマとしてすくすく育ってきたものですから、当然のようにUPDATE文も書けないわけです。 でも自分で昔にこの記事を書いたってことだけは未だに覚えてるから、UPDATE文を書くときには必ずこの記事を見てたんですよ。一応、一番下にSQL文も載せときましたからね。主にphpMyAdminで直接SQL文を書くときに重宝してました。今でもしてます。 何回も書いてればそのうち見なくても書けるようになるんじゃないのかと思わないでもないんですけど、未だに覚えないんですよね～。こういうのって、ここを見れば分かるってことを覚えてると、意外と頭の中には残らないんですよね。電話番号と一緒ですよ。携帯電話を持ってなかった頃は友達の番号とかわりと記憶してましたけど、携帯を持っちゃうと、そんなのいちいち覚えてる必要がなくなるから、もう全く覚えていられない。 人間、必要がなくなると衰える一方ですわね。 逆に開発していてupdateAllを使うことって今までほとんどなかったんですけど、今日、ついにその日が来ましてね。同じように上記のリンク先に行って自分の記事を見ながら書けば問題ないと喜び勇んでいたのですが…… あの記事、間違ってましたorz まあ、前にも同じ会社の先輩プログラマのヅヤ氏に「これ間違ってね？」って指摘されたことがあったんですけど、「ああ、じゃあ後で記事直しとくよ」とか適当にあしらって終わってしまったので、未だに間違えたまま記事として公開されてるんですが、今日はこいつのせいで俺自身が要でもないエラーに悩まされていたので、今ここで改めて正しい内容を書いとこうと思います。 万が一、他にもあの記事を見て同じように動かねえじゃねーかって人が出てしまったときのために、間違いは早めに訂正しておかないとね。早めにっつっても、もう1年以上経ってますけど。 あと土下座する準備もしておくから、いつでもゲザれるぜ。 間違っている箇所が分かり易いように、たとえは前回と同じでいきましょう。usersというテーブルにageとseijinという二つのフィールドがあるとし、どちらもint型で、ageには年齢が、seijinには、1か0の値が入っている。成人だったら1、そうでなければ0。そして今、20歳以上の人のseijinフィールドの値を全て1にしたいとする。 前回の内容はこちら。 $fields = array('age >= ' => '20'); $conditions = array('seijin' => '1'); $this->User->updateAll($fields, $conditions); 正しくはこちら。 $fields = array('seijin ' => '1'); $conditions = array('age >=' => '20'); $this->User->updateAll($fields, $conditions); ようするに、fieldsとconditionsの中身が逆だったってことですね。まあ、フィールドって何ぞやとかコンディションって何ぞやってことをちゃんと分かってる人なら、この間違いにもすぐ気付くし、正しくはどう書くのかもすぐに分かると思うんですけどね。自分自身の備忘録の意味もあるので、ちゃんと書いときます。 これで大丈夫だね。俺も今度からはこっちの記事を見るようにするよ。 あ、ついでにUPDATE文も載せときましょうか。あっちは間違ってないので、前回と全く一緒です。 UPDATE `users` SET `seijin` = 1 WHERE `age` >= 20]]></description>
			<content:encoded><![CDATA[<p>むか～しむかし、まあだいたい1年くらい前ですが、CakePHPで開発をしている場合の話で、「単一のモデルにおいて、複数のレコードをまとめてアップデートしたいようなときには、updateAll()を使うといい」みたいなことを、言ったことがありました。</p>
<p>そのときの記事が<a href="http://astrodeo.com/blog/archives/220">これ</a></p>
<p>僕は開発はCakePHPに頼りっぱなしなので、いざってときに自分でSQL文を書けないプログラマとしてすくすく育ってきたものですから、当然のようにUPDATE文も書けないわけです。</p>
<p>でも自分で昔にこの記事を書いたってことだけは未だに覚えてるから、UPDATE文を書くときには必ずこの記事を見てたんですよ。一応、一番下にSQL文も載せときましたからね。主にphpMyAdminで直接SQL文を書くときに重宝してました。今でもしてます。</p>
<p>何回も書いてればそのうち見なくても書けるようになるんじゃないのかと思わないでもないんですけど、未だに覚えないんですよね～。こういうのって、ここを見れば分かるってことを覚えてると、意外と頭の中には残らないんですよね。電話番号と一緒ですよ。携帯電話を持ってなかった頃は友達の番号とかわりと記憶してましたけど、携帯を持っちゃうと、そんなのいちいち覚えてる必要がなくなるから、もう全く覚えていられない。</p>
<p>人間、必要がなくなると衰える一方ですわね。</p>
<p>逆に開発していてupdateAllを使うことって今までほとんどなかったんですけど、今日、ついにその日が来ましてね。同じように上記のリンク先に行って自分の記事を見ながら書けば問題ないと喜び勇んでいたのですが……</p>
<p>あの記事、間違ってましたorz</p>
<p>まあ、前にも同じ会社の先輩プログラマのヅヤ氏に「これ間違ってね？」って指摘されたことがあったんですけど、「ああ、じゃあ後で記事直しとくよ」とか適当にあしらって終わってしまったので、未だに間違えたまま記事として公開されてるんですが、今日はこいつのせいで俺自身が要でもないエラーに悩まされていたので、今ここで改めて正しい内容を書いとこうと思います。</p>
<p>万が一、他にもあの記事を見て同じように動かねえじゃねーかって人が出てしまったときのために、間違いは早めに訂正しておかないとね。早めにっつっても、もう1年以上経ってますけど。</p>
<p>あと土下座する準備もしておくから、いつでもゲザれるぜ。</p>
<p>間違っている箇所が分かり易いように、たとえは前回と同じでいきましょう。usersというテーブルにageとseijinという二つのフィールドがあるとし、どちらもint型で、ageには年齢が、seijinには、1か0の値が入っている。成人だったら1、そうでなければ0。そして今、20歳以上の人のseijinフィールドの値を全て1にしたいとする。</p>
<p>前回の内容はこちら。</p>
<textarea name="code" class="PHP:nocontrols" cols="30" rows="5">

$fields = array('age >= ' => '20');   

$conditions = array('seijin' => '1');   
  
$this->User->updateAll($fields, $conditions);   

</textarea>
<p>正しくはこちら。</p>
<textarea name="code" class="PHP:nocontrols" cols="30" rows="5">

$fields = array('seijin ' => '1');   

$conditions = array('age >=' => '20');   
  
$this->User->updateAll($fields, $conditions);   

</textarea>
<p>ようするに、fieldsとconditionsの中身が逆だったってことですね。まあ、フィールドって何ぞやとかコンディションって何ぞやってことをちゃんと分かってる人なら、この間違いにもすぐ気付くし、正しくはどう書くのかもすぐに分かると思うんですけどね。自分自身の備忘録の意味もあるので、ちゃんと書いときます。</p>
<p>これで大丈夫だね。俺も今度からはこっちの記事を見るようにするよ。</p>
<p>あ、ついでにUPDATE文も載せときましょうか。あっちは間違ってないので、前回と全く一緒です。</p>
<textarea name="code" class="PHP:nocontrols" cols="30" rows="5">

UPDATE `users` SET `seijin` = 1 WHERE `age` >= 20

</textarea>
]]></content:encoded>
			<wfw:commentRss>http://astrodeo.com/blog/archives/1478/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iphoneで周辺の情報を取得してみる</title>
		<link>http://astrodeo.com/blog/archives/1458</link>
		<comments>http://astrodeo.com/blog/archives/1458#comments</comments>
		<pubDate>Thu, 11 Nov 2010 10:15:57 +0000</pubDate>
		<dc:creator>oc</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://astrodeo.com/blog/?p=1458</guid>
		<description><![CDATA[おばんです。 先日の日記に引き続き。 今回欲しかったのは「経度」と「緯度」 こんな感じな事を行いたい訳です参考サイトさん ※ちなみにFirefox 3.5 以降のブラウザでのみ正確な値が取得できます。 googleChromeで見たら新宿になった。何故新宿。 今回私が使うデータにはもう経度と緯度が登録されているので現在地とデータを比較するだけ。 ブラウザがGeolocation APIに対応している場合は、 navigatorオブジェクト内に geolocationオブジェクトが用意されているとのこと。 geolocationオブジェクトの中で現在地の位置情報を求めるためのメソッドが用意されている。 これを使うしかない。むしろこれ以外の方法は切ないけど今の私には思いつけないのです。 navigator.geolocation.watchPosition() 今回はこれでOK 渡されたオブジェクト名が position の場合 position.coords.latitude→緯度 position.coords.longitude→経度 position.coords.altitude→高度 position.coords.accuracy→水平方向の誤差 position.coords.altitudeAccuracy→垂直（高さ）方向の誤差 position.coords.heading→方向 position.coords.speed→速度 達が取得できます。 とれない値もあるので用法、用量を守ってご使用下さい。（？） Safariに搭載されているGPS関連機能は W3C（World Wide Web Consortium）のGeolocation APIに準拠しているらしく 恩恵に授かりました。 後あれですね、日本の携帯だと緯度と経度が日本用なのですが iphoneは世界基準で取得してくれるので処理がシンプルに済みました。 私は何故かpostでデータを送るまでして取れてるのにveiwファイルが表示されない！と思いつづけてました。 何やってんだ。ああ悔しい。 大体のソースは前の日記の方が参考になると思われます。 次に位置情報を取得するようなシステムを作る時には駆使しよう。そうしよう。]]></description>
			<content:encoded><![CDATA[<p>おばんです。</p>
<p>先日の<a href="http://astrodeo.com/blog/archives/1403">日記</a>に引き続き。</p>
<p>今回欲しかったのは「経度」と「緯度」</p>
<p>こんな感じな事を行いたい訳です<a href="http://lab.cirius.co.jp/geoloc.html">参考サイトさん</a></p>
<p>※ちなみにFirefox 3.5 以降のブラウザでのみ正確な値が取得できます。<br />
googleChromeで見たら新宿になった。何故新宿。</p>
<p>今回私が使うデータにはもう経度と緯度が登録されているので現在地とデータを比較するだけ。</p>
<p>ブラウザがGeolocation APIに対応している場合は、<br />
navigatorオブジェクト内に geolocationオブジェクトが用意されているとのこと。<br />
geolocationオブジェクトの中で現在地の位置情報を求めるためのメソッドが用意されている。<br />
これを使うしかない。むしろこれ以外の方法は切ないけど今の私には思いつけないのです。</p>
<textarea name="code" class="PHP:nocontrols" cols="30" rows="5">
 navigator.geolocation.watchPosition()
</textarea>
<p>今回はこれでOK</p>
<p>渡されたオブジェクト名が position の場合</p>
<p>position.coords.latitude→緯度<br />
position.coords.longitude→経度<br />
position.coords.altitude→高度<br />
position.coords.accuracy→水平方向の誤差<br />
position.coords.altitudeAccuracy→垂直（高さ）方向の誤差<br />
position.coords.heading→方向<br />
position.coords.speed→速度</p>
<p>達が取得できます。</p>
<p>とれない値もあるので用法、用量を守ってご使用下さい。（？）</p>
<p>Safariに搭載されているGPS関連機能は<br />
W3C（World Wide Web Consortium）のGeolocation APIに準拠しているらしく<br />
恩恵に授かりました。</p>
<p>後あれですね、日本の携帯だと緯度と経度が日本用なのですが<br />
iphoneは世界基準で取得してくれるので処理がシンプルに済みました。</p>
<p>私は何故かpostでデータを送るまでして取れてるのにveiwファイルが表示されない！と思いつづけてました。<br />
何やってんだ。ああ悔しい。</p>
<p>大体のソースは前の日記の方が参考になると思われます。</p>
<p>次に位置情報を取得するようなシステムを作る時には駆使しよう。そうしよう。</p>
]]></content:encoded>
			<wfw:commentRss>http://astrodeo.com/blog/archives/1458/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>modelでの記述ミス。</title>
		<link>http://astrodeo.com/blog/archives/1362</link>
		<comments>http://astrodeo.com/blog/archives/1362#comments</comments>
		<pubDate>Mon, 01 Nov 2010 18:03:06 +0000</pubDate>
		<dc:creator>oc</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://astrodeo.com/blog/?p=1362</guid>
		<description><![CDATA[var $belongsTo = array( 'Detail' => ←☆ array( 'className' => 'Detail', ), ); modelで☆部分の指定を記述し忘れていて Error: Database table ○○ for model ○○ was not found. とエラーが。そりゃあそうだ。 情けない思いを味わったので今後忘れないように気をつけよう。]]></description>
			<content:encoded><![CDATA[<textarea name="code" class="PHP:nocontrols" cols="30" rows="5">		
var $belongsTo = array(
 'Detail' =>                            ←☆
 array(
 'className' => 'Detail',
 ),						
);

</textarea>
<p>modelで☆部分の指定を記述し忘れていて</p>
<p>Error: Database table ○○ for model ○○ was not found.</p>
<p>とエラーが。そりゃあそうだ。</p>
<p>情けない思いを味わったので今後忘れないように気をつけよう。</p>
]]></content:encoded>
			<wfw:commentRss>http://astrodeo.com/blog/archives/1362/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>find(&#8216;list&#8217;)でid以外の取得</title>
		<link>http://astrodeo.com/blog/archives/1339</link>
		<comments>http://astrodeo.com/blog/archives/1339#comments</comments>
		<pubDate>Thu, 28 Oct 2010 09:35:37 +0000</pubDate>
		<dc:creator>oc</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://astrodeo.com/blog/?p=1339</guid>
		<description><![CDATA[色々な取得の仕方がありますが今回は「list」について。 今回任意で付けた「ほにゃらら_id」をlistで取得しようと思い調べたので記述。 いつものfind(&#8216;all&#8217;)を使う癖で fieldsにカラム名を記述してたのでですが登録した際にどうもテーブルのidが登録されている、と思い $categoryselect = $this->Lancategory->find('list', array('conditions' => array('iso' => $id), 'fields'=>array('category_id','category_name')) ); と修正。 任意のidと名前が思った通りに取得できました。 一言で言ってしまえば第二引数で指定したら良い、って事らしいです。]]></description>
			<content:encoded><![CDATA[<p>色々な取得の仕方がありますが今回は「list」について。</p>
<p>今回任意で付けた「ほにゃらら_id」をlistで取得しようと思い調べたので記述。</p>
<p>いつものfind(&#8216;all&#8217;)を使う癖で<br />
fieldsにカラム名を記述してたのでですが登録した際にどうもテーブルのidが登録されている、と思い</p>
<textarea name="code" class="PHP:nocontrols" cols="30" rows="5">
$categoryselect = $this->Lancategory->find('list',
 array('conditions' => array('iso' => $id),
 'fields'=>array('category_id','category_name'))
);
</textarea>
<p>と修正。</p>
<p>任意のidと名前が思った通りに取得できました。</p>
<p>一言で言ってしまえば第二引数で指定したら良い、って事らしいです。</p>
]]></content:encoded>
			<wfw:commentRss>http://astrodeo.com/blog/archives/1339/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

