« 2006年10月 | メイン | 2006年12月 »

2006年11月 1日

「シックス・アパート公認トレーニング」のお知らせ[ 全般 ]

シックス・アパート認定トレーニングが行われます。

・Movable Type/Movable Type Enterprise 基礎コース
・Movable Type/Movable Type Enterprise テンプレート作成コース

の2つのコースに分かれていて、主に、基礎コースはMTの管理画面の使い方について、テンプレート作成コースはカスタマイズについて説明していきます。
僕の書いた「改訂新版 Movable Type 標準ハンドブック」をテキストにして進めていきます。
で、講師は僕、CHEEBOWこと関根元和です。
受講料を考えると、個人ユーザの方にはちょっとおすすめできませんが、企業でビジネスブログをはじめようと思っている方や、MTでサイト構築を考えているSIerの方などには、良いのではないかと思います。
ぜひ、参加してみてください。

投稿者 CHEEBOW : 15:04


MovableTypeするならおすすめです!

「改訂新版 Movable Type 標準ハンドブック」明日発売です[ 全般 ]

改訂新版 Movable Type 標準ハンドブック
平田 大治 関根 元和
インプレスジャパン

いよいよ明日発売になります。
今注文すると、明日か明後日には発送になるかも。3連休で読んでもらうのも良いかもしれません。
前のバージョンを持っている方も「改訂新版」では大幅に加筆修正しているので、持っておいて損は無いと思います。
一生懸命書きました。
ぜひ、読んでみてください。

投稿者 CHEEBOW : 15:41

2006年11月 2日

エントリ投稿時の500エラーを強引に回避する方法[ トラブルシューティング ]

最近ときどきエントリを投稿しようとしても500エラーでまったく投稿できないというときがありました。
エントリの投稿画面で「保存」ボタンを押しても、なんの反応も無くしばらくすると500エラー。
何とかならんもんだろうか、と思って、ちょっと試してみたのですが結構効果があったので、書いてみたいと思います。
方法は簡単で、mt-tb.cgiとmt-comments.cgiを投稿するときだけリネームするなりして無効にします。
エントリの投稿をしようとする前に、この2つのファイルをリネームします。とりあえず、ファイル名の最初に適当に1文字入力しておくとかで良いと思います。
で、ゆっくりエントリを書いて、投稿が終わったら元の名前に戻す、と。
手間はかかりますが、結構効果的な気がしています。
おためしあれ。

あ、で、話は変わりますが、「改訂新版 Movable Type 標準ハンドブック」本日発売です!
よろしくお願いしますー。

平田 大治 関根 元和
インプレスジャパン

でもやっぱめんどくさいので、プラグインにしてみました。
リネームしっぱなしになっちゃうことも、もしかするとあるかもしれないですけども……。

[追記]
たぶん、XML-RPC経由やAtomAPI経由、モブログなどで投稿するとリネームしっぱなしになる可能性がありそう。これ、なんとかならんもんだろうか……。

package MT::Plugin::Silence;

use strict;
use MT::Plugin;
@MT::Plugin::Silence::ISA = qw(MT::Plugin);

use vars qw($PLUGIN_NAME $VERSION);
$PLUGIN_NAME = 'Silence';
$VERSION = '0.50';

use MT;
my $plugin = new MT::Plugin::Silence({
    name => $PLUGIN_NAME,
    version => $VERSION,
    description => "Silence",
    author_name => 'CHEEBOW',
    author_link => 'http://cheebow.info/chemt/',
});

MT->add_plugin($plugin);
MT->add_callback('CMSPreSave.entry', 9, $plugin, \&CMSPreSave_entry);
MT->add_callback('MT::App::CMS::AppTemplateOutput.edit_entry', 9, $plugin, \&hdlr_edit_entry_source);

sub instance { $plugin; }

sub _rename_scripts {
    my ($app, $dir) = @_;

    my $tb_script = File::Spec->catfile($app->{mt_dir}, $app->config('TrackbackScript'));
    my $comment_script = File::Spec->catfile($app->{mt_dir}, $app->config('CommentScript'));
    
    my $renamed_tb_script = $tb_script . ".$PLUGIN_NAME";
    my $renamed_comment_script = $comment_script . ".$PLUGIN_NAME";
    
    my ($from_tb, $to_tb);
    my ($from_comment, $to_comment);
    if ($dir == 0) {
        $from_tb = $tb_script;
        $to_tb = $renamed_tb_script;
        $from_comment = $comment_script;
        $to_comment = $renamed_comment_script;
    } else {
        $from_tb = $renamed_tb_script;
        $to_tb = $tb_script;
        $from_comment = $renamed_comment_script;
        $to_comment = $comment_script;
    }

    rename($from_tb, $to_tb) if -e $from_tb;
    rename($from_comment, $to_comment) if -e $from_comment;
}

sub CMSPreSave_entry {
    my ($cb, $app, $entry) = @_;
    
    _rename_scripts($app, 0);
}

sub hdlr_edit_entry_source {
    my ($eh, $app, $tmpl_str_ref, $param, $tmpl) = @_;

    return unless $param->{saved_changes};

    _rename_scripts($app, 1);
}

1;

投稿者 CHEEBOW : 12:26

2006年11月 8日

エントリ投稿時の500エラーを強引に回避する方法、おかわり[ トラブルシューティング, プラグイン ]

前回、「エントリ投稿時の500エラーを強引に回避する方法」のエントリで書いた、投稿時にコメントとトラックバックを停止するというワザ。
これを、自動化できないもんかなーと、プラグインを作ってみたりしたけど、解除するタイミングが難しくて停止したままになっちゃう可能性が高い。
なんとかできないかなーと思って、こんな風にしてみました。

package MT::Plugin::Silence;

use strict;
use MT::Plugin;
@MT::Plugin::Silence::ISA = qw(MT::Plugin);

use vars qw($PLUGIN_NAME $VERSION);
$PLUGIN_NAME = 'Silence';
$VERSION = '0.50';

use MT;
my $plugin = new MT::Plugin::Silence({
    name => $PLUGIN_NAME,
    version => $VERSION,
    description => "Silence",
    author_name => 'CHEEBOW',
    author_link => 'http://cheebow.info/chemt/',
});

MT->add_plugin($plugin);
MT->add_callback('CMSPreSave.entry', 9, $plugin, \&CMSPreSave_entry);
MT->add_callback('MT::App::CMS::AppTemplateOutput.edit_entry', 9, $plugin, \&hdlr_edit_entry_source);

MT->add_task(
    {
        key => 'rename_scripts',
        name => 'Rename scripts',
        frequency => 5 * 60, # every 5 min
        code => sub {$plugin->rename_scripts;},
    }
);

sub instance { $plugin; }

sub _rename_scripts {
    my ($app, $dir) = @_;

    my $tb_script = File::Spec->catfile($app->{mt_dir}, $app->config('TrackbackScript'));
    my $comment_script = File::Spec->catfile($app->{mt_dir}, $app->config('CommentScript'));
    
    my $renamed_tb_script = $tb_script . ".$PLUGIN_NAME";
    my $renamed_comment_script = $comment_script . ".$PLUGIN_NAME";
    
    my ($from_tb, $to_tb);
    my ($from_comment, $to_comment);
    if ($dir == 0) {
        $from_tb = $tb_script;
        $to_tb = $renamed_tb_script;
        $from_comment = $comment_script;
        $to_comment = $renamed_comment_script;
    } else {
        $from_tb = $renamed_tb_script;
        $to_tb = $tb_script;
        $from_comment = $renamed_comment_script;
        $to_comment = $comment_script;
    }

    if ((-e $from_tb) && !(-e $to_tb)) {
        rename($from_tb, $to_tb);
    }
    
    if ((-e $from_comment) && !(-e $to_comment)) {
        rename($from_comment, $to_comment);
    }
}

sub CMSPreSave_entry {
    my ($cb, $app, $entry) = @_;
    
    _rename_scripts($app, 0);

    1;
}

sub hdlr_edit_entry_source {
    my ($eh, $app, $tmpl_str_ref, $param, $tmpl) = @_;

    return unless $param->{saved_changes};

    _rename_scripts($app, 1);

    1;
}

sub rename_scripts {
    my $plugin = shift;
    my $app = MT->instance;

    _rename_scripts($app, 1);

    1;
}

1;

タスクの機能を使って、リネームしたスクリプトを元に戻します。
とりあえず、一時的にリネームしっぱなしになっちゃったとして、後で元には戻るか、と。
ただ、リネームしっぱなしになる時間が結構かなくなる可能性もあるので、コメント、トラックバックを重要視する方には厳しいかも。
リビルドの最初と最後にフックできるといいんだけどなぁ。

投稿者 CHEEBOW : 13:56

「MOVABLETYPE PLUGINS DIRECTORY」が出ます[ プラグイン ]

4-8399-2171-7.jpg

MOVABLETYPE PLUGINS DIRECTORYが今月下旬に出ます。

本書はMovableTypeを使う全てのユーザー(プログラマ、Webデザイナー、Webマスター、個人ユーザー)を対象に、デフォルトで搭載されているプラグインをはじめ、利用価値の高いプラグインから小技系のプラグインまで81個を検索性を考慮しABC順でかつタグ索引を付けて紹介・解説しています。

81本のプラグインの紹介と、インストール方法、使い方が書かれています。
プラグイン探しにも、ブログ構築のネタ帳としても使ってもらえるのではないかと思っています。
著者は、僕と、MT日本語パッチやMovable Type 3.2 導入手順でおなじみのみらのさんと、The blog of H.Fujimotoの藤本壱さんとの共著です。なかなかすごいメンバーなのではないかなと思っています。
もうすぐ発売です。ぜひ机の上に一冊!

投稿者 CHEEBOW : 21:48

2006年11月15日

MovableType用Counter Plugin Ver.0.50 公開しました[ プラグイン ]

エムロジック放課後プロジェクトで新しいプラグインを公開しました。

最近のエントリのリストや、アーカイブのリストなどを表示するときに、今表示しているのが何番目の項目なのかを知りたいことがあると思います。
例えば、各項目の間にborder-topで区切り線を入れたい場合、最初の項目にはborder-topを適用させず、2番目の項目から適用させたいとか、奇数行と偶数行で異なるスタイルを与えて背景色を交互に変更したいといったことがあります。
これを実現する「Counterプラグイン」を作ってみました。

あると便利! という感じのプラグインだと思います。
ぜひ、お試しください。

MovableType用Counter Plugin Ver.0.50 (エムロジック放課後プロジェクト)

投稿者 CHEEBOW : 16:44

2006年11月28日

「MOVABLETYPE PLUGINS DIRECTORY」でました![ 全般 ]

ムーバブル・タイププラグインディレクトリ―PROFESSIONAL NETWORK
関根 元和 藤本 壱 みらの
毎日コミュニケーションズ
売り上げランキング: 3572


プラグイン81本のインストールの仕方から使い方までを解説した「MTプラグイン本」が、発売になりました!
ぱらぱらと眺めているだけでも新しい発見があって面白いんじゃないかと思います。
今、ハマっているあの問題から抜け出せるかも知れません!
ぜひ、手にとって見てくださいませ。

投稿者 CHEEBOW : 17:18

2006年11月30日

MovableType用RenameLabel Plugin公開しました[ プラグイン ]

エムロジック放課後プロジェクトで新しいプラグインを公開しました。

標準のエントリー編集画面で、例えば、「キーワード」フィールドにはファイルのURLを入れるとか、追記部分には「レビュー」を書くとか、本来のフィールドの名称とは異なった運用の仕方をすることがあります。
しかし、キーワードにURLを入力するというのは、なんとなく不自然ですし、運用時に説明しなくてはいけないというのも面倒です。
そこで、エントリー編集画面のフィールド名を変更するプラグインを作ってみました。

というわけで、MTをCMS的に使ったりする時に便利なプラグインだと思います。
ぜひ、使ってみてください!

投稿者 CHEEBOW : 13:25