委譲をPOSTメソッドで再実装。画像生成の委譲機能のバグを修正しました。画像生成の委譲機能を追加しました。†graphvizを使って、グラフ構造のイメージを表示します。dotスクリプト)&graphviz(同様);progどのプログラムで画像を生成するかを指定します。fdpのいずれかを指定できます。省略時にはdotが使われます。sizeグラフのサイズを指定します。largeのいずれかを指定できます。省略時にはsmallが使われます。transparency背景色を透明にするかの指定です。notranspのいずれかを指定できます。transpを指定すると背景色が透明になります。notranspを指定すると背景色は不透明になります。省略時にはtranspが指定されます。align画像の表示位置を指定します。rightのいずれかを指定できます。(省略時には位置は指定されません)dotスクリプトグラフの定義を記述します。「,」もそのまま記述できます。描画されるスクリプトにマクロのラベル名が含まれると、定義されたdotスクリプトに置き換えられます。dotスクリプトには「,」もそのまま記述できます。dotスクリプトは別のマクロのラベル名を含むことができます。最大で10レベルまで展開されます。マクロ機能はインライン形式では利用できません。定義されているマクロの内容を表示します。別のページに書いてあるマクロをまとめて取り込みます。マクロは整形済みテキストで行単位に記述します。dotscriptページは複数指定可能です。†よく使う設定や共通のサブグラフなどをマクロとして定義することができます。)dotスクリプトにマクロのラベルを含めれると、定義された文字列に置き換えられます。})よく使う定義をまとめて記述しておくことができます。:plugin/graphviz/UMLというページに以下のように整形済みテキストの形でマクロ定義を記述します。];次のようにしてマクロをインクルードします。†?cmd=graphvizgraphvizプラグインは、Webブラウザからページがリクエストされた時点でグラフ画像を生成します。生成した画像はキャッシュに保存します。ソフトウェアの更新などでキャッシュに保存された生成済の画像を削除したい場合には、コマンド形式でプラグインを実行します。表示されたページで管理者パスワードを入力すると、キャッシュ内のgraphvizにより生成されたファイルが削除されます。†dev:PukiWiki/1.4/ちょっと便利に/複数行のプラグイン引数を可能にのパッチを当てると、以下のように複数行の記述が出来るので、大きなグラフ構造の記述が便利になります。別サーバに画像生成を依頼することができます。graphvizが利用できない環境や、画像生成の負荷を別マシンに分散させたい場合に利用します。画像生成を受け持つPukiWikiサーバでは次のように、委譲の受け付けを許可します。TRUE);委譲を行いたいPukiWikiサーバでは次のように、委譲先PukiWikiサーバを指定します。以前のプロトコルはPLUGIN_GRAPHVIZ_ACCEPT_TRANSFERで許可することができます。†dotスクリプトのUTF8化とフォントネームの指定により日本語も通るようです。確認時点でのgraphvizのパッケージバージョンは2.2-2です。graphviz.inc.phpの設定を行います。/usr/bin/dot');#他のgraphvizのプログラムも同様。convertは変更の必要なし。11:58:04標準でUTF8化するようにしました(Rev1.4)。文字コードはPLUGIN_GRAPHVIZ_CHARSETで指定できます。11:58:04PLUGIN_GRAPHVIZ_OPT_*はマクロの導入に伴い廃止しました(Rev1.4)。12:19:53PLUGIN_GRAPHVIZ_MACRO_FONTNAMEによる指定に改めました(Rev1.7)。†PukiWikiでの動作は未確認ですが、以下の設定で行けそうです。DOTFONTPATH環境変数を設定します。%DOTFONTPATH%C:\WINNT\Fontsgraphviz.inc.phpの設定を行います。12:19:53PLUGIN_GRAPHVIZ_MACRO_FONTNAMEによる指定に改めました。入手しApplicationsにインストールします。以下の設定はconvertをFinkから入れた場合です。12:19:53PLUGIN_GRAPHVIZ_MACRO_FONTNAMEによる指定に改めました。†ご存知でしたら是非教えてください。生成された画像はCACHE_DIRにキャッシングされます。scriptからmd5によりファイル名を生成しているため、異なるスクリプトで生成されたキャッシュファイルを表示してしまう可能性があります。背景色を抜くために、convertを使用します。複数行にわたるスクリプトを書きたいんですけど、PukiWikiはプラグインは1行にしか書けないんですね。convert_html.phpのBodyクラスのparseメソッドで、行末に\が合ったら行を連結する改造をしようとしているんですが、なんかうまくいってないです。18:39:27編集フォームで添付ファイルを編集するスタイルが良いかも。19:32:20例えばプラグインを呼んだ次の行以降の連続するコメントをスクリプトとみなすとか、そんな感じでしょうか。1ページ中に複数のgraphvizが置かれる場合もあるので「次の行」を特定するために、引数にAlt属性を追加して、Alt属性の文字列を手掛かりに「次の行」を探すと。01:00:42編集の容易さを考えると、プラグインに複数行の引数が自然に記述できるとうれしいんですけどね。「\」で行を連結するのは、なぜか正規表現にマッチしなくてうまくいかなかったんですけど、その代わりヒアドキュメント形式に対応させてみました。ブロック要素を扱うプラグインのニーズに対する解となるかもしれません。何が素敵といって前述の整形済ブロックのように2回呼び出す方式と違って、あくまでブロック型プラグインの引数として渡すのでタグの閉じ忘れを防げる点が素敵です。ヒアドキュメントという記述形式が一般的に分かりやすいのか、とか既存のプラグインをヒアドキュメント形式で呼び出すとでまずい挙動をしたりしないか、とか微妙に議論が必要そうな箇所はあるにせよ、シンプルな割に興味深いパッチと思います。04:07:07たしかに面白いアプローチですね。09:28:08dev:PukiWiki/1.4/ちょっと便利にに上げて頂いた方が、クローズアップされて良いかもです。09:34:43dev:PukiWiki/1.4/ちょっと便利に/複数行のプラグイン引数を可能にに転載しました。16:49:23ご指摘ありがとうございます。refプラグインを参考にいじってみましたが、こんな感じでよいのでしょうか。17:49:13無事に表示されるようになりました、ありがとうございます。思い通りの図がかけるよう精進してみます。15:39:44graphviz.inc.php.2についてなのですが、Windowsサーバー環境で動かすことは可能でしょうか?実際に動かそうと試しているのですが、画像が吐き出されません。graphvizはWindows版バイナリをインストールし、それ単体で動作しています。graphviz.inc.php.2内の「使用するgraphvizプログラムのパス」には、exeへの絶対パスを通していますが、convertは無かったので通せませんでした。00:21:10dotファイルを一旦吐き出して-oで$image_pathファイル出力をするとできますよ。09:33:19お~出来るのですね。具体的にどうするのかわからないです。08:10:37convertは背景色を透明にするために使っているだけなので通さなくても良いですよ。}「dotファイルを一旦吐き出して」って書いてありますから、上のやり方ではダメみたいですね。15:53:58アプリの呼び出し方法を変えてみました。これでWindowsでも動かないでしょうか。19:07:23早速試してみました。FALSE)」と出力され、cacheディレクトリにも画像データはありませんでした。08:45:05お手数かけて済みません。実行環境で場合分けして、Windows環境の場合は単純なコマンドにしておかないとだめかなぁ。18:30:46そうですね。私のやった方法もべたべたで単純化して、なんで。Unix系サーバーは柔軟でいいなあ。11:00:50graphviz.inc.php.5をアップロードしました。標準のコマンド呼び出しに失敗した場合により単純な方法を試すようにしました。これでWindows環境でも動くとよいのですが。画像生成を別のPukiWikiサーバに依頼できるようにしました。19:12:46バグ発見。別PukiWikiサーバに画像生成を依頼する場合に、一つのページに複数個のイメージがあるとイメージがランダムに表示されないことがあります。原因は今のところわかりません。19:31:55graphviz.inc.php.6をアップロードしました。画像生成を委譲した場合にイメージがランダムに表示されないバグを修正しました。09:56:22こんばんは。Windows環境でGraphvizプラグインを動かす事が出来ましたので報告します。1.270行と282行をコメントアウト("もっと単純なコマンドで試してみる"のコードを必ず動かすようにする)。2.dotコマンドへのパスをショート形式(パス中に空白文字を含めない)にする。動かす事が出来ました。1.4.5で導入されたURL長の制限により、生成委譲機能が動作しない場合があります。現状はdotスクリプトをURLに埋め込むと言うありあえない実装なので、POSTメソッドを使う形に変更しようと勉強中です。19:24:36graphviz.inc.php.7をアップロードしました。マクロ機能を実装しました。画像生成の委譲にHTTPのPOSTメソッドを使用するようにしました。12:10:50PLUGIN_GRAPHVIZ_OPT_*は廃止しました。代わりにPLUGIN_GRAPHVIZ_MACRO_*を導入しました。Windows環境用にシンプルなコマンド実行を行わせるPLUGIN_GRAPHVIZ_SIMPLE_EXECを定義しました。文字コード変換をプラグインに組み込みました。デフォルトでUTF8に変換します。プログラム定義での変換は必要なくなりましたので、していた方は対応をお願いします。graphviz.inc.php.8をアップロードしました。インライン型プラグインが機能していなかったのと、PLUGIN_GRAPHVIZ_SIMPLE_EXECをTRUEにした場合にテスト用のメッセージが表示されてしまうバグを修正しました。16:21:45graphviz.inc.php.9をアップロードしました。16:24:48委譲時に意図しない文字コード変換が生じていたバグを修正しました。その他もろもろバグ修正。Pukiwikiとは直接関係ないのですが、Graphivizに日本語を出力させる方法がわかったので、カキコします。いうスレッドがありました。この前後を参照ねがいます。このスレによれば「dotファイルの文字エンコーディングをUTF-8にせよ。それからdotコマンドが適切なフォントを見つけられるように設定してやれ。