小编Man*_*nux的帖子

通过流程多次沟通而不会破坏管道?

这不是我第一次遇到这个问题,这真的让我烦恼.每当我使用Python subprocess模块打开管道时,我只能communicate使用它一次,因为文档指定:Read data from stdout and stderr, until end-of-file is reached

proc = sub.Popen("psql -h darwin -d main_db".split(),stdin=sub.PIPE,stdout=sub.PIPE)
print proc.communicate("select a,b,result from experiment_1412;\n")[0]
print proc.communicate("select theta,zeta,result from experiment_2099\n")[0]
Run Code Online (Sandbox Code Playgroud)

这里的问题是,第二次,Python并不开心.实际上,他决定在第一次沟通后关闭文件:

Traceback (most recent call last):
File "a.py", line 30, in <module>
    print proc.communicate("select theta,zeta,result from experiment_2099\n")[0]
File "/usr/lib64/python2.5/subprocess.py", line 667, in communicate
    return self._communicate(input)
File "/usr/lib64/python2.5/subprocess.py", line 1124, in _communicate
     self.stdin.flush()
ValueError: I/O operation on closed file
Run Code Online (Sandbox Code Playgroud)

是否允许多次通信?

python subprocess pipe

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

从Javascript生成实时MIDI

我做了一些研究,似乎Javascript和MIDI这些天并不顺利.谷歌说至少这样.

如本主题所述: 在javascript中生成MIDI,可以在Javascript或服务器端创建文件,并像播放普通文件一样播放.

但是,我真的希望能够发送个人midi事件,"直播",因为它将是一个持续的用户交互.我想我的计划B将是创建一个Java applet来实现这一点,但之后我的应用程序将不再是纯HTML5.

我也听说HTML5的音频支持目前并不出名,所以我也想知道,如果现在还没有解决方案,未来可能的结果是什么?

谢谢.

javascript midi

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

创建一个Javascript本地应用程序(在浏览器中运行)?

我想编写一个同时使用Javascript和HTML的应用程序作为用户界面.该应用程序不需要互联网连接,但需要访问用户的本地文件.

我的第一个想法是,由于访问本地文件的安全限制,这在浏览器中是不可能的.

我的第二个想法是尝试直接从C++使用webkit并使用Python而不是Javascript,但这似乎相当复杂,我觉得使用Qt过度使用.

我的第三个想法是使用签名的Java小程序来进行所有本地访问,但是我对此也不太确定.

关于我应该做什么的任何建议?

html javascript webkit

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

从C函数构建PyObject*?

我正在将Python嵌入到我正在制作的C++库中.我希望用户能够以函数指针的形式传递C函数,PyObject* (fpFunc*)(PyObject*,PyObject*);以便我可以在嵌入式Python中使用这些函数.

所以我有一个函数指针,我知道可以将这个函数作为模块的方法使用PyMethodDef结构并将其传递给它Py_InitModule("module", ModMethods);,从而获得一个PyObject* module我可以轻松地从中获取函数的函数.

但是,我真正欣赏的是能够动态创建此功能,而不必每次都重新创建另一个模块.

我已经研究了Python文档,以及一些Python头文件,想到了一个没有真正成功的hacky方法...但我想知道是否有更传统的方法来做到这一点.

根据我的理解,每个函数都属于一个模块,甚至__builtin__,所以我想我至少需要模块.

有关如何实现这一点的任何想法?

c python python-c-api

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

方法中的静态局部变量是不好的做法?

有些东西让我烦恼.

在非线程程序中,最好是使用本地静态变量(内部方法)还是静态类成员?

在这个例子中:

class C{
public: 
  C(){};
  void foo();
};

void C::foo(){
  static int bar = 0;
  bar++;
  printf("%d\n",bar);
}
Run Code Online (Sandbox Code Playgroud)

如果bar单独使用它会被认为是一种不好的做法C::foo()吗?

c++ variables static

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

与汇编相比,C效率低吗?

可能重复:
汇编程序什么时候比C快?

你好,

这纯粹是一个理论问题,因此,如果有一个"无限"时间来制作一个简单的程序,以及对C和汇编的高级知识,那么在汇编中做一些事情真的更好吗?将C编译成汇编(机器代码)时,"性能"会丢失吗?

根据性能我的意思是,现代C编译器在某些任务中做得不好,直接在Assembly中编程加速吗?

谢谢.

c compiler-construction assembly

7
推荐指数
6
解决办法
5203
查看次数

WebGL中的所有简单函数都在哪里?

glBegin/ glEnd和每顶点绘图glVertex我可以理解使用数组可以更快.

但是在哪里glLoadIdentityglMultMatrixglTranslateglRotate

为什么我们自己必须处理所有的矩阵内容?

javascript webgl

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

为什么虚函数需要用指针传递而不是(对象的)值传递?

我想我理解虚方法和vtable的概念,但是我不明白为什么将对象作为指针(或引用)传递并通过值传递它(将哪种方式丢弃vtable或其他东西)之间存在差异?

为什么会这样的工作:

Material* m = new Texture;
poly->setMaterial(m); 
// methods from Texture are called if I keep carrying the pointer around
Run Code Online (Sandbox Code Playgroud)

而不是这个?:

Material m = Texture();
poly->setMaterial(m);
// methods from Material are called if I pass the value around
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism inheritance virtual-functions object-slicing

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

使用脚本在编译时生成代码

理想情况下,我希望能够将(非常重复的)C/C++代码添加到我的实际代码中,但是在编译时,代码可以来自蟒蛇脚本的stdout,就像使用宏一样.

例如,假设我想拥有依赖于给定类的公共属性的函数,能够在我的C++代码中编写以下内容将是一件幸事:

generate_boring_functions(FooBarClass,"FooBarClass.cpp")
Run Code Online (Sandbox Code Playgroud)

使用传统方法可行吗?或者我必须破解Makefile和临时源文件?

谢谢.

c c++ gcc

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

Javascript列表像数据结构?

看来,如果我没有错,那么由于Javascript处理对象的方式,实现链表是不切实际或效率低下的.

我需要一个数据结构,在其中我可以轻松地执行2个操作(除了索引),最后附加并删除(弹出)给定索引处的对象.

是否使用Array和"重新创建"每个删除操作的最佳解决方案?我想不会.

有任何想法吗?

javascript arrays

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

防止片段着色器中的循环展开

我正在使用最新版本的Chrome(和Firefox)为WebGL(GLSL ES 1.0)编写片段着色器,我编写了一个迭代算法.

首先,我发现循环的长度受到严格限制的困难方式(doc说它必须在编译时可猜测,这意味着它必须是常数或非常接近).

另外,我必须编写一个(for因为它是唯一一个必须根据标准实现的)循环,它可能很长但几乎每次都在结束之前中断.

现在,我注意到如果我设置了更高的最大数量,则着色器的编译和链接需要更多时间.所以,除非我错了,编译器会循环展开.

我不确定是否可以做任何事情,但我已经尝试了一些东西,编译器似乎也内联函数,即使在循环中调用.

我不觉得着色器花费一分钟来编译循环的大约一百次迭代是正常的.或者我做错了什么?片段着色器中的一百次迭代对于GPU来说太过分了吗?因为它在编译之后似乎运行得很好.

loops glsl webgl

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

可逆树长度关系

我试图在"纯粹的"Prolog中写出可逆关系(没有is,剪切或类似的东西.是的,它是家庭作业),我必须承认我不知道如何.我没有看到任何创建这样的事情的过程.

我们被赋予"不可知"但可逆的算术关系(add,mult,equal,less,...),我们必须使用它们来创建这些关系.

现在我正在尝试通过创建关系来了解如何创建可逆函数,tree(List,Tree)如果List是二叉树的叶子列表则为true Tree.

为了实现我试图创造这样的事情tree_size(Tree,N)时,这是真正的关系TreeN叶子.这是我天真的,不可逆转的关系:

tree_len(n(_,leaf,leaf),1).
tree_len(n(op,G,D),N) :-
    tree_len(G,TG),
    tree_len(D,TD),
    add(TG,TD,N).
Run Code Online (Sandbox Code Playgroud)

我可以进行查询tree_len(some tree, N),但不是说tree_len(X,3),所以它不可逆.到目前为止,我已经尝试了一些事情,但我必须承认我感到气馁,因为我不知道在哪里寻找什么.有没有办法做到这一点?

prolog successor-arithmetics clpfd failure-slice

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

JVM实现接口和纯抽象类之间的区别?

我和我的朋友们想知道JVM在接口和纯抽象类之间是否真的存在差异,或者它是否真的是语法糖.

我真的不明白为什么会有区别,但可能不是那么牵强.

java jvm

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