CakePHPの「$this->set()」の2つの引数にはそれぞれ配列を渡すことができる

CakePHP 1.2.1.8004を使用中。
今頃知ったんですが、$this->set()の2つの引数にarray()を渡せるんですね。
これは別に1.2からできるようになったとかじゃなく、1.1のころから既にできるようになってたものみたい。
例えば、

<?php
//コントローラ
$params = array(
    'conditions' => array('Group.id' => $this->params['group_id']),
    'recursive' => -1);
$group = $this->Group->find('first', $params);
$params = array(
    'conditions' => array('User.name' => $this->params['name']),
    'recursive' => -1);
$user = $this->Group->User->find('first', $params);

$this->set(array('group', 'user'), array($group['Group'], $user['User']));
<?php
//ビュー
debug($group['id']);

みたいな。
今まで「$this->set('data', compact('group', 'user');」ってやってたけど、こっちの方がビューの中がすっきりして良いかも。

追記 (2009/03/07 22:03:40)

やっぱり普通に「$group = array_shift($this->Group->find('first', $params));」ってやった方が良いか。

本を数冊、注文したよ。

2月9日に2冊、今日2冊、合計4冊注文しました。2月9日のほうは19日ごろ届くらしいです。
まずは2月9日に注文した本から。

Django×Python (LLフレームワークBOOKS)

Django×Python (LLフレームワークBOOKS)

Django 1.0に対応しているということで、とても楽しみにしています。今作っている学内向けSNSサイトが完成したら本格的に使っていきたいと思います(そのサイトはCakePHPで作ってます)。
入門Mercurial Linux/Windows対応

入門Mercurial Linux/Windows対応

最近までバージョン管理ソフトというものを使ったことがありませんでした。今はNetBeansのツールでMercurialを触っています。ドキュメントを読んで何となくわかったような気になっていますが、この本をきっかけにもっと使い込んでいけたらな、と思います。
今日注文した本はというと…。
Trac入門 ――ソフトウェア開発・プロジェクト管理活用ガイド

Trac入門 ――ソフトウェア開発・プロジェクト管理活用ガイド

Trac、存在は知っているんですが、全然触ったことがありません。さくらインターネットのサーバに入れようと思って結局入れてないし…。タイトル通り、Trac入門者には打って付けの本らしいので、とても楽しみです。
詳説 正規表現 第3版

詳説 正規表現 第3版

そろそろちゃんと正規表現がわからないといけないな、と思ったので注文しました。正規表現の本で良い本ないかなーと思って探してたら、ものすごく絶賛されていたこの本に遭遇。曰く、「この本さえあれば正規表現の本は他に要らない」らしいので、楽しみです。
以上です。割とそれぞれ関連しあった本を注文した気がします(正規表現の本が若干浮いてますが、Djangoのurls.pyとかで使うし、関連してるよね!)。
あとこんなのも今日注文しました。
低反発快適円座クッション

低反発快適円座クッション

今使っているイスに長時間座ってると腰が痛くなるので、これで軽減できたらなと思ってます。ちなみに、今はユニクロのフリースを丸め、尻の下に敷いて頑張っています(・∀・;)

Djangoで「LookupError: unknown encoding: X-MAC-JAPANESE」ってエラーが出た。その解決方法。

環境

問題

タイトル通り。「はじめての Django アプリ作成、その 2 ― Django v1.0 documentation」のAdminページにある「History」ってリンクをクリックしたらエラーが出た。

解決方法

$ cd /opt/local/lib/python2.5/site-packages/django/utils/
$ sudo vim tzinfo.py

以下のように修正。

try:
    DEFAULT_ENCODING = locale.getdefaultlocale()[1] or 'ascii' # ←この行をコメントアウトして
    DEFAULT_ENCODING = 'ascii' # ←この行を追加
except:
    # Any problems at all determining the locale and we fallback. See #5846.
    DEFAULT_ENCODING = 'ascii'

MacでDjangoを使うまでのメモ

環境

Python

Python本体のインストール

最初から入ってるPythonのバージョンが低いので、MacPortsで最新版(バージョン2.5系)をインストールします。

$ sudo port install python25

インストールしたPythonをデフォルトに指定します。

$ sudo port install python_select  
$ sudo python_select python25

再起動するなりしてから以下のコマンドでバージョンを確認します。

$ python -V
Python 2.5.4
py25-mysqlのインストール

このままだとDjangoMySQLを使う際エラーになるので、py25-mysqlパッケージをインストールします。

$ sudo port install py25-mysql

Django

インストール

以下のコマンドを実行するだけ。簡単!

$ sudo port install py25-django

「py25-setuptools」とかも一緒にインストールしてくれます。

終了

メモする必要がないくらい簡単でした。ちょっとDjango ドキュメント ― Django v1.0 documentationチュートリアルやってみます。

MacPortsでApacheとPHPとMySQLを入れ直したメモ

環境

MacPortsの更新

$ sudo port selfupdate

MySQL

$ sudo port install mysql5 +server

自動で起動するように以下のコマンドを実行。

$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist

MySQLの初期化コマンドを実行。

$ sudo -u mysql mysql_install_db5

パーミッションを変更。

$ sudo chown -R mysql /opt/local/var/db/mysql5/
$ sudo chgrp -R mysql /opt/local/var/db/mysql5/

my.cnf(MySQLの設定ファイル)の設定。

$ sudo cp /opt/local/share/mysql5/mysql/my-small.cnf /opt/local/etc/mysql5/my.cnf
$ sudo vim /opt/local/etc/mysql5/my.cnf

書き込む内容は「my.cnfでよくやる設定メモ - bojovs技術日記」参照。
MySQLを起動。

$ sudo mysqld_safe5

rootのパスワードを設定。

$ sudo mysqladmin5 -u root password '(パスワード)'

パスワードが反映されているかログインして確かめる。

$ mysql5 -u root -p

こんな感じの表示になれば成功。

$ mysql5 -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.0.67 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

ちなみにmy.cnfを弄り直したりしてMySQLを再起動したくなったときは以下のコマンドを実行する。

$ sudo launchctl stop org.macports.mysql5
$ sudo launchctl start org.macports.mysql5

PHP

インストール
$ sudo port install php5 +apache2 +mysql5

いろいろ落ちてきて時間がかかる。
インストールが終わると以下のようなメッセージが表示される。

If this is your first install, you might want
cd /opt/local/apache2/modules
/opt/local/apache2/bin/apxs -a -e -n "php5" libphp5.so

httpd.confにlibphp5.soの記述をしてくれるそうなので、この通りに実行する。

$ cd /opt/local/apache2/modules
$ sudo /opt/local/apache2/bin/apxs -a -e -n "php5" libphp5.so
php.iniのコピー
$ cd /opt/local/etc
$ sudo cp php.ini-dist php.ini
php.iniの編集
$ sudo vim /opt/local/etc/php.ini

php.iniでよくやる設定まとめ - bojovs技術日記参考。

Apache再起動
$ sudo /opt/local/apache2/bin/apachectl restart

Apache

httpd.confの編集
$ sudo vim /opt/local/apache2/conf/httpd.conf

mod_php.confを読み込む。

# PHP
Include conf/extras-conf/mod_php.conf

ドキュメントルートを変更する(任意)。

DocumentRoot "/Users/(ユーザ名)/Sites"

Directory Indexの設定をする。


    DirectoryIndex index.html index.php #「index.php」を追記。

あとはhttpd.confの設定メモ - bojovs技術日記参照。

設定ミスの有無をチェックし、Apache再起動
$ sudo /opt/local/apache2/bin/apachectl configtest
$ sudo /opt/local/apache2/bin/apachectl restart

終了です。

久々にPHPのフレームワークをGoogle Trendsしてみた

さすがに

Yii Frameworkは圏外か…と思ったけど、

キーワードを「yii framework」から「yii」に変えたら出てきた。微妙に上昇してる。

それよりも

注目すべきはCodeIgniterのほう。他のフレームワークと違ってグングン上昇してる。熱いぜ、CodeIgniter。すっかり存在を忘れてたけど、今日か明日にでもドキュメント読んでみようかな。

あと、

このままだとCakePHPsymfonyの位置が逆転しそう。実はsymfonyのドキュメントもまともに読んだことがないっていう…。