小编And*_*ack的帖子

我该如何组织Python源代码?

我开始使用Python(现在是时候试一试了),我正在寻找一些最佳实践.

我的第一个项目是一个在多个线程中运行命令行实验的队列.我开始得到一个很长的main.py文件,我想打破它.一般来说,我在寻找:python程序员如何组织多个源文件?是否有适合您的特定结构?

我的具体问题包括:

  1. 每个班级应该在一个单独的档案中吗?
  2. 我应该如何组织相对于源代码的单元测试?
  3. 我应该在哪里放置doc注释,特别是那些用于命令行操作的注释?
  4. 如果我使用多个目录,如何在它们之间导入类?

我可以通过反复试验得出我自己的一些结论,但我宁愿从好的东西开始.

python unit-testing code-organization

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

Subversion分支在v1.6中重新集成

根据这个老问题,使用SVN 1.5,多次重新集成分支是有问题的,应该避免.

有一些隆隆声,"这是一个已知的问题,应该在SVN 1.6中修复." 那是这样的吗?它固定了吗?我可以多次重新整合吗?

svn merge branch

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

如何更改Python AssertionError中的消息?

我正在编写以下内容,在比较Unicode文本的两个多行块时,我尝试生成一个不错的错误消息.进行比较的内部方法引发了断言,但默认解释对我来说毫无用处

我需要在代码中添加一些内容,如下所示:

def assert_long_strings_equal(one, other):
    lines_one = one.splitlines()
    lines_other = other.splitlines()
    for line1, line2 in zip(lines_one, lines_other):
        try:
            my_assert_equal(line1, line2)
        except AssertionError, error:
            # Add some information to the printed result of error??!
            raise
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何更改我捕获的断言错误中的打印错误消息.我总是得到AssertionError: u'something' != 'something else',它只显示输出的第一行.

如何更改断言消息以打印出我想要的内容?

如果它是相关的,我nose用来运行测试.

python exception nose assertions

47
推荐指数
3
解决办法
5万
查看次数

右值引用是否允许悬空引用?

考虑以下.

#include <string>
using std::string;

string middle_name () {
    return "Jaan";
}

int main ()
{
    string&& danger = middle_name();   // ?!
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这不会计算任何东西,但它编译时没有错误,并演示了一些让我感到困惑的事情:danger是一个悬空引用,不是吗?

c++ rvalue c++11

31
推荐指数
2
解决办法
3064
查看次数

调试操作系统

我正在阅读有关操作系统的一些常规内容并触及一个问题.开发人员在开发操作系统时如何调试,即调试操作系统本身?可以为OS开发人员调试哪些工具?

debugging operating-system kernel

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

如何在C预处理器中生成唯一值?

我正在编写一堆相关的预处理器宏,其中一个生成另一个跳转到的标签.我以这种方式使用它们:

MAKE_FUNNY_JUMPING_LOOP(
  MAKE_LABEL();
  MAKE_LABEL();
)
Run Code Online (Sandbox Code Playgroud)

我需要一些方法来生成唯一标签,每个内部MAKE_LABEL调用一个,使用预处理器.我尝试过使用__LINE__,但由于我MAKE_LABEL在另一个宏内部调用,它们都有相同的行并且标签发生碰撞.

我想要扩展到的是:

MAKE_FUNNY_JUMPING_LOOP(
  my_cool_label_1:  // from first inner macro
  ...
  my_cool_label_2:  // from second inner macro
  ...
)
Run Code Online (Sandbox Code Playgroud)

有没有办法用预处理器生成哈希值或自动递增整数?

macros c-preprocessor

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

为什么<link>'title'属性导致浏览器忽略我的样式?

以下html文档(与CSS一起)无法呈现样式b.css.

<!doctype html>
<html>
    <head>
        <link rel="stylesheet" media="screen" type="text/css" title="A" href="a.css" />
        <link rel="stylesheet" media="screen" type="text/css" title="B" href="b.css" />
    </head>
    <body>
        <div id="A">A</div>
        <div id="B">B</div>
    </body>
</html>

/* a.css */
div#A   { color: blue;  }
/* b.css */
div#B   { color: red;   }
Run Code Online (Sandbox Code Playgroud)

使标题相同(例如,两者都<link ... title="A">修复它,但我没有看到原因,为什么它应该.标题在做什么,这里,这使得这个错了?

html css title link-tag

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

为什么git子模块与svn externals不兼容?

有很多网页在那里暗示让svn外部看起来像git子模块的hackish方法.我已经读过一些关于差异的说法,但这似乎不是很基础:

Git子模块链接到另一个项目的存储库中的特定提交,而svn:externals总是获取最新的修订.

为什么这种差异会使它们根本不相容?我们可以假设没有合理的默认值,例如大多数svn:externals指向永不移动的标签吗?

svn git git-svn svn-externals git-submodules

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

使用其他值或新值扩展ImmutableMap

很像是如何ImmutableList扩展这样的:

ImmutableList<Long> originalList = ImmutableList.of(1, 2, 3);
ImmutableList<Long> extendedList = Iterables.concat(originalList, ImmutableList.of(4, 5));
Run Code Online (Sandbox Code Playgroud)

如果我有现有地图,我该如何扩展它(或创建一个包含替换值的新副本)?

ImmutableMap<String, Long> oldPrices = ImmutableMap.of("banana", 4, "apple", 7);
ImmutableMap<String, Long> newPrices = … // Increase apple prices, leave others.
                                         //  => { "banana": 4, "apple": 9 }
Run Code Online (Sandbox Code Playgroud)

(让我们不寻求有效的解决方案,因为显然设计不存在这个问题.这个问题反而寻求最惯用的解决方案.)

java guava

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

在UDP中接收错误:连接被拒绝

我试图在特定端口通过UDP向服务器发送字符串HI,然后接收响应.但是,在我尝试使用recvfrom()获取响应后,我陷入阻塞状态.我尝试使用连接的UDP,但我得到:

在UDP中接收错误:连接被拒绝

可能是什么原因?服务器不在我的控制之下,但我知道它工作正常.

我添加了代码

int sockfdudp;
char bufudp[MAXDATASIZE], port[6];
struct addrinfo hints, *servinfo, *p;
struct sockaddr_storage addr;   
int rv;
char s[INET6_ADDRSTRLEN];
int bytes_recv, bytes_sent;
socklen_t len;

scanf("%s",port);
printf("UDP Port: %s \n", port);

// Start connecting to datagram server  
memset(&hints, 0, sizeof hints);
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_DGRAM;

if ((rv = getaddrinfo(SERVER_NAME, port, &hints, &servinfo)) != 0) {
    fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(rv));
    return 1;
}

// loop through all the results and make a socket
for(p = servinfo; p != …
Run Code Online (Sandbox Code Playgroud)

c sockets udp udpclient

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