我运行 debian stable (bullseye) 并使用官方 R 向后移植。看
https://cloud.r-project.org/bin/linux/debian/
我向 mu 存储库添加了一行
$ cat /etc/apt/sources.list | grep r-project
deb http://cloud.r-project.org/bin/linux/debian bullseye-cran40/
Run Code Online (Sandbox Code Playgroud)
直到今天一切都很好。现在,当我更新时,当我运行 sudo apt update 时,我收到有关 R 存储库签名的错误,请参阅
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://cloud.r-project.org/bin/linux/debian bullseye-cran40/ InRelease: The following signatures were invalid: EXPKEYSIG FCAE2A0E115C3D8A Johannes Ranke (Wissenschaftlicher Berater) <johannes.ranke@jrwb.de>
W: Failed to fetch http://cloud.r-project.org/bin/linux/debian/bullseye-cran40/InRelease The following signatures were invalid: EXPKEYSIG FCAE2A0E115C3D8A Johannes Ranke (Wissenschaftlicher …Run Code Online (Sandbox Code Playgroud) C++标准要求所有符合要求的实现支持以下两个签名main:
int main();int main(int, char*[]);如果是后一个签名,那么(顶层)const-ness的添加会破坏任何语言规则吗?
例如:
int main(const int argc, char** const argv);
根据我的理解,顶级const资格不会影响函数的签名哈希,因此就规范而言它应该是合法的.
还有,有没有人遇到过拒绝这种修改的实现?
尝试在此处遵循应用内购买的一些安全准则:http: //developer.android.com/guide/market/billing/billing_best_practices.html 我尝试在服务器而不是在服务器上进行签名验证app iteself.我理想情况下喜欢使用php openssl库,它看起来像以下代码应该工作:
$public_key_str = file_get_contents("./pubKey/out");
$public_key_str = trim($public_key_str);
$key = openssl_get_publickey($public_key_str);
if(!$key)
{
echo 'Can\'t get public key';
}
$signature = base64_decode( $signature );
$ok = openssl_verify($data, $signature, $key);
var_dump($ok);
Run Code Online (Sandbox Code Playgroud)
我知道我的签名和公钥都是正确的,但$ ok是0!签名我尝试使用来自应用程序购买包的字符串.猜猜我的钥匙是正确的,问题是签名.当我尝试使用以下命令从base64解码它时:openssl enc -base64 -d -in signature -A> signature.bin,我的字符串与base64_decode()相同.有任何想法吗 ?
UPD:我也不知道我应该在openssl_verify()中传递什么作为$ data?我的数据如下:
$data = '{"nonce":5550262978898439313,"orders":[{"notificationId":"android.test.purchased","orderId":"transactionId.android.test.purchased","packageName":"com.ads.testbilling","productId":"android.test.purchased","purchaseTime":1308224646237,"purchaseState":0}]}';
Run Code Online (Sandbox Code Playgroud) Python中的短语"keyword only args"有点含糊不清 - 通常我认为它是指传递给**kwarg参数的args .但是,该inspect模块似乎区分了**kwarg一个名为"仅关键字参数"的东西.
来自文档:
inspect.getfullargspec(FUNC)
获取Python函数参数的名称和默认值.返回一个命名元组:
FullArgSpec(args, varargs, varkw, defaults, kwonlyargs, kwonlydefaults, annotations)
args是参数名称的列表.varargs并且varkw是*和**参数的名称或None.defaults是最后n个参数的默认值的n元组,如果没有默认参数,则为None.kwonlyargs是仅关键字参数名称的列表.kwonlydefaults是一个将名称映射kwonlyargs到默认值的字典.annotations是将参数名称映射到注释的字典.
因此,检查模块有一些叫做kwonlyargs和的东西kwonlydefaults.这在实际的功能签名中意味着什么?如果你有一个接受**kwarg参数的函数签名,那么直到运行时你才能真正知道关键字参数的名称,因为调用者基本上只能传递任意字典.那么,kwonlyargs在函数签名的上下文中有什么意义- 这就是它所inspect.getfullargspec提供的.
我使用Anaconda和gdsCAD并在正确安装所有软件包时出错.如下所述:http://pythonhosted.org/gdsCAD/
TypeError: ufunc 'add' did not contain a loop with signature matching types dtype('S32') dtype('S32') dtype('S32')
Run Code Online (Sandbox Code Playgroud)
我的导入看起来像这样(最后我导入了所有东西):
import numpy as np
from gdsCAD import *
import matplotlib.pyplot as plt
Run Code Online (Sandbox Code Playgroud)
我的示例代码如下所示:
something = core.Elements()
box=shapes.Box( (5,5),(1,5),0.5)
core.default_layer = 1
core.default_colors = 2
something.add(box)
something.show()
Run Code Online (Sandbox Code Playgroud)
我的错误消息如下所示:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-5-2f90b960c1c1> in <module>()
31 puffer_wafer = shapes.Circle((0.,0.), puffer_wafer_radius, puffer_line_thickness)
32 bp.add(puffer_wafer)
---> 33 bp.show()
34 wafer = shapes.Circle((0.,0.), wafer_radius, wafer_line_thickness)
35 bp.add(wafer)
C:\Users\rpilz\AppData\Local\Continuum\Anaconda2\lib\site-packages\gdscad-0.4.5-py2.7.egg\gdsCAD\core.pyc in _show(self)
80 …Run Code Online (Sandbox Code Playgroud) 当我从REST客户端调用API端点时,我通过关注Signature得到了错误.
请求:
主持人:https://xxx.execute-api.ap-southeast-1.amazonaws.com/latest/api/name
授权:AWS4-HMAC-SHA256 Credential =
{AWSKEY}/ 20160314/ap-southeast-1/execute-api/aws4_request,SignedHeaders = host; range; x-amz-date,Signature ={signature}X-Amz-Date:20160314T102915Z
响应:
{
"message": "The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details. The Canonical String for this request should have been 'xxx' "
}
Run Code Online (Sandbox Code Playgroud)
从Java代码开始,我遵循AWS参考如何生成签名.
String secretKey = "{mysecretkey}";
String dateStamp = "20160314";
String regionName = "ap-southeast-1";
String serviceName = …Run Code Online (Sandbox Code Playgroud) 我正在玩一个带有多个开关的命令行程序的Perl 6实现.签名MAIN非常复杂,有点混乱.我想知道是否有办法在其他地方定义签名并告诉子程序使用什么:
# possibly big and messy signature
my $sig;
BEGIN { $sig = :( Int $n, Int $m ) };
multi MAIN ( $sig ) {
put "Got $n and $m";
}
Run Code Online (Sandbox Code Playgroud)
MAIN即使在MAIN编译之前设置了签名,也看不到签名中的变量:
===SORRY!=== Error while compiling /Users/brian/Desktop/signature.p6
Variable '$n' is not declared
at /Users/brian/Desktop/signature.p6:7
Run Code Online (Sandbox Code Playgroud)
我认为在编译时生成方法并根据各种因素选择签名可能很方便.
来自C++ Primer第5版,它说:
int f(int){ /* can write to parameter */}
int f(const int){ /* cannot write to parameter */}
Run Code Online (Sandbox Code Playgroud)
这两个功能难以区分.但是如您所知,这两个函数在更新参数方面确实存在差异.
有人可以向我解释一下吗?
编辑
我想我没有很好地解释我的问题.我真正关心的是为什么C++不允许这两个函数同时作为不同的函数,因为它们在"是否可以写入参数"方面确实不同.直观地说,应该是!
编辑传递值
的性质实际上是通过将参数值复制到参数值来传递的.即使对于复制值为地址的引用和指针也是如此.从来电者的角度来看,无论是常量还是非常量传递给函数不会影响复制到参数(当然类型)值.复制对象时
,顶级const和低级const之间的区别很重要.更具体地说,顶级const(不是
低的const)复制对象时会被忽略,因为复制不会影响复制的对象.复制或复制的对象是否为const无关紧要.
因此对于呼叫者来说,区分它们是没有必要的.可能,从功能的角度来看,顶级const参数不会影响接口和/或功能的功能.这两个功能实际上完成了同样的事情.为什么要打扰实施两份?
是否有工具可以检查文档字符串中列出的参数是否与函数调用的签名匹配?它应该能够处理 numpy 风格的文档字符串。我经常使用 R CMD CHECK,它可以发现 R 中的文档/代码不匹配,这非常有帮助。如果 Python 中有类似的东西那就太好了,但我还没有找到任何东西。
python docstring signature code-documentation visual-studio-code