我已经阅读了大量的消息再次说同样的事情:当你使用NSURLConnection时,不会调用委托方法.我理解Apple的文档是不完整的并且引用了弃用的方法,这是一种耻辱,但我似乎无法找到解决方案.
请求代码在那里:
// Create request
NSURL *urlObj = [NSURL URLWithString:url];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:urlObj cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:30];
[request setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"];
if (![NSURLConnection canHandleRequest:request]) {
NSLog(@"Can't handle request...");
return;
}
// Start connection
dispatch_async(dispatch_get_main_queue(), ^{
self.connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES]; // Edited
});
Run Code Online (Sandbox Code Playgroud)
...代理方法的代码在这里:
- (void) connection:(NSURLConnection *)_connection didReceiveResponse:(NSURLResponse *)response {
NSLog(@"Receiving response: %@, status %d", [(NSHTTPURLResponse*)response allHeaderFields], [(NSHTTPURLResponse*) response statusCode]);
self.data = [NSMutableData data];
}
- (void) connection:(NSURLConnection *)_connection didFailWithError:(NSError *)error {
NSLog(@"Connection failed: %@", error); …Run Code Online (Sandbox Code Playgroud) UPDATE
通过使用OpenGL绘制所有内容,我克服了CG的局限性.还是有一些小故障,但到目前为止它工作得更快,更快.
一些有趣的观点:
GLKView:这是一个特定于iOS的视图,它在设置OpenGL上下文和渲染循环方面有很大帮助.如果你不在iOS上,我担心你是独自一人.GL_LINES:OpenGL ES可以原生地绘制简单的线条.不是很好(没有关节,没有帽子,请看下面屏幕截图顶部的紫色/灰色线条),但为了改善你必须编写一个自定义着色器,将每一行转换成三角形条并祈祷它作品!(据说当浏览器告诉你Canvas2D是GPU加速时,浏览器会这样做) 
原始问题
我正在尝试在drawRect滚动视图的方法中绘制大量CGPath(通常超过1000),当用户用手指平移时刷新.我在浏览器的JavaScript中使用相同的应用程序,我正在尝试将其移植到iOS本机应用程序.
iOS测试代码是(100行操作,path是预先制作的CGMutablePathRef):
- (void) drawRect:(CGRect)rect {
// Start the timer
BSInitClass(@"Renderer");
BSStartTimedOp(@"Rendering");
// Get the context
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 2.0);
CGContextSetFillColorWithColor(context, [[UIColor redColor] CGColor]);
CGContextSetStrokeColorWithColor(context, [[UIColor blueColor] CGColor]);
CGContextTranslateCTM(context, 800, 800);
// Draw the points
CGContextAddPath(context, path);
CGContextStrokePath(context);
// Display the elapsed time
BSEndTimedOp(@"Rendering"); …Run Code Online (Sandbox Code Playgroud) 在使用Canvas2D做一些相当密集的渲染时,我只是特别难以调试.我使用各种各样的东西,从globalCompositeOperation多个屏幕外画布,中间有一些drawImage魔法.
它的工作完美无缺:
编辑:为Windows 7添加了测试.奇怪的是,它适用于FF12(我的双启动时有旧版本),但升级到FF18后有一定的性能影响.它在Windows上并不像在Linux上那么糟糕,而且OSX上的相同版本完美无瑕.回归可能吗?
出于某种原因,在Firefox和Linux上(我尝试了18和20 Aurora),在同时拖动和渲染时我的渲染性能很差.
如果我发射并忘记动画,它与Chrome/Safari相同,但如果我拖动并渲染,我经常最终只能在释放拖动后看到结束帧.
requestAnimationFrame鼠标事件处理程序上的直接呈现都不起作用.令我感到困惑的是,除了 Linux上的Firefox 之外,它几乎可以在其他任何地方使用.知道我应该在哪里看,错误报告或我的问题的解决方案?
一些SciPy函数(如scipy.ndimage.interpolation.geometric_transform)可以将指向C函数的指针作为参数,以避免在输入数组的每个点上调用Python可调用.
简而言之 :
my_function在C模块中定义一个名为somewhere 的函数PyCObject与&my_function指针和(任选地)一个void*指针到围绕通过一些全局数据相关的API方法是PyCObject_FromVoidPtrAndDesc,您可以在C中阅读扩展ndimage以查看它的实际效果.
我对使用Cython来保持我的代码更易于管理非常感兴趣,但我不确定我应该如何创建这样的对象.任何,好吧......指针?
我正在尝试将旧的,传统的Rails 3应用程序合并到更新的Django应用程序中.
这两个应用程序曾经使用过不同的数据库,这些数据库被合并到两个应用程序都可用的唯一数据库中 Django应用程序将从迁移开始慢慢接管旧Rails应用程序的功能.
Django在其迁移中强制执行严格的数据库约束(例如,NOT NULL具有默认值的字段).两个应用程序使用的表上的任何新字段都将阻止Rails更新该表上的记录,因为ActiveRecord强制插入NULL值而不是默认值.
由于我们不会向Rails应用程序添加新功能,因此我希望它坚持使用字段列表并忽略任何新添加的字段.
在以下的答案必须使用default_scope中断其它的范围,所以我想,以避免它.
触发器是一个选项,但我并不热衷于在Django应用程序中添加cruft,只是为了处理Rails应用程序中的遗留代码.
因此:我可以手动定义模型中的列,而不是让ActiveRecord自动检查数据库吗?
一些字节序列在Unicode编码中显然是无效的,我知道某些语言(Python for one)在发生这种情况时会抛出错误.
我的问题是:在一个XMLHttpRequest或多个中接收这样的序列时,Javascript会发生什么XDomainRequest?结果字符串是:
如果是3,那么该charCodeAt函数是否返回有效的字符代码?
我试图在使用C/Cython扩展和Python的Python/NumPy程序中找到令人讨厌的内存泄漏的起源multiprocessing.
每个子进程处理一个图像列表,并且每个子进程将输出数组(通常大约200-300MB)通过a Queue发送到主进程.相当标准的地图/减少设置.
正如你可以想象的那样,内存泄漏可能会占据巨大的数量,并且当他们只需要5-6GB就会让多个进程快乐地超过20GB内存......这很烦人.
我已经尝试通过Valgrind运行Python的调试版本,并对内存泄漏进行四重检查,但没有发现任何内容.
我检查了我的Python代码是否悬挂了对我的数组的引用,还使用了NumPy的分配跟踪器来检查我的数组是否确实已经发布.他们是.
我做的最后一件事就是将GDB附加到我的一个进程上(这个坏男孩现在正以27GB RAM运行并计数)并将大部分堆转储到磁盘上.令我惊讶的是,转储的文件充满了零!大约7G的零值.
这是Python/NumPy中的标准内存分配行为吗?我是否遗漏了一些明显的东西,可以解释为什么没有这么多的记忆?如何正确管理内存?
编辑:为了记录,我正在运行NumPy 1.7.1和Python 2.7.3.
编辑2:我一直在监视进程strace,似乎它一直在增加每个进程的断点(使用brk()系统调用).
CPython实际上是否正确释放内存?那么C扩展,NumPy数组呢?谁决定何时调用brk(),是Python本身还是底层库(libc,......)?
下面是一个带有注释的strace日志示例,来自一次迭代(即一个输入图像集).请注意,断点不断增加,但我确保(在objgraph)Python解释器中没有保留有意义的NumPy数组.
# Reading .inf files with metadata
# Pretty small, no brk()
open("1_tif_all/AIR00642_1.inf", O_RDONLY) = 6
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f9387fff000
munmap(0x7f9387fff000, 4096) = 0
open("1_tif_all/AIR00642_2.inf", O_RDONLY) = 6
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f9387fff000
munmap(0x7f9387fff000, 4096) = 0
open("1_tif_all/AIR00642_3.inf", O_RDONLY) = 6
mmap(NULL, …Run Code Online (Sandbox Code Playgroud) 我试图使用自定义查询的结果(两个地理点之间的距离)作为模型属性.最终目标是能够使用该列过滤和排序行,例如:
Model.with_distance(point).order(:distance).first
Run Code Online (Sandbox Code Playgroud)
我最初以为我可以select在范围内使用; 这是一个没有消毒的较短版本:
scope :with_distance, ->(point) { select("ST_DISTANCE(models.point_in_model, ST_GeographyFromText('#{point.to_s}')) AS distance") }
Run Code Online (Sandbox Code Playgroud)
但是,该范围仅选择distance列,而不检索模型属性:
> Model.with_distance(point)
[#<Model >, #<Model >,...]
Run Code Online (Sandbox Code Playgroud)
添加models.*到select调用可以解决问题,代价是强制检索每个查询中的整行并忽略其他select调用.
如何添加SELECT子句而不是替换所有子句?
postgresql activerecord postgis ruby-on-rails ruby-on-rails-3.2
我正试图找出一种从Scala调用Java API的方法.基本上,有一个ContentValues是有几个类似的方法对象getAsString,getAsLong每个都具有各自不同的返回类型.
我可以换ContentValues入另一个对象,以便我可以添加一个根据T get[T]调用正确getAsXXX方法的方法吗?
我尝试了什么(没有用,抱怨含糊不清的隐式解决方案):
object SContentValuesConversions {
case class SContentGetter[ScalaType](val check: String => Boolean, val getter: String => ScalaType) {
def getTyped(key: String): Option[ScalaType] = {
if (!check(key)) None
else Some(getter(key))
}
}
implicit def SIntContentValues(cv: ContentValues) =
SContentGetter((cv containsKey _), (cv getAsInteger _))
implicit def SLongContentValues(cv: ContentValues) =
SContentGetter((cv containsKey _), (cv getAsLong _))
implicit def SStringContentValues(cv: ContentValues) =
SContentGetter((cv containsKey _), (cv getAsString _))
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试一起使用多处理和matplotlib.
我正在创建一个标准Pool,添加工作apply_async并使用apply_async回调函数更新GUI ,该函数在Pool的父进程上运行(我验证了这一点os.getpid()).示例:
from pylab import *
from numpy import *
from numpy.random import random
from multiprocessing import Pool
# Output image
global out_all
out_all = zeros((256, 256))
# Only does something to in_image, doesn't access anything else
def do_work(in_image):
for x in xrange(100000):
out_image = in_image[::-1, ::-1]
return out_image
# Update the output image and display if needed
def do_update(out_image):
global out_all
print ("Updating")
out_all += out_image
clf()
imshow(out_all)
show()
# …Run Code Online (Sandbox Code Playgroud) python ×3
activerecord ×2
ios ×2
postgresql ×2
scipy ×2
c ×1
canvas ×1
cython ×1
drawing ×1
drawrect ×1
generics ×1
html5 ×1
javascript ×1
matplotlib ×1
memory-leaks ×1
numpy ×1
objective-c ×1
objgraph ×1
performance ×1
postgis ×1
scala ×1
tk-toolkit ×1
unicode ×1
utf-8 ×1