package main
import "fmt"
import "runtime"
import "time"
func check(id int) {
fmt.Println("Checked", id)
<-time.After(time.Duration(id)*time.Millisecond)
fmt.Println("Woke up", id)
}
func main() {
defer runtime.Goexit()
for i := 0; i <= 10; i++ {
fmt.Println("Called with", i)
go check(i)
}
fmt.Println("Done for")
}
Run Code Online (Sandbox Code Playgroud)
我是Go的新手,所以任何指针都会很棒.我怎么去调试这样的东西?
您可以运行代码段http://play.golang.org/p/SCr8TZXQUE
更新:这<-time.After(time.Duration(id)*time.Millisecond)在游乐场没有线路的情况下工作 ,我想知道为什么?(正如@dystroy所说,这可能是因为游乐场处理时间的方式)
当我在本地尝试时,这是输出:
Called with 0
Called with 1
Checked 0
Called with 2
Checked 1
Called with 3
Checked 2
Called with 4
Woke up 0
Checked 3
Called with 5 …Run Code Online (Sandbox Code Playgroud) 我在 SharePoint 文档库中有渐进式 Web 应用程序 index.html 页面和资产。我需要在访问 index.html 页面时进行身份验证。但是<link rel="manifest" href="manifest.json.txt">当从 index.html 页面请求时,作为链接的 manifest.json 文件没有所需的身份验证 cookie。请注意,SharePoint 不提供 .jon 文件,这就是它以 .txt 结尾的原因。有没有办法从经过身份验证的站点检索清单?
当我将清单放在可匿名访问的位置时,即在 SharePoint 之外(我现在使用我的保管箱),它就可以工作。在这种情况下,我需要为 start_url 指定完整路径。但这不是一个非常好的部署模型,因为我需要将文件部署到两个不同的位置......
此代码类型检查:
type T :: Type -> foreach (r :: Type) -> Type -> Type
data T k r a
type T' :: Type -> Type
type T' a = T a Identity a
Run Code Online (Sandbox Code Playgroud)
Type -> Type(即Identity)类型?Identity如果您替换为 say ,它无法进行类型检查Int。foreach关键字,在 Haskell 中如何使用它?例:
>>> def write_to_terminal(fmt, *args):
... print fmt % args
>>> LOG = logging.getLogger(__name__)
>>> info = multicall(write_to_terminal, LOG.info)
>>> debug = multicall(write_debug_to_terminal, LOG.debug)
>>> ...
>>> info('Hello %s', 'guido') # display in terminal *and* log the message
Run Code Online (Sandbox Code Playgroud)
有优雅的写作方式multicall吗?也许在标准库的帮助下......没有重新发明轮子?
我正在寻找一个优雅的Python程序,可以完成BFS的几个DAG:
A->B如果A"依赖于"B(考虑到python包Foo"取决于"Bar:Foo-> Bar),则节点A连接到B().
在约7000个这样的节点图,我想这样的,对于所有可能的所有节点进行排序(i, j),其中1>=i<j<=7000.. depends(Ni, Nj)是假.depends(A,B)= True当且仅当A->B或"A"依赖于"B .."并且Nx是x在排序列表中的位置出现的节点.
注意:节点可以有多个父节点.例如:A-> C和B-> C. 因此,根据上述排序规则,A和B必须在C之前.
我有两个either值,例如:
Either String Config -- error string or config parsed
Either String Env -- error string or environment variables detected
Run Code Online (Sandbox Code Playgroud)
我想将它们的值提取到此记录中:
type App = App { config :: Config, env :: Env }
Run Code Online (Sandbox Code Playgroud)
如果有错误则快速失败(Left其中一个值的值).
我可以使用两个case语句,但我想知道是否已经有一个我可以在这里使用的抽象?
理想情况下,我会在出错时记录消息并立即退出程序.
是否有一个Haskell模式可以避免编写这个自定义函数?想法是将Maybe中的Nothing作为错误处理(作为包装的一部分):
eitherMaybeHandle :: String -> Either String (Maybe a) -> Either String a
eitherMaybeHandle err = \case
Left e ->
Left e
Right Nothing ->
Left err
Right (Just a) ->
Right a
Run Code Online (Sandbox Code Playgroud) 据我所知,Python 记录器不能直接实例化,如文档所示:
请注意,记录器永远不会直接实例化,而是始终通过模块级函数实例化
logging.getLogger(name)
..这是合理的,因为您不应该为每个类/模块创建记录器对象,因为有更好的选择。
但是,在某些情况下,我想创建一个记录器对象并向其附加一个文件,专门用于将一些特定于应用程序的输出记录到该文件;然后关闭日志文件。
例如,我有一个程序可以在PyPI中构建所有包。所以基本上假设for每个包都有一个循环。在循环内,我想“创建”一个记录器,附加一个文件处理程序(例如:/var/logs/pypi/django/20090302_1324.build.log)并将输出python setup.py build(以及其他内容)发送到该日志文件。完成后,我想关闭/销毁记录器并continue以类似的方式构建其他包。
所以你看……正常的 Pythonic 调用方式logging.getLogger在这里不适用。需要创建临时记录器对象。
目前,我通过将文件名本身作为记录器名称传递来实现此目的:
>>> packagelog = logging.getLogger('/var/..../..34.log')
>>> # attach handler, etc..
Run Code Online (Sandbox Code Playgroud)
我想问..有更好的方法吗?