小编sno*_*uis的帖子

修复"不应该在context.WithValue中使用基本类型字符串作为键"golint

我正在传递一个uuid使用ContextWithValue处理它的后续函数*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)

什么是可用于检索此键的最佳选项,该键不是像简单字符串那样的基本类型?

go golint

33
推荐指数
3
解决办法
9856
查看次数

如何使用Terraform配置启动远程服务?

我希望我的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配置来启动命令并使其保持运行?

gnu-screen nohup terraform

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

检查Golang格式以进行连续集成

我正在尝试编写一个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)

continuous-integration makefile go

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

goimports需要忽略供应商软件包

我正在尝试dep在我的项目中实施。这一切都很好,但是它还添加了一个供应商目录。现在,我需要更新工具以忽略此目录,否则我的供应商软件包将被修改,或者得到警告的误报。我目前正在使用以下工具:

  • goimports -w
  • 去兽医
  • 皮棉

这些工具也用于CI。我确实想继续使用goimports进行自动格式化,但是我愿意开始使用gometalinter。我不是真的在寻找使用grep的解决方案并找到魔术。

如何使这些工具被忽略vendor/

continuous-integration go go-toolchain

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

将仅在测试文件中引用的测试代码编译为二进制文件吗?

我想知道如果使用编译二进制文件,什么代码将被编译成go二进制文件go build ./...。这将编译具有cli程序的二进制文件。对于此cli程序,我有测试代码和非测试代码。我目前有几种测试代码:

  • foo_test.go 包装内 foo_test
  • foo_internal_test.go 包装内 foo
  • testutil.gotestutil提供测试实用程序功能的软件包中

非测试代码中实际上没有引用任何测试代码。testutil函数仅导入测试文件中。

如果测试代码实际上已编译为二进制文件,那么这有多少问题?

testing compilation go

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

使用 DynamoDB 和 Boto3 使用乐观锁定进行更新插入

我正在尝试使用乐观锁定将项目更新插入到 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)

amazon-dynamodb boto3

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