问题标签 [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.

0 投票
2 回答
8593 浏览

java - ESAPI 规范化畸形 url

我们有一个接受用户 URL 的应用程序。该数据需要验证,我们为此目的使用 ESAPI。但是,我们正在努力处理包含 & 符号的 URL。

当 ESAPI 在验证之前规范化数据时,就会出现问题。URL 中的 &pid=123 例如变成 πd=123。由于 π 未列入白名单,因此验证失败。

我尝试过对其进行编码,但 ESAPI 比这更智能,并且会进行规范化以避免双重编码和混合编码。我在这里有点难过,我不知道如何继续。

0 投票
2 回答
3671 浏览

php - 如何在 PHP 中获取不存在文件的规范化路径(真实路径)?

脚本.php

让我们尝试一些事情

该死!realpath正在返回 false,因为该文件不存在。

我想看到的../nonexistent.txt

如何获取 PHP 中任何相对路径的规范化路径?

注意:我看到了一些关于解析符号链接路径的问题。这些问题的答案不适用于我的问题。

0 投票
2 回答
1656 浏览

database - 如何找到多个最小/规范封面或重新排列它们以找到新封面

我有一个关系和函数依赖关系如下:

现在我将使用这个视频计算最小/规范覆盖。


因此,首先我检查我的 FD 中是否有单例右侧。不,我没有,所以我必须把它们分开。即A -> B C分为A -> BA -> C。同样对于A C -> D E

所以现在我有...


其次,我检查是否有任何 FD 具有超过 1 个 LHS 属性。如果是这样,我看看是否可以通过检查它们的闭包是否包含另一个元素来消除它们中的任何一个。如果是这样,那么我们不需要其他元素。

所以对于B C -> D, B closureisBC closureis C。没有一个闭包包含 other 属性,所以我们不能消除B C -> D

所以现在我们移动到A C -> D. A closure就是ABCDE,我们可以瞬间看到那个A的闭包CC无关属性也是如此 ,并且可以删除,因此我们的新 FD 集是...

所以现在我们转到最后一个:A C -> E,同样,A的闭包是ABCDE,它包含C所以我们可以C从 FD 中消除 。所以我们的 FD 集现在是:


最后,我们检查是否有任何冗余 FD。我们通过遍历每个 FD 来做到这一点,将其覆盖,并查看其 LHS 的关闭是否包含其 RHS。

因此A -> B,我们将其掩盖并计算A closure,即ACDE不包含B因此我们无法消除A -> B。我们对所有 FD 执行此操作,我们最终看到我们只能消除A -> D,因为当我们掩盖A -> D并计算A closure它 containsD时,我们不需要A -> D


所以现在我们的新 FD 集是:

现在我的问题是:

我的最后一组 FD 是正确的最小/规范封面吗?能不能换成别的写法?此外,在视频中,它说对于给定的一组功能依赖关系可以存在多个规范封面。我怎样才能发现这些?

感谢您的时间。

0 投票
1 回答
1452 浏览

amazon-web-services - AWS 规范请求标头列表的更具体规则?

此处的 AWS 文档似乎有些令人困惑、不完整或相互矛盾的信息。它指出

CanonicalHeaders 是请求标头及其值的列表。

这表明我们将所有请求标头放在规范请求中。然而,后来他们表示

CanonicalHeaders 列表必须包括以下内容:

HTTP 主机标头

如果请求中存在 Content-Type 标头,则必须将其添加到 CanonicalHeaders 列表中。

还必须添加您计划包含在请求中的任何 x-amz-* 标头。例如,如果您使用临时安全凭证,您将在请求中包含 x-amz-security-token。您必须将此标头添加到 CanonicalHeaders 列表中。

好的,关于 Content-Type 和 x-amz 标头的内容表明我们实际上并未采用所有标头,因为否则它们不需要声明必须包含它们。那么也许,我们需要获取Host标题、Content-Type标题和任何x-amz-*标题。但是在下面,它变得更加混乱,因为这是一个示例请求:

这是从它创建的示例规范请求:

但这与之前的两种解释都不一致:如果我们应该只有Content-Type,Hostx-amz-*headers,那么rangeheader 在列表中做什么?如果我们只是应该获取所有标题,那么为什么列表中没有Date标题?

放入规范请求的标头列表是否是任意的,只要它至少包含最少的标头?确切地说,构建规范请求标头的最终规则集是什么?

0 投票
1 回答
260 浏览

asp.net-mvc - ASP.NET MVC 3 使用 Canonicalize 包和 IIS SEO Toolkit

我有一个 ASP.NET MVC 3 应用程序,在其上运行 IIS SEO 工具包并得到“该页面包含多种规范格式”。由带有或不带有斜杠的站点可访问引起的错误。

在搜索建议后,我找到了 Canonicalize NuGet 包 https://github.com/schourode/canonicalize

并在我的 RouteConfig.RegisterRoutes 方法中按如下方式使用它:

然后 SEO 工具包报告“URL 使用不同的大小写链接”。所以我改成代码是

SEO 工具包现在报告“该页面包含不必要的重定向”。对于我所有的链接,因为任何使用大写的 URL 都将被重定向到小写 URL。

谁能建议如何最好地处理这个问题?我真的很想改善我的网络应用程序的 SEO。

0 投票
2 回答
478 浏览

java - BigDecimal 的规范表示

BigDecimal将包含任意值的 Java 简化为规范形式的最简单方法是什么,以便BigDecimal表示相同数字的两个 ' 将使用该equals()方法比较相等?

我正在使用如下代码从任意字符串中解析我的数字:

由于 ( string1, string2) 是任意的,它们可以是 ( "1", "1.0000") 或 ( "-32.5", "1981")...

我正在寻找的是上述断言的方法规范化的最简单(最短/最干净的代码)实现

将会成功...:

0 投票
6 回答
2455 浏览

graph - 从图的集合中拒绝同构

我有 15M(百万)个 DAG(有向无环图 - 实际上是有向超立方体)的集合,我想从中删除同构。常见的算法是什么?每个图都相当小,一个维度为 N 的混合立方体,其中 N 为 3 到 6(目前),导致在 N=6 情况下每个节点有 64 个节点的图。

使用networkx和python,我像这样实现了它,它适用于像300k(千)这样的小集合很好(在几天内运行)。

一种更好的方法是将每个图转换为其规范排序,对集合进行排序,然后删除重复项。这绕过了检查二进制 is_isomophic() 测试中的每一个 15M 图,我相信上面的实现类似于 O(N!N) (不考虑同构时间),而干净地将所有转换为规范排序和排序应该需要O(N) 用于转换 + O(log(N)N) 用于搜索 + O(N) 用于删除重复项。O(N!N) >> O(log(N)N)

我发现这篇关于规范图标记的论文,但它用数学方程非常简洁地描述,没有伪代码:“McKay 的规范图标记算法” - http://www.math.unl.edu/~aradcliffe1/Papers/Canonical.pdf

tldr:我有大量的图要通过二元同构检查来检查。我相信这样做的常用方法是通过规范排序。是否存在任何打包的算法或发布的直接实现算法(即有伪代码)?

0 投票
1 回答
524 浏览

llvm - LLVM indvars 传递

-indvars在 LLVM 中使用 pass。它说这是使循环计数器从可能的0开始。我将它用于一个简单的循环,但它没有使循环计数从 0 开始。知道为什么会这样吗?

循环是

0 投票
2 回答
618 浏览

google-api - google安全浏览api url编码(规范化)

在我的应用程序中,我通过将用户输入的 URL 发送到谷歌来检查它们是否存在恶意软件。

为了测试“发现恶意软件”的反应,我使用了网址http://malware.testing.google.test/testing/malware

令我惊讶的是,这个网址没有被标记为恶意软件

在摆弄时,我发现当我输入一个斜杠时,它确实被认为是恶意软件。

文档中,它说 URL 需要被规范化。

你们中有人知道这个要求的实现吗?(最好在 C# 中)

0 投票
1 回答
423 浏览

random - 为什么我们需要 GUID 的规范格式?

一个辛勤的工作日,我注意到我用通常的 .NET 方法生成的GUID在第三个块的开头Guid.NewGuid()具有相同的数字:4

大约一秒钟左右,屏幕上出现了十个。在第五个 GUID 之后,我一直关注这种模式。最后,最后一个里面有相同的四个位,我决定我是一个幸运的人。我回到家,觉得整个世界都为我这样一个非凡的人敞开了大门。下周我找到了一份新工作,打扫了我的房间并给我父母打了电话。

但今天我再次面临同样的模式。千倍。而且我再也感觉不到天选者了。

我用谷歌搜索了它,现在我知道了UUID和一种规范格式,其中 4 个保留位version用于variant.

这是一个要试验的片段:

但仍有一件事我不明白(除了如何继续生活)。为什么我们需要这些保留位?我看到了它会带来怎样的危害——暴露内部实现细节,更多的冲突(仍然没有什么可担心的,但总有一天......),更多的自杀——但我没有看到任何好处。你能帮我找到吗?

内部 GUID 生成算法