[Apache] .git, .gitignore等をWebからアクセスできないようにする

gitで管理しているwebサイトでうっかり.gitや.gitignoreなどの Git 関連ファイルが漏れてしまわないようにするには、httpd.conf で以下のように設定します。

# .git から始まるファイルへのアクセスを禁止
<Files ~ "^\.git">
Order allow,deny
Deny from all
Satisfy All
</Files>
# .git/ フォルダ以下のファイル・ディレクトリへのアクセスを禁止
<Directorymatch "^/.*/\.git/">
Order deny,allow
Deny from all
</Directorymatch>

.git は外してアップしているよ、という方も、保険として入れておくと万一の時に .git や .gitignore などが
公開ディレクトリに混ざってしまってもアクセスできないようになるので安全ですね。

[PHP][Yii] モデルでタイムスタンプを自動更新する

Yii 1.1 のモデル(CModel)で自動更新する方法のメモ。

参考: Yii 1.1: How to automate timestamps in ActiveRecord models

CActiveRecord::rules()で設定する

/**
* @return array validation rules for model attributes.
*/
public function rules()
{
return array(
// 略
array('modified','default',
'value'=>new CDbExpression('NOW()'),  // PHPのタイムスタンプを使うならdate('Y-m-d H:i:s')など
'setOnEmpty'=>false,'on'=>'update'),
array('created,modified','default',
'value'=>new CDbExpression('NOW()'),
'setOnEmpty'=>false,'on'=>'insert')
);
}

CActiveRecord::beforeSave()で更新する

public function beforeSave() {
if ($this-&gt;isNewRecord)
$this->created = new CDbExpression('NOW()');
<pre><code>$this-&gt;modified = new CDbExpression('NOW()');
return parent::beforeSave();
</code></pre>
}

CTimestampBehaviorを使う

// CActiveRecord::behaviors()
public function behaviors(){
return array(
'CTimestampBehavior' => array(
'class' => 'zii.behaviors.CTimestampBehavior',
'createAttribute' => 'created', // 作成日時のカラム名(デフォルト: create_time)
'updateAttribute' => 'modified', // 更新日時のカラム名(デフォルト: update_time)
'setUpdateOnCreate' => true,    // 作成時にupdateカラムも更新するか(デフォルト: false)
)
);
}

どれを使うかはお好みですね。

Google Calendar API のタイムゾーン設定方法

Google カレンダー API で時間が9時間ずれて表示されたり、取得範囲が指定したよりも9時間ずれたりしていて散々はまった。
続きを読む Google Calendar API のタイムゾーン設定方法

vim で Zen coding を使う方法

Zencoding vim logo
最近 zen coding にはまっています。
vim でも使いたい、ということで導入方法をまとめておきます。

参考:知らない人は損してる?コーディングが3倍速くなるZen-Codingを導入してみた 続きを読む vim で Zen coding を使う方法