問題タブ [delta]
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.
python - Python Difflib デルタと Ndiff の比較
私は、変更管理システムが行うと信じているようなことをしようとしていました.2つのファイルを比較し、ファイルが変更されるたびに小さな差分を保存します。私はこのページを読んでいます: http://docs.python.org/library/difflib.htmlそして、どうやら私の頭に沈んでいません。
以下に示すやや単純なプログラムでこれを再作成しようとしましたが、欠落しているように見えるのは、デルタに少なくとも元のファイルと同じくらい多くのものが含まれていることです。
純粋な変更だけに到達することはできませんか? 私が質問する理由は明らかです。ディスク容量を節約するためです。
毎回コードのチャンク全体を保存することもできますが、現在のコードを一度保存してから、変更の小さな差分を保存する方がよいでしょう。
また、多くの difflib 関数がリストではなくジェネレーターを返す理由を理解しようとしていますが、その利点は何ですか?
difflib は役に立ちますか? それとも、より多くの機能を備えたより専門的なパッケージを見つける必要がありますか?
ありがとう!
アップデート:
----- コンテキスト差分を表示 -----
* 5,9 **
print "j=" + j
「XYZ」を印刷
--- 5,9 ----
- 「終わり」を印刷する
別の更新:
メインフレーム用のソース管理ツールである Panvalet an Librarian の昔は、次のような変更セットを作成できました。
これは単純に、9 行目の後に 1 行 (複数行) を追加することを意味します。次に、++REPLACE や ++UPDATE などの単語を追加します。 http://www4.hawaii.gov/dags/icsd/ppmo/Stds_Web_Pages/pdf/it110401.pdf
java - データベース内の巨大なリストの複数の位置変更を効率的に適用する方法は?
データベースに格納された単純なオブジェクトの巨大なJavaリストがあり、インデックス列によって要素の位置を維持しています。私は休止状態を使用していますが、コレクションとして保存するには大きすぎるため、リストを自分で管理しています。
リストにいくつかの変更 (追加、削除、移動) を行った後、インデックス列を手動で更新し、休止状態で削除する新しい要素をそれぞれ挿入して、データベースの変更を永続化したいと考えています。
さて、(1)リストデルタを可能な限り少ないSQLステートメントに結合する効率的なアルゴリズムはありますか?または(2)すべての変更を記録して段階的に適用する必要がありますか?
java - Java でのファイル デルタ/バージョン管理の既存のソリューション
ファイル バックアップのバージョン管理または最適化を行う場合、1 つのアイデアは、変更されたデルタまたはデータのみを使用することです。
これは最初は単純なアイデアのように思えますが、実際には、変更されていないデータがどこで終わり、新しいデータがどこから始まるかを判断するのは難しい作業です。
既にこのようなことを行っている既存のフレームワークや、効率的なファイル比較アルゴリズムはありますか?
python - ストリーム rdiff - 差分差分?
rdiff を使用してオンライン バックアップを行う製品があります。現在起こっていることは次のとおりです。
ファイルをステージング領域にコピーします (作業中にファイルが消えたり変更されたりしないようにします)
元のファイルをハッシュし、rdiff 署名を計算します (差分差分に使用されます) rdiff 差分差分を計算します (以前のバージョンがない場合、この手順はスキップされます)
結果のデルタ差分を圧縮および暗号化します
現在、これらのフェーズは互いに別個に実行されています。最終結果は、ファイルを複数回反復処理することです。小さなファイルの場合、これは大したことではありませんが (特にディスク キャッシングの場合)、大きなファイル (数十または数百 GB) の場合、これは実際のパフォーマンス キラーです。
これらのすべてのステップを 1 つの読み取り/書き込みパスに統合したいと考えています。
そのためには、ファイル ハッシュ、rdiff 署名、圧縮および暗号化されたデルタ差分ファイルなど、すべての「出力」を保持しながら、上記のすべての手順をストリーミング方式で実行できる必要があります。これには、ソース ファイル (たとえば、100k?) からデータのブロックを読み取り、メモリ内のファイルを反復してハッシュ、rdiff 署名を更新し、デルタ差分を実行し、出力を圧縮/暗号化出力ストリームに書き込む必要があります。 . 目標は、ディスクのスラッシングの量を大幅に最小限に抑えることです。
現在、署名を計算し、バイナリ デルタを生成するために、rdiff.exe (基盤となる librsync ライブラリの最上位の薄いレイヤー) を使用しています。これは、これらが別のプロセスで行われ、ストリーミング方式ではなくワンショットで行われることを意味します。
librsync ライブラリを使用して必要なことを行うにはどうすればよいですか?
file - ソース フォルダーと宛先フォルダーの差分を 3 番目のフォルダーにコピーする
robocopy を使用して、2 つのフォルダーの違いのみを 3 番目のフォルダー (宛先フォルダーではなく) にコピーするにはどうすればよいですか?
したがって、「SourceFolder」に FileA 、 FileB 、 FileC が含まれ、「DestinationFolder」に FileA と FileB が含まれている場合、「DifferencesFolder」に FileC が含まれていることを確認したいと思います。
python - Python: 辞書のリスト間の減算
次のように、辞書を含む2つのリストがあります。
私はまた、すべてのユニット名とテスト名を別々のリストに持っています:
test2
各テスト値のデルタ、つまり ( - )の val を見つけるにはどうすればよいtest1
ので、最終的に次のようにデータを配置できます。
これまでのところ、私はこれらを持っています:
残念ながら、コードはKeyerror
. :(助けてください。ありがとう。
mysql - undo-redo を使用して SQL データベースを設計する方法は?
Undo-Redo を許可するように DB テーブルを設計する方法を見つけようとしています。
次の構造を持つタスクテーブルがあるとします。
ここで、数日にわたって複数のログインが行われ、複数の編集が行われたと仮定します。しかし、ユーザーはいずれかのバージョンに戻りたいと考えています。
- 変更を追跡する別のテーブルを用意しますか?それとも、タスクテーブル内に変更を保持しようとしますか(より適切な用語がないため、「ゴースト」行)。
- すべての列を追跡しますか、それとも毎回変更された列だけを追跡しますか?
問題があれば、MySQL を使用しています。また、問題があれば、履歴 (ala Photoshop) を表示して、ユーザーが任意のバージョンに切り替えられるようにしたいと考えています。
おまけの質問:memo
変更時にセル全体を保存しますか、それともデルタのみを保存しようとしますか? 私が尋ねる理由は、memo
セルが大きくなる可能性があり、リビジョンごとに 1 つの単語または文字のみが変更される可能性があるためです。確かに、デルタを保存するには解析が必要ですが、元に戻す操作がそれほど頻繁に行われないと予想される場合は、処理時間よりもスペースを節約する方がよいのではないでしょうか?
ご協力ありがとうございました。
node.js - nodejs大きな出力テキストをテストする方法
プロジェクトでjsをjsにコンパイルしています。
私はfilename.jsを書き、filename.out.jsにコンパイルし、filename.out.jsを手動でチェックしました。次にコンパイラを変更するときに、出力が変更されていないことを願っています。変更された場合は差分を表示します。
毎回 AssertionError と言われましたが、そうであってはならず、違いを与えることはできません。
javascript - バブリングスクロール/マウスホイールイベント
スクロールパネルの上に絶対位置のキャンバス要素があるようにアプリ/ウェブサイトをセットアップしました。スクロールパネルがスクロールするときに、キャンバスにオフセットを適用して、画像がスクロールしているように見せます巨大なキャンバス要素のオーバーヘッドのない巨大なキャンバス)。問題は、マウスがキャンバス要素の上にあるときに、スクロール イベントがバブリングしないため、スクロール ホイールが機能しないことです。ただし、この場合、スクロールバーを機能させるにはバブリングが必要です。
私はこれにGWTを使用しているので、2つを混在させるのはちょっと難しいので、jQueryソリューションに依存しないことをお勧めします(純粋なjavascriptソリューションは問題ありません)。マウスホイール イベントをキャプチャできますが、その主な問題は、スクロール (上下) とホイールの傾斜 (左右) を区別していないように見えることです。eventGetShiftKey()、eventGetButton()、eventGetType() などを試しましたが、これらのメソッドはすべて、スクロールとチルトに対してまったく同じ結果を返します (左に傾ける = 上にスクロール、右に傾ける = 下にスクロール)。
これを処理する最良の方法は、実際のイベントをスクロールパネルにバブルすることです (ちなみに、絶対位置のキャンバスを含む親 div も含まれています) が、それが可能かどうかはわかりません。
c# - 変更通知を送信するために利用可能なフレームワーク/ツール?
オブジェクトのプロパティ値が変更されたときに(オブジェクトを比較することで)識別し(ユーザーは「監視」するプロパティを指定できます)、イベントを発生させたり通知を送信したりするフレームワークはありますか?
例:アプリはPersonクラスをデータベースに保存し、コピーをメモリに保持します。アプリはデータベースから個人データを取得して、メモリ内のコピーを定期的に更新します。他のアプリ/プロセスは、データベース内の個人データを更新します。人物オブジェクトのムードプロパティ(文字列のリストコレクション:Upbeat、tiredなど)が変更されたときにイベント/通知を発生させたい。
私はこれをコーディングする方法を知っていますが、これを行う何かがそこにあるように感じます。私が考えることができるのは、次の2つだけです。
通知をキャッシュしますが、通知するプロパティ/値を指定できるものはありません。これには、分散キャッシュサーバーも必要です。
SQLクエリ通知-私はこれを調べています。