Webベースのテキスト比較ツール difff《デュフフ》
Perl ApacheConf
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
data
en 入力サイズの上限を変更 Feb 2, 2016
.htaccess
README.md ver.6.1アップデート Jul 30, 2015
delete.cgi
difff.pl 入力サイズの上限を変更 Feb 2, 2016
index.cgi
save.cgi

README.md

difff《デュフフ》

Webベースのテキスト比較ツールです。2つのテキストの差分をハイライト表示します。

  • http://difff.jp/
    テキスト比較ツール difff《デュフフ》
    本レポジトリにあるCGIが実際に稼働しています。

  • http://gigazine.net/news/20120416-difff/
    GIGAZINEで difff《デュフフ》が紹介されました:
    “名前はちょっとネタっぽいですが、実用性は高く、日本語のテキストでもOK”

著者が管理している 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 = 'http://difff.jp/' ;
# 保存したHTMLファイルから作業を再開できなくてもよい場合は相対パスを指定
# my $url = './' ;

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

# 保存したHTMLファイルから作業を再開できるよう、FORMの送り先に完全URLを指定
# my $url = 'http://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から読み書き・実行できる権限を与えてください。なお、公開版の http://difff.jp/ では、保存期間を過ぎると結果が削除されます。 (結果を公開する機能が必要ない場合は6.0を利用してください)

更新履歴

2015年6月17日

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

2013年3月21日

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

2013年3月12日

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

2013年1月11日

  • 英語版を公開。

2012年10月22日

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

ライセンス

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