因为我不想使用Django的内置认证系统(也许我应该这样做,请告诉我是否是这种情况),我创建了一个简单的小auth类:
import random
import hashlib
from myapp import models
class CustomerAuth:
key = 'customer'
def __init__(self, session):
self.session = session
def attempt(self, email_address, password):
password_hash = hashlib.sha1(password).hexdigest()
try:
return models.Customer.objects.get(
email_address=email_address,
password_hash=password_hash)
except models.Customer.DoesNotExist:
return None
def login(self, customer):
self.session[self.key] = customer
def logout(self):
if self.session.has_key(self.key):
self.session[self.key] = None
def is_logged_in(self):
return self.session.has_key(self.key)
and self.session[self.key] != None
def get_active(self):
if self.is_logged_in():
return self.session[self.key]
else:
raise Exception('No user is logged in.')
def redirect_to_login(self):
return HttpResponseRedirect('/login/')
def redirect_from_login(self):
return HttpResponseRedirect('/account/')
Run Code Online (Sandbox Code Playgroud)
问题是,当我想用它来阻止未经授权的访问时,我必须在每个单一的视图方法中使用这个代码片段:
def …Run Code Online (Sandbox Code Playgroud) 我有以下代码(这是一些半sudo代码,可能无法编译):
class FooBar {
public:
void a();
void b();
boost::shared_ptr<boost::thread> m_thread;
std::string m_test;
};
void FooBar::a() {
m_test = "Foo bar"
m_thread = shared_ptr<thread>(new thread(bind(&FooBar::b, this)));
}
void FooBar::b() {
cout << m_test;
}
Run Code Online (Sandbox Code Playgroud)
代码cout << test不会产生任何输出,因为m_test它""代替"Foo bar".为什么是这样?我认为this作为第二个参数传递bind将允许我访问同一个实例b()- 我不正确吗?
为什么这段代码会无声地失败?我如何让它向我展示SQL错误究竟是什么?
$dbh=DBI->connect($db_name,$db_user,$db_pass);
Run Code Online (Sandbox Code Playgroud)
我将代码修改为如下所示:
$dbh=DBI->connect($db_name,$db_user,$db_pass)
or die("could not connect to db: $db_name");
Run Code Online (Sandbox Code Playgroud)
而不是允许我使用$dbh未分配的,它将按预期失败,但它并没有告诉我它为什么失败.$db_name就我所见,etc 的值都设置为有效值.
我知道真正的错误(MySQL服务器实际上没有运行)但是为了将来的参考,我希望看到真正的错误,例如我导致auth失败.
我觉得LaTeX语法很容易使用。但是,我开始在文档中包含图表。我发现了MetaPost令人兴奋的世界!事实是,MetaPost语法看起来比LaTeX更加强烈...所以我想我会买一本关于它的书。我想知道,是否最好买一本同时谈论LaTeX(也许我可以学到一些东西)和MetaPost的通用书籍,还是应该买一本只专注于MetaPost的书呢?鉴于这本专门书籍将涉及更多内容,因此我认为入门的内容可能会更好。
如果相关,则该文档为软件项目规范;因此它包含UML和数据流程图。老实说,我实际上是想知道LaTeX是否与此问题有关-如果是这样,是否有有关MetaPost的权威书籍?
我只是意识到我在不经意间使用了MetaUML,而不是原始的MetaPost。因此,对于那些不知道的人,MetaUML是MetaPost的软件包。正如用户Little Bobby Tables指出的那样,没有适用于MetaUML的书。
我认为write()只能发送byte的数据缓冲区(即signed char),那么如何使用write()sys/socket.h库中的C 函数发送长整数数组呢?
显然,我不能只是强制转换或转换为char,因为任何超过127的数字都会格式不正确.
我看了一下这个问题,如何将整数数组分解为一个字节数组(像素编码),但无法理解它 - 如果这是我正在寻找的东西,请有人愚蠢一点吗?
我们正努力为我们的所有目的"开发人员助手"工具提出一个命令名称,我们正在我们的项目中使用它.这就像我们现有的一样的工具的包装cmake和hg.命令的目的只是通过将多个命令合并为一个(例如,发布包)来使我们的生活更轻松.例如,我们有如下命令:
do conf
do build
do install
do publish
Run Code Online (Sandbox Code Playgroud)
我们已经考虑了一些模糊的名称do(如上所述)run,但很明显,它do是一个Linux bash命令并且run非常模糊.
我们希望我们的命令是2个字符短,最好 - 但谁认为我们问的是不可能的?有没有一种实用的方法可以检查命令名称的可用性(除了只是在终端中键入它们),还是仅仅选择一个并希望其他人不会使用它?我们什么都不担心?
请有人解释为什么这不起作用?
char *test = "test";
_TCHAR *szTest = CA2W(test);
Run Code Online (Sandbox Code Playgroud)
请告诉我我应该做什么。
它没有给我同等的文字,而是给了我:
????????????????????????????????
Run Code Online (Sandbox Code Playgroud) 我们有这个代码,但它不再起作用了:
def get_vcvarsall(generator):
value = None
type = None
key_name = r'SOFTWARE\Microsoft\VisualStudio\SxS\VC7'
key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, key_name)
if generator.startswith('Visual Studio 8'):
value,type = _winreg.QueryValueEx(key, '8.0')
elif generator.startswith('Visual Studio 9'):
value,type = _winreg.QueryValueEx(key, '9.0')
elif generator.startswith('Visual Studio 10'):
value,type = _winreg.QueryValueEx(key, '10.0')
else:
raise Exception('Cannot determin vcvarsall.bat location for: ' + generator)
path = value + 'vcvarsall.bat'
if not os.path.exists(path):
raise Exception("'%s' not found.")
return path
Run Code Online (Sandbox Code Playgroud)
这似乎已经停止工作,因为我从x86升级到Python 2.6 x64(但我不能确定).本来可以升级到导致问题的Win7.
使用Google protobuf,我将序列化的消息数据保存到文件中 - 在每个文件中都有几条消息.我们有C++和Python版本的代码,所以我需要使用两种语言都可用的protobuf函数.我已经尝试使用SerializeToArray和SerializeAsString,似乎有以下不幸的条件:
SerializeToArray:正如在一个答案中所建议的,使用它的最佳方法是为每条消息添加前缀数据大小.这对C++来说非常有用,但在Python中看起来不太可能 - 我错了吗?
SerializeAsString:这会生成一个等效于它的二进制对应的序列化字符串 - 我可以将其保存到文件中,但是如果序列化结果中的一个字符是\n - 我们如何找到行结尾或消息的结尾会发生什么?那件事?
请允许我稍微改写一下.据我所知,我无法用C++编写二进制数据,因为我们的Python应用程序无法读取数据,因为它只能解析字符串序列化的消息.那么我应该SerializeAsString在C++和Python中使用吗?如果是,那么最好将这些数据存储在文本文件而不是二进制文件中吗?我的直觉是二元的,但你可以看到这看起来不是一个选择.
当我们throw来自析构函数时会发生什么?我知道它会导致terminate()被调用,并且内存确实被释放并且析构函数被调用,但是,这是在调用之前还是之后 ?也许这里的问题是在堆栈展开时使用的问题.throwfoothrow