我想用Python建立一个每天超过100,000 PV的网站.现在我关心的是选择哪个Web框架.我知道很多人使用Django,有些人使用web.py. Django似乎很强大,我也喜欢web.py的简单性.我应该使用哪个框架?(请介绍性能和维护复杂性,谢谢!)web.py可以构建复杂的应用程序吗?还有其他框架比这两个框架更好吗?
我正在制作一款游戏,需要能够在pygame表面中弹出gui元素.这个问题不是我想要的,因为wxPython绕过SDL表面而不是它内部.到目前为止,我只在这个问题空间中看过ocemp,pgu和GooeyPy.
因此,我的问题是:我应该使用什么gui工具包来制作pygame应用程序中的可点击按钮?有没有积极的发展?
编辑,2011年9月
看起来PGU仍在维护中.最后一次提交是从4天前开始的.
我喜欢在Mercurial中创建命名分支来处理可能需要一段时间来编写代码的功能,所以当我推送时我会hg push -r default
确保我只是将更改推送到默认分支.但是,-r default
每次执行推送或传出命令时都必须记住这一点.
所以我尝试通过将此配置添加到我的〜/ .hgrc来解决此问题:
[defaults]
push = push -r default
outgoing = outgoing -r default
Run Code Online (Sandbox Code Playgroud)
问题是,那些配置行不是真正的默认值,它们是别名.他们按照预期工作,直到我尝试做hg push -r <some revision>
.我设置的"默认"只是删除了我传入的修订版.(我看到默认值已弃用,但别名有同样的问题).
我试着环顾四周,但我找不到任何可以让我设置默认分支的东西,并允许我在必要时覆盖它.谁知道我能做的其他事情?
ps:我确实意识到每个分支都可以有单独的克隆,但我宁愿不这样做.必须切换目录很烦人,特别是当您有共享配置或编辑器工作区时.
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int main() {
int res = system("ps ax -o pid -o command | grep sudoku | grep gnome > /dev/null");
printf("res = %d \n", res);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我想sudoku
通过检查system()
(或任何其他调用)的返回代码来查看是否正在运行.我不想在任何地方打印任何输出.
system()
即使在查看手册页后,我也不太了解返回代码
无论是否sudoku
正在运行,我明白了res = 0
.
试图写一个布尔方法,告诉某人是否是某人的后裔......但似乎无法做到这一点.当然,如果它是一个孩子......或者是孩子的后代,那么这个物体就是后代.
public boolean isDescendant(member x){
if (children.contains(x)){
return true;
}
else{
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
但我在哪里或如何插入:
for (int i = 0; i < children.size(); i++){
isDescendant(children.get(i));
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
我在这里和其他地方读过几条评论,暗示Erlang的流程字典是一个坏主意,应该死掉.通常,作为一个总的Erlang新手,我只是避免它.但是,在这种情况下,我的其他选择并不是很好.
我有一个主调度函数,看起来像这样:
dispatch(State) ->
receive
{cmd1, Params} ->
NewState = do_cmd1_stuff(Params, State),
dispatch(NewState);
{cmd2, Params} ->
NewState = do_cmd2_stuff(Params, State),
dispatch(NewState);
BadMsg ->
log_error(BadMsg),
dispatch(State)
end.
Run Code Online (Sandbox Code Playgroud)
显然,我的名字对我来说更有意义,但这就是它的要点.在由do_cmd2_stuff()调用的函数调用的函数调用的函数中,我想向所有用户发送消息,告诉他们我做过的事情.为此,我需要从发送消息的位置获取用户列表.用户列表不容易粘在全局状态,因为这只是一个数据结构,代表我操作的唯一数据块.
我看到它的方式,除了使用进程字典之外,我还有一些令人不快的选择.我可以将用户列表通过所有不同级别的功能发送到播放广播的最底层.这是令人不愉快的,因为它导致我的所有功能获得一个参数,无论他们是否真的关心它.
或者,我可以让所有do_cmdN_stuff()
函数返回要发送的消息.然而,这并不是很好,因为发送消息可能不是我想要做的最后一件事,它使我的调度员与一堆{Msg, NewState}
元组混乱.此外,某些功能可能没有任何消息可以发送一些时间.
就像我之前说的那样,我对Erlang很新.也许拥有更多经验的人可以指出我更好的方式.有吗?在这种情况下,流程字典是否合适?
我试图找出为什么我们的软件在虚拟化下运行时运行得如此之慢.我见过的大多数统计数据表明,在最坏的情况下,它应该只有10%的性能损失,但在Windows虚拟服务器上,性能损失可能是100-400%.我一直试图描述差异,但是个人资料结果对我来说并没有多大意义.这是我在没有虚拟化的Vista 32位盒子上进行配置时看到的内容:
这是在带有虚拟化的Windows 2008 64位服务器上运行的:
缓慢的是花费了大量的时间,RtlInitializeExceptionChain
在快速的时间显示为0.0s.知道那是做什么的吗?此外,当我附加到我的机器的进程时,只有一个线程,PulseEvent
但是当我在服务器上连接时,有两个线程,GetDurationFormatEx
和RtlInitializeExceptionChain
.据我所知,我们编写的代码只使用一个线程.此外,对于它的价值而言,这是一个仅使用纯C编写的控制台应用程序,完全没有UI.
任何人都可以为我解释这些吗?甚至只是关于其中一些ntdll
和kernel32
电话正在做什么的信息?我也不确定有多少差异是64/32位相关的,有多少是虚拟/非虚拟相关的.不幸的是,我无法轻松访问其他配置以确定差异.
这是一个说明我的问题的程序:
#include <stdio.h>
#define NUMERATOR 8
#define DENOMINATOR 2
#define QUOTIENT (NUMERATOR / DENOMINATOR)
#define ZSTR(x) XSTR(#x)
#define YSTR(x) XSTR(x)
#define XSTR(x) STR(x)
#define STR(x) #x
int main()
{
printf("QUOTIENT: %d\n", QUOTIENT);
printf("STR(QUOTIENT): %s\n", STR(QUOTIENT));
printf("XSTR(QUOTIENT): %s\n", XSTR(QUOTIENT));
printf("YSTR(QUOTIENT): %s\n", YSTR(QUOTIENT));
printf("ZSTR(QUOTIENT): %s\n", ZSTR(QUOTIENT));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是它的输出:
$ gcc -g -Wall -o stringify stringify.c && ./stringify
QUOTIENT: 4
STR(QUOTIENT): QUOTIENT
XSTR(QUOTIENT): (8 / 2)
YSTR(QUOTIENT): (8 / 2)
ZSTR(QUOTIENT): "QUOTIENT"
Run Code Online (Sandbox Code Playgroud)
我想将一个字符串文字"4"
传递给编译器,但我失去了希望.这与此问题有关,但增加了一个级别.
我有一个奇怪的宏,我正在调试,我似乎无法弄清楚如何获得预处理器的输出.我正在寻找相当于GCC的-save-temps
.我试图传递dpp
给compile:file/2
,但它似乎产生一个解析树,而不是预处理二郎.
compile:file("t.erl", 'E').
正如Anton所提到的那样很好,但对导致语法错误的宏没有帮助.由于缺乏调试复杂宏的方法,我倾向于通过编写生成代码的程序来进行元编程.
我试图想出一个类似字典的数据结构,我可以在Erlang中使用它.目标是保证所有值以及密钥都是唯一的.我可以在每次修改后使用显式一致性检查来完成它,但我希望有一个模糊的类型可以为我做这个.有吗?如果没有,有没有比将支票包装到修改数据的每个函数(或返回稍微不同的副本)更好的方法?
我希望至少有120个元素,不超过几千个,如果重要的话.