Feed items

[CakePHP] CakePHP 2.x キャッシュファイルのパーミッション変更

cake コマンド実行するユーザと apache のユーザが異なる場合、キャッシュ周りでパーミッションエラーが発生してしまう。誰でも書込みできるように権限を設定するには、Cache::config() に "mask" というパラメータを追加してやるとよいらしい。
また、設定値は "数値 (例:0666)" でなければならないとのこと。文字列ではダメみたい。

[CakePHP] CakePHP 2.3.0 上の Migrations プラグインの注意

CakePHP 2.3.0 が正式にリリースしたのだが、 Migrations プラグインの master ブランチでは 2.3.0 は、未対応。公式な解決策としては、develop ブランチを使うといいとのこと。
https://github.com/CakeDC/migrations/issues/107
とりあえず master ブランチ動作させたかったので、AppShell に

<?php
App::uses('ClassRegistry', 'Utility');

の一行を追加して対応してみた。

CSSフレームワーク

[PHP] 外部プログラムの呼び出し方法いろいろ

PHPで外部プログラムを呼び出すには

  • exec()
  • paththru()
  • popen()
  • proc_open()
  • shell_exec()
  • system()

などの関数を使う。shell_exec() は、「実行演算子 バッククォート (``)」 のエイリアスでもある。popen(), proc_open() は、標準入出力をストリームとして扱う。それ以外は、標準入力は指定できず、結果は戻り値や引数で配列や文字列として返ってくる。

[Windows] hosts のパス

つい忘れてしまうのでメモ。
Windows 7 の場合:

C:\Windows\System32\drivers\etc\hosts

[Vagrant] vagrant package の注意点

OSWindows 7 (64bit)
VirtualBox 4.2.2
Ruby 1.9.1
Vagrant 1.0.5

Windows 7 にて vagrant package で作成した BOX をベースに vagrant up すると、 共有フォルダ (v-root) が作成時の古い設定のままになっていて困った。

  1. vagrant halt で VM を一旦停止
  2. GUI ツールで共有フォルダの設定を削除
  3. vagrant package を実行

という手順でやればとりあえずうまく行くようになった。MacOS X 環境では再現しなかったので、 Windows 特有の問題だと思う。

[Vagrant] Vagrant 1.0.5 リリース!

VirtualBox 4.2 対応の Vagrant 1.0.5 がリリースされていました。
VirtualBox 4.2 + Windows 7 で問題なく動作しています。
http://vagrantup.com/
VirtualBox 4.2.1 は、MacOS X 10.8 (Mountain Lion) 対応しているらしいので、そろそろ Mountain Lion にアップグレードしてみようか検討中。

[Debian] Debian (squeeze) ヘッドレス環境で firefox を使う

Debian (squeeze) サーバで、X 環境の代わりに xvfb を使って、firefox を起動してみた。
(おまけでスクリーンショットも撮ってみた。)
これをもとに、Selenium のテスト実行環境を用意しようと思う。
必要なパッケージのインストール:

apt-get -y install xvfb libgl1-mesa-dri ttf-vlgothic iceweasel

xvfb を起動

Xvfb :99

firefox を起動 (Yahoo!JAPAN を開く)

DISPLAY=:99 firefox http://www.yahoo.co.jp/

必要なパッケージを追加して、スクリーンショットを撮ってみる。

apt-get -y install x11-apps imagemagick
xwd -display :99 -root -out test.xwd
convert test.xwd test.png

デプロイ自動化チェックリスト

デプロイを自動化するために何から手をつけていいやら、やることが多くて方向を見失いがち。そこで、チェックリストにしてみた。
http://www.ryuzee.com/contents/blog/4461
より、大項目を並べてみる。

# 項目 □
1ソースコードのバージョン管理 □
2設定ファイルのバージョン管理 □
3データベーススキーマとデータのバージョン管理(マイグレーションの導入) □
4動作させるサーバのミドルウェアのインストール自動化や設定自動化 □
5テスト自動化 □
6CIサーバの構築 □
7デプロイスクリプトの作成 □

方針:

  • 完成度が低くても、まずは一通り実現させることを優先する。
  • 項目の中で最も優先順位が高いのが CIサーバの構築。

チェック結果
プロジェクト毎に対応度合いは異なるが、(2012/9) 時点 は、以下の状況。
1.ソースコードのバージョン管理
ソースコード管理は、もはや当然のこと、以下のツールを使用している。

[Chef] Chef の公式 cookbook リポジトリが移動してた

いままで、Opscode が管理する Chef の cookbook リポジトリが
https://github.com/opscode-cookbooks
以下に移動していた。今まで1つのリポジトリで管理していたものが、cookbook 単位で管理されるようになった。
移動してもう4か月前になるのか。おかしいなと思っていたが気づくの遅すぎw
http://www.opscode.com/blog/2012/03/20/cookbooks-migrated-to-new-github-organization/
https://github.com/opscode/cookbooks/blob/master/README.md