小编coa*_*nor的帖子

钩子和回调有什么区别?

通过阅读一些文本,特别是关于委托的iOS文档,所有协议方法都被称为自定义委托对象需要实现的钩子.但是其他一些书籍,将这些钩子命名为回调,它们之间有什么区别?它们只是不同的名称,但机制相同吗?除了对象-一些其他编程语言,如C,也得到了,同样的情况用的OBJ-C?

hook callback

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

语句goto不能跨变量定义?

假设这些代码编译成g++:

#include <stdlib.h>

int main() {
    int a =0;

    goto exit;

    int *b = NULL;

exit:
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

g++ 会抛出错误:

goto_test.c:10:1: error: jump to label ‘exit’ [-fpermissive]
goto_test.c:6:10: error:   from here [-fpermissive]
goto_test.c:8:10: error:   crosses initialization of ‘int* b’
Run Code Online (Sandbox Code Playgroud)

似乎goto无法跨越指针定义,但gcc编译好,没有任何抱怨.

修复错误之后,我们必须在任何goto语句之前声明所有指针,也就是说你必须声明这些指针,即使你现在不需要它们(并且违反了一些原则).

什么原因设计考虑g++禁止有用的尾部goto声明?


更新:

goto可以交叉变量(任何类型的变量,不限于指针)声明,但除了那些获得初始化值.如果我们删除NULL上面的任务,g++请立即保持沉默.因此,如果要声明goto-cross-area 之间的变量,请不要初始化它们(并且仍然违反某些原则).

goto g++

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

Gerrit推荐refs/for/master禁止

我昨天更新了All Project访问权限,人们说他们今天早上无法将更改推送到存储库.在我恢复访问权限后,他们仍然无法将更改推送到存储库,只能clone正常工作.推送更改为远程存储库时,它说:

![remote rejected] HEAD -> refs/for/master (prohibited by Gerrit)
Run Code Online (Sandbox Code Playgroud)

我们所有其他项目都继承了All project的访问权限,我将访问权限更新到最低级别(即Anonymous可以推送分支refs/heads/*)进行测试,但我发现管理员也无法将更改推送到存储库!

是否需要添加其他设置?

git push gerrit

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

在Go Lang中通过通道传递指针

可以在go lang中将指针传递到通道上吗?我需要传递struct,对其进行更改并在struct传递的相同函数中进行更改?

我试过了

chan <- &data
Run Code Online (Sandbox Code Playgroud)

我得到了

# command-line-arguments .\o.go:130: cannot use &duom[i] (type *KaVartoti) as type KaVartoti in send
Run Code Online (Sandbox Code Playgroud)

在此之后我尝试了

chan <- *data
Run Code Online (Sandbox Code Playgroud)

我得到了

# command-line-arguments .\o.go:130: invalid indirect of duom[i] (type KaVartoti)
Run Code Online (Sandbox Code Playgroud)

那么,可以通过Go中的通道发送指针吗?

pointers channel go lang

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

如何更新命令行输出?

在Linux中,在stdout命令行中,我想更新特定区域,例如apt-get输出:

54% [Waiting for headers] [Waiting for headers]        211 kB/s 3s
Run Code Online (Sandbox Code Playgroud)

百分比,千字节/秒第二将更新每一秒.

如果我们使用printf那么我们将获得多行输出.我试过以下printf:

printf("\e[1;1H\e[2J");
Run Code Online (Sandbox Code Playgroud)

但它清除了所有输出.

我的问题是如何更新特定区域并保持其他区域稳定?

c linux command-line

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

任何关于 psutil 隐藏导入的 pyinstaller 详细示例?

我想通过使用将我的 python 代码编译为二进制文件pyinstaller,但是hidden import阻止了我。例如,以下代码导入psutil并打印 CPU 计数:

# example.py
import psutil
print psutil.cpu_count()
Run Code Online (Sandbox Code Playgroud)

我编译代码:

$ pyinstaller -F example.py --hidden-import=psutil
Run Code Online (Sandbox Code Playgroud)

当我在以下运行输出时dist

ImportError: cannot import name _psutil_linux
Run Code Online (Sandbox Code Playgroud)

然后我尝试:

$ pyinstaller -F example.py --hidden-import=_psutil_linux
Run Code Online (Sandbox Code Playgroud)

还是一样的错误。我已经阅读了 pyinstall 手册,但我仍然不知道如何使用hidden import. 有详细的例子吗?或者至少是一个编译和运行我的example.py?

ENV:

  • 操作系统:Ubuntu 14.04
  • 蟒蛇:2.7.6
  • py安装程序:2.1

python pyinstaller psutil

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

Golang:如何禁用自动标志排序?

使用flagpackage,我们可以指定一些命令行参数,如下所示:

import "flag"
fun main() {
    from := flag.String("from", "", "the path to be copied")
    to := flag.String("to", "", "where the data copied to")
    ldb := flag.String("db", "./ldb", "the database path used during copy")
    pwd := flag.String("pwd", "", "password to encrypt your data, default no encryption on your data"
    flag.Parse()
    ...
}
Run Code Online (Sandbox Code Playgroud)

当使用-h寻求帮助时,打印的消息似乎不是我提供的顺序:

-db string
    the database path used during copy (default "./ldb")
-from string
    the path to be copied
-pwd string
    password to encrypt your …
Run Code Online (Sandbox Code Playgroud)

go

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

如何禁用直接推送到Gerrit?

在与Gerrit合作时,预期的push是:

git push origin HEAD:refs/for/branch
Run Code Online (Sandbox Code Playgroud)

但是一些坏人似乎以一种简单的方式做到了这一点(他们从一些Git手册中学到了):

git push origin
Run Code Online (Sandbox Code Playgroud)

要么

git push
Run Code Online (Sandbox Code Playgroud)

这些操作会导致严重的问题:

  • 提交直接合并到远程服务器中的master(或某个默认)分支.
  • 虽然这些人写了一些提交消息,但是git log找不到它们.
  • 也许更多...

有没有办法push在Gerrit设置中禁用这些操作?或者在客户端禁用它?

git gerrit

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

splinter:如何添加chrome选项?

我在linux下使用splinter(v0.7.3)进行Web测试,而在chrome上,默认的示例代码无法运行:

from splinter import Browser
from pyvirtualdisplay import Display

d = Display(visible=0, size=(800, 600))
d.start()

b = Browser('chrome')
b.visit('http://www.google.com')
b.quit()

d.stop()
Run Code Online (Sandbox Code Playgroud)

在运行时,我得到了这样的异常:

selenium.common.exceptions.WebDriverException: Message: chrome not reachable
Run Code Online (Sandbox Code Playgroud)

我在selenium中测试了相同的功能,添加了一些chrome选项:

from selenium import web driver
from selenium.webdriver.chrome.options import Options
from pyvirtualdisplay import Display

d = Display(visible=0, size=(800, 600))
d.start()

opt = Options()
opt.add_argument('--disable-setuid-sandbox')
b = webdriver.Chrome(chrome_options=opt)
b.get('http://www.google.com')
b.quit()

d.stop()
Run Code Online (Sandbox Code Playgroud)

这项工作正常,区别在于--disable-setuid-sandbox添加到chrome驱动程序的选项,如果选项未添加,则会有一个僵尸chrome-sandbox进程chromium-browser.

这里的问题是,我不知道如何传递一个chrome.options.Option实例splinter.Browser(),我浏览下的实现splinter/driver/webdriver/chrome.py,似乎没有条目传递这样的实例splinter.Browser().还有其他方法可以将选项传递给chrome驱动程序吗?

selenium selenium-chromedriver splinter

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

Golang:CGO移植包的多重定义

我有2个项目,第一个,名称为A,有一个子模块a导入sqlite3( github.com/mattn/go-sqlite3)。另一个B项目导入的A子模块a,并且在另一个子模块中b,它也导入相同的sqlite3。

并将导入放在 dir 下A(由 管理)。我的 Golang 版本是.Bvendorgovendorgo version go1.12 linux/amd64

在构建Bgo build main.go)时,抛出以下错误(太多,部分错误):

 /usr/local/go/pkg/tool/linux_amd64/link: running gcc failed: exit status 1
 /tmp/go-link-281256755/000029.o: In function `callbackTrampoline':
 /tmp/go-build/_cgo_export.c:25: multiple definition of `callbackTrampoline'
 /tmp/go-link-281256755/000005.o:/tmp/go-build/_cgo_export.c:25: first defined here
 /tmp/go-link-281256755/000029.o: In function `stepTrampoline':
 ...
 /home/xxx/go/src/gitlab.xxxxxxxxx.com/xxxxxxxxx-tools/A/vendor/github.com/mattn/go-sqlite3/sqlite3.go:129: multiple definition of `_sqlite3_result_text'
 /tmp/go-link-281256755/000009.o:/home/xxx/go/src/gitlab.xxxxxxxxx.com/xxxxxxxxx-tools/A/vendor/github.com/mattn/go-sqlite3/sqlite3.go:129: first defined here
 /tmp/go-link-281256755/000033.o: In function `_sqlite3_result_blob':
 ...
Run Code Online (Sandbox Code Playgroud)

但建筑A效果很好。为了测试错误,我开始关注演示,也使用vendor …

linker go cgo

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