我想使用cmake在发布版本的情况下将VERSION设置为发布版本,否则使用编译时.
使用make进行开发构建时,很容易获得编译时间
-DVERSION=`date +%Y-%m-%d_%H:%M`
Run Code Online (Sandbox Code Playgroud)
这可以通过c/c ++源代码直接使用.不幸的是,我还没有发现使用cmake时是如何实现的.
string(TIMESTAMP VERSION "%Y-%m-%d %H:%M")
add_definitions(-DVERSION="${VERSION}")
Run Code Online (Sandbox Code Playgroud)
将VERSION设置为执行cmake的时间.我怎样才能使用cmake时集版本的编译时间(以避免乱动__DATE__,并__TIME__在没有开放标志的)?
当对具有显式复制ctor的对象的容器进行排序时,我得到编译器错误(来自g ++ 4.8.2和clang ++ 3.4,两者都在-std = c ++ 11模式中),我不明白.我已经创建了一个简单的例子来演示这个问题
class A {
public:
explicit A(int i): m_i(i) {};
explicit A(const A& other): m_i(other.m_i) {};
int i() const {return m_i;};
private:
int m_i;
};
bool is_less(const A& a, const A& b) {
return a.i() < b.i();
}
int main(int, char*[]) {
std::vector<A> objects;
objects.push_back(A(3));
objects.push_back(A(5));
objects.push_back(A(-1));
std::cout << is_less(objects[1], objects[2]);
std::sort(objects.begin(), objects.end(), is_less);
for (auto& a: objects) {
std::cout << a.i() << " ";
}
std::cout << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
这失败了
error: …Run Code Online (Sandbox Code Playgroud) 我有一个字符串列表,并希望为每个字符串创建一个菜单项.当用户单击其中一个条目时,始终使用字符串作为参数调用相同的函数.经过一些尝试和研究,我想出了这样的事情:
import sys
from PyQt4 import QtGui, QtCore
class MainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.menubar = self.menuBar()
menuitems = ["Item 1","Item 2","Item 3"]
menu = self.menubar.addMenu('&Stuff')
for item in menuitems:
entry = menu.addAction(item)
self.connect(entry,QtCore.SIGNAL('triggered()'), lambda: self.doStuff(item))
menu.addAction(entry)
print "init done"
def doStuff(self, item):
print item
app = QtGui.QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
现在问题是每个菜单项将打印相同的输出:"项目3"而不是相应的输出.我很感激有关如何做到这一点的任何想法.谢谢.
在目录中运行所有Python文件的最佳方法是什么?
python *.py
Run Code Online (Sandbox Code Playgroud)
只执行一个文件.在shell脚本(或make文件)中为每个文件写一行似乎很麻烦.我需要这个b/c我有一系列小的matplotlib脚本,每个脚本创建一个png文件,并希望一次创建所有图像.
PS:我正在使用bash shell.
有对SO有关使用Python的EVAL许多问题不安全的字符串(例如:Python中的安全性的eval()在不安全的条件?,Python的:使EVAL安全).一致的答案是,这是一个坏主意.
但是,我发现很少有关于哪些字符串可以被认为是安全的信息(如果有的话).现在我想知道是否有"安全字符串"的定义可用(例如:一个字符串只包含小写字母ascii字符或任何符号+ - */()).我发现的漏洞通常依赖于_.,:[]'"之类的东西.这种方法是否安全(用于图形绘制Web应用程序)?
否则,我猜使用解析包,因为Alex Martelli建议是唯一的方法.
编辑:不幸的是,没有任何答案能够给出令人信服的解释,说明为什么/如何将上述字符串视为不安全(一种微小的工作利用)或相反的解释.我知道应该避免使用eval,但这不是问题.因此,我将奖励第一个提出工作漏洞利用或真正好解释为什么如上所述的字符串被认为是安全的.
由于自Python 2.6以来命令模块已弃用,我正在研究替换commands.getstatusoutput的最佳方法,它返回命令返回码和输出的元组.该子模块是相当明显的,但是,它不提供getstatusoutput直接替换.在一个关于getstatusoutput的相关问题中讨论了一个潜在的解决方案- 但是,我并没有考虑重写原始函数(它至少有10个LOC),但是想知道是否有更简单的方法.
我想为我现在开发的网站增加价值,以便用户可以查看他们的手机.
我的问题:
我应该为移动版和完整版一个制作不同的模板吗?就像为移动版创建mobile.example.com一样?
Opera Mini不支持JavaScript吗?我有一部装有Opera Mini的手机,似乎JavaScript没有运行.所有Opera Mini都没有JavaScript吗?
Opera Mini是否支持完整的W3C标准HTML和CSS?或者他们有不同的?
是否有任何模拟器可以在不同的手机上查看或测试网站?例如:Iphone浏览器,Blackberry浏览器,WAP和Opera Mini.
谢谢!!!
我对Cython扩展类型相当新,并且对运行时抛出的以下与Cython相关的ValueError感到困惑:
ValueError: vrptwms.node.Node has the wrong size, try recompiling
Run Code Online (Sandbox Code Playgroud)
Node类在vrptwms目录中的文件node.pxd和node.pyx中定义.前者的内容是
cdef class Node:
"""
docstring
"""
cdef public float x, y, demand
cdef public float earliest_start, latest_start, servicetime
cdef public int id
Run Code Online (Sandbox Code Playgroud)
而后者的是(我暂时删除所有希望追查问题的类型声明)
cdef class Node:
"""
Represents either a customer or the depot.
"""
# pylint: disable-msg=C0103, R0913
def __init__(self,
id_,
x,
y,
demand,
earliest_start,
latest_start,
servicetime):
"""
docstring
"""
self.x = float(x)
self.y = float(y)
self.demand = float(demand)
self.earliest_start = float(earliest_start)
self.latest_start = float(latest_start)
self.servicetime = float(servicetime)
self.id …Run Code Online (Sandbox Code Playgroud) Ansi C允许两个不同的结构可以包含彼此的指针(也以结构形式显示 - 它们指向彼此).我知道在许多情况下这不是一个好主意,但这不是问题.是否有可能使用typedef'ed结构实现相同的?
下面的代码工作得很好.
struct b;
typedef struct a {
struct b *bb;
} A;
typedef struct b {
struct a *aa;
} B;
Run Code Online (Sandbox Code Playgroud)
但使用"B"型则失败了
typedef struct b B;
typedef struct a {
B *bb;
} A;
typedef struct b {
A *aa;
} B;
Run Code Online (Sandbox Code Playgroud)
同
错误:重新定义typedef'B'
是否有可能告诉编译器稍后将声明'B'并在A的定义中使用它?
跟随David Morrissey的回答" 如何克隆python中的列表?'我正在运行一些性能测试,并在使用w/numpy数组时遇到意外行为.我知道可以/应该克隆一个numpy数组w /
clone = numpy.array(original)
Run Code Online (Sandbox Code Playgroud)
要么
clone = numpy.copy(original)
Run Code Online (Sandbox Code Playgroud)
但错误地认为切片也会起作用.然而:
In [11]: original = numpy.arange(4)
In [12]: original
Out[12]: array([0, 1, 2, 3])
In [13]: clone = original[:]
In [14]: clone
Out[14]: array([0, 1, 2, 3])
In [15]: clone[0] = 1
In [16]: clone
Out[16]: array([1, 1, 2, 3])
In [17]: original
Out[17]: array([1, 1, 2, 3])
Run Code Online (Sandbox Code Playgroud)
这种轻微的不一致是否有充分的理由,或者我应该提交错误?
给定一个具有属性的类,self.id我需要使用从0开始的计数器填充该属性,并且该类的所有对象在程序的单次运行期间需要唯一的id.这样做的最佳/最pythonic方式是什么?目前我用
def _get_id():
id_ = 0
while True:
yield id_
id_ += 1
get_id = _get_id()
Run Code Online (Sandbox Code Playgroud)
这是在课堂外定义的
self.id = get_id.next()
Run Code Online (Sandbox Code Playgroud)
在课堂上__init__().有一个更好的方法吗?发电机可以包括在课堂上吗?