我有以下javascript从画布生成图像并将它们上传到服务器.
var can = document.createElement('canvas');
can.width = 600;
can.height = 600;
var ctx = can.getContext('2d');
ctx.fillRect(0, 0, can.width, can.height);
ctx.fillText("Julia", can.width/2, can.height/2);
can.toBlob(uploadImage, "image/jpg", 0.9);
function uploadImage(jpeg) {
var data = new FormData();
data.append('image', jpeg, 'image.jpg');
...
}
Run Code Online (Sandbox Code Playgroud)
每隔一段时间,结果看起来就像上面一样,只是部分绘制的.多个画布按顺序处理和上传,仅在完成ajax(在......部分)中继续进行,因此一次只能进行一次.
你看到过这种情况吗?如果是这样,我应该在这个过程中进一步调试?可能是上下文对象中的设置或其他内容?
编辑
上传是一个ajax帖子,只在成功分支上解析了一个promise.它实际上使用angular的$ http服务:
$http({method: 'POST', url: '...', data: data}).then(function(response) {
// callback that processes and uploads the next image
});
Run Code Online (Sandbox Code Playgroud) 当我使用 Route53 配置 DNS 查询日志记录时,我可以为 Route53 创建资源策略以记录到我的日志组。我可以通过 cli 确认此策略aws logs describe-resource-policies并看到如下内容:
{
"resourcePolicies": [
{
"policyName": "test-logging-policy",
"policyDocument": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"route53.amazonaws.com\"},\"Action\":[\"logs:CreateLogStream\",\"logs:PutLogEvents\"],\"Resource\":\"arn:aws:logs:us-east-1:xxxxxx:log-group:test-route53*\"}]}",
"lastUpdatedTime": 1520865407511
}
]
}
Run Code Online (Sandbox Code Playgroud)
cli 还可以put-resource-policy创建其中之一。我还看到 Terraform 有一个aws_cloudwatch_log_resource_policy具有相同功能的资源。
所以问题是:我如何使用 CloudFormation 做到这一点???
amazon-web-services aws-cloudformation amazon-cloudwatchlogs
给定具有C绑定和任意签名的函数,创建指向函数的指针,传递它,包装它并调用它是一件简单的事情.
int fun(int x, int y)
{
return x + y;
}
void* funptr()
{
return (void*)&fun;
}
int wrapfun(int x, int y)
{
// inject additional wrapper logic
return ((int (*)(int, int))funptr())(x, y);
}
Run Code Online (Sandbox Code Playgroud)
只要呼叫者和被呼叫者遵循相同的呼叫约定并同意签名,一切都有效.
现在让我们说我想要包含一个包含数千个函数的库.我可以使用nm或readelf获取要包装的所有函数的名称,但我不必关心签名,甚至需要包含库的相关头文件.
在某些情况下,考虑到版本和平台之间发生的外观变化,干净地包括标题可能不是一种选择.例如:
// from openssl/ssl.h v0.9.8
SSL_CTX* SSL_CTX_new(SSL_METHOD* meth);
// from openssl/ssl.h v1.0.0
SSL_CTX* SSL_CTX_new(const SSL_METHOD* meth);
Run Code Online (Sandbox Code Playgroud)
这是我的背景理由,您可以留下或采取.无论如何,我的问题是这样的:
有没有办法写
// pseudocode
void wrapfun()
{
return ((void (*)())funptr())();
}
Run Code Online (Sandbox Code Playgroud)
这样的来电者wrapfun知道了签名fun,但wrapfun本身却没有?
assembly ×1
c ×1
chromium ×1
form-data ×1
function ×1
gcc ×1
html5-canvas ×1
javascript ×1
linux ×1