Mac OS X Snow Leopardにおいてcrontab -eで設定したcronの実態はどこにあるんだろうということで調べた結果をメモしておく。
/usr/lib/cron/tabs/
上記パスの配下にユーザ名で保存されているようです。
Mac OS X Snow Leopardにおいてcrontab -eで設定したcronの実態はどこにあるんだろうということで調べた結果をメモしておく。
/usr/lib/cron/tabs/
上記パスの配下にユーザ名で保存されているようです。
sshでhetemlへ接続済みとします。
まずは、リモートレポジトリ用のディレクトリを作成
$ mkdir -p ~/repository/git/sandbox.git
んで、そこへ移動
$ cd ~/repository/git/sandbox.git
初期化する
$ git init --bare --shared=true
ちょっとホームへ戻る
$ cd
$ mkdir sandbox
移動しますよ。
$ cd sandbox
レポジトリの作成
$ git init
適当にファイルを作る
$ touch README
んでadd
$ git add README
commitする
$ git commit -m 'first commit'
pushする
$ git push origin master
用済なので今のディレクトリ消す
$ cd $ rm -fr sandbox
hetemlから抜ける
$ exit
ここからはmacだよー。
ディレクトリ作って
$ mkdir -p repository/ssl99.heteml.jp/git
移動して、
$ cd repository/ssl99.heteml.jp/git
cloneしてみる
$ git clone ssl75.heteml.jp:repository/git/sandbox.git
おわり。でけたー。
$ ssh-keygen -b 2048
Generating public/private rsa key pair. Enter file in which to save the key (/Users/koshikawa/.ssh/id_rsa):
とか聞かれるので、
/Users/koshikawa/.ssh/id_rsa_for_heteml
とか打つ。
そうするとパスフェーズ聞かれるので
Enter passphrase (empty for no passphrase):
お好きなパスワードを決めて、設定。
大事なことなので2度聞かれる。
Enter same passphrase again:
んで、こんな表示
Your identification has been saved in /Users/koshikawa/.ssh/id_rsa_for_heteml. Your public key has been saved in /Users/koshikawa/.ssh/id_rsa_for_heteml.pub.
やったね。
$ vi .ssh/config
こんな感じで記述して保存。以降、ssl99.hteml.jpの99は自分に割り当てられたサーバの番号。user_nameはhetemlのユーザ名
Host ssl99.heteml.jp Port 2222 User user_name IdentityFile ~/.ssh/id_rsa_for_heteml
$ scp ~/.ssh/id_rsa_for_heteml.pub ssl99.heteml.jp:~
$ ssh ssl99.heteml.jp
$ mkdir -m 700 .ssh $ cat id_rsa_for_heteml.pub >> .ssh/authorized_keys $ rm -f id_rsa_for_heteml.pub $ chmod 600 .ssh/authorized_keys $ exit;
次は、こんなんが出る。

んで、[パスワードをキーチェーンに保存]すれば次からは楽ちんログイン。
(セキュリティ的にはアレだけど)
おわりー。やった。次はgit repogitory作る。
手順は、linuxにgitをインストールで多分いけるだろうと思ってるけど、どうだろ。
できたー。手順はこんなん。hetemlにgitレポジトリ作成
このところCakePHPに翻弄され続けているのではまったことをメモっておくことにします。
今日は、「データベーステーブルがありません」について
例えば、password再設定用のコントローラーを作っていて、コントローラーからMemberモデルを使うよ。という場合。
class PasswordController extends AppController {
var $name = 'Password';
var $uses = array('Member');
}
こんな風にして、CakePHPの命名規則に沿わないコントローラーとモデルの組み合わせが指定できます。
なのに、/passwordにアクセスすると、「データベーステーブルがありません」が表示されて、「えっ」という状況。
なんでだろうと思っていたら、Memberモデルはどこでも使う設計にしてたのでAppControllerに
class AppController extends Controller {
var $uses = array('Member');
}
なんて、書いてたんですね。
こうしておくと$usesの値をControllerでごにょごにょしてマージしたりする(Controllerの__mergeVarsメソッド)ときに、PasswordControllerとAppControllerの$usesが同じ、かつ空じゃない場合は、CakePHPの命名規則でモデルをロードしてしまいます。(Cake1.2.5のcake/libs/controller/Controller.php L:379)
すると、PasswordControllerには
class PasswordController extends AppController {
var $name = 'Password';
var $uses = array('Password', 'Member');
}
と書いたのと同じになってしまうのです。
よって、AppControllerの$uses以外使わないようにするには
class PasswordController extends AppController {
var $name = 'Password';
var $uses = array(); // falseだとAppControllerの$uses無視しちゃうよ
}
とする必要があります。
こういうのって、ついウッカリ忘れそうなのでメモしておきます。
開発環境と本番環境でデータベースの設定を変えたいことが多々あります。
とドメインを分けていると仮定します。私は、
app/config/database.php
に以下のような記述をしています。
<?php
class DATABASE_CONFIG {
var $default;
var $test;
function __construct() {
switch ($_SERVER['SERVER_NAME']) {
case 'dev.example.com':
$this->default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => '127.0.0.1',
'port' => 3306,
'login' => 'hoge',
'password' => '',
'database' => 'hoge',
'prefix' => 'hoge_',
'encoding' => 'utf8'
);
break;
case 'release.example.com':
$this->default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => '127.0.0.1',
'port' => 3306,
'login' => 'root',
'password' => '',
'database' => 'hoge',
'prefix' => 'hoge_',
'encoding' => 'utf8'
);
$this->test = array(
'driver' => 'mysql',
'persistent' => false,
'host' => '127.0.0.1',
'port' => 3306,
'login' => 'root',
'password' => '',
'database' => 'hoge',
'prefix' => 'hoge_test_',
'encoding' => 'utf8'
);
break;
}
}
}
他には、複数の設定を定義しておいてAppModelで振り分けるとかも良いかも知れませんね。個人的には
app/config/database.php
だけを確認すれば良い実装の方が好きですけど。