最近我在Jython平台上玩Django,并希望在"生产"中看到它的性能.我测试的网站只是一个简单的return HttpResponse("Time %.2f" % time.time())视图,因此不涉及数据库.我尝试了以下两种组合(使用ab -c15 -n500 -k <url>VirtualBox上的Ubuntu Server 10.10中的所有内容完成测量):
J2EE应用服务器(Tomcat/Glassfish),部署了WAR文件
我得到的结果就像
Requests per second: 143.50 [#/sec] (mean)
[...]
Percentage of the requests served within a certain time (ms)
50% 16
66% 16
75% 16
80% 16
90% 31
95% 31
98% 641
99% 3219
100% 3219 (longest request)
Run Code Online (Sandbox Code Playgroud)
显然,服务器偶尔会挂起几秒钟,这是不可接受的.我认为它与重新加载Jython有关,因为启动jythonshell也需要大约3秒钟.
AJP服务使用修补的flup包(+ Apache作为前端)
注意:flup是使用的包manage.py runfcgi,我不得不修补它因为flup的线程/分叉支持似乎不适用于Jython( - > AJP是唯一的工作方法).
这里的结果几乎相同,但有时最后100个请求根本没有得到解答(但服务器进程仍然存在).
我在SO(而不是serverfault)上问这个,因为它特别是Django/Jython. 有没有人有在Jython上部署Django网站的经验?可能有另一种(更快)的方式来为网站服务吗?或者在Java平台上使用Django还为时尚早?
我目前正在将应用程序从GMaps V2迁移到V3.当我使用OSM和其他非Google地图图层时,我希望将版权声明保留在右下方.但参考文档没有给出任何暗示.在V2中,版权甚至有自己的类GCopyrightCollection,并被传递给GTileLayer.Google Code游戏也没有提供V3的示例.
有谁知道如何在新的API中执行此操作?
我希望我的MVC3 Web应用程序访问%APPDATA%(例如C:\Users\MyUsername\AppData\Roaming在Windows 7上),因为我在那里存储配置文件.因此,我在IIS中创建了一个具有用户"MyUsername"标识的应用程序池,通过使用该帐户登录创建了该用户的配置文件,并打开了"加载用户配置文件"选项(默认情况下仍为true).模拟被关闭.
现在我遇到%APPDATA%(在C#中)的问题:
appdataDir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
Run Code Online (Sandbox Code Playgroud)
解决c:\windows\system32\inetsrv而不是C:\Users\MyUsername\AppData\Roaming.
更新:更确切地说,上面的C#代码返回一个空字符串,以便Path.GetFullPath(Path.Combine(appdataDir, "MyAppName"))将当前路径预先设置为我的应用程序名称,从而产生c:\windows\system32\inetsrv\MyAppName.
我知道我之前使用Windows Server 2008 R2上的相同Web应用程序完成了这项工作,现在我在Windows 7上
使用与IIS相同的主要版本7.5来解决此问题.我使用了与以前相同的过程:创建了一个新用户,以该用户身份登录以创建配置文件和APPDATA目录,然后添加具有此标识的应用程序池,最后将Web应用程序添加到此池中.
有任何想法吗?
iis application-pool appdata iis-7.5 applicationpoolidentity
你如何使用尽可能少的代码行将一个布尔数组转换为像"false,true,true,false"这样的字符串?
Python允许我使用以下(非常好和干净):
", ".join(map(str, [False, True, True, False]))
Run Code Online (Sandbox Code Playgroud)
在C#中,string.Join只允许我加入一个字符串数组.
那么在C#中做同样的简短方法是什么?
我只是看着密码哈希的在Django的实施,发现它预先将盐,所以散列创建类似sha1(salt + password),例如.
在我看来,盐有两个目的
防止彩虹表查找
好吧,预先添加/添加盐对彩虹表并没有什么影响.
强化蛮力/字典攻击
这就是我的问题所在.如果有人想从被盗的密码数据库中攻击单个密码,他需要尝试大量密码(例如字典单词或[A-Za-z0-9]排列).
假设我的密码是"ABCDEF",该盐是"盐",而攻击者尝试所有[AZ] {6}密码.
使用前置盐,必须计算hash("salt"),存储哈希算法的状态,然后从该点继续进行每个排列.也就是说,遍历所有排列将需要26 ^ 6个复制哈希算法的状态结构操作和26 ^ 6个hash(permutation of [a-z]{6})操作.由于复制哈希算法的状态非常快,所以无论多长时间,盐都不会增加任何复杂性.
但是,使用附加的盐,攻击者必须计算hash(permutation of [a-z]{6} + salt)每个排列,导致26 ^ 10个哈希操作.显然,添加盐会增加复杂程度,具体取决于盐的长度.
我不相信这是出于历史原因,因为Django相当新颖.那么预先添加盐有什么意义呢?
我想在API中提供一个字符串常量,如下所示:
extern const char* const SOME_CONSTANT;
Run Code Online (Sandbox Code Playgroud)
但是,如果我在我的静态库源文件中定义它
const char* const SOME_CONSTANT = "test";
Run Code Online (Sandbox Code Playgroud)
我在链接到该库并使用SOME_CONSTANT时遇到链接器错误:
错误1错误LNK2001:未解析的外部符号"char const*const SOME_CONSTANT"(?SOME_CONSTANT @@ 3QBDB)
从extern const char* const声明和定义中删除指针const-ness(第二个const关键字)使其工作.如何使用指针常量导出它?
通过Qt 5.1中Android/iOS支持的技术预览,是否有关于部署到Apple应用程序商店的新闻?由于Qt的非商业版本是LGPL许可的,并且应用程序商店规则通常不允许使用dylib,因此Digia或Apple方面都不会例外,但许可谈话不提供任何更多 -关于此事的最新信息.
那么,有没有人试图将动态链接的Qt应用程序推送到商店,或者有任何一方的官方声明?
我目前为基于Python的GUI添加可执行文件的方式是:
setup(
# ...
entry_points = {"gui_scripts" : ['frontend = myfrontendmodule.launcher:main']},
# ...
)
Run Code Online (Sandbox Code Playgroud)
在Windows上,这将在Python的脚本文件夹(使用Python 2.6)中创建"frontend.exe"和"frontend-script.pyw".当我执行EXE文件时,会显示一个控制台窗口,但PYW文件无法正常显示.
所以我的问题是:如何在没有控制台窗口的情况下让EXE文件执行程序?该解决方案也适用于Linux(不建议使用py2exe;).
假设我有一个数组
int arr[] = {...};
arr = function(arr);
Run Code Online (Sandbox Code Playgroud)
我有这个功能
int& function(int arr[])
{
//rest of the code
return arr;
}
Run Code Online (Sandbox Code Playgroud)
我在这里犯了什么错误?
使用案例:我想使用使用libstdc ++的第三方静态库(无法更改),因此我必须将我的应用程序与libstdc ++链接.现在,如果我想在我自己的代码中使用C++ 11特性,我必须在Xcode中选择libc ++,并另外链接libstdc ++以满足静态库.
我的问题是,即使我在"构建设置"中选择了libc ++并将"-lstdc ++"添加到"其他链接器标志"(也通过"构建阶段>链接二进制文件库"尝试),我收到了后者的链接器错误,这是由第三方lib引用的libstdc ++函数/类.
如何配置项目以链接两个C++标准库?理论上它应该是可能的,因为libc ++将在它自己的内联命名空间中std::__1.