小编Kyl*_*ane的帖子

在2012年检测浏览器用户的区域设置的最佳方法是什么?

我想检测用户的区域设置(不是它们的位置).问题是没有一种方法看起来可靠.

接受语言标题

优点

  1. 您的意思是获取一个值列表,如果浏览器已被更改为默认值,则可以显示真正的区域设置.
  2. 默认情况下IE似乎准确无误?
  3. 默认情况下在IE中准确表示默认情况下在Windows上的FF是否准确?(即从mozilla.org下载正确的版本)
  4. 与Windows上的Opera#3相同?

缺点

  1. 服务器端开销和干扰缓存(或额外的XHR).
  2. 除非您安装本地词典并将其拖到顶部,否则在所有英语系统的Chrome中默认为"en-us".
  3. Safari不发送?
  4. Safari和Chrome默认情况下不正确意味着http://mozilla.orghttp://opera.com会向用户发送错误的下载内容,并且还会安装自己的"en-us"版本.

结论

  • 在OSX上完全不可靠,因为默认情况下每个浏览器都会出错.但是在Windows上的IE和FF应该是准确的.

window.navigator.language /用户语言

优点

  1. 最好的部分是它是一个很好的轻量级客户端解决方案.
  2. 默认情况下IE似乎准确无误?
  3. 默认情况下,Windows上的FF似乎准确无误?

缺点

  1. 在所有系统上,默认情况下始终在Safari中"启用".
  2. 除非您安装本地词典并将其拖到顶部,否则在所有英语系统的Chrome中默认为"en-us".
  3. 始终只是Opera中的"en".

结论

  • 比Accept-Language更不可靠.

IP地理位置

优点

  1. 独立于浏览器和操作系统语言设置工作.

缺点

  1. 独立于浏览器和操作系统语言设置工作.
  2. 通常关于性能,定价,保持最新等等.

结论

  • 这是否作品真的取决于为什么你要检测用户的语言环境.此方法为您提供用户的位置,该位置与i18n意义上的区域设置不同.

HTML5地理位置

优点

  1. 通常与没有服务器开销的IP地理定位一样准确.

缺点

  1. 要求用户允许您访问其位置.
  2. 浏览器支持(实际上支持看起来很不错).

结论

  • 必须要求许可通常是一个交易破坏者.与IP地理定位相同的结论.

摘要

现在看来检测用户的区域设置比以往更难,而检测到它们的物理位置变得更容易.最大的罪犯是Safari,至少应该在OSX上默认反映操作系统设置,但Chrome也没有设置任何示例.即使人们将本地字典安装到Chrome,我也很怀疑他们是否也会将其拖到列表的顶部.

我不能责怪Mozilla和Opera被其他浏览器误导到他们的下载页面拖累.但是,如果他们将下载页面切换为使用地理位置而不是大概查看Accept-Language,则可以缓解问题.

但实际上,由于IE不再占主导地位,还有哪些选项可以检测用户的区域设置?还剩下什么吗?

locale localization internationalization

23
推荐指数
1
解决办法
7779
查看次数

为什么Chrome和IE从不发送If-None-Match而其他浏览器呢?

我目前正在发送以下标题:

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.

internet-explorer caching google-chrome

7
推荐指数
1
解决办法
1222
查看次数

如何在Django测试中提交图像上传?

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问题,但表单在实际网站上运行正常.

读取文件并发送它而不仅仅是一个句柄也不起作用,并且与传递空字符串的行为相同.

testing django

6
推荐指数
1
解决办法
1306
查看次数

为什么没有使用mod_wsgi加载MSVC构建的Python DLL?

我最近从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)

python mod-wsgi visual-c++

6
推荐指数
1
解决办法
2870
查看次数

在没有Pywin32的Python中检测Vista/7上的符号链接(mklink)

目前,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>"和同一行的文件夹/文件名.当然有更好的东西?

python windows pywin32 windows-vista

4
推荐指数
2
解决办法
1641
查看次数

Python PIL - 不透明度> 0的PNG的所有区域的不透明度都设置为1

想象一个带有黑色阴影的红色圆圈,在完全透明的背景上消失.当我用PIL打开并重新保存图像时,背景保持完全透明,但是阴影变为全黑.

出现问题甚至没有改变图像:

image = Image.open('input.png')
image = image.convert('RGBA')
image.save('output.png')
Run Code Online (Sandbox Code Playgroud)

我希望保持图像与原始图像完全一致,以便我可以裁剪或调整图像大小.

编辑:这是一个展示效果的PNG.它使用PNGNQ转换为8位.

替代文字

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

替代文字

python png python-imaging-library

4
推荐指数
1
解决办法
1872
查看次数