我想检测用户的区域设置(不是它们的位置).问题是没有一种方法看起来可靠.
优点
缺点
结论
优点
缺点
结论
优点
缺点
结论
优点
缺点
结论
现在看来检测用户的区域设置比以往更难,而检测到它们的物理位置变得更容易.最大的罪犯是Safari,至少应该在OSX上默认反映操作系统设置,但Chrome也没有设置任何示例.即使人们将本地字典安装到Chrome,我也很怀疑他们是否也会将其拖到列表的顶部.
我不能责怪Mozilla和Opera被其他浏览器误导到他们的下载页面拖累.但是,如果他们将下载页面切换为使用地理位置而不是大概查看Accept-Language,则可以缓解问题.
但实际上,由于IE不再占主导地位,还有哪些选项可以检测用户的区域设置?还剩下什么吗?
我目前正在发送以下标题:
Cache-Control: max-age=0
Content-Encoding: gzip
Content-Length: 2929
Content-Type: text/html; charset=utf-8
Date: Thu, 19 Jul 2012 15:29:18 GMT
ETag: "3e34180212ee59fee7e8e4cc512552e5"
Run Code Online (Sandbox Code Playgroud)
然后在后续请求中,我希望所有浏览器都发送If-None-Match带有内容的标头,ETag以便我可以在必要时以304响应.Firefox,Safari和Opera都会发回ETag,但Chrome和Internet Explorer都不会.是否有一些标题组合或缺失值导致Chrome和IE忽略ETag?
如果我设置Last-Modified然后他们都将发送If-Modified-Since但我需要使用ETags.
Django文档(http://docs.djangoproject.com/en/dev/topics/testing/#django.test.client.Client.post)说这样做:
>>> c = Client()
>>> f = open('wishlist.doc')
>>> c.post('/customers/wishes/', {'name': 'fred', 'attachment': f})
>>> f.close()
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,该字段有错误消息"提交的文件为空".这有点像PIL问题,但表单在实际网站上运行正常.
读取文件并发送它而不仅仅是一个句柄也不起作用,并且与传递空字符串的行为相同.
我最近从Python 2.5更新到2.7(我在麻烦中尝试了2.6)虽然从命令行或Django runserver一切正常,mod_wsgi无法加载任何包含使用MSVC构建的DLL(pyd)的模块.
例如,如果我构建自己的pycrypto或lxml版本,那么我将仅从mod_wsgi获得以下错误:
ImportError at /
DLL load failed: The specified module could not be found.
Run Code Online (Sandbox Code Playgroud)
即使官方的PIL二进制文件也无法在mod_wsgi中导入_imaging C模块,但这可能是另一个问题.
但是,如果我使用从http://www.voidspace.org.uk/python/modules.shtml#pycrypto这样的地方使用MinGW构建的pycrypto版本,那么即使在mod_wsgi中它也会导入很好.我发现这个解决方案并不令人满意,因为我更新Python的全部原因是为了避免需要搜索预构建的二进制文件而且我不能自己构建它们因为MinGW失败了> 50%的时间对我而言.
EDIT2:我在第680-705行的Python27/Lib/distutils/msvc9compiler.py中注意到了这一点:
try:
# Remove references to the Visual C runtime, so they will
# fall through to the Visual C dependency of Python.exe.
# This way, when installed for a restricted user (e.g.
# runtimes are not in WinSxS folder, but in Python's own
# folder), the runtimes do not need to be in every folder
# …Run Code Online (Sandbox Code Playgroud) 目前,buildout recipe collective.recipe.omelette在所有版本的Windows上使用junction.exe来创建符号链接.但是,默认情况下,junction.exe不附带Windows,最重要的是不支持为文件(仅限目录)创建符号链接,导致相当多的Python包出现问题.
在NT6 +(Vista和7)上,现在有一个mklink实用程序,它不仅默认出现,而且还能够为文件和目录创建符号链接.我想更新collective.recipe.omelette以使用它(如果可用)并且已经这样做了,除了一个简单的功能; 检测文件或文件夹是否实际上是符号链接.由于这是一个小的构建配方,在我看来需要Pywin32有点太多了(除非setuptools可以某种方式只在Windows上下载它?).
目前在Windows上,煎蛋的功能是调用文件夹上的junction.exe,然后grep响应"替换名称:"但我找不到任何简单的mklink.
我能想到的唯一方法是在目录中调用"dir",然后逐行查看"<SYMLINK>"和同一行的文件夹/文件名.当然有更好的东西?
想象一个带有黑色阴影的红色圆圈,在完全透明的背景上消失.当我用PIL打开并重新保存图像时,背景保持完全透明,但是阴影变为全黑.
出现问题甚至没有改变图像:
image = Image.open('input.png')
image = image.convert('RGBA')
image.save('output.png')
Run Code Online (Sandbox Code Playgroud)
我希望保持图像与原始图像完全一致,以便我可以裁剪或调整图像大小.
编辑:这是一个展示效果的PNG.它使用PNGNQ转换为8位.

使用上面的Python代码时,它如下所示:
