小编sts*_*uad的帖子

函数名中的双减( - )约定在Emacs Lisp中意味着什么

我一直在阅读一些Emacs Lisp软件包,并且遇到了一些函数的约定 - 在库前缀之后,例如:

(defun eproject--combine-regexps (regexp-list)
Run Code Online (Sandbox Code Playgroud)

我想知道这是否是向图书馆声明"私人"功能的惯例,但到目前为止我还没有在Emacs编码指南中找到任何内容.

lisp emacs elisp naming-conventions

34
推荐指数
2
解决办法
1554
查看次数

在本地安装python包以进行开发的最佳方法

作为python游戏的新手,我似乎错过了一些关于如何开发程序的知识,但也将它保存在你的实时环境中.

像gpodder这样的程序可以直接从源签出运行,这非常方便,但是其他人想要"安装"运行.

许多程序都与一个setup.py一起发布,其中包含以root身份运行"python ./setup.py install"的指令,它将把东西放在你文件系统的某个地方.甚至还有像"develop"这样的安装命令,它们似乎能够实现我想要的目标.所以我尝试过:

export PYTHONPATH=/home/alex/python
python ./setup.py develop --install-dir=/home/alex/python
Run Code Online (Sandbox Code Playgroud)

在本地下载了一堆东西,似乎神奇地确保我正在攻击的应用程序仍然在src树中运行.所以我想我的迂回问题是这是开发python代码的正确方法吗?easy_install和pip等因素如何影响到这个?

编辑添加

所以我尝试了以下方法:

 python /usr/share/pyshared/virtualenv.py /home/alex/src/goobook
 cd /home/alex/src/goobook/googbook.git
 /home/alex/src/goobook/bin/python ./setup.py develop
Run Code Online (Sandbox Code Playgroud)

最后将有问题的程序链接到我的〜/ bin

 cd /home/alex/src/goobook
 linkbin.pl bin/goobook
Run Code Online (Sandbox Code Playgroud)

然而,调用会引发额外的喋喋不休,这似乎暗示它是错误的:


17:17 alex@socrates/i686 [goobook] >goobook --help
/home/alex/bin/goobook:5: UserWarning: Module pkg_resources was already imported from        /home/alex/src/goobook/lib/python2.5/site-packages/setuptools-0.6c8-py2.5.egg/pkg_resources.py, but /home/alex/src/goobook/lib/python2.5/site-packages/distribute-0.6.10-py2.5.egg is being added to sys.path
  from pkg_resources import load_entry_point
/home/alex/bin/goobook:5: UserWarning: Module site was already imported from /home/alex/src/goobook/lib/python2.5/site.pyc, but /home/alex/src/goobook/lib/python2.5/site-packages/distribute-0.6.10-py2.5.egg is being added to sys.path
  from pkg_resources import load_entry_point

python installation

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

Mercurial是否有相当于git的"describe"功能?

我目前正在为Mercurial中维护的东西添加包装.目前,该版本在Makefile中定义.我想改变它,以便我可以构建每日包或正确版本化的包.

Git提供了一个使用"describe"函数,可以为您提供最接近标记的构建和当前版本的描述.例如,如果我在内核中运行它:

git describe HEAD
Run Code Online (Sandbox Code Playgroud)

GIT返回:

v3.0-rc7-68-g51414d4
Run Code Online (Sandbox Code Playgroud)

告诉我修改晚于v3.0-rc7,git委托为51414d4

我可以在Mercurial做类似的事吗?

mercurial

11
推荐指数
2
解决办法
1326
查看次数

反正有没有说服python的getopt来处理选项的可选参数?

根据python的文档getopt(我认为),选项字段应该表现为getopt()函数.但是我似乎无法为我的代码启用可选参数:

#!/usr/bin/python
import sys,getopt

if __name__ == "__main__":
    try:
        opts, args = getopt.gnu_getopt(sys.argv[1:], "v::", ["verbose="])
    except getopt.GetoptError, err:
        print str(err)
        sys.exit(1)

    for o,a in opts:
        if o in ("-v", "--verbose"):
            if a:
                verbose=int(a)
            else:
                verbose=1
            print "verbosity is %d" % (verbose)
Run Code Online (Sandbox Code Playgroud)

结果是:

$ ./testopt.py -v
option -v requires argument
$ ./testopt.py -v 1
verbosity is 1
Run Code Online (Sandbox Code Playgroud)

python getopt getopt-long

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

在Linux中处理sk_buff数据包的所有有效负载的正确方法是什么

我目前正在尝试调试在以太网上运行的ATM封装层.基本上ATM信元在以太网报头之后按顺序存储.但是我怀疑司机天真接近sk_buffs的方法被打破了.

驱动程序盲目地假设skb-> data可以迭代但查看virtio_net.c的内核代码:page_to_skb我看到以下行为:

memcpy(hdr, p, hdr_len);
len -= hdr_len;
p += offset;
copy = len;

if (copy > skb_tailroom(skb))
        copy = skb_tailroom(skb);

memcpy(skb_put(skb, copy), p, copy);
Run Code Online (Sandbox Code Playgroud)

然后进一步说:

while (len) {
        set_skb_frag(skb, page, offset, &len);
    page = (struct page *)page->private;
    offset = 0;
}
Run Code Online (Sandbox Code Playgroud)

这似乎表明缓冲区是碎片化的,只有第一部分可以直接从skb-> data访问.

我应该用什么来获取基础数据.理想情况下,我希望在memcpy将块存入我维护的重组缓冲区之前,将任意偏移量的几个字节查看到以太网数据包中.我该怎么用呢?

c networking linux-kernel skb

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

如何为我在pty下运行的进程设置终端前台进程组?

我写了一个简单的包装脚本,用于在失败时重复命令retry.py.但是,由于我想看到子命令的输出,我不得不拉一些pty技巧.这适用于像rsync这样的程序,但是像scp这样的其他程序会应用额外的测试来显示像进度表这样的东西.

scp代码有一个广泛的测试:

getpgrp() == tcgetpgrp(STDOUT_FILENO);
Run Code Online (Sandbox Code Playgroud)

当我运行包装器脚本时,这会失败.正如您在我的简单tty_test.c测试用例中看到的:

./tty_tests
isatty reports 1
pgrps are 13619 and 13619
Run Code Online (Sandbox Code Playgroud)

和:

./retry.py -v -- ./tty_tests
command is ['./tty_tests']
isatty reports 1
pgrps are 13614 and -1
child finished: rc = 0
Ran command 1 times
Run Code Online (Sandbox Code Playgroud)

我已经尝试使用tcsetpgrp(),最终作为pty fd的IOCTL,但这导致了ptys的-EINVAL.如果可能的话,我宁愿继续使用Python子进程机器,还是需要手动fork/execve'ing?

python posix subprocess pty posix-api

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

如何获得嵌入式Jetty Web服务器来转储其JSP的临时Java代码

在OpenNMS中调试JSP页面时,我一直遇到这个问题.Jetty wiki 在webdefault.xml中讨论了keepGenerated(http://docs.codehaus.org/display/JETTY/KeepGenerated),但似乎不清楚这在嵌入式设置中是如何工作的.

java jsp jetty

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

在elisp中捕获错误案例的最佳方法是什么

我正在尝试增加etags-select函数,这样如果点上的find-tag失败,它将回退到正常的find-tag.我试过的代码是:

(defun my-etags-find-tag ()
  "Find at point or fall back"
  (interactive)
  (unless (etags-select-find-tag-at-point)
    (etags-select-find-tag)))

(global-set-key (kbd "C-f") 'my-etags-find-tag)
Run Code Online (Sandbox Code Playgroud)

但是,当point不在有效标记时,这会失败.相反,我得到etags-select-find-tag-at-point抛出的错误:

etags-select-find-tag-at-point: Wrong type argument: char-or-string-p, nil
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我只需要重复etags-select-find-tag-at-point完成的测试:

(defun my-etags-find-tag ()
  "Find at point or fall back"
  (interactive)
  (if (find-tag-default)
      (etags-select-find-tag-at-point)
    (etags-select-find-tag)))
Run Code Online (Sandbox Code Playgroud)

但它似乎有点多余.是否可以捕获异常并在elisp中执行备用处理?

emacs elisp

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

是否可以在 docker build 期间挂载 tmpfs?

我目前正在构建包含交叉编译器的容器。由于这些必须在构建阶段构建,如果我可以使用 tmpfs 来实现这一点,那将非常有用,因为一旦安装了各种软件包,构建目录将毫无意义。有什么方法可以说服 docker 在构建时挂载 tmpfs 分区?

docker

5
推荐指数
0
解决办法
1196
查看次数

tramp是否提供任何用于查询buffer-file-name信息的API

我目前在使用tramp的远程机器上做了很多工作.但是,在构建make命令行时,项目逻辑会变得混乱,因为它会尝试cd到某些/ ssh:blah .... path.

tramp是否提供任何API函数来测试缓冲区或缓冲区文件名是否实际上由tramp管理并因此在远程计算机上管理?它是否可以提供有关连接类型的其他信息(例如ssh用户/主机详细信息)?

emacs tramp

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