2011年11月11日

河城にとり
■cakePHP2.0
2.02安定版が出たので、version2に初めて手を出してみました。
とりあえずいくつか違和感がちらほら。今日分かった範囲で列挙してみよう。
1.フォルダやファイルの命名法が変わってる
今までフォルダはmodelsやcontrollersといった複数形だったのにModel,Controllerと単数形で頭文字が大文字になっていた。ファイルもapp_controller.phpのようなアンダースコアを入れていたが今回からAppController.phpてな感じに。(パスカル記法というのか?)
2.AppController.phpの配置場所が変わった
今までapp直下だったのがapp/Controller直下と、ほかのcontrollerと同じ場所になった。
3.sqliteが標準装備された
これはうれしい。追加のファイルを設定しなくてすむ。
4.Htmlヘルパーが動かない?
今までならデフォルトで認識していたが、とりあえず1.3のファイルを放り込んでみたらエラーが出た。undefined index。どこかで宣言しないといけないのだろうか?もしくは何か別のヘルパーを統合されて名前変わったとか。
ほかにも細かいのがいろいろあった。今のところ2.0のリファレンスが日本語対応してないようなので、しばらくは英語で解釈しながら見ていくしかないねぇ。
2011年09月20日
■名華祭
申込してくれていた知人から落ちちゃった、との連絡。お。前々回、今回と続けて落ちちゃってるし。ちなみに前回は申し込んでいない。
やはりヤツには任せておけぬ。次回はユイがサークルカットを描かかねば。野球の勝率も上がってることだし。
■CakePHP
ユイ大好きフレームワークCakePHPの最新版1.3.12が出てますねぇ。始めて触ったのが1.3.5か1.3.4のころだったのでエラく進化してきました。といってもどう進化したかはよく分かってないんですけどねぇ。分かるのはバージョン番号が上がってことくらい。
さっそくダウンロードしてプライベート使用のあぷろだでも作ってみよう。完成目標は3日間!
2011年07月17日
■SQLite3
現バージョン(1.3.10)のCakePHPではSQLite3に対応してないみたいですねぇ。SQLite2で作成したデータベースは認識するけど、3は認識しない。次期バージョンの2.0(現状はアルファ版)では対応してる感じだけど。
できれば新しいほうの3を使いたい!
てなワケで使えるようにしましょう!やり方はいたって簡単。
まずは以下からCakePHP Datasourcesをダウンロード。現在のバージョンは0.2。
github:https://github.com/cakephp/datasources
解凍してmodels/datasources/以下のファイルをapp/models/datasourcesにコピー。
最後にdatabase.phpでデータベースの設定を
‘driver’=>’sqlite3′
としてやれば、SQLite3を使い倒すことができます!幸せ!
これでデータベースに書き込みが出来ない場合は、データベースのパーミッションが書込み禁止になっている可能性アリ。606になっているか確認!自分が読み込めるのに挿入や更新できねーなぁ、と思っていたらコレでした(汗
2011年07月14日
■半日がかり
かーかーりましたねェー、SQLite。動かすまでに一苦労。
MySQLと違って、データベースのサーバを用意する必要が無くデータベースを格納するファイル1つだけ。サーバの引越しとかでも設定いらずですぐ動いてくれる軽快さ。
AndroidにもSQLiteが入ってるそう。
ということでちょっと使ってみようと思ったワケです。が。簡単なDB作ってCakePHPで試しに入れてみたが、これがさっぱり認識してくれない。

データベースエラー
いくらごにょごにょイジってもなんともならんから、sqlite_open(‘test.db’)とだけ打ち込んだファイルを作って開いてみると反応なし。エラーログを見ると
[Thu Jul 14 14:14:39 2011] [error] [client XXX.XXX.XXX.XXX] PHP Fatal error: Call to undefined function sqlite_open() in /var/www/test.php on line 3
sqlite_open関数が未定義になってやんの。
つまりこれ、サーバにSQLiteが入ってないということ?

phpinfo
Fedora13では、パッケージでphpをインストールするとsqliteはwitohout、入ってないの。
自前で入れろってことですか。ですね。
1.以下からサーバに入ってるバージョンのPHPをダウンロード。
php本家:
http://www.php.net/downloads.php
2.サーバに放り込んで解凍して、/ext/sqlite のディレクトリに入る。
tar zxvf php-5.3.6.tar.gz
cd php-5.3.6/ext/sqlite
3.なんかごちゃごちゃする。何しているか実のところよく分かっていない。
phpize
./configure
make
make install
この4工程を入力すればインストール完了。
/extに入ってるPHPの拡張モジュールは、とりあえず馬鹿の一つ覚えのようにこの4つのコマンドを打ち込めばインストールできる、みたい。
4./etc/php.dフォルダにsqlite.iniファイルを新規作成してextension=sqlite.soを記述。
5.最後にapache再起動。
/etc/rc.d/init.d/httpd restart

データベースOK

SQLite確認
めでたく入りましたぁ!
この方法の欠点は、PHPのバージョンが上がってしまうと、その都度同じ作業をしないといけなくなるらしい。
5.3.6よりバージョンがあがったら、また検証してみましょう。
今回、こちらのサイトを参考にさせていただきました。
肉とご飯と甘いもの:
http://d.hatena.ne.jp/sotarok/20080607/php_5_with_sqlite
2011年02月02日
■長らく
放置してましたが、ようやく更新する気が起きました。
手始めに去年から始めているCakePHP。めでたくCakeの虫となりました。今ではサイトの表示やユーザー登録などの実装を経て、買い物サイトを作れるまでになりました。
でまあ、必須にとなるメール機能で送り先によってはたまにメールの頭にメールのヘッダーが付いちゃう現象が発覚。メールのプロバイダによって付いたり付かなかったりするみたい。
EmailComponentの初期状態だとそんなことなかったけど、文字セットをiso-2022-jpにすると発生した感じ。
解決策としては、cakeフォルダに入ってるemail.php内の_mailメソッドを
$header = implode(“\r\n”, $this->__header);
$message = implode(“\r\n”, $this->__message);
から
$header = implode(“\n”, $this->__header);
$message = implode(“\n”, $this->__message);
としたら出なくなりました。$messageも変更したのは、そのままだと改行が二重にされて文章が間延びしていたから。
本来cakeフォルダ内のファイルをいじるのはご法度なのだが、これだけなのでやっちゃった。
2010年08月19日
■フレームワークというもの
初めてCakePHPというものに触りました。PHPを触り始めた頃はPHPを編集するエディタか何かの名前かと思ってました。
最近、MVCモデルというプログラミングの手法に興味を持っていろいろ調べていたら、フレームワークという仕組みに行き着いていろいろある中のひとつがこのCakePHPでした。
今まで組んでた(いまもそうしているが)PHPのプログラムは1つのファイルにデザイン部分のHTMLと動作部分のPHPを一緒にして記述していました。別にコレでもいいんだけど、これだとあとか修正したり機能を追加したりするときいろいろめんどくさい。実際いろんなファイルを渡り歩いて修正したりしていたし。
このMVCモデルというのは、Model(動作部分)とView(デザイン部分)とController(その2つを仲介する部分)を区別して記述するプログラムの手法だという。なんでも、こうするとプログラムの修正・追加や保守がラクになるんだとか。
そんな手法(プログラミングの手法自体はMVC以外にもいろいろあるようです)を含めたいろんな機能・規則を用いて効率的にプログラムが組めるような仕組みを提供しているのがフレームワークで、今回は比較的覚えるのが簡単そうなCakePHPを選んでみました。
とりあえずチュートリアルをこなして、この2日間で日本語表示ができるまでにはなりました。MySQLの文字化けはある意味永遠のテーマのごとく付きまとってきます。今回はCakePHPのconfigフォルダにあるdatabase.phpでデータベース情報に
‘encoding’ => ‘utf8′,
を記述してやれば最終的に表示してくれました。コレ以前にMySQLの文字エンコードをいじったりしていたので、どれでうまくいったのは相変わらずなぞです。
しかし、この方法だと今まで1つだったファイルが3つになるわけで、ファイル数が激増するような気がする・・・。まあ、しばらく続けてみることにしよう。
あー、頭がイタイ。