我开始使用Python(现在是时候试一试了),我正在寻找一些最佳实践.
我的第一个项目是一个在多个线程中运行命令行实验的队列.我开始得到一个很长的main.py
文件,我想打破它.一般来说,我在寻找:python程序员如何组织多个源文件?是否有适合您的特定结构?
我的具体问题包括:
我可以通过反复试验得出我自己的一些结论,但我宁愿从好的东西开始.
根据这个老问题,使用SVN 1.5,多次重新集成分支是有问题的,应该避免.
有一些隆隆声,"这是一个已知的问题,应该在SVN 1.6中修复." 那是这样的吗?它固定了吗?我可以多次重新整合吗?
我正在编写以下内容,在比较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
用来运行测试.
考虑以下.
#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
是一个悬空引用,不是吗?
我正在阅读有关操作系统的一些常规内容并触及一个问题.开发人员在开发操作系统时如何调试,即调试操作系统本身?可以为OS开发人员调试哪些工具?
我正在编写一堆相关的预处理器宏,其中一个生成另一个跳转到的标签.我以这种方式使用它们:
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)
有没有办法用预处理器生成哈希值或自动递增整数?
以下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">
修复它,但我没有看到原因,为什么它应该.标题在做什么,这里,这使得这个错了?
有很多网页在那里暗示让svn外部看起来像git子模块的hackish方法.我已经读过一些关于差异的说法,但这似乎不是很基础:
Git子模块链接到另一个项目的存储库中的特定提交,而svn:externals总是获取最新的修订.
为什么这种差异会使它们根本不相容?我们可以假设没有合理的默认值,例如大多数svn:externals指向永不移动的标签吗?
很像是如何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)
(让我们不寻求有效的解决方案,因为显然设计不存在这个问题.这个问题反而寻求最惯用的解决方案.)
我试图在特定端口通过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)