小编Han*_*son的帖子

使用Twisted的twisted.web类,如何刷新传出缓冲区?

我使用Twisted创建了一个简单的http服务器,它发送Content-Type:multipart/x-mixed-replace标头.我正在使用它来测试我想要设置为接受长期流的http客户端.

出现的问题是我的客户端请求挂起,直到http.Request调用self.finish(),然后它立即接收所有多部分文档.

有没有办法手动将输出缓冲区刷新到客户端?我假设这就是为什么我没有收到单独的多部分文件.

#!/usr/bin/env python

import time

from twisted.web import http
from twisted.internet import protocol

class StreamHandler(http.Request):
    BOUNDARY = 'BOUNDARY'

    def writeBoundary(self):
        self.write("--%s\n" % (self.BOUNDARY))

    def writeStop(self):
        self.write("--%s--\n" % (self.BOUNDARY))

    def process(self):
        self.setHeader('Connection', 'Keep-Alive')
        self.setHeader('Content-Type', "multipart/x-mixed-replace;boundary=%s" % (self.BOUNDARY))

        self.writeBoundary()

        self.write("Content-Type: text/html\n")
        s = "<html>foo</html>\n"
        self.write("Content-Length: %s\n\n" % (len(s)))
        self.write(s)
        self.writeBoundary()
        time.sleep(2)

        self.write("Content-Type: text/html\n")
        s = "<html>bar</html>\n"
        self.write("Content-Length: %s\n\n" % (len(s)))
        self.write(s)
        self.writeBoundary()
        time.sleep(2)

        self.write("Content-Type: text/html\n")
        s = "<html>baz</html>\n"
        self.write("Content-Length: %s\n\n" % (len(s)))
        self.write(s)

        self.writeStop()

        self.finish()

class StreamProtocol(http.HTTPChannel):
    requestFactory …
Run Code Online (Sandbox Code Playgroud)

python twisted multipart-mixed-replace

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

在Ruby on Rails中,线程,并发和分叉进程的当前状态是什么?

Ruby on Rails不能很好地执行多线程请求 - 响应,或者至少ActiveRecord没有.

在创建Web应用程序时,只有一个请求响应同时处于活动状态的概念可能会很麻烦,这些应用程序会分离需要很长时间才能完成的shell命令.

我想要的是你对这些设置的一些看法?Rails可能不适合某些应用程序吗?

另外,Ruby on Rails中关于并发性的当前事态是什么?什么是最佳实践.有缺点的解决方法吗?

ruby concurrency ruby-on-rails

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

如何在Ruby on Rails中处理必须保存在数据库中但不是正确模型的数据?

想象一下用Ruby on Rails编写的Web应用程序.该应用程序的部分状态表示在一个不符合模型描述的数据中.此状态描述符需要与模型保持在同一数据库中.它与模型的不同之处在于,它只需要一个类的实例,并且它与其他类没有关系.

有没有人遇到这样的事情?

ruby persistence ruby-on-rails

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

使用Core Animation,有没有办法为几个CALayers分组动画?

我有一种情况,我有许多CALayers,以"回合制"的方式动画.我为每个CALayers上的位置设置动画,但它们具有完全相同的持续时间.一旦所有这些CALayer完成动画制作,就会启动一个新的"转弯"并再次动画更改位置.

整个想法是,通过位置之间的线性插值,以及以恒定速度,状态到状态之间的基于回合的过渡看起来像实时动画.然而,使用许多不同的CALayer很难实现这一点.

CAAnimationGroup用于将动画集中在一个CALayer上.但我想知道,是否有一个简单的解决方案可以将几个CALayer上的群组动画设置为具有相同的持续时间?

编辑包括回答Kevin Ballard的问题

我的问题在于此.我正在为每个CALayers创建动画,然后将它们放入NSArray中.一旦我得到单个动画结束的回调,我就从NSArray中删除它.一旦它空了,我再次为它们创建动画.

有超过几层,所有动画完成和新动画开始之间有明显的延迟.

我想如果我可以将所有这些动画组合成一个动画,可以在动画之间没有延迟的情况下动画更多层.从而不会破坏连续动画的幻想.

animation core-animation

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

在java中,如何使用私有构造函数创建一个类,其超类也有一个私有构造函数?

举个例子:

public class Foo {
    private Foo() {}
}

public class Bar extends Foo {
    private Bar() {}

    static public doSomething() {
    }
}
Run Code Online (Sandbox Code Playgroud)

那是一个编译错误.一个类至少需要隐式调用它的超类的默认构造函数,在这种情况下,它在Foo中是不可见的.

我可以从Bar调用Object的构造函数吗?

java constructor

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

当运行剂量在体内有多个表达式时,在clojure中的Nullpointer

clojure中的以下表达式非常有用:

(doseq [x '(1 2 3 4)] (println x))
Run Code Online (Sandbox Code Playgroud)

这个给了我一个nullpointer:

(doseq [x '(1 2 3 4)] ((println x)(println "x")))
Run Code Online (Sandbox Code Playgroud)

它产生以下输出:

user=> (doseq [x '(1 2 3 4)] ((println x)(println "x")))
1
x
java.lang.NullPointerException (NO_SOURCE_FILE:0)
user=> (.printStackTrace *e)
java.lang.NullPointerException (NO_SOURCE_FILE:0)
  at clojure.lang.Compiler.eval(Compiler.java:4639)
  at clojure.core$eval__5182.invoke(core.clj:1966)
  at clojure.main$repl__7283$read_eval_print__7295.invoke(main.clj:180)
  at clojure.main$repl__7283.doInvoke(main.clj:197)
  at clojure.lang.RestFn.invoke(RestFn.java:426)
  at clojure.main$repl_opt__7329.invoke(main.clj:251)
  at clojure.main$legacy_repl__7354.invoke(main.clj:292)
  at clojure.lang.Var.invoke(Var.java:359)
  at clojure.main.legacy_repl(main.java:27)
  at clojure.lang.Repl.main(Repl.java:20)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  at java.lang.reflect.Method.invoke(Method.java:597)
  at jline.ConsoleRunner.main(ConsoleRunner.java:69)
Caused by: java.lang.NullPointerException
  at user$eval__266.invoke(NO_SOURCE_FILE:26)
  at clojure.lang.Compiler.eval(Compiler.java:4623)
  ... 14 more …
Run Code Online (Sandbox Code Playgroud)

clojure

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

如何在emacs的emerge中组合冲突的两个变体?

在Emacs中使用emerge,我有一个这样的会话:

<<<<<<< variant A
            522ADC9C14B2FD9D00F56BAD /* close_test_button.png in Resources */,
            522ADC9D14B2FD9D00F56BAD /* close_test_button@2x.png in Resources */,
            522ADCA014B2FDB100F56BAD /* test_failed.png in Resources */,
            522ADCA114B2FDB100F56BAD /* test_failed@2x.png in Resources */,
>>>>>>> variant B
            EC1633C014B2F3E3004B52E7 /* arrow.png in Resources */,
            EC1633C114B2F3E3004B52E7 /* arrow@2x.png in Resources */,
            EC1633C214B2F3E3004B52E7 /* groups.png in Resources */,
            EC1633C314B2F3E3004B52E7 /* groups@2x.png in Resources */,
####### Ancestor
======= end
Run Code Online (Sandbox Code Playgroud)

我可以通过敲击键盘上的ab选择变体AB,但如何将两种变体一个接一个地组合在一起?

emacs

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

在Visual Studio中构建时,LoadLibrary无法加载包含错误代码126的dll

该项目由一个.cpp文件组成,该文件调用LoadLibrary()来加载一个dll文件.

如果我通过Microsoft Visual Studio 2012命令提示符运行以下内容,会发生什么:

cl /nologo Test.cpp
Run Code Online (Sandbox Code Playgroud)

一切正常.

另一方面,如果我启动一个简单的Visual C++项目,添加该文件并通过那里编译它,LoadLibrary()调用失败,代码为126:找不到指定的模块.

我从命令行构建的.exe的大小是Visual Studio中构建的大小的两倍.所以我猜有一些静态链接正在进行中.

.dll文件很好,它与.exe文件位于同一目录中.

visual-studio visual-c++

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

是否可以在XCode 7 beta中切换XCode项目以使用Swift 1.2版?

鉴于Swift版本2打破了一些api - 是否有可能选择编译器所针对的版本?

swift

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

如何在ReactiveCocoa中的信号序列之间创建延迟?

我有三个信号,我想按顺序评估,它们之间有一秒钟的延迟.

这个片段做我想要的,但它很难看:

RACSignal *first = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
    NSLog(@"First!");
    [subscriber sendCompleted];
    return nil;
}];

RACSignal *second = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
    NSLog(@"Second!");
    [subscriber sendCompleted];
    return nil;
}];

RACSignal *third = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
    NSLog(@"Third!");
    [subscriber sendCompleted];
    return nil;
}];

NSArray *signals = @[first, [[RACSignal empty] delay:1.0f],
                     second, [[RACSignal empty] delay:1.0f],
                     third];

NSLog(@"Starting");
[[[signals rac_sequence].signal concat] subscribeCompleted:^{
    NSLog(@"Done!");
}];
Run Code Online (Sandbox Code Playgroud)

它打印出来:

2013-11-18 17:13:35.326 Starting
2013-11-18 17:13:35.327 First!
2013-11-18 17:13:36.328 Second!
2013-11-18 17:13:37.329 Third!
2013-11-18 17:13:37.330 Done!
Run Code Online (Sandbox Code Playgroud)

cocoa reactive-cocoa

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

GWT Tree小部件吞下箭头键盘事件,使TreeItems中包含的TextBox不响应箭头键

在GWT 1.6.4中可轻松重现:

Tree tree = new Tree();
tree.addItem(new TextBox());
Run Code Online (Sandbox Code Playgroud)

问题在于Tree中的onBrowserEvent:

switch (eventType) {
  case Event.ONKEYDOWN:
  case Event.ONKEYUP: {
    if (isArrowKey(DOM.eventGetKeyCode(event))) {
      DOM.eventCancelBubble(event, true);
      DOM.eventPreventDefault(event);
      return;
    }
  }
Run Code Online (Sandbox Code Playgroud)

像许多GWT小部件一样,它们不是很好的子类.我必须有一个简单的技巧吗?

gwt

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

NSURLConnection委托在服务器状态401上没有获得其didReceiveAuthenticationChallenge方法

我已经设置了一个简单的NSURLConnection来查询http服务器.

GET /path HTTP/1.1
Host: 192.168.1.161:8282
User-Agent: NetTest1.0 CFNetwork/441.0.2 Darwin/9.6.0
Accept: */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Pragma: no-cache
Connection: keep-alive
Run Code Online (Sandbox Code Playgroud)

服务器使用代码401和WWW-Authenticate标头集进行响应

HTTP/1.1 401
Connection: close
Pragma: no-cache
Expires: Thu, 01 Dec 1994 16:00:00 GMT
Cache-control: no-cache
Cache-last-checked: Thu, 01 Dec 1994 16:00:00 GMT
Last-modified: Tue, 07 Apr 02009 22:55:48 CEST
Content-type: text/html; charset=iso-8859-1
WWW-Authenticate: Basic realm:
Run Code Online (Sandbox Code Playgroud)

我想这会向我的委托的连接发送一条消息:didReceiveAuthenticationChallenge:方法,但事实并非如此.

我也实施了

- (BOOL)connectionShouldUseCredentialStorage:(NSURLConnection *)connection {
  return FALSE;
}
Run Code Online (Sandbox Code Playgroud)

只是为了确保它不会尝试从我的钥匙串发送缓存的凭据,而不是.

macos cocoa core-foundation nsurlconnection

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