mac OS X snow leopardにmacfusionを入れてみた

Mac OS X snow leopardにmacfusionを入れてみました。少しはまったのでメモ。


1.MacFUSEをインストール
 MacFUSEのインストールサイトはgoogleCodeのここにあるので、dmgファイルをダウンロードして、インストールします。自分は、システム環境設定からβ版までインストールしちゃいました。その後再起動。


2.macfusionをインストール
 macfusionのインストールサイトはここにあります。dmgファイルをダウンロードして、インストールします。
 ここからが、少しはまりどころ。snow leopardの場合、アプリケーションディレクトリ下にインストールした場合、次のコマンドをターミナルから入力します。
rm /Applications/Macfusion.app/Contents/PlugIns/sshfs.mfplugin/Contents/Resources/sshnodelay.so
 これをしないと、snow leopardでは接続エラーがおこり、マウントできません。



3.使い方
 以上で、macfusionを使えるところまで行きました。ここからは簡単で、macfusionを起動し、+ボタンを押すと、追加することができます。ホスト名、ユーザ名、パスワードを入力し、マウントすると、デフォルトでは、そのユーザ名のホームディレクトリがMacの/Volumes/(ホスト名)下にマウントされます。
 また、サーバ側に.DS_storeファイルを作成しないようにするには次のコマンド。
$ defaults write com.apple.desktopservices DSDontWriteNetworkStores true

mac OS X snow leopardにmysql5を入れる

macにmysql5を入れました。

(1)mysqlダウンロードサイトからMac OS X ver. 10.6 (x86, 64-bit), DMG Archiveをダウンロード(最近64-bitにしたので試しに)
(2)ダウンロードしたインストーラを使ってインストール。ちなみにmacの環境設定にmysqlの起動などをできるような設定を追加するインストーラもあります。
(3).profileにPATHを追加

export PATH=/usr/local/mysql/bin
(4)my.cnfをコピー
sudo cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf

mac OS X snow leopardにmysql5を入れる

macにmysql5を入れました。

(1)mysqlダウンロードサイトからMac OS X ver. 10.6 (x86, 64-bit), DMG Archiveをダウンロード(最近64-bitにしたので試しに)
(2)ダウンロードしたインストーラを使ってインストール。ちなみにmacの環境設定にmysqlの起動などをできるような設定を追加するインストーラもあります。
(3).profileにPATHを設定

export PATH=/usr/local/mysql/bin:$PATH
(4)my.cnfをコピー
sudo cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf

symfonyのフォームの登録時に値を変換したい場合

 formクラス内にprocessValues関数を記述することで、登録時に値変換を行うことができる。
 例えば、ユーザにパスワード入力させて、暗号化した後、暗号化に使ったsaltと暗号化済みパスワードをデータベーステーブルに登録したい場合を考える。


1.データベース定義
 テーブル名はuser,カラムはid, name, salt, sha1_passwordとする。schemaは以下のようになる。
database:
  user:
    id: ~
    name:
      type: varchar(80)
    salt:
      type: varchar(32)
    sha1_password:
      type: varchar(40)
 このとき、symfonyは上のカラム定義に沿ったBaseUserFormクラスを自動生成する。


2.ユーザパスワード入力用ウィジェットの作成
 sha1_passwordは暗号化した後のカラムであり、ユーザに入力した内容のバリデートをすることができない。symfonyのフォームクラスではカラムで定義している以外のものもウィジェットとして登録できるため、ユーザパスワード入力用のウィジェットを作成する。UserFormクラスのconfigureオペレーションを以下のように変更する。

<?php

class UserForm extends BaseUserForm
{
  public function configure()
  {
   
    $this->widgetSchema['password'] = new sfWidgetFormInputPassword();
    $this->validatorSchema['password'] = new sfValidatorString(
      array(
        'min_length' => 6,
        'max_length' => 15,
      ),
      array(
        'min_length' => 'パスワードは6文字以上にしてください',
        'max_length' => 'パスワードは15文字以下にしてください'
      )
    );
   
    $this->useFields(
      array('name', 'password')
    );
  }
}

 これによって入力項目はユーザ名、暗号化していないパスワードとなり、入力させたパスワードをバリデートすることができるようになった。


3.登録時の変換
 もちろん上の状態では、テーブルにないカラムがあるため、そのままではデータベースに登録することはできない。そのため、登録時に値を変換する。
 symfonyの場合、登録前に必ずprocessValuesという関数を通すため、これを利用して値を変換し、登録するときにはname, salt, sha1_passwordとして登録するようにする。UserFormクラスは最終的に以下のようになる。

<?php

class UserForm extends BaseUserForm
{
  public function configure()
  {
   
    $this->widgetSchema['password'] = new sfWidgetFormInputPassword();
    $this->validatorSchema['password'] = new sfValidatorString(
      array(
        'min_length' => 6,
        'max_length' => 15,
      ),
      array(
        'min_length' => 'パスワードは6文字以上にしてください',
        'max_length' => 'パスワードは15文字以下にしてください'
      )
    );
   
    $this->useFields(
      array('name', 'password')
    );
  }
 
  /**
   * フォーム入力値をオブジェクトに渡す前に行う処理
   *
   * @param array $values フォームフィールドに入力され、バリデーションを経た値の配列
   * @return array 処理を行った後の値の配列
   */
  public function processValues($values)
  {
    $password = $values['password'];
    unset($values['password']);
   
    $salt = md5(microtime().mt_rand());
    $sha1_password = sha1($password.$salt);
   
    $values['salt'] = $salt;
    $values['sha1_password'] = $sha1_password;
   
    return $values;
  }
}

これにより、登録時には値が変換されて、暗号化されたパスワードが登録される。

mac OS X snow leopardへのmacportsのインストール

macportsインストールしてみました。mac OS X snow leopardにインストールするのは簡単でした。

ちなみにインストールするためには、
(1)Xcode developer tools version 3.2.1以上
(2)X11 windowing environment
をインストールしている必要が有ります。

1.macportsのダウンロードページからMacPorts-1.8.2-10.6-SnowLeopard.dmgをダウンロード
2.ダウンロードしたファイルを開き、インストールするだけ
3.確認

$ port -v
MacPorts 1.8.2

centos5.4にredmineを入れてみる

Redmine自宅サーバCentOSにインストールした。

1.Rubyのインストール
yumだと、古いrubyが入ってしまうため、ソースコードからインストール

 最初にrdocを入れてしまう。

$yum install rdoc
次にrubyを入れる。http://www.ruby-lang.org/ja/downloads/からダウンロード
$wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p249.tar.gz
$tar zxvf ruby-1.8.7-p249.tar.gz
$cd ruby-1.8.7-p249
$./configure --prefix=/usr
$make && make install
さらにRubyGemshttp://rubyforge.org/frs/?group_id=126&release_id=33411から。
$cd /tmp
$wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz
$tar zxvf rubygems-1.3.5.tgz
railsをインストール。
$gem install rails --include-dependencies

2.sqliteのインストール
sqlite3をインストールする。yumで一発。あとsqlite3-rubyを入れないといけない。
$yum install sqlite sqlite-devel
$gem install sqlite3-ruby

3.redmineのインストール
redmineのインストール。http://redmine.jp/からダウンロード。
$mkdir /home/redmine/
$cd /tmp/
$wget http://rubyforge.org/frs/download.php/69052/redmine-0.9.2.tar.gz
$tar xzvf redmine-0.9.2.tar.gz
$cp -rp redmine-0.9.2/* /home/redmine

4.redmineの設定
 次にRedmineの設定。

 まずは、データベース接続設定。

$cd /home/redmine/config
$cp database.yml.example database.yml
$vim database.yml
ここで、productionの設定を以下に変更。
production:
adapter: sqlite3
dbfile: db/redmine.db
timeout: 5000
 次にセッション暗号化用鍵の生成。
$rake config/initializers/session_store.rb
 データベースの初期化。
$rake db:migrate RAILS_ENV=production
$rake redmine:load_default_data RAILS_ENV=production

 とりあえず起動してみる。
$script/server -e production

サーバのポート3000にブラウザでアクセスすると、ページが見れました。やったー。

明日は、Apacheとの連携をします。やっぱり自宅サーバはいいなー。さくらインターネットと違ってインストールが楽すぎる。