Re: Pythonを使わずにバージョン比較する
すばらしい!
ありがとうございます。
無料のサーバーでもPEAR実装されているところが出てきたんでしょうか?
私の印象では、無料サーバーではPEARが実装されていないような印象があったので・・・。
ひとまず、本家の見解です。
http://www.concrete5.org/community/forums/installation/python_dependency
・PHPベースでいいのが見つからなかった
・他のライブラリーはテキストベースでHTMLベースで比較してくれるものが少ない
・自分達でつくろうと思ったが時間がかかったし効率悪い
・もう既にPythonで良いライブラリあるし〜
という理由で、htmldiff.py を使い続けています。
上記の Text_DIFF は、あくまでも、テキストのDIFFなので、本家では検討しましたが却下となりました。今後、大幅なバージョンアップと、レンタルサーバーなどでのバージョンアップが期待できない限り、本家で取り入れる予定はありません。
私自身、あまり比較機能自体を使っていないので、どなたかに機能向上をお願いしたい次第です。
htlmdiff.py と同等、もしくはそれ以上の機能を実装でき、MITライセンスとバッティングしない、PHPライブラリがある場合は、よろしくお願いします〜。
ちなみに concrete5 本家や、私たち日本語公式サイトでも、無料サーバーでの運用を考えて開発していません。
有料サーバーで、月々250円のサーバーで立派に concrete5 が動くので、無料サーバーを使う利点が無くなっているというのが実情です。
無料サーバーは、
・機能の制約がありすぎる
・機能の制限があるから concrete5 インストール出来ない可能性が高い
・サーバーでユーザーサポートがないから
・ユーザーフォーラムでもサポートする人が足らない
・人手が足らない = ヘルプ作ってくれる人
・人手が足らない = 検証してくれる人
・人手が足らない = フォーラムでサポートしてくれる人
もしもよろしければ、build1024さん、無料サーバー担当を、お願いしていいですか ( ̄ー ̄)ニヤリ
build
Re: Re: Pythonを使わずにバージョン比較する
サーバーの実装ではなくて、PEARのライブラリの再配布という形で対応しています(ライブラリはLGPL)。PHPのコードですし、これならサーバーを選ばない…はずです。(ちょうど別スレッドのマルチバイト対応で書いた、Punycodeのライブラリと同じパターンです)
「バージョン比較だけPythonだなんて美しくない」という思いが自分に起こったのでしょうね
もっともそれが始まりではなくて、使っているサーバーがPythonは実行できないけどconcrete5は動くというサーバーだったためですが。
Pythonは読めないなりに読んでみたわけですが、「HTMLをタグで区切ってリストとして表し、テキスト比較をする」という処理をやっているように見えます。要するに
というイメージですね。それをhtmldiff.pyではhtml2listという関数が担当していて、Pythonのdifflibというのがリスト比較をしています。
そういうわけで、やっていることは実質的にテキスト比較ではないかと思うんです。そういうわけで、こちらでリスト変換のプログラムだけ書いておけば、Text_Diff(などのテキスト比較ライブラリ)で比較すればよかろう、という発想に至ったわけです。
本家のhtmldiff.pyでも、テキスト比較ということで時々動作が怪しいときがありますね。例えば
の両者の比較だと、タグ単位での比較になるので、比較結果が
という感じになります(アップしたPHPでの実装でも同じです)。タグの構造がおかしなことになっていますし、これは改善の余地ありかな、と思っています。
リスト変換を工夫すればできるのかもしれませんが、やりかけてややこしくなりそうだったので保留にしています(とりあえず現状ではhtmldiff.pyでもそうなってるからいいや、という感じです)。
結局「concrete5は動くけどPythonは動かない」というのがレアケースなんですよね。
今concrete5を設置して動作している無料サーバーが、symphonic-net.comと、海外になりますが000webhost.comの2つでして、両者とも見事にこのケースに該当しています(前者は非公式ながら動いていましたが、いつの間にか使えなくなっていました)。
いくつか気になる無料サーバーもあることですし、他のサーバーでも動作確認やってみようかな、と思います