标签: canonicalization

Windows:如何将文件规范化为特殊文件夹?

我想为用户保留一些文件名(例如最近的文件).

我们使用六个示例文件:

  • c:\Documents & Settings\Ian\My Documents\Budget.xls
  • c:\Documents & Settings\Ian\My Documents\My Pictures\Daughter's Winning Goal.jpg
  • c:\Documents & Settings\Ian\Application Data\uTorrent
  • c:\Documents & Settings\All Users\Application Data\Consonto\SpellcheckDictionary.dat
  • c:\Develop\readme.txt
  • c:\Program Files\Adobe\Reader\WhatsNew.txt

我现在正在硬编码特殊文件夹的路径.如果用户重定向其文件夹,漫游到另一台计算机或升级其操作系统,则路径将被破坏:

我想成为一名优秀的开发人员,并将这些硬编码的绝对路径转换为相应的特殊文件夹中的相对路径:

  • %CSIDL_Personal%\Budget.xls
  • %CSIDL_MyPictures%\Daughter's Winning Goal.jpg
  • %CSIDL_AppData%\uTorrent
  • %CSIDL_Common_AppData%\Consonto\SpellcheckDictionary.dat
  • c:\Develop\readme.txt
  • %CSIDL_Program_Files%\Adobe\Reader\WhatsNew.txt

困难在于同一文件可以有多个表示,例如:

  • c:\Documents & Settings\Ian\My Documents\My Pictures\Daughter's Winning Goal.jpg
  • %CSIDL_Profile%\My Documents\My Pictures\Daughter's Winning Goal.jpg
  • %CSIDL_Personal%\My Pictures\Daughter's Winning Goal.jpg
  • %CSIDL_MyPictures%\Daughter's Winning Goal.jpg

另请注意,在Windows XP中,我的图片存储 My Documents:

%CSIDL_Profile%\My Documents
%CSIDL_Profile%\My Documents\My Pictures
Run Code Online (Sandbox Code Playgroud)

但在Vista/7上它们是分开的:

%CSIDL_Profile%\Documents
%CSIDL_Profile%\Pictures
Run Code Online (Sandbox Code Playgroud)

注意:我意识到语法 %CSIDL_xxx%\filename.ext无效; …

windows roaming special-folders roaming-profile canonicalization

6
推荐指数
1
解决办法
729
查看次数

规范标签和 UTF8

以下 2 个规范链接标签是否会被蜘蛛视为指向相同的 URL?

<link rel="canonical" href="http://www.example.com/&#375;" />-编码
<link rel="canonical" href="http://www.example.com/?" />-未编码

html seo character-encoding canonicalization

6
推荐指数
1
解决办法
1084
查看次数

适用于SAML的XML规范化

我遇到了验证SAML 2.0 Assertion XML签名的问题.我正在使用simpleSAMLphp项目中的SAML2库,而后者又使用PHP xmlseclibs库来签名XML并验证签名.

我收到了我的合作伙伴的以下断言:

<saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" Version="2.0" ID="_c43265fe-8cd5-410f-b63d-dac9f266d4c9" IssueInstant="2015-01-23T17:46:28.456Z"><saml:Issuer>uat.test.com/saml2.0</saml:Issuer><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><Reference URI="#_c43265fe-8cd5-410f-b63d-dac9f266d4c9"><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"><InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default saml ds xs xsi"/></Transform></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>mFKEIdw+cEielORqscbHuAJhI58=</DigestValue></Reference></SignedInfo><SignatureValue>kEZHloxYJVqDg8oxLNpl+sbJYhv9r7yYU5yQi71gCNm/Cdtj9/P2LR5cnopKZZu+7j3PVimeZoir6RTTrdVKTLkp+PmvOmTlLH/LVtntQZ68TaUxUd3BvtQiKuJ8KFwWPmQ+W3RIKv4ySAsy6PUiWPcr8eIYpIiUA6rxCuSEpdA=</SignatureValue><KeyInfo><X509Data><X509Certificate>MIICczCCAdygAwIBAgIEdWfFczANBgkqhkiG9w0BAQUFADB0MQswCQYDVQQIEwJNQTEQMA4GA1UEBxMHTm9yd29vZDEPMA0GA1UEChMGTWVyY2VyMRswGQYDVQQLExJNZXJjZXIgSFIgU2VydmljZXMxJTAjBgNVBAMTHE1lcmNlciBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDcwNjI5MDI1NTQxWhcNMTcwNzI5MDQwMDAwWjB2MQswCQYDVQQIEwJNQTEQMA4GA1UEBxMHTm9yd29vZDEPMA0GA1UEChMGTWVyY2VyMRswGQYDVQQLExJNZXJjZXIgSFIgU2VydmljZXMxJzAlBgNVBAMTHk1lcmNlciBIdW1hbiBSZXNvdXJjZSBTZXJ2aWNlczCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAm9KNx7UmRbWwJ0gmIV9sZzMDH4uz+o6ZmOxVRLvrO0Yzc9Qsc+7f+jIEGsVpbeaj5zx+4c8g46QqGam/Ap+4peewduVAN7GwK8UrmveASQH1Y/byTVGhyndfEtHfauresYpNDbgCn/iq/cXNapuFaTB4U0MPtz8Bqds1871hNasCAwEAAaMQMA4wDAYDVR0PBAUDAwf/gDANBgkqhkiG9w0BAQUFAAOBgQBR5wV43k1XcIM7z24SBvpEDWgEawXZ3TjTI9/54v/ZAdzXAiYfLKVV+hiyum+QP9jezDUH+Wz2bqzjlxOSU7HvUn4MwN+88a1hvSXpPxsp7y4d7juVt66aip/9NuSWbNqUPdhgK/KvMHrZpksCoxUJG2+Q1Jz7aNiBQvONRRPdTg==</X509Certificate></X509Data></KeyInfo></Signature><saml:Subject><saml:NameID>000786320</saml:NameID><saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"><saml:SubjectConfirmationData NotOnOrAfter="2015-01-23T17:51:28.471Z" Recipient="https://test.com/sso"/></saml:SubjectConfirmation></saml:Subject><saml:Conditions NotBefore="2015-01-23T17:41:28.456Z" NotOnOrAfter="2015-01-23T17:51:28.456Z"><saml:AudienceRestriction><saml:Audience>test.com:saml2.0</saml:Audience></saml:AudienceRestriction></saml:Conditions><saml:AuthnStatement AuthnInstant="2015-01-23T17:46:28.456Z" SessionIndex="SI-8bd89651-62da-4b7d-9a54-04eb2eb90784"><saml:AuthnContext><saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</saml:AuthnContextClassRef></saml:AuthnContext></saml:AuthnStatement><saml:AttributeStatement><saml:Attribute Name="email" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" FriendlyName="email"><saml:AttributeValue>invalidemail@invalid.com</saml:AttributeValue></saml:Attribute><saml:Attribute Name="firstName" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" FriendlyName="firstName"><saml:AttributeValue>Diane</saml:AttributeValue></saml:Attribute><saml:Attribute Name="lastname" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" FriendlyName="lastname"><saml:AttributeValue>Test</saml:AttributeValue></saml:Attribute><saml:Attribute Name="zipCode" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" FriendlyName="zipCode"><saml:AttributeValue>02062</saml:AttributeValue></saml:Attribute><saml:Attribute Name="businessUnit" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" FriendlyName="businessUnit"><saml:AttributeValue>78945</saml:AttributeValue></saml:Attribute><saml:Attribute Name="employeeID" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" FriendlyName="employeeID"><saml:AttributeValue>000786320</saml:AttributeValue></saml:Attribute></saml:AttributeStatement></saml:Assertion>
Run Code Online (Sandbox Code Playgroud)

签名元素请求独占的C14N规范化.该xmlseclibs库库canonicalizes此如下:

<saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ID="_c43265fe-8cd5-410f-b63d-dac9f266d4c9" IssueInstant="2015-01-23T17:46:28.456Z" Version="2.0"><saml:Issuer>uat.test.com/saml2.0</saml:Issuer><saml:Subject><saml:NameID>000786320</saml:NameID><saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"><saml:SubjectConfirmationData NotOnOrAfter="2015-01-23T17:51:28.471Z" Recipient="https://test.com/sso"></saml:SubjectConfirmationData></saml:SubjectConfirmation></saml:Subject><saml:Conditions NotBefore="2015-01-23T17:41:28.456Z" NotOnOrAfter="2015-01-23T17:51:28.456Z"><saml:AudienceRestriction><saml:Audience>test.com:saml2.0</saml:Audience></saml:AudienceRestriction></saml:Conditions><saml:AuthnStatement AuthnInstant="2015-01-23T17:46:28.456Z" SessionIndex="SI-8bd89651-62da-4b7d-9a54-04eb2eb90784"><saml:AuthnContext><saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</saml:AuthnContextClassRef></saml:AuthnContext></saml:AuthnStatement><saml:AttributeStatement><saml:Attribute FriendlyName="email" Name="email" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"><saml:AttributeValue>invalidemail@invalid.com</saml:AttributeValue></saml:Attribute><saml:Attribute FriendlyName="firstName" Name="firstName" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"><saml:AttributeValue>Diane</saml:AttributeValue></saml:Attribute><saml:Attribute FriendlyName="lastname" Name="lastname" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"><saml:AttributeValue>Test</saml:AttributeValue></saml:Attribute><saml:Attribute FriendlyName="zipCode" Name="zipCode" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"><saml:AttributeValue>02062</saml:AttributeValue></saml:Attribute><saml:Attribute FriendlyName="businessUnit" Name="businessUnit" …
Run Code Online (Sandbox Code Playgroud)

php xml canonicalization xmlseclibs simplesamlphp

6
推荐指数
1
解决办法
1189
查看次数

了解 Nauty 算法

我正在尝试理解 Nauty 算法。遵循这篇文章:http://www.math.unl.edu/~aradcliffe1/Papers/Canonical.pdf
在该算法中,根据顶点的度数以及一个组与其他组相对应的相对度数(组动作)来区分顶点。通过这种方式,我们得到的组为:

1379|2468|5
完成此步骤后,将按照本文第 7 页中所述完成拆分。本文中的一张图片是: 搜索树

我无法理解分裂是如何进行的, 1379|2468|5为什么会分到不同的组,然后又1|9|37|68|24|5 分到另一个组。1937

algorithm graph-theory isomorphism canonicalization

6
推荐指数
1
解决办法
2597
查看次数

如何在C#中使用XmlDsigC14NTransform类

我试图通过使用System.Security.Cryptography.Xml.XMLDsigC14nTransformc#.net Framework 2.0类来规范化xml节点。

该实例需要三种不同的输入类型,即NodeList,Stream和XMLDocument。我尝试使用所有这些输入类型进行转换,但是得到了不同的结果。我真正想做的是规范化单个节点,但是正如您在输出文件中看到的那样,输出不包含任何内部xml。

非常感谢有关规范XML节点的正确方法的任何建议。最好,

string path = @"D:\Test\xml imza\sign.xml";
XmlDocument xDoc = new XmlDocument();
xDoc.PreserveWhitespace = true;
using (FileStream fs = new FileStream(path, FileMode.Open))
{
    xDoc.Load(fs);
}

// canon node list
XmlNodeList nodeList = xDoc.SelectNodes("//Child1");

XmlDsigC14NTransform transform = new XmlDsigC14NTransform();
transform.LoadInput(nodeList);
MemoryStream ms = (MemoryStream)transform.GetOutput(typeof(Stream));

File.WriteAllBytes(@"D:\Test\xml imza\child1.xml", ms.ToArray());

// canon XMLDocument
transform = new XmlDsigC14NTransform();
transform.LoadInput(xDoc);
ms = (MemoryStream)transform.GetOutput(typeof(Stream));

File.WriteAllBytes(@"D:\Test\xml imza\doc.xml", ms.ToArray());

// Document to Stream
ms = new MemoryStream();
XmlWriter xw = XmlWriter.Create(ms);
xDoc.WriteTo(xw);
xw.Flush();
ms.Position …
Run Code Online (Sandbox Code Playgroud)

c# xml canonicalization xml-signature

5
推荐指数
1
解决办法
6847
查看次数

将带有 FQDN(TLD 后的点)的 URL 重定向为与 PQDN 等效的 URL

许多网站都可以使用FQDN进行访问(即在 TLD 后添加一个点):

\n\n\n\n

有些网站无法以这种方式访问​​\xe2\x80\x99,但我现在可以\xe2\x80\x99t 找到示例。\xc2\xb9 \xc2\xb2

\n\n

是否可以在.htaccess文件内将所有带点后缀的变体重定向到不带点后缀的变体?

\n\n

理想情况下使用“通配符”规则,这样您就不必显式列出域(以便在不同的站点/域上使用它而无需编辑)。

\n\n

重定向示例:

\n\n
    \n
  • http://example.com./\xe2\x86\x92
    \nhttp://example.com/
  • \n
  • http://example.com./foo\xe2\x86\x92
    \nhttp://example.com/foo
  • \n
  • http://sub.example.com./bar.html\xe2\x86\x92
    \nhttp://sub.example.com/bar.html
  • \n
\n\n
\n\n

\xc2\xb9 stackoverflow.com,当通过 HTTP 访问时,通常会给出 HTTP 错误 400:“错误请求 - 无效主机名”。

\n\n

\xc2\xb2 维基百科,当通过 HTTPS 访问时(当它仍然是可选的时),曾经给出证书错误:“证书仅对以下名称有效:” *.wikipedia.orgwikipedia.org(错误代码:ssl_error_bad_cert_domain)

\n

.htaccess redirect url-rewriting fqdn canonicalization

5
推荐指数
1
解决办法
1116
查看次数

用户名的规范化

获得幂等用户名的规范表示的最佳方法是什么?

我想避免遇到与Spotify相同的问题:http://labs.spotify.com/2013/06/18/creative-usernames/

我正在寻找一个很好的库来用Python做到这一点.我宁愿不做Spotify最终做的事情(运行规范化两次以测试它是否是幂等的),并且将Twisted导入我的项目有点过分,是否有一个独立的库?

在用户名方面,使用电子邮件地址是首选吗?主要网站/公司如何处理这个问题?

python username canonicalization

5
推荐指数
1
解决办法
306
查看次数

(独占)XML 规范化是否会忽略标签外部的空格(缩进)?

当 XML 必须根据http://www.w3.org/TR/xml-exc-c14n/进行规范化时,以下 XML 片段是否应该变得相等?(注意,该.字符代表空格' '

<a>
.<b>
..<c>data</c>
.</b>
</a>
Run Code Online (Sandbox Code Playgroud)

<a>
...<b>
......<c>data</c>
...</b>
</a>
Run Code Online (Sandbox Code Playgroud)

换句话说:独占规范化是否会忽略空格?(或忽略缩进大小)

或者,缩进应该保持不变吗?第一个怎么样?<b>(从秒的例子)的规范化版本会变成

...<b>
......<c>data</c>
...</b>
Run Code Online (Sandbox Code Playgroud)

或者

<b>
......<c>data</c>
...</b>
Run Code Online (Sandbox Code Playgroud)

或者

<b>
...<c>data</c>
</b>
Run Code Online (Sandbox Code Playgroud)

xml canonicalization

5
推荐指数
1
解决办法
1185
查看次数

可以用C++编译器规范化Unicode标识符吗?

在C++中,我们可以在标识符中使用各种Unicode字符.例如,您可以命名变量résumé.

那些带有重音的es可以用不同的方式表示:作为预组合字符或作为e具有组合重音字符的普通字符.许多应用程序规范化这些字符串,以便看似相同的字符串实际匹配.

看看C++标准,我没有看到任何需要编译器规范化标识符的东西,因此变量résumé可能与变量不同re?sume?.(在我的测试中,似乎并不像MSVC或clang标准化标识符.)

是否有任何禁止编译器选择正常形式的东西?如果不是,在翻译的哪个阶段应该进行规范化?

[要明确:我在谈论标识符,而不是字符串文字.]

c++ unicode language-lawyer canonicalization unicode-normalization

5
推荐指数
1
解决办法
171
查看次数

“规范化”和“规范化”数据之间是否有明确定义的区别?

我理解规范化规范化意味着删除数据表示中任何无意义或模棱两可的部分,将有效相同的数据转化为实际相同的数据。

例如,如果您想获取某些输入数据的哈希值,并且其他人对规范相同的数据进行哈希处理获得相同的哈希值很重要,那么您不希望一个文件使用制表符缩进而另一个使用空格(没有其他区别) ) 导致两个截然不同的哈希值。

在 JSON 的情况下:

  • 对象属性将按标准顺序放置(可能按字母顺序)
  • 不必要的空白将被剥离
  • 缩进标准化或剥离
  • 数据甚至可以用全新的语法重新建模,以强制执行上述

我的定义是否正确,并且这些术语可以互换?或者输入数据的规范化规范化之间是否存在明确定义的特定区别?

normalization canonicalization

5
推荐指数
1
解决办法
864
查看次数