我一直在使用WSGI开发部署在Apache服务器上的Django Web应用程序,一切都进展顺利.今天,我对我的应用程序进行了一些小的更改,admin.py试图自定义内置的Django Admin界面,并且最初产生了语法错误(一个未闭合的括号).这意味着当我触摸wsgi.py并加载代码时(我在我的虚拟主机上以守护进程模式运行WSGI),我的网站被替换为内部服务器错误,因为WSGI在遇到语法错误时停止了.
所以我修复了语法错误,检查了我没有更多manage.py check,并触及wsgi.py重新部署.但我的网站仍然显示内部服务器错误!检查Apache日志,这是我看到的:
[Sun Nov 23 13:52:46 2014] [info] mod_wsgi (pid=19093): Create interpreter 'quotes.cs.cornell.edu|'.
[Sun Nov 23 13:52:46 2014] [info] mod_wsgi (pid=19093): Adding '/extra/www/html/quotes/quotes_django' to path.
[Sun Nov 23 13:52:46 2014] [info] mod_wsgi (pid=19093): Adding '/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/' to path.
[Sun Nov 23 13:52:46 2014] [info] [client 128.84.33.19] mod_wsgi (pid=19093, process='quotes.cs.cornell.edu',
application='quotes.cs.cornell.edu|'): Loading WSGI script '/extra/www/html/quotes/quotes_django/quotes_django/
wsgi.py'.
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] mod_wsgi (pid=19093): Target WSGI script '/extra/www/html/ …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用GDB调试一个简单的C项目,但无论我如何编译它,GDB似乎都找不到该程序的调试符号.
当我将程序加载到GDB时,它声称已成功读取符号,因为它打印
Reading symbols from /home/edward/<executable>...done.
Run Code Online (Sandbox Code Playgroud)
但是,当我运行程序时,打破分段错误并输入info locals,它说
No symbol table info available.
Run Code Online (Sandbox Code Playgroud)
此外,bt显示执行在我写的函数(不是系统或库调用)内停止,但没有行号信息,只有原始内存地址.
为什么GDB不能找到或使用之前成功读取的符号?我已经运行nm和objdump在二进制文件我跑,他们都显示部分一样.debug_info,.debug_line,那么该文件实际上包含调试符号.
我通常用Makefile编译,设置以下标志:
CFLAGS = -mno-red-zone -fno-omit-frame-pointer -ggdb -O0 -I. -Wdeclaration-after-statement -Wall
Run Code Online (Sandbox Code Playgroud)
当我调用gcc时,我可以看到它被使用.但是,我尝试过更改为just -g,并通过调用gcc -g -O0简单的测试文件手动编译,结果仍然相同:二进制文件包含调试符号,GDB读取它们,但是调用任何GDB命令会产生一条消息调试信息不可用.
更新
我正在运行Ubuntu 12.04,我的GDB版本是7.4,而我的GCC版本是4.8.1.
如果我set complaints 10000在GDB然后加载文件,它会打印以下投诉:
Reading symbols from /home/edward/<snip>/minithread...
DW_AT_low_pc 0x400690 is not < DW_AT_high_pc 0x33 for DIE at 0x205 [in module /home/edward/<snip>/minithread]
...DW_AT_low_pc 0x4006c3 is not < DW_AT_high_pc 0xa9 for DIE at …Run Code Online (Sandbox Code Playgroud) 我对C#/ WPF的MVVM设计有疑问.我看过几个演示应用程序,但它们并没有真正解决我的问题.我的应用程序由包含其他对象的对象组成.就像父子关系一样.
我现在的问题是:
我有以下情况:
class Child {
string Name;
}
class ChildVM {
Child _child;
string Name{return _child.Name;}
}
class Parent {
string Name;
List<Child> children;
}
class ParentVM{
Parent _parent;
string Name{return _parent.Name;}
List<ChildVM> children {get;set;}
ParentVM(Parent p){_parent = p;}
}
void CreateANewParent(){
List<ChildVM> children = new List<ChildVM>(){new ChildVM(new Child()),...};
ParentVM parent = new ParentVM(new Parent());
foreach(ChildVM child in children)
parent.children.Add(child);
}
Run Code Online (Sandbox Code Playgroud)
这里的问题是,ParentVM包含ChildVM,但实际的Parent(在ParentVM内)没有ChildVM对象包含的Child对象.我也认为复制Child对象不是一个好主意,因为它会导致冗余,在我的应用程序上下文中也没有必要/可能创建新的Child对象.
我还考虑过以下课程设计:
class ParentVM {
Parent _parent;
string Name{return _parent.Name;}
List<Child> children …Run Code Online (Sandbox Code Playgroud) 我正在尝试将CP1252编码的字符串Çàïèñêèýêñïåäèòîðà转换为UTF-8.我试过这个命令:
iconv -c -f=WINDOWS-1252 -t=UTF-8 test.txt
Run Code Online (Sandbox Code Playgroud)
没有运气,得到一些奇怪的结果:
ÊÀÃÃÃÃÃÃÃÃÃÃÃ,,,,
我尝试在这里输入相同的字符串(Çàïèñêèýêñïåäèòîðà),他们可以毫无问题地转换它:http: //www.artlebedev.ru/tools/decoder/
出了什么问题?
我对C++ 11的智能指针很陌生,我正试图在项目中有效地使用它们.在我的项目,我有很多的需要常量引用一个功能vector的unique_ptr,做一些关于它的计算,并把一些成果在返回参数,如下所示:
void computeCoefficients(const vector<unique_ptr<Scalar>>& roots,
vector<unique_ptr<Scalar>>& coeffs) {
...
}
Run Code Online (Sandbox Code Playgroud)
我正在使用,unique_ptr因为调用所有这些函数的过程是对象的唯一所有者vector,而函数只是"借用"对象以便将它们作为输入读取.
现在我正在尝试编写一个函数,在vector它接收的不同子集上进行计算,为了做到这一点,它需要有不同的"版本" vector包含这些子集,以便传递到另一个函数,vector<unique_ptr<Scalar>>作为输入.但获取向量子集的唯一方法是复制它 - 这是一个问题,因为unique_ptrs无法复制.我希望代码看起来像这样:
void computeOnSet(const vector<unique_ptr<Scalar>>& set, unique_ptr<Scalar>& output) {
...
}
void computeOnAllSubsets(const vector<unique_ptr<Scalar>>& set, vector<unique_ptr<Scalar>>& outputs) {
for(int i = 0; i < input.size(); i++) {
auto subset = vector<unique_ptr<Scalar>>(set.begin(), set.begin()+i);
subset.insert(subset.end(), set.begin()+i+1, set.end();
computeOnSubset(subset, outputs.at(i));
}
}
Run Code Online (Sandbox Code Playgroud)
当然这不起作用.如果我用unique_ptrs 代替s,我可以使它工作shared_ptr,但这有两个问题:
computeOnSubsets功能共享该组的所有权,而我不是; 呼叫者仍然是唯一的所有者.(我读到这shared_ptr意味着你与拥有副本的所有东西共享所有权). …我正在使用Django框架制作一个项目.我用Apache + mod_wsgi托管了一个测试服务器.当我更改一些代码行时,我上传文件并在浏览器中进行测试.但除非我重新加载/重启(/etc/init.d/apache2 reload),否则不会显示新的更改.
除了重新加载Apache之外,还有其他方法可以重新加载/刷新新的更改吗?
我正在使用Java2D库在Java中创建2D游戏,我真的需要一个浮点精度的Polygon对象,我可以用它来绘制游戏对象并对它们进行碰撞检测.遗憾的是,Java的Polygon对象仅以int精度出现,并且没有像Rectangle和Rectangle2D那样的等效Polygon2D.我已经做了足够的研究,看到我有一些选择,但它们似乎都不是很好.
使用Path2D.根据Java开发人员在本论坛发帖称,缺少Polygon2D是一种疏忽,但其建议的替代品是Path2D.不幸的是,Path2D没有提供访问其各个顶点或边的方法,这是我进行碰撞检测所需要的(具体来说,我需要得到一个与每条边正交的矢量).
实现我自己的Polygon2D实现Shape接口,这样我仍然可以传递给它Graphics2D.draw(Shape).这看起来很难.Shape接口需要像contains(Rectangle2D)和那样的棘手实现方法getPathIterator(AffineTransform).对于getPathIterator特别,好像是为了实现它我需要返回类型的PathIterator的对象,但也有接口的PathIterator在公共AWT封装没有具体实现.
在一个"记住"各个顶点并将它们提供给客户端的对象中包裹Path2D.当我需要一个记住其组件形状的区域时,这对我有用:我将它包装在一个实现Shape接口的CompoundShape类中,并将所有Shape方法转发到Area的实现,同时跟踪添加到其中的每个Shape. ArrayList中的区域.这样做的问题是,如果我跟踪两个floats 数组中的各个顶点,就没有办法将它们暴露给用户而没有用户更改顶点的可能性 - 并且因为直接阵列访问会发生这种情况,内部Path2D不会收到有关更改的通知.
复制Polygon.java.Java的Polygon类的实际源代码可以在grepcode.com上找到,我可以简单地用ints 替换与顶点相关的floats来获得Polygon2D.不幸的是,当我尝试这个时,该行import sun.awt.geom.Crossings;抛出一个编译器错误,说"由于对所需库C:\ Program Files\Java\jre7\lib\rt.jar的限制,无法访问类型交叉".根据这个问题,因为Sun的许可协议阻止您用自己的替换核心Java类,但Polygon不会尝试这样做 - 它只是创建了一个类型为sun.awt.geom.Crossings的对象,没有替换或扩展发生了,我确保将我的Polygon副本放在一个名为"java"的包中.
进行此操作的最佳方法是什么?我很欣赏这些选项中的一个如何工作的建议,或者对于没有遇到这些问题的另一个选项的想法.
在JSF和Facelets标签中,这些前缀究竟是什么?
例如:h:head c:catch f:event ui:decorate等
我经常遇到的一个问题是需要以这样的方式存储对象集合,以便我可以通过特定的字段/属性来检索它们,该字段/属性是该对象的唯一"索引".例如,我有一个Person对象,其name字段是唯一标识符,我希望能够从一些Person对象集合中检索Person其中name="Sax Russell".在Java中,我通常通过使用Map我真正想要的地方来实现这一点Set,并且总是使用对象的"索引"字段作为地图中的键,即peopleMap.add(myPerson.getName(), myPerson).我想在C#中用Dictionarys 做同样的事情,像这样:
class Person {
public string Name {get; set;}
public int Age {get; set;}
//...
}
Dictionary<string, Person> PersonProducerMethod() {
Dictionary<string, Person> people = new Dictionary<string, Person>();
//somehow produce Person instances...
people.add(myPerson.Name, myPerson);
//...
return people;
}
void PersonConsumerMethod(Dictionary<string, Person> people, List<string> names) {
foreach(var name in names) {
person = people[name];
//process person somehow...
}
}
Run Code Online (Sandbox Code Playgroud)
然而,这看起来很笨拙,并且在Dictionary …