小编cer*_*cem的帖子

YAML中更复杂的继承?

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"属性,它会覆盖整个旧的"服务器"对象.

我如何获得我想要实现的继承?

inheritance yaml

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

Debian上没有stdint.h文件

我正在尝试使用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)

我在网上找不到任何有用的东西.

c embedded gcc arm stm32

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

如何在git中添加可选的子模块?

当我们在git存储库中有很多(比如20个)子模块时,我们可以像这样安装(和更新)它们:

git submodules update --init --recursive 
Run Code Online (Sandbox Code Playgroud)

Git尝试在此命令后下载每个子模块(递归).如果我们想让一些子模块可选(如插件)怎么办?

我们怎样才能让git跳过默认下载这些可选子模块,并在我们标记这个子模块时处理为通常的子模块"好的,从现在开始使用"?

git plugins git-submodules

8
推荐指数
1
解决办法
263
查看次数

如何在不触发PySide中的valueChanged回调的情况下设置窗口小部件的值?

我想更新小部件的值,但为了防止无限循环,我需要阻止调用此小部件.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)

signals-slots pyside

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

我们如何将CouchDB的_bulk_docs与all_or_nothing选项一起使用?

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)

这将插入具有helloworldid的文档.重新运行通过更换脚本hellohello1应引起hello1在数据库中插入,但失败了world文档的记录(因为它没有正确的_rev),因此,他们一方面是因为我们说应该失败all_or_nothing.但最终,有3个文件在数据库中:hello,hello1world.

我们如何使用all_or_nothingCouchDB?

couchdb transactions pouchdb

5
推荐指数
1
解决办法
915
查看次数

是否可以为CouchDB设置较低的堆大小,以防止出现“无法分配内存”错误?

当我需要相对大的视图时,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)

erlang couchdb out-of-memory

5
推荐指数
0
解决办法
401
查看次数

如何使SSH远程端口转发以侦听0.0.0.0

我需要执行远程端口转发,该端口将在远程计算机上侦听0.0.0.0而不是127.0.0.1。

我设法做到这一点如下:

  1. user @ machine_A $ ssh -R 22:localhost:2222 user @ machine_B
  2. user @ machine_B $ ssh -L 2222:*:2223 user @ localhost

现在,我可以使用以下命令连接user @ machine_A:

ssh user @ machine_B -p 2223

当然,本地端口转发是一种解决方法。有没有更清晰的方法可以做到这一点?

ssh portforwarding

4
推荐指数
2
解决办法
6140
查看次数