とりあえずプラグインが完成したので、ボチボチ解説していく。ソースはSubversionのリポジトリからどうぞ。
http://kazu.tv/svn/docdiff/trunk/
DocumentDiffActionには重要なメソッドが2つある。
- do_main
- do_viewComparison
文書を選択して、画面右のDiffをクリックした時に呼ばれるのが前者で、差分を取りたいバージョンをクリックした時に呼ばれるのが後者。
まずはdo_mainから。
自宅警備員兼エンジニアのブログ
とりあえずプラグインが完成したので、ボチボチ解説していく。ソースはSubversionのリポジトリからどうぞ。
http://kazu.tv/svn/docdiff/trunk/
DocumentDiffActionには重要なメソッドが2つある。
文書を選択して、画面右のDiffをクリックした時に呼ばれるのが前者で、差分を取りたいバージョンをクリックした時に呼ばれるのが後者。
まずはdo_mainから。
本当は解説をもう少し書くつもりだったけど、その前にプラグインが完成してしまった。まぁとりあえず動くレベルだけど。
プラグインの機能は現在のバージョンと過去のバージョンの差分を取るというもの。
ダウンロードは↓から。
docdiff.zip
たいした内容ではないけど、プラグインの解説も時間があるときに書いていく予定。
追記
最新版は以下のSubversionレポジトリに。
http://kazu.tv/svn/docdiff/trunk/
引き続きKnowledgeTreeのプラグインを作ってる。
PHPでプログラミングをしてると、PEARやPECLのライブラリを使いたくなる事があるけど、ちょっとだけファイルの修正が必要だった。
KnowledgeTreeはPHPやMySQLなど、必要なのは全てパッケージに含まれていて、PHPはデフォルトだと/opt/ktdms/php以下にインストールされる。で、試しにPECLを実行してみると以下のようなエラーが出る。PEARも同様。
# /opt/ktdms/php/bin/pecl
/opt/ktdms/php/bin/pecl: line 28: /bitrock/knowledgetree/linux/build/output/php/bin/php: No such file or directory
/opt/ktdms/php/bin/pecl: line 28: exec: /bitrock/knowledgetree/linux/build/output/php/bin/php: cannot execute: No such file or directory
どうやらPHPをビルドした環境のパスが使われているらしい。
修正すべきファイルは以下の3つ
最近KnowledgeTreeのプラグインを書いてるので、ソースコードを色々追っている。今回はインデックス生成の話。
KnowledgeTreeはご存じの通り全文検索が出来るのだが、その仕組みを大雑把に書くと
1.を行うのがExtractorと呼ばれるクラス。
/opt/ktdms/knowledgeTree/search2/indexing/extractorCore.inc.phpにDocumentExtractorという抽象クラスが定義されており、その孫クラスあたりにWordExtractor,PDFExtractorなどがある。それらの実体は/opt/ktdms/knowledgeTree/search2/indexing/extractorsの下にある。
各extractorはcatdocなどの外部コマンドを呼び出して、ファイルからテキスト情報を抽出しているらしい。
さて、それらのクラスがどうやって呼び出されるんだろう?と疑問に思ってたんだけど、mime_typesとmime_extractorsという2つのテーブルを発見。後者に先ほどのExtractorの情報が格納されていて、前者にはmime typeの一覧と、各Mime typeに対応するExtractorの情報が入ってる。
インデックス生成の仕組みについてはもう少し調べてから、もう少し詳しい説明を書こうと思う。
KnowledgeTree 3.5.4aでのバグ。
文書をダウンロードしようとするとエラーが。以下のエラーが。
For more information on the error click here:の横の!マークをクリックすると以下の詳細なメッセージが。
Fatal error: Class ‘KTOnDiskHashedStorageManager’ not found in /opt/ktdms/knowledgeTree/lib/storage/storagemanager.inc.php on line 194
本家フォーラムの書き込みに解決策あり。
/opt/ktdms/knowledgeTree/lib/storage/storagemanager.inc.php(Linux版の場合)の先頭の方に以下の行を付け加えればよい。
require_once(KT_DIR . '/lib/storage/ondiskhashedstoragemanager.inc.php');
引き続きボチボチやってる。
プラグイン作成とかで難しいのは、そのプラットフォームの仕組みを理解する事。いったん仕組みが分かっちゃえば後は普通のプログラミング。KnowledgeTree (KT)の場合はPHP。
今回はプラグインに関連するテーブルの簡単な解説。
KnowledgeTreeを触り始めた。バージョン間の差分が取れればいいなぁと思ってプラグインを書いてみる事にした。
その後気づいたけど、同様の機能は有償版には含まれているらしいね。ただ、KnowledgeTreeの日本語の情報って少ないし、プラグインの情報なんてもっと少ないので、せっかくだし勉強がてらプラグインを書いてその情報を載っけていこうかと。これからプラグイン書こうという人の参考になればいいかな。
今回作るのは「Action」というもの。プラグインには色んな種類があるけど(英語だけどこの辺を参考に)、Actionは文書やフォルダに対する何らかの処理を行うもの。文書を選択すると右の方のメニューで「Archive」とか「Copy」とかが表示されているけど、それらがAction。
Actionの作り方は同じく英語ページのここに載ってるんだけど、正直言ってこれだけじゃよく分からなくて、既存のプラグインのソースを見ながら見よう見まねで作り始めた。
とりあえず2つクラスを作る必要がある必要らしい。
文書管理をしたくていろんなのを試してる。今回はKnowledgeTreeを触ってみた。
とりあえずLinuxのパッケージをインストールして、日本語言語ファイルみたいなのを入れたら普通に使えた。日本語での検索も出来るのでいい感じ。
現状の問題点