小编Dre*_*rew的帖子

确定数据是否在 TcpStream 上可用

我有一个std::net::TcpStream. 我想确定是否有数据可供读取而无需实际读取。

唯一相关的API我可以找到关于TcpStream本身就是read

不提供任何关于它是否阻塞等待数据的保证

对于这个问题,这听起来并不令人鼓舞。

一个相关的问题似乎下降到文件描述符并read(2)强制非阻塞读取。但是,我无法弄清楚如何read(2)在没有实际阅读的情况下查看 fd。

我想这是 的工作select(2),但是fd_set为 C 参数构建s 似乎相当麻烦。肯定没有 Rust 类型,而且我也不清楚我将如何发明一个。

networking posix rust

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

GLPaint保存图像

我正在尝试在iPhone上开发一个复杂的绘画应用程序.我目前正在使用Quartz(例如CGContext...).不幸的是,Quartz开销对于我正在进行的绘制类型来说太慢了,我正在使用GLPaint示例作为参考点移植到OpenGL调用.

有没有办法从EAGLview类(相当于Quartz的UIGraphicsGetImageFromCurrentImageContext)获取UIImage/CGImage ?基本上我需要保存GLPaint应用程序绘制的图片.

iphone opengl-es objective-c quartz-graphics

4
推荐指数
2
解决办法
3555
查看次数

按时间计算DataFrame的EWMA

我有这个数据帧:

    avg                date    high  low      qty
0 16.92 2013-05-27 00:00:00   19.00 1.22 71151.00
1 14.84 2013-05-30 00:00:00   19.00 1.22 42939.00
2  9.19 2013-06-02 00:00:00   17.20 1.23  5607.00
3 23.63 2013-06-05 00:00:00 5000.00 1.22  5850.00
4 13.82 2013-06-10 00:00:00   19.36 1.22  5644.00
5 17.76 2013-06-15 00:00:00   24.00 2.02 16969.00
Run Code Online (Sandbox Code Playgroud)

每行都是在指定日期创建的avg,high,low和qty的观察值.

我正在尝试计算一个跨度为60天的指数移动加权平均值:

df["emwa"] = pandas.ewma(df["avg"],span=60,freq="D")
Run Code Online (Sandbox Code Playgroud)

但我明白了

TypeError: Only valid with DatetimeIndex or PeriodIndex
Run Code Online (Sandbox Code Playgroud)

好吧,也许我需要在构造时向我的DataFrame添加DateTimeIndex.让我改变我的构造函数调用

df = pandas.DataFrame(records) #records is just a list of dictionaries
Run Code Online (Sandbox Code Playgroud)

rng = pandas.date_range(firstDate,lastDate, freq='D')
df = pandas.DataFrame(records,index=rng) …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

任何超过 255 秒的任务 GCD 都会崩溃

以下代码会在 iOS 模拟器中产生崩溃。

- (void)viewDidLoad
{
    [super viewDidLoad];
    dispatch_async(dispatch_get_main_queue(), ^{
        NSDate *sleepStart = [NSDate date];
        while ([sleepStart timeIntervalSinceNow] > -300) {

        }
    });    
}
Run Code Online (Sandbox Code Playgroud)

更新:即使在后台线程上也会出现此问题

下面的代码也有错误:

- (void)viewDidLoad
{
    [super viewDidLoad];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        NSDate *sleepStart = [NSDate date];
        while ([sleepStart timeIntervalSinceNow] > -300) {

        }
    });    
}
Run Code Online (Sandbox Code Playgroud)

就这样。将其粘贴到任何视图控制器中,在模拟器中运行该应用程序正好 4 分 15 秒,它就会崩溃。

这种崩溃是我以前从未见过的。是“EXC_???(11)”。奇怪的是,您可以在崩溃后按“继续”按钮,它会像平常一样继续。

为什么会崩溃?如何将长任务提交到队列而不导致此行为?

到目前为止,我尝试过以下一些方法,但还没有解开这个谜团:

  • 创建我自己的调度队列(包括后台线程上的调度队列)
  • 使用 NSBlockOperation 而不是 GCD (仍然崩溃)
  • 插入睡眠。短暂的睡眠(少于 5 秒左右)似乎会延迟睡眠时间的崩溃。睡眠时间越长似乎作用越多。所以如果你睡眠一次五秒,它会在 4m 20s 而不是 4m 15s 时崩溃。如果你睡眠一次持续 60 秒,大约需要十分钟才会崩溃,但它最终会发生。这条线索似乎很重要,但我不知道它意味着什么。

更新#1

该问题仅在 LLDB 下重现,在 …

objective-c nsoperationqueue grand-central-dispatch ios

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