小编Cla*_*diu的帖子

Javascript:在body的onload事件中指定的函数调用了什么参数?

问题类似,我的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)

任何人都知道那是什么,或者它的类名是什么?

javascript browser firefox events dom

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

如果存在,或者如果不存在,则此SQL查询如何更新行?

我正在使用一些代码.有几个查询的效果是,如果行中存在一些数据,则该行将使用其余数据进行更新,如果该行不存在,则会创建一个新行.它们看起来像这样:

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.

sql postgresql insert-update

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

python:处理变量锁定的优雅方式?

我的代码看起来像这样:

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需要一段时间(就像它写入磁盘一样).是否有尽可能少的锁定之间的中间地带,但有更漂亮的代码?

python multithreading locking thread-safety

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

twisted + gtk:我应该在线程中还是在反应堆线程中运行GUI?

根据我对扭曲的理解,反应堆线程中运行的任何东西都不应该阻塞.应该将所有阻塞活动委托给其他线程,以便在完成后将回调激活回反应器线程.

那么这也适用于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)

编辑:哦好,后两个真的搞砸了.所以我猜答案是第一个.那我的问题是:为什么?这似乎会阻止反应堆线程.

python gtk multithreading pygtk twisted

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

win32:使用 SetCursorPos 与 mouse_event 移动鼠标

使用以下两种技术在窗口中移动鼠标有什么区别吗?

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 处理移动的方式是否有什么不同?

python winapi automation input

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

postgresql:如何从group by子句中获取主键?

这是一个选择一组所需行的查询:

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)

sql postgresql group-by

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

django:select_related()在已经存在的对象上?

如果我使用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)

python sql database django performance

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

javascript交互式调试(相当于python的pdb.set_trace())

我正在使用一些javascript代码,我希望能够在函数调用的上下文中运行一个交互式控制台 - 也就是说,基本上就是python的import pdb; pdb.set_trace()完成.有没有办法做到这一点?如果不是,最好的近似是什么?

我目前正在使用Chrome的控制台搞乱事情,我基本上喜欢被放到函数调用的中间,并使用Chrome的控制台来查看局部变量等.

javascript debugging interactive

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

相当于Python的列表排序与键/ Schwartzian变换

在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每个元素调用一次函数,而不是每次比较调用两次.

c++ python sorting equivalent

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

为什么使用范围解析运算符更改全局命名空间中哪个重载模板被调用?

请考虑以下代码:

#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)

c++ templates template-specialization overload-resolution

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