Archive for 7月, 2007

はてな記法プラグイン公開

WordPress用のはてな記法プラグインを公開した。

そもそもは、誰か作っててくれないかなと探してみても誰も作ってないのか見つからない、探す間に現行のText:Hatena Perl モジュール機能縮小版であって、ソースコードのハイライト表示機能もパッチを当てないと本家はてな日記のようには表示されないというのが分かって、「それじゃぁ、ちょっとやってみよか」と始めたもの。

ほどなく動くようにはなったものの、それでは公開してみよか、という段になって、「設定画面が必要だ」「設定方法をちょっとは易しく」「Windows対応にもチャレンジ」「設定テストも入れてまえ」「Text::Hatena 0.16でも試してみよか」だのと、どんどん工数がかさんで公開まで日数がかかってしもた。

ようやく完了。

しかし、Text::Hatenaのインストールが必要だのなんだので、サーバに慣れてない人にはだいぶ敷居の高いものになってしもた。


Gengoとキャッシュで不具合いろいろ

どうもGengoはキャッシュと相性が悪い、というかキャッシュを考慮してない様子。

WordPress自体、キャッシュ機能がデフォルトで無効になっている影響なのか、不具合や考慮もれがあちらこちらにありそう。

wp-hackers MLにもポストしたが、ちょこちょことパッチを作っている次第。

そのひとつに、サイドバーのページリストが、あるロケールでは表示されるけどそれ以外のロケールでは表示されない、という不具合がある。

wp_list_pages() にかわるgengo_list_pages()を作って解決を目指す。

<?php
if (!function_exists('gengo_list_pages')) {
function gengo_list_pages($args = '') {
    if (is_array($args)) {
        $r = &$args;
    } else {
        parse_str($args, $r);
    }
    $r = array_merge(array('language' => the_language(true)), $r);
    return wp_list_pages($r);
}
}
?>

/wp-includes/post.php にも不具合があるので、パッチ。

Index: post.php
===================================================================
--- post.php    (revision 3)
+++ post.php    (working copy)
@@ -1070,9 +1070,14 @@
        extract($r, EXTR_SKIP);

        $key = md5( serialize( $r ) );
-       if ( $cache = wp_cache_get( 'get_pages', 'page' ) )
-               if ( isset( $cache[ $key ] ) )
-                       return apply_filters('get_pages', $cache[ $key ], $r );
+       if ( $cache = wp_cache_get( 'get_pages', 'page' ) ) {
+               if ( isset( $cache[ $key ] ) ) {
+                       $pages = apply_filters('get_pages', $cache[ $key ], $r );
+            if ( $pages && ( $child_of || $hierarchical ) )
+                $pages = & get_page_children($child_of, $pages);
+            return $pages;
+        }
+    }

        $inclusions = '';
        if ( !empty($include) ) {

ActivePerlにText::Hatenaをインストール

「はてな記法」の実装であるText::HatenaActivePerlに組み込む手順。

  • ActivePerlをインストール。
    オプション等はデフォルト設定を推奨。
  • nmake.exeを持っていなければインストール。
    何のことか分からなければ、配布場所からダウンロードし、そのファイルを実行して展開されたNMAKE.EXENMAKE.ERRC:\Windows\SYSTEM32あたりに放り込む。
  • コマンドプロンプト(cmd.exe)を開く
  • cpanを開く。
C:\WINDOWS\SYSTEM32> cpan
  • Text::Hatenaのインストール1回目。何か聞かれたらすべて YES で。
cpan> install Text::Hatena
  • 順調であれば、「mk_classdataが見つからない」という意味のエラーでインストールが中断する。
    Class::Data::Inheritableをインストール。
cpan> install Class::Data::Inheritable
  • Text::Hatenaのインストール2回目。うまくいけばそれで完了。
cpan> install Text::Hatena

xampp環境のPerlにText::Hatenaをインストール

「はてな記法」の実装であるText::Hatenaxamppに組み込む手順。

  • xamppのインストール
  • xamppと共に公開されているXAMPP Windows版 アドオン、perl-5.xをインストール
  • 環境変数 PATH に、インストールしたPerlのディレクトリを追加
    1. 「コントロールパネル」を開く
    2. 「システム」を選択
    3. 「詳細設定」タブを開く
    4. 「環境変数(N)」を選択
    5. ユーザ環境変数またはシステム環境変数にすでにPATHがあれば選択して「編集(E)」を、なければ「新規作成(N)」
    6. 「変数名(N)」にPATH変数値(V)にPerlへのパスを追加。「編集(E)」の場合、既存の値の後ろにセミコロン (;) を挟んで追加。
      (例) C:\WINDOWS;c:\xampp\perl\bin
  • コマンドプロンプト(cmd.exe)を開く
  • cpanを開く。
C:\WINDOWS\SYSTEM32> cpan
  • Text::Hatenaのインストール1回目。何か聞かれたらすべて YES で。
cpan> install Text::Hatena
  • 順調であれば、「mk_classdataが見つからない」という意味のエラーでインストールが中断する。
    Class::Data::Inheritableをインストール。
cpan> install Class::Data::Inheritable
  • Text::Hatenaのインストール2回目。うまくいけばそれで完了。
cpan> install Text::Hatena
1 Comment more...

Installed `Gengo’

I installed Gengo, a WordPress plugin, which enables WordPress to write blog/Pages in multi languages.

But its installation was painful. Very poor document – there’s only FAQ but not manual. What’s `Summary’? What’s `Group’ in Gengo context? Force users to build installation knowledge from a tiny pieces in FAQ. Just nonsense.


Gengo導入

Gengoという多言語プラグインを導入。導入マニュアルみたいなんが見つからないので結構時間がかかった。整備したらんとあかんなぁ。


Copyright © 1996-2010 During The Prime Hacking Hours. All rights reserved.
iDream theme by Templates Next | Powered by WordPress