Home Top About Help Login Search Next

Mac OS X Snow Leopardでcrontab -eしたときの実態

2010/04/08 19:44
naoto5959

Mac OS X Snow Leopardにおいてcrontab -eで設定したcronの実態はどこにあるんだろうということで調べた結果をメモしておく。

/usr/lib/cron/tabs/

上記パスの配下にユーザ名で保存されているようです。


hetemlにgitレポジトリ作成

2010/03/22 02:13
naoto5959

リモートレポジトリを作成

sshでhetemlへ接続済みとします。

まずは、リモートレポジトリ用のディレクトリを作成

$ mkdir -p ~/repository/git/sandbox.git

んで、そこへ移動

$ cd ~/repository/git/sandbox.git

初期化する

$ git init --bare --shared=true

ちょっとホームへ戻る

$ cd

最初のコミット用にheteml内にローカルレポジトリを作成する。

$ 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

おわり。でけたー。


Mac OS Xでhetemlにsshするときにやること

2010/03/22 01:35
naoto5959

sshの公開鍵と秘密鍵のペア作成

$ 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.

やったね。

sshの設定する

$ 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

hetemlへ公開鍵を送信

$ scp ~/.ssh/id_rsa_for_heteml.pub ssl99.heteml.jp:~

hetemlへ接続する

$ ssh ssl99.heteml.jp

こっからはhetemlん中

$ 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;

もういっぺんhetemlへ接続する

次は、こんなんが出る。

image:1:1269190463-heteml_ssh_pass_phrase.png

んで、[パスワードをキーチェーンに保存]すれば次からは楽ちんログイン。

(セキュリティ的にはアレだけど)

おわりー。やった。次はgit repogitory作る。

手順は、linuxにgitをインストールで多分いけるだろうと思ってるけど、どうだろ。

追記

できたー。手順はこんなん。hetemlにgitレポジトリ作成


CakePHPで「データベーステーブルがありません」にはまる

2010/02/07 12:44
naoto5959

このところ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無視しちゃうよ
}

とする必要があります。

こういうのって、ついウッカリ忘れそうなのでメモしておきます。


環境によってdatabaseのconfigを切り替える

2010/01/13 19:04
naoto5959

開発環境と本番環境でデータベースの設定を変えたいことが多々あります。

  • 開発: dev.exapmle.com
  • 本番: release.example.com

とドメインを分けていると仮定します。私は、

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

だけを確認すれば良い実装の方が好きですけど。


Next