2024年4月29日(月) 07:03 JST

Geeklog

Geeklog-1.4.1の後継者

  • 2007年9月 9日(日) 21:45 JST
  • 投稿者:
  • 表示回数 5,860
Geeklog

以下の話は確定ではない&うろ覚えで勘違いしている可能性があるので,その点をお含みいただきたい。本家のメーリングリストによると,Google Summer of Codeの成果を取り込んだGeeklogの次期バージョンは1.4.2ではなく,1.5.0になるらしい。主な変更点は,

  • インストーラの改善。今までテキストエディタでconfig.phpとlib-common.phpを編集してからアップロードしていたが,これがオンラインでできるようになる。これに伴い,nmoxさんが開発しているuserconfigプラグインのようなGUIエディタが搭載され,オンラインで設定を変更できるようになる(らしい)。
  • OpenID認証をサポート。OpenIDを持っていれば,Geeklogにもシングルサインオンできるようになる。
  • Geeklogの機能の一部(記事・静的ページ)をWebサービス経由で公開する機能。ATOM publishing APIを使用する模様。
  • プラグイン関係のAPIが改良される模様。
  • linksプラグインが改良され,サブカテゴリを指定できるようになった。

など。次期バージョンをいち早く試してみたい人は,こちらからどうぞ。Anonymous CVSは調子が悪いが,Nightly CVS tarballは常にダウンロードできる。どんどんテストして,フィードバックを本家のメーリングリストに投げてくれ,とのこと。

ついでに書くと,Geeklog-2.xも最近急速に開発が進んできているようだ。CVSリポジトリにコミットされる量が増えてきている。一度コードを読もうとしたことがあるが,Model = Propel + Creole, View = Flexy, Controler = Geeklog2コア,という今までとは全く違うMVC構成で,PHP5のパワーを生かしたデザインパターンを豊富に取り入れた設計なので,どちらの知識も乏しい自分には難しかった。それはさておき,このペースで行くと,来年はGeeklog-2.xのアルファ版が出ているかも。

(9月12日追記)言うまでもないが,CVSからダウンロードしたバージョンを使用する際は自己責任でどうぞ。まだ実装されていない機能やバグが結構あるし,CVS版やリリース候補(RC)版から正規版へのアップグレードはサポートされていないので,そのつもりで。

タグ:geeklog openid cvs geeklog2

テーマの移植チュートリアル

  • 2007年8月27日(月) 09:40 JST
  • 投稿者:
  • 表示回数 6,095
Geeklog

Eric WarrenさんがGL Labsに投稿していたPorting a Themeが面白かったので,自分が和訳したものをGL Labs WikiGeeklog.jp Wikiとに掲載してもらった。CMS用に公開されているオープンソースのテーマファイルはたくさんあるので,Geeklog用にテーマを移植する人が一人でも増えることを願う。

掲載に際して意外と苦労したのが,Wikiの表記法の違い。最初にGL Labsの記事を翻訳した際には,Wikiの編集権を持っていなかったので,HTMLファイルとして保存したものを和訳した。GL Labsに投稿するにあたって管理者のMarkさんから編集権をもらったのだが,ふだん使っていない[tech:DokuWiki]なので,手作業で変換するのかと思ってぞっとした。

すると,MarkさんがHTMLからのコンバータを紹介してくれた。

前者はMS Windows用のスタンドアロンのプログラムだが,日本語の処理がうまくいかないようだ。後者はPerlをベースとしたWebインターフェースを利用するので,コピペだけでOK。日本語も処理できるし,Wikiの種類も選べる。対応しているのは,Confluence, DokuWiki, Kwiki, Markdown, MediaWiki, MoinMoin, Oddmuse, PbWiki, PhpWiki, PmWiki, SnipSnap, Socialtext, TikiWiki, UseMod, WakkaWiki。このサイトを利用して,DokuWikiへの変換はさほど苦労せずにできた。

次にGeeklog.jp Wikiに投稿するのに,同じHTMLファイルを使用して,MediaWiki用に変換したが,注釈()や画像のリサイズオプションが利用できないため,GL Labsのレイアウトを忠実に再現することはできなかった。表記法もDokuWikiの方が洗練されていて使いやすい。改めてDokuWikiの実力を思い知らされた。

タグ:dokuwiki wiki テーマ 移植

カレンダプラグイン

  • 2007年7月16日(月) 19:25 JST
  • 投稿者:
  • 表示回数 6,503
Geeklog

Geeklog標準のカレンダプラグインに,TotalCalendarのような反復されるイベントを指定する機能やリマインダ機能,グループを指定しての検索機能を追加して欲しいという要望は以前から何度も話題に出ていたが,最近立っていたスレッドでは実装してくれた人に寄付金(pledges)を提供するという話が出ていた。

先ほど掲示板を覗いてみると,寄付金の申し出も増え,結局,jmucchielloさんが実装を引き受けることになった。

タグ:カレンダ プラグイン totalcalendar

RSS Aggregator改造版(その3)

  • 2007年6月13日(水) 19:17 JST
  • 投稿者:
  • 表示回数 5,333
Geeklog

RSS Aggregator改造版で,

  • ATOM1.0の時間情報を取れない
  • リンクテキストに & が含まれている場合, & と表示される

という問題が報告された。前者は,ATOMのフィードを解析するGeeklogシステム側の問題。フィードの種類に応じてパーサを生成するファクトリ内部のエラーだった。Geeklog.netに投稿して,改修したとレスが来た。

後者は,リンクテキストに単純に htmlspecialchars() を適用していたのが原因。& などは二重にエスケープされることになってしまう。htmlspecialchars()で変換される前にいったんエンティティに戻しておき,htmlspecialchars()を適用すればよい。

タグ:rss rss_aggregator

RSS Aggregator改造版(その2)

  • 2007年4月11日(水) 23:13 JST
  • 投稿者:
  • 表示回数 6,115
Geeklog

RSS Aggregator改造版がGeeklog.jpで動作しない理由がやっと判明した。PHPのxml_parser_create()関数が受け付けるエンコーディングはUTF-8, ISO-8859-1, US-ASCIIの3種類なので,日本語を含むxmlファイルを処理するには,必然的にUTF-8を指定することになる。PHPのバージョンにかかわらず,ソースエンコーディングをUTF-8にするためには,xml_parser_create( 'UTF-8' );とすればよい。

あとはUTF-8以外のフィード(EUC-JPなど)をxml_parse()に喰わせる前に,encoding='foo'を含めてUTF-8に変換してやればよい。この方針で行けば,mb_detect_encoding()などの確実性に欠ける関数を使わなくても済む。

というところまではすぐに思いついたが,PHP4だと文字化けする。フィードデータはまちがいなくUTF-8で与えているのに,どうもxml_parse()がISO-8859-1と決めつけている節がある。なぜ...

ふと,英語版のPHPマニュアルを見ていると,xml_parser_create()のノートにこんなコメントが載っていた。

[quote]

php at stock-consulting dot com (21-Feb-2005 10:47)

Even though I passed "UTF-8" as encoding type PHP (Version 4.3.3) did *not* treat the input file as UTF-8. The input file was missing the BOM header bytes (which may indeed be omitted, according to RFC3629...but things are a bit unclear there. The RFC seems to make mere recommendations concering the BOM header). If you want to sure that PHP treats an UTF-8 encoded file correctly, make sure that it begins with the corresponding 3 byte BOM header (0xEF 0xBB 0xBF)

[/quote]

このメモによると,どうもこの関数は好みがうるさく,PHP4を使ってUTF-8でデータを与えるときにはBOMをつけないとだめなようだ。これをヒントに,フィードデータをUTF-8に変換した後,BOMをつけてからパーサに読み込ませるとあっさり動作する。orz

PHPはマニュアルが充実しているのが長所の1つだが,マニュアル化されていない地雷も数多くある。そういう意味で,マニュアルに付属しているUser contributed notesは貴重な資料であることは間違いない。

これで安心したのも束の間,今度はGeeklog.jpの掲示板のフィードデータをいつのまにか読み込まなくなった。PHP5でも同様。FEED Validatorにかけてみると,不正な文字が含まれているせいでxmlパーサがエラーを起こしている。こういう状況だから,フィードデータを読み込めないのはある意味しかたないと思うが,FirefoxのSageはそんな逆境にもめげずにきちんと読み込んで動作する。

まだまだ修行が足りないようだ。xml_parse()関数を使いながら,エラーをリカバーする方法があるのかもしれないし,だめならxml_parse()系の関数に頼らず自力でパーサーもどきを書く必要があるのかもしれない。SimpleXMLやDOMを使えば簡単だが,PHP4でも動作させるとなるとその方法も採れない。先は長そうだ...

タグ:rss rss_aggregator xml_parse

RSS Aggregator改造版

  • 2007年4月 8日(日) 16:38 JST
  • 投稿者:
  • 表示回数 6,160
Geeklog SaYさんが作成したRSS AggregatorがGeeklog-1.4.1では動作しないというレポートがGeeklog.jpの掲示板に複数,寄せられていた。関心があったので,ハックしたものがこれ。オリジナル版との違いは,
  • Geeklog-1.4.0, 1.4.1のどちらでも動作する。
  • lib-common.phpを改造する必要はなくなった。必要な関数は皆phpblock_rssaggregator.phpに含まれている。
  • タイムスタンプは,RSS2.0で使われているRFC822フォーマットだけでなく,Atom1.0などでも使われているISO.8601.1988フォーマットにも対応。
  • フィードデータを表示するHTMLコードを指定可。
  • 記事が更新された時刻を表示可。
  • 簡単なキャッシュ機能を実装。
  • フィードデータに含まれるURLをサニタイズ。RSSインジェクションをある程度防げる。実装の際には,XSS Cheat Sheetを参考にした。

ただ,問題点もあり,設置するサイトによっては文字化けしてしまう。PHP4を使うと文字化けするようなのだが,理由はまだわからない。Geeklog.jpに設置した場合がそうなのだが,phpblock_rssaggregator.phpの254行目を


$feed = $factory->reader( $rdfurl, $_CONF['default_charset'] );
から,

$feed = $factory->reader( $rdfurl, '' );

に変えると正常に動作することから,XMLパーサ関数に関連する不具合のようだ。この問題を解決すれば,使い勝手のよいものになりそう。Geeklog.jpの左ブロックに,RSS Aggregatorのデモを表示しているので,よろしければどうぞ。

タグ:rss rss_aggregator

mt2geeklogカスタム関数バージョンアップ

  • 2007年3月24日(土) 18:31 JST
  • 投稿者:
  • 表示回数 5,631
プラグイン Movable Typeのデータファイルをインポートするmt2geeklogカスタム関数を更新した。といっても,インポートファイルの拡張子を .log から .txt へ変更しただけ。必要な人は,こちらからどうぞ。 タグ:mt mt2geeklog

jpmailプラグイン公開

  • 2007年3月18日(日) 15:47 JST
  • 投稿者:
  • 表示回数 6,326
プラグイン

Geeklog-1.4.1ではメールの文字コードがUTF-8になってしまい,サーバーの環境やメーラによっては文字化けするケースが出てきた。特にhotmailでは顕著なようだ。

lib-common.phpのコードを読んでみると,マルチバイト文字を含むメールのヘッダや本文はUTF-8でエンコードされる仕様になっている。ある意味,強引な仕様だ。

この状況を改善すべく文字コードやメールの勉強を始めたが,なかなかややこしい。「t_komuraの日記」を読むと,文字コード変換はPHPのバージョンによって対応の仕方が違うし,「超極める!PHP」の上鍵さんの記事を読むと,日本語のメールを正しく送るのは至難の業であることがよくわかる。さらにこの記事を読むと,PHPと文字コードの関係について自分がいかに無知だったかを思い知らされる。

そんなこんなで自分のようなホビープログラマには荷が重いが,ないよりはましだろうと思って,jpmailプラグインを作成した。GeeklogがUTF-8にエンコードしたヘッダや本文をデコードし,ISO-2022-JPでエンコードするだけなのだが,PHPのmb_detect_encoding()やmb_encode_mimeheader()を使わないで実装するのはかなりややこしい。

結局,エンコーディングの検出はNucleusに含まれているmb_emulatorを使い,行の折りたたみやコメントの処理は「超極める!PHP」の記事を参考にした。

XREA(PHP-5.1.4, MySQL-5.0.22)とノートPC(Windows XP PRO, PHP-5.2.1, MySQL-4.0.18)の環境では動作しているし,hotmail宛でも文字化けしていない。他の環境でもうまく動作すればよいのだが...

タグ:jpmail プラグイン

メーリングリストgeeklog-devel開放

  • 2007年1月 6日(土) 07:20 JST
  • 投稿者:
  • 表示回数 4,740
Geeklog 今まで開発者しか購読できなかったメーリングリストを購読できるようになったので,早速登録。従来のgeeklog-devtalkは閉鎖される。関心のある方は http://lists.geeklog.net/mailman/listinfo/geeklog-devel からどうぞ。

別の話だが,Geeklogの機能リクエストの山が膨れあがっているのに業を煮やしてか,開発者を発掘するためかは定かではないが,Geeklog本家で賞金レースを行うという発表があった。

http://www.geeklog.net/article.php/bounties

geeklog-devtalkでつい最近出ていた話題だが,あっさりと現実の提案になった模様。腕に覚えのある方は参加してみては?
タグ:メーリングリスト

Geeklog-1.4.1公開

  • 2007年1月 1日(月) 08:24 JST
  • 投稿者:
  • 表示回数 4,978
Geeklog Geeklog-1.4.1が正式にリリースされた。リリース直前でconfig.phpのデフォルトがutf-8から

$_CONF['language']        = 'english';
$_CONF['default_charset'] = 'iso-8859-1';
に戻り,一安心。個人的にはMicrosoft SQL Serverがサポートされたことはどうでもよく,コンテンツの多言語化,カレンダ機能のプラグイン化,CAPTCHAのサポートが興味深い。 タグ:geeklog 多言語化

ページナビゲーション