在Javascript中是否存在原子测试和设置,信号量或锁定这样的事情?
我有javascript通过自定义协议调用异步后台进程(后台进程实际上在一个单独的进程中运行,与浏览器无关).我相信我遇到了竞争状态; 后台进程在我的测试和我的设置之间返回,在javascript端搞砸了.我需要一个测试和设置操作来使它成为一个真正的信号量.
这是尝试检测后台进程并将其排队的javascript代码:
Call = function () {
var isRunning = true,
queue = [];
return {
// myPublicProperty: "something",
call: function (method) {
if (isRunning) {
console.log("Busy, pushing " + method);
queue.push(method);
} else {
isRunning = true;
objccall(method);
}
},
done: function() {
isRunning = false;
if (queue.length > 0) {
Call.call(queue.shift());
}
}
};
}();
Run Code Online (Sandbox Code Playgroud)
呼叫是一个实现排队的单身人士; 任何想要调用外部进程的人都会调用Call.call("something").
有任何想法吗?
我希望自动化一些网络交互,即从安全网站定期下载文件.这主要涉及输入我的用户名/密码并导航到相应的URL.
我在Python中尝试过简单的脚本,然后是更复杂的脚本,只是发现这个特定的网站正在使用一些讨厌的基于javascript和flash的机制进行登录,渲染我的方法毫无用处.
然后我尝试了HTMLUnit,但这似乎也不想工作.我怀疑使用Flash是个问题.
我真的不想再考虑它,所以我倾向于编写一个实际的浏览器脚本来登录并获取我需要的文件.
要求是:
对于无头,无X脚本的浏览器,有什么好的工具包吗?你有没有尝试过这样的事情?如果有的话,你有没有任何智慧的话语?
我意识到这是一个懒惰的问题,但是我想看看Twitter人们有哪些python库有很好的经验.
我使用过Python Twitter工具,并且喜欢它简洁美观的界面,但它似乎并不是流行的 - 它甚至没有列在Twitter Libraries页面上.
但是,有很多其他的列出:
我的要求很简单:
一边扭曲一边(在这种情况下我没有使用扭曲),你是否使用过其他任何一种,如果是的话,你推荐它们吗?
[更新] FWIW,我最终再次使用Python Twitter Tools.新版本很好地支持OAuth,它是一个非常聪明的API,所以我坚持下去.
我需要限制我使用subprocess.call从python进程生成的外部命令行应用程序所花费的时间和cpu的数量,主要是因为有时候生成的进程被卡住并将cpu的引脚设置为99%.
nice和ulimit似乎是合理的方法,但我不确定他们如何与子进程交互.
有没有办法将nice和ulimit应用于subprocess.call生成的进程?是否有更好的python-native替代品?
这是在linux(ubuntu)系统上.
我有一个页面引用了几个外部托管的javascript文件 - 即Google上的jQuery和使用YUI Loader的YUI.
问题是当我通过HTTPS访问页面时,浏览器会抱怨混合不安全的内容,因为外部javascript文件是使用http而不是https访问的.
处理这个问题的好方法是什么,用HTTPS访问外部jQuery和YUI Loader对象?
创建可以为其分配属性的裸对象的最简单方法是什么?
具体的用例是:我在Django对象实例上进行各种操作,但有时实例是None(实例上有).在这种情况下,我想创建一个最简单的假对象,以便我可以为其属性赋值(例如.myobject.foo = 'bar').
基本上我正在寻找相当于这段Javascript的Python:
myobject = {}
myobject.foo = 'bar'
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用模拟对象/库,但我希望有一个非常简单的解决方案(就像上面的Javascript一样简单).有没有办法创建裸体对象实例?就像是:
myobject = object()
myobject.foo = 'bar'
Run Code Online (Sandbox Code Playgroud) 我已经开始使用这样的结构:
class DictObj(object):
def __init__(self):
self.d = {}
def __getattr__(self, m):
return self.d.get(m, None)
def __setattr__(self, m, v):
super.__setattr__(self, m, v)
Run Code Online (Sandbox Code Playgroud)
更新:基于这个线程,我已经将DictObj实现修改为:
class dotdict(dict):
def __getattr__(self, attr):
return self.get(attr, None)
__setattr__= dict.__setitem__
__delattr__= dict.__delitem__
class AutoEnum(object):
def __init__(self):
self.counter = 0
self.d = {}
def __getattr__(self, c):
if c not in self.d:
self.d[c] = self.counter
self.counter += 1
return self.d[c]
Run Code Online (Sandbox Code Playgroud)
其中DictObj是一个可以通过点表示法访问的字典:
d = DictObj()
d.something = 'one'
Run Code Online (Sandbox Code Playgroud)
我发现它比美学更令人愉悦d['something'].请注意,访问未定义的键会返回None而不是引发异常,这也很好.
更新:Smashery提出了一个很好的观点,mhawke扩展了更容易的解决方案.我想知道使用dict是否有任何不良副作用,而不是定义一个新字典; 如果没有,我很喜欢mhawke的解决方案.
AutoEnum是一个自动递增的枚举,使用如下:
CMD = AutoEnum()
cmds = …Run Code Online (Sandbox Code Playgroud) 我一直在寻找一种更好的方法来处理特定于站点的设置(在这种情况下,django settings.py文件).
settings.py结构和字段相当一致,但开发人员的框,集成,QA,测试和生产环境之间的值不同.
控制设置源同时仍然允许在不同框之间进行更改的优雅方法是什么?
我也担心在源代码管理中有敏感数据(例如数据库密码),但我确实想要自动部署.
我们使用过的例子:
settings.py设置公共值,然后根据主机名或用户名加载辅助设置文件.
使用部署脚本将值注入settings.py文件.但这只是将问题转移到管理部署脚本而不是settings.py脚本.
有人有一个特别优雅的方法吗?
我正在阅读二进制文件(在这种情况下为jpg),并且需要在该文件中找到一些值.对于那些感兴趣的人,二进制文件是一个jpg,我试图通过查找这里详述的二进制结构来挑选它的维度.
我需要在二进制数据中找到FFC0,跳过一些字节数,然后读取4个字节(这应该给我图像尺寸).
在二进制数据中搜索值的好方法是什么?有没有相当于'发现',或类似的东西?
python ×6
binary ×1
bloom-filter ×1
cdn ×1
coding-style ×1
concurrency ×1
django ×1
firefox ×1
javascript ×1
jquery ×1
jython ×1
nice ×1
oop ×1
resources ×1
search ×1
semaphore ×1
twitter ×1
ulimit ×1
webkit ×1
yui ×1