让我来描述我的情况:
Blond先生和Orange先生正在研究分支A,它在提交M1的主分支上分支出来.分支A有2个提交:A1和A2.
M1
\
\
A1 - A2
Run Code Online (Sandbox Code Playgroud)
与此同时,奥兰治先生承诺并在主分公司M2和M3上多推了两笔.
M1 - M2 - M3
\
\
A1 - A2
Run Code Online (Sandbox Code Playgroud)
布朗先生从遥控器拉出来,过了一会儿决定重新进入主分支:
M1 - M2 - M3
\ \
\ \
A1 - A2 A1` - A2`
Run Code Online (Sandbox Code Playgroud)
现在A1`和A2`是在先生金发的本地存在的衍合的提交,以及A1和A2远程存在.金发先生推动他的提交,使用-f强制他的改变并"重写"历史.现在远程存储库看起来像这样:
M1 - M2 - M3
\
\
A1` - A2`
Run Code Online (Sandbox Code Playgroud)
但奥兰治先生也在A分公司工作.他的本地存储库仍然如下所示:
M1 - M2 - M3
\
\
A1 - A2
Run Code Online (Sandbox Code Playgroud)
Orange先生需要做什么才能与远程存储库中的A分支同步?
正常拉动不起作用.请拉-f强制远程本地的更改?我知道删除本地版本的A并从远程存储库再次提供它将会起到作用,但这似乎并不是实现这一目标的好方法.
我注意到 Rust 书建议使用Rc::clone(&rc)如下rc.clone():
use std::rc::Rc;
let five = Rc::new(5);
// recommended
let _ = Rc::clone(&five);
// not recommended
let _ = five.clone();
Run Code Online (Sandbox Code Playgroud)
为什么?
我一直在尝试使用以下方法在我的kubernetes集群上运行glusterfs集群:
glusterfs-service.json
{
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "glusterfs-cluster"
},
"spec": {
"type": "NodePort",
"selector": {
"name": "gluster"
},
"ports": [
{
"port": 1
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
并且glusterfs-server.json:
{
"apiVersion": "extensions/v1beta1",
"kind": "DaemonSet",
"metadata": {
"labels": {
"name": "gluster"
},
"name": "gluster"
},
"spec": {
"selector": {
"matchLabels": {
"name": "gluster"
}
},
"template": {
"metadata": {
"labels": {
"name": "gluster"
}
},
"spec": {
"containers": [
{
"name": "gluster",
"image": "gluster/gluster-centos",
"livenessProbe": {
"exec": …Run Code Online (Sandbox Code Playgroud) 如果运行像Ansible这样的自动化工具来在云中构建基础架构堆栈(例如AWS),那么将自动化工具和构建堆栈放在云中的不同区域/ VPC中就足够了,或者让自动化变得更有意义本地工具和脚本(自己的数据中心/机器)?
两者似乎都被使用,但我只是想知道是否有最佳实践标准.
automation infrastructure amazon-web-services ansible devops
我们正在使用 Improbable 的gRPC-Web 库向在浏览器中运行的 Javascript 客户端公开 gRPC 服务(在 Go 中实现)。该服务将与现有的前端 Go 服务并存,该服务托管基于 REST 的 API。现有服务使用基于会话的身份验证对其用户进行身份验证(会话 cookie + 使用双重提交 cookie 的XSRF 保护,这也使用一些每个会话的服务器端状态进行验证)。
前端 Go 服务托管各种 API 端点,这些端点要么在本地处理,要么通过将请求代理到其他服务来实现。所有端点都通过 Gin 中间件处理程序链公开,它实现了上述会话身份验证和 XSRF 保护检查。有人建议我们在这个现有的中间件后面托管 gRPC-Web 的gogrpcproxy 组件,以向全世界公开我们的 gRPC 服务。
我有兴趣确保对传入 gRPC-Web 请求进行身份验证的方法是安全的。已提出以下方法:
基于令牌的身份验证——即在 gRPC 请求元数据中传递承载令牌,这些令牌由后端 gRPC 服务验证。这与在不涉及 gRPC-Web 的情况下对原生 gRPC 调用进行身份验证的身份验证模型相匹配。
在这个模型中,gRPC-Web 的职责是实现浏览器和服务器之间的传输抽象,并将请求编组到/来自本机 gRPC 表示;身份验证委托给支持的 gRPC 服务。gRPC-Web 代理作为现有 REST API 外部的单独端点托管。
基于会话的身份验证——重用现有的会话身份验证中间件。在此模型中,grpcweb 代理服务器托管在 Gin 处理程序链之后。在接受请求之前,Gin 执行其通常的检查以验证相关 cookie 和 XSRF 标头是否存在。
这种方法重用了大部分现有的身份验证逻辑。但是,它需要传递 XSRF 标头以确保请求被 Gin 中间件承认。这在当前实现中可以通过设置请求元数据来实现,这是(当前)通过在出站 HTTP …
我正在GCP中使用2个节点(Apache httpd)和域lblb.tonegroup.net设置负载均衡器。
目前,我的负载均衡器工作正常,流量正在2个节点之间切换,但是如何配置将http://lblb.tonegroup.net重定向到https://lblb.tonegroup.net?
是否可以在负载均衡器级别配置它,或者我需要在apache级别配置它?我已安装Google托管SSL证书供参考。
我尝试使用mgo.DialWithInfo函数(在失败的情况下)测试连接到MongoDB的连接.mgo.DialWithInfo不会返回错误,而是会发生恐慌.
我试图添加恢复逻辑以从恐慌中恢复但没有成功.
我的问题是:
mgo.DialWithInfo回复error恐慌?码:
功能
func Connect(mongoDBDialInfo *mgo.DialInfo) error {
log.Infof("connect to MongoDB with %v", mongoDBDialInfo)
defer func() {
if r := recover(); r != nil {
fmt.Println("Recovered in f", r)
}
}()
mongoSession, err := mgo.DialWithInfo(mongoDBDialInfo)
if err != nil {
log.Errorf("error, cannot connect to MongoDB, %v", err)
msg := fmt.Sprintf("fail, cannot connect to MongoDB, %v", mongoDBDialInfo)
sf := "main.main"
errM := err.Error()
util.LogError(msg, sf, errM)
return err
} …Run Code Online (Sandbox Code Playgroud)