小编use*_*629的帖子

git,vimdiff和dirdiff

我正在尝试使用vimdiff + dirdiff.vim在Vim中使用Git版本化多个文件.

对于Mercurial,可以使用mercurial extdiff扩展.

我在网上Vim的Git的差异整合上发现的唯一的办法就是在烧毛文件用Vimdiff,在描述这个职位.

有谁知道如何使用vimdiff + dirdiff + git?

git vim vimdiff

20
推荐指数
3
解决办法
6297
查看次数

clang,在链接时更改依赖的共享库安装名称

相关,但不回答这个问题:

在OSX上,我有一个由打包管理器提供的动态库,安装在非标准目录中,install_name只是文件名.例如:

$ ROOT=$PWD
$ mkdir $ROOT/foo 
$ cd $ROOT/foo
$ echo 'int foo(int a, int b){return a+b;}' > foo.c
$ clang foo.c -dynamiclib -install_name libfoo.dylib -o libfoo.dylib
Run Code Online (Sandbox Code Playgroud)

不想改变(绝对路径,@ RPATH,...)libfoo.dylib的install_name使用install_name_tool -id.

现在我将程序与库链接,例如:

$ mkdir $ROOT/bar
$ cd $ROOT/bar
$ echo 'int foo(int,int); int main(){return foo(2,4);}' > main.c
$ clang main.c -L../foo -lfoo   
Run Code Online (Sandbox Code Playgroud)

该程序无法运行:

$ ./a.out
dyld: Library not loaded: libfoo.dylib
  Referenced from: $ROOT/bar/./a.out
  Reason: image not found
Trace/BPT trap: 5
Run Code Online (Sandbox Code Playgroud)

因为:

$ otool -L ./a.out …
Run Code Online (Sandbox Code Playgroud)

macos install-name-tool dynamic-library

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

在Python multiprocessing.Process中设置env var

子进程 Python 2模块中,可以给Popen一个env.

似乎在多处理模块中使用Process执行此操作的等效方法是将字典传递给或,然后在中使用.envargskwargsos.environ['FOO'] = valuetarget

这是正确的方法吗?

安全吗?我的意思是,没有风险可以修改父进程或其他子进程中的环境?

这是一个例子(有效).

import multiprocessing
import time
import os

def target(someid):
    os.environ['FOO'] = "foo%i" % someid
    for i in range(10):
        print "Job %i: " % someid, os.environ['FOO']
        time.sleep(1)

if __name__ == '__main__':

    processes = []

    os.environ['FOO'] = 'foo'

    for someid in range(3):
        p = multiprocessing.Process(target=target, args=(someid,))
        p.start()
        processes.append(p)

    for i in range(10):
        print "Parent: ", os.environ['FOO']
        time.sleep(1)

    for p in …
Run Code Online (Sandbox Code Playgroud)

python environment-variables multiprocessing

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

git difftool 忽略 textconv 驱动程序

git diff考虑到我的textconv 驱动程序,但git difftool -d --textconv没有。为什么?如何解决?

我的~/.gitconfig包含其他设置:

[diff]
    tool = default-difftool
[difftool "default-difftool"]
    cmd = vim -f '+next' '+execute \"DirDiff\" argv(0) argv(1)' $LOCAL $REMOTE '+syntax off'
[diff "ipynb"]
    textconv = nbcatsrc
Run Code Online (Sandbox Code Playgroud)

而我的.gitattributes是:

*.ipynb diff=ipynb
Run Code Online (Sandbox Code Playgroud)

git

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

python,迭代subprocess.Popen()stdout/stderr

有很多类似的帖子,但我没有找到答案.

在Gnu/Linux上,使用Pythonsubprocess模块,我使用以下代码迭代使用子进程启动的命令的stdout/sdterr:

class Shell:
    """ 
    run a command and iterate over the stdout/stderr lines
    """

    def __init__(self):

        pass

    def __call__(self,args,cwd='./'):

        p = subprocess.Popen(args,
                cwd=cwd, 
                stdout = subprocess.PIPE,
                stderr = subprocess.STDOUT,
                )

        while True:

            line = p.stdout.readline()
            self.code = p.poll()

            if line == '':
                if self.code != None:
                    break
                else:
                    continue

            yield line

#example of use
args = ["./foo"]
shell = Shell()
for line in shell(args):
     #do something with line
     print line,
Run Code Online (Sandbox Code Playgroud)

这样工作正常......除非执行的命令是python例如`args = ['python','foo.py'],在这种情况下输出不会被刷新,而是仅在命令完成时打印. …

python subprocess

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

numexpr 恶意攻击安全

numexpr是否安全再次恶意攻击?

我正在考虑在 Web 应用程序中使用它来评估用户输入的文本。

我也考虑过使用PLYASTEVALPyparsing

security numexpr

6
推荐指数
0
解决办法
242
查看次数

mpi multiple init finalize

假设我有充分的理由做以下(我想我有),如何让它有效?

#include "mpi.h"

int main( int argc, char *argv[] )
{
    int myid, numprocs;

    MPI_Init(&argc,&argv);
    MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
    MPI_Comm_rank(MPI_COMM_WORLD,&myid);
    // ...
    MPI_Finalize();


    MPI_Init(&argc,&argv);
    MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
    MPI_Comm_rank(MPI_COMM_WORLD,&myid);
    // ...
    MPI_Finalize();

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

我收到了错误:

--------------------------------------------------------------------------
Calling any MPI-function after calling MPI_Finalize is erroneous.
The only exceptions are MPI_Initialized, MPI_Finalized and MPI_Get_version.
--------------------------------------------------------------------------
*** An error occurred in MPI_Init
*** after MPI was finalized
*** MPI_ERRORS_ARE_FATAL (your MPI job will now abort)
[ange:13049] Abort after MPI_FINALIZE completed successfully; not able to guarantee     that all other …
Run Code Online (Sandbox Code Playgroud)

mpi

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

grep 错误但没有错误消息

我有一个(长)Bash 脚本,它执行如下操作:

set -o nounset
set -o errexit
set -o pipefail

echo -e "foo \n bar" | grep "baz" | tr -d ' '

echo "here"
Run Code Online (Sandbox Code Playgroud)

该脚本失败且没有错误消息,因为 grep 命令返回错误 1 ​​且不打印任何错误消息。

如何使我的脚本健壮?

bash grep

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

5
推荐指数
2
解决办法
1117
查看次数