小编Rya*_*oun的帖子

什么会导致HTML5画布toBlob创建一个不完整的图像?

我有以下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)

javascript google-chrome form-data chromium html5-canvas

10
推荐指数
1
解决办法
558
查看次数

如何使用 CloudFormation 定义 CloudWatch Logs 的资源策略?

当我使用 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

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

一种在不知道签名的情况下包装C函数调用的方法?

给定具有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)

只要呼叫者和被呼叫者遵循相同的呼叫约定并同意签名,一切都有效.

现在让我们说我想要包含一个包含数千个函数的库.我可以使用nmreadelf获取要包装的所有函数的名称,但我不必关心签名,甚至需要包含库的相关头文件.

在某些情况下,考虑到版本和平台之间发生的外观变化,干净地包括标题可能不是一种选择.例如:

// 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本身却没有?

c linux assembly gcc function

2
推荐指数
1
解决办法
420
查看次数