YAML有继承权.我见过的最明显的例子是:http://blog.101ideas.cz/posts/dry-your-yaml-files.html
我需要更复杂的东西:我需要覆盖对象的对象的属性.这是一个例子:
database: &default
server:
ip: 192.168.1.5
port: 2000
db_name: test
user:
name: root
password: root
# database foo differs from default by only its port and user password
foo_database:
<<: *default
server:
port: 2001
db_name: foo
user:
password: foo_root
Run Code Online (Sandbox Code Playgroud)
我想得到这个结果:
foo_database.server.ip -> 192.168.1.5
foo_database.server.port -> 2001
foo_database.db_name -> foo
foo_database.user.name -> root
foo_database.user.password -> foo_root
Run Code Online (Sandbox Code Playgroud)
但是,如果您这样声明,您将获得这些属性不正确(根据预期值):
foo_database.server.ip -> will be None
foo_database.user.name -> will be None
Run Code Online (Sandbox Code Playgroud)
因为新的"服务器"对象只有"port"属性,它会覆盖整个旧的"服务器"对象.
我如何获得我想要实现的继承?
我正在尝试使用Chibios.他们提供的示例代码似乎需要stdint.h文件.Makefile给出以下错误:
/usr/lib/gcc/arm-none-eabi/4.8/include/stdint.h:9:26: fatal error: stdint.h: No such file or directory
# include_next <stdint.h>
^
compilation terminated.
../../os/ports/GCC/ARMCMx/rules.mk:182: recipe for target 'build/obj/crt0.o' failed
make: *** [build/obj/crt0.o] Error 1
Run Code Online (Sandbox Code Playgroud)
我在网上找不到任何有用的东西.
当我们在git存储库中有很多(比如20个)子模块时,我们可以像这样安装(和更新)它们:
git submodules update --init --recursive
Run Code Online (Sandbox Code Playgroud)
Git尝试在此命令后下载每个子模块(递归).如果我们想让一些子模块可选(如插件)怎么办?
我们怎样才能让git跳过默认下载这些可选子模块,并在我们标记这个子模块时处理为通常的子模块"好的,从现在开始使用"?
我想更新小部件的值,但为了防止无限循环,我需要阻止调用此小部件.valueChanged信号的回调函数.
以下示例完全按预期工作:
Qt = PySide
class MainWindow(Actor, Qt.QtGui.QMainWindow):
def __init__(self):
Qt.QtGui.QMainWindow.__init__(self)
Actor.__init__(self)
self.ui = Qt.loadUI('simulator.ui')
self.ui.horizontalSlider.valueChanged.connect(self.emit_weight_msg)
def emit_weight_msg(self, value):
self.send({'WeightMessage': {'val': value}})
def handle_WeightMessage(self, msg):
self.ui.horizontalSlider.valueChanged.disconnect(self.emit_weight_msg)
self.ui.horizontalSlider.setValue(msg["val"])
self.ui.horizontalSlider.valueChanged.connect(self.emit_weight_msg)
Run Code Online (Sandbox Code Playgroud)
由于断开和连接valueChanged信号似乎有点像黑客,我想问是否存在更优雅的解决方案.
完整代码在这里:https://github.com/ceremcem/weighing-machine-testing
我正在寻找一种方法,比如:
def setValueSilent(QtObject, value):
tmp_callback = QtObject.get_callback_functions_that_are_set_in_python_code()
QtObject.valueChanged.disconnect(tmp_callback)
QtObject.setValue(value)
QtObject.valueChanged.connect(tmp_callback)
Run Code Online (Sandbox Code Playgroud) 在CouchDB文档中,他们说我们可以批量插入文档,如果需要,可以选择all_or_nothing或者new_edits选项.但似乎,all_or_nothing当我们这样使用时,键没有任何效果:
HOST="http://test:test@localhost:5984/mydb"
curl -vX POST "$HOST/_bulk_docs" \
-H "Content-type: application/json" \
-d @test.json
Run Code Online (Sandbox Code Playgroud)
用test.json:
{
"all_or_nothing":true,
"docs":[
{"_id":"hello"},
{"_id":"world"}
]
}
Run Code Online (Sandbox Code Playgroud)
这将插入具有hello和worldid的文档.重新运行通过更换脚本hello与hello1应引起hello1在数据库中插入,但失败了world文档的记录(因为它没有正确的_rev),因此,他们一方面是因为我们说应该失败all_or_nothing.但最终,有3个文件在数据库中:hello,hello1和world.
我们如何使用all_or_nothingCouchDB?
当我需要相对大的视图时,CouchDB(提交:b029b67)由于“内存不足”而死:
[info] 2017-01-03T16:28:35.523858Z couchdb@localhost <0.756.0> -------- Starting index update for db: shards/00000000-1fffffff/mydb.1483425014 idx: _design/orders
[info] 2017-01-03T16:28:35.523989Z couchdb@localhost <0.754.0> -------- Starting index update for db: shards/80000000-9fffffff/mydb.1483425014 idx: _design/orders
[info] 2017-01-03T16:28:35.524235Z couchdb@localhost <0.755.0> -------- Starting index update for db: shards/c0000000-dfffffff/mydb.1483425014 idx: _design/orders
[info] 2017-01-03T16:28:35.944351Z couchdb@localhost <0.741.0> -------- Opening index for db: shards/e0000000-ffffffff/mydb.1483425014 idx: _design/orders sig: "25d074b71c60188a31fca87891ee036c"
[info] 2017-01-03T16:28:35.944894Z couchdb@localhost <0.780.0> -------- Starting index update for db: shards/e0000000-ffffffff/mydb.1483425014 idx: _design/orders
[os_mon] memory supervisor port (memsup): Erlang has closed
[os_mon] cpu supervisor …Run Code Online (Sandbox Code Playgroud) 我需要执行远程端口转发,该端口将在远程计算机上侦听0.0.0.0而不是127.0.0.1。
我设法做到这一点如下:
现在,我可以使用以下命令连接user @ machine_A:
ssh user @ machine_B -p 2223
当然,本地端口转发是一种解决方法。有没有更清晰的方法可以做到这一点?