Archive for 9月, 2007
北海道旅行 その4 スープカレー Massarra (マッサーラ)
0旭山動物園の帰りに札幌でスープカレーを食べました。
カリー専門店 Massarra (マッサーラ)というお店です。
女性のオーナーがやっているお店で店員さんもすごく感じのいい方でした。
スープカレーは初めて食べたのですがすごくおいしく気に入りました!
ご飯のおかわりは自由なのもうれしいサービスですね。
北海道旅行 その3 札幌ドーム展望台
1最終日は天候が大荒れだったので札幌ドームの展望台へ行ってみました。
時間が合えばドームツアーに参加しようと思っていたのですが間に合わなかったので展望台のみです。
チケットを購入後エレベータで3階に行くともう既に外野席よりも上に着いていました。
そこから2つエスカレータを上がると展望台です。
また、展望台以外にもセンターの後方にはキッズルームがあり、無料で子供が遊べます。
行った日は天候が悪かったためかお母さん達がお弁当持参で子供連れてたくさん遊びに来ていました。
キッズルームは無料なので駐車場代だけでかなり遊べるので近所にあれば行っちゃいますね。
北海道旅行 その2 旭山動物園
02日目は大人気の旭山動物園へ。
キロロに泊まったので片道3時間半から4時間かかるとホテルの方に言われたので行くのを迷いましたが、覚悟を決めて出発。
結局休憩を入れて3時間くらいで着きました。(高速道路は決して飛ばしていませんよ)
昼前に着いた時にはすごい混雑でしたね。お弁当は売り切れていてちょっと残念。
旭山動物園は見せ方がすごくうまいのは有名ですが、いたるところにある手書きの看板やポスターがいい味出してます!
ペンギン
入り口に近いこともあるのか、入るのに10分ほど待つ列が出来ていました。
アザラシ。
ものすごい人の数。パイプの中をアザラシが通ると大歓声が。
北海道旅行 その1 モエレ沼公園
1イサム・ノグチが設計したモエレ沼公園
新千歳空港からレンタカーで1時間弱くらいで着きました。駐車場は広大で無料でした。
園内もかなり広く1日使ってゆっくりするのがいいかもしれません。
うちの子供は遊具に大興奮して遊んでいました。
BIALETTI Mukka Express ムッカカプチーノメーカー
1誕生日プレゼントにカプチーノメーカーをもらいました。
普通のエスプレッソメーカーに一緒にミルクも入れられてエスプレッソとミルクフォームを同時に作る感じです。
作るのに少しコツがいるのでまだたまに失敗しますが、おいしいカプチーノが簡単に作れます。
うちは IH ですが真ん中が IH ではなく熱くなるやつ(なんていうのか分からない。。。)なのでそこで使用しています。
できたカプチーノは下のような感じです。
本当は2カップ分できるのですが、写真のアマゾンのマグカップは大きいので2カップ分入ってしまいました。
お勧めは楽天で売っているペアのマグカップとコーヒー豆がセットになったセットです。
しかもアマゾンよりも安いですよ!
BIALETTI Mukka Express ムッカカプチーノメーカー(牛柄)2カップ用&ペアマグカップソーサー2客セット&自家焙煎珈琲
CakePHP findAll で INNER JOIN する方法
1開発中の CakePHP の案件でどうしても INNER JOIN する必要があり、かといって SQL を直接書くのは他のコンポーネントとの兼ね合いでできるだけ避けたい(というより無理)な状況だったので、絶対何か方法があるだろうと思いソースを調べたのでメモしておきます。
/cake/libs/model/model_php5.php の findAll メソッドに
$queryData = array('conditions' => $conditions, 'fields' => $fields, 'joins' => array(), 'limit' => $limit, 'offset' => $offset, 'order' => $order );
というのがあり、’joins’ に 空の配列を入れている。
この ‘joins’ の使い方を調べたら、
array( "type" => "INNER", "alias" => "", "table" => INNER JOIN するテーブル, "conditions" => INNER JOIN の ONに指定する条件, );
という配列を入れると INNER JOIN してくれるようです。
ただ、findAll の中で joins に空配列を入れているので、findAll を実行するときのパラメータに joins を指定しても無視されてしまう。
そこで、モデルの beforeFind メソッドを使用することにした。このメソッドは findAll の実行する前に呼ばれるメソッドです。
findAll を実行するモデルに次の beforeFind を定義
function beforeFind(&$queryData) { $queryData["joins"][] = array( "type" => "INNER", "alias" => "", "table" => "`model_name`", "conditions" => array("model_name.field=model_name2.field2"), ); return true; }
これで実行された SQL を確認すれば INNER JOIN されれいます。
OpenPNE ユーザID からユーザ情報を取得するグローバル関数
1OpenPNE をカスタマイズしていてユーザID からユーザのニックネームなど簡単に取得できないかと調べてみると、色々なグローバル関数がありました。
openpne/webapp/lib/db/member.php 内で各種定義されています。
ユーザ情報のよく使う部分のみを取得する
- 関数名
- db_member_c_member4c_member_id_LIGHT($c_member_id)
- 引数
- int $c_member_id ユーザID
- 戻り値
- array ユーザ情報
引数はユーザ IDで、ユーザ情報が連想配列で戻されます。
array( 'c_member_id' => 'ユーザID', 'nickname' => 'ニックネーム', 'image_filename' => '画像ファイル名' )
ニックネームはそのままテンプレートで表示できます。
画像ファイル名は以前のエントリの「OpenPNE 画像の保存、表示方法」や「OpenPNE 画像を色々なサイズで表示する」を参考に表示させることができます。
ユーザ情報を取得する
bool $is_secure `c_member_secure`の項目を取得するかどうか
bool $with_profile `c_member_profile`の項目を取得するかどうか
string $public_flag プロフィール項目を取得する場合の公開設定(public, friend, private)
その他
まだまだ色々な関数があります。興味ある方はソースを調べてみるとよいかと思います。
OpenPNE 画像を色々なサイズで表示する
1以前書いたエントリ「OpenPNE 画像の保存、表示方法 」で、OpenPNE にアップロードした画像の表示方法を紹介しました。
表示方法は下記のとおりです。
<img src=&qt;({t_img_url filename=$pet.image1 w=180 h=180})&qt;>
しかし、この方法では 240×240 のような画像が表示できませんでした。
ソースを追ってみると設定ファイルで許可するサイズを設定するところがありました。
openpne/config.php
$GLOBALS['_OPENPNE_IMG_ALLOWED_SIZE'] = array('76x76', '120x120', '180x180');
この配列に ’240×240′ を追加すれば 縦か横の長い方が 240px の写真が表示できます。
また、
$GLOBALS['_OPENPNE_IMG_ALLOWED_SIZE'] = array();
のように空の配列にすれば制限がなくなり、自由に大きさを指定できます。
ただ、制限はかけておいた方がいいでしょう。
CakePHP 保存したデータをすぐに find したい場合キャッシュを OFF にする
1CakePHP で保存したデータをすぐにfind するとキャッシュが効いている為に保存したばかりのデータを取得することができません。
その場合はキャッシュを OFF にすることにより新しいデータを取得することができます。
$this->Model->cacheQueries = false;
シェルから CLI版 PHP を実行した場合の返り値
0シェルから PHP を実行してその結果を元にシェルで処理をしたいので、PHP からシェルに値を戻す方法を調べた。
exit で引数を指定できるのを知らなかったのでメモ。
●参考PHPマニュアル
PHP: exit – Manual
正常終了の場合
exit(0);
異常終了の場合
exit(1);
とすれば
/usr/bin/php hoge.php if [ $? -ne "0" ]; then 異常終了時の処理 else 正常終了時の処理 fi
と “$?” で php からの返り値をチェックしてその後の処理の分岐に使用できます。