小编lar*_*sks的帖子

将OpenPGP签名添加到已签名的文档中?

我们希望实施一个工作流程,要求多人对数据进行数字签名.如果我在自己的钥匙串中有多个密钥,我可以做一些简单的事情:

gpg --sign -u userid1 -u userid2 filename
Run Code Online (Sandbox Code Playgroud)

但是,如果我已经签署了一份文件并想要添加签名,该怎么办?一种解决方案是让每个人为文档生成分离的签名,然后将它们全部打包在一个zip文件或其他东西中,但是那里的开销要高得多.有没有更好的办法?

security gnupg pgp digital-signature

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

如果'/'是存储库的根目录,为什么git会中断?

我们想使用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冲突),并且我想避免使用包装器脚本.我还有其他选择吗?

git version-control configuration system

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

使用setattr()设置特殊方法

是否可以__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课堂上看到这一点...我希望有一种方法可以在每个实例中设置它们,但我到目前为止看到的共识是你不能这样做.

python introspection setattr

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

什么时候 getattr() 不像正常的属性访问?

这段代码之间有什么区别,它使用点表示法进行属性访问:

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()在这种情况下会选择调用。

python

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

ArgoCD 无法与“请求 SSH 代理但未指定 SSH_AUTH_SOCK”同步

我们已经愉快地将 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)

git ssh kubernetes gitops argocd

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

在Apache2中可以有两个密码文件吗?

我可以在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)

我想要两种类型用户的用户名/密码.

  • DEV - 可以访问SVN和Trac
  • NOM - 只能访问Trac

我有两个选择:为Trac和Svn保留单独的密码文件并单独包含它们,或者在1中有2个密码文件我将DEV放在其他NOM中,并且仅包含1个用于svn并包括两个在trac位置下.

apache apache2 basic-authentication

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

如何使用Apiary记录POST参数?

我写了一个设计为"可卷曲"的小型Web服务,因此它依赖application/x-www-form-urlencodedPOST请求中的参数,例如:

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&param2=bar
Run Code Online (Sandbox Code Playgroud)

...但是这不允许我提供有关各个参数的文档(并且不适合在蜂房控制台中进行测试,因为它无法为各种参数提供输入字段).

我已经阅读了几次api蓝图规范,但我一直无法找到一个好的解决方案.有没有办法为这些参数提供结构化文档?

apiblueprint apiary

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

如何在 Pony ORM 应用程序中集成 sqlite3 的全文搜索

Python 的标准库模块 sqlite3 支持加载 sqlite 扩展,也支持全文搜索。ORM Peewee还包括支持。(两者都支持FTS3/FTS4并且 Peewee 也明确支持 FTS5

在 Pony ORM 应用程序中,我如何最好地集成 sqlite3 的全文搜索,无论是 FTS3/FTS4 还是 FTS5?

我想原则上,我可以使用 sqlite3 模块甚至 Peewee 连接到数据库并使用它们的功能。但是,我不知道是否有任何关于并发访问数据库文件的问题。也可能更好地集成全文搜索,以便例如可以使用理解句法来完成全文搜索。

sqlite orm full-text-search ponyorm

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

服务发现如何与现代docker / docker-compose一起使用?

我正在使用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_PORTAPP_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_2app_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世界中发挥作用?

service-discovery docker docker-compose

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

在 Ansible 中循环 json 对象

如果键的值与变量(字符串)匹配,我一直在获取特定的 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)

我的目标是获取值 …

json loops ansible

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