問題タブ [compare]

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.

0 投票する
6 に答える
2602 参照

c++ - 順序付け述語の連鎖 (std::sort など)

関数ポインター、関数オブジェクト (またはブースト ラムダ) を std::sort に渡して、並べ替えたいコンテナーの要素の厳密な弱い順序付けを定義できます。

ただし、場合によっては (これを何度か実行したことがあります)、「プリミティブな」比較を連鎖させたい場合があります。

些細な例として、連絡先データを表すオブジェクトのコレクションを並べ替える場合があります。場合によっては、次のように並べ替えたいことがあります。

別の時に また別の時..など

これで、ケースごとに追加の関数オブジェクトを作成できますが、これは DRY の原則に違反します。特に各比較がさほど重要でない場合はなおさらです。

比較関数の階層を記述できるはずです-低レベルのものは単一のプリミティブな比較(たとえば、名<名)を実行し、次に高レベルのものは低レベルのものを連続して呼び出します(おそらく&& (短絡評価を利用する) を使用して複合関数を生成します。

このアプローチの問題点は、std::sort がバイナリ述語を取ることです。述語は bool のみを返すことができます。したがって、それらを構成している場合、「false」が等しいかより大きいかを示すことはできません。低レベルの述語が 3 つの状態を持つ int を返すようにすることができますが、それらを std::sort で単独で使用するには、高レベルの述語でそれらをラップする必要があります。

全体として、これらは克服できない問題ではありません。必要以上に難しいように思えます-そして確かにヘルパーライブラリの実装が必要です.

したがって、ここで役立つ既存のライブラリ (特に std または boost ライブラリの場合) を知っている人はいますか?

[アップデート]

いくつかのコメントで述べたように、私は先に進み、これを管理するクラスの独自の実装を作成しました。それはかなり最小限であり、おそらく一般的にいくつかの問題があります。しかし、それに基づいて、興味のある人のために、クラスはここにあります:

http://pastebin.com/f52a85e4f

また、いくつかのヘルパー関数 (テンプレート引数を指定する必要を避けるため) は次のとおりです。

http://pastebin.com/fa03d66e

0 投票する
5 に答える
12917 参照

sql - MySQL 列挙型を比較できますか?

列挙があります:ENUM( 'alpha', 'beta', 'gamma', 'delta', 'omega' )

この列でテーブルを並べ替えると、上で定義した正しい順序でテーブルが取得されます。

ただし、これらのサブセット、たとえばデルタの前のすべてを選択する方法が見つかりません。を使用WHERE status < 'delta'すると、アルファとベータのみが返され、ガンマは返されません。MySQL は列挙インデックス比較ではなく、文字列比較を使用しているようです。

インデックス番号を使用することもできますWHERE status < 4が、これは少しコードの匂い (マジック ナンバー) であり、列挙型に新しい値を挿入すると壊れる可能性があります。

0 投票する
3 に答える
5341 参照

javascript - 正規表現は2つの数値を比較します

どうにか正規表現で 2 つの数値を比較できますか? 10-12 では正しいが、12-10 では正しくない正規表現が必要です。つまり、10 は 12 より小さい必要があります。Javascript で実行したいと考えています。

0 投票する
1 に答える
570 参照

.net - CompareTo を使用した .Net Version インスタンスの比較が期待どおりに機能しない

.Net の Version クラスは、予想どおり CompareTo インターフェイスを実装していません。4 つの数値を比較するのではなく、英数字で比較を処理しているようです。たぶんバグではなく、「機能」です。

以下で期待するように、比較(および標準の <、=、および > 演算子)が機能しない理由を誰でも明らかにできますか?

私は人々がこれに対して独自の手動の回避策を行ったことを知っています.

前もって感謝します

ライアン

更新:私は微妙にばかげたことをしていて、それらをIPアドレスと同じように扱っていました. 例えば; 1.1.3023.5364 は 1.1.5 より大きいが、1.1.3023.5364 は 1.1.5000 より小さい。

0 投票する
5 に答える
155457 参照

sql - In SQL how to compare date values?

Using MySQL syntax and having a table with a row like:

#xA;

Is there a way to do something like:

#xA;

I'm trying but not really getting it to work.

0 投票する
3 に答える
11484 参照

c - stdlib から qsort の比較関数を作成するには?

私は構造を持っています:

これらの構造の表:

私がやりたいことは、 andでソートtab_pktすることです:tab_pkt.alfatab_pkt.r

porowaj は比較関数ですが、どのように記述すればよいですか? これが私の「スケッチ」です。

0 投票する
8 に答える
4823 参照

windows - Windows バイナリを比較するためのツール?

私たちの QA チームは、ビルド間で実際に変更された EXE と DLL に基づいてテストを集中したいと考えています。すばらしい svn 変更レポートがありますが、ソース バイナリと変更されたバイナリの関係は必ずしも明らかではありません。比較しているビルドは常に完全にクリーンなビルドであるため、ファイル システムのタイムスタンプは使用できません。Windows (および Windows CE) の PE バイナリを比較するためのツールを探しています。これらのツールは、埋め込まれたタイムスタンプやその他の問題を無視します。信頼できる「実際に変更されたバイナリ」レポートを生成するためのツールまたはその他の方法に関する推奨事項はありますか? ありがとう。

明確化: これまでの回答に感謝しますが、ソースが変更されていなくても、ビルドするたびにすべてのファイルが異なるように見えるため、単純なバイト単位の比較やチェックサムの比較によってレポートを生成することはできません。コンパイラが挿入するタイムスタンプのためです。問題は、偽陽性をどのように無視するかです。逆アセンブルと比較のアイデアは、私たちが必要としているものに最も近いと思います...

答えた!Bindiff はまさに私が探していたものです。どうもありがとう。

0 投票する
2 に答える
212 参照

file - 順序を無視してファイルをマージ/比較するにはどうすればよいですか?

同じではない 2 つのプロパティ ファイルがあり、違いを見つける必要があります。2 番目のファイルはキーでソートされています。

それを助けることができるツールはありますか?私が見たところ、すべてのマージ ツールは順序を非常に気にかけています。

0 投票する
2 に答える
371 参照

java - Java での既存のデータ エントリの比較

キーを文字列に関連付ける HashMap があり、いくつかの文字列を互いに比較する必要があります。ただし、一部の文字列は HashMap にある場合とない場合があります。

例: 可能であれば相互に比較する予定の 4 つの文字列があるとしますが、HashMap にはそのうちの 3 つしかありません。存在する文字列を、存在しない文字列と比較しようとせずに、またネストされた if と else の束を実行せずに比較するにはどうすればよいですか?

編集: Alohci のソリューションは簡単かつ高速で、うまくいきました。

0 投票する
2 に答える
181 参照

mysql - MySQL DB の最適な更新方法

同様の問題の解決策を読みましたが、それらはすべてスクリプトと追加のツールを必要とするようです。私の問題がそれを避けるのに十分単純であることを願っています。

そのため、ユーザーは来週のデータの csv をアップロードします。問題なくDBに挿入されます。

しかし

1 時間後、彼は全員からフィードバックを受け取り、それに応じて更新を行う必要があります。彼は csv を更新し、それを DB にアップロードします。

現在、私が使用しているシステムは、その週のデータがすでに存在するかどうかを確認し、存在する場合は、DB からすべてのデータを取得し、スクリプトが違いを見つけて送信します。これにより、古いデータが削除され、新しいデータに置き換えられます。

明らかに、消去してデータを再入力する方がはるかに簡単ですが、特に変更が多い場合や大量のデータがある場合は、最善の方法ではありません。しかし、アラートを送信するためにどのような変更が行われたかを知る必要があります。しかし、トランザクション ログは必要ありません。アラートを送信する必要があるのは 1 回だけで、その後は古いデータは役に立たないからです。

そう!

新しいデータを既存のデータと比較し、変更/削除/追加された行のみを取得し、それらの変更を行うスマートな方法はありますか? 今のところ、更新はできるようですが、何が変わったのかについて何の反応も得られません...

ありがとう!

クイック編集:

現在使用中の外部キーはありません。これはすぐに変更されますが、外部キーはデータの影響を示すだけであり、変更する必要がないため、違いはありません。主キーに関する限り、これには少しジレンマがあります。

問題のデータは、全員の勤務スケジュールです。したがって、各シフトにキーがあると便利です (単純な出力を超えたこのスケジュールの特定のアプリケーションの場合)。しかし問題は、user1 が月曜日に遅刻したとしましょう。遅刻は別のテーブルに記録され、シフト キーを使用してシフトに関連付けられます。しかし、火曜日にすでに進行中の週に何らかの変更を加える必要がある場合、DB 内のすべてのエントリが既に発生していることを保証することが難しくなりすぎるのではないかと心配しています壊れる)プロセスで再キー化されます。残念ながら、現在の時間以降に発生したすべてのイベントを更新するだけでは簡単ではありません。これは、アップロードを行う人に作業が追加される (したがって、市場価値が低くなる) ためです。基本的、1 つのプログラムでスケジュールを作成し、それを CSV にエクスポートしてから、そのデータを必要とするすべての Web アプリケーションの Web ページにアップロードします。そのため、週全体をエクスポートしてアップロードするたびに同じルーチンを実行する方が、はるかに簡単です (関係者全員のストレスも少なくなります)。

したがって、私の最大の関心事は、アップロード スクリプトを両端でできるだけスマートにすることです。変更を見つけようとして肥大化することはありません。入力に関係なく変更を見つけることができ、変更されていないデータはキーが変更されるリスクはありません。

関連する質問は次のとおりです。

そしてもう一つ:

上記に対する具体的な回答よりも、この種のデータが通常どのように処理/アプローチされるかを知りたいと思っています。

再びありがとう。