問題タブ [binary-diff]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
svn - バージョン管理の悪用
バージョン管理は、コンテンツが本質的にバイナリ データ ファイルであるプロジェクトに適していますか? 大量の BMP ファイルと TGA ファイルを含む、重量が 10 ギガ程度のパッケージを考えています。
Subversion はこのようなことを処理できますか? ユーザーが変更されたものだけをダウンロードできるようなバイナリ パッチを生成することは可能ですか。Rsync はオプションになる可能性がありますが、元に戻すことはできません。以前のバージョンに簡単に戻せるようになりたいです。
私もこの質問を見ましたが、答えに満足していませんでした
java - Java のバイナリ差分ライブラリ
SO 上の Java の text-diff ライブラリについてはいくつか質問がありますが、バイナリ diff についてはありません。だからここに行く:
Java で実装されたバイナリ差分ライブラリを探しています。javaxdeltaとGNU Diff ポートを見つけましたが、他にも隠された宝石があるのではないでしょうか? そして、おそらく誰かが上記のライブラリの経験がありますか? 比較は非常に役立ちます。
最後に、 Avroでシリアル化されたオブジェクトを比較したいということを知っておくと役立つかもしれません。
java - 画像の差分/パッチ
私は、一連の同様の画像をネット経由で転送する必要があるプロジェクトを書いています。処理を高速化するために、ほとんどのムービー コーデックが行うことを考えてみました。キーフレームがあり、変更を送信するだけです。
今、私が得たのはBufferedImage
s のセットなので、テキスト ファイルに例えると、基本的にそれらを比較してパッチを送信したいだけです。しかし、私はこれまで画像を実際に扱ったことがないので、これを行うとしたら、かなりくだらないものになります。
では、このようなものを実装する最良の方法は何ですか、またはこのようなものに適した実装が既にありますか?
画像をバイト配列に保存し、それらをバイナリ差分することはあまり効果的ではないと思います。
編集:これを画像にストリーミングする必要があります。Edit2:実装の詳細についてはそれほど重要ではありません。アルゴリズムの最も効率的なアイデアは何ですか。5px のチャンクでのみ動作し、目で気付かない程度の変更しかない場合は px を無視しないようにします (多少の品質低下は許容されます)。
git - git を使用したデータのバージョン管理: 特定のファイルのカスタム diff
そこで、特定のバイナリまたはテキスト ツリー データ構造のバージョン追跡に対する git の適用可能性を調査したいと考えています。問題は、差分ロジックを完全にカスタム化し、データ構造パターンに合わせて調整することです。
問題のファイルが特定のjsonオブジェクトであると仮定すると、jsonファイルのカスタム差分が必要になるため、バージョンAが次のようにある場合:
そして、次の変更を適用します。
したがって、私のdiffは、アイテム1のみが変更されたことを見つけるのが賢明です。デフォルトの diff では、他の誰かがキー a の項目 [0] などに変更を加えた場合、競合が発生し、手動でマージする必要があります。カスタム diff は、特定のファイル タイプとコンテンツの diff ロジックをカスタマイズすることを目的としています。
バイナリ ファイルの場合は若干異なる場合もあります。
この質問の目的は、以下があるかどうかを確認することです。
- このカスタマイズをサポートする現在の git の方法
- このカスタマイズをサポートする git 開発のプロジェクトまたはブランチ
- これを目的とした他のツール
ありがとう!
編集この記事を見つけました。これは、私が疑問に思っていることの非常に広い範囲を提供すると思います。また、これはおそらく、この問題に対する適切な解決策がまだないことを示している可能性があります。
git - git binary diff アルゴリズム (差分ストレージ) は標準化されていますか?
Git はデルタ圧縮を使用して、互いに類似したオブジェクトを格納します。
このアルゴリズムは標準化されており、他のツールでも使用されていますか? フォーマットを説明するドキュメントはありますか? xdelta/VCDIFF/RFC 3284 と互換性がありますか?
command-line-tool - 動作するバイナリ差分ツールはGDIFF(グラフィカルファイル差分ではなく、汎用差分形式)を実装していますか?
ウィキペディアでGDIFF(Generic Diff Format)を見たことがありますが、この標準を実装するコマンドラインツールはありますか。今私が持っている最高のものはLibXDiffですが、それはライブラリです。それを実行するには、追加の作業が必要になります。
バイナリ差分に関しては、VCDIFF(xdeltaなど)とbsdiffの方が圧縮率が高いことはわかっていますが、私の場合は、単純なものが本当に必要です。VCDIFFは現在のウィンドウの前に何かをコピーし(私の貧弱な英語の読みがこの記事について正しかった場合)、bsdiffのパッチファイル形式はより複雑になります。
アップデート
最後に、「小さな文字列照合を無効にする」と「外部解凍を無効にする」を切り替えると、xdelta3を使用したVCDIFFが実際に機能し、非常に役立つ(私のアプリにとって)情報を出力する非常に優れた「printdelta」コマンドがあることがわかりました。パッチファイルからVCDIFF形式を抽出する必要はありません。
mercurial - Mercurial ソース コードで diff バイナリのコードが見つかりません
私はmercurialのソースコードを読んでいますが、bdiff.cとmdiff.pyで見たのはバイナリではなくテキストを処理しています.しかし、彼らはmercurialがすべてのファイルをバイナリとして扱うと言いました.私は混乱しています.
actionscript-3 - 2 つの bytearray の「changeset」を作成する
私はいくつかのバイナリデータを持っています。時間の経過とともに変更されます。一部のバイトはあちこちに追加され、一部は変更されます。全体として、バイト配列のほとんどは同じままです。
2 つの bytearray から「変更セット」を生成するライブラリ、できれば Actionscript 3 はありますか (これにもっと適切な名前はありますか?)。また、変更セットを bytearray に適用して、結果の新しい bytearray を返せるようにする必要があります。
これは理にかなっていますか?問題を最もうまく定式化する方法がわかりませんでした。
明確化のための編集:
私が欲しいのは、変更のみを発行するものであり、「チェンジセット」をできるだけ小さくします。したがって、1MB のバイナリのうち 1KB だけが変更された場合、変更セットは約 1KB のサイズの bytearray になるはずです。
編集:
基本的に私はhttp://www.daemonology.net/bsdiff/のAS3バージョンが必要だと思います