与此问题类似,我的HTML看起来像这样:
<body id="body" onload="loader()">
</body>
Run Code Online (Sandbox Code Playgroud)
正如本文所述,我总是假设onload没有任何参数.但是,我命名了这个参数,并做了一些深入的检查,发现我有一个看起来像这样的对象:
{originalTarget : DOM,
preventCapture : function,
target : DOM,
cancelable : Bool,
currentTarget : DOM,
timeStamp : Int,
bubbles : Bool,
type : String,
eventPhase : Int,
preventDefault : function,
initEvent : function,
stopPropagation : function,
CAPTURING_PHASE : Int,
AT_TARGET : Int,
BUBBLING_PHASE : Int,
explicitOriginalTarget : DOM,
preventBubble : function,
isTrusted : Bool,
MOUSEDOWN : Int,
MOUSEUP : Int,
MOUSEOVER : Int,
//... (more constants)
}
Run Code Online (Sandbox Code Playgroud)
任何人都知道那是什么,或者它的类名是什么?
我正在使用一些代码.有几个查询的效果是,如果行中存在一些数据,则该行将使用其余数据进行更新,如果该行不存在,则会创建一个新行.它们看起来像这样:
INSERT INTO table_name (col1, col2, col3) SELECT %s AS COL1, %s AS COL2, %s AS COL3 FROM ( SELECT %s AS COL1, %s AS COL2, %s AS COL3 ) A LEFT JOIN table_name B ON B.COL1 = %s AND B.COL2 = %s --note: doesn't mention all columns here WHERE B.id IS NULL LIMIT 1
我可以模仿这种模式,它似乎有效,但我对幕后的实际情况感到困惑.任何人都可以阐明这实际上是如何运作的吗?我正在使用PostgreSQL.
我的代码看起来像这样:
def startSearching(self):
self.searchingLock.acquire()
searching = self.searching
if self.searching:
self.searchingLock.release()
self.logger.error("Already searching!")
return False
self.searching = True
self.searchingLock.release()
#some more init code, then start the thread which
#constantly checks self.searching to determine when to stop
Run Code Online (Sandbox Code Playgroud)
但它有点难看.大量的获取和发布.这看起来更漂亮:
def startSearching(self):
with self.searchingLock:
if self.searching:
self.logger.error("Already searching!")
return False
self.searching = True
#some more init code, then start the thread which
#constantly checks self.searching to determine when to stop
Run Code Online (Sandbox Code Playgroud)
但这会使锁定的时间长于严格必要的时间,特别是如果self.logger.error需要一段时间(就像它写入磁盘一样).是否有尽可能少的锁定之间的中间地带,但有更漂亮的代码?
根据我对扭曲的理解,反应堆线程中运行的任何东西都不应该阻塞.应该将所有阻塞活动委托给其他线程,以便在完成后将回调激活回反应器线程.
那么这也适用于gtk的东西吗?例如,如果连接...失败,我想显示"连接失败"消息.我这样做:
def connectionFailed(self, reason):
dlg = gtk.MessageDialog(type=gtk.MESSAGE_ERROR,
buttons=gtk.BUTTONS_CLOSE,
message_format="Could not connect to server:\n%s" % (
reason.getErrorMessage()))
dlg.run()
Run Code Online (Sandbox Code Playgroud)
要么:
def connectionFailed(self, reason):
dlg = gtk.MessageDialog(type=gtk.MESSAGE_ERROR,
buttons=gtk.BUTTONS_CLOSE,
message_format="Could not connect to server:\n%s" % (
reason.getErrorMessage()))
reactor.callInThread(dlg.run)
Run Code Online (Sandbox Code Playgroud)
要么:
def connectionFailed(self, reason):
def bloogedy():
dlg = gtk.MessageDialog(type=gtk.MESSAGE_ERROR,
buttons=gtk.BUTTONS_CLOSE,
message_format="Could not connect to server:\n%s" % (
reason.getErrorMessage()))
dlg.run()
reactor.callInThread(bloogedy)
Run Code Online (Sandbox Code Playgroud)
?
编辑:哦好,后两个真的搞砸了.所以我猜答案是第一个.那我的问题是:为什么?这似乎会阻止反应堆线程.
使用以下两种技术在窗口中移动鼠标有什么区别吗?
win32api.SetCursorPos((x,y))
Run Code Online (Sandbox Code Playgroud)
对比:
nx = x*65535/win32api.GetSystemMetrics(0)
ny = y*65535/win32api.GetSystemMetrics(1)
win32api.mouse_event(win32con.MOUSEEVENTF_ABSOLUTE|win32con.MOUSEEVENTF_MOVE,nx,ny)
Run Code Online (Sandbox Code Playgroud)
Windows 处理移动的方式是否有什么不同?
这是一个选择一组所需行的查询:
select max(a), b, c, d, e
from T
group by b, c, d, e;
Run Code Online (Sandbox Code Playgroud)
该表在列中有一个主键id.
我想通过从每个行中获取主键来在另一个查询中标识这些行.我该怎么办?这不起作用:
select id, max(a), b, c, d, e
from T
group by b, c, d, e;
ERROR: column "T.id" must appear in the GROUP BY clause or be used in an aggregate function
Run Code Online (Sandbox Code Playgroud)
我在其他一些postgresql问题中尝试了这个,但没有运气:
select distinct on (id) id, max(a), b, c, d, e
from T
group by b, c, d, e;
ERROR: column "T.id" must appear in the GROUP BY clause …Run Code Online (Sandbox Code Playgroud) 如果我使用django检索对象,我可以.select_related()用来指示django获取所有外键对象,例如:
obj = ModelClass.objects.select_related().get(id=4) #1 db hit
foo = obj.long.chain.of.stuff #no db hit
Run Code Online (Sandbox Code Playgroud)
如果我已经拥有obj,没有它.select_related(),那就是:
def doit(obj):
obj.long.chain.of.stuff #4 db hits
Run Code Online (Sandbox Code Playgroud)
有没有办法让django填补所有的外键关系?就像是:
def doit(obj):
obj.magic() #1 db hit
obj.long.chain.of.stuff #no db hits
Run Code Online (Sandbox Code Playgroud) 我正在使用一些javascript代码,我希望能够在函数调用的上下文中运行一个交互式控制台 - 也就是说,基本上就是python的import pdb; pdb.set_trace()完成.有没有办法做到这一点?如果不是,最好的近似是什么?
我目前正在使用Chrome的控制台搞乱事情,我基本上喜欢被放到函数调用的中间,并使用Chrome的控制台来查看局部变量等.
在Python中,给定一个列表,我可以通过一个关键函数对它进行排序,例如:
>>> def get_value(k):
... print "heavy computation for", k
... return {"a": 100, "b": 30, "c": 50, "d": 0}[k]
...
>>> items = ['a', 'b', 'c', 'd']
>>> items.sort(key=get_value)
heavy computation for a
heavy computation for b
heavy computation for c
heavy computation for d
>>> items
['d', 'b', 'c', 'a']
Run Code Online (Sandbox Code Playgroud)
如您所见,列表不是按字母顺序排序,而是按返回值排序get_value().
C++中有等价的吗?std::sort()只允许我提供自定义比较器(相当于Python items.sort(cmp=...)),而不是关键功能.如果没有,是否有任何经过充分测试,高效,公开可用的等效实现,我可以放入我的代码?
请注意,Python版本仅为key每个元素调用一次函数,而不是每次比较调用两次.
请考虑以下代码:
#include <iostream>
template <class W, class T>
void foo(W& a, T& t)
{
std::cout << "generic" << std::endl;
}
template <template <bool> class W, class T>
void foo(W<true>& a, const T& t)
{
foo(a, const_cast<T&>(t));
}
template <class W>
void foo(W& a, int& t)
{
std::cout << "int" << std::endl;
}
template <bool> struct what;
template<> struct what<true> { };
int main() {
const int ci = 10;
what<true> wt;
foo(wt, ci);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出是(ideone链接):
int …Run Code Online (Sandbox Code Playgroud) python ×5
sql ×3
c++ ×2
javascript ×2
postgresql ×2
automation ×1
browser ×1
database ×1
debugging ×1
django ×1
dom ×1
equivalent ×1
events ×1
firefox ×1
group-by ×1
gtk ×1
input ×1
interactive ×1
locking ×1
performance ×1
pygtk ×1
sorting ×1
templates ×1
twisted ×1
winapi ×1