問題タブ [canonicalization]
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.
java - ESAPI は不正な URL を正規化します
ユーザーからの URL を受け入れるアプリケーションがあります。このデータには検証が必要であり、この目的のために ESAPI を使用しています。ただし、アンパサンドを含む URL には苦労しています。
この問題は、検証前に ESAPI がデータを正規化するときに発生します。たとえば、URL の &pid=123 は πd=123 になります。π はホワイトリストに登録されていないため、検証は失敗します。
私はそれをエンコードしようとしましたが、ESAPI はそれよりも賢く、正規化を行って二重エンコードと混合エンコードを回避します。私はここで少し困惑しており、どうすればよいかわかりません。
php - PHPで存在しないファイルの正規化されたパス(リアルパス)を取得するには?
script.php
いろいろ試してみましょう
くそっ!realpath
ファイルが存在しないため、false が返されます。
私が見たいの../nonexistent.txt
は
PHPで相対パスの正規化されたパスを取得するにはどうすればよいですか?
注:シンボリック リンク パスの解決に関する質問をいくつか見ました。これらの質問への回答は、私の質問には当てはまりません。
amazon-web-services - AWS Canonical Request ヘッダー リストのより具体的なルールは?
ここにあるAWS のドキュメントには、多少紛らわしい、不完全な、または矛盾する情報が含まれているようです。それは次のように述べています
CanonicalHeaders は、リクエスト ヘッダーとその値のリストです。
これは、すべてのリクエスト ヘッダーを正規のリクエストに入れることを示唆しています。ただし、後で、彼らは述べています
CanonicalHeaders リストには、次のものが含まれている必要があります。
HTTP ホスト ヘッダー
Content-Type ヘッダーが要求に存在する場合は、CanonicalHeaders リストに追加する必要があります。
リクエストに含める予定の x-amz-* ヘッダーも追加する必要があります。たとえば、一時的なセキュリティ認証情報を使用している場合は、リクエストに x-amz-security-token を含めます。このヘッダーを CanonicalHeaders のリストに追加する必要があります。
OK、Content-Type および x-amz ヘッダーに関するビットは、実際にはすべてのヘッダーを使用しないことを示唆しています。したがって、おそらく、ヘッダー、ヘッダー、および任意のヘッダーのみを取得する必要があります。しかし、以下ではリクエストの例を示しているため、さらに混乱します。Host
Content-Type
x-amz-*
そして、それから作成された正規リクエストの例を次に示します。
Content-Type
しかし、これは以前の両方の解釈と矛盾しています: もし,Host
とx-amz-*
ヘッダーしかないとしたら、range
ヘッダーはリストで何をしているのでしょうか? そして、すべてのヘッダーを取得することになっているのに、なぜヘッダーがリストにないのでしょうか?Date
少なくとも最小限のヘッダーが含まれている限り、正規のリクエストに入れるヘッダーのリストは任意ですか? 正確には、正規のリクエスト ヘッダーを作成するための決定的なルール セットは何ですか?
java - BigDecimal の正規表現
BigDecimal
任意の値を含むJava を正規の形式に縮小して、メソッドBigDecimal
を使用して同じ数を表す 2 つの値が等しくなるようにする最も簡単な方法は何equals()
ですか?
次のようなコードを使用して、任意の文字列から数値を解析しています。
( string1
, string2
) は任意であるため、たとえば ( "1"
, "1.0000"
) または ( "-32.5"
, "1981"
)...のようになります。
私が探しているのは、上記のアサーションが正規化するメソッドの最も単純な (最短/クリーンなコード) 実装です。
成功します...:
graph - グラフの集合からの同型の棄却
同型を削除したい 15M (Million) DAG (有向非巡回グラフ - 実際には有向ハイパーキューブ) のコレクションがあります。これの一般的なアルゴリズムは何ですか? 各グラフはかなり小さく、N が 3 から 6 (今のところ) である次元 N のハイバーキューブであり、N=6 の場合にそれぞれ 64 ノードのグラフになります。
networkx と python を使用して、このように実装しました。これは、300k (千) のような小さなセットで問題なく機能します (数日で実行されます)。
それを行うより良い方法の 1 つは、各グラフを正規の順序に変換し、コレクションを並べ替えてから、重複を削除することです。これは、バイナリ is_isomophic() テストで 15M グラフのそれぞれをチェックすることをバイパスします。上記の実装は O(N!N) (同形時間を考慮していない) のようなものであると思いますが、すべてを標準的な順序に変換してソートする必要があります。変換のための O(N) + 検索のための O(log(N)N) + 重複の除去のための O(N)。O(N!N) >> O(log(N)N)
Canonical グラフのラベル付けに関するこの論文を見つけましたが、疑似コードではなく数式で非常に簡潔に説明されています。
tldr:バイナリ同形チェックでチェックするグラフがありえないほど大量にあります。これが行われる一般的な方法は、正規の順序付けによるものだと思います。パッケージ化されたアルゴリズム、または公開されている簡単に実装できるアルゴリズム (つまり、疑似コードを含む) はありますか?
llvm - LLVM indvars パス
私は-indvars
LLVMでパスを使用しています。可能であれば、ループカウンターを0から開始させるということです。単純なループに使用しましたが、ループカウントを0から開始しません。なぜそうなのですか?
ループは
google-api - Google セーフ ブラウジング API URL エンコーディング (正規化)
私のアプリケーションでは、ユーザーが入力した URL を Google に送信してマルウェアをチェックしています。
「マルウェアが見つかりました」という反応をテストするために、URL http://malware.testing.google.test/testing/malwareを使用しました
驚いたことに、この URL はマルウェアとしてマークされていませんでした
いじってみると、末尾にスラッシュを入力すると、マルウェアとして検出されることがわかりました。
ドキュメントには、URLを正規化する必要があると書かれています。
この要件の実装を知っている人はいますか? (できればC#で)
random - GUID に正規の形式が必要なのはなぜですか?
ある勤勉な日、通常の .NET の方法で生成したGUIDの 3 番目のブロックの先頭にGuid.NewGuid()
同じ番号があることに気付きました。4
1秒間に1回、10個ほど画面に表示されていました。5 番目の GUID の直後にあるこのパターンに注目しました。最後に、最後のものには同じ 4 つのビットがあり、私は幸運な人だと判断しました。私は家に帰って、私のような特別な人のために全世界が開かれていると感じました. 翌週、私は新しい仕事を見つけ、部屋を掃除し、両親に電話をかけました。
しかし、今日また同じパターンに直面しました。千回。そして、私はもう選ばれし者を感じません。
私はそれをグーグルで検索しましたが、今ではUUIDversion
と、4つの予約ビットと2つの予約ビットを持つ標準フォーマットについて知っていvariant
ます。
実験するスニペットを次に示します。
しかし、まだ理解できないことが 1 つあります (生きていく方法以外は)。なぜこれらの予約ビットが必要なのですか? それがどのように害を及ぼす可能性があるかはわかります-内部実装の詳細を公開し、衝突が増え(まだ心配する必要はありませんが、いつか...)、自殺が増えます-しかし、何の利益も見られません. 何か見つけるのを手伝ってくれませんか?