2004年01月11日 (日)

公開先が FTP サーバのときの iBlog と iblogPatcher 利用方法

iblogPatcher の公開後のファイル処理は、公開先が書き込み可能でマウントされていることが前提になっている(.Mac の iDisk 専用というわけではない)。以前「.Mac 版 iBlog で任意の WebDAV, Samba, AFP サーバに公開する」でも FTP だと Mac OS X では書き込み可能でマウントできないので .Mac ライセンスの iBlog では FTP を介して公開するための正規の方法は示していなかった。そこで、2 レベルに分けて FTP サーバへ Blog を公開する方法について述べる。rsync が使える公開先についても言及しておく。

もちろんここでは裏技は紹介しない。恐らく iBlog の隙を突いた公認できないライセンス違反と思われるからだ。それに、たとえ FTP 機能がある一般ライセンスの iBlog を利用していたとしても FTP では書き込み可能でマウントできないので iblogPatcher の publish after 機能が使えない。publish after 機能はプレビュー段階では作成途中である rss.xml の操作をする。

【レベル 1】- 無料で頑張る
このレベルは iBlog を除いた全てを無料で通すレベル。ここに書いたアイデアと若干異なるが KHOO さん似たようなアイデアを利用したそうだ。一般ライセンスの iBlog を利用している人はこちらの方が使いやすいだろう。

---- 仕込み ----
  1. iBlog でローカルの公開先を作成する。
    このとき [ウェブサイト URL] を FTP でアップロード後の URL にするところが味噌。
  2. Blog 定義ファイル(myblog.txt) の Blog ディレクトリの設定をローカルディレクトリにする
    Blog ディレクトリは
    %Blog = (
        'preview' => プレビューディレクトリ,
        'publish' => 公開先,
    );
    というように定義されているはずだ。この公開先を 1 で設定したローカルのディレクトリにする。$ENV{'HOME'} のような変数を使うときは " " で囲み、使わないときは ' ' で囲む必要がある。例として私の業務日誌の Blog の当該部分をそのまま載せておく。
    %Blog = (
        'preview' => "$ENV{'HOME'}/Sites/iblog/B835849451",
        'publish' => "$ENV{'HOME'}/Sites/at-v8/iblog",
    );
  3. 差分リストアップのために Blog 定義ファイルを細工する。

    Blog 定義ファイルの %ACTION の中の publish after に次のような記述を追加しておく。この記述は publish after の処理の中の一番最後にしておく必要がある。

    'onFinish' => sub {
        ......
        system('mv', '-f', "$ENV{'HOME'}/.myblog.time", "$ENV{'HOME'}/.myblog.time.old");
        system('touch', "$ENV{'HOME'}/.myblog.time");

    },
    この記述によりホームディレクトリに隠しファイルとして .myblog.time というファイルが publish after によって作成されるようになり、前回の .myblog.time は .myblog.time.old と名前が変えられるようになる。

    もし rsync が使える公開先ならばここは次のようにする。

    'onFinish' => sub {
        ......
        system(rsync で同期させるためのコマンドライン);
    },


以上で仕込みは終わり。この設定では FTP が全く出てこない。したがって iBlog で公開しても iblogPatcher の publish after をしても手元の Mac OS X の中だけで完結する。

---- 公開手順 ----
rsync の場合は iblogPatcher の publish after で自動で rsync を使って転送されるのでこのセクションは不要で、FTP の場合のみである。また、もしあなたが差分アップデートができる FTP ソフトを持っているのならばそれを使ってローカルのディレクトリから FTP サーバにアップロードすればよい。残念ながら無料のそういうツールを Mac OS X 用に見つけていない。無料で通すためにはここでちょっと手間をかける必要がある。

iBlog でローカルディレクトリに公開後 iblogPatcher の publish after を行っておく。初回の場合は全てアップロードなので何も考えずに全てをアップロードすればよい。しかし二回目以降は更新/作成されたファイルだけをアップロードしたい。そこでコマンドライン上で次のようにする。
find ローカルの公開先ディレクトリ -newer ~/.myblog.time.old -print

私の業務日誌の Blog を例にとると次のようになる。
find ~/Sites/at-v8/iblog -newer ~/.myblog.time.old -print

こうタイプして改行すると、ローカルの公開先ディレクトリにあるファイルやディレクトリの中で、ホームディレクトリの隠しファイル .myblog.time.old よりも新しいもの(更新されているものや作成されたもの)が全てリストアップされる。このリストを見ながら FTP でアップロードすればよい。

ね、面倒臭いでしょ。私の業務日誌は rsync できるサーバに公開しているので面倒ではないのだけれどね。プロバイダーも rsync サーバを立てるのが普通ならばいいのだけれどそうでもないのが残念。

【レベル2】- 1,800円 + 消費税('04.1.11 現在) で楽をする
このレベルでは Active mounter という有料アプリケーションを利用する。このアプリケーションは KHOO さんのエントリで見つけた。

---- 仕込み ----
レベル 1 の仕込みととても似たアイデアを用いる。
  1. iBlog でローカルの公開先を作成する。
    このローカルの公開先は本当のローカルではなく、Active mounter でマウントした FTP サーバ上のディレクトリを指定するのと、[ウェブサイト URL] を FTP でアップロード後の URL にするところが味噌。
    例えば [プロトコル] に [FTP] を選択して、[ホスト名] を ftp.yourserver.com として [ディレクトリ] を空にして [新規マウント] を作成したとすると、iBlog での公開先は
    /Volumes/ftp-ftp.yourserver.com
    になる。もちろん FTP で接続した直後のディレクトリではなくサブディレクトリに Blog を公開したいのならその後ろに、サブディレクトリを続ける必要がある。iblog ディレクトリの下に公開したいのなら、
    /Volumes/ftp-ftp.yourserver.com/iblog
    とする。
  2. Blog 定義ファイル(myblog.txt) の Blog ディレクトリの設定をローカルディレクトリにする
    Blog ディレクトリは
    %Blog = (
        'preview' => プレビューディレクトリ,
        'publish' => 公開先,
    );
    というように定義されているはずだ。この公開先を 1 で設定したローカルのディレクトリにする。$ENV{'HOME'} のような変数を使うときは " " で囲み、使わないときは ' ' で囲む必要がある。1 での例を用いると 'publish' の指定は
    /Volumes/ftp-ftp.yourserver.com
    あるいは
    /Volumes/ftp-ftp.yourserver.com/iblog
    となる。

---- 公開手順 ----
そして、Active mounter で FTP サーバをマウントしておいてから iBlog で公開したり iblogPatcher で publish after(before も) する。Active mounter で FTP サーバをマウントしておく以外は全く通常どおりに使用できる。

Posted: 23:53    | Comment | Trackback


以下、類似エントリです。