很长一段时间以来,我一直对谷歌在下面的案例中的行为不满意,并且在意外地注意到80多个其他人都有同样的感觉(并且有20多人赞成谷歌错误报告的想法)我觉得它很有用利用SO在HTTP协议和网络文化方面的智慧.
每次我去不同的国家/地区并google.com从我的笔记本电脑访问或安装新的浏览器时,都会出现此问题.在包括越南在内的许多国家/地区,谷歌会自动重定向到本地化版本(例如google.com.vn),这是我实际上无法阅读的版本,因此我会在拼命尝试查找Google.com的英文链接中进行扫描.
它第一次发生时我很困惑,花了一些时间找出我的请求标题可能出错的地方; 正如我所料,我Accept-Language总是en-US或类似的东西en-US,ru;q=0.5.使用不同IP的进一步测试证实,即使您已登录,它们也会进行IP地理定位.后来我了解到有语言查询?hl=...,但仍然存在.
所以,我的问题是:你认为这是合理的和预期的行为吗,网络文化明智吗?其他网站也这样做吗?如果您要设计一个多语言网站,您会对来自.vnIP但使用en-US语言的人做些什么?
我想有不同的IP地理定位方法:
反对:我认为这是不礼貌的:我明确告诉你我想要什么,给我一些其他的东西有什么好处?
亲:可能是一个人刚安装了默认语言包的浏览器,不知道Accept-*标题,仍然希望看到网站的本地化版本.
contra:然而,非技术人员可以通过安装语言包轻松更改接受语言.事实上,如果你去下载Firefox,你很可能会用你想要的语言下载一个,使用符合你意愿的接受语言标题.
请注意,我从1999年开始阅读HTTP 1.1规范,但它们似乎省略了Accept-Language应该考虑多少应该考虑的问题.
我相信这个问题属于SO作为网络应用程序设计问题.而且我还在考虑提交正式的错误报告(如果我说的话,这种行为远非网络标准).
我想到了关于计算机架构的以下问题.假设我用Python做
from bisect import bisect
index = bisect(x, a) # O(log n) (also, shouldn't it be a standard list function?)
x.insert(index, a) # O(1) + memcpy()
Run Code Online (Sandbox Code Playgroud)
这需要log n,再加上,如果我理解正确,内存复制操作x[index:].现在我最近读到,瓶颈通常在处理器和内存之间的通信中,因此内存复制可以通过RAM非常快速地完成.这是怎么回事?
我有python代码,只需要做一些简单的照片:剪裁,调整大小和覆盖水印.我使用了PIL,重新采样/调整大小的结果是可怕的.我使用了imagemagick,界面和命令的设计是将一只猫打包放在一个盒子里,然后反复将它扔到键盘上的一组楼梯上.
我正在寻找一些不是PIL或Imagemagick的东西,我可以使用它来进行简单,高质量的图像转换.就此而言,如果命令行界面良好,它甚至不必具有python绑定.
哦,它需要与平台无关,我们的生产服务器是linux,但我们的一些开发人员在windows上开发.它也不需要安装一堆愚蠢的gui代码来用作库.
由于我在这里问的另一个问题,我想为我的对象使用HashSet
我将创建包含字符串的对象和对其所有者的引用.
public class Synonym
{
private string name;
private Stock owner;
public Stock(string NameSynonym, Stock stock)
{
name=NameSynonym;
owner=stock
}
// [+ 'get' for 'name' and 'owner']
}
Run Code Online (Sandbox Code Playgroud)
我知道我需要一个比较器,但以前从未使用它.我应该创建一个单独的类吗?喜欢:
public class SynonymComparer : IComparer<Synonym>
{
public int Compare(Synonym One, Synonym Two)
{ // Should I test if 'One == null' or 'Two == null' ????
return String.Compare(One.Name, Two.Name, true); // Caseinsesitive
}
Run Code Online (Sandbox Code Playgroud)
}
我更喜欢有一个函数(或嵌套类[可能是单例?],如果需要)作为类同义词的PART而不是另一个(独立)类.这可能吗?
关于用法:因为我之前从未使用过这种东西,我想我必须在类同义词中写一个Find(字符串NameSynonym)函数,但是我应该怎么做呢?
public class SynonymManager
{
private HashSet<SynonymComparer<Synonym>> ListOfSynonyms;
public SynonymManager()
{
ListOfSymnonyms = new HashSet<SynonymComparer<Synonym>>(); …Run Code Online (Sandbox Code Playgroud) 我需要像ABAP一样拆分ABAP
20091101 --> "01", "november", "2009"
Run Code Online (Sandbox Code Playgroud)
"01"和"2009"是微不足道的,但我如何获得月份名称(应该本地化)?
有没有这样做的功能?
如果没有这样的功能,也许是一个带有月份名称的表?
我从未与SAP合作过.我对业务有一个合理的理解,但没有会计背景.如何学习ABAP的例子,同时启发我的"SAP方式"?
它不一定是一个深刻的知识,只是为Python和C#世界的某些人开始,但需要了解SAP世界的运作方式.
(这不是"学习SAP-ABAP"的重复)
在我学习了如何在Python 3.0 web脚本中阅读 unicode文件之后,现在是时候让我学习使用print()unicode了.
我搜索了编写unicode,例如这个问题解释了你不能将unicode字符写入非unicode控制台.但是,就我而言,输出是给Apache的,我相信它能够处理unicode文本.但是,出于某种原因,stdout我的网络脚本是在ascii.
显然,如果我打开一个文件写自己,我会做类似的事情
open(filename, 'w', encoding='utf8')
Run Code Online (Sandbox Code Playgroud)
但由于我得到了一个开放的流,我使用了
sys.stdout.buffer.write(mytext.encode('utf-8'))
Run Code Online (Sandbox Code Playgroud)
一切似乎都有效.这是否违反某些良好行为规则或有任何意外后果?
我的网页由一个动态导入大量文件的脚本提供服务
try:
with open (filename, 'r') as f:
exec(f.read())
except IOError: pass
Run Code Online (Sandbox Code Playgroud)
(实际上,你能建议一个更好的导入文件的方法吗?我确定有一个.)
有时文件包含不同语言的字符串,例如
# contents of language.ru
title = "????????"
Run Code Online (Sandbox Code Playgroud)
这些都保存为UTF-8文件.Python在命令行中运行脚本或从我的MacBook提供页面没有问题:
OK: [server command line] python3.0 page.py /index.ru
OK: http://whitebox.local/index.ru
但是当我尝试从我们刚搬到的服务器上提供页面时,它会抛出一个错误:
157 try:
158 with open (filename, 'r') as f:
159 exec(f.read())
160 except IOError: pass
161
/usr/local/lib/python3.0/io.py in read(self=, n=-1)
...
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe1 in position 627: ordinal not in range(128)
所有文件都是从我的笔记本电脑中复制出来的,而Apache则完美地为它们服务 是什么原因?
更新:我发现默认编码open()是依赖于平台的,所以它utf8在我的笔记本电脑和ascii服务器上.我想知道是否有一个per-program函数在Python 3中设置它(sys.setdefaultencoding在 …
这可能是一个模糊的问题,但现实生活就像这样.
我们公司正在推出SAP系统.我知道他们现在做Web服务,所以我们可以同时推出.NET的东西,我们知道我们可以用C#做什么.
SAP-.NET集成过程中有哪些陷阱?我理解SAP的逻辑与"标准"编程完全不同,但我希望将"业务"部分与"演示"部分分开,用ASP.NET编写.
假设我@IBInspectable在基@IBDesignable类中创建了一个变量。
现在,该属性无法使该属性在派生类中可检查。显然,这是设计使然-您希望能够创建一个派生类,该派生类根据其自身的逻辑设置基本属性,并禁止用户触摸它们。
但是,假设我想使派生类中的相同属性可检查。问题是,@IBInspectable仅与变量定义一起使用,因此似乎已经要求我重新定义变量,即使已经提供了定义(这也是我想念Objective-C的地方:您可以更改类接口而无需触摸提供的实现)知道你在做什么)。
这具有以下缺点:您不能覆盖基本存储的变量,并且需要提供显式的getter和setter。因此,我想到的最干净的代码是:
// derived class
@IBInspectable override var borderWidth: CGFloat {
get {
return super.borderWidth
}
set {
super.borderWidth = newValue
}
}
// base class
@IBInspectable var borderWidth: CGFloat {
set {
layer.borderWidth = newValue
// this can be a very complicated setter, of course
}
get {
return layer.borderWidth
// this can be a very complicated getter, of course
}
}
Run Code Online (Sandbox Code Playgroud)
问题:是否有简化的语法?
(如果没有,并且如果其他人喜欢这个主意,我可能会向苹果的魔术师发出警告。)
abap ×3
sap ×3
c# ×2
python ×2
python-3.x ×2
unicode ×2
.net ×1
architecture ×1
cgi ×1
command-line ×1
dictionary ×1
hashset ×1
http ×1
imaging ×1
libraries ×1
list ×1
localization ×1
memcpy ×1
memory ×1
swift ×1
templates ×1
xcode ×1