小编Ric*_*sen的帖子

_Bool的printf转换说明符?

有了printf(),我可以使用%hhuunsigned char,%hi一个short int,%zu一个size_t,%tx一个ptrdiff_t,等等.

我使用什么转换格式说明符_Bool?标准中是否存在一个?

或者我必须像这样投射:

_Bool foo = 1;
printf("foo: %i\n", (int)foo);
Run Code Online (Sandbox Code Playgroud)

c standards printf c99

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

离线/断开连接时解决Apache Ivy依赖关系?

changing="true"当离线/断开连接时,如何让Ivy 从本地缓存中解析依赖关系(包括依赖关系)?

我正在开发一个基于Java的开源项目,该项目使用Apache Ivy来解析和下载第三方依赖项.该项目build.xml有一个命名的蚂蚁目标resolve,下载常春藤(如果需要),然后使用常春藤来检索所需的罐子.

在线时一切都很棒.但是,如果没有Internet访问,ant resolve即使所需的jar文件位于本地Ivy缓存(~/.ivy2/cache)中也会失败.似乎Ivy正在尝试连接到Maven存储库以刷新changing="true"依赖关系.

我得到的错误类似于以下内容:

[ivy:retrieve] You probably access the destination server through a proxy server that is not well configured.
[ivy:retrieve] You probably access the destination server through a proxy server that is not well configured.
[ivy:retrieve] 
[ivy:retrieve] :: problems summary ::
[ivy:retrieve] :::: WARNINGS
[ivy:retrieve]  Host repo.example.com not found. url=http://repo.example.com/exampleorg/examplename/examplerev/ivys/ivy.xml
[ivy:retrieve]  Host repo.example.com not found. url=http://repo.example.com/exampleorg/examplename/examplerev/jars/examplename.jar
[ivy:retrieve]          module not found: exampleorg#examplename;examplerev
[ivy:retrieve]  ==== local: tried …
Run Code Online (Sandbox Code Playgroud)

java ant ivy

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

如何使用Cython类型的内存视图来接受Python中的字符串?

我如何编写一个Cython函数,它将一个字节串对象(一个普通字符串,一个bytearray或另一个跟在缓冲区协议下的对象)作为一个类型化的内存视图

根据Unicode和Passing Strings Cython教程页面,以下内容应该有效:

cpdef object printbuf(unsigned char[:] buf):
    chars = [chr(x) for x in buf]
    print repr(''.join(chars))
Run Code Online (Sandbox Code Playgroud)

它适用于bytearrays和其他可写缓冲区:

$ python -c 'import test; test.printbuf(bytearray("test\0ing"))'
'test\x00ing'
Run Code Online (Sandbox Code Playgroud)

但它不适用于普通字符串和其他只读缓冲区对象:

$ python -c 'import test; test.printbuf("test\0ing")'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "test.pyx", line 1, in test.printbuf (test.c:1417)
  File "stringsource", line 614, in View.MemoryView.memoryview_cwrapper (test.c:6795)
  File "stringsource", line 321, in View.MemoryView.memoryview.__cinit__ (test.c:3341)
BufferError: Object is not writable.
Run Code Online (Sandbox Code Playgroud)

查看生成的C代码,Cython总是将PyBUF_WRITABLE标志传递给PyObject_GetBuffer(),这解释了异常. …

python cython python-c-extension python-2.7 memoryview

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

覆盖shell函数,保留对原始函数的引用

是否可以覆盖shell函数并保留对原始函数的引用?

f()  { echo original; }
f()  { echo wrapper; ...; }
f
Run Code Online (Sandbox Code Playgroud)

这个输出应该是:

wrapper
original
Run Code Online (Sandbox Code Playgroud)

这可能是半便携式的吗?

基本原理:我正在尝试通过用shell函数替换部分函数来测试我的程序,shell函数将其调用记录到日志文件中.只要我只包装命令和内置函数,并且只要我不介意不加选择的日志记录,这样就可以正常工作.现在,我想通过在每个测试中记录有趣的部分来使测试套件更易于维护.

所以,假设我的程序包括

f
g
h
Run Code Online (Sandbox Code Playgroud)

其中f,g,h都是外壳的功能,我想追踪的只是执行g.

shell posix

10
推荐指数
2
解决办法
1066
查看次数

如何在getline管道中获取命令的退出状态?

在POSIX awk中,如何通过处理输出command 获取退出状态(返回代码)command | getline varexit 1如果command以非零退出状态退出,我想要我的awk脚本.

例如,假设我有一个名为的awk脚本foo.awk,如下所示:

function close_and_get_exit_status(cmd) {
    # magic goes here...
}
BEGIN {
    cmd = "echo foo; echo bar; echo baz; false"
    while ((cmd | getline line) > 0)
        print "got a line of text: " line
    if (close_and_get_exit_status(cmd) != 0) {
        print "ERROR: command '" cmd "' failed" | "cat >&2"
        exit 1
    }
    print "command '" cmd "' was successful"
}
Run Code Online (Sandbox Code Playgroud)

然后我想要发生以下事情:

$ …
Run Code Online (Sandbox Code Playgroud)

awk posix getline

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

POSIX函数搜索PATH的可执行文件?

是否有POSIX函数PATH根据POSIX规范对PATH环境变量的描述搜索可执行文件并返回可执行文件的绝对路径?

如果没有,是否有简单,安全,标准和可靠的搜索方式PATH

编辑: glibc的execvpe()函数有自己的PATH搜索,所以我猜测PATH标准没有定义特定的搜索功能.

编辑2: 我不想复制别人的代码或PATH自己实现搜索,原因如下:

  • 我需要测试和维护更多代码
  • 可能的许可问题
  • POSIX说,"如果PATH未设置或设置为null,则路径搜索是实现定义的." 我希望这些情况下的行为与系统的行为一致,但如果没有我可以调用的标准函数,我就不能这样做.

c unix posix path

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

如何在Cython中的新式缓冲区对象中包装C指针和长度?

我在Cython中编写了一个Python 2.7扩展模块. 如何创建一个实现新式缓冲区接口的Python对象,该接口包含C库提供给我的大块内存? 内存块只是一串字节,而不是结构或多维数组.我给了一个const void *指针和一个长度,以及一些指针保持有效的细节.

我无法复制内存 - 这会破坏我的应用程序的性能.

使用我可以简单使用的旧式缓冲区对象PyBuffer_FromMemory(),但我似乎无法找到一种类似的简单方法来生成新式缓冲区对象.

我是否必须创建自己的实现缓冲区接口的类?或者Cython提供了一种简单的方法吗?

我已经阅读了Cython文档中的Unicode和Passing StringsTyped Memoryviews页面,但文档不精确且不够完整,并且没有类似于我想要做的示例.

这是我尝试过的(test.pyx):

from libc.stdlib cimport malloc
from libc.string cimport memcpy

## pretend that this function is in some C library and that it does
## something interesting.  (this function is unrelated to the problem
## I'm experiencing -- this is just an example function that returns a
## chunk of memory that I want to wrap in …
Run Code Online (Sandbox Code Playgroud)

python cython python-c-extension python-2.7 memoryview

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

Git重命名问题

我和一个朋友分别在一个项目上工作.起初,我推了一个名为的文件夹,old-name然后从中取出.在它的中间,我决定重命名该old-name文件夹,new-name以便更好地将其与其他项目区分开来(我们只是说它old-name太通用了,而且new-name更具体).所以我告诉我的朋友也要重命名他的项目文件夹new-name.然后我们分开工作.

现在,他将他所做的工作推到远程服务器(在new-name文件夹下),当我尝试从服务器拉出时,所有这些冲突(重命名/添加)都会发生,显然new-name现在项目中每个文件都有一个额外的副本.

new-name/index.php (MINE)
new-name/index.php~98789491981agsagasga98a914a98wt (his commit ID I believe)
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果没有这个git冲突重命名问题,我们怎么能解决这个问题呢?当然我可以手动解决冲突,但是由于git已经拉到我的仓库的这个新的额外副本,因此检查和删除的文件太多了.

谢谢

git

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

调用保存在类属性中的函数:内置函数与普通函数的不同行为

使用以下脚本:

import time

class Foo(object):
    func = time.gmtime
    def go(self):
        return self.func(0.0)

print time.strftime('%Y', Foo().go())
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

1970
Run Code Online (Sandbox Code Playgroud)

但是,如果我稍作修改并换行time.gmtime:

import time

def tmp(stamp):
    return time.gmtime(stamp)

class Foo(object):
    func = tmp
    def go(self):
        return self.func(0.0)

print time.strftime('%Y', Foo().go())
Run Code Online (Sandbox Code Playgroud)

然后我收到以下错误:

Traceback (most recent call last):
  File "./test.py", line 13, in <module>
    print time.strftime('%Y', Foo().go())
  File "./test.py", line 11, in go
    return self.func(0.0)
TypeError: tmp() takes exactly 1 argument (2 given)
Run Code Online (Sandbox Code Playgroud)

显然它试图调用Foo.func就好像它是一个实例方法并self作为第一个参数传递.

两个问题:

  • 这两个time.gmtimetmp是采取单一的说法,那么为什么两个脚本行为不同的功能呢? …

python python-2.7 python-internals

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

为 contextvars.Context 提供 ContextManager

我正在尝试在我的数据库框架中管理事务(我使用 MongoDB 和 umongo 而不是 pymongo)。

\n

要使用事务,必须session沿整个调用链传递一个 kwarg。我想提供一个上下文管理器来隔离事务。只有调用链末尾的函数需要知道该session对象。

\n

我发现了上下文变量,并且我已经接近一些东西,但还没有完全实现。

\n

我想要什么:

\n
with Transaction():\n    #\xc2\xa0Do stuff\n    d = MyDocument.find_one()\n    d.attr = 12\n    d.commit()\n
Run Code Online (Sandbox Code Playgroud)\n

这是我现在想到的:

\n
s = ContextVar(\'session\', default=None)\n\nclass Transaction(AbstractContextManager):\n\n    def __init__(self):\n        self.ctx = copy_context()\n        # Create a new DB session\n        session = db.create_session()\n        # Set session in context\n        self.ctx.run(s.set, session)\n\n    def __exit__(self, *args, **kwargs):\n        pass\n\n    # Adding a run method for convenience\n    def run(self, func, *args, **kwargs):\n        self.ctx.run(func, *args, **kwargs)\n\ndef func():\n    d …
Run Code Online (Sandbox Code Playgroud)

python contextmanager python-3.x python-3.7 python-contextvars

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