2024年11月23日(土) 18:39 JST

nexPro Portal Suite

  • 2007年10月 2日(火) 07:36 JST
  • 投稿者:
  • 表示回数 5,514
Geeklog

Geeklogをベースにし,様々なビジネス用途のコンポーネントを組み込んだ[tech:nexPro] Portal Suiteがnextideにて公開されている。コンポーネントの多くはBlaineさんが開発したものを改良したもののようだが,見慣れないものもある。

  • nexForm - ダイナミックなオンラインフォーム&エディタ。
  • nexFlow - ワークフローエンジン。文書の回覧や承認を行う。
  • nexFile - バージョンコントロール付きのファイル管理。
  • nexList - リスト管理。
  • nexMenu - ダイナミックなサイトメニュー管理。

以上の機能に加えて,掲示板とCAPTCHAが組み込まれている。基本的には,GPLでサポート有償というパターンのようだ。日本語できちんと動作するかどうかはさだかではないが,Geeklogベースの商業サイトをすぐに構築したい人にとっては,有力な選択肢の1つになるだろう。

タグ:nexpro geeklog

GeeklogのCVSアクセス

  • 2007年9月26日(水) 22:18 JST
  • 投稿者:
  • 表示回数 6,105
Geeklog

Geeklog本家のサーバが移動した後,anonymousユーザでCVSにアクセスすることができなくなっていて,歯がゆい思いをしていた。CVSアクセスに関する説明によると,

cvs -d:ext:anonymous@cvs.geeklog.net:/cvsroot/geeklog co Geeklog-1.x

で良いはずなのだが,anonymousユーザは帰れと言われてしまう。extをpserverに変えても同じ。このときはMS Windows上でコマンドライン版のCVSを使っていた。

今日,メーリングリストを眺めていると,Tortoise CVSユーザが同じような質問をしていた。それによると,MS Windowsではextは使えず,sshにする必要があるとのこと。自分もTortoise CVSはインストールしていたので,やってみると成功した。以下はその覚え書き(というほどの代物ではないけど...)。

  1. チェックアウトしたいフォルダで右クリック。「CVSチェックアウト(k)...」を選択。
  2. モジュールタブで,「CVSROOT」に :ssh:anonymous@cvs.geeklog.net:/cvsroot/geeklog を入力。
  3. 「モジュール」に Geeklog-1.x を入力。その右の「一覧の取得(F)...」はGeeklog.netのCVSサーバでは動作しないようだ。
  4. 「OK」を押して少しすると,パスワードを訊かれるので, geeklog と入力。チェックアウトが始まる。1回目は全ファイルをチェックアウトするので,それなりの時間がかかる。

これでいつでも最新版のソースコードを眺めることができる。

タグ:geeklog cvs tortoisecvs

Geeklog-1.4.1の後継者

  • 2007年9月 9日(日) 21:45 JST
  • 投稿者:
  • 表示回数 6,008
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,218
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,644
Geeklog

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

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

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

PHP-4.x系列の終焉

  • 2007年7月14日(土) 16:02 JST
  • 投稿者:
  • 表示回数 7,229
ソフトウェア

PHP本家の記事によると,PHP5が登場して3年経ち,PHP6も開発中であることから,今年いっぱいで4.x系列のサポートは終了,来年8月8日でセキュリティパッチの提供も終わるとのこと。PHP5普及のはずみになればよいが,国内のレンタルサーバ各社は追従できるだろうか? セキュリティパッチを提供しないままで4.x系列を提供するところもでてくるのではなかろうか?

本格的に5.x系列が普及すれば,少しはまともなオブジェクト指向プログラミングが可能になるし,Zend Framework, Symfonyなどの5.x系列専用のフレームワークも使いやすくなる。

アプリケーション制作者の側でも積極にPHP5への乗り換えを検討している人が増えてきていて,goPHP5なんてサイトもある。このサイトに掲載されているアプリケーションの中には,PEAR, PHPUnit, CMS Made Simple, Website Baker, Drupal, phpMyAdmin, Propel, Typo3などのビッグネームもある。

Geeklog本家のメーリングリストでも1週間ほど前に[tech:goPHP5]の話題が出ていて,Dirkさんを除くコア開発者たちはおおむねPHP5へ移行するのに肯定的だ。Dirkさんは例によって静観して議論のおとしどころを見守っている感じ。

タグ:php gophp5

RSS Aggregator改造版(その3)

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

RSS Aggregator改造版で,

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

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

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

タグ:rss rss_aggregator

厄日

  • 2007年5月28日(月) 23:25 JST
  • 投稿者:
  • 表示回数 4,667
その他もろもろ

昨日は光化学スモッグ注意報のせいで運動会は中止。実際,目がひりひりした(ような気がする)。

今朝は,JRの人身事故のせいで,通勤先に1時間30分の延着。まあ,業務に支障は出なかったからよかったが...

「この調子だとあと1回は災いに遭いそう。おばさんドライバーがバックしようとしている後ろを通っているときに,アクセルとブレーキを踏み間違えてドシン!かな」などと考えながら歩いていると,そのようにバックしかけている軽自動車の後ろを2回通る羽目になってしまった。明日が来るのがちょっと怖い...

タグ:厄日

RSS Aggregator改造版(その2)

  • 2007年4月11日(水) 23:13 JST
  • 投稿者:
  • 表示回数 6,306
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,297
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

ページナビゲーション