サーバインストール型のブログツールと言えばWordPress、Movable Type等がメジャーですが、よりCoolで新しいHabariというブログツールがあります。
既存のブログツールから乗り換えてでもHabariを使うべき10の理由を紹介します。
- 洗練された管理インターフェース Monolithと命名されたインターフェースはAjax技術を利用しており軽快に動作します。[screencast]
- メディアサイロ FlickrやYoutubeなどWebサービス上にアップロードしたファイルにHabariから簡単にアクセスすることが出来ます。[screencast]
- 対応データベースが豊富 MySQLの他にPostgreSQL、 SQLiteにも対応しており、今までMovable Typeぐらいしか選択肢がなかったような環境でもインストール可能です。
- セキュアである データベースアクセスにPDO(PHP Data Object)を使用しており、PDO::prepare経由でSQLを実行しているのでSQLインジェクションが行われにくくなっています。
- 豊富なプラグイン 2008/09/01時点でHabariのプラグインリポジトリには101個ものプラグインが登録されています。
- マルチサイト対応 一度インストールするだけで複数のブログを運営可能です。そのため個別にアップデート、プラグインのインストールを行う必要はありません。
- 簡単に移行出来る WordPress、S9y用のインポートプラグインが同梱されています。インポートプラグインを使えば今まで書きためた記事、タグ、ユーザ、コメント、トラックバックをそのままHabariに移せます。(Movable Type用のインポートプラグインも開発中)
- 優れた拡張性 Habariはforkではなく1から開発されているため過去の遺産に縛られず、MVC構造、オブジェクト指向等、先進的な設計になっており拡張性にも優れています。
- 多言語対応 Ver 0.5から5つの言語が本体に同梱されています。さらにコミュニティによって24カ国語への翻訳も進められています。
- Great Community Habariは強力なコミュニティによって開発、支えられています。万が一分からない事に遭遇してもhabari-usersや、habari-dev、IRCできっとあなたの助けになれる人がいるはずです。
Habari Project
Rate It! (Average 4.50, 2 votes)

予定より1ヶ月ほど遅れましたが本日14時頃にHabari 0.5がリリースされました :D
今年2月に公開された0.4から5ヶ月ぶりのメジャーアップデートです。
0.5での主な変更点は以下のとおりです。
- 新しい管理インタフェース(Monolith)
- デフォルトの英語以外にデンマーク語、ドイツ語、日本語、中国語繁体字の4つの言語ファイルを同梱
- 3つのテーマを同梱
- データベースバックエンドとしてMySQL、SQLiteの他にPostgreSQLをサポート
- セッションハンドリングの向上
- 限定的なUTF-8のサポート
- WordPress、Serendipityからのデータインポートプラグインを同梱
- SQLiteバックエンド使用時のセキュリティ向上
- プラグイン向けに新しく書き直されたFormUIクラス
- その他沢山の修正
リリースアナウンス
ダウンロード
Habari 0.5での日本語の対応状況についてですが、デフォルトで日本語の言語ファイルが含まれていますので管理インタフェースのオプションからLocaleをjaに設定するだけで日本語に切り替える事が出来ます。
しかし、まだ英語テキストがハードコーディングされている部分があるため、未翻訳のテキストが残っています。
また、UTF-8以外の多言語トラックバック問題に関してもコードフリーズに間に合わなかったため、これらの問題は0.5以降で修正されていくことになります。
Rate It! (Average 0.00, 0 votes)

Habariはデフォルトで文字コードがUTF-8に設定されているので問題なくUTF-8なBlogからのPingbackを受信することが出来ます。
しかし、古いバージョンのWordPress ME等は文字コードにEUC-JPを使用しているため、これらのブログからのPingback文字化けしてしまいます。
そこでPingback受信時に送信元ブログの文字コードを取得してUTF-8以外であれば文字コードを変換するパッチを書いてみました。
パッチを適用するには下記のパッチをダウンロード後、Habariのルートディレクトリでpatch -p0 < pingback.plugin.php.r1747.mbconv.diff してください。
HabariProjectにもこのパッチを送ってあるのですが、現在はVer 0.5にむけてリポジトリがFeature Freezeにはいっているためすぐにcommitしてもらうのは難しそうです。
pingback.plugin.php.r1747.mbconv.diff
--- system/plugins/pingback/pingback.plugin.php.orig 2008-05-23 05:49:42.000000000 +0900
+++ system/plugins/pingback/pingback.plugin.php 2008-05-23 06:15:36.000000000 +0900
@@ -150,6 +150,16 @@
}
$source_contents= $rr->get_response_body();
+ // for Multi-byte
+ if ( function_exists ( 'mb_convert_encoding' ) ) {
+ // TODO: $habari_encoding= Options::get('encoding');
+ $habari_encoding= 'UTF-8';
+
+ if ( preg_match( "/]+charset=([A-Za-z0-9\-\_]+)/i", $source_contents, $matches ) !== false && strtolower( $habari_encoding ) != strtolower( $matches[1] ) ) {
+ $source_contents= mb_convert_encoding( $source_contents, $habari_encoding, $matches[1] );
+ }
+ }
+
// Find the page's title
preg_match( '/(.*)<\/title>/is', $source_contents, $matches );
$source_title= $matches[1];
Rate It! (Average 0.00, 0 votes)

Habariはルートディレクトリのファイル数が比較的少ない方ではあるのですがやっぱりルートディレクトリはなるべくファイルを減らしてすっきり整理したいものです。そこで以下のようにインストールすることでHabari本体をサブディレクトリに置いたままルートURLでアクセス出来るようになります。
- 初めにHabariを通常通りサブディレクトリ(例: /habari/)にインストールします。
- /index.php に以下の内容でファイルを作成します。
<?php
include('habari/index.php');
?>
- /.htaccess に以下の内容でファイルを作成します。
RewriteEngine on
RewriteRule ^(system|3rdparty|scripts)/(.*)$ /habari/$1/$2 [L]
RewriteRule ^user/(themes|plugins|files)/(.*)$ /habari/user/$1/$2 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
Rate It! (Average 0.00, 0 votes)

I do not want for many files to be put on root directory. therefore, I installed Habari by the following methods.
- first, install Habari in the subdirectory (e.g. /habari/).
- create /index.php file in your text editor and save the following line:
<?php
include('habari/index.php');
?>
- create /.htaccess file in your text editor and save the following line:
RewriteEngine on
RewriteRule ^(system|3rdparty|scripts)/(.*)$ /habari/$1/$2 [L]
RewriteRule ^user/(themes|plugins|files)/(.*)$ /habari/user/$1/$2 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
Rate It! (Average 0.00, 0 votes)
