我在想用模板定义异常是个好主意。定义不同类型的异常是一项非常冗长的任务。你必须继承异常,没有什么改变,只是继承。像这样..
class FooException : public BaseException {
public:
...
};
class BarException : public BaseException {
public:
...
};
...
Run Code Online (Sandbox Code Playgroud)
那是一场噩梦,不是吗?所以我正在考虑用模板定义不同的异常
/**
@brief Exception of radio
**/
class Exception : public runtime_error {
private:
/// Name of file that throw
const string m_FileName;
/// Line number of file that throw
size_t m_Line;
public:
Exception(const string &what, const string &File, size_t Line)
throw()
: runtime_error(what),
m_FileName(File),
m_Line(Line)
{}
virtual ~Exception() throw() {}
/**
@brief Get name of file that throw
@return …Run Code Online (Sandbox Code Playgroud) 我正在写一个基于AJAX/COMET的在线聊天室.我的设计是:
请求
-----------------等待------------------------->发送转储数据
-----------------等待------------------------->发送转储数据
-----------------等待------------------------->发送转储数据
-----------------等待------------------------->发送转储数据
-----------------等待------------------------->发送转储数据
------发生了什么事,得到回应.
另一个要求..... ....
如您所见,服务器保留请求并等待发生的事情,如果发生了某些事件,只需推送数据并完成请求.然后客户端将发出另一个请求.在请求中有勾选,因此如果在两个请求的间隙之间发生事件,则服务器知道客户端有待处理的事件.
在浏览器超时之前,服务器还会发送一些空闲数据以防止客户端超时.
现在,问题出现了:不同浏览器的超时行为是什么?我知道浏览器发送请求并等待数据,如果等待时间太长,它会超时.但是不同浏览器的超时行为是什么?是否有任何标题可以控制浏览器的超时行为?通过了解浏览器的超时行为,以便我可以决定如何处理它们.我在哪里可以找到这些数据?
我正在开发一个扭曲的服务器.我需要控制内存使用量.修改代码,插入一些内存日志记录命令并重新启动服务器并不是一个好主意.我认为最好使用"远程控制台",以便我可以输入heapy命令并直接从服务器查看响应.我需要的只是一个远程控制台,我可以自己构建一个,但我不喜欢重建一个轮子.我的问题是:是否已经有任何用于扭曲的远程控制台?
谢谢.
我在Python项目后面编写了一个查找依赖关系的工具.这是暴食.我在Plone上运行它,结果令人印象深刻.我用Networkx输出图表,它看起来像这样:
Plone的依赖关系图,由Networkx输出http://python-gluttony.googlecode.com/files/plone_nx.png(Gee !看起来像World of Goo!)
一团糟!我没有使用Networkx处理布局.这就是它乱七八糟的原因.该工具可以输出Graphviz格式文件.我试图用dot命令渲染图表.我使用这样的命令:
dot -Kdot -Tpng -oplone plone.dot
Run Code Online (Sandbox Code Playgroud)
长时间运行后我得到了一个巨大的图像,但结果似乎错了.我在结果图像上看不到任何内容.它看起来像一张白纸,上面没什么.怎么了?图表太大而无法呈现?我该怎么做才能渲染如此庞大的复杂图表?
我可以从其他小图中得到正确的结果,如下 图:sprox的依赖关系图http://python-gluttony.googlecode.com/files/sprox.png
即使是更大的图表也可以正确渲染,让我们看一下TurboGears2的图表
我认为看到像Plone这样的怪物项目的依赖关系应该很有趣.它也适用于研究.不幸的是,我无法正确输出图表.冷的人帮助我?谢谢.
这是Plone:Plone.dot的Graphviz格式文件
我有一些外部依赖项加载我的C++程序,如boost或其他库.如果那些.DLL的库不在$ PATH中,一旦我运行我的程序,我得到一个"无法加载DLL"错误消息.为了使这些.DLL可以在运行我的程序时加载,我需要将这些路径添加到libraries目录.例如:
PATH=$PATH;c:\boost\lib
Run Code Online (Sandbox Code Playgroud)
它有效,但我不喜欢这种使全球环境变脏的愚蠢解决方案.此外,我有更多的依赖项添加.这样做的最糟糕的事情是,一旦你有不同版本的依赖项,它就会非常烦人.例如,你有一个项目A取决于boost1.3.7,要开发它,你必须改变PATH
PATH=$PATH;c:\boost1.3.7\lib
Run Code Online (Sandbox Code Playgroud)
而且,在这里你需要开发另一个项目B,它依赖于boost1.4.4,哦,很棒....改变变量
PATH=$PATH;c:\boost1.4.4\lib
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,这不是一个聪明的解决方案....如果您有多个库链接,那将是一场真正的噩梦.我想要的是修改VC++项目的属性,只有在运行/调试我的程序时才将这些路径添加到PATH变量.我试图添加路径
VC++ Directories -> Executable Directories
Run Code Online (Sandbox Code Playgroud)
但它似乎是建筑的道路,而不是跑步.那么,如何正确添加VC++项目的路径以正确运行我的程序呢?
我开发了一套音频流服务器,所有这些服务器都使用Twisted,当然它们都是Python语言.他们工作,但一个问题一直困扰着我,当我在正在运行的服务器中发现一些错误,或者我想在服务器中添加一些东西时,我需要阻止它们并开始.与HTTP服务器不同,可以随时重新启动它们,但对于音频流服务器则不行.一旦我重新启动流式传输服务器,这意味着我的用户将遇到断开连接.
我确实尝试设置一个沙井(一个用于Twisted服务器的ssh服务,你可以登录并在控制台中输入Python代码来做某事),并连接到控制台,即时重新加载Python模块.它有时很有效,但很难控制.你永远不知道服务器中有多少旧类的实例,其中一些可能很难达到,类的关系会非常复杂.此外,它可能在某些情况下有效,但有时您确实需要重新启动服务器,例如,您正在使用选择器reactor运行服务器,而您希望使用epoll reactor运行它,然后您必须重新启动它.另一个例子,当内存使用率过高时,你也必须重新启动它们.
为了构建这样的系统,我有一个想法,我想是可以将这些连接和数据从一个进程移交给另一个进程.例如:
我们有一个名为Broadcasting的服务器,正在运行的实例在rev.123下,我们想用rev.124替换它.
Broadcasting rev.123 is running....
Startup Broadcasting rev.124 ....
Broadcasting rev.124 is stand by
Hand over connections from instance of rev.123 to instance of rev.124
Stop Broadcasting rev. 123 instance
Run Code Online (Sandbox Code Playgroud)
这可能吗?我不知道套接字句柄的生命周期是否与进程绑定,我认为当创建者进程被杀死时,进程创建的套接字将被关闭,但我不确定.如果有可能,是否有任何指导或文章来设计这种热代码交换机制?有什么东西可以达到我想要的Twisted已经完成了吗?
谢谢.
我正在写一个网站,允许用户提交信用卡信息并订阅我的Web服务。我正在处理数据库记录和PayPal API,我注意到会出现一些潜在的问题。也就是说,如果以下数据库操作失败,我将无法回滚PayPal API调用。例如,假设我们创建了一个定期付款配置文件,并在RMDB事务中将记录写到这样的数据库中
Transaction begin
CreateRecurringPaymentsProfile (PayPal)
Insert a record to table 'subscription'
Transaction end
Run Code Online (Sandbox Code Playgroud)
如果没有问题,这可以正常工作,但是如果我们将预订记录插入数据库失败,该怎么办?
Transaction begin
CreateRecurringPaymentsProfile (PayPal)
Insert a record to table 'subscription' failed
Transaction rolled back
Run Code Online (Sandbox Code Playgroud)
当然,我们可以回滚数据库的事务,但是我们不能回滚PayPal API调用。然后,我们在PayPal有一个孤儿定期付款资料。我有一个主意,我可以先创建订阅记录,然后再更新。
Transaction begin
Insert a record to table 'subscription'
Transaction end
Transaction begin
CreateRecurringPaymentsProfile (PayPal)
Update subscription record
Transaction end
Run Code Online (Sandbox Code Playgroud)
这样,如果数据库操作失败,则至少我们具有订阅记录。这可能是一个可能的解决方案,但是我想知道有什么好的做法不能像这样回滚数据库操作?特别是当我们处理金钱时。
谢谢。
我注意到当我通过这样的 bash 脚本运行挂起进程时
foo.sh:
sleep 999
Run Code Online (Sandbox Code Playgroud)
如果我通过命令运行它,然后按 Ctrl+C
./foo.sh
^C
Run Code Online (Sandbox Code Playgroud)
睡眠将被中断。但是,当我尝试用 SIGINT 杀死它时
ps aux | grep foo
kill -INT 12345 # the /bin/bash ./foo.sh process
Run Code Online (Sandbox Code Playgroud)
然后看起来 bash 和 sleep 忽略了 SIGINT 并继续运行。这让我很惊讶。我认为 Ctrl + C 实际上是向前台进程发送 SIGINT,那么为什么终端中的 Ctrl + C 和kill -INT 的行为不同呢?
我创建了一个协议Alamofire.Response,然后像这样扩展它
import Alamofire
public protocol MyResponseType {
typealias Value
typealias Error: ErrorType
var request: NSURLRequest? { get }
var response: NSHTTPURLResponse? { get }
var data: NSData? { get }
var result: Alamofire.Result<Value, Error> { get }
init(request: NSURLRequest?, response: NSHTTPURLResponse?, data: NSData?, result: Alamofire.Result<Value, Error>, timeline: Alamofire.Timeline)
}
extension Alamofire.Response: MyResponseType {}
Run Code Online (Sandbox Code Playgroud)
构建过程通过了,但是当涉及链接时,它失败了.这是错误
Undefined symbols for architecture x86_64:
"Alamofire.Response.data.getter : __ObjC.NSData?", referenced from:
protocol witness for wtftest. MyResponseType.data.getter : __ObjC.NSData? in conformance <A, B where B: Swift.ErrorType> …Run Code Online (Sandbox Code Playgroud) 我想定义一个函数根据我给出的键返回不同类型的对象。createElement这基本上就像函数中使用的技巧一样
https://github.com/Microsoft/TypeScript/blob/master/lib/lib.dom.d.ts#L3117
但是,我想使用字符串枚举类型代替字符串文字。所以我写了这样的东西
class Dog {}
class Cat {}
class Bird {}
enum Kind {
Dog = 'Dog',
Cat = 'Cat',
Bird = 'Bird'
}
interface KindMap {
[Kind.Dog]: Dog
[Kind.Cat]: Cat
[Kind.Bird]: Bird
}
function getAnimal<K extends keyof KindMap> (key: K): KindMap[K] {
switch (key) {
case Kind.Dog:
return new Dog()
case Kind.Cat:
return new Cat()
case Kind.Bird:
return new Bird()
}
}
Run Code Online (Sandbox Code Playgroud)
然而,TypeScript 似乎不喜欢我将enum Kind's 值放在接口内作为计算属性的方式,它抱怨
A computed property name in an interface must …Run Code Online (Sandbox Code Playgroud) python ×3
twisted ×2
ajax ×1
alamofire ×1
atomic ×1
bash ×1
browser ×1
c++ ×1
comet ×1
console ×1
database ×1
diagram ×1
directory ×1
dll ×1
exception ×1
graphviz ×1
linux ×1
on-the-fly ×1
paypal ×1
plone ×1
runtime ×1
shell ×1
signals ×1
swift2 ×1
templates ×1
timeout ×1
transactions ×1
typescript ×1