小编max*_*max的帖子

Go的openpgp包中的PGP密钥装甲编码

我正在尝试使用Go的openpgp/armor包以ASCII装甲编码打印PGP公钥.

我期望的输出:

-----BEGIN PGP PUBLIC KEY BLOCK-----

<base64 encoded bytes of public key>
<checksum>
-----END PGP PUBLIC KEY BLOCK-----
Run Code Online (Sandbox Code Playgroud)

我得到的输出:

-----BEGIN PGP PUBLIC KEY BLOCK-----

<first part of base64 encoded bytes of public key>
Run Code Online (Sandbox Code Playgroud)

它只打印公钥的第一部分.

公钥是从本地密钥环文件获取的,并按如下方式处理:

keyRingFileBuffer, err := os.Open(keyRingFilePath)
if err != nil {
    log.Fatal(err)
}
defer keyRingFileBuffer.Close()

keyRing,err := openpgp.ReadKeyRing(keyRingFileBuffer)
if err != nil {
    log.Fatal(err)
}

for _, k := range keyRing {
    w, _ := armor.Encode(os.Stdout, openpgp.PublicKeyType, nil)
    k.PrimaryKey.Serialize(w)
}
Run Code Online (Sandbox Code Playgroud)

我不正确地使用包裹吗?关于如何跟踪这个(在我看来)错误输出的原因的任何想法?

gnupg pgp go openpgp public-key-encryption

9
推荐指数
1
解决办法
405
查看次数

imap与grequest库中的map相对应

据我知道的区别map,并imap是map等待所有请求完成,然后返回有序数据.而imap立即返回数据并减少订单.

我用的时候:

urls = [...some_data...]
rs = (grequests.get(u,, hooks=dict(response=callback_f)) for u in urls)
r = grequests.map(rs)
Run Code Online (Sandbox Code Playgroud)

所有请求完成后立即使用挂钩,并调用回调函数.

我用的时候:

urls = [...some_data...]
rs = (grequests.get(u,, hooks=dict(response=callback_f)) for u in urls)
r = grequests.imap(rs)
Run Code Online (Sandbox Code Playgroud)

然后没有发送单个请求.

根据文档图和imap有着相同的API.

这是预期的行为吗?我不应该使用带有imap的钩子吗?我使用的是Python 3.5.

python gevent python-3.x python-requests grequests

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

在 Ruby 中读取 PostgreSQL Bytea 列

我正在尝试bytea使用 Ruby 从 PostgreSQL读取一列。问题在于它返回值的十六进制编码字符串bytea。我希望它返回的结果与打开具有相同内容的二进制文件完全相同File.read()。

以下给了我十六进制编码的值:

require 'pg'

conn = PG.connect(...)
res  = conn.exec('SELECT bytea_column FROM some_table')
res.each do |r|
    raw = r['bytea_column']
    puts "#{raw}"
end
Run Code Online (Sandbox Code Playgroud)

我想我需要用来正确PG::TextDecoder::Bytea解码bytea列。这样对吗?如果是这样,它究竟应该如何使用?

ruby postgresql ruby-on-rails binaryfiles binary-data

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

Golang将对象的元素复制到切片中

有没有更好的方法将函数应用于对象的字段,然后将结果复制到新的切片?更好的我的意思是比for循环具有更好的性能.

var tmp []string
for _, value := range some_object.some_field {
    tmp = append(tmp, do_something(value))
}
Run Code Online (Sandbox Code Playgroud)

就像是:

tmp := map_copy(do_something(some_object.some_field))
Run Code Online (Sandbox Code Playgroud)

生成的切片为:

tmp[0] = do_something(some_object.some_value[0])
tmp[1] = do_something(some_object.some_value[1])
tmp[2] = do_something(some_object.some_value[2])
....
Run Code Online (Sandbox Code Playgroud)

arrays go slice

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

是可选的接收器吗?

是否可以为功能定义可选的接收器?

func (r ReceiverType) doSth(arg ArgType) (ReturnType) {
    if r == nil {
        return doSthWithoutReceiver()
    }

    return r.doSthWithReceiver()
}
Run Code Online (Sandbox Code Playgroud)

这样我可以调用函数如下:

var sth ReceiverType
resWithoutRecv := doSth()
resWithRecv := sth.doSth()
Run Code Online (Sandbox Code Playgroud)

不需要基本上写两次相同的功能,一次使用和没有接收器一次?既然我没有找到任何东西,我认为这是不好的做法?

go

0
推荐指数
1
解决办法
65
查看次数