我的应用程序中有一个奇怪的错误.我正在使用AVAudioPlayer播放声音(它的多个实例),声音通过耳机完美地工作,但使用没有耳机的应用程序不会产生扬声器发出的声音.所有音频剪辑都是AAC编码的.
我已经尝试通过Objective-C API([AVAudioSession sharedInstance])和C API设置AVAudioSession属性,但是这些选项似乎都不起作用.
如果我有一个大文件下载正在进行应用程序移动到后台,有没有办法让下载执行功能保持活动状态?
我知道beginBackgroundTaskWithExpirationHandler:
当应用程序移动到后台时会被调用,我可以在那里开始我的任务,但我不想开始新的任务,我想完成我的旧任务.它可以解决beginBackgroundTaskWithExpirationHandler:
,但为此我需要暂停下载并从正确的地方恢复它,这简直是愚蠢的.
理想情况下,我想要的是我使用过期处理程序包装我的下载功能,因此我的下载功能会在应用程序移动到后台后的指定时间内继续执行.
是否有可能(使用Boost :: Spirit :: QI)从逗号分隔的字符串中解析数字,以便获得每个已解析数字的索引?
假设我有一个字符串"23,123,65,1"
,我想将这些数字中的每一个插入到给定位置(0,1,2,3)的矩阵中.一种方法是将数字解析为std :: vector,然后将它们复制到矩阵行,但速度并不是特别快.
目前我正在使用矢量变体:
Matrix data(10, 4);
int row = 0;
int col = 0;
std::string str = "23,123,65,1";
std::vector<double> res;
if (qi::parse(str.begin(), str.end(), qi::double_ % ',', res))
{
std::for_each(res.begin(), res.end(), [&col, &data, &row](double elem) {
data(row, col) = elem;
col++;
});
}
Run Code Online (Sandbox Code Playgroud)
如果解析器有一个成功的回调,它需要一个lambda函数或类似的功能,那就太棒了.
找到由圆心和半径定义的圆与任意网格的交点的好方法是什么?
我试图找到的要点的说明:
到目前为止我想到的可能的解决方案:
找到位于中心 +- 半径之间的所有线。对于每条线计算交点。
将圆设为 n 边多边形,并使用几何库查找多边形和网格线之间的交点。这也允许使用圆形以外的其他形状。
在尝试测试函数的速度时,我发现并非我的代码的所有部分都在Release
模式下工作.但是,相同的代码在Debug
模式下完美运行.
我正在使用VC++编译器进行/O2
优化.
这是切出的部分,不起作用.
int main()
{
boost::timer::auto_cpu_timer t;
for(int i = 0; i < 1000000; i++)
gcdb(i, 5);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在释放模式下生成的程序集,for循环的代码仅在此模式下丢失.
int main()
{
000000013F8E1280 sub rsp,88h
000000013F8E1287 mov rax,qword ptr [__security_cookie (013F8E7150h)]
000000013F8E128E xor rax,rsp
000000013F8E1291 mov qword ptr [rsp+70h],rax
boost::timer::auto_cpu_timer t;
000000013F8E1296 lea rcx,[t]
000000013F8E129B mov edx,6
000000013F8E12A0 call boost::timer::auto_cpu_timer::auto_cpu_timer (013F8E2DA0h)
for(int i = 0; i < 1000000; i++)
gcdb(i, 5);
return 0;
000000013F8E12A5 lea rcx,[t]
000000013F8E12AA call boost::timer::auto_cpu_timer::~auto_cpu_timer (013F8E2810h)
000000013F8E12AF …
Run Code Online (Sandbox Code Playgroud) 如果我用std :: launch :: async策略启动std :: async,它不应该在新线程中启动每个异步任务吗?目前它看起来新的异步任务转移到刚刚完成它的工作的线程.我正在使用VC11作为我的编译器.正如您从输出中看到的那样,当一个新工作者(例如一个工作者多次获得ID为34500的线程)与std :: async一起启动时,它会在之前完成的线程中启动.我对std :: async的理解是错误的还是有一个潜在的工作窃取队列或类似的东西?
Worker (ID=24072) starting.
Worker (ID=34500) starting.
Worker (ID=32292) starting.
Worker (ID=31392) starting.
Worker (ID=17976) starting.
Worker (ID=31580) starting.
Worker (ID=33512) starting.
Worker (ID=33804) starting.
Worker 32292 finished.
Worker (ID=32292) starting.
Worker 17976 finished.
Worker (ID=17976) starting.
Worker 31580 finished.
Worker (ID=31580) starting.
Worker 34500 finished.
Worker (ID=34500) starting.
Worker 34500 finished.
Worker (ID=34500) starting.
Worker 32292 finished.
Worker (ID=32292) starting.
Worker 17976 finished.
Worker (ID=17976) starting.
Worker 34500 finished. …
Run Code Online (Sandbox Code Playgroud) 我试图使用HTML5 canvas API在点的路径上绘制连续的渐变,其中每个点都有自己的颜色.
请参阅http://bl.ocks.org/rveciana/10743959获取灵感,其中使用D3实现该效果.
似乎没有办法为单个画布路径添加多个线性渐变,所以我使用了这样的东西:http://jsfiddle.net/51toapv2/
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var pts = [[100, 100, "red"], [150, 150, "green"], [200, 100, "yellow"]];
ctx.lineWidth = 20;
ctx.lineJoin = "round";
ctx.lineCap = "round";
for (var i = 0; i < pts.length - 1; i++) {
var begin = pts[i];
var end = pts[i + 1];
ctx.beginPath();
var grad = ctx.createLinearGradient(begin[0], begin[1], end[0], end[1]);
grad.addColorStop(0, begin[2]);
grad.addColorStop(1, end[2]);
ctx.strokeStyle = grad;
ctx.moveTo(begin[0], begin[1]);
ctx.lineTo(end[0], end[1]); …
Run Code Online (Sandbox Code Playgroud) 我正在使用https://github.com/blueimp/jQuery-File-Upload将文件上传到我的Rails应用程序上的S3(安装此gem:https://github.com/tors/jquery-fileupload-rails).
这是我的表格.由于我只需要上传文件并稍后创建文档,因此它不是form_for.
<%= form_tag 'Bucket URL SNIP', :multipart => true, :id => "fileupload" do %>
<%= hidden_field_tag 'key', @token %>
<%= hidden_field_tag 'AWSAccessKeyId', ACCESSKEYSNIP %>
<%= hidden_field_tag 'acl', 'public-read' %>
<%= hidden_field_tag 'success_action_status', '200' %>
<%= hidden_field_tag 'policy', controller.s3_policy_document %>
<%= hidden_field_tag 'signature', controller.signature %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
并且jQuery上传器初始化如下:
$(function () {
$('#fileupload').fileupload({
forceIframeTransport: true
});
});
Run Code Online (Sandbox Code Playgroud)
一切正常,我看到了UI,但是当文件的进度条完成时,它会给我一个错误,文件实际上并没有上传.
TypeError:iframe未定义.(Firefox)TypeError:TypeError:无法读取未定义的属性"0"(Chrome)
可能是什么问题呢?
编辑:
看看Javascript控制台,我收到这样的错误(替换了真实的地址):
Unsafe JavaScript attempt to access frame with URL BUCKETURL from frame with …
Run Code Online (Sandbox Code Playgroud) c++ ×3
ios ×2
objective-c ×2
algorithm ×1
amazon-s3 ×1
asynchronous ×1
boost ×1
boost-spirit ×1
c++11 ×1
canvas ×1
html5 ×1
ipad ×1
javascript ×1
jquery ×1
threadpool ×1