小编nfi*_*ine的帖子

What exactly does runtime.Gosched do?

In a version prior to the release of go 1.5 of the Tour of Go website, there's a piece of code that looks like this.

package main

import (
    "fmt"
    "runtime"
)

func say(s string) {
    for i := 0; i < 5; i++ {
        runtime.Gosched()
        fmt.Println(s)
    }
}

func main() {
    go say("world")
    say("hello")
}
Run Code Online (Sandbox Code Playgroud)

The output looks like this:

hello
world
hello
world
hello
world
hello
world
hello
Run Code Online (Sandbox Code Playgroud)

What is bothering me is that when runtime.Gosched() is …

concurrency go

76
推荐指数
2
解决办法
1万
查看次数

python:格式字符串中变量名称中的点

假设我有一个字段名称带字符的字典,比如{'person.name': 'Joe'}.如果我想用它str.format,有可能吗?

我的第一直觉是

'Name: {person.name}'.format(**{'person.name': 'Joe'})
Run Code Online (Sandbox Code Playgroud)

但这只有在我的字形被塑造的情况下才有效

{'person':{'name':Joe}}
Run Code Online (Sandbox Code Playgroud)

相关的手册文档部分没有提到逃避点.

(旁注:我一般认为

def func(**kw): print(kw)
func(**{'a.b': 'Joe'})
Run Code Online (Sandbox Code Playgroud)

会导致错误,但**即使它们不是有效的标识符,-expanded函数调用似乎也能正常工作!但它确实在非字符串上出错.O_O)

python string-formatting

10
推荐指数
3
解决办法
5726
查看次数

在Javascript中,如何检查函数是否处于严格模式*而不更改函数*?

我想编写一个测试套件,以确保某些给定的函数使用严格模式.其中有很多,手动检查它们似乎是一件苦差事.

类似问题中的答案使用函数定义的正则表达式进行检查.但是,我认为这将错误地检测正在测试的函数是在具有"use strict"或文件级"use strict"声明的函数内的情况.答案说"使用严格"是前置的,但在我的环境(Mozilla Rhino)中,情况并非如此:

$ cat strict_sub.js
"use strict";
var strict_function = function() {
    not_a_real_global = "foo";
};

print(strict_function);
$ rhino strict_sub.js 

function () {
    not_a_real_global = "foo";
}
Run Code Online (Sandbox Code Playgroud)

我觉得答案是"不",但有没有办法反省一个函数,看它是否被解析并发现是严格模式?

更新:@Amy建议的一种方法是解析函数的源代码来解决它.如果函数具有use-strict声明(虽然它很繁琐),但是如果严格模式是从程序级传播,则不行; 在这种情况下,我们必须走了AST的计划水平,并检查use strict.为了使这个健壮,我们必须实现use strict-propagation的所有规则,解释器已经在某处.

(在SpiderMonkey中测试:

function f() {
  "use strict";
}
var fast1 = Reflect.parse(f.toString());

var first_line = fast1.body[0].body.body[0].expression;

print(first_line.type === 'Literal' && first_line.value === 'use strict'); //true
Run Code Online (Sandbox Code Playgroud)

)

javascript strict

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

在单独的Docker层中构建go依赖项

我正在尝试加快Go应用程序的Docker构建速度。现在,仅花费60年代就建立了依赖关系(这是一个k8s控制器,所以有很多)。

一个非常重要的约束:我的项目依赖于私有GitHub存储库。我在go mod vendor外面做docker build,在那里我有建立回购协议的资格。

我现在的Dockerfile大致是:

FROM golang:1.12

WORKDIR /src

COPY . .
RUN go build -mod=vendor
...
Run Code Online (Sandbox Code Playgroud)

即使无需下载dep,该构建也要花费一些时间,因为它每次都会重新构建数百个软件包docker build

我想做的是这样的:

FROM golang:1.12

WORKDIR /src

# these shouldn't change very often
COPY go.mod go.sum vendor ./
RUN go build -mod=vendor <all dependency packages>

COPY . .
RUN go build -mod=vendor
...
Run Code Online (Sandbox Code Playgroud)

我尝试解析go.mod,但是当然列出了模块,而不是包。我曾尝试过,go list但从未设法获得成功。

go docker dockerfile go-modules

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

git submodules:跟踪子模块中的相应分支?

假设您将一个项目分解为一个超级项目和一个子模块。它们都有稳定(主)分支和开发分支。有没有办法设置子模块,以便超级项目从其 dev 分支跟踪子模块的 dev 分支,从其稳定分支跟踪子模块的稳定分支?

我想象的是这样的.gitmodules

[submodule "subproject"] path = subproject url = http://www.github.com/nfirvine/subproject branch = $current_branch_name

(我特别关注 Ansible 项目,他们的stable-1.9分支跟踪devel其子模块的分支。这似乎是在自找麻烦。)

您可以使用 git 属性来指定.gitmodules不会自动合并,但我想知道是否有比这更聪明的东西。

git

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

Sublime 插件在 docker 容器中执行

我是 Docker 的新手,所以我不确定我是否在这里错过了一些基本的东西。我喜欢在不同的 Docker 容器中拥有各种开发平台的想法,以保持我的主机箱相对干净。我看到这是可能的,但在大多数示例中,它涉及人们在 ssh 进入容器后使用 vim 来编辑代码。我想使用 sublime,我知道我可以映射一个卷,允许我在容器外编辑源代码。我看不到如何配置的部分是对插件的支持,例如 GoSublime 运行 GoCode 之类的工具。是否可以在容器内执行这些工具,而 Sublime 在主机中运行?

谢谢!

sublimetext docker

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

PageMod/page-mod和Page/page-worker之间有什么区别?

我不明白其中的区别.我能看到的唯一区别是PageMod使用匹配模式,而Page使用特定的URL.为什么不只是使用PageMod(更通用)的一切?

firefox-addon-sdk

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