/difff

Webベースのテキスト比較ツール difff《デュフフ》

Primary LanguagePerl

difff《デュフフ》

difff is a simple, web-based online tool for comparing two text files.
The software is open source, and freely available to all users.
English version of difff: https://difff.jp/en/

ウェブベースのテキスト比較ツールです。2つのテキストの差分をハイライト表示します。
本ソフトウェアはオープンソースであり、誰でも無償で自由に利用することができます。
difff《デュフフ》稼働中: https://difff.jp/

スクリーンショット

作者が管理している difff《デュフフ》のウェブサイト はどなたでも無償で利用でき、入力テキストも一切サーバに残りませんが、 部外秘の文書をどうしても社内のサーバで デュフフ したいというような要望が 多かったため、ソースを公開することにしました。どうぞご利用ください。

difff《デュフフ》は差分検出にUNIXのdiffコマンドを利用しています。 diffコマンドは2つのファイルの差分を行単位で検出するプログラムです。 しかし、比較する文書をいったんファイルに書き出すのは秘匿性の点から 好ましくないので、difff《デュフフ》ではファイルを書き出すのではなく FIFO(名前付きパイプ)を作成してdiffコマンドに文書を渡しています。

動作環境

  • PerlのCGIが動作すること
  • UNIXのdiffコマンドが実行可能であること
  • FIFOを作成可能な、apacheからの書き込み権限のあるディレクトリがあること
    ※ diffコマンドで文書を比較する際にFIFO(名前付きパイプ)を作成します。

インストール

difff《デュフフ》は単一のCGIスクリプト(difff.pl)です。 本ファイルをウェブ公開用のディレクトリに置き、index.cgi にリンクします。 もしくは、difff.pl を index.cgi に名前変更して置いてもかまいません。 スクリプトには、apacheから読み出し・実行できる権限を与えてください。

また、スクリプトの下記の部分を環境にあわせて書き換えてください。

#!/usr/bin/perl

↑ Perlのパスを調べて記載してください。

# 保存したHTMLファイルから作業を再開できるよう、FORMの送り先に完全URLを指定
my $url = 'https://difff.jp/' ;
# 保存したHTMLファイルから作業を再開できなくてもよい場合は相対パスを指定
# my $url = './' ;

↑ CGIの設置先を完全URLで記載してください(index.cgi は記入不要)。 FORMタグの action= にこの値が入り、保存したHTMLファイルからでも 文書をPOSTできるようになります。その必要がない場合は上記のかわりに、

# 保存したHTMLファイルから作業を再開できるよう、FORMの送り先に完全URLを指定
# my $url = 'https://difff.jp/' ;
# 保存したHTMLファイルから作業を再開できなくてもよい場合は相対パスを指定
my $url = './' ;

のように設定してください。

my $diffcmd = '/usr/bin/diff' ;  # diffコマンドのパスを指定する

↑ diffコマンドのパスを調べて記載してください。

my $fifodir = '/tmp' ;           # FIFOを作成するディレクトリを指定する

↑ FIFOを作成可能な、apacheからの書き込み権限のあるディレクトリを指定。

以上で difff《デュフフ》をウェブブラウザから利用できるようになります。

動かない場合、コマンドラインから下記を実行すると動作確認ができます。

% export QUERY_STRING="sequenceA=hogehoge&sequenceB=hagehage"
% ./index.cgi

出力の1行目が Content-type: text/html; charset=utf-8 となっており、2行目が空白行、3行目以降にHTMLが出力されれば成功です。 3行目以降のHTMLをファイルに書き出し、ブラウザで開いて内容を確認してください。

エラーが出る場合は、エラーメッセージを参照し対処してください。

また difff《デュフフ》は比較の結果をサーバに保存し、公開用のURLを発行 することができます。結果の保存場所である data/ ディレクトリには、 apacheから読み書き・実行できる権限を与えてください。なお、公開版の https://difff.jp/ では、保存期間を過ぎると結果が削除されます。 (結果を公開する機能が必要ない場合は6.0を利用してください)

更新履歴

2017-08-07

  • HTTPSによる暗号化通信に対応。

2015-06-17

  • デュフフの結果を公開する機能を追加。

2013-03-21

  • 文字数カウンタを改良し、空白文字・改行を除いた文字数も表示。
  • 単語数もカウントするよう改良。

2013-03-12

  • トップページの入力フォームのすぐ下に結果が表示されるように変更。
    入力した文書と比較結果とをまとめて1つのHTMLファイルに保存できます。
    また保存したHTMLを開いて作業を再開することも可能です。
  • 文字数をカウントする機能を追加。
  • ハイライトの色を、見やすいけれど疲れない色に変更。
    ver.5と同じ緑色や、印刷に便利な白黒に切り替えることもできます。
  • 日本語の処理をPerl5.6/EUC-JPからPerl5.8/UTF-8に変更。

2013-01-11

  • 英語版を公開。

2012-10-22

  • difff《デュフフ》ver.5のソースをGitHubで公開。

License

Copyright © 2004-2022 Yuki Naito (@meso_cacase)
This software is distributed under modified BSD license.