<?xml version="1.0" encoding="UTF-8"?><rss version="0.92">
<channel>
	<title>アルファブレンド　プログラミングチップス</title>
	<link>http://program.alphabrend.com</link>
	<description>色々な備忘録</description>
	<lastBuildDate>Tue, 13 Jul 2010 07:58:15 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>ja</language>
	<!-- generator="WordPress/3.0" -->

	<item>
		<title>HABTMの注意事項</title>
		<description><![CDATA[CakePHP1.2でloadModelを使ってモデルを用意することがあるが、 その際予期していたクラスでなく、AppModelが入ってくることがある。 ひとつの原因として、綴りミスがある。 しかし綴りは合っているのにAppModelになってしまったり、 loadModelする場所によってAppModelになったりちゃんとしたクラスが呼び出されたりする。 この原因はHABTMにある場合がある。 たとえばposts, posts_tags, tagsというテーブルがあったとする。 この時、posts_controller.phpでは自動的にposts_tagsとtagsが初期化されるのだが、 この時連結であるposts_tagsがAppModelとして初期化されていた。 そのため、以後loadModelでPostsTagを呼びだすとAppModelとして返ってきてしまい、 PostsTagに宣言してあった関数などが呼び出せなくなったりしてしまう。 （すべての環境、バージョン等でそうかは知らない） 対処法としては、PostモデルのHABTM以外にhasManyとしてPostsTagを宣言しておけば良い。 ご注意を。]]></description>
		<link>http://program.alphabrend.com/?p=68</link>
			</item>
	<item>
		<title>携帯サイトその２</title>
		<description><![CDATA[以前、CakePHPでrender関数をオーバーライドして 自動的に携帯テンプレートを振り分ける方法を紹介した。 それにも関連するが、追加のプログラムを紹介。 function _mb_render() { $this-&#62;layout = 'mobile'; $output = $this-&#62;render(); $contents = mb_convert_encoding($this-&#62;output, 'SJIS', 'UTF-8'); echo $contents; exit; } 例えば上記は明示的に携帯サイトの出力を行ないたい場合などに便利。 最近のrender関数は返り値で出力内容を返してくれるようなので、 上記だけで全部済んでしまう。 mobileのlayoutのメタタグにはshift_jisと書いておく必要はあるが、 基本的に全部プログラムはテンプレートはutf-8で作ることが出来る。 （ただし、別途GETやPOSTの取得は手動でshift_jisからutf-8に変更したりは必要） 他にも、上記の方法を使ったりrender関数をオーバーライドしたりすることで、 携帯サイトだけでなくPC側のopensocial用のプログラムなどにも利用出来る。 { 'html' : $output, 'parameters' : $parameters, } みたいな感じのjsonを出力すれば アプリケーション側では受け取ったhtmlをそのままinnerHTMLにいれるだけで 楽にアプリが作成可能。]]></description>
		<link>http://program.alphabrend.com/?p=64</link>
			</item>
	<item>
		<title>cronを使う</title>
		<description><![CDATA[以前、CakePHPにて別の方法でcronを使用する方法を書いていましたが、 バージョン1.2以降はシェル機能が付いているのでそちらを利用する方が正解です。 とりあえず一例だけ載せておきます。 vendors/shells/test.php class TestShell extends Shell { var $uses = array('Test'); function main() { $this-&#62;Test-&#62;find('all'); echo 'finish'; } } 0 0 * * * cd /dir/at/app;php cake/console/cake.php test]]></description>
		<link>http://program.alphabrend.com/?p=56</link>
			</item>
	<item>
		<title>WordPress3.0をmysql4.0で使う</title>
		<description><![CDATA[現在のWordPressの最新版である3.0をインストールしようとしたところ、 なんとmysqlのバージョンが4.0だったためインストールが出来なかった。 しかし無理やりインストールしてみたのでそれの備忘録。 とりあえず投稿などはできるようですが、正しく動くかどうかは一切保証できません。 wp-admin/install.php 150行目に$mysql_compatでバージョンをチェックしているので、次の行に $mysql_compat = true; として無理やりOKにする。 wp-includes/wp-db.php 同じ意味で1511行目check_database_versionの一番最初の行に return; をいれる。 上記でデータベースバージョンのチェックを無視。 あとはSQLをver4にあわせなければならない。 とりあえず下記を修正すればインストール、投稿あたりはいける。 wp-admin/includes/schema.php 25行目まで、$charset_collateに値を入れているため次の行に $charset_collate = ''; で文字コード設定をなくす。 あとはON DUPLICATEというクエリを使用しているところがあるので、これを修正する。 wp-includes/functions.php 604行目をまるまる下記に置き換え。 if ($wpdb-&#62;get_row($wpdb-&#62;prepare(&#34;SELECT * FROM `$wpdb-&#62;options` WHERE `option_name` = %s&#34;, $option))) { $result = $wpdb-&#62;query( $wpdb-&#62;prepare( &#34;UPDATE `$wpdb-&#62;options` SET `option_value` = %s, `autoload` = %s WHERE `option_name` = %s&#34;, [...]]]></description>
		<link>http://program.alphabrend.com/?p=6</link>
			</item>
	<item>
		<title>phpのcgiモードでHTTPのリクエストヘッダを取得</title>
		<description><![CDATA[リクエストヘッダを取得するにはgetallheaders()関数を使えばいいのだが、 モジュール版でしか使えない。 CGI版ではどうすればいいか調べたところ、方法があった。 RewriteRule ^(.*) &#8211; [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] を.htaccessにかけば$_SERVER[HTTP_AUTHORIZATION]のようにして取得可能になる。 CakePHPだと、webroot/.htaccessに RewriteEngine On RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] で取得可能。 RewriteCondの後だと取得できなくなる。]]></description>
		<link>http://program.alphabrend.com/?p=47</link>
			</item>
	<item>
		<title>さくらサーバーにswfmillをインストール</title>
		<description><![CDATA[さくらサーバーにswfmillをインストールした備忘録。 プランはビジネスの安い方。 swfmillをダウンロードしてインストールしますが、 最新バージョンはlite用パッチが上手くきかないので0.2.12を使う。 wget http://swfmill.org/releases/swfmill-0.2.12.tar.gz tar xzf swfmill-0.2.12.tar.gz cd swfmill-0.2.12 wget http://lab.klab.org/files/flash/encoding.patch patch -p1 &#60; encoding.patch configureは自分のディレクトリのパスを指定。 ./configure –-prefix=/home/username エラーがでるのでソースを修正。 src/gSWFParseXML.cppの31行目 size_t r = iconv(cd, (const char**)&#38;pin, &#38;inbytesleft, &#38;pout, &#38;outbytesleft); src/gSWFWriteXML.cppの31行目 size_t r = iconv(cd, (const char**)&#38;pin, &#38;inbytesleft, &#38;pout, &#38;outbytesleft); libpngのバージョンが合わない場合は下記も修正。 pngは自分で用意するならチェックいらないだろう…という勝手な前提。 src/swft/readpng.cの72行目 // if (!png_check_sig(sig, ) // return 1; /* bad signature */ [...]]]></description>
		<link>http://program.alphabrend.com/?p=45</link>
			</item>
	<item>
		<title>flexコンポーネントが重い</title>
		<description><![CDATA[mxmlで配置したImageコンポーネントを移動させると、かなり重い。 同じ画像でも、動的に作成したBitmapをCanvasにaddChildして動かすと 速さが全然違う。 性能のいいPCだと違いは分からないが、CPUの弱いPCだと顕著にわかる。 自分の環境で確認したところ、 Imageコンポーネントをひとつ動かすだけでも平均17fpsだったが、 Bitmapにすると設定通りの30fpsになった。 もちろん、Imageコンポーネントを動かさないで配置しているだけなら 全く問題はないようだ。 これは気を付けた方がいいかもしれない。]]></description>
		<link>http://program.alphabrend.com/?p=42</link>
			</item>
	<item>
		<title>scripts_for_layoutとは？</title>
		<description><![CDATA[いつのまにやらlayoutにscripts_for_layoutという変数が出力されている。 これは何だろう？ viewを見てみると、addScriptというメソッドがある。 これを利用すれば良いようだが、どこで使うかが分からない。 調べてみると、各々のコンテンツの中で使えば そのスクリプトがhead内に入るらしい。 例えば以下のように使う。 index.ctp &#60;h2&#62;○○の一覧&#60;/h2&#62; &#60;?php foeach… ?&#62; &#60;?php endforeach ?&#62; &#60;?php $this-&#62;addScript($javascript-&#62;codeBlock(’alert(&#34;alert in head!&#34;);)) ?&#62; すると出力時は &#60;html …&#62; &#60;head&#62; 　： 　： &#60;script type=&#34;text/javascript&#34;&#62;alert(&#34;alert in head!&#34;);&#60;/script&#62; &#60;/head&#62; &#60;body&#62; 　： という感じ。 追記となるが、上記は半分間違い。 実際にはJavascriptHelperのcodeBlock, linkメソッドやHtmlHelperのcssメソッドの引数で その場に記述するかscripts_for_layoutsに記述するかを指定できる。 基本的にはそっちを使うべき。 ソースを見てみるとinlineがどうたらこうたらで指定するようなので一度ご確認を。]]></description>
		<link>http://program.alphabrend.com/?p=30</link>
			</item>
	<item>
		<title>cakephpのモデル</title>
		<description><![CDATA[モデルでreadしてもなぜかアソシエーションしているものが取れなかった。 よくよく調べてみると、モデルのファイル名を間違えて複数形にしていた。 しかしなぜかプログラムはちゃんと動いている。 つまり単純なモデルならばモデルファイルを作らなくても 良くなっているということだ。 知らないところで進化し続けているなあ。]]></description>
		<link>http://program.alphabrend.com/?p=40</link>
			</item>
	<item>
		<title>MySQL文字列の数値変換</title>
		<description><![CDATA[MySQLにて文字列を数値に変換してソートなどする際、 CASTを用いるのだが、 MySQL3などだとその関数が未対応。 これはこまった。 が、以下のようにすればいけるようだ。 SELECT * FROM table ORDER BY string_id + 0 しかも、 1011 1012 1013 1013-2 1013-3 1013-4 1014 のように、ちょっとサブ的な要素を付けている場合も、 ちゃんと-2など余分な部分はカットした状態でソートしてくれる。]]></description>
		<link>http://program.alphabrend.com/?p=38</link>
			</item>
</channel>
</rss>
