我们希望实施一个工作流程,要求多人对数据进行数字签名.如果我在自己的钥匙串中有多个密钥,我可以做一些简单的事情:
gpg --sign -u userid1 -u userid2 filename
Run Code Online (Sandbox Code Playgroud)
但是,如果我已经签署了一份文件并想要添加签名,该怎么办?一种解决方案是让每个人为文档生成分离的签名,然后将它们全部打包在一个zip文件或其他东西中,但是那里的开销要高得多.有没有更好的办法?
我们想使用git来维护系统配置.因为有时配置数据存在于/ etc之外,我们已经开始在我们的系统上做这样的事情了:
# cd /
# git init
# git add etc
# git add some/other/path
# git commit -m 'initial import'
Run Code Online (Sandbox Code Playgroud)
等等.这很有效.只要你的cwd =='/',git就能正常运行.但是,例如,如果您尝试从子目录中运行git:
cd /etc
git status
Run Code Online (Sandbox Code Playgroud)
你得到了垃圾.在我们的例子中,成千上万行的"已删除:"列表显然仍然存在.此行为似乎是在/中运行git所独有的.在其他地方做同样的事情就可以了.
我可以"修复"这样的行为:
GIT_WORK_TREE=/ git status
Run Code Online (Sandbox Code Playgroud)
嘿,一切都按照Linus的意图行事......但这是一种痛苦.我不想单方面在环境中设置它(因为这会与在其他存储库中使用git冲突),并且我想避免使用包装器脚本.我还有其他选择吗?
是否可以__getitem__使用setattr()?动态地将特殊方法分配给类实例?例如,如果我有这个:
class Example (object):
pass
Run Code Online (Sandbox Code Playgroud)
然后尝试这个:
>>> example = Example()
>>> setattr(example, '__getitem__', lambda x: 1)
Run Code Online (Sandbox Code Playgroud)
我明白了:
>>> example['something']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'Example' object has no attribute '__getitem__'
Run Code Online (Sandbox Code Playgroud)
但当然这很好用:
>>> example.__getitem__('something')
1
Run Code Online (Sandbox Code Playgroud)
这里显然有一些事情,我不明白Python如何为这类事情进行方法查找.是否必须在类上设置这些方法,而不是在实例上设置?
更新:
所以,我应该说清楚,我知道我可以在Example课堂上看到这一点...我希望有一种方法可以在每个实例中设置它们,但我到目前为止看到的共识是你不能这样做.
这段代码之间有什么区别,它使用点表示法进行属性访问:
def get_foo(self):
try:
return self._attribute
except AttributeError:
self._attribute = 'something'
return self._attribute
Run Code Online (Sandbox Code Playgroud)
以及使用该getattr函数的以下代码:
def get_foo(self):
try:
return getattr(self, '_attribute')
except AttributeError:
self._attribute = 'something'
return self._attribute
Run Code Online (Sandbox Code Playgroud)
他们对我来说似乎表现得一样,但我在一些代码中遇到了后一个例子,我很好奇为什么getattr()在这种情况下会选择调用。
我们已经愉快地将 ArgoCD 与公共存储库一起使用了一段时间,但在尝试将 ArgoCD 连接到私有存储库时遇到了问题。我们有一个Application看起来像这样的:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: example-app
namespace: argocd
spec:
destination:
name: example-cluster
namespace: open-cluster-management-agent
project: ops
source:
path: .
repoURL: ssh://git@github.com/example-org/example-repo.git
targetRevision: HEAD
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- Validate=false
- ApplyOutOfSyncOnly=true
Run Code Online (Sandbox Code Playgroud)
以及相应的密钥,其密钥如下所示:
apiVersion: v1
metadata:
labels:
argocd.argoproj.io/secret-type: repository
name: example-repo
namespace: argocd
type: Opaque
stringData:
sshPrivateKey: |
-----BEGIN OPENSSH PRIVATE KEY-----
...
-----END OPENSSH PRIVATE KEY-----
url: ssh://git@github.com/example-org/example-repo.git
kind: Secret
Run Code Online (Sandbox Code Playgroud)
ArgoCD 无法同步此应用程序并显示以下错误:
rpc error: code = Unknown desc = …Run Code Online (Sandbox Code Playgroud) 我可以在apache2/sites-enabled/000-default配置文件中有两个AuthUserFile指令吗?
<Location /repo/trac>
AuthType Basic
AuthName "Trac"
AuthUserFile /etc/apache2/passfile1
AuthUserFile /etc/apache2/passfile2
Require valid-user
</Location>
Run Code Online (Sandbox Code Playgroud)
我想要两种类型用户的用户名/密码.
我有两个选择:为Trac和Svn保留单独的密码文件并单独包含它们,或者在1中有2个密码文件我将DEV放在其他NOM中,并且仅包含1个用于svn并包括两个在trac位置下.
我写了一个设计为"可卷曲"的小型Web服务,因此它依赖application/x-www-form-urlencoded于POST请求中的参数,例如:
curl http://api.example.com/ -d param1=foo -d param2=bar
Run Code Online (Sandbox Code Playgroud)
我想使用Apiary记录此服务,但我一直无法找到为这些参数提供结构化文档的方法.我可以提供这样的示例请求......
+ Request (application/x-www-form-urlencoded)
param1=foo¶m2=bar
Run Code Online (Sandbox Code Playgroud)
...但是这不允许我提供有关各个参数的文档(并且不适合在蜂房控制台中进行测试,因为它无法为各种参数提供输入字段).
我已经阅读了几次api蓝图规范,但我一直无法找到一个好的解决方案.有没有办法为这些参数提供结构化文档?
Python 的标准库模块 sqlite3 支持加载 sqlite 扩展,也支持全文搜索。ORM Peewee还包括支持。(两者都支持FTS3/FTS4并且 Peewee 也明确支持 FTS5。
在 Pony ORM 应用程序中,我如何最好地集成 sqlite3 的全文搜索,无论是 FTS3/FTS4 还是 FTS5?
我想原则上,我可以使用 sqlite3 模块甚至 Peewee 连接到数据库并使用它们的功能。但是,我不知道是否有任何关于并发访问数据库文件的问题。也可能更好地集成全文搜索,以便例如可以使用理解句法来完成全文搜索。
我正在使用Docker 1.11.1和docker-compose 1.8.0-rc2。
在过去的好时光(例如去年),您可以这样设置docker-compose.yml文件:
app:
image: myapp
frontend:
image: myfrontend
links:
- app
Run Code Online (Sandbox Code Playgroud)
然后像这样启动环境:
docker scale app=3 frontend=1
Run Code Online (Sandbox Code Playgroud)
而你的前端容器可以检查为命名变量的环境变量APP_1_PORT,APP_2_PORT等相应发现可用的后端主机和配置本身。
时代变了。现在,我们这样做...
version: '2'
services:
app:
image: myapp
frontend:
image: myfrontend
links:
- app
Run Code Online (Sandbox Code Playgroud)
...而不是环境变量,我们得到了DNS。因此,在
frontend容器内,我可以要求app_app_1or app_app_2或
app_app_3得到对应的IP地址。我也可以要求
app获得地址app_app_1。
但是,如何发现所有可用的后端容器?我想我可以循环getent hosts ...直到失败:
counter=1
while :; do
getent hosts app_$counter || break
backends="$backends app_$counter"
let counter++
done
Run Code Online (Sandbox Code Playgroud)
但这看起来很丑陋且脆弱。
我听说过有关轮询dns的传言,但是(a)在我的测试环境中似乎没有发生,(b)如果您的前端需要同时连接到后端,则不一定有帮助。
简单的容器和服务发现如何在现代Docker世界中发挥作用?
如果键的值与变量(字符串)匹配,我一直在获取特定的 json 对象。
我的 json 文件如下所示:
"totalRecordsWithoutPaging": 1234,
"jobs": [
{
"jobSummary": {
"totalNumOfFiles": 0,
"jobId": 8035,
"destClientName": "BOSDEKARLSSP010",
"destinationClient": {
"clientId": 10,
"clientName": "BOSDEKARLSSP010"
}
}
},
{
"jobSummary": {
"totalNumOfFiles": 0,
"jobId": 9629,
"destClientName": "BOSDEKARLSSP006",
"destinationClient": {
"clientId": 11,
"clientName": "BOSDEKARLSSP006"
}
}
},
.....
]
}
Run Code Online (Sandbox Code Playgroud)
我用以下代码阅读了这个 json,result: "{{ lookup('file','CVExport-short.json') | from_json }}"我只能得到一个destClientName键值:
- name: Iterate JSON
set_fact:
app_item: "{{ item.jobSummary }}"
with_items: "{{ result.jobs }}"
register: app_result
- debug:
var: app_result.results[0].ansible_facts.app_item.destClientName
Run Code Online (Sandbox Code Playgroud)
我的目标是获取值 …