我正在传递一个uuid使用Context和WithValue处理它的后续函数*http.request.此uuid已在授权标头中传递给REST调用以标识某个人.验证授权令牌并且需要可访问以检查呼叫本身是否已被授权.
我用了:
ctx := context.WithValue(r.Context(), string("principal_id"), *id)
Run Code Online (Sandbox Code Playgroud)
但是高尔特抱怨道:
should not use basic type string as key in context.WithValue
Run Code Online (Sandbox Code Playgroud)
什么是可用于检索此键的最佳选项,该键不是像简单字符串那样的基本类型?
我希望我的Terraform配置通过调用命令来配置服务器并在最后启动服务并继续运行它.我尝试使用nohup和屏幕使用remote-exec:
nohup的:
provisioner "remote-exec" {
inline = "nohup sudo command &"
}
Run Code Online (Sandbox Code Playgroud)
屏幕:
provisioner "remote-exec" {
inline = "screen -d -m sudo command"
}
Run Code Online (Sandbox Code Playgroud)
我通过手动登录来检查命令是否正在运行.但他们没有保持流程运行.如果我手动尝试这些命令并且使用ssh调用它们也可以.
如何在返回控制流时使用Terraform配置来启动命令并使其保持运行?
我正在尝试编写一个makefile命令,如果golang代码格式不正确,将输出错误.这是CI步骤.我正在努力如何让它在make文件中运行.此解决方案适用于bash命令行:
! gofmt -l . 2>&1 | read
Run Code Online (Sandbox Code Playgroud)
但是将其复制到makefile中:
ci-format:
@echo "$(OK_COLOR)==> Checking formatting$(NO_COLOR)"
@go fmt ./...
@! gofmt -l . 2>&1 | read
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
/bin/sh: 1: read: arg count
Run Code Online (Sandbox Code Playgroud) 我正在尝试dep在我的项目中实施。这一切都很好,但是它还添加了一个供应商目录。现在,我需要更新工具以忽略此目录,否则我的供应商软件包将被修改,或者得到警告的误报。我目前正在使用以下工具:
这些工具也用于CI。我确实想继续使用goimports进行自动格式化,但是我愿意开始使用gometalinter。我不是真的在寻找使用grep的解决方案并找到魔术。
如何使这些工具被忽略vendor/?
我想知道如果使用编译二进制文件,什么代码将被编译成go二进制文件go build ./...。这将编译具有cli程序的二进制文件。对于此cli程序,我有测试代码和非测试代码。我目前有几种测试代码:
foo_test.go 包装内 foo_testfoo_internal_test.go 包装内 footestutil.gotestutil提供测试实用程序功能的软件包中非测试代码中实际上没有引用任何测试代码。testutil函数仅导入测试文件中。
如果测试代码实际上已编译为二进制文件,那么这有多少问题?
我正在尝试使用乐观锁定将项目更新插入到 DynamoDB 中。我有更新部分与 a 一起ConditionExpression检查版本。但这会导致保存部分失败,因为ConditionExpression保存是错误的。是否可以编写ConditionExpression以便它能够处理这两种情况?
我的代码:
result = copy.copy(user)
table = get_db_table()
current_version = result.get_version()
result.update_version()
try:
table.put_item(
Item=result.to_table_item(),
ConditionExpression=Attr(result.get_version_key()).eq(current_version)
)
except ClientError as error:
logger.error(
"Saving to db failed with '%s'",
str(error))
# Restore version
result.set_version(current_version)
raise Exception(ErrorCode.DB_SAVE) from error
return result
Run Code Online (Sandbox Code Playgroud) go ×4
boto3 ×1
compilation ×1
gnu-screen ×1
go-toolchain ×1
golint ×1
makefile ×1
nohup ×1
terraform ×1
testing ×1