小编eri*_*ang的帖子

捕获IPython魔术函数的结果

我正在尝试捕获IPython Notebook魔术函数的结果对象.特别%timeit

所以下面的代码......

import time
def say_hello(n):
    time.sleep(n)
    print "hello"

t = %timeit say_hello(5)
Run Code Online (Sandbox Code Playgroud)

打印到stdout:

1 loops, best of 3: 5 s per loop
Run Code Online (Sandbox Code Playgroud)

但是,我想捕获%timeit say_hello(5)变量的结果t.

调用TimeitResult生成的对象是由生成的%timeit,但我无法弄清楚如何从Notebook中访问它.

我想要一个更清洁的解决方案,而不是使用sys.stdout技巧手动捕获stdout (此代码将是演示文稿的一部分,所以我试图尽可能地保持它直接).有人有主意吗?

python ipython ipython-magic

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

Golang静态标识符解析

我试图使用go/parse,go/tokengo/ast模块对 Go 项目中的函数调用进行一些静态分析,但我不知道如何确定给定ast.Ident对象的类型。

例如,如果解析这样的内容:

textToContain := bytes.NewBuffer([]byte{})
// lots of other code
text := textToContain.String() // <- I care about this function call
Run Code Online (Sandbox Code Playgroud)

(这是从这里解析的:file

编辑:需要大量代码来解析它,所以我没有将其发布在这里,但您可以在以下位置找到它作为要点: https: //gist.github.com/EricChiang/6735340c5fa3d2de2b73

ast.Print我使用该函数打印了以下代码

 0  *ast.CallExpr {
 1  .  Fun: *ast.SelectorExpr {
 2  .  .  X: *ast.Ident {
 4  .  .  .  Name: "textToContain"
 5  .  .  .  Obj: *ast.Object {
 6  .  .  .  .  Kind: var
 7  .  .  .  .  Name: "textToContain" …
Run Code Online (Sandbox Code Playgroud)

static-analysis go

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

系统调用变量未定义

当我尝试在我的Mac上构建以下程序时,我遇到了一个构建错误:undefined: syscall.TCPInfo尽管该变量已明确记录http://golang.org/pkg/syscall/#TCPInfo

package main

import "syscall"

func main() {
    _ = syscall.TCPInfo{}
}
Run Code Online (Sandbox Code Playgroud)

这是我的go工具版本.

$ go version
go version go1.3 darwin/amd64
Run Code Online (Sandbox Code Playgroud)

我认为这可能是一个缺乏操作系统支持的问题,所以我在http://play.golang.org上尝试过,但看起来很多记录的变量只是在syscall包中随机丢失:http://play.golang.组织/ p/w3Uk6NaZVy

我错过了什么吗?

system-calls go

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

带有 cap_net_bind_service 的脚本无法侦听端口 80

我正在尝试为脚本提供 cap_net_bind_service Linux 功能。但是使用 setcap 似乎不起作用。

$ cat listen.sh 
#!/bin/bash

python -m SimpleHTTPServer 80
$ getcap listen.sh 
listen.sh =
$ sudo setcap cap_net_bind_service=+eip ./listen.sh 
$ getcap listen.sh 
listen.sh = cap_net_bind_service+eip
$ ls -al listen.sh 
-rwxrwxr-x. 1 eric eric 43 Jul 11 23:01 listen.sh
$ ./listen.sh 
Traceback (most recent call last):
  File "/usr/lib64/python2.7/runpy.py", line 162, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  ...
  File "/usr/lib64/python2.7/SocketServer.py", line 434, in server_bind
    self.socket.bind(self.server_address)
  File "/usr/lib64/python2.7/socket.py", line 228, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 13] …
Run Code Online (Sandbox Code Playgroud)

linux linux-capabilities

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

Python vs Go Hashing差异

我有一个Go程序

package main

import (
    "crypto/hmac"
    "crypto/sha1"
    "fmt"
)

func main() {
    val := []byte("nJ1m4Cc3")
    hasher := hmac.New(sha1.New, val)
    fmt.Printf("%x\n", hasher.Sum(nil))
    // f7c0aebfb7db2c15f1945a6b7b5286d173df894d
}
Run Code Online (Sandbox Code Playgroud)

和Python(2.7)程序试图重现Go代码(使用crypto/hmac)

import hashlib
val =  u'nJ1m4Cc3'
hasher = hashlib.new("sha1", val)
print hasher.hexdigest()
# d67c1f445987c52bceb8d6475c30a8b0e9a3365d
Run Code Online (Sandbox Code Playgroud)

使用该hmac模块给出了不同的结果,但仍然与Go代码不同.

import hmac
val = 'nJ1m4Cc3'
h = hmac.new("sha1", val)
print h.hexdigest()
# d34435851209e463deeeb40cba7b75ef
Run Code Online (Sandbox Code Playgroud)

为什么这些在同一输入上使用相同的哈希时会打印不同的值?

python hash cryptography sha1 go

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