小编Hen*_*ica的帖子

jq:获得两个级别的密钥

我有一些看起来像这样的json数据:

{
  "p": {
    "d": {
      "a" : {
        "r": "foo",
        "g": 1
      },
      "b": {
        "r": "bar",
        "g": 2
      }
    },
    "c": {
      "e": {
        "r": "baz",
        "g": 1
      }
    },
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

我想要的东西:

{
  "d": [ 
    "a",
    "b"
  ],
  "c": [
    "e"
  ]
}
Run Code Online (Sandbox Code Playgroud)

我可以在第一级"p"下获取键列表,jq '.p|keys'在第二级使用结构和键jq '.p|map(.|keys)',但我无法弄清楚如何组合它.

jq

10
推荐指数
2
解决办法
7264
查看次数

Perl:rand()的输出是否可以部分预测?

我正在玩perl的rand(),并注意到当提供大于2 ^ 32的参数时,输出的最后几位变得可预测.

我发现说明它的最清晰的方法是使用以下脚本:

srand(); for $i (1..10) { printf "%4x\n",rand(2**48)%2**16 }
Run Code Online (Sandbox Code Playgroud)

每当我执行输出时

5101
6378
2a23
62f2
8d15
effc
9657
2d16
f669
40c0
Run Code Online (Sandbox Code Playgroud)

(这不只是前10个值,但我没有看到复制一长串"随机"数字的观点)

对srand()的调用是多余的,但它可以很容易地提供一个参数,并且看到它不会改变任何东西.

我试过这个:

  • Debian挤压有perl 5.10(randbits = 48)
  • Debian wheezy有perl 5.14(randbits = 48)
  • Debian jessie有perl 5.20(randbits = 48)

我知道rand()不应该是加密安全的,但是可预测的最后16位比我理解的更糟糕.我使用的任何功能都错了吗?

random perl

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

标签 统计

jq ×1

perl ×1

random ×1