小编gra*_*ion的帖子

将文本附加到属性而不是替换它?

我想在某个类的所有元素的title属性中添加一些文本.

jquery

19
推荐指数
2
解决办法
2万
查看次数

基于Memcache的消息队列?

我正在开发一个多人游戏,它需要一个消息队列(即消息输入,消息输出,没有重复或删除消息,假设没有意外的高速缓存驱逐).以下是我所知道的基于memcache的队列:

我从这篇博文中了解了memcache队列的概念:

所有消息都以整数作为键保存.有一个密钥具有下一个密钥,另一个密钥具有队列中最旧的消息的密钥.要访问这些,增量/减量方法用作其原子,因此有两个键充当锁.它们会递增,如果返回值为1,则进程具有锁定,否则它将继续递增.一旦完成该过程,它将值设置回0.简单但有效.需要注意的是整数将溢出,因此有一些逻辑可以在我们接近该限制时将使用的密钥设置为1.由于增量操作是原子的,只有在使用两个或更多个内存缓存(用于冗余)时才需要锁定,以保持这些内存同步.

我的问题是,是否有可以在App Engine上运行的基于memcache的消息队列服务?

memcached message-queue

10
推荐指数
1
解决办法
7895
查看次数

大多数pythonic方式扩展可能不完整的列表

我正在寻找的是最好的方式,'如果这个列表太短,将它延长到9个元素并添加'选择4','选择5'等作为附加元素.另外,用'Choice x'替换任何'None'元素.也可以替换""和0.

一个示例转换将是

['a','b',None,'c']
Run Code Online (Sandbox Code Playgroud)

['a','b','Choice 3','c','Choice 5','Choice 6','Choice 7','Choice 8','Choice 9']
Run Code Online (Sandbox Code Playgroud)

我的初始代码滥用try/except并且有一个我没注意到的一个一个错误; 感谢joeforker和所有指出的人.根据评论,我尝试了两个同样测试良好的简短解决方案:

def extendChoices(cList):
  for i in range(0,9):
    try:
      if cList[i] is None:
        cList[i] = "Choice %d"%(i+1)
    except IndexError:
      cList.append("Choice %d"%(i+1)
Run Code Online (Sandbox Code Playgroud)

def extendChoices(cList):
  # Fill in any blank entries
  for i, v in enumerate(cList):
    cList[i] = v or "Choice %s" % (i+1)

  # Extend the list to 9 choices  
  for j in range(len(cList)+1, 10):
    cList.append("Choice %s" % (j))
Run Code Online (Sandbox Code Playgroud)

我认为#2赢得更多pythonic,所以它是我将使用的那个.它易于理解和使用常见的结构.拆分步骤是合乎逻辑的,可以使人们更容易理解.

python

8
推荐指数
2
解决办法
3284
查看次数

在哪里下载所有聚合物元素作为zip文件?

Polymer 1.0最近发布,我可以在elements.polymer-project.org网站下载单点元素,但是我找不到一个简单的链接来下载一个大的zip文件中的所有东西?

知道他们藏在哪里吗?

polymer polymer-1.0

7
推荐指数
3
解决办法
6641
查看次数

用于列表反序列化的Python'eval'的安全性

在这种情况下是否存在任何可能发生的安全漏洞:

eval(repr(unsanitized_user_input), {"__builtins__": None}, {"True":True, "False":False})
Run Code Online (Sandbox Code Playgroud)

unsanitized_user_inputstr对象在哪里.字符串是用户生成的,可能很讨厌.假设我们的Web框架没有让我们失望,那么它就是来自Python内置的一个真正的诚实的str实例.

如果这很危险,我们可以对输入做任何事情以使其安全吗?

我们当然希望执行字符串中包含的任何东西.

也可以看看:

(我相信)对这个问题不重要的更大背景是我们有成千上万的这些:

repr([unsanitized_user_input_1,
      unsanitized_user_input_2,
      unsanitized_user_input_3,
      unsanitized_user_input_4,
      ...])
Run Code Online (Sandbox Code Playgroud)

在某些情况下嵌套:

repr([[unsanitized_user_input_1,
       unsanitized_user_input_2],
      [unsanitized_user_input_3,
       unsanitized_user_input_4],
       ...])
Run Code Online (Sandbox Code Playgroud)

它们本身转换为字符串repr(),放入持久存储,最后用eval读回内存.

Eval从持久存储中反序列化字符串比pickle和simplejson快得多.解释器是Python 2.5所以json和ast不可用.不允许使用C模块,不允许使用cPickle.

python eval

6
推荐指数
3
解决办法
3100
查看次数

Vim中更快的多文件关键字完成?

在vim中搜索我的python完成必杀技时,我真的很喜欢<Cx> <Ci>:"当前和包含文件中的关键字".这几乎总是让我从另一个完成的模块中得到一个令人讨厌的名字,这很棒.

(Omni-completion在它工作时明显更好,但是它经常报告它找不到任何匹配.好吧,Python不是Java,我明白了)

这个多文件完成的唯一问题是它非常慢:在我的上网本上,每次点击<Cx> <Ci>时,具有合理导入集的文件最多需要4或5秒才能解析.每次点击<Cx> <Ci>时,似乎都会加载每个导入的文件.有没有办法缓存文件或加快这个过程?使用标签完成会更快吗?

vim autocomplete tab-completion code-completion completion

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