小编Ric*_*ard的帖子

在Go中测试空字符串的最佳方法是什么?

对于测试非空字符串(在Go中)哪种方法最好(更像是idomatic)?

if len(mystring) > 0 { }
Run Code Online (Sandbox Code Playgroud)

要么:

if mystring != "" { }
Run Code Online (Sandbox Code Playgroud)

或者是其他东西?

string go is-empty

216
推荐指数
7
解决办法
18万
查看次数

docker主机OS和容器基础映像OS之间的关系是什么?

我不确定我问的是正确的问题......但是当我一直在阅读所有可以解决的Docker时,我看到我可以在Ubuntu 12.04上安装Docker(例如)然后我可以安装一个Fedora容器还是不同版本的ubuntu?(有一个例子,用户在容器中安装了busybox.)

当然,我可能完全错了.

但我希望基础系统和容器之间存在短暂的连接.

重申:主机操作系统和容器基础映像的操作系统之间的关系是什么?

docker

118
推荐指数
2
解决办法
3万
查看次数

有没有办法从字符串创建结构的实例?

给定一个结构:

type MyStruct struct {
    A int
    B int
}
Run Code Online (Sandbox Code Playgroud)

和一个带结构名称的字符串

a := "MyStruct"
Run Code Online (Sandbox Code Playgroud)

要么

a := "mypkg.MyStruct"
Run Code Online (Sandbox Code Playgroud)

如何从字符串名称而不是结构创建结构的实例?我的想法是创建一个应用程序,其中所有结构都链接到二进制文件中,但是从字符串创建运行时实例.(一种元元)

go

45
推荐指数
3
解决办法
3万
查看次数

如何在CoreOS中重新启动后自动重启Docker容器?

假设在重新启动操作系统时,任何init.d或systemd类似进程都会自动重启Docker守护程序,重启一个或多个Docker容器的首选方法是什么?例如,我可能在反向代理或数据库服务器后面有许多Web服务器.

docker coreos

38
推荐指数
3
解决办法
3万
查看次数

如何清理我的docker主机

当我创建/调试docker镜像/容器时,docker似乎在我的系统上留下了各种各样的工件.(在某一点上有48个图像限制)但是我最后一次看到那里有20-25张图像; docker images.

所以最重要的问题是:

  • 如何正确清理?
  • 因为我手动删除图像更多开始到达.是吧?
  • 我应该为主机分配多少磁盘空间?
  • 下次重启后会运行守护进程真的重启吗?

和元问题......我没有问过哪些问题需要?

docker coreos

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

git在分支机构之间快速切换的最佳实践

我有多个活动分支,我需要同时处理.显然,我可以创建两个工作目录,每个目录有一个不同的分支.这是唯一的方法,无需"提交"和"结账",以便从一个分支切换到另一个分支?

git

20
推荐指数
3
解决办法
3万
查看次数

如何加密erlang rpc调用(以及Mnesia复制)和其他流量

我相信节点间的通信是明确的,并且cookie值严格用于身份验证.(我还没有任何证据).

  1. 如何加密节点通信?
  2. 如何加密Mnesia复制邮件?
  3. 如何配置防火墙和数据包筛选器以允许这些消息通过?
  4. 如何防止窥探我的erlang流量?

security encryption erlang

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

备份/恢复mnesia数据库的正确方法是什么?

警告:背景信息很长.如果您认为在背景信息之前需要问题,请跳到底部.欣赏这将要采取的时间!

我一直在网上(阅读谷歌),我没有找到一个好的答案.是的,在erlang.org网站上有很多关于Mnesia文档的链接和参考,但即使这些链接也受到版本的影响.

因此,在最简单的情况下,您当前连接的节点()与表集的所有者相同,那么备份/恢复将起作用.例如:

$ erl -sname mydatabase

> mnesia:start().
> mnesia:create_schema(...).
> mnesia:create_table(...).
> mnesia:backup("/tmp/backup.bup").
> mnesia:restore("/tmp/backup.bup", [{default_op, recreate_tables}]).
Run Code Online (Sandbox Code Playgroud)

嘿,这很棒!

但是,如果数据库实际上是在远程接口上的远程节点()或远程节点()上运行,那么您必须以这种方式启动备份:

$ erl -sname mydbadmin

> rpc:call(mydatabase@host, mnesia, backup, ["/tmp/backup.bup"]).
> rpc:call(mydatabase@host, mnesia, restore, ["/tmp/backup.bup", [{default_op, recreate_tables}]]).
Run Code Online (Sandbox Code Playgroud)

当然这也很简单.现在这里是棘手的事情....

  • 假设您正在进行每日备份.你的mnesia数据库服务器死了,你被迫更换硬件.如果要按原样恢复数据库,则需要使用与以前相同的名称命名新硬件,并且还需要将节点命名为相同.
  • 如果要更改硬件和/或节点的名称()...或者要在其他计算机上还原,则需要执行node_change过程.(在这里和mnesia文档中描述)

但事情变得复杂了.虽然我的熟人是erlang和mnesia专家,他们认为mnesia的复制存在严重缺陷,你不应该使用它(目前我还没有其他替代方案,你有什么机会实现更好的版本;不是可能)

所以你有两个节点()复制ram和基于光盘的表.您一直在使用默认的BackupMod维护使用标准备份定期备份数据库的策略.有一天,经理会要求您验证备份.只有当您尝试还原数据库时,才会获得:

{atomic,[]}
Run Code Online (Sandbox Code Playgroud)

根据文档,这意味着没有错误......但是没有表格被恢复.

不想跑你记住,节点()和主机名必须匹配,以便您更改主机名和-sname参数去那里数据被备份的计算机匹配change_node程序.但是这次你得到一个奇怪的错误:

{aborted,{'EXIT',{aborted,{bad_commit,{missing_lock,mydatabase@otherhost}}}}}
Run Code Online (Sandbox Code Playgroud)

仍然不想运行change_node过程我快速克隆恢复我的服务器,以便我有两个类似的机器.然后我恰当地命名以匹配生产服务器.然后我开始恢复过程.找到了!我现在在还原服务器上有真正的工作数据.

我想说这是路的尽头......但我还没有问过一个问题,而且问题的重点......所以这就是它?

问题:如果我想恢复从复制的mnesia节点集群中获取的备份,如何修改文件(类似于change_node过程),以便忽略其他节点或从备份中删除?

问题略有不同:如何在单个节点()上恢复复制多节点()mnesia数据库?

backup erlang mnesia restore

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

如何删除额外的节点

我有一组erlang节点通过Mnesia的"extra_db_nodes"复制他们的数据......我需要升级硬件和软件,所以当我从节点到节点时,我必须分离一些节点.

如何删除节点并仍然保留插入的数据?

[update]删除节点与添加节点一样重要.随着集群的增长,它也必须收缩.如果没有,那么Mnesia将忙于尝试向不存在的节点发送数据以填充队列并保持网络繁忙.

[ 最后更新 ]在通过erlang/mnesia源代码填写后,我能够确定不可能完全取消关联节点.虽然del_table_copy删除了表之间的链接,但它不完整.我会关闭这个问题,但没有一个密切的描述是足够的.

erlang mnesia

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

创建索引而不锁定DB

我有一张超过10万行的表.我需要在单个列上创建索引,但是,索引需要很长时间才能创建,我会对表进行锁定.

值得注意的是,指数正在创建作为它的一部分可能是重要的"耙分贝:迁移"一步......我并不反对手动创建索引是否会工作.

更新:我想我应该提到这是一个写常常表.

mysql rake ruby-on-rails

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

标签 统计

docker ×3

erlang ×3

coreos ×2

go ×2

mnesia ×2

backup ×1

encryption ×1

git ×1

is-empty ×1

mysql ×1

rake ×1

restore ×1

ruby-on-rails ×1

security ×1

string ×1