什么力量正在努力保持狡猾的旧Make(有或没有makefile生成器工具)作为构建工具突出?是否存在替代方案的缺陷,使其无法被广泛采用,或者宣传不足,或者做些什么来使其保持到位?
尽管Make在处理大型项目方面存在许多缺点和困难(例如参见http://freshmeat.net/articles/what-is-wrong-with-make),但它似乎仍然比新的,改进的替代品(如Scons)更广泛地使用.Jam,Rake,Cook等.
这些替代方案是否有可衡量的收益,或者"市场份额"主要归功于团队领导者的意见和经验?
我正在编写Python 2.6代码,通过Windows中的COM 与NI TestStand 4.2连接.我想为变量创建一个"NAN"值,但如果我传递它float('nan'),TestStand 会将其显示为IND.
显然,TestStand区分浮点"IND"和"NAN"值.根据TestStand的帮助:
IND对应于Visual C++中的信令NaN,而NAN对应于QuietNaN这意味着Python 在通过COM时float('nan')实际上是一个信令NaN.然而,从我读到的有关信号NaN的内容来看,似乎信号NaN有点"异国情调"而Quiet NaN是你的"常规"NaN.所以我怀疑Python会通过COM 传递信令NaN.我怎么能知道Python float('nan')是通过COM作为信令NaN还是Quiet NaN传递,还是可能不确定?
在与其他语言连接时,有没有办法在Python中建立信令NaN与QuietNaN或Indeterminate?(ctypes或许使用?)我认为这将是一个特定于平台的解决方案,在这种情况下我会接受.
更新:在TestStand序列编辑器中,我尝试制作两个变量,一个设置为NAN,另一个设置为IND.然后我把它保存到一个文件中.然后我打开文件并使用Python读取每个变量.在这两种情况下,Python都将它们作为nanfloat 读取.
Python 3.x将低级模块'thread'重命名为'_thread' - 我不明白为什么在文档中.有人知道吗?
我希望能够使用Python类作为元素进行矩阵运算 - 在这种情况下,是一个简单的Galois字段实现.它实现必要的__add__,__mul__,__sub__等.
起初,我以为这应该是可能的numpy的阵列,使用dtype参数,但是从该dtype文档,似乎dtype不能是任意Python类.例如,我有一个Galois以模2运算的类:
>>> from galois import Galois
>>> Galois(1) + Galois(0)
Galois(1)
>>> Galois(1) + Galois(1)
Galois(0)
Run Code Online (Sandbox Code Playgroud)
我可以尝试在numpy中使用它:
>>> import numpy as np
>>> a = np.identity(4, Galois)
>>> a
array([[1, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, 1]], dtype=object)
Run Code Online (Sandbox Code Playgroud)
但是如果我对矩阵进行操作,则元素不遵循我的类的方法:
>>> b = np.identity(4, Galois)
>>> a+b
array([[2, 0, 0, …Run Code Online (Sandbox Code Playgroud) Python 3.0中的C API已经更改(不建议使用)文件对象的许多功能.
之前,在2.X中,您可以使用
PyObject* PyFile_FromString(char *filename, char *mode)
Run Code Online (Sandbox Code Playgroud)
创建Python文件对象,例如:
PyObject *myFile = PyFile_FromString("test.txt", "r");
Run Code Online (Sandbox Code Playgroud)
...但是Python 3.0中不再存在这样的功能.什么是Python 3.0相当于这样的调用?
import xml.parsers.expat
def start_element(name, attrs):
print('Start element:', name, attrs)
def end_element(name):
print('End element:', name)
def character_data(data):
print('Character data: %s' % data)
parser = xml.parsers.expat.ParserCreate()
parser.StartElementHandler = start_element
parser.EndElementHandler = end_element
parser.CharacterDataHandler = character_data
parser.ParseFile(open('sample.xml'))
Run Code Online (Sandbox Code Playgroud)
上面的工作在python 2.6但不在python 3.0中 - 任何使它在python 3中工作的想法非常赞赏.我上ParseFile线的错误是TypeError: read() did not return a bytes object (type=str)
Python 3.x看起来更具吸引力的是清理语法(我喜欢它,其他人可能没有)新功能以及看起来逐步向更快速和更好的多线程发展.
但是由于缺乏第三方支持,Python 3.x仍然受阻.Django,Twisted等重要软件包没有移植.很难概述迁移中的瓶颈在哪里,它到底有多远,以及它是否正在发展.迁移依赖性也很难映射.此外,项目可能正在等待Python 3.x提供超过2.x的一些重大改进,这将证明移植工作的合理性.
理想情况下,总体上会有一个跟踪此迁移的站点,其中显示(链接)迁移计划和依赖关系,以便愿意帮助全球迁移的人员可以协调他们的工作并帮助特定项目.也许还链接到项目的错误跟踪系统,用于相关的迁移相关错误.
但也许我只是看起来不够努力.有人知道跟踪全球迁移到Python 3.x的任何努力吗?
("全局",我指的是基于Python构建的开源项目的范围.)
我正在使用bash脚本.jar从任何位置调用和执行文件,而不必经常输入其显式路径.
该.jar要求在执行中指定的其他变量参数,因为这些可以是任何东西,他们不能被硬编码到脚本.
共有3个变量,第一个指定要执行的2个操作中的1个.jar,第二个指定要执行此操作的目标文件,第三个指定操作要创建的文件的名称.
我目前使用的脚本是:
#!/bin/bash
java -jar "C:\path\to\file.jar" "$1" "$2" "$3"
Run Code Online (Sandbox Code Playgroud)
我不是很了解的bash脚本,但在寻找另一种答案我的困境(现已修复),我碰到"$@"和"$*"引用命令行参数的时候.做更多搜索带我到这个网站:如何维基:如何在bash脚本中读取命令行参数,但我无法找到任何有关这些参数的可靠信息,而无需通过大量的高级bash编程我的头.
所以现在我已经永远漫步,我的问题相对简单:
我可以"$1" "$2" "$3"用"$@"或替换"$*",如果是,哪个更好用?
那些命令之间的区别是什么?
bash arguments argument-passing command-line-arguments command-line-parsing
我注意到对于串行设备,例如/dev/ttyUSB0,多个进程可以打开设备,但只有一个进程获取字节(以先读取它们为准).
但是,对于Linux输入API,例如/dev/input/event0,多个进程可以打开设备,并且所有进程都能够读取输入事件.
我目前的目标:
我想为几个多位置开关编写驱动程序(例如,具有3个或4个可能位置的滑动开关),应用程序可以获得任何开关位置变化的通知.理想情况下,我想使用Linux输入API,但似乎Linux输入API不支持多位置开关的概念.所以我正在研究制作一个与Linux输入API具有类似功能的自定义驱动程序.
两个问题:
目标是"锁定"对串行设备或其他Linux设备的访问,以确保在设备正在使用时对设备进行独占访问.例如,这可以防止两个程序打开相同的串行设备并"竞争"从设备读取字节.
建议一直使用SYSV风格的UUCP设备锁文件等/var/lock/LCK..ttyS1.这就是Linux Serial HOTWO推荐的:Locking Out Others.它还记录在Filesystem Heirarchy标准中.它由gtkterm,picocom等串行终端程序实现.有库,比如liblockdev和liblockfile支持这个(尽管实现细节这两个库之间的差异).
但是,我发现Debian bug#734086,在Linux上说,SYSV风格的UUCP设备锁已被弃用,flock()应该使用咨询锁.
但是,我找不到一个可靠的文档源来描述这些SYSV式UUCP设备锁的弃用,以及flock()Debian bug本身以外的推荐.
我还发现实用程序ioctl(fd, TIOCEXCL)使用哪个screen锁定终端.
在Linux中锁定串口和其他设备的现代"最佳实践"是什么?我们在哪里可以找到描述这个的最新文档?
python ×6
python-3.x ×4
linux ×2
arguments ×1
bash ×1
build-tools ×1
com ×1
interop ×1
locking ×1
makefile ×1
matrix ×1
migration ×1
nan ×1
numpy ×1
python-2.6 ×1
python-c-api ×1
scons ×1
serial-port ×1
windows ×1