小编mcs*_*sim的帖子

使用自签名证书配置本地注册表

我想用我将在本地网络中使用的自签名证书配置本地docker注册表。我正在按照docker manual [1、2]的说明进行操作,但是仍然遇到错误。

确切地说,我的问题如下。我在本地注册表计算机上创建一个自签名证书:

openssl req \                                 
  -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key \
  -x509 -days 365 -out certs/domain.crt \
  -subj "/C=US/ST=Oregon/L=Portland/O=Company Name/OU=Org/CN=openmpi-dockerregistry.local"
Run Code Online (Sandbox Code Playgroud)

我将此证书放入/etc/docker/certs.d/openmpi-dockerregistry:443/ca.crt每台本地计算机上。

然后,我启动注册表并在其中推送图像。由于我的网络中未配置DNS,因此只需在中输入即可/etc/hosts

接下来,我尝试将图像拉到本地计算机上,但是此操作失败:

$ docker run -it openmpi-dockerregistry.local:443/hello-world
Unable to find image 'openmpi-dockerregistry.local:443/hello-world:latest' locally
docker: Error response from daemon: Get https://openmpi-dockerregistry.local:443/v2/: x509: certificate is not valid for any names, but wanted to match openmpi-dockerregistry.local.
See 'docker run --help'.
Run Code Online (Sandbox Code Playgroud)

我对消息“ x509:证书对任何名称均无效”非常怀疑,这听起来我没有正确指定CN,但是读取证书则表明相反(完整输出):

 $ openssl x509 -text -noout -in certs/domain.crt
 ....
    Signature Algorithm: sha256WithRSAEncryption …
Run Code Online (Sandbox Code Playgroud)

openssl docker docker-registry

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

以十六进制打印大数

我试图将大数转换为 R 中的十六进制表示形式,但它失败了,因为它无法容纳 32 位整数。有什么办法可以克服这个限制吗?

> print(0xffffffff+0x10000000)
[1] 4563402751
> as.hexmode(0xffffffff+0x10000000)
Error in if (is.double(x) && (x == as.integer(x))) x <- as.integer(x) : 
  missing value where TRUE/FALSE needed
In addition: Warning message:
In as.hexmode(4294967295 + 268435456) : NAs introduced by coercion
Run Code Online (Sandbox Code Playgroud)

r string-formatting

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

Go中的父子上下文取消订单

我想知道在 golang 中取消上下文时是否有任何关于返回顺序的保证。

我想创建一个带有取消的上下文,一旦所有侦听器都完成了处理捕获并对此上下文中的“<-ctx.Done()”做出反应后,我想安全地调用 os.Exit。

下面是一个解释我想要的想法的具体例子。我想捕捉一个信号,触发所有取消,然后调用 os.Exit()。

我创建了一个上下文并监听了一个信号:

ctx, cancel := context.WithCancel(context.Background())
go func() {
    c := make(chan os.Signal)
    signal.Notify(c, os.Interrupt)
    defer signal.Stop(c)

    select {
    case <-c:
        cancel()
    }
}()
Run Code Online (Sandbox Code Playgroud)

在其他地方,我多次“注册”此请求:

res := NewRes()
go func() {
    <-ctx.Done():
    res.Close()
}()
Run Code Online (Sandbox Code Playgroud)

但是然后我想在所有侦听器都完成时调用 os.Exit 。

为此,我计划像这样创建父上下文或子上下文:

parent, pCancel := context.WithCancel(context.Background())
child, _ := context.WithCancel(parent)
go func() {
    c := make(chan os.Signal)
    signal.Notify(c, os.Interrupt)
    defer signal.Stop(c)

    select {
    case <-c:
        pCancel()
    case <-child.Done():
        os.Exit(0)
    }
}()
Run Code Online (Sandbox Code Playgroud)

不幸的是,我没有找到描述如何取消上下文的顺序的文档,所以我现在无法提出正确的解决方案。

go

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

组织时钟表报告的时间格式

我使用 org-clock 表来跟踪时间。以小时为单位查看时间对我来说更方便,而不是以天为单位。我如何配置组织时钟表来做到这一点?

这是我现在得到的:

* A
  :LOGBOOK:
  CLOCK: [2020-05-08 Fri 10:37]--[2020-05-08 Fri 23:37] => 13:00
  CLOCK: [2020-05-07 Thu 13:37]--[2020-05-07 Thu 23:37] => 10:00
  :END:
* D
  :LOGBOOK:
  CLOCK: [2020-05-08 Fri 03:37]--[2020-05-08 Fri 05:37] =>  2:00
  CLOCK: [2020-05-06 Thu 03:37]--[2020-05-06 Thu 05:37] =>  2:00
  :END:


#+BEGIN: clocktable :scope file :maxlevel 2
#+CAPTION: Clock summary at [2020-05-08 Fri 19:40]
| Headline     |      Time |
|--------------+-----------|
| *Total time* | *1d 3:00* |
|--------------+-----------|
| A            |     23:00 |
| D            |      4:00 …
Run Code Online (Sandbox Code Playgroud)

emacs org-mode

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

反向addr2line

给定一个目标文件和地址,addr2line工具可以将其与源代码中的文件和行号相关联。

我想相反。给定行号和目标文件,我想获得指令地址列表,这些地址对应于源代码中的给定行。

我知道我可以使用objdump -DS并查找一行,但这很不方便,并且需要手动进行过滤才能过滤出地址。如果我给它列出行,您知道有什么工具可以做我想要的吗?

UPD。

我举一个我想要的例子。

我有一组文件行:

src/a.c:14
src/a.c:28
src/b.c:44
Run Code Online (Sandbox Code Playgroud)

我将此列表传递给工具:

cat lines | line2addr -e lib.so
Run Code Online (Sandbox Code Playgroud)

它向我报告这些行的指令地址:

0x442: src/a.c:14
0x444: src/a.c:14
0x44a: src/a.c:14
0x584: src/a.c:28
0x588: src/a.c:28
...
Run Code Online (Sandbox Code Playgroud)

assembly dwarf addr2line

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